##
## This file is part of the coreboot project.
##
## Copyright (C) 2010 Anders Jenbo <anders@jenbo.dk>
##
## 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; either version 2 of the License, or
## (at your option) any later version.
##
## 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/intel/i82810		# Northbridge
  device cpu_cluster 0 on		# APIC cluster
    chip cpu/intel/socket_PGA370	# CPU
      device lapic 0 on end		# APIC
    end
  end
  device domain 0 on		# PCI domain
    device pci 0.0 on end		# Graphics Memory Controller Hub (GMCH)
    device pci 1.0 on end		# Chipset Graphics Controller (CGC)
    chip southbridge/intel/i82801ax	# Southbridge
      register "ide0_enable" = "1"
      register "ide1_enable" = "1"

      device pci 1e.0 on end		# PCI bridge
      device pci 1f.0 on		# ISA bridge
        chip superio/ite/it8712f	# Super I/O
          device pnp 2e.0 off		# Floppy
            io 0x60 = 0x3f0
            irq 0x70 = 6
            drq 0x74 = 2
          end
          device pnp 2e.1 on		# Com1
            io 0x60 = 0x3f8
            irq 0x70 = 4
          end
          device pnp 2e.2 on		# Com2
            io 0x60 = 0x2f8
            irq 0x70 = 3
          end
          device pnp 2e.3 on		# Parallel port
            io 0x60 = 0x378
            irq 0x70 = 7
          end
          device pnp 2e.4 on		# EC
            io 0x60 = 0x290
            io 0x62 = 0x230
            irq 0x70 = 9
          end
          device pnp 2e.5 on		# PS/2 keyboard
            io 0x60 = 0x60
            io 0x62 = 0x64
            irq 0x70 = 1
          end
          device pnp 2e.6 on		# PS/2 mouse
            irq 0x70 = 12
          end
          device pnp 2e.7 on		# GPIO
            io 0x62 = 0x1220
            io 0x64 = 0x1200
          end
          device pnp 2e.8 off		# MIDI
            io 0x60 = 0x300
            irq 0x70 = 9
          end
          device pnp 2e.9 off		# Game port
            io 0x60 = 0x220
          end
          device pnp 2e.a off end	# CIR
        end
      end
      device pci 1f.1 on end		# IDE
      device pci 1f.2 on end		# USB
      device pci 1f.3 on end		# SMBus
    end
  end
end
