diff options
Diffstat (limited to 'arch/arm/mach-davinci/dm644x.c')
| -rw-r--r-- | arch/arm/mach-davinci/dm644x.c | 54 | 
1 files changed, 33 insertions, 21 deletions
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c index 4f74682293d..dc52657909c 100644 --- a/arch/arm/mach-davinci/dm644x.c +++ b/arch/arm/mach-davinci/dm644x.c @@ -13,6 +13,7 @@  #include <linux/serial_8250.h>  #include <linux/platform_device.h>  #include <linux/platform_data/edma.h> +#include <linux/platform_data/gpio-davinci.h>  #include <asm/mach/map.h> @@ -23,7 +24,6 @@  #include <mach/time.h>  #include <mach/serial.h>  #include <mach/common.h> -#include <mach/gpio-davinci.h>  #include "davinci.h"  #include "clock.h" @@ -322,7 +322,7 @@ static struct clk_lookup dm644x_clks[] = {  	CLK(NULL, "pwm2", &pwm2_clk),  	CLK(NULL, "timer0", &timer0_clk),  	CLK(NULL, "timer1", &timer1_clk), -	CLK("watchdog", NULL, &timer2_clk), +	CLK("davinci-wdt", NULL, &timer2_clk),  	CLK(NULL, NULL, NULL),  }; @@ -499,14 +499,6 @@ static u8 dm644x_default_priorities[DAVINCI_N_AINTC_IRQ] = {  /*----------------------------------------------------------------------*/  static s8 -queue_tc_mapping[][2] = { -	/* {event queue no, TC no} */ -	{0, 0}, -	{1, 1}, -	{-1, -1}, -}; - -static s8  queue_priority_mapping[][2] = {  	/* {event queue no, Priority} */  	{0, 3}, @@ -515,12 +507,6 @@ queue_priority_mapping[][2] = {  };  static struct edma_soc_info edma_cc0_info = { -	.n_channel		= 64, -	.n_region		= 4, -	.n_slot			= 128, -	.n_tc			= 2, -	.n_cc			= 1, -	.queue_tc_mapping	= queue_tc_mapping,  	.queue_priority_mapping	= queue_priority_mapping,  	.default_queue		= EVENTQ_1,  }; @@ -572,6 +558,7 @@ static struct platform_device dm644x_edma_device = {  /* DM6446 EVM uses ASP0; line-out is a pair of RCA jacks */  static struct resource dm644x_asp_resources[] = {  	{ +		.name	= "mpu",  		.start	= DAVINCI_ASP0_BASE,  		.end	= DAVINCI_ASP0_BASE + SZ_8K - 1,  		.flags	= IORESOURCE_MEM, @@ -771,6 +758,29 @@ static struct platform_device dm644x_vpbe_dev = {  	},  }; +static struct resource dm644_gpio_resources[] = { +	{	/* registers */ +		.start	= DAVINCI_GPIO_BASE, +		.end	= DAVINCI_GPIO_BASE + SZ_4K - 1, +		.flags	= IORESOURCE_MEM, +	}, +	{	/* interrupt */ +		.start	= IRQ_GPIOBNK0, +		.end	= IRQ_GPIOBNK4, +		.flags	= IORESOURCE_IRQ, +	}, +}; + +static struct davinci_gpio_platform_data dm644_gpio_platform_data = { +	.ngpio		= 71, +}; + +int __init dm644x_gpio_register(void) +{ +	return davinci_gpio_register(dm644_gpio_resources, +				     ARRAY_SIZE(dm644_gpio_resources), +				     &dm644_gpio_platform_data); +}  /*----------------------------------------------------------------------*/  static struct map_desc dm644x_io_desc[] = { @@ -897,10 +907,6 @@ static struct davinci_soc_info davinci_soc_info_dm644x = {  	.intc_irq_prios 	= dm644x_default_priorities,  	.intc_irq_num		= DAVINCI_N_AINTC_IRQ,  	.timer_info		= &dm644x_timer_info, -	.gpio_type		= GPIO_TYPE_DAVINCI, -	.gpio_base		= DAVINCI_GPIO_BASE, -	.gpio_num		= 71, -	.gpio_irq		= IRQ_GPIOBNK0,  	.emac_pdata		= &dm644x_emac_pdata,  	.sram_dma		= 0x00008000,  	.sram_len		= SZ_16K, @@ -944,6 +950,8 @@ int __init dm644x_init_video(struct vpfe_config *vpfe_cfg,  static int __init dm644x_init_devices(void)  { +	int ret = 0; +  	if (!cpu_is_davinci_dm644x())  		return 0; @@ -952,6 +960,10 @@ static int __init dm644x_init_devices(void)  	platform_device_register(&dm644x_mdio_device);  	platform_device_register(&dm644x_emac_device); -	return 0; +	ret = davinci_init_wdt(); +	if (ret) +		pr_warn("%s: watchdog init failed: %d\n", __func__, ret); + +	return ret;  }  postcore_initcall(dm644x_init_devices);  | 
