#
# This file is part of the coreboot project.
#
# Copyright (C) 2013 Advanced Micro Devices, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
chip northbridge/amd/agesa/family16kb/root_complex
	device cpu_cluster 0 on
		chip cpu/amd/agesa/family16kb
			device lapic 0 on  end
		end
	end

	device domain 0 on
		subsystemid 0x1022 0x1410 inherit
		chip northbridge/amd/agesa/family16kb # CPU side of HT root complex

			chip northbridge/amd/agesa/family16kb # PCI side of HT root complex
				device pci 0.0 on  end # Root Complex
				device pci 1.0 on  end # Internal Graphics P2P bridge 0x9835
				device pci 1.1 on  end # Internal Multimedia
				device pci 2.0 on  end # PCIe Host Bridge
				device pci 2.1 on  end # x4 PCIe Slot
				device pci 2.2 on  end # PCIe Q7 Realtek GBit LAN
				device pci 2.3 on  end # PCIe CB Realtek GBit LAN
				device pci 2.4 on  end # PCIe BAP FPGA
				device pci 2.5 on  end # PCIe BAP FPGA (unused, for 050T)
			end	#chip northbridge/amd/agesa/family16kb

			chip southbridge/amd/agesa/hudson # it is under NB/SB Link, but on the same pci bus
				device pci 10.0 on  end # XHCI HC0
				device pci 11.0 on  end # SATA
				device pci 12.0 on  end # USB
				device pci 12.2 on  end # USB
				device pci 13.0 on  end # USB
				device pci 13.2 on  end # USB
				device pci 14.0 on  end # SM
				device pci 14.2 on  end # HDA	0x4383
				device pci 14.3 on 	# LPC	0x439d
					chip superio/fintek/f81866d
						register "hwm_amd_tsi_addr" = "0x98"	# Set to AMD
						register "hwm_amd_tsi_control" = "0x02"	# Set to AMD
						register "hwm_fan_select" = "0xC0"	# Sets Fan2 to PWM
						register "hwm_fan_mode" = "0xD5"	# Sets FAN1-3 to Auto RPM mode
						register "hwm_fan3_control" = "0x00"	# Fan control 23kHz
						register "hwm_fan2_temp_map_select" = "0x1E"	# Fan control 23kHz
						register "hwm_fan2_bound1" = "0x3C"	# 60°C
						register "hwm_fan2_bound2" = "0x32"	# 50°C
						register "hwm_fan2_bound3" = "0x28"	# 40°C
						register "hwm_fan2_bound4" = "0x1E"	# 30°C
						register "hwm_fan2_seg1_speed" = "0xFF"	# 100%
						register "hwm_fan2_seg2_speed" = "0xD9"	# 85%
						register "hwm_fan2_seg3_speed" = "0xB2"	# 70%
						register "hwm_fan2_seg4_speed" = "0x99"	# 60%
						register "hwm_fan2_seg5_speed" = "0x80"	# 50%
						register "hwm_temp_sens_type" = "0x04"	# Sets temp sensor 1 type to to thermistor
						device pnp 4e.0 off		# Floppy
							io 0x60 = 0x3f0
							irq 0x70 = 6
							drq 0x74 = 2
						end
						device pnp 4e.3 off end			# Parallel Port
						device pnp 4e.4 on			# Hardware Monitor
							io 0x60 = 0x295
							irq 0x70 = 0
						end
						device pnp 4e.5 off #  Keyboard
							io 0x60 = 0x60
							io 0x62 = 0x64
							irq 0x70 = 1
						end
						device pnp 4e.6 off end			# GPIO
						device pnp 4e.7 on end			# WDT
						device pnp 4e.a off end			# PME
						device pnp 4e.10 on			# COM1
							io 0x60 = 0x3f8
							irq 0x70 = 4
						end
						device pnp 4e.11 on			# COM2
							io 0x60 = 0x2f8
							irq 0x70 = 3
						end
						device pnp 4e.12 off			# COM3
						end
						device pnp 4e.13 off			# COM4
						end
						device pnp 4e.14 off			# COM5
						end
						device pnp 4e.15 off			# COM6
						end
					end # f81866d
				end #LPC
				device pci 14.7 on  end # SD
			end	#chip southbridge/amd/hudson

			device pci 18.0 on  end
			device pci 18.1 on  end
			device pci 18.2 on  end
			device pci 18.3 on  end
			device pci 18.4 on  end
			device pci 18.5 on  end

		end	#chip northbridge/amd/agesa/family16kb # CPU side of HT root complex
	end	#domain
end	#northbridge/amd/agesa/family16kb/root_complex
