void mainboard_smi_gpi(u32 gpi_sts) { u8 source, hotkey; send_ec_oem_command(0x5c); source = recv_ec_oem_data(); switch (source) { case 0: // Some kind of ACK? break; case 1: send_ec_oem_command(0x59); hotkey = recv_ec_oem_data(); mainboard_smi_hotkey(hotkey); break; default: printk(BIOS_DEBUG, "EC SMI source: %02x\n", source); } }
static void ec_enable(void) { u16 keymap; /* Enable Hotkey SCI */ /* Fn key map; F1 = [0] ... F12 = [11] */ keymap = 0x5f1; send_ec_oem_command(0x45); send_ec_oem_data(0x09); // SCI // send_ec_oem_data(0x08); // SMI# send_ec_oem_data(keymap >> 8); send_ec_oem_data(keymap & 0xff); /* Enable Backlight */ ec_write(0x17, MAX_LCD_BRIGHTNESS); /* Notify EC system is in ACPI mode */ send_ec_oem_command(0x5e); send_ec_oem_data(0xea); send_ec_oem_data(0x0c); send_ec_oem_data(0x01); }