dm: gpio: Allow control of GPIO uclass in SPL
authorSimon Glass <sjg@chromium.org>
Sat, 7 Dec 2019 04:41:35 +0000 (21:41 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Sun, 15 Dec 2019 00:52:29 +0000 (08:52 +0800)
At present if CONFIG_SPL_GPIO_SUPPORT is enabled then the GPIO uclass
is included in SPL/TPL without any control for boards. Some boards may
want to disable this to reduce code size where GPIOs are not needed in
SPL or TPL.

Add a new Kconfig option to permit this. Default it to 'y' so that
existing boards work correctly.

Change existing uses of CONFIG_DM_GPIO to CONFIG_IS_ENABLED(DM_GPIO) to
preserve the current behaviour. Also update the 74x164 GPIO driver since
it cannot build with SPL.

This allows us to remove the hacks in config_uncmd_spl.h and
Makefile.uncmd_spl (eventually those files should be removed).

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
42 files changed:
arch/arm/include/asm/omap_gpio.h
arch/arm/mach-at91/include/mach/at91sam9260.h
arch/arm/mach-davinci/include/mach/gpio.h
arch/arm/mach-omap2/am33xx/board.c
arch/arm/mach-omap2/omap3/board.c
arch/arm/mach-omap2/omap5/hwinit.c
board/freescale/imx8qm_mek/imx8qm_mek.c
board/freescale/imx8qxp_mek/imx8qxp_mek.c
board/gateworks/gw_ventana/Kconfig
board/toradex/apalis-imx8/apalis-imx8.c
configs/omap35_logic_defconfig
drivers/gpio/Kconfig
drivers/gpio/Makefile
drivers/gpio/at91_gpio.c
drivers/gpio/atmel_pio4.c
drivers/gpio/da8xx_gpio.c
drivers/gpio/da8xx_gpio.h
drivers/gpio/mxc_gpio.c
drivers/gpio/mxs_gpio.c
drivers/gpio/omap_gpio.c
drivers/gpio/sunxi_gpio.c
drivers/i2c/i2c-uclass.c
drivers/i2c/muxes/pca954x.c
drivers/mmc/fsl_esdhc_imx.c
drivers/mmc/omap_hsmmc.c
drivers/net/designware.c
drivers/net/designware.h
drivers/net/fec_mxc.c
drivers/net/fec_mxc.h
drivers/net/mvneta.c
drivers/net/mvpp2.c
drivers/net/sun8i_emac.c
drivers/pci/pci-aardvark.c
drivers/pci/pcie_dw_mvebu.c
drivers/spi/atmel_spi.c
drivers/spi/designware_spi.c
drivers/tpm/tpm2_tis_spi.c
include/config_uncmd_spl.h
include/configs/at91-sama5_common.h
include/configs/gw_ventana.h
include/configs/mx6ul_14x14_evk.h
scripts/Makefile.uncmd_spl

index 20268fa084e4eaac894e4aea6471c26fb3577e15..151afa8f44ca78b2de74cb8ea6b27ffbd104257e 100644 (file)
@@ -22,7 +22,7 @@
 
 #include <asm/arch/cpu.h>
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 
 /* Information about a GPIO bank */
 struct omap_gpio_platdata {
index 91faf729ae00a1d2a637b5e2b336f01326e790a5..2daeb4fef8f8c1d12a3ba0337cc81b5e2fc9684b 100644 (file)
 /*
  * Other misc defines
  */
-#ifndef CONFIG_DM_GPIO
+#if !CONFIG_IS_ENABLED(DM_GPIO)
 #define ATMEL_PIO_PORTS                3               /* these SoCs have 3 PIO */
 #define ATMEL_BASE_PIO         ATMEL_BASE_PIOA
 #endif
index c1502409626259830d94e0e4eaf07a617afd72ac..e5a405341415db057887533ca2587f0fd6d28d55 100644 (file)
@@ -18,7 +18,7 @@
 #define davinci_gpio_bank67 ((struct davinci_gpio *)DAVINCI_GPIO_BANK67)
 #define davinci_gpio_bank8 ((struct davinci_gpio *)DAVINCI_GPIO_BANK8)
 
-#ifndef CONFIG_DM_GPIO
+#if !CONFIG_IS_ENABLED(DM_GPIO)
 #define gpio_status()          gpio_info()
 #endif
 #define GPIO_NAME_SIZE         20
index 03460c3eb7e78240d7492978973b8bacbba883eb..e64942b716733bdea70ca4d22cd5e29cf03525cc 100644 (file)
@@ -116,7 +116,7 @@ U_BOOT_DEVICES(am33xx_i2c) = {
 };
 #endif
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 static const struct omap_gpio_platdata am33xx_gpio[] = {
        { 0, AM33XX_GPIO0_BASE },
        { 1, AM33XX_GPIO1_BASE },
@@ -141,7 +141,7 @@ U_BOOT_DEVICES(am33xx_gpios) = {
 #endif
 #endif
 
-#ifndef CONFIG_DM_GPIO
+#if !CONFIG_IS_ENABLED(DM_GPIO)
 static const struct gpio_bank gpio_bank_am33xx[] = {
        { (void *)AM33XX_GPIO0_BASE },
        { (void *)AM33XX_GPIO1_BASE },
index 658ef8c1f11e5a44e2f954d20ea90407fad84224..60de0d6052135ae699e886506ab6ac9b8da317dc 100644 (file)
@@ -33,7 +33,7 @@ extern omap3_sysinfo sysinfo;
 static void omap3_invalidate_l2_cache_secure(void);
 #endif
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 #if !CONFIG_IS_ENABLED(OF_CONTROL)
 /* Manually initialize GPIO banks when OF_CONTROL doesn't */
 static const struct omap_gpio_platdata omap34xx_gpio[] = {
index eba21647d96cf2fce0658d47665e58cbf748f1d4..56458ce4957d515417ae3cede62a25c67eaa8334 100644 (file)
@@ -25,7 +25,7 @@
 
 u32 *const omap_si_rev = (u32 *)OMAP_SRAM_SCRATCH_OMAP_REV;
 
-#ifndef CONFIG_DM_GPIO
+#if !CONFIG_IS_ENABLED(DM_GPIO)
 static struct gpio_bank gpio_bank_54xx[8] = {
        { (void *)OMAP54XX_GPIO1_BASE },
        { (void *)OMAP54XX_GPIO2_BASE },
index 68be0fe0cf7e37d34d885489918771feb24b06b6..667a2743a620266d9bae3e1e3869bb07e36ef2fb 100644 (file)
@@ -50,7 +50,7 @@ int board_early_init_f(void)
        return 0;
 }
 
-#if IS_ENABLED(CONFIG_DM_GPIO)
+#if CONFIG_IS_ENABLED(DM_GPIO)
 static void board_gpio_init(void)
 {
        /* TODO */
index 671064fae278ccd8e89c2d1299bf0be0d5e32af1..194eb60cd37ecb46484c25e59cbc2a3fce269786 100644 (file)
@@ -54,7 +54,7 @@ int board_early_init_f(void)
        return 0;
 }
 
-#if IS_ENABLED(CONFIG_DM_GPIO)
+#if CONFIG_IS_ENABLED(DM_GPIO)
 static void board_gpio_init(void)
 {
        struct gpio_desc desc;
index 5d1bae41ac565cd9439913313586ec40c2d30e13..fee910ca837d04ec28bdf55a8543896e91be4e56 100644 (file)
@@ -1,5 +1,8 @@
 if TARGET_GW_VENTANA
 
+config DM_GPIO
+       default y
+
 config SYS_BOARD
        default "gw_ventana"
 
index 3e5174ef8a6759a10b271b6990d6225fdb463333..04830411872e1bbad3c8f4e7233321afee38c5da 100644 (file)
@@ -51,7 +51,7 @@ int board_early_init_f(void)
        return 0;
 }
 
-#if IS_ENABLED(CONFIG_DM_GPIO)
+#if CONFIG_IS_ENABLED(DM_GPIO)
 static void board_gpio_init(void)
 {
        /* TODO */
index 511c8ef25ba2d64942790ab2b10c732d1f3d9dba..c7b67f0ffec1b51450661c1de3cf0e148fc42d7f 100644 (file)
@@ -45,6 +45,7 @@ CONFIG_DEFAULT_DEVICE_TREE="logicpd-torpedo-35xx-devkit"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SPL_DM=y
 CONFIG_SPL_OF_TRANSLATE=y
+# CONFIG_SPL_DM_GPIO is not set
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_OMAP_HS=y
index c1ad5d64a35ca50a84979a679a9143573ed1f3b4..447cf04578f3b364eff93fd4bff4f8bebb8c2fbf 100644 (file)
@@ -14,6 +14,28 @@ config DM_GPIO
          particular GPIOs that they provide. The uclass interface
          is defined in include/asm-generic/gpio.h.
 
+config SPL_DM_GPIO
+       bool "Enable Driver Model for GPIO drivers in SPL"
+       depends on DM_GPIO && SPL_DM && SPL_GPIO_SUPPORT
+       default y
+       help
+         Enable driver model for GPIO access in SPL. The standard GPIO
+         interface (gpio_get_value(), etc.) is then implemented by
+         the GPIO uclass. Drivers provide methods to query the
+         particular GPIOs that they provide. The uclass interface
+         is defined in include/asm-generic/gpio.h.
+
+config TPL_DM_GPIO
+       bool "Enable Driver Model for GPIO drivers in TPL"
+       depends on DM_GPIO && TPL_DM && TPL_GPIO_SUPPORT
+       default y
+       help
+         Enable driver model for GPIO access in TPL. The standard GPIO
+         interface (gpio_get_value(), etc.) is then implemented by
+         the GPIO uclass. Drivers provide methods to query the
+         particular GPIOs that they provide. The uclass interface
+         is defined in include/asm-generic/gpio.h.
+
 config GPIO_HOG
        bool "Enable GPIO hog support"
        depends on DM_GPIO
index ccc49e2eb02d1bfb123ee44b536e04ae386abeee..3612e66786ab93d1854817f15fb5d1b71d5e2c6b 100644 (file)
@@ -7,10 +7,12 @@ ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_DWAPB_GPIO)       += dwapb_gpio.o
 obj-$(CONFIG_AXP_GPIO)         += axp_gpio.o
 endif
-obj-$(CONFIG_DM_GPIO)          += gpio-uclass.o
+obj-$(CONFIG_$(SPL_TPL_)DM_GPIO) += gpio-uclass.o
 
 obj-$(CONFIG_$(SPL_)DM_PCA953X)        += pca953x_gpio.o
+ifdef CONFIG_$(SPL_TPL_)GPIO
 obj-$(CONFIG_DM_74X164)                += 74x164_gpio.o
+endif
 
 obj-$(CONFIG_AT91_GPIO)        += at91_gpio.o
 obj-$(CONFIG_ATMEL_PIO4)       += atmel_pio4.o
index dbfed72c61024ca7216daf0aac109bd0e1a760b5..5ea3e77b2d14783bffa3d65cf4e6b0c3e6baa495 100644 (file)
@@ -210,7 +210,7 @@ int at91_pio3_set_d_periph(unsigned port, unsigned pin, int use_pullup)
        return 0;
 }
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 static bool at91_get_port_output(struct at91_port *at91_port, int offset)
 {
        u32 mask, val;
@@ -457,7 +457,7 @@ int at91_get_pio_value(unsigned port, unsigned pin)
        return 0;
 }
 
-#ifndef CONFIG_DM_GPIO
+#if !CONFIG_IS_ENABLED(DM_GPIO)
 /* Common GPIO API */
 
 int gpio_request(unsigned gpio, const char *label)
@@ -499,7 +499,7 @@ int gpio_set_value(unsigned gpio, int value)
 }
 #endif
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 
 struct at91_port_priv {
        struct at91_port *regs;
index 95a189a50f64063857718c1d144ed3c5e14df1f4..8e6f32de1f3b9fa31fda819cf5e97a89006868be 100644 (file)
@@ -168,7 +168,7 @@ int atmel_pio4_get_pio_input(u32 port, u32 pin)
        return (readl(&port_base->pdsr) & mask) ? 1 : 0;
 }
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 
 struct atmel_pioctrl_data {
        u32 nbanks;
index 0a50c68d721ae09855f45e28793658bf5b487621..bd5a366aef3282ff332788821d393e534c66a4e8 100644 (file)
@@ -15,7 +15,7 @@
 
 #include "da8xx_gpio.h"
 
-#ifndef CONFIG_DM_GPIO
+#if !CONFIG_IS_ENABLED(DM_GPIO)
 #include <asm/arch/hardware.h>
 #include <asm/arch/davinci_misc.h>
 
@@ -377,7 +377,8 @@ static int _gpio_direction_output(struct davinci_gpio *bank, unsigned int gpio,
        _gpio_set_value(bank, gpio, value);
        return 0;
 }
-#ifndef CONFIG_DM_GPIO
+
+#if !CONFIG_IS_ENABLED(DM_GPIO)
 
 void gpio_info(void)
 {
@@ -428,7 +429,7 @@ int gpio_set_value(unsigned int gpio, int value)
        return _gpio_set_value(bank, gpio, value);
 }
 
-#else /* CONFIG_DM_GPIO */
+#else /* DM_GPIO */
 
 static struct davinci_gpio *davinci_get_gpio_bank(struct udevice *dev, unsigned int offset)
 {
index 1de9ec7f6fb7785bfd4902be31eb77ea3d775dfb..849e8d2dcf3dd8e449019ee9e14f54aa754f04a7 100644 (file)
@@ -28,7 +28,7 @@ struct davinci_gpio_bank {
 #define MAX_NUM_GPIOS          144
 #define GPIO_BIT(gp)           ((gp) & 0x1F)
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 
 /* Information about a GPIO bank */
 struct davinci_gpio_platdata {
index 64ab7a303f111f38d6998cd96a4d4dc655af0665..6592d141d3e3be1cae078728061c5fb4d9eb9678 100644 (file)
@@ -30,7 +30,7 @@ struct mxc_bank_info {
        struct gpio_regs *regs;
 };
 
-#ifndef CONFIG_DM_GPIO
+#if !CONFIG_IS_ENABLED(DM_GPIO)
 #define GPIO_TO_PORT(n)                ((n) / 32)
 
 /* GPIO port description */
@@ -161,7 +161,7 @@ int gpio_direction_output(unsigned gpio, int value)
 }
 #endif
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 #include <fdtdec.h>
 static int mxc_gpio_is_output(struct gpio_regs *regs, int offset)
 {
index 5795155e3ed66cb81f7ebbca27213de79cb885cf..77778e9ce57fa51a45e6dce684b6d5c40dfb15c9 100644 (file)
@@ -128,7 +128,7 @@ int name_to_gpio(const char *name)
 
        return (bank << MXS_PAD_BANK_SHIFT) | (pin << MXS_PAD_PIN_SHIFT);
 }
-#else /* CONFIG_DM_GPIO */
+#else /* DM_GPIO */
 #include <dm.h>
 #include <asm/gpio.h>
 #include <dt-structs.h>
@@ -312,4 +312,4 @@ U_BOOT_DRIVER(gpio_mxs) = {
        .ofdata_to_platdata = mxs_ofdata_to_platdata,
 #endif
 };
-#endif /* CONFIG_DM_GPIO */
+#endif /* DM_GPIO */
index 0031415d03eff9ad00f29d0f0519d67611cca2a8..4249850f4bf96826bfd4c4f77be3164e8d2673e9 100644 (file)
@@ -30,7 +30,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #define OMAP_GPIO_DIR_OUT      0
 #define OMAP_GPIO_DIR_IN       1
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 
 #define GPIO_PER_BANK                  32
 
@@ -121,7 +121,7 @@ static int _get_gpio_value(const struct gpio_bank *bank, int gpio)
        return (__raw_readl(reg) & (1 << gpio)) != 0;
 }
 
-#ifndef CONFIG_DM_GPIO
+#if !CONFIG_IS_ENABLED(DM_GPIO)
 
 static inline const struct gpio_bank *get_gpio_bank(int gpio)
 {
@@ -377,4 +377,4 @@ U_BOOT_DRIVER(gpio_omap) = {
 #endif
 };
 
-#endif /* CONFIG_DM_GPIO */
+#endif /* !DM_GPIO */
index 719efc2cef0c78fcca06ac2fcc4df68a106d73b5..9c3a4428e11fb68c6a9520eb8ded5d8dea4a81f3 100644 (file)
@@ -28,7 +28,7 @@ struct sunxi_gpio_platdata {
        int gpio_count;
 };
 
-#ifndef CONFIG_DM_GPIO
+#if !CONFIG_IS_ENABLED(DM_GPIO)
 static int sunxi_gpio_output(u32 pin, u32 val)
 {
        u32 dat;
@@ -116,7 +116,7 @@ int sunxi_name_to_gpio(const char *name)
                return -1;
        return group * 32 + pin;
 }
-#endif
+#endif /* DM_GPIO */
 
 int sunxi_name_to_gpio_bank(const char *name)
 {
@@ -132,7 +132,7 @@ int sunxi_name_to_gpio_bank(const char *name)
        return -1;
 }
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 /* TODO(sjg@chromium.org): Remove this function and use device tree */
 int sunxi_name_to_gpio(const char *name)
 {
@@ -373,4 +373,4 @@ U_BOOT_DRIVER(gpio_sunxi) = {
        .bind   = gpio_sunxi_bind,
        .probe  = gpio_sunxi_probe,
 };
-#endif
+#endif /* DM_GPIO */
index e47abf18333f4452b31c8662e4160358ab4b575f..88c13e76cb7f83d2012a83cac3ca4f31623fabf7 100644 (file)
@@ -11,7 +11,7 @@
 #include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <dm/pinctrl.h>
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 #include <asm/gpio.h>
 #endif
 
@@ -465,7 +465,7 @@ int i2c_get_chip_offset_len(struct udevice *dev)
        return chip->offset_len;
 }
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 static void i2c_gpio_set_pin(struct gpio_desc *pin, int bit)
 {
        if (bit)
@@ -561,7 +561,7 @@ static int i2c_deblock_gpio(struct udevice *bus)
 {
        return -ENOSYS;
 }
-#endif // CONFIG_DM_GPIO
+#endif /* DM_GPIO */
 
 int i2c_deblock(struct udevice *bus)
 {
index a630ce991d04e3c5407e0a1bc23add78af2a442c..bb2935f8ec084893860e2f8fb4a2f2e7d3811204 100644 (file)
@@ -125,7 +125,7 @@ static int pca954x_ofdata_to_platdata(struct udevice *dev)
 
 static int pca954x_probe(struct udevice *dev)
 {
-       if (IS_ENABLED(CONFIG_DM_GPIO)) {
+       if (CONFIG_IS_ENABLED(DM_GPIO)) {
                struct pca954x_priv *priv = dev_get_priv(dev);
                int err;
 
@@ -146,7 +146,7 @@ static int pca954x_probe(struct udevice *dev)
 
 static int pca954x_remove(struct udevice *dev)
 {
-       if (IS_ENABLED(CONFIG_DM_GPIO)) {
+       if (CONFIG_IS_ENABLED(DM_GPIO)) {
                struct pca954x_priv *priv = dev_get_priv(dev);
 
                if (dm_gpio_is_valid(&priv->gpio_mux_reset))
index f1afab742dfdb2503eddc7221088758008fe8f90..f7b754bd9d37f520e92ecfcbb59c92a6d1eeb583 100644 (file)
@@ -150,7 +150,7 @@ struct fsl_esdhc_priv {
        struct udevice *vqmmc_dev;
        struct udevice *vmmc_dev;
 #endif
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct gpio_desc cd_gpio;
        struct gpio_desc wp_gpio;
 #endif
@@ -303,8 +303,9 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc,
                                return -ETIMEDOUT;
                        }
                } else {
-#ifdef CONFIG_DM_GPIO
-                       if (dm_gpio_is_valid(&priv->wp_gpio) && dm_gpio_get_value(&priv->wp_gpio)) {
+#if CONFIG_IS_ENABLED(DM_GPIO)
+                       if (dm_gpio_is_valid(&priv->wp_gpio) &&
+                           dm_gpio_get_value(&priv->wp_gpio)) {
                                printf("\nThe SD card is locked. Can not write to a locked card.\n\n");
                                return -ETIMEDOUT;
                        }
@@ -1092,7 +1093,7 @@ static int esdhc_getcd_common(struct fsl_esdhc_priv *priv)
 #if CONFIG_IS_ENABLED(DM_MMC)
        if (priv->non_removable)
                return 1;
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        if (dm_gpio_is_valid(&priv->cd_gpio))
                return dm_gpio_get_value(&priv->cd_gpio);
 #endif
@@ -1454,7 +1455,7 @@ static int fsl_esdhc_probe(struct udevice *dev)
                priv->non_removable = 1;
         } else {
                priv->non_removable = 0;
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
                gpio_request_by_name(dev, "cd-gpios", 0, &priv->cd_gpio,
                                     GPIOD_IS_IN);
 #endif
@@ -1464,7 +1465,7 @@ static int fsl_esdhc_probe(struct udevice *dev)
                priv->wp_enable = 1;
        } else {
                priv->wp_enable = 0;
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
                gpio_request_by_name(dev, "wp-gpios", 0, &priv->wp_gpio,
                                   GPIOD_IS_IN);
 #endif
index dab3425e97da50b53a0582081c1965d4ae42f893..5d0cfb2ebdd48bf154a19bb60fa55928ceffd6d3 100644 (file)
@@ -184,7 +184,7 @@ static int omap_mmc_setup_gpio_in(int gpio, const char *label)
 {
        int ret;
 
-#ifndef CONFIG_DM_GPIO
+#if !CONFIG_IS_ENABLED(DM_GPIO)
        if (!gpio_is_valid(gpio))
                return -1;
 #endif
index 5c2d5e5a792db801d9bc2c4a32fe820d2eac0c09..19fc34f771cb6af93dd2b5cdcabe5e557a1ad4c1 100644 (file)
@@ -82,7 +82,7 @@ static int dw_mdio_write(struct mii_dev *bus, int addr, int devad, int reg,
        return ret;
 }
 
-#if defined(CONFIG_DM_ETH) && defined(CONFIG_DM_GPIO)
+#if defined(CONFIG_DM_ETH) && CONFIG_IS_ENABLED(DM_GPIO)
 static int dw_mdio_reset(struct mii_dev *bus)
 {
        struct udevice *dev = bus->priv;
@@ -128,7 +128,7 @@ static int dw_mdio_init(const char *name, void *priv)
        bus->read = dw_mdio_read;
        bus->write = dw_mdio_write;
        snprintf(bus->name, sizeof(bus->name), "%s", name);
-#if defined(CONFIG_DM_ETH) && defined(CONFIG_DM_GPIO)
+#if defined(CONFIG_DM_ETH) && CONFIG_IS_ENABLED(DM_GPIO)
        bus->reset = dw_mdio_reset;
 #endif
 
@@ -807,12 +807,12 @@ const struct eth_ops designware_eth_ops = {
 int designware_eth_ofdata_to_platdata(struct udevice *dev)
 {
        struct dw_eth_pdata *dw_pdata = dev_get_platdata(dev);
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct dw_eth_dev *priv = dev_get_priv(dev);
 #endif
        struct eth_pdata *pdata = &dw_pdata->eth_pdata;
        const char *phy_mode;
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        int reset_flags = GPIOD_IS_OUT;
 #endif
        int ret = 0;
@@ -829,7 +829,7 @@ int designware_eth_ofdata_to_platdata(struct udevice *dev)
 
        pdata->max_speed = dev_read_u32_default(dev, "max-speed", 0);
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        if (dev_read_bool(dev, "snps,reset-active-low"))
                reset_flags |= GPIOD_ACTIVE_LOW;
 
index dea12b7048c48e44270df8397709020c5794bcf0..3519a4167a7df96c49d1465ef0eb68b0f7af9c58 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef _DW_ETH_H
 #define _DW_ETH_H
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 #include <asm-generic/gpio.h>
 #endif
 
@@ -235,7 +235,7 @@ struct dw_eth_dev {
 #ifndef CONFIG_DM_ETH
        struct eth_device *dev;
 #endif
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct gpio_desc reset_gpio;
 #endif
 #ifdef CONFIG_CLK
index 2aa1029d423c5d3785f9e42361a642e2ff4a761a..bc5b63d78814979347988ea85fd08ea4223209fd 100644 (file)
@@ -1309,7 +1309,7 @@ static int fec_phy_init(struct fec_priv *priv, struct udevice *dev)
        return 0;
 }
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 /* FEC GPIO reset */
 static void fec_gpio_reset(struct fec_priv *priv)
 {
@@ -1402,7 +1402,7 @@ static int fecmxc_probe(struct udevice *dev)
        }
 #endif
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        fec_gpio_reset(priv);
 #endif
        /* Reset chip. */
@@ -1508,7 +1508,7 @@ static int fecmxc_ofdata_to_platdata(struct udevice *dev)
        device_get_supply_regulator(dev, "phy-supply", &priv->phy_supply);
 #endif
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        ret = gpio_request_by_name(dev, "phy-reset-gpios", 0,
                                   &priv->phy_reset_gpio, GPIOD_IS_OUT);
        if (ret < 0)
index 723b06a65161731cb457d2dd1ba4ebfb27481a8f..159aec896796c3a2218de68f3e5f15c462d391a5 100644 (file)
@@ -255,7 +255,7 @@ struct fec_priv {
 #ifdef CONFIG_DM_REGULATOR
        struct udevice *phy_supply;
 #endif
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct gpio_desc phy_reset_gpio;
        uint32_t reset_delay;
        uint32_t reset_post_delay;
index 6f76a6b0dcffdb32636d29a2d7d65bbc49ccc2c0..5fe850019959984133f1729a0ae4b7767f973655 100644 (file)
@@ -276,7 +276,7 @@ struct mvneta_port {
        int init;
        int phyaddr;
        struct phy_device *phydev;
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct gpio_desc phy_reset_gpio;
 #endif
        struct mii_dev *bus;
@@ -1754,7 +1754,7 @@ static int mvneta_probe(struct udevice *dev)
        if (ret)
                return ret;
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        gpio_request_by_name(dev, "phy-reset-gpios", 0,
                             &pp->phy_reset_gpio, GPIOD_IS_OUT);
 
index c5d1f9cf9fba12cbe89b9753e9fae205f85aa9a8..917d06b6e0d44d22047692e60fed0463caad3756 100644 (file)
@@ -959,7 +959,8 @@ struct mvpp2_port {
        phy_interface_t phy_interface;
        int phyaddr;
        struct udevice *mdio_dev;
-#ifdef CONFIG_DM_GPIO
+       struct mii_dev *bus;
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct gpio_desc phy_reset_gpio;
        struct gpio_desc phy_tx_disable_gpio;
 #endif
@@ -4742,7 +4743,7 @@ static int phy_info_parse(struct udevice *dev, struct mvpp2_port *port)
                return -EINVAL;
        }
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        gpio_request_by_name(dev, "phy-reset-gpios", 0,
                             &port->phy_reset_gpio, GPIOD_IS_OUT);
        gpio_request_by_name(dev, "marvell,sfp-tx-disable-gpio", 0,
@@ -4769,7 +4770,7 @@ static int phy_info_parse(struct udevice *dev, struct mvpp2_port *port)
        return 0;
 }
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 /* Port GPIO initialization */
 static void mvpp2_gpio_init(struct mvpp2_port *port)
 {
@@ -4802,7 +4803,7 @@ static int mvpp2_port_probe(struct udevice *dev,
        }
        mvpp2_port_power_up(port);
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        mvpp2_gpio_init(port);
 #endif
 
index 95519187969d3d345057d6589e61cc1e99f46411..6f10578c884acf9b877493b8e604713348379a35 100644 (file)
@@ -24,7 +24,7 @@
 #include <net.h>
 #include <reset.h>
 #include <dt-bindings/pinctrl/sun4i-a10.h>
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 #include <asm-generic/gpio.h>
 #endif
 
@@ -142,7 +142,7 @@ struct emac_eth_dev {
        struct clk ephy_clk;
        struct reset_ctl tx_rst;
        struct reset_ctl ephy_rst;
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct gpio_desc reset_gpio;
 #endif
 };
@@ -696,7 +696,7 @@ err_tx_clk:
        return ret;
 }
 
-#if defined(CONFIG_DM_GPIO)
+#if CONFIG_IS_ENABLED(DM_GPIO)
 static int sun8i_mdio_reset(struct mii_dev *bus)
 {
        struct udevice *dev = bus->priv;
@@ -743,7 +743,7 @@ static int sun8i_mdio_init(const char *name, struct udevice *priv)
        bus->write = sun8i_mdio_write;
        snprintf(bus->name, sizeof(bus->name), name);
        bus->priv = (void *)priv;
-#if defined(CONFIG_DM_GPIO)
+#if CONFIG_IS_ENABLED(DM_GPIO)
        bus->reset = sun8i_mdio_reset;
 #endif
 
@@ -905,7 +905,7 @@ static int sun8i_emac_eth_ofdata_to_platdata(struct udevice *dev)
        const fdt32_t *reg;
        int node = dev_of_offset(dev);
        int offset = 0;
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        int reset_flags = GPIOD_IS_OUT;
 #endif
        int ret;
@@ -999,7 +999,7 @@ static int sun8i_emac_eth_ofdata_to_platdata(struct udevice *dev)
                printf("%s: Invalid RX delay value %d\n", __func__,
                       sun8i_pdata->rx_delay_ps);
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        if (fdtdec_get_bool(gd->fdt_blob, dev_of_offset(dev),
                            "snps,reset-active-low"))
                reset_flags |= GPIOD_ACTIVE_LOW;
index 864ac16f572be946705d1aa712aab612f3548767..aa0b4bc84563743e11d0278ec3d12606ec432e82 100644 (file)
@@ -610,7 +610,7 @@ static int pcie_advk_probe(struct udevice *dev)
 {
        struct pcie_advk *pcie = dev_get_priv(dev);
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct gpio_desc reset_gpio;
 
        gpio_request_by_name(dev, "reset-gpio", 0, &reset_gpio,
@@ -636,7 +636,7 @@ static int pcie_advk_probe(struct udevice *dev)
        }
 #else
        dev_dbg(pcie->dev, "PCIE Reset on GPIO support is missing\n");
-#endif /* CONFIG_DM_GPIO */
+#endif /* DM_GPIO */
 
        pcie->first_busno = dev->seq;
        pcie->dev = pci_get_controller(dev);
index 95fb41966fd61369458107d2b1fccaff31934bf0..693591e37502dc6f0ef52c48f1dae6ba95d60120 100644 (file)
@@ -476,7 +476,7 @@ static int pcie_dw_mvebu_probe(struct udevice *dev)
        struct pcie_dw_mvebu *pcie = dev_get_priv(dev);
        struct udevice *ctlr = pci_get_controller(dev);
        struct pci_controller *hose = dev_get_uclass_priv(ctlr);
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct gpio_desc reset_gpio;
 
        gpio_request_by_name(dev, "marvell,reset-gpio", 0, &reset_gpio,
@@ -496,7 +496,7 @@ static int pcie_dw_mvebu_probe(struct udevice *dev)
        }
 #else
        debug("PCIE Reset on GPIO support is missing\n");
-#endif /* CONFIG_DM_GPIO */
+#endif /* DM_GPIO */
 
        pcie->first_busno = dev->seq;
 
index cf4de9ee1aaf4712e13a6cb6dbeb5f7c2c3ae480..f076e92a93c59e01c99428c61a8adeca46446709 100644 (file)
@@ -17,7 +17,7 @@
 #ifdef CONFIG_DM_SPI
 #include <asm/arch/at91_spi.h>
 #endif
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
 #include <asm/gpio.h>
 #endif
 
@@ -228,7 +228,7 @@ struct atmel_spi_priv {
        unsigned int freq;              /* Default frequency */
        unsigned int mode;
        ulong bus_clk_rate;
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct gpio_desc cs_gpios[MAX_CS_COUNT];
 #endif
 };
@@ -285,7 +285,7 @@ static int atmel_spi_release_bus(struct udevice *dev)
 
 static void atmel_spi_cs_activate(struct udevice *dev)
 {
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct udevice *bus = dev_get_parent(dev);
        struct atmel_spi_priv *priv = dev_get_priv(bus);
        struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
@@ -300,7 +300,7 @@ static void atmel_spi_cs_activate(struct udevice *dev)
 
 static void atmel_spi_cs_deactivate(struct udevice *dev)
 {
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct udevice *bus = dev_get_parent(dev);
        struct atmel_spi_priv *priv = dev_get_priv(bus);
        struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
@@ -468,7 +468,7 @@ static int atmel_spi_probe(struct udevice *bus)
 
        bus_plat->regs = (struct at91_spi *)devfdt_get_addr(bus);
 
-#ifdef CONFIG_DM_GPIO
+#if CONFIG_IS_ENABLED(DM_GPIO)
        struct atmel_spi_priv *priv = dev_get_priv(bus);
        int i;
 
index 91e613e9cd65374c0220814421d407a3bcd17041..66ff8eeccdebde3da7980b2006a9d8fe5c70d04c 100644 (file)
@@ -126,7 +126,7 @@ static inline void dw_write(struct dw_spi_priv *priv, u32 offset, u32 val)
 
 static int request_gpio_cs(struct udevice *bus)
 {
-#if defined(CONFIG_DM_GPIO) && !defined(CONFIG_SPL_BUILD)
+#if CONFIG_IS_ENABLED(DM_GPIO) && !defined(CONFIG_SPL_BUILD)
        struct dw_spi_priv *priv = dev_get_priv(bus);
        int ret;
 
@@ -373,7 +373,7 @@ static int poll_transfer(struct dw_spi_priv *priv)
  */
 __weak void external_cs_manage(struct udevice *dev, bool on)
 {
-#if defined(CONFIG_DM_GPIO) && !defined(CONFIG_SPL_BUILD)
+#if CONFIG_IS_ENABLED(DM_GPIO) && !defined(CONFIG_SPL_BUILD)
        struct dw_spi_priv *priv = dev_get_priv(dev->parent);
 
        if (!dm_gpio_is_valid(&priv->cs_gpio))
index 3d105fddba1c8a420c769d501eace3ea085b919a..713111f6c3ea7299e395352a956c02a083d00f67 100644 (file)
@@ -587,7 +587,7 @@ static int tpm_tis_spi_probe(struct udevice *dev)
        /* Use the TPM v2 stack */
        priv->version = TPM_V2;
 
-       if (IS_ENABLED(CONFIG_DM_GPIO)) {
+       if (CONFIG_IS_ENABLED(DM_GPIO)) {
                struct gpio_desc reset_gpio;
 
                ret = gpio_request_by_name(dev, "gpio-reset", 0,
index c2f9735ce7912735fff331443093a5bc69bf743e..31da6215b3ae00a7fae7850e82ee049a03237fd3 100644 (file)
@@ -12,7 +12,6 @@
 
 #ifndef CONFIG_SPL_DM
 #undef CONFIG_DM_SERIAL
-#undef CONFIG_DM_GPIO
 #undef CONFIG_DM_I2C
 #undef CONFIG_DM_SPI
 #endif
index d19fd3153c3790d194323a7b84378ac537fc2416..6e9793ab81f57ab1b14a0ebb7c313135d8ed23c4 100644 (file)
@@ -9,6 +9,8 @@
 #ifndef __AT91_SAMA5_COMMON_H
 #define __AT91_SAMA5_COMMON_H
 
+#include <linux/kconfig.h>
+
 /* ARM asynchronous clock */
 #define CONFIG_SYS_AT91_SLOW_CLOCK      32768
 #define CONFIG_SYS_AT91_MAIN_CLOCK      12000000 /* from 12 MHz crystal */
 #endif
 
 /* general purpose I/O */
-#ifndef CONFIG_DM_GPIO
+#if !CONFIG_IS_ENABLED(DM_GPIO)
 #define CONFIG_AT91_GPIO
 #endif
 
-
 /*
  * BOOTP options
  */
index 894f8b11142b7a4e650bb8903cb6a866f3f31538..d169aa19de49974125f1012ea576fc141f038e3b 100644 (file)
@@ -36,7 +36,6 @@
 
 /* Driver Model */
 #ifndef CONFIG_SPL_BUILD
-#define CONFIG_DM_GPIO
 #define CONFIG_DM_THERMAL
 #endif
 
index c21d633ca069db01d04ca9a8eba71328c357f5eb..5cc15b6d2f6b554053d1cd5592e2e278f8aa39ca 100644 (file)
@@ -44,6 +44,7 @@
 #define CONFIG_SYS_I2C_SPEED           100000
 #endif
 
+/* Note: This is incorrect and should move to Kconfig / defconfig */
 #ifdef CONFIG_DM_GPIO
 #define CONFIG_DM_74X164
 #endif
index ba267d9ac6e59349518436582041356a808164f9..6ea097d36dd53ebfafed55f12781818f2c614e9c 100644 (file)
@@ -6,7 +6,6 @@ ifdef CONFIG_SPL_BUILD
 
 ifndef CONFIG_SPL_DM
 CONFIG_DM_SERIAL=
-CONFIG_DM_GPIO=
 CONFIG_DM_I2C=
 CONFIG_DM_SPI=
 CONFIG_DM_SPI_FLASH=