[PATCH 1/2] powerpc/qman: Change fsl,qman-channel-id to cell-index
roy.pledge at freescale.com
Wed May 13 07:19:24 AEST 2015
> > I don't believe this is correct - let me explain the rational why we had two
> properties in the QMan portal to begin with.
> > The two properties in question are cell-index and fsl,qman-channel-id.
> > The cell-index property is used in u-boot as an index for the software portal
> ID when adding the fsl,liodn from the U-boot table into the device tree.
> The device tree is not supposed to contain arbitrary software identifiers.
I agree - this is why the original device tree bindings removed cell-index as it can be calculated.
Unfortunately u-boot relied on this value being present so to be backward compatible we don't have a way to remove it. I'm not sure on what the procedure is to change things u-boot relies on, I personal have always been very uncomfortable with the coupling between u-boot and Linux for things like this.
> > The fsl,qman-channel-id property is used in Linux and corresponds to
> > a hardware value that indicates which channel is dedicated to the
> > software portal.
> > While I'm not aware of a current SoC where the channel ID for a
> > software portal does not match the index (i.e. SWP 0 uses channel 0,
> > etc.)
> Thus there's no backward compatibility issue with redefining cell-index to
> mean the channel ID.
Channel IDs do change and are defined when the SoC is created (look at checks for QMan versions and adjustments for Pool Channel IDs in the driver). If the channel ID for portal 0 ever becomes non zero we just end up having to make a mess in the code or reintroduce this field.
> > it is possible that future SoCs could stray from this model, there is
> > no reason for portal index to equal channel ID at all times.
> How can future SoCs dictate how we assign a software-defined identifier?
> If software wants it to be the same as the channel id, then it will be.
> If there is some aspect of the hardware itself (not the documentation) that
> cell-index currently corresponds to, other than the channel id, please make
> that clear.
Channel ID is defined in the SoC RTL - it is not controlled by software and it is not a software assigned identifier. It is not possible for SW to set these values.
More information about the Linuxppc-dev