• Thomas Petazzoni's avatar
    arch/sh: pcie-sh7786: adjust PCI MEM and IO regions · 5da1bb96
    Thomas Petazzoni authored
    The current definition of the PCIe IO and MEM resources for SH7786
    doesn't match what the datasheet says. For example, for PCIe0
    0xfe100000 is advertised by the datasheet as a PCI IO region, while
    0xfd000000 is advertised as a PCI MEM region. The code currently
    inverts the two.
    
    The SH4A_PCIEPARL and SH4A_PCIEPTCTLR registers allow to define the
    base address and role of the different regions (including whether it's
    a MEM or IO region). However, practical experience on a SH7786 shows
    that if 0xfe100000 is used for LEL and 0xfd000000 for IO, a PCIe
    device using two MEM BARs cannot be accessed at all. Simply using
    0xfe100000 for IO and 0xfd000000 for MEM makes the PCIe device
    accessible.
    
    It is very likely that this was never seen because there are two other
    PCI MEM region listed in the resources. However, for different
    reasons, none of the two other MEM regions are usable on the specific
    SH7786 platform the problem was encountered. Therefore, the last MEM
    region at 0xfe100000 was used to place the BARs, making the device
    non-functional.
    
    This commit therefore adjusts those PCI MEM and IO resources
    definitions so that they match what the datasheet says. They have only
    been tested with PCIe 0.
    Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: default avatarRich Felker <dalias@libc.org>
    5da1bb96
pcie-sh7786.c 14.3 KB