diff options
Diffstat (limited to 'arch/sh/kernel/cpu/sh4a/setup-sh7722.c')
| -rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7722.c | 210 | 
1 files changed, 62 insertions, 148 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c index d551ed8dea9..57f83a92a50 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c @@ -12,7 +12,9 @@  #include <linux/platform_device.h>  #include <linux/serial.h>  #include <linux/serial_sci.h> +#include <linux/sh_dma.h>  #include <linux/sh_timer.h> +#include <linux/sh_intc.h>  #include <linux/uio_driver.h>  #include <linux/usb/m66592.h> @@ -22,6 +24,7 @@  #include <cpu/dma-register.h>  #include <cpu/sh7722.h> +#include <cpu/serial.h>  static const struct sh_dmae_slave_config sh7722_dmae_slaves[] = {  	{ @@ -145,21 +148,21 @@ static struct resource sh7722_dmae_resources[] = {  		.flags	= IORESOURCE_MEM,  	},  	{ -		/* DMA error IRQ */ -		.start	= 78, -		.end	= 78, +		.name	= "error_irq", +		.start	= evt2irq(0xbc0), +		.end	= evt2irq(0xbc0),  		.flags	= IORESOURCE_IRQ,  	},  	{  		/* IRQ for channels 0-3 */ -		.start	= 48, -		.end	= 51, +		.start	= evt2irq(0x800), +		.end	= evt2irq(0x860),  		.flags	= IORESOURCE_IRQ,  	},  	{  		/* IRQ for channels 4-5 */ -		.start	= 76, -		.end	= 77, +		.start	= evt2irq(0xb80), +		.end	= evt2irq(0xba0),  		.flags	= IORESOURCE_IRQ,  	},  }; @@ -172,52 +175,73 @@ struct platform_device dma_device = {  	.dev		= {  		.platform_data	= &dma_platform_data,  	}, -	.archdata = { -		.hwblk_id = HWBLK_DMAC, -	},  };  /* Serial */  static struct plat_sci_port scif0_platform_data = { -	.mapbase        = 0xffe00000,  	.flags          = UPF_BOOT_AUTOCONF, +	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE,  	.type           = PORT_SCIF, -	.irqs           = { 80, 80, 80, 80 }, +	.ops		= &sh7722_sci_port_ops, +	.regtype	= SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffe00000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc00)),  };  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,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase        = 0xffe10000,  	.flags          = UPF_BOOT_AUTOCONF, +	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE,  	.type           = PORT_SCIF, -	.irqs           = { 81, 81, 81, 81 }, +	.ops		= &sh7722_sci_port_ops, +	.regtype	= SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, +}; + +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xffe10000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc20)),  };  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,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase        = 0xffe20000,  	.flags          = UPF_BOOT_AUTOCONF, +	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE,  	.type           = PORT_SCIF, -	.irqs           = { 82, 82, 82, 82 }, +	.ops		= &sh7722_sci_port_ops, +	.regtype	= SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, +}; + +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xffe20000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc40)),  };  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,  	}, @@ -231,17 +255,17 @@ static struct resource rtc_resources[] = {  	},  	[1] = {  		/* Period IRQ */ -		.start	= 45, +		.start	= evt2irq(0x7a0),  		.flags	= IORESOURCE_IRQ,  	},  	[2] = {  		/* Carry IRQ */ -		.start	= 46, +		.start	= evt2irq(0x7c0),  		.flags	= IORESOURCE_IRQ,  	},  	[3] = {  		/* Alarm IRQ */ -		.start	= 44, +		.start	= evt2irq(0x780),  		.flags	= IORESOURCE_IRQ,  	},  }; @@ -251,9 +275,6 @@ static struct platform_device rtc_device = {  	.id		= -1,  	.num_resources	= ARRAY_SIZE(rtc_resources),  	.resource	= rtc_resources, -	.archdata = { -		.hwblk_id = HWBLK_RTC, -	},  };  static struct m66592_platdata usbf_platdata = { @@ -268,8 +289,8 @@ static struct resource usbf_resources[] = {  		.flags	= IORESOURCE_MEM,  	},  	[1] = { -		.start	= 65, -		.end	= 65, +		.start	= evt2irq(0xa20), +		.end	= evt2irq(0xa20),  		.flags	= IORESOURCE_IRQ,  	},  }; @@ -284,9 +305,6 @@ static struct platform_device usbf_device = {  	},  	.num_resources	= ARRAY_SIZE(usbf_resources),  	.resource	= usbf_resources, -	.archdata = { -		.hwblk_id = HWBLK_USBF, -	},  };  static struct resource iic_resources[] = { @@ -297,8 +315,8 @@ static struct resource iic_resources[] = {  		.flags  = IORESOURCE_MEM,  	},  	[1] = { -		.start  = 96, -		.end    = 99, +		.start  = evt2irq(0xe00), +		.end    = evt2irq(0xe60),  		.flags  = IORESOURCE_IRQ,         },  }; @@ -308,15 +326,12 @@ static struct platform_device iic_device = {  	.id             = 0, /* "i2c0" clock */  	.num_resources  = ARRAY_SIZE(iic_resources),  	.resource       = iic_resources, -	.archdata = { -		.hwblk_id = HWBLK_IIC, -	},  };  static struct uio_info vpu_platform_data = {  	.name = "VPU4",  	.version = "0", -	.irq = 60, +	.irq = evt2irq(0x980),  };  static struct resource vpu_resources[] = { @@ -339,15 +354,12 @@ static struct platform_device vpu_device = {  	},  	.resource	= vpu_resources,  	.num_resources	= ARRAY_SIZE(vpu_resources), -	.archdata = { -		.hwblk_id = HWBLK_VPU, -	},  };  static struct uio_info veu_platform_data = {  	.name = "VEU",  	.version = "0", -	.irq = 54, +	.irq = evt2irq(0x8c0),  };  static struct resource veu_resources[] = { @@ -370,15 +382,12 @@ static struct platform_device veu_device = {  	},  	.resource	= veu_resources,  	.num_resources	= ARRAY_SIZE(veu_resources), -	.archdata = { -		.hwblk_id = HWBLK_VEU, -	},  };  static struct uio_info jpu_platform_data = {  	.name = "JPU",  	.version = "0", -	.irq = 27, +	.irq = evt2irq(0x560),  };  static struct resource jpu_resources[] = { @@ -401,137 +410,49 @@ static struct platform_device jpu_device = {  	},  	.resource	= jpu_resources,  	.num_resources	= ARRAY_SIZE(jpu_resources), -	.archdata = { -		.hwblk_id = HWBLK_JPU, -	},  };  static struct sh_timer_config cmt_platform_data = { -	.channel_offset = 0x60, -	.timer_bit = 5, -	.clockevent_rating = 125, -	.clocksource_rating = 125, +	.channels_mask = 0x20,  };  static struct resource cmt_resources[] = { -	[0] = { -		.start	= 0x044a0060, -		.end	= 0x044a006b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 104, -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0x044a0000, 0x70), +	DEFINE_RES_IRQ(evt2irq(0xf00)),  };  static struct platform_device cmt_device = { -	.name		= "sh_cmt", +	.name		= "sh-cmt-32",  	.id		= 0,  	.dev = {  		.platform_data	= &cmt_platform_data,  	},  	.resource	= cmt_resources,  	.num_resources	= ARRAY_SIZE(cmt_resources), -	.archdata = { -		.hwblk_id = HWBLK_CMT, -	},  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 16, -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 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",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data,  	},  	.resource	= tmu0_resources,  	.num_resources	= ARRAY_SIZE(tmu0_resources), -	.archdata = { -		.hwblk_id = HWBLK_TMU, -	}, -}; - -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.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), -	.archdata = { -		.hwblk_id = HWBLK_TMU, -	}, -}; - -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002b, -		.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), -	.archdata = { -		.hwblk_id = HWBLK_TMU, -	},  };  static struct siu_platform siu_platform_data = { -	.dma_dev	= &dma_device.dev,  	.dma_slave_tx_a	= SHDMA_SLAVE_SIUA_TX,  	.dma_slave_rx_a	= SHDMA_SLAVE_SIUA_RX,  	.dma_slave_tx_b	= SHDMA_SLAVE_SIUB_TX, @@ -545,7 +466,7 @@ static struct resource siu_resources[] = {  		.flags	= IORESOURCE_MEM,  	},  	[1] = { -		.start	= 108, +		.start	= evt2irq(0xf80),  		.flags	= IORESOURCE_IRQ,  	},  }; @@ -558,9 +479,6 @@ static struct platform_device siu_device = {  	},  	.resource	= siu_resources,  	.num_resources	= ARRAY_SIZE(siu_resources), -	.archdata = { -		.hwblk_id = HWBLK_SIU, -	},  };  static struct platform_device *sh7722_devices[] __initdata = { @@ -569,8 +487,6 @@ static struct platform_device *sh7722_devices[] __initdata = {  	&scif2_device,  	&cmt_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  	&rtc_device,  	&usbf_device,  	&iic_device, @@ -598,8 +514,6 @@ static struct platform_device *sh7722_early_devices[] __initdata = {  	&scif2_device,  	&cmt_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  void __init plat_early_device_setup(void) @@ -699,7 +613,7 @@ static struct intc_mask_reg mask_registers[] __initdata = {  	  { I2C_DTEI, I2C_WAITI, I2C_TACKI, I2C_ALI,  	    FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLENDI, FLCTL_FLSTEI } },  	{ 0xa40800a0, 0xa40800e0, 8, /* IMR8 / IMCR8 */ -	  { DISABLED, DISABLED, ENABLED, ENABLED, 0, 0, TWODG, SIU } }, +	  { DISABLED, ENABLED, ENABLED, ENABLED, 0, 0, TWODG, SIU } },  	{ 0xa40800a4, 0xa40800e4, 8, /* IMR9 / IMCR9 */  	  { 0, 0, 0, CMT, 0, USB_USBI1, USB_USBI0, } },  	{ 0xa40800a8, 0xa40800e8, 8, /* IMR10 / IMCR10 */  | 
