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
|
@ -135,6 +135,7 @@ struct udma_match_data {
|
|||
u32 flags;
|
||||
u32 statictr_z_mask;
|
||||
u8 burst_size[3];
|
||||
struct udma_soc_data *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 = {
|
||||
.type = DMA_TYPE_BCDMA,
|
||||
.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",
|
||||
.data = &am64_pktdma_data,
|
||||
},
|
||||
{
|
||||
.compatible = "ti,am62a-dmss-bcdma-csirx",
|
||||
.data = &am62a_bcdma_csirx_data,
|
||||
},
|
||||
{ /* Sentinel */ },
|
||||
};
|
||||
|
||||
|
@ -5274,12 +5298,15 @@ static int udma_probe(struct platform_device *pdev)
|
|||
}
|
||||
ud->match_data = match->data;
|
||||
|
||||
soc = soc_device_match(k3_soc_devices);
|
||||
if (!soc) {
|
||||
dev_err(dev, "No compatible SoC found\n");
|
||||
return -ENODEV;
|
||||
ud->soc_data = ud->match_data->soc_data;
|
||||
if (!ud->soc_data) {
|
||||
soc = soc_device_match(k3_soc_devices);
|
||||
if (!soc) {
|
||||
dev_err(dev, "No compatible SoC found\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
ud->soc_data = soc->data;
|
||||
}
|
||||
ud->soc_data = soc->data;
|
||||
|
||||
ret = udma_get_mmrs(pdev, ud);
|
||||
if (ret)
|
||||
|
|
Loading…
Reference in New Issue