diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2023-08-29 19:56:24 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2023-08-29 19:56:24 +0300 |
commit | 995cda62100e1f50b0f0c5b793c672f50baa6241 (patch) | |
tree | 4e991090e294697f9d27b569ba8cf807e3d9589d /drivers/gpio | |
parent | 3b6bf5b1f8e3d17d7566027cdc5a8262991eb5bc (diff) | |
parent | 98ac9e4fc07f101c435f1ab6b395b6245b096a68 (diff) | |
download | linux-995cda62100e1f50b0f0c5b793c672f50baa6241.tar.xz |
Merge tag 'mmc-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
Pull MMC updates from Ulf Hansson:
"MMC core:
- Convert drivers to use the ->remove_new() callback
- Propagate the removable attribute for the card's device
MMC host:
- Convert drivers to use the ->remove_new() callback
- atmel-mci: Convert to gpio descriptors and cleanup the code
- davinci: Make SDIO irq truly optional
- renesas_sdhi: Register irqs before registering controller
- sdhci: Simplify the sdhci_pltfm_* interface a bit
- sdhci-esdhc-imx: Improve support for the 1.8V errata
- sdhci-of-at91: Add support for the microchip sam9x7 variant
- sdhci-of-dwcmshc: Add support for runtime PM
- sdhci-pci-o2micro: Add support for the new Bayhub GG8 variant
- sdhci-sprd: Add support for SD high-speed mode tuning
- uniphier-sd: Register irqs before registering controller"
* tag 'mmc-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: (108 commits)
mmc: atmel-mci: Move card detect gpio polarity quirk to gpiolib
mmc: atmel-mci: move atmel MCI header file
mmc: atmel-mci: Convert to gpio descriptors
mmc: sdhci-sprd: Add SD HS mode online tuning
mmc: core: Add host specific tuning support for SD HS mode
mmc: sdhci-of-dwcmshc: Add runtime PM operations
mmc: sdhci-of-dwcmshc: Add error handling in dwcmshc_resume
mmc: sdhci-esdhc-imx: improve ESDHC_FLAG_ERR010450
mmc: sdhci-pltfm: Rename sdhci_pltfm_register()
mmc: sdhci-pltfm: Remove sdhci_pltfm_unregister()
mmc: sdhci-st: Use sdhci_pltfm_remove()
mmc: sdhci-pxav2: Use sdhci_pltfm_remove()
mmc: sdhci-of-sparx5: Use sdhci_pltfm_remove()
mmc: sdhci-of-hlwd: Use sdhci_pltfm_remove()
mmc: sdhci-of-esdhc: Use sdhci_pltfm_remove()
mmc: sdhci-of-at91: Use sdhci_pltfm_remove()
mmc: sdhci-of-arasan: Use sdhci_pltfm_remove()
mmc: sdhci-iproc: Use sdhci_pltfm_remove()
mmc: sdhci_f_sdh30: Use sdhci_pltfm_remove()
mmc: sdhci-dove: Use sdhci_pltfm_remove()
...
Diffstat (limited to 'drivers/gpio')
-rw-r--r-- | drivers/gpio/gpiolib-of.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c index 1436cdb5fa26..9694eb5afa21 100644 --- a/drivers/gpio/gpiolib-of.c +++ b/drivers/gpio/gpiolib-of.c @@ -209,6 +209,8 @@ static void of_gpio_set_polarity_by_property(const struct device_node *np, const char *propname, enum of_gpio_flags *flags) { + const struct device_node *np_compat = np; + const struct device_node *np_propname = np; static const struct { const char *compatible; const char *gpio_propname; @@ -253,14 +255,28 @@ static void of_gpio_set_polarity_by_property(const struct device_node *np, { "regulator-gpio", "enable-gpio", "enable-active-high" }, { "regulator-gpio", "enable-gpios", "enable-active-high" }, #endif +#if IS_ENABLED(CONFIG_MMC_ATMELMCI) + { "atmel,hsmci", "cd-gpios", "cd-inverted" }, +#endif }; unsigned int i; bool active_high; +#if IS_ENABLED(CONFIG_MMC_ATMELMCI) + /* + * The Atmel HSMCI has compatible property in the parent node and + * gpio property in a child node + */ + if (of_device_is_compatible(np->parent, "atmel,hsmci")) { + np_compat = np->parent; + np_propname = np; + } +#endif + for (i = 0; i < ARRAY_SIZE(gpios); i++) { - if (of_device_is_compatible(np, gpios[i].compatible) && + if (of_device_is_compatible(np_compat, gpios[i].compatible) && !strcmp(propname, gpios[i].gpio_propname)) { - active_high = of_property_read_bool(np, + active_high = of_property_read_bool(np_propname, gpios[i].polarity_propname); of_gpio_quirk_polarity(np, active_high, flags); break; |