|  | @@ -257,3 +257,154 @@ static struct platform_device cmt10_device = {
 | 
	
		
			
				|  |  |  	.id		= 10,
 | 
	
		
			
				|  |  |  	.dev = {
 | 
	
		
			
				|  |  |  		.platform_data	= &cmt10_platform_data,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	.resource	= cmt10_resources,
 | 
	
		
			
				|  |  | +	.num_resources	= ARRAY_SIZE(cmt10_resources),
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct platform_device *r8a7740_early_devices[] __initdata = {
 | 
	
		
			
				|  |  | +	&scif0_device,
 | 
	
		
			
				|  |  | +	&scif1_device,
 | 
	
		
			
				|  |  | +	&scif2_device,
 | 
	
		
			
				|  |  | +	&scif3_device,
 | 
	
		
			
				|  |  | +	&scif4_device,
 | 
	
		
			
				|  |  | +	&scif5_device,
 | 
	
		
			
				|  |  | +	&scif6_device,
 | 
	
		
			
				|  |  | +	&scif7_device,
 | 
	
		
			
				|  |  | +	&scifb_device,
 | 
	
		
			
				|  |  | +	&cmt10_device,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* DMA */
 | 
	
		
			
				|  |  | +static const struct sh_dmae_slave_config r8a7740_dmae_slaves[] = {
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		.slave_id	= SHDMA_SLAVE_SDHI0_TX,
 | 
	
		
			
				|  |  | +		.addr		= 0xe6850030,
 | 
	
		
			
				|  |  | +		.chcr		= CHCR_TX(XMIT_SZ_16BIT),
 | 
	
		
			
				|  |  | +		.mid_rid	= 0xc1,
 | 
	
		
			
				|  |  | +	}, {
 | 
	
		
			
				|  |  | +		.slave_id	= SHDMA_SLAVE_SDHI0_RX,
 | 
	
		
			
				|  |  | +		.addr		= 0xe6850030,
 | 
	
		
			
				|  |  | +		.chcr		= CHCR_RX(XMIT_SZ_16BIT),
 | 
	
		
			
				|  |  | +		.mid_rid	= 0xc2,
 | 
	
		
			
				|  |  | +	}, {
 | 
	
		
			
				|  |  | +		.slave_id	= SHDMA_SLAVE_SDHI1_TX,
 | 
	
		
			
				|  |  | +		.addr		= 0xe6860030,
 | 
	
		
			
				|  |  | +		.chcr		= CHCR_TX(XMIT_SZ_16BIT),
 | 
	
		
			
				|  |  | +		.mid_rid	= 0xc9,
 | 
	
		
			
				|  |  | +	}, {
 | 
	
		
			
				|  |  | +		.slave_id	= SHDMA_SLAVE_SDHI1_RX,
 | 
	
		
			
				|  |  | +		.addr		= 0xe6860030,
 | 
	
		
			
				|  |  | +		.chcr		= CHCR_RX(XMIT_SZ_16BIT),
 | 
	
		
			
				|  |  | +		.mid_rid	= 0xca,
 | 
	
		
			
				|  |  | +	}, {
 | 
	
		
			
				|  |  | +		.slave_id	= SHDMA_SLAVE_SDHI2_TX,
 | 
	
		
			
				|  |  | +		.addr		= 0xe6870030,
 | 
	
		
			
				|  |  | +		.chcr		= CHCR_TX(XMIT_SZ_16BIT),
 | 
	
		
			
				|  |  | +		.mid_rid	= 0xcd,
 | 
	
		
			
				|  |  | +	}, {
 | 
	
		
			
				|  |  | +		.slave_id	= SHDMA_SLAVE_SDHI2_RX,
 | 
	
		
			
				|  |  | +		.addr		= 0xe6870030,
 | 
	
		
			
				|  |  | +		.chcr		= CHCR_RX(XMIT_SZ_16BIT),
 | 
	
		
			
				|  |  | +		.mid_rid	= 0xce,
 | 
	
		
			
				|  |  | +	}, {
 | 
	
		
			
				|  |  | +		.slave_id	= SHDMA_SLAVE_FSIA_TX,
 | 
	
		
			
				|  |  | +		.addr		= 0xfe1f0024,
 | 
	
		
			
				|  |  | +		.chcr		= CHCR_TX(XMIT_SZ_32BIT),
 | 
	
		
			
				|  |  | +		.mid_rid	= 0xb1,
 | 
	
		
			
				|  |  | +	}, {
 | 
	
		
			
				|  |  | +		.slave_id	= SHDMA_SLAVE_FSIA_RX,
 | 
	
		
			
				|  |  | +		.addr		= 0xfe1f0020,
 | 
	
		
			
				|  |  | +		.chcr		= CHCR_RX(XMIT_SZ_32BIT),
 | 
	
		
			
				|  |  | +		.mid_rid	= 0xb2,
 | 
	
		
			
				|  |  | +	}, {
 | 
	
		
			
				|  |  | +		.slave_id	= SHDMA_SLAVE_FSIB_TX,
 | 
	
		
			
				|  |  | +		.addr		= 0xfe1f0064,
 | 
	
		
			
				|  |  | +		.chcr		= CHCR_TX(XMIT_SZ_32BIT),
 | 
	
		
			
				|  |  | +		.mid_rid	= 0xb5,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define DMA_CHANNEL(a, b, c)			\
 | 
	
		
			
				|  |  | +{						\
 | 
	
		
			
				|  |  | +	.offset		= a,			\
 | 
	
		
			
				|  |  | +	.dmars		= b,			\
 | 
	
		
			
				|  |  | +	.dmars_bit	= c,			\
 | 
	
		
			
				|  |  | +	.chclr_offset	= (0x220 - 0x20) + a	\
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static const struct sh_dmae_channel r8a7740_dmae_channels[] = {
 | 
	
		
			
				|  |  | +	DMA_CHANNEL(0x00, 0, 0),
 | 
	
		
			
				|  |  | +	DMA_CHANNEL(0x10, 0, 8),
 | 
	
		
			
				|  |  | +	DMA_CHANNEL(0x20, 4, 0),
 | 
	
		
			
				|  |  | +	DMA_CHANNEL(0x30, 4, 8),
 | 
	
		
			
				|  |  | +	DMA_CHANNEL(0x50, 8, 0),
 | 
	
		
			
				|  |  | +	DMA_CHANNEL(0x60, 8, 8),
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct sh_dmae_pdata dma_platform_data = {
 | 
	
		
			
				|  |  | +	.slave		= r8a7740_dmae_slaves,
 | 
	
		
			
				|  |  | +	.slave_num	= ARRAY_SIZE(r8a7740_dmae_slaves),
 | 
	
		
			
				|  |  | +	.channel	= r8a7740_dmae_channels,
 | 
	
		
			
				|  |  | +	.channel_num	= ARRAY_SIZE(r8a7740_dmae_channels),
 | 
	
		
			
				|  |  | +	.ts_low_shift	= TS_LOW_SHIFT,
 | 
	
		
			
				|  |  | +	.ts_low_mask	= TS_LOW_BIT << TS_LOW_SHIFT,
 | 
	
		
			
				|  |  | +	.ts_high_shift	= TS_HI_SHIFT,
 | 
	
		
			
				|  |  | +	.ts_high_mask	= TS_HI_BIT << TS_HI_SHIFT,
 | 
	
		
			
				|  |  | +	.ts_shift	= dma_ts_shift,
 | 
	
		
			
				|  |  | +	.ts_shift_num	= ARRAY_SIZE(dma_ts_shift),
 | 
	
		
			
				|  |  | +	.dmaor_init	= DMAOR_DME,
 | 
	
		
			
				|  |  | +	.chclr_present	= 1,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* Resource order important! */
 | 
	
		
			
				|  |  | +static struct resource r8a7740_dmae0_resources[] = {
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		/* Channel registers and DMAOR */
 | 
	
		
			
				|  |  | +		.start	= 0xfe008020,
 | 
	
		
			
				|  |  | +		.end	= 0xfe00828f,
 | 
	
		
			
				|  |  | +		.flags	= IORESOURCE_MEM,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		/* DMARSx */
 | 
	
		
			
				|  |  | +		.start	= 0xfe009000,
 | 
	
		
			
				|  |  | +		.end	= 0xfe00900b,
 | 
	
		
			
				|  |  | +		.flags	= IORESOURCE_MEM,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		.name	= "error_irq",
 | 
	
		
			
				|  |  | +		.start	= evt2irq(0x20c0),
 | 
	
		
			
				|  |  | +		.end	= evt2irq(0x20c0),
 | 
	
		
			
				|  |  | +		.flags	= IORESOURCE_IRQ,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		/* IRQ for channels 0-5 */
 | 
	
		
			
				|  |  | +		.start	= evt2irq(0x2000),
 | 
	
		
			
				|  |  | +		.end	= evt2irq(0x20a0),
 | 
	
		
			
				|  |  | +		.flags	= IORESOURCE_IRQ,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* Resource order important! */
 | 
	
		
			
				|  |  | +static struct resource r8a7740_dmae1_resources[] = {
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		/* Channel registers and DMAOR */
 | 
	
		
			
				|  |  | +		.start	= 0xfe018020,
 | 
	
		
			
				|  |  | +		.end	= 0xfe01828f,
 | 
	
		
			
				|  |  | +		.flags	= IORESOURCE_MEM,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		/* DMARSx */
 | 
	
		
			
				|  |  | +		.start	= 0xfe019000,
 | 
	
		
			
				|  |  | +		.end	= 0xfe01900b,
 | 
	
		
			
				|  |  | +		.flags	= IORESOURCE_MEM,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		.name	= "error_irq",
 | 
	
		
			
				|  |  | +		.start	= evt2irq(0x21c0),
 | 
	
		
			
				|  |  | +		.end	= evt2irq(0x21c0),
 | 
	
		
			
				|  |  | +		.flags	= IORESOURCE_IRQ,
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		/* IRQ for channels 0-5 */
 | 
	
		
			
				|  |  | +		.start	= evt2irq(0x2100),
 |