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 <types.h>
4 #include <cpu/x86/smm.h>
5 #include <device/device.h>
7 #include <acpi/acpi.h>
8 #include "onboard.h"
9 #include "ec.h"
11 #include <smbios.h>
12 #include <ec/compal/ene932/ec.h>
13 
15 {
16  /* Enable ACPI mode before OS resume */
18 }
19 
20 static void mainboard_init(struct device *dev)
21 {
22  /* Initialize the Embedded Controller */
24 }
25 
26 static int parrot_onboard_smbios_data(struct device *dev, int *handle,
27  unsigned long *current)
28 {
29  int len = 0;
30  u8 hardware_version = parrot_rev();
31  if (hardware_version < 0x2) { /* DVT vs PVT */
32  len += smbios_write_type41(
33  current, handle,
34  BOARD_TRACKPAD_NAME, /* name */
35  BOARD_TRACKPAD_IRQ_DVT, /* instance */
36  0, /* segment */
37  BOARD_TRACKPAD_I2C_ADDR, /* bus */
38  0, /* device */
39  0, /* function */
40  SMBIOS_DEVICE_TYPE_OTHER); /* device type */
41  } else {
42  len += smbios_write_type41(
43  current, handle,
44  BOARD_TRACKPAD_NAME, /* name */
45  BOARD_TRACKPAD_IRQ_PVT, /* instance */
46  0, /* segment */
47  BOARD_TRACKPAD_I2C_ADDR, /* bus */
48  0, /* device */
49  0, /* function */
50  SMBIOS_DEVICE_TYPE_OTHER); /* device type */
51  }
52 
53  return len;
54 }
55 
56 // mainboard_enable is executed as first thing after
57 // enumerate_buses().
58 
59 static void mainboard_enable(struct device *dev)
60 {
61  dev->ops->init = mainboard_init;
62  dev->ops->get_smbios_data = parrot_onboard_smbios_data;
64 }
65 
68 };
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_DEFAULT
Definition: int15.h:17
#define BOARD_TRACKPAD_NAME
Definition: onboard.h:6
#define BOARD_TRACKPAD_I2C_ADDR
Definition: onboard.h:10
void mainboard_suspend_resume(void)
Definition: mainboard.c:10
static void mainboard_init(struct device *dev)
Definition: mainboard.c:20
static int parrot_onboard_smbios_data(struct device *dev, int *handle, unsigned long *current)
Definition: mainboard.c:26
static void mainboard_enable(struct device *dev)
Definition: mainboard.c:59
#define BOARD_TRACKPAD_IRQ_DVT
Definition: onboard.h:8
#define BOARD_TRACKPAD_IRQ_PVT
Definition: onboard.h:9
#define APM_CNT_ACPI_ENABLE
Definition: smm.h:22
@ SMBIOS_DEVICE_TYPE_OTHER
Definition: smbios.h:940
u8 parrot_rev(void)
Definition: ec.c:55
void parrot_ec_init(void)
Definition: ec.c:9
int apm_control(u8 cmd)
Definition: smi_trigger.c:31
uint8_t u8
Definition: stdint.h:45
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