|
@@ -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),
|