mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 06:33:07 +00:00
dmaengine: ti: k3-udma: Add support for BCDMA CSI RX
BCDMA CSI RX present on AM62Ax SoC is a dedicated DMA for servicing Camera Serial Interface (CSI) IP. Add support for the same. Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com> Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com> Link: https://lore.kernel.org/r/20221213164304.1126945-6-vigneshr@ti.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
c1475ad338
commit
3f58e10615
1 changed files with 32 additions and 5 deletions
|
@ -135,6 +135,7 @@ struct udma_match_data {
|
||||||
u32 flags;
|
u32 flags;
|
||||||
u32 statictr_z_mask;
|
u32 statictr_z_mask;
|
||||||
u8 burst_size[3];
|
u8 burst_size[3];
|
||||||
|
struct udma_soc_data *soc_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct udma_soc_data {
|
struct udma_soc_data {
|
||||||
|
@ -4295,6 +4296,25 @@ static struct udma_match_data j721e_mcu_data = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct udma_soc_data am62a_dmss_csi_soc_data = {
|
||||||
|
.oes = {
|
||||||
|
.bcdma_rchan_data = 0xe00,
|
||||||
|
.bcdma_rchan_ring = 0x1000,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct udma_match_data am62a_bcdma_csirx_data = {
|
||||||
|
.type = DMA_TYPE_BCDMA,
|
||||||
|
.psil_base = 0x3100,
|
||||||
|
.enable_memcpy_support = false,
|
||||||
|
.burst_size = {
|
||||||
|
TI_SCI_RM_UDMAP_CHAN_BURST_SIZE_64_BYTES, /* Normal Channels */
|
||||||
|
0, /* No H Channels */
|
||||||
|
0, /* No UH Channels */
|
||||||
|
},
|
||||||
|
.soc_data = &am62a_dmss_csi_soc_data,
|
||||||
|
};
|
||||||
|
|
||||||
static struct udma_match_data am64_bcdma_data = {
|
static struct udma_match_data am64_bcdma_data = {
|
||||||
.type = DMA_TYPE_BCDMA,
|
.type = DMA_TYPE_BCDMA,
|
||||||
.psil_base = 0x2000, /* for tchan and rchan, not applicable to bchan */
|
.psil_base = 0x2000, /* for tchan and rchan, not applicable to bchan */
|
||||||
|
@ -4344,6 +4364,10 @@ static const struct of_device_id udma_of_match[] = {
|
||||||
.compatible = "ti,am64-dmss-pktdma",
|
.compatible = "ti,am64-dmss-pktdma",
|
||||||
.data = &am64_pktdma_data,
|
.data = &am64_pktdma_data,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.compatible = "ti,am62a-dmss-bcdma-csirx",
|
||||||
|
.data = &am62a_bcdma_csirx_data,
|
||||||
|
},
|
||||||
{ /* Sentinel */ },
|
{ /* Sentinel */ },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -5274,12 +5298,15 @@ static int udma_probe(struct platform_device *pdev)
|
||||||
}
|
}
|
||||||
ud->match_data = match->data;
|
ud->match_data = match->data;
|
||||||
|
|
||||||
|
ud->soc_data = ud->match_data->soc_data;
|
||||||
|
if (!ud->soc_data) {
|
||||||
soc = soc_device_match(k3_soc_devices);
|
soc = soc_device_match(k3_soc_devices);
|
||||||
if (!soc) {
|
if (!soc) {
|
||||||
dev_err(dev, "No compatible SoC found\n");
|
dev_err(dev, "No compatible SoC found\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
ud->soc_data = soc->data;
|
ud->soc_data = soc->data;
|
||||||
|
}
|
||||||
|
|
||||||
ret = udma_get_mmrs(pdev, ud);
|
ret = udma_get_mmrs(pdev, ud);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|
Loading…
Reference in a new issue