Messages in this thread | | | Date | Thu, 10 Jan 2019 10:29:06 -0500 (EST) | From | Alan Stern <> | Subject | RE: [PATCH 2/3] usb: ehci: fsl: Update register accessing for arm/arm64 platforms |
| |
On Thu, 10 Jan 2019, Ran Wang wrote:
> Hi Alan, > > > -----Original Message----- > > From: Alan Stern <stern@rowland.harvard.edu> > > Sent: Wednesday, January 09, 2019 23:14 > > To: Ran Wang <ran.wang_1@nxp.com> > > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>; linux- > > usb@vger.kernel.org; linux-kernel@vger.kernel.org > > Subject: RE: [PATCH 2/3] usb: ehci: fsl: Update register accessing for > > arm/arm64 platforms > > > > On Wed, 9 Jan 2019, Ran Wang wrote: > > > > > > Why do you change this writel() into iowrite32be() but leave other > > > > instances of writel() unchanged? Was this a mistake? > > > > > > Yes, I didn't notice there are other writel() used in this file. > > > However, as I know, on both powerpc and arm SoC, EHCI FSL IP's memory > > > mapped register block is always Big-endian, so I'd like to replace all > > > writel() with iowrite32be() in this file. Is it necessary? > > > > > > Or I just replace them with ehci_writel() and select > > CONFIG_USB_EHCI_BIG_ENDIAN_MMIO? > > > > That should work okay. ehci_fsl_setup() sets ehci->big_endian_desc and > > ehci->big_endian_mmio according to the platform data, so you just have > > to make sure the platform data is initialized correctly. > > > OK, so I should not change writel() into iowrite32be() at that > place you mentioned, and still using iowrite32be()/ioread32be() to replace > clrsetbits_be32(), am I right?
Actually, I think it would be good to use ehci_writel() and ehci_readl() everywhere except in fsl_ehci_drv_probe().
But if you prefer to use iowrite32be() and ioread32be() instead, that's probably okay. (However, it won't work if anyone ever produces a little-endian version of the IP.)
Alan Stern
| |