[RFC PATCH 0/3] PCI: imx6: fixup for add-in card IRQ mismapping

Jingoo Han jg1.han at samsung.com
Fri Feb 28 01:22:52 EST 2014


On Friday, February 28, 2014 1:16 PM, Tim Harvey wrote:
> On Thu, Feb 27, 2014 at 5:50 PM, Jingoo Han <jg1.han at samsung.com> wrote:
> >
> > On Friday, February 28, 2014 10:20 AM, Tim Harvey wrote:
> > >
> > > An add-in card used on the Ventana IMX6 SoC based family of boards has a
> > > TI XIO2001 PCIe-to-PCI bridge where the INTA/B/C/D mappings between the
> > > bridge and the four mini-PCI slots are swapped (INTD/C/B/A).
> >
> > (+cc Marek Vasut, Pratyush Anand, Kishon Vijay Abraham I, Mohit KUMAR DCG)
> >
> > This problem happens from the 'Board', not a 'SoC'.
> > 'TI XIO2001 PCIe-to-PCI bridge' is not a 'SoC'.
> > 'pci-imx6.c' is the driver for 'IMX6 PCI IP', not for 'IMX6 SoC based
> > board'. Isn't it?
> 
> Jingoo,
> 
> Correct, this is an issue in the way the XIO2001 was hooked up to the
> PCI slots, so it should be viewed as a board issue.

(+CC Arnd Bergmann)

Then, this board fixup code should NOT be placed in './drivers/pci/host/'
side. 

> 
> >
> > Then, the workaround code for board problem should NOT be
> > included to './drivers/pci/host/' side.
> 
> I would agree, but to overcome this sort of interrupt mapping issue
> one would need to either implement a custom swizzle or perhaps a
> custom map_irq and both of those are hooked into the pcie driver core.
>  Do you have any suggestions on where/how I would better hook into
> those?

Anyway, 'TI XIO2001 PCIe-to-PCI bridge' chip on the board is the
culprit. So, the board specific side is a good place.
For instance, ./arch/arm/mach-imx/

I don't know how to handle this problem.
But, there is no reason that 'pcie-designware.c' should take a care
of the board specific issue.

Arnd Bergmann,
Would you give your opinions?

Best regards,
Jingoo Han

> 
> >
> > Also, please add the following members to CC list. They will give
> > important comments.
> >
> > : Marek Vasut, Pratyush Anand, Kishon Vijay Abraham I, Mohit KUMAR DCG
> >
> > Best regards,
> > Jingoo Han
> 
> Thanks,
> 
> Tim
> 
> >
> > >
> > > This series adds legacy PCI interrupt mapping to support PCI bridges on
> > > IMX6 PCIe host controllers, adds the ability to use a host-specific
> > > custom swizzle function, then uses that to fix the IRQ mapping.
> > >
> > > I'm hoping this is the right way to perform such a workaround - please provide
> > > feedback if not.  Patch1 will likely collide with the owrk Lucas is doing
> > > with device-tree bindings and MSI support.  I'm happy to re-base if/when
> > > needed.
> > >
> > > Signed-off-by: Tim Harvey <tharvey at gateworks.com>
> > > Cc: Bjorn Helgaas <bhelgaas at google.com>
> > > Cc: Richard Zhu <r65037 at freescale.com>
> > > Cc: Shawn Guo <shawn.guo at linaro.org>
> > > Cc: Lucas Stach <l.stach at pengutronix.de>
> > > Cc: Sean Cross <xobs at kosagi.com>
> > > Cc: Jingoo Han <jg1.han at samsung.com>
> > > ---
> > > Tim Harvey (3):
> > >   PCI: designware: add legacy PCI interrupt mapping
> > >   PCI: designware: add ability for custom swizzle
> > >   PCI: imx6: ventana: fixup for IRQ mismapping
> > >
> > >  arch/arm/boot/dts/imx6qdl.dtsi     |  2 +-
> > >  drivers/pci/host/pci-exynos.c      |  7 ++++--
> > >  drivers/pci/host/pci-imx6.c        | 47 ++++++++++++++++++++++++++++++++++----
> > >  drivers/pci/host/pcie-designware.c | 11 ++++++++-
> > >  drivers/pci/host/pcie-designware.h |  3 ++-
> > >  include/linux/pci_ids.h            |  1 +
> > >  6 files changed, 62 insertions(+), 9 deletions(-)
> > >
> > > --
> > > 1.8.3.2
> >




More information about the linux-arm-kernel mailing list