• Maciej W. Rozycki's avatar
    MIPS: SiByte: Set 32-bit bus mask for BCM1250 PCI · 3747b9d6
    Maciej W. Rozycki authored
    The Broadcom SiByte BCM1250, BCM1125H and BCM1125 SOCs have an onchip
    32-bit PCI host bridge, and the two former SOCs also have an onchip HT
    host bridge.  The HT host bridge, where present, appears in the PCI
    configuration space as if it was a device on the 32-bit PCI bus behind
    the PCI host bridge, however at the hardware level its signals are
    routed separately, so these two devices are actually peer host bridges.
    
    As documented[1] and observed in reality the 32-bit PCI host bridge does
    not support 64-bit addressing as it does not support the Dual Address
    Cycle (DAC) PCI command, and naturally, being 32-bit only, it has no
    means to carry the high 32 address bits otherwise.  However the DRAM
    controller also included in the SOC supports memory amounts of up to
    16GiB, and due to how the address decoder has been wired in the SOC any
    memory beyond 1GiB is actually mapped starting from 4GiB physical up,
    that is beyond the 32-bit addressable limit.  Consequently if the
    maximum amount of memory has been installed, then it will span up to
    19GiB.
    
    Contrariwise, the HT host bridge does support full 40-bit addressing
    defined by the HyperTransport (formerly LDT) specification the bridge
    adheres to, depending on the peripherals revision of the SOC[2] either
    revision 0.17[3] or revision 1.03[4].  This allows addressing any and
    all memory installed, and well beyond.
    
    Set the bus mask then to limit DMA addressing to 32 bits for all the
    devices down the 32-bit PCI host bridge, excluding however any devices
    that are down the HT host bridge.
    
    References:
    
    [1] "BCM1250/BCM1125/BCM1125H User Manual", Revision 1250_1125-UM100-R,
        Broadcom Corporation, 21 Oct 2002, Section 8: "PCI Bus and
        HyperTransport Fabric", "Introduction", p. 190
    
    [2] same, Table 140: "HyperTransport Configuration Header (Type 1)", p.
        245
    
    [3] "Lightning Data Transport IO Specification", Revision 0.17, Advanced
        Micro Devices, 21 Jan 2000, Section 3.2.1.2 "Command Packet", p. 8
    
    [4] "HyperTransport I/O Link Specification", Revision 1.03,
        HyperTransport Technology Consortium, 10 Oct 2001, Section 3.2.1.2
        "Request Packet", pp. 27-28
    Signed-off-by: default avatarMaciej W. Rozycki <macro@linux-mips.org>
    Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Patchwork: https://patchwork.linux-mips.org/patch/21106/
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    3747b9d6
fixup-sb1250.c 2.86 KB