summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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-31board: x530: switch to wdt_stop_all()Rasmus Villemoes
Since the gd->watchdog_dev member is going away, switch to using the new wdt_stop_all() helper. While here, clean up the preprocessor conditional: The ->watchdog_dev member is actually guarded by CONFIG_WDT [disabling that in x530_defconfig while keeping CONFIG_WATCHDOG breaks the build], and in the new world order so is the existence of the wdt_stop_all() function. Actually, existence of wdt_stop_all() depends on CONFIG_${SPL_}WDT, so really spell the condition using CONFIG_IS_ENABLED, and make it a C rather than cpp if. 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-31sandbox: disable CONFIG_WATCHDOG_AUTOSTARTRasmus Villemoes
For the unit tests, it is more convenient if the tests are in charge of when the watchdog devices are started and stopped, so prevent wdt-uclass from doing it automatically. 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: 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-30Merge branch '2021-08-30-kconfig-migrations-part1' into nextTom Rini
- Begin merging some Kconfig migration, and CONFIG namespace cleanup series in. This gives us: - A number of I2C symbols migrated over - DWC2, i8042, altera_spi and a few other areas updated to use CFG not CONFIG for the concept of "configuration space" defines. - Rename CONFIG_EXTRA_ENV_BOARD_SETTINGS to EXTRA_ENV_BOARD_SETTINGS - Some dead code removal. - Rename a number of CONFIG symbols that were only referenced within the config header to not use CONFIG as a prefix.
2021-08-30Kconfig: Use spaces not tabs in Kconfig entiresTom Rini
While the Kconfig language seems to accept either form of whitespace, we use a space throughout the project, except in these spots. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30astro_mcf5373l: Rework ASTRO_ID logicTom Rini
Rather than using CONFIG namespace for logic internal to include/configs/astro_mcf5373l.h to select ASTRO_ID (and populate the default environment), strip CONFIG from the various options used and set. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30mpc83xx: Update commentTom Rini
Update the comment here to refer to PCI_CONFIG_ADDRESS rather than CONFIG_ADDRESS. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.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-30ppc: Rework some hard-coded BOOTCOMMANDSTom Rini
There are an assortment of hard-coded CONFIG_BOOTCOMMAND options in some board headers. Rework these so that they do not add to the CONFIG namespace. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30arm: Migrate GICV2 / GICV3 to KconfigTom Rini
Migrate CONFIG_GICV2 and CONFIG_GICV3 to Kconfig. We still have the GIC related registers that need to be handled more cleanly but start by moving this symbol to Kconfig. Signed-off-by: Tom Rini <trini@konsulko.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-30varisys: Remove dead codeTom Rini
The platforms this code was for have been removed, drop this support code as well. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30README: Remove some old i2c related textTom Rini
These sections are no longer relevant, remove. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Minkyu Kang <mk7.kang@samsung.com>
2021-08-30Convert CONFIG_I2C_SET_DEFAULT_BUS_NUM et al to KconfigTom Rini
This converts the following to Kconfig: CONFIG_I2C_SET_DEFAULT_BUS_NUM CONFIG_I2C_DEFAULT_BUS_NUMBER Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30tegra: Cleanup I2C supportTom Rini
Remove the irrelevant section from the README and remove the non-functional SPL-undef section. Signed-off-by: Tom Rini <trini@konsulko.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>
2021-08-30Convert CONFIG_SYS_I2C_MXC et al to KconfigTom Rini
This converts the following to Kconfig: CONFIG_SYS_I2C_MXC CONFIG_SYS_I2C_MXC_I2C1 CONFIG_SYS_I2C_MXC_I2C2 CONFIG_SYS_I2C_MXC_I2C3 CONFIG_SYS_I2C_MXC_I2C4 Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30Convert CONFIG_SYS_I2C_SPEED et al to KconfigTom Rini
This converts the following to Kconfig: CONFIG_SYS_I2C_SPEED CONFIG_SYS_I2C_SLAVE Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30cmd/i2c.c: Remove unused legacy codeTom Rini
There are no longer any cases where we are neither SYS_I2C_LEGACY nor DM_I2C. Remove these code paths. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30i2c: Remove non-DM code from ihs_i2c.cTom Rini
This driver and it's only user are converted to DM_I2C, remove legacy code. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30ti: i2c: Convert CONFIG_SYS_OMAP24_I2C to CONFIG_SYS_I2C namespaceTom Rini
The omap24xx I2C driver uses its own CONFIG namespace for common I2C variables. Rather than convert more of them to Kconfig, rename these to the common I2C ones and remove the entirely unused functionality. As part of this, we make the am335x_shc platforms consistent with their intended speed values. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30am43xx: Drop non-DM_I2C codeTom Rini
On this platform, we have DM_I2C and SPL_DM_I2C always enabled. Remove legacy options. Cc: Lokesh Vutla <lokeshvutla@ti.com> Signed-off-by: Tom Rini <trini@konsulko.com> Acked-by: Lokesh Vutla <lokeshvutla@ti.com>
2021-08-30am335x: Drop non-DM_I2C codeTom Rini
On this platform, we have DM_I2C and SPL_DM_I2C always enabled. Remove legacy options. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30i2c: designware: Remove unused non-DM functionalityTom Rini
There are no users of more than 1 i2c bus in the non-DM case currently. Remove the additional defines for this. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30Convert CONFIG_SYS_I2C_EARLY_INIT to KconfigTom Rini
Convert SYS_I2C_EARLY_INIT to Kconfig, and make it depend on SPL_SYS_I2C_LEGACY. Remove the weak implementation as it's either something that needs to exist for real, or shouldn't be called. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30Convert CONFIG_SYS_I2C_LEGACY to Kconfig and add CONFIG_[ST]PL_SYS_I2C_LEGACYTom Rini
First, we convert CONFIG_SYS_I2C_LEGACY to Kconfig. Next, as you cannot have SYS_I2C_LEGACY and DM_I2C at the same time, introduce CONFIG_SPL_SYS_I2C_LEGACY so that we can enable the legacy option only in SPL. Finally, for some PowerPC cases we also need CONFIG_TPL_SYS_I2C_LEGACY support. Convert all of the existing users to one or more symbols. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30i2c: Remove unused additional legacy soft i2c bus supportTom Rini
Currently the legacy software i2c support is only used for a single bus. Remove all of the extra and unused support. Also update the README to not reference that, and finish removing some already badly auto-edited related text. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30Convert CONFIG_SYS_I2C_MVTWSI to KconfigTom Rini
This converts the following to Kconfig: CONFIG_SYS_I2C_MVTWSI Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30Convert CONFIG_SYS_I2C_SOFT et al to KconfigTom Rini
This converts the following to Kconfig: CONFIG_SYS_I2C_SOFT CONFIG_SYS_I2C_SOFT_SPEED CONFIG_SYS_I2C_SOFT_SLAVE Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30Convert CONFIG_SYS_I2C_EEPROM_ADDR et al to KconfigTom Rini
- Rename usages of CONFIG_SYS_DEF_EEPROM_ADDR to CONFIG_SYS_I2C_EEPROM_ADDR based on current usage. - Convert CONFIG_SYS_I2C_EEPROM_ADDR, CONFIG_SYS_I2C_EEPROM_ADDR_LEN, CONFIG_SYS_I2C_EEPROM_BUS, CONFIG_CONFIG_SYS_EEPROM_SIZE CONFIG_SYS_EEPROM_PAGE_WRITE_BITS and CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS to Kconfig. We move these symbols around a bit and add appropriate dependencies to them. In some cases, we now add a correct default value as well. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30eeprom: Drop CONFIG_ENV_EEPROM_IS_ON_I2C usageTom Rini
At this point in time, there's no systems with "U-Boot environment exists on an EEPROM which is accessed over the I2C bus" that sets this option. Drop it. Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30cl-som-imx7: Enable CMD_EEPROMTom Rini
This platform defines everything needed to be able to use the eeprom command. In addition, board/compulab/common/eeprom.c is required by the platform, and does not use CONFIG_ID_EEPROM to enable/disable builing of it. In order to migrate CONFIG symbols to Kconfig and to not have to add complex logic to handle this case, enable CMD_EEPROM on this board. Cc: Uri Mashiach <uri.mashiach@compulab.co.il> Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30i2c: S3C24X0: Finish Kconfig migrationTom Rini
Finish moving this driver to Kconfig. - Update the dependency logic for Exynos5 too - Remove the unused CONFIG_SYS_I2C_S3C24X0_SPEED variable - Drop CONFIG_SYS_I2C_S3C24X0_SLAVE as it's always set to 0. - Move the internal SYS_I2C_S3C24X0_SLAVE define closer to the only user. Cc: Jaehoon Chung <jh80.chung@samsung.com> Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Minkyu Kang <mk7.kang@samsung.com> Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2021-08-30Convert CONFIG_ID_EEPROM to KconfigTom Rini
This converts the following to Kconfig: CONFIG_ID_EEPROM Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30siemens: Move CONFIG_SYS_I2C_EEPROM_ADDR usage out of CONFIG namespaceTom Rini
The instances of CONFIG_SYS_I2C_EEPROM_ADDR on these platforms doesn't match up with the rest of the EERPOM related defines in U-Boot. Move these out of the CONFIG namespace rather than make complex Kconfig logic. Cc: Samuel Egli <samuel.egli@siemens.com> Cc: Anatolij Gustschin <agust@denx.de> Cc: Heiko Schocher <hs@denx.de> Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Heiko Schocher <hs@denx.de> Reviewed-by: Anatolij Gustschin <agust@denx.de>
2021-08-30keymile: Use CONFIG_SYS_IVM_EEPROM_ADRTom Rini
As the code reads now, making this code path use CONFIG_SYS_IVM_EEPROM_ADR rather than CONFIG_SYS_I2C_EEPROM_ADDR seems to make sense as the rest of the EEPROM infrastructure isn't used on these platforms. Cc: Aleksandar Gerasimovski <aleksandar.gerasimovski@hitachi-powergrids.com> Signed-off-by: Tom Rini <trini@konsulko.com> Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Aleksandar Gerasimovski <aleksandar.gerasimovski@hitachi-powergrids.com>
2021-08-30arm: shc: Change CONFIG_SYS_I2C_EEPROM_ADDR to EEPROM_ADDRTom Rini
The shc platforms do not make use of the rest of the EEPROM infrastructure. Rather than make more elaborate Kconfig logic, remove this setting from the CONFIG namespace. Cc: Heiko Schocher <hs@denx.de> Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Heiko Schocher <hs@denx.de>
2021-08-30davinci: Drop CONFIG_MAC_ADDR_IN_EEPROMTom Rini
Looking over the current boards, there are no users of CONFIG_MAC_ADDR_IN_EEPROM. Further, omapl138_lcdk uses CONFIG_NET_RANDOM_ETHADDR. Drop various unused code paths. Cc: Adam Ford <aford173@gmail.com> Cc: Lokesh Vutla <lokeshvutla@ti.com> Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-30kp_imx53: Switch to using a local namespace for ID EEPROMTom Rini
This platform does not use any of the standard EEPROM functionality and instead provides its own. Use a local namespace for the I2C related defines to access the EEPROM. Cc: Lukasz Majewski <lukma@denx.de> Signed-off-by: Tom Rini <trini@konsulko.com> Acked-by: Lukasz Majewski <lukma@denx.de>