coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mainboard.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <device/device.h>
4 #include <device/pci_ops.h>
6 
7 
8 #include "ec_oem.c"
9 
10 #include "mainboard.h"
11 
12 #define MAX_LCD_BRIGHTNESS 0xd8
13 
14 static void ec_enable(void)
15 {
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 */
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 
37 static void mainboard_init(struct device *dev)
38 {
39  ec_enable();
41 }
42 
43 // mainboard_enable is executed as first thing after
44 // enumerate_buses(). Is there no mainboard_init()?
45 static void mainboard_enable(struct device *dev)
46 {
47  dev->ops->init = mainboard_init;
48  dev->ops->write_acpi_tables = mainboard_write_acpi_tables;
49 }
50 
53 };
struct chip_operations mainboard_ops
Definition: mainboard.c:19
void install_intel_vga_int15_handler(int active_lfp_, int pfit_, int display_, int panel_type_)
Definition: int15.c:101
@ GMA_INT15_ACTIVE_LFP_INT_LVDS
Definition: int15.h:25
@ GMA_INT15_PANEL_FIT_TXT_STRETCH
Definition: int15.h:19
int ec_write(u8 addr, u8 data)
Definition: ec.c:115
int send_ec_oem_command(u8 command)
Definition: ec_oem.c:9
int send_ec_oem_data(u8 data)
Definition: ec_oem.c:29
static void mainboard_init(struct device *dev)
Definition: mainboard.c:37
static void ec_enable(void)
Definition: mainboard.c:14
#define MAX_LCD_BRIGHTNESS
Definition: mainboard.c:12
static void mainboard_enable(struct device *dev)
Definition: mainboard.c:45
static unsigned long mainboard_write_acpi_tables(const struct device *device, unsigned long current, acpi_rsdp_t *rsdp)
Definition: mainboard.c:26
uint16_t u16
Definition: stdint.h:48
void(* enable_dev)(struct device *dev)
Definition: device.h:24
void(* init)(struct device *dev)
Definition: device.h:42
Definition: device.h:107
struct device_operations * ops
Definition: device.h:143