blob: 75f736a6b8d678ff437959499bcbb6672491f4b3 [file] [log] [blame]
Angel Ponsc80e3502020-04-03 01:21:49 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Stefan Reinauer7cfa7f92010-05-16 14:24:41 +00002
Stefan Reinauer7cfa7f92010-05-16 14:24:41 +00003#include <device/device.h>
Kyösti Mälkkif1b58b72019-03-01 13:43:02 +02004#include <device/pci_ops.h>
Patrick Georgi33cfe9b2014-09-06 17:23:30 +02005#include <drivers/intel/gma/int15.h>
Vladimir Serbinenko6a3a8ce2014-08-17 23:48:42 +02006
Stefan Reinauer7cfa7f92010-05-16 14:24:41 +00007
Sven Schnelle7592e8b2011-01-27 11:43:03 +00008#include "ec_oem.c"
Stefan Reinauer7cfa7f92010-05-16 14:24:41 +00009
Vladimir Serbinenko0e646172014-08-31 00:27:05 +020010#include "mainboard.h"
11
Stefan Reinauer7cfa7f92010-05-16 14:24:41 +000012#define MAX_LCD_BRIGHTNESS 0xd8
13
Stefan Reinauer5ff7c132011-10-31 12:56:45 -070014static void ec_enable(void)
Stefan Reinauer7cfa7f92010-05-16 14:24:41 +000015{
16 u16 keymap;
17 /* Enable Hotkey SCI */
18
19 /* Fn key map; F1 = [0] ... F12 = [11] */
20 keymap = 0x5f1;
21 send_ec_oem_command(0x45);
22 send_ec_oem_data(0x09); // SCI
23 // send_ec_oem_data(0x08); // SMI#
24 send_ec_oem_data(keymap >> 8);
25 send_ec_oem_data(keymap & 0xff);
26
27 /* Enable Backlight */
28 ec_write(0x17, MAX_LCD_BRIGHTNESS);
29
30 /* Notify EC system is in ACPI mode */
31 send_ec_oem_command(0x5e);
32 send_ec_oem_data(0xea);
33 send_ec_oem_data(0x0c);
34 send_ec_oem_data(0x01);
35}
36
Elyes HAOUAS5bb159a2018-05-04 20:17:55 +020037static void mainboard_init(struct device *dev)
Stefan Reinauer7cfa7f92010-05-16 14:24:41 +000038{
39 ec_enable();
Patrick Georgi33cfe9b2014-09-06 17:23:30 +020040 install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_TXT_STRETCH, 0, 3);
Stefan Reinauer7cfa7f92010-05-16 14:24:41 +000041}
42
Elyes HAOUAS5bb159a2018-05-04 20:17:55 +020043static void mainboard_enable(struct device *dev)
Stefan Reinauer7cfa7f92010-05-16 14:24:41 +000044{
45 dev->ops->init = mainboard_init;
Vladimir Serbinenko0e646172014-08-31 00:27:05 +020046 dev->ops->write_acpi_tables = mainboard_write_acpi_tables;
Stefan Reinauer7cfa7f92010-05-16 14:24:41 +000047}
48
Stefan Reinauer7cfa7f92010-05-16 14:24:41 +000049struct chip_operations mainboard_ops = {
Stefan Reinauer7cfa7f92010-05-16 14:24:41 +000050 .enable_dev = mainboard_enable,
51};