|
@@ -459,3 +459,108 @@ static const struct sh_dmae_slave_config sh7372_dmae_slaves[] = {
|
|
}, {
|
|
}, {
|
|
.slave_id = SHDMA_SLAVE_FSIA_RX,
|
|
.slave_id = SHDMA_SLAVE_FSIA_RX,
|
|
.addr = 0xfe1f0020,
|
|
.addr = 0xfe1f0020,
|
|
|
|
+ .chcr = CHCR_RX(XMIT_SZ_32BIT),
|
|
|
|
+ .mid_rid = 0xb2,
|
|
|
|
+ }, {
|
|
|
|
+ .slave_id = SHDMA_SLAVE_MMCIF_TX,
|
|
|
|
+ .addr = 0xe6bd0034,
|
|
|
|
+ .chcr = CHCR_TX(XMIT_SZ_32BIT),
|
|
|
|
+ .mid_rid = 0xd1,
|
|
|
|
+ }, {
|
|
|
|
+ .slave_id = SHDMA_SLAVE_MMCIF_RX,
|
|
|
|
+ .addr = 0xe6bd0034,
|
|
|
|
+ .chcr = CHCR_RX(XMIT_SZ_32BIT),
|
|
|
|
+ .mid_rid = 0xd2,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+#define SH7372_CHCLR (0x220 - 0x20)
|
|
|
|
+
|
|
|
|
+static const struct sh_dmae_channel sh7372_dmae_channels[] = {
|
|
|
|
+ {
|
|
|
|
+ .offset = 0,
|
|
|
|
+ .dmars = 0,
|
|
|
|
+ .dmars_bit = 0,
|
|
|
|
+ .chclr_offset = SH7372_CHCLR + 0,
|
|
|
|
+ }, {
|
|
|
|
+ .offset = 0x10,
|
|
|
|
+ .dmars = 0,
|
|
|
|
+ .dmars_bit = 8,
|
|
|
|
+ .chclr_offset = SH7372_CHCLR + 0x10,
|
|
|
|
+ }, {
|
|
|
|
+ .offset = 0x20,
|
|
|
|
+ .dmars = 4,
|
|
|
|
+ .dmars_bit = 0,
|
|
|
|
+ .chclr_offset = SH7372_CHCLR + 0x20,
|
|
|
|
+ }, {
|
|
|
|
+ .offset = 0x30,
|
|
|
|
+ .dmars = 4,
|
|
|
|
+ .dmars_bit = 8,
|
|
|
|
+ .chclr_offset = SH7372_CHCLR + 0x30,
|
|
|
|
+ }, {
|
|
|
|
+ .offset = 0x50,
|
|
|
|
+ .dmars = 8,
|
|
|
|
+ .dmars_bit = 0,
|
|
|
|
+ .chclr_offset = SH7372_CHCLR + 0x50,
|
|
|
|
+ }, {
|
|
|
|
+ .offset = 0x60,
|
|
|
|
+ .dmars = 8,
|
|
|
|
+ .dmars_bit = 8,
|
|
|
|
+ .chclr_offset = SH7372_CHCLR + 0x60,
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct sh_dmae_pdata dma_platform_data = {
|
|
|
|
+ .slave = sh7372_dmae_slaves,
|
|
|
|
+ .slave_num = ARRAY_SIZE(sh7372_dmae_slaves),
|
|
|
|
+ .channel = sh7372_dmae_channels,
|
|
|
|
+ .channel_num = ARRAY_SIZE(sh7372_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 sh7372_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 sh7372_dmae1_resources[] = {
|
|
|
|
+ {
|
|
|
|
+ /* Channel registers and DMAOR */
|
|
|
|
+ .start = 0xfe018020,
|
|
|
|
+ .end = 0xfe01828f,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ /* DMARSx */
|
|
|
|
+ .start = 0xfe019000,
|