aboutsummaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
2021-09-04net: Move network rules to drivers/netSimon Glass
The code under drivers/net is related to ethernet networking drivers, in some fashion or another. Drop these from the top-level Makefile and also move the phy rule into drivers/net/Makefile which is where it belongs. Make the new rule for drivers/net check for the build-stage relevant ETH symbol. Fix up some Kconfig dependencies while we're here to mirror how the Makefile logic now works. Signed-off-by: Simon Glass <sjg@chromium.org> [trini: Introduce ETH, Kconfig dependency changes, am43xx fix] Signed-off-by: Tom Rini <trini@konsulko.com>
2021-09-04power: Refactor Makefile rulesSimon Glass
Move the power/ rules into drivers/power to avoid clutter in the Makefile and drivers/Makefile files. We must select SPL_POWER if SPL_POWER_DOMAIN is used, since the two are currently independent and boards do not necessarily enable SPL_POWER. Add a TPL_POWER as well, as that is used by one board. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2021-09-04power: Add a POWER configSimon Glass
At present we have SPL_POWER but not piain POWER. This works because there is a special build rule in Makefile that always includes the drivers/power directory. It is better to have all driver directories included by drivers/Makefile and there is already a rule in there for this purpose. It just needs a Kconfig for U-Boot proper, so add one. Update the pmic.h header file so that it defines the old pmic struct always, when driver model is not in use. That will avoid build errors for boards which enable POWER but not DM_PMIC. Enable this option always. That seems strange at first sight, but it actually but mimics the current Makefile behaviour. Once we can drop the old PMICs it should be easy enough to rename DM_PMIC to POWWER, or something similar. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04i2c: Convert CONFIG_POWER_I2C et al to KconfigSimon Glass
This converts the following to Kconfig: CONFIG_POWER_I2C CONFIG_POWER_LEGACY They are handled at the same time due to a dependency between them. Update the Makefile rule to use legacy power only in U-Boot proper. Unfortunately a separate rule is needed in SPL to be able to build legacy power. Add SPL related symbols for both, to allow for SPL-only usage. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com> [trini: More SPL related cleanups, reword commit message] Signed-off-by: Tom Rini <trini@konsulko.com>
2021-09-04power: Rename CONFIG_POWER to CONFIG_POWER_LEGACYSimon Glass
This option is used in pre-driver model code and much of it has never been converted to driver model. We want to add a new option to enable power support, so we can use a simple rule in the Makefile. Rename this one, which is really about a particular implementation of power. Also update the pmic.h header file so it either includes the legacy API or the driver model one. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2021-09-04power: Tidy up #undef of CONFIG_DM_PMICSimon Glass
Add a proper Kconfig option for SPL so we can remove the hack in some of the board config files. This involves adding CONFIG_SPL_DM_PMIC to some of the configs as well as updateing the Makefile rule for PMIC_RK8XX to exclude SPL. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com> [trini: Add SPL_PMIC_RK8XX, enable when needed, handle undef of CONFIG_DM_PMIC_PFUZE100 as well] Signed-off-by: Tom Rini <trini@konsulko.com>
2021-09-04gpio: Add a GPIO configSimon Glass
At present we have SPL_GPIO and TPL_GPIO but not piain GPIO. This works because there is a special build rule in Makefile that always includes the drivers/gpio directory. It is better to have all driver directories included by drivers/Makefile and there is already a rule in there for this purpose. It just needs a Kconfig for U-Boot proper, so add one. Enable the option always for now, since this mimics current behaviour. This can be updated once DM_GPIO is used everywhere. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04tegra: gpio: Drop use of CONFIG_xxx variablesSimon Glass
It is not a good idea to use things called CONFIG_xxx in the source code since this prefix is reserved for use by Kconfig. Rename these variables. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04Makefile: Move drivers/dma/ into drivers/MakefileSimon Glass
This rule should not be in the top-level Makefile. Move it, making use of the new LEGACY_DMA Kconfig. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04Convert CONFIG_DMA_LPC32XX to KconfigSimon Glass
This converts the following to Kconfig: CONFIG_DMA_LPC32XX Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04dma: Add a Kconfig for legacy DMASimon Glass
We cannot use the existing DMA config for the MCD driver because it is not migrated to driver model. In order to move it to drivers/Makefile we need some sort of option for it. Add a new DMA_LEGACY option, which also acts as a signal that it should be migrated. Enable this for devkit3250 which uses CONFIG_DMA_LPC32XX which is not converted to Kconfig. For now this is not used in the Makefile. That update happens in a following patch. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04Makefile: Unify the rules for BOOTCOUNT_LIMITSimon Glass
Use a single rule that works for all phases. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04sata: Rename SATA_SUPPORT to SATASimon Glass
Rename this options so that CONFIG_IS_ENABLED can be used with it. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04ppc: Rename MPC8XXX_INIT_DDR_SUPPORT to MPC8XXX_INIT_DDRSimon Glass
Rename these options so that CONFIG_IS_ENABLED can be used with them. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04Rename CACHE_SUPPORT to CACHESimon Glass
Rename this option so that CONFIG_IS_ENABLED can be used with it. Oddly there is already an SPL_CACHE option. Drop it in favour of this one. Drop the special SPL Makefile rule which is now superfluous. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04spi: Rename SPI_SUPPORT to SPISimon Glass
Rename these options so that CONFIG_IS_ENABLED can be used with them. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04serial: Add a SERIAL configSimon Glass
At present we have SPL_SERIAL and TPL_SERIAL but not piain SERIAL. This works because there is a special build rule in Makefile that always includes the drivers/serial directory. It is better to have all driver directories included by drivers/Makefile and there is already a rule in there for this purpose. It just needs a Kconfig for U-Boot proper, so add one. It is always enabled, for now, since that mimics the current behaviour. It should be possible to drop the strange 'SERIAL_PRESENT' option at some point and use SERIAL instead. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04serial: Rename SERIAL_SUPPORT to SERIALSimon Glass
Rename these options so that CONFIG_IS_ENABLED can be used with them. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04rtc: Rename RTC_SUPPORT to RTCSimon Glass
Rename these options so that CONFIG_IS_ENABLED can be used with them. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04pch: Rename PCH_SUPPORT to PCHSimon Glass
Rename these options so that CONFIG_IS_ENABLED can be used with them. Signed-off-by: Simon Glass <sjg@chromium.org>
2021-09-04mmc: Rename MMC_SUPPORT to MMCSimon Glass
Rename these options so that CONFIG_IS_ENABLED can be used with them. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com> [trini: Fixup some incorrect renames] Signed-off-by: Tom Rini <trini@konsulko.com>
2021-09-02pci: iproc: fix compilation errors and warningsBharat Gooty
Signed-off-by: Bharat Gooty <bharat.gooty@broadcom.com>
2021-09-01ata: ahci-pci: Add new option CONFIG_SPL_AHCI_PCIPali Rohár
This new option allows to disable ahci-pci driver in SPL. Disabling it is needed when SPL_PCI is not enabled as ahci-pci depends on PCI. This change fixes following compile error when CONFIG_SPL_SATA_SUPPORT is enabled and SPL_PCI is disabled. LD spl/u-boot-spl arm-linux-gnueabihf-ld.bfd: drivers/ata/ahci.o: in function `ahci_probe_scsi_pci': drivers/ata/ahci.c:1205: undefined reference to `dm_pci_map_bar' arm-linux-gnueabihf-ld.bfd: drivers/ata/ahci.c:1215: undefined reference to `dm_pci_read_config16' arm-linux-gnueabihf-ld.bfd: drivers/ata/ahci.c:1216: undefined reference to `dm_pci_read_config16' arm-linux-gnueabihf-ld.bfd: drivers/ata/ahci.c:1220: undefined reference to `dm_pci_map_bar' make[1]: *** [scripts/Makefile.spl:512: spl/u-boot-spl] Error 1 make: *** [Makefile:1977: spl/u-boot-spl] Error 2 LD spl/u-boot-spl arm-linux-gnueabihf-ld.bfd: drivers/ata/ahci-pci.o: in function `ahci_pci_probe': drivers/ata/ahci-pci.c:21: undefined reference to `ahci_probe_scsi_pci' make[1]: *** [scripts/Makefile.spl:512: spl/u-boot-spl] Error 1 make: *** [Makefile:1977: spl/u-boot-spl] Error 2 Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de>
2021-09-01ata: ahci-pci: Fix dependency on DM_PCIPali Rohár
File drivers/ata/ahci-pci.c calls function ahci_probe_scsi_pci() which is compiled only when DM_PCI is enabled. So add missing dependency into Kconfig. Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de>
2021-09-01rtc: ds1307: Fix incorrect clock reset for DS13xxCallum Sinclair
The ds1307 driver also supports the DS1339 and DS1340. However, in ds1307_rtc_reset the register writes assume that the chip is a DS1307. This is evident in the writing of bits SQWE, RS1, RS0 to the control register. While this applies correctly to the DS1307, on a DS1340 the control register doesn't contain those bits (instead, the register is used for clock calibration). By writing these bits the clock calibration will be changed and the chip can become non-functional after a reset call. Signed-off-by: Callum Sinclair <callum.sinclair@alliedtelesis.co.nz>
2021-09-01crypto: hash: Add software hash DM driverChia-Wei Wang
Add purely software-implmented drivers to support multiple hash operations including CRC, MD5, and SHA family. This driver is based on the new hash uclass. Signed-off-by: Chia-Wei Wang <chiawei_wang@aspeedtech.com>
2021-09-01dm: hash: Add new UCLASS_HASH supportChia-Wei Wang
Add UCLASS_HASH for hash driver development. Thus the hash drivers (SW or HW-accelerated) can be developed in the DM-based fashion. Signed-off-by: Chia-Wei Wang <chiawei_wang@aspeedtech.com>
2021-08-31Merge branch 'next' of ↵Tom Rini
https://gitlab.denx.de/u-boot/custodians/u-boot-marvell into next - Handling all DM watchdogs in watchdog_reset() (Rasmus)
2021-08-31Kconfig: Remove all default n/no optionsMichal Simek
default n/no doesn't need to be specified. It is default option anyway. Signed-off-by: Michal Simek <michal.simek@xilinx.com> [trini: Rework FSP_USE_UPD portion] Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-31nxp: Migrate a number of DDR related symbols to KconfigTom Rini
- Guard most of the options in drivers/ddr/fsl/Kconfig with SYS_FSL_DDR || SYS_FSL_MMDC. - Migrate FSL_DMA, DDR_ECC, DDR_ECC_CMD, and ECC_INIT_VIA_DDRCONTROLLER to Kconfig. - Clean up the logic for including the DDR_ECC_CMD code. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-31nxp: Migrate CONFIG_DDR_CLK_FREQ to KconfigTom Rini
As this symbol can either be a fixed value or the function get_board_ddr_clk, migration is tricky. Introduce a choice of DYNAMIC or STATIC_DDR_CLK_FREQ. If DYNAMIC, we continue to use the board defined get_board_ddr_clk function. If STATIC, set CONFIG_DDR_CLK_FREQ to that value and now include/clock_legacy.h contains the function prototype or defines get_board_ddr_clk() to that static value. Update callers to test for DYNAMIC or STATIC. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-31ddr: Migrate DDR_SPD to KconfigTom Rini
Move the symbol that controls building some JEDEC SPD support functions to Kconfig. This is required on the TI keystone 2 platforms and very frequently (but not always) used on large number of Freescale/NXP platforms, so use imply there. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-31mvebe: Migrate CONFIG_DDR_LOG_LEVEL to KconfigTom Rini
Move this specific option to Kconfig. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-31mvebu: ddr: Rename CONFIG_DDR_FIXED_SIZE to CONFIG_SYS_SDRAM_SIZETom Rini
We have a number of CONFIG symbols to express the fixed size of system memory. For now, rename CONFIG_DDR_FIXED_SIZE to CONFIG_SYS_SDRAM_SIZE and adjust usage to match that CONFIG_SYS_SDRAM_SIZE expects the entire size rather than MiB. Cc: Marek Behún <marek.behun@nic.cz> Cc: Stefan Roese <sr@denx.de> Signed-off-by: Tom Rini <trini@konsulko.com> Acked-by: Marek Behún <marek.behun@nic.cz>
2021-08-31watchdog: add gpio watchdog driverRasmus Villemoes
A rather common kind of external watchdog circuit is one that is kept alive by toggling a gpio. Add a driver for handling such a watchdog. The corresponding linux driver apparently has support for some watchdog circuits which can be disabled by tri-stating the gpio, but I have never actually encountered such a chip in the wild; the whole point of adding an external watchdog is usually that it is not in any way under software control. For forward-compatibility, and to make DT describe the hardware, the current driver only supports devices that have the always-running property. I went a little back and forth on whether I should fail ->probe or only ->start, and ended up deciding ->start was the right place. The compatible string is probably a little odd as it has nothing to do with linux per se - however, I chose that to make .dts snippets reusable between device trees used with U-Boot and linux, and this is the (only) compatible string that linux' corresponding driver and DT binding accepts. I have asked whether one should/could add "wdt-gpio" to that binding, but the answer was no: https://lore.kernel.org/lkml/CAL_JsqKEGaFpiFV_oAtE+S_bnHkg4qry+bhx2EDs=NSbVf_giA@mail.gmail.com/ If someone feels strongly about this, I can certainly remove the "linux," part from the string - it probably wouldn't the only place where one can't reuse a DT snippet as-is between linux and U-Boot. Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
2021-08-31watchdog: wdt-uclass.c: handle all DM watchdogs in watchdog_reset()Rasmus Villemoes
A board can have and make use of more than one watchdog device, say one built into the SOC and an external gpio-petted one. Having wdt-uclass only handle the first is both a little arbitrary and unexpected. So change initr_watchdog() so we visit (probe) all DM watchdog devices, and call the init_watchdog_dev helper for each. Similarly let watchdog_reset() loop over the whole uclass - each having their own ratelimiting metadata, and a separate "is this device running" flag. This gets rid of the watchdog_dev member of struct global_data. We do, however, still need the GD_FLG_WDT_READY set in initr_watchdog(). This is because watchdog_reset() can get called before DM is ready, and I don't think we can call uclass_get() that early. The current code just returns 0 if "getting" the first device fails - that can of course happen because there are no devices, but it could also happen if its ->probe call failed. In keeping with that, continue with the handling of the remaining devices even if one fails to probe. This is also why we cannot use uclass_probe_all(). If desired, it's possible to later add a per-device "u-boot,autostart" boolean property, so that one can do CONFIG_WATCHDOG_AUTOSTART per-device. Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
2021-08-31watchdog: wdt-uclass.c: add wdt_stop_all() helperRasmus Villemoes
Since the watchdog_dev member of struct global_data is going away in favor of the wdt-uclass handling all watchdog devices, prepare for that by adding a helper to call wdt_stop() on all known devices. If an error is encountered, still do wdt_stop() on remaining devices, but remember and return the first error seen. Initially, this will only be used in one single place (board/alliedtelesis/x530/x530.c). Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
2021-08-31watchdog: wdt-uclass.c: keep track of each device's running stateRasmus Villemoes
As a step towards handling all DM watchdogs in watchdog_reset(), use a per-device flag to keep track of whether the device has been started instead of a bit in gd->flags. We will still need that bit to know whether we are past initr_watchdog() and hence have populated gd->watchdog_dev - incidentally, that is how it was used prior to commit 9c44ff1c5f3c. Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
2021-08-31watchdog: wdt-uclass.c: refactor initr_watchdog()Rasmus Villemoes
In preparation for handling all DM watchdogs in watchdog_reset(), pull out the code which handles starting (or not) the gd->watchdog_dev device. Include the device name in various printfs. Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
2021-08-31watchdog: wdt-uclass.c: neaten UCLASS_DRIVER definitionRasmus Villemoes
The addition of .pre_probe and .per_device_auto made this look bad. Fix it. Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
2021-08-31watchdog: wdt-uclass.c: introduce struct wdt_privRasmus Villemoes
As preparation for having the wdt-uclass provided watchdog_reset() function handle all DM watchdog devices, and not just the first such, introduce a uclass-owned struct to hold the reset_period and next_reset, so these become per-device instead of being static variables. No functional change intended. Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
2021-08-31watchdog: wdt-uclass.c: use wdt_start() in wdt_expire_now()Rasmus Villemoes
wdt_start() does the "no ->start? return -ENOSYS" check, don't open-code that in wdt_expire_now(). Also, wdt_start() maintains some global (and later some per-device) state, which would get out of sync with this direct method call - not that it matters much here since the board is supposed to reset very soon. Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
2021-08-30global: Remove unused or unnecessary CONFIG symbols related to DDRTom Rini
These symbols are now either unused or were only used within the config file to determine other logic, which could be done in a way that doesn't further pollute the CONFIG namespace. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30spi: altera_spi: Do not abuse CONFIG namespaceTom Rini
The value CONFIG_ALTERA_SPI_IDLE_VAL is never re-defined by a board. Rename this to ALTERA_SPI_IDLE_VAL. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2021-08-30video: Remove ati_radeon_fbTom Rini
This driver is currently unused. Remove. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2021-08-30global: Remove dead code that starts with CONFIG_[0-9A]Tom Rini
This removes a number of spots of dead code based on symbols that start with CONFIG_[0-9] or CONFIG_A. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30i8042: Do not abuse CONFIG namespaceTom Rini
This driver uses the CONFIG namespace to set the chips internal CONFIG namespace related bits. However, CONFIG is reserved for the top-level Kconfig based configuration system. Use CFG as the namespace here instead to avoid pollution. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2021-08-30nand: vf610_nfc: Do not abuse CONFIG namespaceTom Rini
This driver uses the CONFIG namespace to set the chips internal CONFIG namespace related bits. However, CONFIG is reserved for the top-level Kconfig based configuration system. Use CFG as the namespace here instead to avoid pollution. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2021-08-30i2c: fsl_i2c: Migrate to KconfigTom Rini
- As there are no boards that use different values for speed / slave on different buses, use a single option. - Switch to using the common SYS_I2C_SPEED / SYS_I2C_SLAVE options. - Introduce _HAS_ options for additional buses as only the first one is common to all users. - Convert all remaining symbols to Kconfig. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30rcar: i2c: Migrate SYS_I2C_SH to KconfigTom Rini
- Migrate SYS_I2C_SH and related defines to Kconfig - Remove currently unused SYS_I2C_SH related defines - Cleanup related README section. Cc: Marek Vasut <marek.vasut+renesas@gmail.com> Signed-off-by: Tom Rini <trini@konsulko.com>