mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
drm/vc4: Use phys addresses for slave DMA config
Slave addresses for DMA are meant to be supplied as physical addresses (contrary to what struct snd_dmaengine_dai_dma_data does). Signed-off-by: Phil Elwell <phil@raspberrypi.com>
This commit is contained in:
@@ -2236,7 +2236,7 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
|
||||
struct snd_soc_dai_link *dai_link = &vc4_hdmi->audio.link;
|
||||
struct snd_soc_card *card = &vc4_hdmi->audio.card;
|
||||
struct device *dev = &vc4_hdmi->pdev->dev;
|
||||
const __be32 *addr;
|
||||
struct resource *iomem;
|
||||
int index, len;
|
||||
int ret;
|
||||
|
||||
@@ -2272,22 +2272,18 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the physical address of VC4_HD_MAI_DATA. We need to retrieve
|
||||
* the bus address specified in the DT, because the physical address
|
||||
* (the one returned by platform_get_resource()) is not appropriate
|
||||
* for DMA transfers.
|
||||
* This VC/MMU should probably be exposed to avoid this kind of hacks.
|
||||
* Get the physical address of VC4_HD_MAI_DATA.
|
||||
*/
|
||||
index = of_property_match_string(dev->of_node, "reg-names", "hd");
|
||||
/* Before BCM2711, we don't have a named register range */
|
||||
if (index < 0)
|
||||
index = 1;
|
||||
|
||||
addr = of_get_address(dev->of_node, index, NULL, NULL);
|
||||
if (!addr)
|
||||
iomem = platform_get_resource(vc4_hdmi->pdev, IORESOURCE_MEM, index);
|
||||
if (!iomem)
|
||||
return -EINVAL;
|
||||
|
||||
vc4_hdmi->audio.dma_data.addr = be32_to_cpup(addr) + mai_data->offset;
|
||||
vc4_hdmi->audio.dma_data.addr = iomem->start + mai_data->offset;
|
||||
vc4_hdmi->audio.dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
|
||||
vc4_hdmi->audio.dma_data.maxburst = 2;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user