int mainboard_io_trap_handler(int smif) { static int smm_initialized; if (!smm_initialized) { mainboard_smm_init(); smm_initialized = 1; } switch (smif) { case SMI_DOCK_CONNECT: ec_clr_bit(0x03, 2); udelay(250000); dock_connect(); ec_set_bit(0x03, 2); /* set dock LED to indicate status */ ec_write(0x0c, 0x09); ec_write(0x0c, 0x88); break; case SMI_DOCK_DISCONNECT: ec_clr_bit(0x03, 2); dock_disconnect(); break; default: return 0; } /* On success, the IO Trap Handler returns 1 * On failure, the IO Trap Handler returns a value != 1 */ return 1; }
int mainboard_io_trap_handler(int smif) { static int smm_initialized; if (!smm_initialized) { mainboard_smm_init(); smm_initialized = 1; } switch (smif) { case SMI_DOCK_CONNECT: /* If there's an legacy I/O module present, we're not * allowed to connect the Docking LPC Bus, as both Super I/O * chips are using 0x2e as base address. */ if (legacy_io_present()) break; if (!dock_connect()) { /* set dock LED to indicate status */ ec_write(0x0c, 0x08); ec_write(0x0c, 0x89); } else { /* blink dock LED to indicate failure */ ec_write(0x0c, 0xc8); ec_write(0x0c, 0x09); } break; case SMI_DOCK_DISCONNECT: dock_disconnect(); ec_write(0x0c, 0x09); ec_write(0x0c, 0x08); break; case SMI_BRIGHTNESS_UP: mainboard_smi_brightness_up(); break; case SMI_BRIGHTNESS_DOWN: mainboard_smi_brightness_down(); break; default: return 0; } /* On success, the IO Trap Handler returns 1 * On failure, the IO Trap Handler returns a value != 1 */ return 1; }