/* * Renesas SuperH DMA Engine support for r8a73a4 (APE6) SoCs * * Copyright (C) 2013 Renesas Electronics, Inc. * * This is free software; you can redistribute it and/or modify it under the * terms of version 2 the GNU General Public License as published by the Free * Software Foundation. */ #include <linux/sh_dma.h> #include "shdma-arm.h" static const unsigned int dma_ts_shift[] = SH_DMAE_TS_SHIFT; static const struct sh_dmae_slave_config dma_slaves[] = { { .chcr = CHCR_TX(XMIT_SZ_32BIT), .mid_rid = 0xd1, /* MMC0 Tx */ }, { .chcr = CHCR_RX(XMIT_SZ_32BIT), .mid_rid = 0xd2, /* MMC0 Rx */ }, { .chcr = CHCR_TX(XMIT_SZ_32BIT), .mid_rid = 0xe1, /* MMC1 Tx */ }, { .chcr = CHCR_RX(XMIT_SZ_32BIT), .mid_rid = 0xe2, /* MMC1 Rx */ }, }; #define DMAE_CHANNEL(a, b) \ { \ .offset = (a) - 0x20, \ .dmars = (a) - 0x20 + 0x40, \ .chclr_bit = (b), \ .chclr_offset = 0x80 - 0x20, \ } static const struct sh_dmae_channel dma_channels[] = { DMAE_CHANNEL(0x8000, 0), DMAE_CHANNEL(0x8080, 1), DMAE_CHANNEL(0x8100, 2), DMAE_CHANNEL(0x8180, 3), DMAE_CHANNEL(0x8200, 4), DMAE_CHANNEL(0x8280, 5), DMAE_CHANNEL(0x8300, 6), DMAE_CHANNEL(0x8380, 7), DMAE_CHANNEL(0x8400, 8), DMAE_CHANNEL(0x8480, 9), DMAE_CHANNEL(0x8500, 10), DMAE_CHANNEL(0x8580, 11), DMAE_CHANNEL(0x8600, 12), DMAE_CHANNEL(0x8680, 13), DMAE_CHANNEL(0x8700, 14), DMAE_CHANNEL(0x8780, 15), DMAE_CHANNEL(0x8800, 16), DMAE_CHANNEL(0x8880, 17), DMAE_CHANNEL(0x8900, 18), DMAE_CHANNEL(0x8980, 19), }; const struct sh_dmae_pdata r8a73a4_dma_pdata = { .slave = dma_slaves, .slave_num = ARRAY_SIZE(dma_slaves), .channel = dma_channels, .channel_num = ARRAY_SIZE(dma_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, .chclr_bitwise = 1, }; |