// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com>
 */

/dts-v1/;

#include <dt-bindings/interrupt-router/intel-irq.h>

/* 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"
/include/ "keyboard.dtsi"
/include/ "reset.dtsi"
/include/ "rtc.dtsi"

#include "tsc_timer.dtsi"
#include "smbios.dtsi"

/ {
	model = "QEMU x86 (Q35)";
	compatible = "qemu,x86";

	config {
		silent_console = <0>;
		u-boot,no-apm-finalize;
	};

	chosen {
		stdout-path = "/serial";
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;
		u-boot,dm-pre-reloc;

		cpu@0 {
			device_type = "cpu";
			compatible = "cpu-qemu";
			u-boot,dm-pre-reloc;
			reg = <0>;
			intel,apic-id = <0>;
		};
	};

	pci {
		compatible = "pci-x86";
		#address-cells = <3>;
		#size-cells = <2>;
		u-boot,dm-pre-reloc;
		ranges = <0x02000000 0x0 0xc0000000 0xc0000000 0 0x10000000
			0x42000000 0x0 0xd0000000 0xd0000000 0 0x10000000
			0x01000000 0x0 0x2000 0x2000 0 0xe000>;

		pch@1f,0 {
			reg = <0x0000f800 0 0 0 0>;
			compatible = "intel,pch9";
			u-boot,dm-pre-reloc;

			irq-router {
				compatible = "intel,irq-router";
				u-boot,dm-pre-reloc;
				intel,pirq-config = "pci";
				intel,actl-8bit;
				intel,actl-addr = <0x44>;
				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
				>;
			};
		};
	};

};
