diff options
| author | Mark Brown <broonie@kernel.org> | 2026-05-29 23:13:54 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-05-29 23:13:54 +0100 |
| commit | 72cd7b71160e5e201a1e9b941bbfacc7cd25003f (patch) | |
| tree | 1e61b49504d13050958041ef5ae7fadce908543d /arch | |
| parent | 1ef9f7af25f6afae52decb8280285d2824d69c83 (diff) | |
| parent | 9de94681ee48770ec7e2062451a572b557bf9298 (diff) | |
| download | linux-next-history-72cd7b71160e5e201a1e9b941bbfacc7cd25003f.tar.gz | |
Merge branch 'gpio/for-next' of https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm/mach-omap1/board-nokia770.c | 33 | ||||
| -rw-r--r-- | arch/arm/mach-omap1/common.h | 3 | ||||
| -rw-r--r-- | arch/arm/mach-omap1/gpio16xx.c | 80 |
3 files changed, 48 insertions, 68 deletions
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index a5bf5554800fe..72d9e92a10717 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c @@ -36,27 +36,6 @@ #include "clock.h" #include "mmc.h" -static const struct software_node nokia770_mpuio_gpiochip_node = { - .name = "mpuio", -}; - -static const struct software_node nokia770_gpiochip1_node = { - .name = "gpio-0-15", -}; - -static const struct software_node nokia770_gpiochip2_node = { - .name = "gpio-16-31", -}; - -static const struct software_node *nokia770_gpiochip_nodes[] = { - &nokia770_mpuio_gpiochip_node, - &nokia770_gpiochip1_node, - &nokia770_gpiochip2_node, - NULL -}; - -#define ADS7846_PENDOWN_GPIO 15 - static const unsigned int nokia770_keymap[] = { KEY(1, 0, GROUP_0 | KEY_UP), KEY(2, 0, GROUP_1 | KEY_F5), @@ -112,7 +91,7 @@ static const struct omap_lcd_config nokia770_lcd_config __initconst = { }; static const struct property_entry nokia770_mipid_props[] = { - PROPERTY_ENTRY_GPIO("reset-gpios", &nokia770_gpiochip1_node, + PROPERTY_ENTRY_GPIO("reset-gpios", &omap16xx_gpio1_swnode, 13, GPIO_ACTIVE_LOW), { } }; @@ -138,8 +117,7 @@ static const struct property_entry nokia770_ads7846_props[] = { PROPERTY_ENTRY_U16("ti,x-plate-ohms", 180), PROPERTY_ENTRY_U16("ti,debounce-tol", 3), PROPERTY_ENTRY_U16("ti,debounce-rep", 1), - PROPERTY_ENTRY_GPIO("pendown-gpios", &nokia770_gpiochip1_node, - ADS7846_PENDOWN_GPIO, GPIO_ACTIVE_LOW), + PROPERTY_ENTRY_GPIO("pendown-gpios", &omap16xx_gpio1_swnode, 15, GPIO_ACTIVE_LOW), { } }; @@ -225,9 +203,9 @@ static inline void nokia770_mmc_init(void) #if IS_ENABLED(CONFIG_I2C_CBUS_GPIO) static const struct software_node_ref_args nokia770_cbus_gpio_refs[] = { - SOFTWARE_NODE_REFERENCE(&nokia770_mpuio_gpiochip_node, 9, 0), - SOFTWARE_NODE_REFERENCE(&nokia770_mpuio_gpiochip_node, 10, 0), - SOFTWARE_NODE_REFERENCE(&nokia770_mpuio_gpiochip_node, 11, 0), + SOFTWARE_NODE_REFERENCE(&omap16xx_mpu_gpio_swnode, 9, 0), + SOFTWARE_NODE_REFERENCE(&omap16xx_mpu_gpio_swnode, 10, 0), + SOFTWARE_NODE_REFERENCE(&omap16xx_mpu_gpio_swnode, 11, 0), }; static const struct property_entry nokia770_cbus_props[] = { @@ -318,7 +296,6 @@ static void __init omap_nokia770_init(void) /* Unmask SleepX signal */ omap_writew((omap_readw(0xfffb5004) & ~2), 0xfffb5004); - software_node_register_node_group(nokia770_gpiochip_nodes); platform_add_devices(nokia770_devices, ARRAY_SIZE(nokia770_devices)); gpiod_add_lookup_table(&nokia770_irq_gpio_table); diff --git a/arch/arm/mach-omap1/common.h b/arch/arm/mach-omap1/common.h index 7a7c3d9eb84a0..c0f6e231fdb44 100644 --- a/arch/arm/mach-omap1/common.h +++ b/arch/arm/mach-omap1/common.h @@ -35,6 +35,9 @@ #include "soc.h" #include "i2c.h" +extern const struct software_node omap16xx_mpu_gpio_swnode; +extern const struct software_node omap16xx_gpio1_swnode; + #ifdef CONFIG_OMAP_SERIAL_WAKE int omap_serial_wakeup_init(void); #else diff --git a/arch/arm/mach-omap1/gpio16xx.c b/arch/arm/mach-omap1/gpio16xx.c index 55acec22fef4e..0f97972fd248d 100644 --- a/arch/arm/mach-omap1/gpio16xx.c +++ b/arch/arm/mach-omap1/gpio16xx.c @@ -9,6 +9,7 @@ */ #include <linux/platform_data/gpio-omap.h> +#include <linux/property.h> #include <linux/soc/ti/omap1-io.h> #include "hardware.h" @@ -55,14 +56,16 @@ static struct omap_gpio_platform_data omap16xx_mpu_gpio_config = { .regs = &omap16xx_mpuio_regs, }; -static struct platform_device omap16xx_mpu_gpio = { +const struct software_node omap16xx_mpu_gpio_swnode = { }; + +static const struct platform_device_info omap16xx_mpu_gpio = { .name = "omap_gpio", .id = 0, - .dev = { - .platform_data = &omap16xx_mpu_gpio_config, - }, - .num_resources = ARRAY_SIZE(omap16xx_mpu_gpio_resources), - .resource = omap16xx_mpu_gpio_resources, + .data = &omap16xx_mpu_gpio_config, + .size_data = sizeof(omap16xx_mpu_gpio_config), + .num_res = ARRAY_SIZE(omap16xx_mpu_gpio_resources), + .res = omap16xx_mpu_gpio_resources, + .swnode = &omap16xx_mpu_gpio_swnode, }; /* gpio1 */ @@ -99,14 +102,16 @@ static struct omap_gpio_platform_data omap16xx_gpio1_config = { .regs = &omap16xx_gpio_regs, }; -static struct platform_device omap16xx_gpio1 = { +const struct software_node omap16xx_gpio1_swnode = { }; + +static const struct platform_device_info omap16xx_gpio1 = { .name = "omap_gpio", .id = 1, - .dev = { - .platform_data = &omap16xx_gpio1_config, - }, - .num_resources = ARRAY_SIZE(omap16xx_gpio1_resources), - .resource = omap16xx_gpio1_resources, + .data = &omap16xx_gpio1_config, + .size_data = sizeof(omap16xx_gpio1_config), + .num_res = ARRAY_SIZE(omap16xx_gpio1_resources), + .res = omap16xx_gpio1_resources, + .swnode = &omap16xx_gpio1_swnode, }; /* gpio2 */ @@ -127,14 +132,13 @@ static struct omap_gpio_platform_data omap16xx_gpio2_config = { .regs = &omap16xx_gpio_regs, }; -static struct platform_device omap16xx_gpio2 = { +static const struct platform_device_info omap16xx_gpio2 = { .name = "omap_gpio", .id = 2, - .dev = { - .platform_data = &omap16xx_gpio2_config, - }, - .num_resources = ARRAY_SIZE(omap16xx_gpio2_resources), - .resource = omap16xx_gpio2_resources, + .data = &omap16xx_gpio2_config, + .size_data = sizeof(omap16xx_gpio2_config), + .num_res = ARRAY_SIZE(omap16xx_gpio2_resources), + .res = omap16xx_gpio2_resources, }; /* gpio3 */ @@ -155,14 +159,13 @@ static struct omap_gpio_platform_data omap16xx_gpio3_config = { .regs = &omap16xx_gpio_regs, }; -static struct platform_device omap16xx_gpio3 = { +static const struct platform_device_info omap16xx_gpio3 = { .name = "omap_gpio", .id = 3, - .dev = { - .platform_data = &omap16xx_gpio3_config, - }, - .num_resources = ARRAY_SIZE(omap16xx_gpio3_resources), - .resource = omap16xx_gpio3_resources, + .data = &omap16xx_gpio3_config, + .size_data = sizeof(omap16xx_gpio3_config), + .num_res = ARRAY_SIZE(omap16xx_gpio3_resources), + .res = omap16xx_gpio3_resources, }; /* gpio4 */ @@ -183,17 +186,16 @@ static struct omap_gpio_platform_data omap16xx_gpio4_config = { .regs = &omap16xx_gpio_regs, }; -static struct platform_device omap16xx_gpio4 = { +static const struct platform_device_info omap16xx_gpio4 = { .name = "omap_gpio", .id = 4, - .dev = { - .platform_data = &omap16xx_gpio4_config, - }, - .num_resources = ARRAY_SIZE(omap16xx_gpio4_resources), - .resource = omap16xx_gpio4_resources, + .data = &omap16xx_gpio4_config, + .size_data = sizeof(omap16xx_gpio4_config), + .num_res = ARRAY_SIZE(omap16xx_gpio4_resources), + .res = omap16xx_gpio4_resources, }; -static struct platform_device *omap16xx_gpio_dev[] __initdata = { +static const struct platform_device_info *omap16xx_gpio_dev[] __initconst = { &omap16xx_mpu_gpio, &omap16xx_gpio1, &omap16xx_gpio2, @@ -210,9 +212,8 @@ static int __init omap16xx_gpio_init(void) { int i; void __iomem *base; - struct resource *res; - struct platform_device *pdev; - struct omap_gpio_platform_data *pdata; + const struct resource *res; + const struct platform_device_info *pdevinfo; if (!cpu_is_omap16xx()) return -EINVAL; @@ -225,25 +226,24 @@ static int __init omap16xx_gpio_init(void) ULPD_CAM_CLK_CTRL); for (i = 0; i < ARRAY_SIZE(omap16xx_gpio_dev); i++) { - pdev = omap16xx_gpio_dev[i]; - pdata = pdev->dev.platform_data; + pdevinfo = omap16xx_gpio_dev[i]; - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + res = &pdevinfo->res[0]; if (unlikely(!res)) { - dev_err(&pdev->dev, "Invalid mem resource.\n"); + pr_err("%s.%d: Invalid mem resource.\n", pdevinfo->name, pdevinfo->id); return -ENODEV; } base = ioremap(res->start, resource_size(res)); if (unlikely(!base)) { - dev_err(&pdev->dev, "ioremap failed.\n"); + pr_err("%s.%d: ioremap failed.\n", pdevinfo->name, pdevinfo->id); return -ENOMEM; } __raw_writel(SYSCONFIG_WORD, base + OMAP1610_GPIO_SYSCONFIG); iounmap(base); - platform_device_register(omap16xx_gpio_dev[i]); + platform_device_register_full(omap16xx_gpio_dev[i]); } return 0; |
