add new maps for dma and i/o

This commit is contained in:
Ralph Metzler
2016-04-20 16:27:56 +02:00
parent a4062a1582
commit de16096894
4 changed files with 149 additions and 24 deletions

View File

@@ -89,7 +89,7 @@ static void ddb_set_dma_table(struct ddb *dev, struct ddb_dma *dma)
ddbwritel(dev, mem & 0xffffffff, base + i * 8);
ddbwritel(dev, mem >> 32, base + i * 8 + 4);
}
dma->bufreg = (dma->div << 16) |
dma->bufval = (dma->div << 16) |
((dma->num & 0x1f) << 11) |
((dma->size >> 7) & 0x7ff);
}
@@ -116,7 +116,7 @@ static void ddb_redirect_dma(struct ddb *dev,
u32 i, base;
u64 mem;
sdma->bufreg = ddma->bufreg;
sdma->bufval = ddma->bufval;
base = DMA_BASE_ADDRESS_TABLE + sdma->nr * 0x100;
for (i = 0; i < ddma->num; i++) {
mem = ddma->pbuf[i];
@@ -351,7 +351,7 @@ static void ddb_output_start(struct ddb_output *output)
ddbwritel(dev, con2, TS_OUTPUT_CONTROL2(output->nr));
}
if (output->dma) {
ddbwritel(dev, output->dma->bufreg,
ddbwritel(dev, output->dma->bufval,
DMA_BUFFER_SIZE(output->dma->nr));
ddbwritel(dev, 0, DMA_BUFFER_ACK(output->dma->nr));
ddbwritel(dev, 1, DMA_BASE_READ);
@@ -421,13 +421,13 @@ static void ddb_input_start(struct ddb_input *input)
input->dma->stat = 0;
ddbwritel(dev, 0, DMA_BUFFER_CONTROL(input->dma->nr));
}
ddbwritel(dev, 0, tag | TS_INPUT_CONTROL2(input->nr));
//ddbwritel(dev, 0, tag | TS_INPUT_CONTROL2(input->nr));
ddbwritel(dev, 0, tag | TS_INPUT_CONTROL(input->nr));
ddbwritel(dev, 2, tag | TS_INPUT_CONTROL(input->nr));
ddbwritel(dev, 0, tag | TS_INPUT_CONTROL(input->nr));
if (input->dma) {
ddbwritel(dev, input->dma->bufreg,
ddbwritel(dev, input->dma->bufval,
DMA_BUFFER_SIZE(input->dma->nr));
ddbwritel(dev, 0, DMA_BUFFER_ACK(input->dma->nr));
ddbwritel(dev, 1, DMA_BASE_WRITE);