// 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/ "rtc.dtsi"
/include/ "tsc_timer.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>;
		};
	};

	tsc-timer {
		clock-frequency = <1000000000>;
	};

	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
				>;
			};
		};
	};

};
