chip northbridge/intel/haswell
	register "dq_pins_interleaved" = "1"
	register "ec_present" = "false"

	register "gpu_ddi_e_connected" = "1"

	register "spd_addresses" = "{0x50, 0, 0x51, 0}"

	chip cpu/intel/haswell
		device cpu_cluster 0x0 on ops haswell_cpu_bus_ops end
	end
	device domain 0x0 on
		ops haswell_pci_domain_ops
		subsystemid 0x103c 0x8000 inherit

		device pci 00.0 on end # ULT Host bridge
		device pci 02.0 on end # Internal graphics VGA controller
		device pci 03.0 on end # Mini-HD audio
		chip southbridge/intel/lynxpoint # Intel Series 8 Lynx Point PCH
			register "docking_supported" = "1"
			register "gen1_dec" = "0x00fc0a01"
			register "gen2_dec" = "0x00fc0b01"
			register "gpe0_en_4" = "0x2046"
			register "sata_port0_gen3_dtle" = "0x7"
			register "sata_port1_gen3_dtle" = "0x9"
			register "sata_port_map" = "0x1"
			device pci 13.0 off end # Smart Sound Audio DSP
			device pci 14.0 on end # xHCI Controller
			device pci 15.0 off end # Serial I/O DMA
			device pci 15.1 off end # I2C0
			device pci 15.2 off end # I2C1
			device pci 15.3 off end # GSPI0
			device pci 15.4 off end # GSPI1
			device pci 15.5 off end # UART0
			device pci 15.6 off end # UART1
			device pci 16.0 on end # Management Engine Interface 1
			device pci 16.1 off end # Management Engine Interface 2
			device pci 16.2 off end # Management Engine IDE-R
			device pci 16.3 off end # Management Engine KT
			device pci 17.0 off end # SDIO
			device pci 19.0 off end # Intel Gigabit Ethernet
			device pci 1b.0 on end # High Definition Audio
			device pci 1c.0 off end # PCIe Port #1
			device pci 1c.1 off end # PCIe Port #2
			device pci 1c.2 on end # Onboard Realtek LAN
			device pci 1c.3 on end # X1PCIEXP11
			device pci 1c.4 off end # PCIe Port #5
			device pci 1c.5 off end # PCIe Port #6
			device pci 1d.0 on end # USB2 EHCI #1
			device pci 1f.0 on # LPC bridge
				chip superio/common
					device pnp 2e.ff on # passes SIO base addr to SSDT gen
						chip superio/nuvoton/npcd378
							device pnp 2e.0 off end		# Floppy
							device pnp 2e.1 off		# Parallel port
								# global

								# serialice: Vendor writes:
								irq 0x14 = 0xd0
								irq 0x1c = 0xa8
								irq 0x1d = 0x01
								irq 0x22 = 0x3f
								irq 0x1a = 0xa0
								# dumped from superiotool:
								irq 0x1b = 0x1e
								irq 0x27 = 0x08
								irq 0x2a = 0x00
								irq 0x2d = 0x21
								# parallel port
								io 0x60 = 0x278
								irq 0x70 = 0x07
								drq 0x74 = 0x04
							end
							device pnp 2e.2 off		# COM1
								io 0x60 = 0x2f8
								irq 0x70 = 3
							end
							device pnp 2e.3 off		# COM2, IR
								io 0x60 = 0x3f8
								irq 0x70 = 4
							end
							device pnp 2e.4 on		# LED control
								io 0x60 = 0x0a20
								# IOBASE[0h] = bit0 LED red / green
								# IOBASE[0h] = bit1-4 LED PWM duty cycle
								# IOBASE[1h] = bit6 SWCC

								io 0x62 = 0x0aa0
								# IOBASE [0h] = GPES
								# IOBASE [1h] = GPEE
								# IOBASE [4h:7h] = 32bit upcounter at 1Mhz
								# IOBASE [8h:bh] = GPS
								# IOBASE [ch:fh] = GPE
							end
							device pnp 2e.5 off		# Mouse
								irq 0x70 = 0xc
							end
							device pnp 2e.6 off		# Keyboard
								io 0x60 = 0x0060
								io 0x62 = 0x0064
								irq 0x70 = 0x01
								# serialice: Vendor writes:
								drq 0xf0 = 0x40
							end
							device pnp 2e.7 on		#  WDT ?
								io 0x60 = 0x0a00
							end
							device pnp 2e.8 off		# HWM
								io 0x60 = 0x0b00
								# IOBASE[0h:feh] HWM page
								# IOBASE[ffh] bit0-bit3 page selector

								drq 0xf0 = 0x20
								drq 0xf1 = 0x01
								drq 0xf2 = 0x40
								drq 0xf3 = 0x01

								drq 0xf4 = 0x66
								drq 0xf5 = 0x66
								drq 0xf6 = 0x66
								drq 0xf7 = 0x01
							end
							device pnp 2e.f on		# GPIO OD ?
								drq 0xf1 = 0x97
								drq 0xf2 = 0x01
								drq 0xf5 = 0x0b
								drq 0xfe = 0x80
							end
							device pnp 2e.15 off		# BUS ?
								io 0x60 = 0x0000
								io 0x62 = 0x0000
							end
							device pnp 2e.1c on		# Suspend Control ?
								io 0x60 = 0x0a60
								# writing to IOBASE[5h]
								#  0x0: Power off
								#  0x9: Power off and bricked until CMOS battery removed
							end
							device pnp 2e.1e off	# GPIO ?
								io 0x60 = 0x0000
								drq 0xf4 = 0x00
								# skip the following, as it
								# looks like remapped registers
								#drq 0xf5 = 0x06
								#drq 0xf6 = 0x60
								#drq 0xfe = 0x03
							end
						end
					end
				end
				chip drivers/pc80/tpm
					device pnp 4e.0 on end          # TPM module
				end
			end
			device pci 1f.2 on end # SATA Controller (AHCI)
			device pci 1f.3 on end # SMBus
			device pci 1f.6 off end # Thermal
		end
	end
end
