DaVinci: fix GPIO breakage after v4.19
This set of changes is needed to fix the broken GPIO support for DaVinci boards in legacy mode after certain changes made to the GPIO driver in 4.19, namely: commits587f7a694f
("gpio: davinci: Use dev name for label and automatic base selection") andeb3744a2dd
("gpio: davinci: Do not assume continuous IRQ numbering"). -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJb/TGpAAoJEGFBu2jqvgRN9vMP/AzBxmA/nfX8bndtQtJpn0tl d7PJHUWVmP9cXuHB+69VXXufjKNjrou7C+AWI7uQzF03AQH8vTmmHQXkA/Es3kgV 3pwBtoH064+8fESKtcG7aoNs4uz+dZspJH0qpwhDTtMhTwVOd7DHVzYawHxWkBpZ Eh1CDXi95jS3dRuGx7Q0GYB25j/pFZB0e6zE7CfH3+GkswoKjjYlAooH/OVZpsfl Kkeyczuq5QW4aZNKpyre3Tj060wUZQy13FWxjXPB9A5sdGsMBaKHoWX/qntNHyW8 EgRD/xgbVUKxme4EUYT4PhvtqUzB17BW3PKBwTQB+efWiIbO30hqk2R7YyqJABzD MB+HNYOhl6Fl/ehs2VQblWUvWPOHehiVAH1abgUP43BoBFz94CiiaEwhZLai8voG G8zn+HWuUVmLYEAW5UCWmkt4lM4I9FOEcIb1O/WFFwa7BpRCdFtS4wUfwCT5ao4j FJNadWe4UVP/tg9YtYJqxNpFexyutKapmvVMm5RlEpIfCeyhqTWX5oLWjZ9rL1UZ e4UJFYjzT3C+iujoSxiY4NYYRumAN6YdZN31M7qJ55ZHdWQV6K4nv3T4wjYSbPQh SNkrOKdOa+QO6ibYfvISwRn9vq/DMjrL6dKdUR6/j8O6im/EUa2juqNE8uHCx2O7 Cu9y6rLzNEovdE9h9ywi =tCLo -----END PGP SIGNATURE----- Merge tag 'davinci-fixes-for-v4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci into fixes DaVinci: fix GPIO breakage after v4.19 This set of changes is needed to fix the broken GPIO support for DaVinci boards in legacy mode after certain changes made to the GPIO driver in 4.19, namely: commits587f7a694f
("gpio: davinci: Use dev name for label and automatic base selection") andeb3744a2dd
("gpio: davinci: Do not assume continuous IRQ numbering"). * tag 'davinci-fixes-for-v4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci: ARM: davinci: dm644x: set the GPIO base to 0 ARM: davinci: da830: set the GPIO base to 0 ARM: davinci: dm355: set the GPIO base to 0 ARM: davinci: dm646x: set the GPIO base to 0 ARM: davinci: dm365: set the GPIO base to 0 ARM: davinci: da850: set the GPIO base to 0 gpio: davinci: restore a way to manually specify the GPIO base ARM: davinci: dm644x: define gpio interrupts as separate resources ARM: davinci: dm355: define gpio interrupts as separate resources ARM: davinci: dm646x: define gpio interrupts as separate resources ARM: davinci: dm365: define gpio interrupts as separate resources ARM: davinci: da8xx: define gpio interrupts as separate resources Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
commit
89acb56db4
@ -759,7 +759,9 @@ static struct davinci_id da830_ids[] = {
|
||||
};
|
||||
|
||||
static struct davinci_gpio_platform_data da830_gpio_platform_data = {
|
||||
.ngpio = 128,
|
||||
.no_auto_base = true,
|
||||
.base = 0,
|
||||
.ngpio = 128,
|
||||
};
|
||||
|
||||
int __init da830_register_gpio(void)
|
||||
|
@ -719,7 +719,9 @@ int __init da850_register_vpif_capture(struct vpif_capture_config
|
||||
}
|
||||
|
||||
static struct davinci_gpio_platform_data da850_gpio_platform_data = {
|
||||
.ngpio = 144,
|
||||
.no_auto_base = true,
|
||||
.base = 0,
|
||||
.ngpio = 144,
|
||||
};
|
||||
|
||||
int __init da850_register_gpio(void)
|
||||
|
@ -701,6 +701,46 @@ static struct resource da8xx_gpio_resources[] = {
|
||||
},
|
||||
{ /* interrupt */
|
||||
.start = IRQ_DA8XX_GPIO0,
|
||||
.end = IRQ_DA8XX_GPIO0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DA8XX_GPIO1,
|
||||
.end = IRQ_DA8XX_GPIO1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DA8XX_GPIO2,
|
||||
.end = IRQ_DA8XX_GPIO2,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DA8XX_GPIO3,
|
||||
.end = IRQ_DA8XX_GPIO3,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DA8XX_GPIO4,
|
||||
.end = IRQ_DA8XX_GPIO4,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DA8XX_GPIO5,
|
||||
.end = IRQ_DA8XX_GPIO5,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DA8XX_GPIO6,
|
||||
.end = IRQ_DA8XX_GPIO6,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DA8XX_GPIO7,
|
||||
.end = IRQ_DA8XX_GPIO7,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DA8XX_GPIO8,
|
||||
.end = IRQ_DA8XX_GPIO8,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
|
@ -548,12 +548,44 @@ static struct resource dm355_gpio_resources[] = {
|
||||
},
|
||||
{ /* interrupt */
|
||||
.start = IRQ_DM355_GPIOBNK0,
|
||||
.end = IRQ_DM355_GPIOBNK0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM355_GPIOBNK1,
|
||||
.end = IRQ_DM355_GPIOBNK1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM355_GPIOBNK2,
|
||||
.end = IRQ_DM355_GPIOBNK2,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM355_GPIOBNK3,
|
||||
.end = IRQ_DM355_GPIOBNK3,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM355_GPIOBNK4,
|
||||
.end = IRQ_DM355_GPIOBNK4,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM355_GPIOBNK5,
|
||||
.end = IRQ_DM355_GPIOBNK5,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM355_GPIOBNK6,
|
||||
.end = IRQ_DM355_GPIOBNK6,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct davinci_gpio_platform_data dm355_gpio_platform_data = {
|
||||
.no_auto_base = true,
|
||||
.base = 0,
|
||||
.ngpio = 104,
|
||||
};
|
||||
|
||||
|
@ -267,12 +267,49 @@ static struct resource dm365_gpio_resources[] = {
|
||||
},
|
||||
{ /* interrupt */
|
||||
.start = IRQ_DM365_GPIO0,
|
||||
.end = IRQ_DM365_GPIO0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM365_GPIO1,
|
||||
.end = IRQ_DM365_GPIO1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM365_GPIO2,
|
||||
.end = IRQ_DM365_GPIO2,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM365_GPIO3,
|
||||
.end = IRQ_DM365_GPIO3,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM365_GPIO4,
|
||||
.end = IRQ_DM365_GPIO4,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM365_GPIO5,
|
||||
.end = IRQ_DM365_GPIO5,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM365_GPIO6,
|
||||
.end = IRQ_DM365_GPIO6,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM365_GPIO7,
|
||||
.end = IRQ_DM365_GPIO7,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct davinci_gpio_platform_data dm365_gpio_platform_data = {
|
||||
.no_auto_base = true,
|
||||
.base = 0,
|
||||
.ngpio = 104,
|
||||
.gpio_unbanked = 8,
|
||||
};
|
||||
|
@ -492,12 +492,34 @@ static struct resource dm644_gpio_resources[] = {
|
||||
},
|
||||
{ /* interrupt */
|
||||
.start = IRQ_GPIOBNK0,
|
||||
.end = IRQ_GPIOBNK0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_GPIOBNK1,
|
||||
.end = IRQ_GPIOBNK1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_GPIOBNK2,
|
||||
.end = IRQ_GPIOBNK2,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_GPIOBNK3,
|
||||
.end = IRQ_GPIOBNK3,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_GPIOBNK4,
|
||||
.end = IRQ_GPIOBNK4,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct davinci_gpio_platform_data dm644_gpio_platform_data = {
|
||||
.no_auto_base = true,
|
||||
.base = 0,
|
||||
.ngpio = 71,
|
||||
};
|
||||
|
||||
|
@ -442,12 +442,24 @@ static struct resource dm646x_gpio_resources[] = {
|
||||
},
|
||||
{ /* interrupt */
|
||||
.start = IRQ_DM646X_GPIOBNK0,
|
||||
.end = IRQ_DM646X_GPIOBNK0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM646X_GPIOBNK1,
|
||||
.end = IRQ_DM646X_GPIOBNK1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
{
|
||||
.start = IRQ_DM646X_GPIOBNK2,
|
||||
.end = IRQ_DM646X_GPIOBNK2,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct davinci_gpio_platform_data dm646x_gpio_platform_data = {
|
||||
.no_auto_base = true,
|
||||
.base = 0,
|
||||
.ngpio = 43,
|
||||
};
|
||||
|
||||
|
@ -258,7 +258,7 @@ static int davinci_gpio_probe(struct platform_device *pdev)
|
||||
chips->chip.set = davinci_gpio_set;
|
||||
|
||||
chips->chip.ngpio = ngpio;
|
||||
chips->chip.base = -1;
|
||||
chips->chip.base = pdata->no_auto_base ? pdata->base : -1;
|
||||
|
||||
#ifdef CONFIG_OF_GPIO
|
||||
chips->chip.of_gpio_n_cells = 2;
|
||||
|
@ -17,6 +17,8 @@
|
||||
#define __DAVINCI_GPIO_PLATFORM_H
|
||||
|
||||
struct davinci_gpio_platform_data {
|
||||
bool no_auto_base;
|
||||
u32 base;
|
||||
u32 ngpio;
|
||||
u32 gpio_unbanked;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user