mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 01:32:21 +02:00
ARM: omap1: enable real software node lookup of GPIOs on Nokia 770
Currently the board file for Nokia 770 creates dummy software nodes not attached in any way to the actual GPIO controller devices and uses the fact that GPIOLIB matching swnode's name to the GPIO chip's label during software node lookup. This behavior is wrong and we want to remove it. To that end, we need to first convert all existing users to creating actual fwnode links. Create real software nodes for GPIO controllers on OMAP16xx and reference them from the software nodes in the nokia board file. Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Janusz Krzysztofik <jmkrzyszt@gmail.com> Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> Link: https://patch.msgid.link/20260430-nokia770-gpio-swnodes-v7-3-c88f74c90dd6@oss.qualcomm.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
This commit is contained in:
parent
2bdf432e15
commit
61442e46fb
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,6 +56,8 @@ static struct omap_gpio_platform_data omap16xx_mpu_gpio_config = {
|
|||
.regs = &omap16xx_mpuio_regs,
|
||||
};
|
||||
|
||||
const struct software_node omap16xx_mpu_gpio_swnode = { };
|
||||
|
||||
static const struct platform_device_info omap16xx_mpu_gpio = {
|
||||
.name = "omap_gpio",
|
||||
.id = 0,
|
||||
|
|
@ -62,6 +65,7 @@ static const struct platform_device_info omap16xx_mpu_gpio = {
|
|||
.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 */
|
||||
|
|
@ -98,6 +102,8 @@ static struct omap_gpio_platform_data omap16xx_gpio1_config = {
|
|||
.regs = &omap16xx_gpio_regs,
|
||||
};
|
||||
|
||||
const struct software_node omap16xx_gpio1_swnode = { };
|
||||
|
||||
static const struct platform_device_info omap16xx_gpio1 = {
|
||||
.name = "omap_gpio",
|
||||
.id = 1,
|
||||
|
|
@ -105,6 +111,7 @@ static const struct platform_device_info omap16xx_gpio1 = {
|
|||
.size_data = sizeof(omap16xx_gpio1_config),
|
||||
.num_res = ARRAY_SIZE(omap16xx_gpio1_resources),
|
||||
.res = omap16xx_gpio1_resources,
|
||||
.swnode = &omap16xx_gpio1_swnode,
|
||||
};
|
||||
|
||||
/* gpio2 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user