[PATCH v3 2/5] dmaengine: sun6i: Add 4 as a possible burst value for the H3
Jean-Francois Moine
moinejf at free.fr
Fri Mar 18 07:12:26 PDT 2016
The H3 accepts 4 as a burst value.
Signed-off-by: Jean-Francois Moine <moinejf at free.fr>
---
drivers/dma/sun6i-dma.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c
index ce1e4d6..9378fda 100644
--- a/drivers/dma/sun6i-dma.c
+++ b/drivers/dma/sun6i-dma.c
@@ -101,6 +101,7 @@ struct sun6i_dma_config {
u32 nr_max_channels;
u32 nr_max_requests;
u32 nr_max_vchans;
+ u32 burst_4;
};
/*
@@ -238,6 +239,8 @@ static inline s8 convert_burst(u32 maxburst)
switch (maxburst) {
case 1:
return 0;
+ case 4:
+ return 1;
case 8:
return 2;
default:
@@ -470,6 +473,10 @@ static int set_config(struct sun6i_dma_dev *sdev,
{
s8 src_width, dst_width, src_burst, dst_burst;
+ if (!sdev->cfg->burst_4 &&
+ (sconfig->src_maxburst == 4 || sconfig->dst_maxburst == 4))
+ return -EINVAL;
+
if (direction == DMA_MEM_TO_DEV) {
src_burst = convert_burst(sconfig->src_maxburst ?
sconfig->src_maxburst : 8);
@@ -900,12 +907,14 @@ static struct sun6i_dma_config sun8i_a23_dma_cfg = {
/*
* The H3 has 12 physical channels, a maximum DRQ port id of 27,
* and a total of 34 usable source and destination endpoints.
+ * Setting the maxburst to '4' is possible.
*/
static struct sun6i_dma_config sun8i_h3_dma_cfg = {
.nr_max_channels = 12,
.nr_max_requests = 27,
.nr_max_vchans = 34,
+ .burst_4 = 1,
};
static const struct of_device_id sun6i_dma_match[] = {
--
2.7.4
More information about the linux-arm-kernel
mailing list