mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-10-21 21:44:42 +00:00
d402f922b2
There are 4 usb ports on the Intel Crown Bay board, 2 of which are connected to Topcliff usb host 0 and the other 2 connected to usb host 1. USB devices inserted in the ports connected to usb host 1 cannot get detected due to wrong IRQ assigned to the controller. Actually we need apply the PCI interrupt pin swizzling logic to all devices on the Topcliff chipset when configuring the PIRQ routing. This was observed on usb ports, but device 6 and 10 irqs are also wrong. Correct them all together. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Acked-by: Simon Glass <sjg@chromium.org>
215 lines
4.6 KiB
Text
215 lines
4.6 KiB
Text
/*
|
|
* Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
/dts-v1/;
|
|
|
|
#include <dt-bindings/interrupt-router/intel-irq.h>
|
|
|
|
/include/ "skeleton.dtsi"
|
|
/include/ "serial.dtsi"
|
|
/include/ "rtc.dtsi"
|
|
|
|
/ {
|
|
model = "Intel Crown Bay";
|
|
compatible = "intel,crownbay", "intel,queensbay";
|
|
|
|
aliases {
|
|
spi0 = "/spi";
|
|
};
|
|
|
|
config {
|
|
silent_console = <0>;
|
|
};
|
|
|
|
cpus {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
cpu@0 {
|
|
device_type = "cpu";
|
|
compatible = "cpu-x86";
|
|
reg = <0>;
|
|
intel,apic-id = <0>;
|
|
};
|
|
|
|
cpu@1 {
|
|
device_type = "cpu";
|
|
compatible = "cpu-x86";
|
|
reg = <1>;
|
|
intel,apic-id = <1>;
|
|
};
|
|
|
|
};
|
|
|
|
gpioa {
|
|
compatible = "intel,ich6-gpio";
|
|
u-boot,dm-pre-reloc;
|
|
reg = <0 0x20>;
|
|
bank-name = "A";
|
|
};
|
|
|
|
gpiob {
|
|
compatible = "intel,ich6-gpio";
|
|
u-boot,dm-pre-reloc;
|
|
reg = <0x20 0x20>;
|
|
bank-name = "B";
|
|
};
|
|
|
|
chosen {
|
|
/*
|
|
* By default the legacy superio serial port is used as the
|
|
* U-Boot serial console. If we want to use UART from Topcliff
|
|
* PCH as the console, change this property to &pciuart#.
|
|
*
|
|
* For example, stdout-path = &pciuart0 will use the first
|
|
* UART on Topcliff PCH.
|
|
*/
|
|
stdout-path = "/serial";
|
|
};
|
|
|
|
spi {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
compatible = "intel,ich-spi";
|
|
spi-flash@0 {
|
|
reg = <0>;
|
|
compatible = "sst,25vf016b", "spi-flash";
|
|
memory-map = <0xffe00000 0x00200000>;
|
|
};
|
|
};
|
|
|
|
microcode {
|
|
update@0 {
|
|
#include "microcode/m0220661105_cv.dtsi"
|
|
};
|
|
};
|
|
|
|
pci {
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
compatible = "intel,pci";
|
|
device_type = "pci";
|
|
|
|
pcie@17,0 {
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
compatible = "intel,pci";
|
|
device_type = "pci";
|
|
|
|
topcliff@0,0 {
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
compatible = "intel,pci";
|
|
device_type = "pci";
|
|
|
|
pciuart0: uart@a,1 {
|
|
compatible = "pci8086,8811.00",
|
|
"pci8086,8811",
|
|
"pciclass,070002",
|
|
"pciclass,0700",
|
|
"x86-uart";
|
|
reg = <0x00025100 0x0 0x0 0x0 0x0
|
|
0x01025110 0x0 0x0 0x0 0x0>;
|
|
reg-shift = <0>;
|
|
clock-frequency = <1843200>;
|
|
current-speed = <115200>;
|
|
};
|
|
|
|
pciuart1: uart@a,2 {
|
|
compatible = "pci8086,8812.00",
|
|
"pci8086,8812",
|
|
"pciclass,070002",
|
|
"pciclass,0700",
|
|
"x86-uart";
|
|
reg = <0x00025200 0x0 0x0 0x0 0x0
|
|
0x01025210 0x0 0x0 0x0 0x0>;
|
|
reg-shift = <0>;
|
|
clock-frequency = <1843200>;
|
|
current-speed = <115200>;
|
|
};
|
|
|
|
pciuart2: uart@a,3 {
|
|
compatible = "pci8086,8813.00",
|
|
"pci8086,8813",
|
|
"pciclass,070002",
|
|
"pciclass,0700",
|
|
"x86-uart";
|
|
reg = <0x00025300 0x0 0x0 0x0 0x0
|
|
0x01025310 0x0 0x0 0x0 0x0>;
|
|
reg-shift = <0>;
|
|
clock-frequency = <1843200>;
|
|
current-speed = <115200>;
|
|
};
|
|
|
|
pciuart3: uart@a,4 {
|
|
compatible = "pci8086,8814.00",
|
|
"pci8086,8814",
|
|
"pciclass,070002",
|
|
"pciclass,0700",
|
|
"x86-uart";
|
|
reg = <0x00025400 0x0 0x0 0x0 0x0
|
|
0x01025410 0x0 0x0 0x0 0x0>;
|
|
reg-shift = <0>;
|
|
clock-frequency = <1843200>;
|
|
current-speed = <115200>;
|
|
};
|
|
};
|
|
};
|
|
|
|
irq-router@1f,0 {
|
|
reg = <0x0000f800 0 0 0 0>;
|
|
compatible = "intel,irq-router";
|
|
intel,pirq-config = "pci";
|
|
intel,pirq-link = <0x60 8>;
|
|
intel,pirq-mask = <0xdee0>;
|
|
intel,pirq-routing = <
|
|
/* TunnelCreek PCI devices */
|
|
PCI_BDF(0, 2, 0) INTA PIRQE
|
|
PCI_BDF(0, 3, 0) INTA PIRQF
|
|
PCI_BDF(0, 23, 0) INTA PIRQE
|
|
PCI_BDF(0, 24, 0) INTA PIRQF
|
|
PCI_BDF(0, 25, 0) INTA PIRQG
|
|
PCI_BDF(0, 26, 0) INTA PIRQH
|
|
PCI_BDF(0, 27, 0) INTA PIRQG
|
|
/*
|
|
* Topcliff PCI devices
|
|
*
|
|
* Note on the Crown Bay board, Topcliff chipset
|
|
* is connected to TunnelCreek PCIe port 0, so
|
|
* its bus number is 1 for its PCIe port and 2
|
|
* for its PCI devices per U-Boot current PCI
|
|
* bus enumeration algorithm.
|
|
*/
|
|
PCI_BDF(1, 0, 0) INTA PIRQA
|
|
PCI_BDF(2, 0, 1) INTA PIRQA
|
|
PCI_BDF(2, 0, 2) INTA PIRQA
|
|
PCI_BDF(2, 2, 0) INTB PIRQD
|
|
PCI_BDF(2, 2, 1) INTB PIRQD
|
|
PCI_BDF(2, 2, 2) INTB PIRQD
|
|
PCI_BDF(2, 2, 3) INTB PIRQD
|
|
PCI_BDF(2, 2, 4) INTB PIRQD
|
|
PCI_BDF(2, 4, 0) INTC PIRQC
|
|
PCI_BDF(2, 4, 1) INTC PIRQC
|
|
PCI_BDF(2, 6, 0) INTD PIRQB
|
|
PCI_BDF(2, 8, 0) INTA PIRQA
|
|
PCI_BDF(2, 8, 1) INTA PIRQA
|
|
PCI_BDF(2, 8, 2) INTA PIRQA
|
|
PCI_BDF(2, 8, 3) INTA PIRQA
|
|
PCI_BDF(2, 10, 0) INTB PIRQD
|
|
PCI_BDF(2, 10, 1) INTB PIRQD
|
|
PCI_BDF(2, 10, 2) INTB PIRQD
|
|
PCI_BDF(2, 10, 3) INTB PIRQD
|
|
PCI_BDF(2, 10, 4) INTB PIRQD
|
|
PCI_BDF(2, 12, 0) INTC PIRQC
|
|
PCI_BDF(2, 12, 1) INTC PIRQC
|
|
PCI_BDF(2, 12, 2) INTC PIRQC
|
|
PCI_BDF(2, 12, 3) INTC PIRQC
|
|
PCI_BDF(2, 12, 4) INTC PIRQC
|
|
>;
|
|
};
|
|
};
|
|
|
|
};
|