##
## This file is part of the coreboot project.
##
## Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>
##
## 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.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##

chip northbridge/intel/i440bx		# Northbridge
  device cpu_cluster 0 on		# APIC cluster
    chip cpu/intel/slot_1		# CPU
      device lapic 0 on end		# APIC
    end
  end
  device domain 0 on		# PCI domain
    device pci 0.0 on end		# Host bridge
    device pci 1.0 on end		# PCI/AGP bridge
    chip southbridge/intel/i82371eb	# Southbridge
      device pci 7.0 on			# ISA bridge
        chip superio/ite/it8671f	# Super I/O
          device pnp 370.0 on		# Floppy
            io 0x60 = 0x3f0
            irq 0x70 = 6
            drq 0x74 = 2
          end
          device pnp 370.1 on		# COM1
            io 0x60 = 0x3f8
            irq 0x70 = 4
          end
          device pnp 370.2 on		# COM2
            io 0x60 = 0x2f8
            irq 0x70 = 3
          end
          device pnp 370.3 on		# Parallel port
            io 0x60 = 0x378
            irq 0x70 = 7
          end
          device pnp 370.5 on		# PS/2 keyboard
            io 0x60 = 0x60
            io 0x62 = 0x64
            irq 0x70 = 1
          end
          device pnp 370.6 on           # PS/2 mouse
            irq 0x70 = 12
          end
        end
      end
      device pci 7.1 on	end		# IDE
      device pci 7.2 on	end		# USB
      device pci 7.3 on end		# ACPI
      register "ide0_enable" = "1"
      register "ide1_enable" = "1"
      register "ide_legacy_enable" = "1"
      # Enable UDMA/33 for higher speed if your IDE device(s) support it.
      register "ide0_drive0_udma33_enable" = "0"
      register "ide0_drive1_udma33_enable" = "0"
      register "ide1_drive0_udma33_enable" = "0"
      register "ide1_drive1_udma33_enable" = "0"
    end
  end
end
