RapidIO: multiple mport support for QorIQ
Thomas Taranowski
tom at baringforge.com
Thu Dec 16 16:22:02 EST 2010
I actually take most of this back, it looks like there is a path
available so as not to fork the driver for the pseries.
Thomas Taranowski
Certified netburner consultant
baringforge.com
On Wed, Dec 15, 2010 at 12:40 PM, Thomas Taranowski <tom at baringforge.com> wrote:
>>
>>> There is some divergance in respect to the memory map that is non-trivial that
>>> I'm not sure how to handle, since it totally hoses the common fsl_rio.c structures.
>>> I think I want to create a new set that's p2020 specific, but has potential to be
>>> shared with the other QorIQ series, so dumping the pseries-specific code into
>>> platforms/pseries seems like a reasonable way to go. Thoughts?
>>
>> The dual-port RIO is very common on QorIQ chips. I won't suggest you add P2020 specific memory map file. The two port memory map should also be compatible with one port driver.
>>
>
> Should be, but isn't. For the most part the new registers introduced
> match up with the pad present in the previous processors, but not for
> the atmu registers. They are wildly inconsistent, and I don't see a
> way to make them compatible.
>
> # The current implementation
> struct rio_atmu_regs {
> u32 rowtar;
> u32 rowtear;
> u32 rowbar;
> u32 pad2;
> u32 rowar;
> u32 pad3[3];
> };
>
> # The QorIQ p2020 register set.
> struct rio_atmu_outb_window_regs {
> u32 rowtar0; /* Outbound window translation address register 0 *
> u32 rowtear0; /* Outbound window ext. address register 0 */
> u32 pad; /* There is no rowbar0. Believe it. */
> u32 rowar0; /* Outbound window attribute register 1 */
> u32 rowtar1; /* Outbound window translation address register 1 *
> u32 rowtear1; /* Outbound window ext. translation address registe
> u32 rowbar1; /* Outbound window base address register 1 */
> u32 rowar1; /* Outbound window attributes register 1 */
> u32 rowsr1[3]; /* Outbound window segment register 1 */
> };
>
> struct rio_atmu_inb_window_regs {
> u32 iwtar; /* Inbound window translation address register. */
> u32 iwbar; /* Inbound window base address register. */
> u32 iwar; /* Ibound window attribute register. */
> };
>
> struct rio_atmu_regs {
> rio_atmu_outb_window_regs outb_window[8]; /* window 1-8, upcounting
> rio atmu_inb_window_regs inb_window[4] /* window 4-1, downcounting
> };
>
>
>
>
>> -Leo
>>
>>
>
More information about the Linuxppc-dev
mailing list