[PATCH v1 2/4] usb: xhci: xhci_mem_init: Use cpu_to_le64() and not xhci_writeq()

Bin Meng bmeng.cn at gmail.com
Fri Jul 17 12:13:03 CEST 2020


Hi Stefan,

On Fri, Jul 17, 2020 at 6:11 PM Stefan Roese <sr at denx.de> wrote:
>
> Hi Bin,
>
> On 17.07.20 12:09, Bin Meng wrote:
> > Hi Stefan,
> >
> > On Fri, Jul 17, 2020 at 6:04 PM Stefan Roese <sr at denx.de> wrote:
> >>
> >> On 17.07.20 07:24, Bin Meng wrote:
> >>> Hi Stefan,
> >>>
> >>> On Thu, Jul 2, 2020 at 4:47 PM Stefan Roese <sr at denx.de> wrote:
> >>>>
> >>>> xhci_writeq() makes the CPU->LE swapping only when addressing registers
> >>>> in the xHCI controller address range and not in the local memory (RAM).
> >>>
> >>> Is the above behavior exposed by the MIPS platform's writel()?
> >>
> >> Not sure what you mean with this. Without this patch, xhci_writeq()
> >> will not swap on Octeon MIPS, as the destination address is located
> >> in local memory (DDR).
> >
> > I wonder why xhci_writeq() does not swap? Is this due to the writel()
> > implementation on Octeon MIPS?
>
> Ah, okay. Please see my comment below for this. Here again:
>
> BTW: The Octeon MIPS writel will swap to little-endian, when the
> location is in the xHCI controller address space (and PCI etc). This
> support for selective swapping is not pushed into mainline yet. I
> will send it in some follow up patches.
>
> So to answer your question: writel will not swap when addressing
> local memory.

Thanks. That explains.

>
> >> Using the xhci_read/write accessor functions
> >> should be restricted to accessing the controller registers.
> >
> > Yes, this is the supposed usage that xhci_read/write should be called
> > to operate on xHCI registers. However my question was why
> > xhci_read/write does not swap even it is called on memory space, hence
> > the writel() question.
> >

Regards,
Bin


More information about the U-Boot mailing list