Commit f606d38d authored by KV Sujith's avatar KV Sujith Committed by Sekhar Nori

ARM: davinci: da8xx: support gpio platform device

DaVinci GPIO driver now uses platform device model.
Convert DA8XX SoC code to use the new model.

Add da8xx_register_gpio() to create platform device for da8xx
platforms.
Signed-off-by: default avatarKV Sujith <sujithkv@ti.com>
Signed-off-by: default avatarPhilip Avinash <avinashphilip@ti.com>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
[nsekhar@ti.com: simplify commit message]
Signed-off-by: default avatarSekhar Nori <nsekhar@ti.com>
Signed-off-by: default avatarLad, Prabhakar <prabhakar.csengg@gmail.com>
parent 118150f2
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/platform_data/gpio-davinci.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
...@@ -20,7 +21,6 @@ ...@@ -20,7 +21,6 @@
#include <mach/common.h> #include <mach/common.h>
#include <mach/time.h> #include <mach/time.h>
#include <mach/da8xx.h> #include <mach/da8xx.h>
#include <mach/gpio-davinci.h>
#include "clock.h" #include "clock.h"
#include "mux.h" #include "mux.h"
...@@ -1151,6 +1151,16 @@ static struct davinci_id da830_ids[] = { ...@@ -1151,6 +1151,16 @@ static struct davinci_id da830_ids[] = {
}, },
}; };
static struct davinci_gpio_platform_data da830_gpio_platform_data = {
.ngpio = 128,
.intc_irq_num = DA830_N_CP_INTC_IRQ,
};
int __init da830_register_gpio(void)
{
return da8xx_register_gpio(&da830_gpio_platform_data);
}
static struct davinci_timer_instance da830_timer_instance[2] = { static struct davinci_timer_instance da830_timer_instance[2] = {
{ {
.base = DA8XX_TIMER64P0_BASE, .base = DA8XX_TIMER64P0_BASE,
...@@ -1196,10 +1206,6 @@ static struct davinci_soc_info davinci_soc_info_da830 = { ...@@ -1196,10 +1206,6 @@ static struct davinci_soc_info davinci_soc_info_da830 = {
.intc_irq_prios = da830_default_priorities, .intc_irq_prios = da830_default_priorities,
.intc_irq_num = DA830_N_CP_INTC_IRQ, .intc_irq_num = DA830_N_CP_INTC_IRQ,
.timer_info = &da830_timer_info, .timer_info = &da830_timer_info,
.gpio_type = GPIO_TYPE_DAVINCI,
.gpio_base = DA8XX_GPIO_BASE,
.gpio_num = 128,
.gpio_irq = IRQ_DA8XX_GPIO0,
.emac_pdata = &da8xx_emac_pdata, .emac_pdata = &da8xx_emac_pdata,
}; };
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/cpufreq.h> #include <linux/cpufreq.h>
#include <linux/regulator/consumer.h> #include <linux/regulator/consumer.h>
#include <linux/platform_data/gpio-davinci.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
...@@ -28,7 +29,6 @@ ...@@ -28,7 +29,6 @@
#include <mach/da8xx.h> #include <mach/da8xx.h>
#include <mach/cpufreq.h> #include <mach/cpufreq.h>
#include <mach/pm.h> #include <mach/pm.h>
#include <mach/gpio-davinci.h>
#include "clock.h" #include "clock.h"
#include "mux.h" #include "mux.h"
...@@ -1281,6 +1281,16 @@ int __init da850_register_vpif_capture(struct vpif_capture_config ...@@ -1281,6 +1281,16 @@ int __init da850_register_vpif_capture(struct vpif_capture_config
return platform_device_register(&da850_vpif_capture_dev); return platform_device_register(&da850_vpif_capture_dev);
} }
static struct davinci_gpio_platform_data da850_gpio_platform_data = {
.ngpio = 144,
.intc_irq_num = DA850_N_CP_INTC_IRQ,
};
int __init da850_register_gpio(void)
{
return da8xx_register_gpio(&da850_gpio_platform_data);
}
static struct davinci_soc_info davinci_soc_info_da850 = { static struct davinci_soc_info davinci_soc_info_da850 = {
.io_desc = da850_io_desc, .io_desc = da850_io_desc,
.io_desc_num = ARRAY_SIZE(da850_io_desc), .io_desc_num = ARRAY_SIZE(da850_io_desc),
...@@ -1298,10 +1308,6 @@ static struct davinci_soc_info davinci_soc_info_da850 = { ...@@ -1298,10 +1308,6 @@ static struct davinci_soc_info davinci_soc_info_da850 = {
.intc_irq_prios = da850_default_priorities, .intc_irq_prios = da850_default_priorities,
.intc_irq_num = DA850_N_CP_INTC_IRQ, .intc_irq_num = DA850_N_CP_INTC_IRQ,
.timer_info = &da850_timer_info, .timer_info = &da850_timer_info,
.gpio_type = GPIO_TYPE_DAVINCI,
.gpio_base = DA8XX_GPIO_BASE,
.gpio_num = 144,
.gpio_irq = IRQ_DA8XX_GPIO0,
.emac_pdata = &da8xx_emac_pdata, .emac_pdata = &da8xx_emac_pdata,
.sram_dma = DA8XX_SHARED_RAM_BASE, .sram_dma = DA8XX_SHARED_RAM_BASE,
.sram_len = SZ_128K, .sram_len = SZ_128K,
......
...@@ -665,6 +665,32 @@ int __init da8xx_register_lcdc(struct da8xx_lcdc_platform_data *pdata) ...@@ -665,6 +665,32 @@ int __init da8xx_register_lcdc(struct da8xx_lcdc_platform_data *pdata)
return platform_device_register(&da8xx_lcdc_device); return platform_device_register(&da8xx_lcdc_device);
} }
static struct resource da8xx_gpio_resources[] = {
{ /* registers */
.start = DA8XX_GPIO_BASE,
.end = DA8XX_GPIO_BASE + SZ_4K - 1,
.flags = IORESOURCE_MEM,
},
{ /* interrupt */
.start = IRQ_DA8XX_GPIO0,
.end = IRQ_DA8XX_GPIO8,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device da8xx_gpio_device = {
.name = "davinci_gpio",
.id = -1,
.num_resources = ARRAY_SIZE(da8xx_gpio_resources),
.resource = da8xx_gpio_resources,
};
int __init da8xx_register_gpio(void *pdata)
{
da8xx_gpio_device.dev.platform_data = pdata;
return platform_device_register(&da8xx_gpio_device);
}
static struct resource da8xx_mmcsd0_resources[] = { static struct resource da8xx_mmcsd0_resources[] = {
{ /* registers */ { /* registers */
.start = DA8XX_MMCSD0_BASE, .start = DA8XX_MMCSD0_BASE,
......
...@@ -97,6 +97,7 @@ int da8xx_register_mmcsd0(struct davinci_mmc_config *config); ...@@ -97,6 +97,7 @@ int da8xx_register_mmcsd0(struct davinci_mmc_config *config);
int da850_register_mmcsd1(struct davinci_mmc_config *config); int da850_register_mmcsd1(struct davinci_mmc_config *config);
void da8xx_register_mcasp(int id, struct snd_platform_data *pdata); void da8xx_register_mcasp(int id, struct snd_platform_data *pdata);
int da8xx_register_rtc(void); int da8xx_register_rtc(void);
int da8xx_register_gpio(void *pdata);
int da850_register_cpufreq(char *async_clk); int da850_register_cpufreq(char *async_clk);
int da8xx_register_cpuidle(void); int da8xx_register_cpuidle(void);
void __iomem *da8xx_get_mem_ctlr(void); void __iomem *da8xx_get_mem_ctlr(void);
...@@ -110,6 +111,8 @@ int da850_register_vpif_capture ...@@ -110,6 +111,8 @@ int da850_register_vpif_capture
void da8xx_restart(enum reboot_mode mode, const char *cmd); void da8xx_restart(enum reboot_mode mode, const char *cmd);
void da8xx_rproc_reserve_cma(void); void da8xx_rproc_reserve_cma(void);
int da8xx_register_rproc(void); int da8xx_register_rproc(void);
int da850_register_gpio(void);
int da830_register_gpio(void);
extern struct platform_device da8xx_serial_device[]; extern struct platform_device da8xx_serial_device[];
extern struct emac_platform_data da8xx_emac_pdata; extern struct emac_platform_data da8xx_emac_pdata;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment