Re: [PATCH v11 2/2] mtd: rawnand: Add Loongson-1 NAND Controller Driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 20, 2025 at 4:10 PM Miquel Raynal <miquel.raynal@xxxxxxxxxxx> wrote:
>
>
> >> >> Don't you need a dma_addr_t here instead? You shall remap the resource.
> >> >>
> >> > Sorry, I don't quite understand.
> >> > 'dma_base' is already of type dma_addr_t.
> >>
> >> I didn't identify where the dma_base was remapped, but if that's already
> >> done then we're good.
> >
> > Perhaps I misunderstand the usage of dma_map_resource(). dma_base is
> > the physical address and will be written to the DMA controller
> > register at last.
>
> IIUC, yes and no. It is the remapped address of the physical address you
> want to reach, not the physical address itself. The type is dma_addr_t
> and not phys_addr_t and you can get a dma address out of a physical
> address with a call to dma_map_resource(). The numerical value might be
> the same if there is no IO-MMU involved, but the good practice is to
> remap anyway.

Got it. I will keep dma_map_resource() as it is, which is called in
ls1x_nand_probe().

+       res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "nand-dma");
+       host->dma_base = dma_map_resource(dev, res->start, resource_size(res),
+                                         DMA_BIDIRECTIONAL, 0);
+       if (dma_mapping_error(dev, host->dma_base))
+               return -ENXIO;

>
> Thanks,
> Miquèl
>


-- 
Best regards,

Keguang Zhang





[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux