diff options
Diffstat (limited to 'arch/sh/kernel/cpu/sh3/setup-sh770x.c')
| -rw-r--r-- | arch/sh/kernel/cpu/sh3/setup-sh770x.c | 120 | 
1 files changed, 41 insertions, 79 deletions
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh770x.c b/arch/sh/kernel/cpu/sh3/setup-sh770x.c index 3cf8c8ef7b3..9139d14b9c5 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh770x.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh770x.c @@ -19,6 +19,8 @@  #include <linux/serial.h>  #include <linux/serial_sci.h>  #include <linux/sh_timer.h> +#include <linux/sh_intc.h> +#include <cpu/serial.h>  enum {  	UNUSED = 0, @@ -94,7 +96,7 @@ static struct resource rtc_resources[] = {  		.flags  = IORESOURCE_IO,  	},  	[1] =	{ -		.start	= 20, +		.start	= evt2irq(0x480),  		.flags  = IORESOURCE_IRQ,  	},  }; @@ -107,15 +109,24 @@ static struct platform_device rtc_device = {  };  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xfffffe80, +	.port_reg	= 0xa4000136,  	.flags		= UPF_BOOT_AUTOCONF, +	.scscr		= SCSCR_TE | SCSCR_RE,  	.type		= PORT_SCI, -	.irqs		= { 23, 23, 23, 0 }, +	.ops		= &sh770x_sci_port_ops, +	.regshift	= 1, +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xfffffe80, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x4e0)),  };  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	}, @@ -124,15 +135,23 @@ static struct platform_device scif0_device = {      defined(CONFIG_CPU_SUBTYPE_SH7707) || \      defined(CONFIG_CPU_SUBTYPE_SH7709)  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xa4000150,  	.flags		= UPF_BOOT_AUTOCONF, +	.scscr		= SCSCR_TE | SCSCR_RE,  	.type		= PORT_SCIF, -	.irqs		= { 56, 56, 56, 56 }, +	.ops		= &sh770x_sci_port_ops, +	.regtype	= SCIx_SH3_SCIF_REGTYPE, +}; + +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xa4000150, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x900)),  };  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	}, @@ -141,15 +160,24 @@ static struct platform_device scif1_device = {  #if defined(CONFIG_CPU_SUBTYPE_SH7707) || \      defined(CONFIG_CPU_SUBTYPE_SH7709)  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xa4000140, +	.port_reg	= SCIx_NOT_SUPPORTED,  	.flags		= UPF_BOOT_AUTOCONF, +	.scscr		= SCSCR_TE | SCSCR_RE,  	.type		= PORT_IRDA, -	.irqs		= { 52, 52, 52, 52 }, +	.ops		= &sh770x_sci_port_ops, +	.regshift	= 1, +}; + +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xa4000140, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x880)),  };  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	}, @@ -157,25 +185,18 @@ static struct platform_device scif2_device = {  #endif  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x02, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xfffffe94, -		.end	= 0xfffffe9f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 16, -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xfffffe90, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu-sh3",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -184,61 +205,6 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0xe, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xfffffea0, -		.end	= 0xfffffeab, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 17, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id		= 1, -	.dev = { -		.platform_data	= &tmu1_platform_data, -	}, -	.resource	= tmu1_resources, -	.num_resources	= ARRAY_SIZE(tmu1_resources), -}; - -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1a, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xfffffeac, -		.end	= 0xfffffebb, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 18, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; -  static struct platform_device *sh770x_devices[] __initdata = {  	&scif0_device,  #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ @@ -251,8 +217,6 @@ static struct platform_device *sh770x_devices[] __initdata = {  	&scif2_device,  #endif  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  	&rtc_device,  }; @@ -275,8 +239,6 @@ static struct platform_device *sh770x_early_devices[] __initdata = {  	&scif2_device,  #endif  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  void __init plat_early_device_setup(void)  | 
