Index: src/mainboard/msi/ms7260/Config.lb =================================================================== --- src/mainboard/msi/ms7260/Config.lb (Revision 3845) +++ src/mainboard/msi/ms7260/Config.lb (Arbeitskopie) @@ -181,47 +181,49 @@ chip southbridge/nvidia/mcp55 # Southbridge device pci 0.0 on end # HT device pci 1.0 on # LPC - chip superio/winbond/w83627ehg # Super I/O - device pnp 4e.0 on # Floppy + chip superio/ite/it8716f # Super I/O + device pnp 2e.0 on # Floppy io 0x60 = 0x3f0 irq 0x70 = 6 drq 0x74 = 2 end - device pnp 4e.1 on # Parallel port - io 0x60 = 0x378 - irq 0x70 = 7 - end - device pnp 4e.2 on # Com1 + device pnp 2e.1 on # Com1 io 0x60 = 0x3f8 irq 0x70 = 4 end - device pnp 4e.3 on # Com2 / IrDA + device pnp 2e.2 on # Com2 / IrDA io 0x60 = 0x2f8 irq 0x70 = 3 end - device pnp 4e.5 on # PS/2 keyboard + device pnp 2e.3 on # Parallel port + io 0x60 = 0x378 + irq 0x70 = 7 + end + device pnp 2e.4 on # Environment controller + io 0x60 = 0x290 + end + device pnp 2e.5 on # PS/2 keyboard io 0x60 = 0x60 io 0x62 = 0x64 - irq 0x70 = 1 # PS/2 keyboard IRQ - irq 0x72 = 12 # PS/2 mouse IRQ + irq 0x70 = 1 end - device pnp 4e.6 off # Serial flash interface - # io 0x62 = 0x100 + device pnp 2e.6 on # PS/2 mouse + irq 0x70 = 12 end - device pnp 4e.7 off # GPIO1/6, game port, MIDI port - # io 0x60 = 0x220 # Datasheet: 0x201 - # io 0x62 = 0x300 # Datasheet: 0x330 - # irq 0x70 = 9 + device pnp 2e.7 on # GPIO + io 0x60 = 0x0008 # TODO: Check if this works! end - device pnp 4e.8 off # WDTO#, PLED + device pnp 2e.8 on # MIDI + io 0x60 = 0x300 # TODO: Check if this works! + irq 0x70 = 10 end - device pnp 4e.9 off # GPIO2/3/4/5, SUSLED + device pnp 2e.9 on # Game port + io 0x60 = 0x201 # TODO: Check if this works! end - device pnp 4e.a off # ACPI + device pnp 2e.a on # Consumer IR + io 0x60 = 0x310 # TODO: Check if this works! + irq 0x70 = 11 end - device pnp 4e.b on # HWM (for lm-sensors) - io 0x60 = 0xa10 - end end end device pci 1.1 on # SM 0 @@ -283,15 +285,15 @@ device pci 4.0 on end # IDE device pci 5.0 on end # SATA 0 device pci 5.1 on end # SATA 1 - device pci 5.2 off end # SATA 2 (N/A on this board) + device pci 5.2 on end # SATA 2 (TODO: available?) device pci 6.0 on end # PCI device pci 6.1 on end # AZA (HD Audio) device pci 8.0 on end # NIC - device pci 9.0 off end # NIC (N/A on this board) - device pci a.0 off end # PCI E 5 (N/A on this board?) - device pci b.0 on end # PCI E 4 - device pci c.0 on end # PCI E 3 - device pci d.0 on end # PCI E 2 + device pci 9.0 on end # NIC (TODO: available?) + # device pci a.0 on end # PCI E 5 (TODO: available?) + # device pci b.0 on end # PCI E 4 (TODO: available?) + # device pci c.0 on end # PCI E 3 (TODO: available?) + # device pci d.0 on end # PCI E 2 (TODO: available?) device pci e.0 on end # PCI E 1 device pci f.0 on end # PCI E 0 register "ide0_enable" = "1" Index: src/mainboard/msi/ms7260/mptable.c =================================================================== --- src/mainboard/msi/ms7260/mptable.c (Revision 3845) +++ src/mainboard/msi/ms7260/mptable.c (Arbeitskopie) @@ -36,8 +36,8 @@ void *smp_write_config_table(void *v) { static const char sig[4] = "PCMP"; - static const char oem[8] = "MSI "; - static const char productid[12] = "MS-7260 "; + static const char oem[8] = "ASUS "; + static const char productid[12] = "M2N-SLI Delu"; struct mp_config_table *mc; unsigned int sbdn; int i, j; Index: src/mainboard/msi/ms7260/Options.lb =================================================================== --- src/mainboard/msi/ms7260/Options.lb (Revision 3845) +++ src/mainboard/msi/ms7260/Options.lb (Arbeitskopie) @@ -166,10 +166,10 @@ default MEM_TRAIN_SEQ = 2 default WAIT_BEFORE_CPUS_INIT = 0 default CONFIG_IOAPIC = 1 -default MAINBOARD_PART_NUMBER = "K9N Neo (MS-7260)" -default MAINBOARD_VENDOR = "MSI" -default MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID = 0x1462 -default MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID = 0x7260 +default MAINBOARD_PART_NUMBER = "ASUS M2N SLI Deluxe" +default MAINBOARD_VENDOR = "ASUS" +default MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID = 0x1462 # FIXME +default MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID = 0x7260 # FIXME default ROM_IMAGE_SIZE = 65536 default STACK_SIZE = 0x2000 default HEAP_SIZE = 0x8000 Index: src/mainboard/msi/ms7260/mainboard.c =================================================================== --- src/mainboard/msi/ms7260/mainboard.c (Revision 3845) +++ src/mainboard/msi/ms7260/mainboard.c (Arbeitskopie) @@ -23,6 +23,6 @@ #if CONFIG_CHIP_NAME == 1 struct chip_operations mainboard_msi_ms7260_ops = { - CHIP_NAME("MSI K9N Neo (MS-7260) Mainboard") + CHIP_NAME("ASUS M2N-SLI Deluxe Mainboard") }; #endif Index: src/mainboard/msi/ms7260/cache_as_ram_auto.c =================================================================== --- src/mainboard/msi/ms7260/cache_as_ram_auto.c (Revision 3845) +++ src/mainboard/msi/ms7260/cache_as_ram_auto.c (Arbeitskopie) @@ -78,8 +78,8 @@ #include "cpu/x86/lapic/boot_cpu.c" #include "northbridge/amd/amdk8/reset_test.c" -#include "superio/winbond/w83627ehg/w83627ehg_early_serial.c" -#include "superio/winbond/w83627ehg/w83627ehg_early_init.c" +#include "superio/ite/it8716f/it8716f_early_serial.c" +#include "superio/ite/it8716f/it8716f_early_init.c" #if USE_FAILOVER_IMAGE == 0 @@ -91,8 +91,7 @@ #include "cpu/amd/mtrr/amd_earlymtrr.c" #include "northbridge/amd/amdk8/setup_resource_map.c" -/* Yes, on the MSI K9N Neo (MS-7260) the Super I/O is at 0x4e! */ -#define SERIAL_DEV PNP_DEV(0x4e, W83627EHG_SP1) +#define SERIAL_DEV PNP_DEV(0x2e, IT8716F_SP1) #include "southbridge/nvidia/mcp55/mcp55_early_ctrl.c" @@ -244,12 +243,9 @@ if (bist == 0) bsp_apicid = init_cpus(cpu_init_detectedx, sysinfo); - /* FIXME: This should be part of the Super I/O code/config. */ - pnp_enter_ext_func_mode(SERIAL_DEV); - /* Switch CLKSEL to 24MHz (default is 48MHz). Needed for serial! */ - pnp_write_config(SERIAL_DEV, 0x24, 0); - w83627ehg_enable_dev(SERIAL_DEV, TTYS0_BASE); - pnp_exit_ext_func_mode(SERIAL_DEV); + it8716f_24mhz_clkin(SERIAL_DEV); + it8716f_kill_watchdog(SERIAL_DEV); + it8716f_enable_serial(SERIAL_DEV, TTYS0_BASE); setup_mb_resource_map(); uart_init(); Index: src/superio/ite/it8716f/it8716f_early_init.c =================================================================== --- src/superio/ite/it8716f/it8716f_early_init.c (Revision 3845) +++ src/superio/ite/it8716f/it8716f_early_init.c (Arbeitskopie) @@ -22,17 +22,57 @@ #include #include "it8716f.h" +#define IT8716F_CONFIG_REG_CC 0x02 /* Configure Control (write-only). */ +#define IT8716F_CONFIG_REG_LDN 0x07 /* Logical Device Number */ +#define IT8716F_CONFIG_REG_CLOCKSEL 0x23 /* Clock Selection */ +#define IT8716F_CONFIG_REG_WATCHDOG 0x72 /* Watchdog control */ + +static void it8716f_sio_write(u8 ldn, u8 index, u8 value) +{ + outb(IT8716F_CONFIG_REG_LDN, SIO_BASE); + outb(ldn, SIO_DATA); + outb(index, SIO_BASE); + outb(value, SIO_DATA); +} + +static void it8716f_enter_conf(device_t dev) +{ + u16 port = dev >> 8; + outb(0x87, port); + outb(0x01, port); + outb(0x55, port); + (port == 0x4e) ? outb(0xaa, port) : outb(0x55, port); +} + +static void it8716f_exit_conf(void) +{ + it8716f_sio_write(0x00, IT8716F_CONFIG_REG_CC, 0x02); +} + +static void it8716f_24mhz_clkin(device_t dev) +{ + it8716f_enter_conf(dev); + it8716f_sio_write(0x00, IT8716F_CONFIG_REG_CLOCKSEL, 0x1); + it8716f_exit_conf(); +} + +static void it8716f_kill_watchdog(device_t dev) +{ + it8716f_enter_conf(dev); + it8716f_sio_write(0x07, IT8716F_CONFIG_REG_WATCHDOG, 0x00); + it8716f_exit_conf(); +} + static void it8716f_disable_dev(device_t dev) { pnp_set_logical_device(dev); pnp_set_enable(dev, 0); } -static void it8716f_enable_dev(device_t dev, unsigned iobase) +static void it8716f_enable_dev(device_t dev, u16 iobase) { pnp_set_logical_device(dev); pnp_set_enable(dev, 0); pnp_set_iobase(dev, PNP_IDX_IO0, iobase); pnp_set_enable(dev, 1); } -