On 03/03/2024 16:10, Maarten Vanraes wrote: > From: Phil Elwell <phil@xxxxxxxxxxxxxxx> > > Conditional on a new compatible string, change the pagelist encoding > such that the top 24 bits are the pfn, leaving 8 bits for run length > (-1), giving a 36-bit address range. > > Manage the split between addresses for the VPU and addresses for the > 40-bit DMA controller with a dedicated DMA device pointer that on non- > BCM2711 platforms is the same as the main VCHIQ device. This allows > the VCHIQ node to stay in the usual place in the DT. > > Signed-off-by: Phil Elwell <phil@xxxxxxxxxxxxxxx> > Signed-off-by: Maarten Vanraes <maarten@xxxxxxxx> > --- > > /* Partial cache lines (fragments) require special measures */ > @@ -413,7 +461,7 @@ free_pagelist(struct vchiq_instance *instance, struct vchiq_pagelist_info *pagel > * NOTE: dma_unmap_sg must be called before the > * cpu can touch any of the data/pages. > */ > - dma_unmap_sg(instance->state->dev, pagelistinfo->scatterlist, > + dma_unmap_sg(g_dma_dev, pagelistinfo->scatterlist, > pagelistinfo->num_pages, pagelistinfo->dma_dir); > pagelistinfo->scatterlist_mapped = 0; > > @@ -468,6 +516,7 @@ free_pagelist(struct vchiq_instance *instance, struct vchiq_pagelist_info *pagel > static int vchiq_platform_init(struct platform_device *pdev, struct vchiq_state *state) > { > struct device *dev = &pdev->dev; > + struct device *dma_dev = NULL; > struct vchiq_drvdata *drvdata = platform_get_drvdata(pdev); > struct rpi_firmware *fw = drvdata->fw; > struct vchiq_slot_zero *vchiq_slot_zero; > @@ -489,6 +538,24 @@ static int vchiq_platform_init(struct platform_device *pdev, struct vchiq_state > g_cache_line_size = drvdata->cache_line_size; > g_fragments_size = 2 * g_cache_line_size; > > + if (drvdata->use_36bit_addrs) { > + struct device_node *dma_node = > + of_find_compatible_node(NULL, NULL, "brcm,bcm2711-dma"); Why do you look up nodes by compatible instead of phandle? That's fragile. Makes relationship undocumented, probing not ordered and is completely non-portable between different devices. You have basically here deferred probe issue. Best regards, Krzysztof