[PATCH] Axi-usb: Add support for 64-bit addressing.

Rob Herring robh at kernel.org
Mon Apr 18 07:29:09 PDT 2016


On Sun, Apr 17, 2016 at 03:14:34PM +0200, Arnd Bergmann wrote:
> On Tuesday 12 April 2016 09:03:38 Rob Herring wrote:
> > On Mon, Apr 11, 2016 at 01:11:46PM +0530, Nava kishore Manne wrote:
> > > This patch updates the driver to support 64-bit DMA
> > > addressing.
> > > 
> > > Signed-off-by: Nava kishore Manne <navam at xilinx.com>
> > > ---
> > >  .../devicetree/bindings/usb/udc-xilinx.txt         |  3 +-
> > >  drivers/usb/gadget/udc/udc-xilinx.c                | 38 ++++++++++++++++++++--
> > >  2 files changed, 37 insertions(+), 4 deletions(-)
> > > 
> > > diff --git a/Documentation/devicetree/bindings/usb/udc-xilinx.txt b/Documentation/devicetree/bindings/usb/udc-xilinx.txt
> > > index 47b4e39..d417872 100644
> > > --- a/Documentation/devicetree/bindings/usb/udc-xilinx.txt
> > > +++ b/Documentation/devicetree/bindings/usb/udc-xilinx.txt
> > > @@ -7,12 +7,13 @@ Required properties:
> > >  - interrupts         : Should contain single irq line of USB2 device
> > >                         controller
> > >  - xlnx,has-builtin-dma       : if DMA is included
> > > -
> > > +- xlnx,addrwidth       : Should be the dma addressing size in bits(ex: 40 bits).
> > 
> > Now this property shows up in a 2nd device. Now I'm more convinced this 
> > is the wrong approach and should use dma-ranges.
> 
> Not necessarily: We need to be careful not to mix up two different things here:
> 
> * dma-ranges describes the address width of a bus, along with possible offsets.
>   In order to do wider than 32-bit addressing, all upstream busses must be
>   capable of supporting this, and AXI can have either 64-bit or 32-bit addressing.
> 
> * A device may have a register set that allows wider DMA. This is normally
>   identified through the 'compatible' property, and you can have all
>   combinations with bus addressing: a device with 32-bit DMA can be connected
>   to a 64-bit AXI bus, and a device with 64-bit DMA can have an upstream parent
>   or grandparent that is limited to 32 bits (or any other width really).
> 
> The patch here is almost certainly wrong. For one thing, it never sets the
> DMA mask to the correct value, and it also infers the presence of the
> 0x308..0x317 register range from an arbitrary DT property that describes
> something else (the supported width of the DMA).

Right, you don't need to know the exact bus width for determining the 
register/descriptor set is 32 or 64 bit addesses. I'm fine with a 
property for that, but if limiting the actual connected address bits is 
needed, then dma-ranges should be used.

Rob



More information about the linux-arm-kernel mailing list