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 <smbios.h>
4 #include <cpu/x86/smm.h>
5 #include <device/device.h>
7 #include <acpi/acpi.h>
9 #include "ec.h"
10 #include "onboard.h"
11 
13 {
14  /* Call SMM finalize() handlers before resume */
16 }
17 
18 static void mainboard_init(struct device *dev)
19 {
21 }
22 
23 static int mainboard_smbios_data(struct device *dev, int *handle,
24  unsigned long *current)
25 {
26  int len = 0;
27 
28  len += smbios_write_type41(
29  current, handle,
30  BOARD_LIGHTSENSOR_NAME, /* name */
31  BOARD_LIGHTSENSOR_IRQ, /* instance */
32  BOARD_LIGHTSENSOR_I2C_BUS, /* segment */
34  0, /* device */
35  0, /* function */
36  SMBIOS_DEVICE_TYPE_OTHER); /* device type */
37 
38  len += smbios_write_type41(
39  current, handle,
40  BOARD_TRACKPAD_NAME, /* name */
41  BOARD_TRACKPAD_IRQ, /* instance */
42  BOARD_TRACKPAD_I2C_BUS, /* segment */
43  BOARD_TRACKPAD_I2C_ADDR, /* bus */
44  0, /* device */
45  0, /* function */
46  SMBIOS_DEVICE_TYPE_OTHER); /* device type */
47 
48  len += smbios_write_type41(
49  current, handle,
50  BOARD_TOUCHSCREEN_NAME, /* name */
51  BOARD_TOUCHSCREEN_IRQ, /* instance */
52  BOARD_TOUCHSCREEN_I2C_BUS, /* segment */
54  0, /* device */
55  0, /* function */
56  SMBIOS_DEVICE_TYPE_OTHER); /* device type */
57 
58  return len;
59 }
60 
61 // mainboard_enable is executed as first thing after
62 // enumerate_buses().
63 
64 static void mainboard_enable(struct device *dev)
65 {
66  dev->ops->init = mainboard_init;
67  dev->ops->get_smbios_data = mainboard_smbios_data;
69 }
70 
73 };
struct chip_operations mainboard_ops
Definition: mainboard.c:19
int smbios_write_type41(unsigned long *current, int *handle, const char *name, u8 instance, u16 segment, u8 bus, u8 device, u8 function, u8 device_type)
Definition: smbios.c:1087
void install_intel_vga_int15_handler(int active_lfp_, int pfit_, int display_, int panel_type_)
Definition: int15.c:101
@ GMA_INT15_BOOT_DISPLAY_DEFAULT
Definition: int15.h:6
@ GMA_INT15_ACTIVE_LFP_EDP
Definition: int15.h:27
@ GMA_INT15_PANEL_FIT_CENTERING
Definition: int15.h:18
void mainboard_ec_init(void)
Definition: ec.c:8
#define BOARD_TRACKPAD_NAME
Definition: onboard.h:6
#define BOARD_TRACKPAD_I2C_BUS
Definition: onboard.h:9
#define BOARD_TRACKPAD_I2C_ADDR
Definition: onboard.h:10
#define BOARD_TRACKPAD_IRQ
Definition: onboard.h:7
#define BOARD_TOUCHSCREEN_IRQ
Definition: onboard.h:14
#define BOARD_TOUCHSCREEN_I2C_ADDR
Definition: onboard.h:17
#define BOARD_TOUCHSCREEN_NAME
Definition: onboard.h:13
#define BOARD_TOUCHSCREEN_I2C_BUS
Definition: onboard.h:16
void mainboard_suspend_resume(void)
Definition: mainboard.c:10
static void mainboard_init(struct device *dev)
Definition: mainboard.c:18
static int mainboard_smbios_data(struct device *dev, int *handle, unsigned long *current)
Definition: mainboard.c:23
static void mainboard_enable(struct device *dev)
Definition: mainboard.c:64
#define BOARD_LIGHTSENSOR_I2C_BUS
Definition: onboard.h:8
#define APM_CNT_FINALIZE
Definition: smm.h:24
@ SMBIOS_DEVICE_TYPE_OTHER
Definition: smbios.h:940
int apm_control(u8 cmd)
Definition: smi_trigger.c:31
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