Re: [U-Boot] [PATCH v2 5/5] x86: qemu: Implement PIRQ routing

2015-06-04 Thread Simon Glass
On 2 June 2015 at 19:20, Bin Meng  wrote:
> Support QEMU PIRQ routing via device tree on both i440fx and q35
> platforms. With this commit, Linux booting on QEMU from U-Boot
> has working ATA/SATA, USB and ethernet.
>
> Signed-off-by: Bin Meng 
> Acked-by: Simon Glass 
> ---
>
> Changes in v2: None
>
>  arch/x86/cpu/coreboot/coreboot.c |  5 +
>  arch/x86/cpu/qemu/qemu.c |  8 
>  arch/x86/dts/qemu-x86_i440fx.dts | 16 
>  arch/x86/dts/qemu-x86_q35.dts| 32 
>  configs/qemu-x86_defconfig   |  1 +
>  include/configs/qemu-x86.h   |  1 +
>  6 files changed, 63 insertions(+)

Applied to u-boot-x86, thanks!
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v2 5/5] x86: qemu: Implement PIRQ routing

2015-06-02 Thread Bin Meng
Support QEMU PIRQ routing via device tree on both i440fx and q35
platforms. With this commit, Linux booting on QEMU from U-Boot
has working ATA/SATA, USB and ethernet.

Signed-off-by: Bin Meng 
Acked-by: Simon Glass 
---

Changes in v2: None

 arch/x86/cpu/coreboot/coreboot.c |  5 +
 arch/x86/cpu/qemu/qemu.c |  8 
 arch/x86/dts/qemu-x86_i440fx.dts | 16 
 arch/x86/dts/qemu-x86_q35.dts| 32 
 configs/qemu-x86_defconfig   |  1 +
 include/configs/qemu-x86.h   |  1 +
 6 files changed, 63 insertions(+)

diff --git a/arch/x86/cpu/coreboot/coreboot.c b/arch/x86/cpu/coreboot/coreboot.c
index c4cac04..0e9f15f 100644
--- a/arch/x86/cpu/coreboot/coreboot.c
+++ b/arch/x86/cpu/coreboot/coreboot.c
@@ -89,3 +89,8 @@ int misc_init_r(void)
 {
return 0;
 }
+
+int arch_misc_init(void)
+{
+   return 0;
+}
diff --git a/arch/x86/cpu/qemu/qemu.c b/arch/x86/cpu/qemu/qemu.c
index 0f98476..930d2b6 100644
--- a/arch/x86/cpu/qemu/qemu.c
+++ b/arch/x86/cpu/qemu/qemu.c
@@ -5,6 +5,7 @@
  */
 
 #include 
+#include 
 #include 
 #include 
 
@@ -35,3 +36,10 @@ void reset_cpu(ulong addr)
/* cold reset */
x86_full_reset();
 }
+
+int arch_misc_init(void)
+{
+   pirq_init();
+
+   return 0;
+}
diff --git a/arch/x86/dts/qemu-x86_i440fx.dts b/arch/x86/dts/qemu-x86_i440fx.dts
index 4cf843b..557428a 100644
--- a/arch/x86/dts/qemu-x86_i440fx.dts
+++ b/arch/x86/dts/qemu-x86_i440fx.dts
@@ -6,6 +6,8 @@
 
 /dts-v1/;
 
+#include 
+
 /include/ "skeleton.dtsi"
 /include/ "serial.dtsi"
 
@@ -29,6 +31,20 @@
ranges = <0x0200 0x0 0xc000 0xc000 0 0x1000
0x4200 0x0 0xd000 0xd000 0 0x1000
0x0100 0x0 0x2000 0x2000 0 0xe000>;
+
+   irq-router@1,0 {
+   reg = <0x0800 0 0 0 0>;
+   compatible = "intel,irq-router";
+   intel,pirq-config = "pci";
+   intel,pirq-link = <0x60 4>;
+   intel,pirq-mask = <0x0e40>;
+   intel,pirq-routing = <
+   /* PIIX UHCI */
+   PCI_BDF(0, 1, 2) INTD PIRQD
+   /* e1000 NIC */
+   PCI_BDF(0, 3, 0) INTA PIRQC
+   >;
+   };
};
 
 };
diff --git a/arch/x86/dts/qemu-x86_q35.dts b/arch/x86/dts/qemu-x86_q35.dts
index 02a483c..c259f2a 100644
--- a/arch/x86/dts/qemu-x86_q35.dts
+++ b/arch/x86/dts/qemu-x86_q35.dts
@@ -6,6 +6,18 @@
 
 /dts-v1/;
 
+#include 
+
+/* ICH9 IRQ router has discrete PIRQ control registers */
+#undef PIRQE
+#undef PIRQF
+#undef PIRQG
+#undef PIRQH
+#define PIRQE  8
+#define PIRQF  9
+#define PIRQG  10
+#define PIRQH  11
+
 /include/ "skeleton.dtsi"
 /include/ "serial.dtsi"
 
@@ -30,6 +42,26 @@
ranges = <0x0200 0x0 0xc000 0xc000 0 0x1000
0x4200 0x0 0xd000 0xd000 0 0x1000
0x0100 0x0 0x2000 0x2000 0 0xe000>;
+
+   irq-router@1f,0 {
+   reg = <0xf800 0 0 0 0>;
+   compatible = "intel,irq-router";
+   intel,pirq-config = "pci";
+   intel,pirq-link = <0x60 8>;
+   intel,pirq-mask = <0x0e40>;
+   intel,pirq-routing = <
+   /* e1000 NIC */
+   PCI_BDF(0, 2, 0) INTA PIRQG
+   /* ICH9 UHCI */
+   PCI_BDF(0, 29, 0) INTA PIRQA
+   PCI_BDF(0, 29, 1) INTB PIRQB
+   PCI_BDF(0, 29, 2) INTC PIRQC
+   /* ICH9 EHCI */
+   PCI_BDF(0, 29, 7) INTD PIRQD
+   /* ICH9 SATA */
+   PCI_BDF(0, 31, 2) INTA PIRQA
+   >;
+   };
};
 
 };
diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
index 0959a98..901cbd7 100644
--- a/configs/qemu-x86_defconfig
+++ b/configs/qemu-x86_defconfig
@@ -2,6 +2,7 @@ CONFIG_X86=y
 CONFIG_VENDOR_EMULATION=y
 CONFIG_DEFAULT_DEVICE_TREE="qemu-x86_i440fx"
 CONFIG_TARGET_QEMU_X86=y
+CONFIG_GENERATE_PIRQ_TABLE=y
 CONFIG_CMD_NET=y
 CONFIG_OF_CONTROL=y
 CONFIG_VIDEO_VESA=y
diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
index d01936b..78c296f 100644
--- a/include/configs/qemu-x86.h
+++ b/include/configs/qemu-x86.h
@@ -14,6 +14,7 @@
 #include 
 
 #define CONFIG_SYS_MONITOR_LEN (1 << 20)
+#define CONFIG_ARCH_MISC_INIT
 
 #define CONFIG_X86_SERIAL
 
-- 
1.8.2.1

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot