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 <device/device.h>
6 #include <acpi/acpi.h>
7 #include <ec/smsc/mec1308/ec.h>
8 #include "ec.h"
9 #include "onboard.h"
11 #include <smbios.h>
12 
14 {
15  /* Enable EC ACPI mode for the OS before resume */
18 }
19 
20 static void mainboard_init(struct device *dev)
21 {
22  /* Initialize the Embedded Controller */
23  lumpy_ec_init();
24 }
25 
26 static int lumpy_smbios_type41_irq(int *handle, unsigned long *current,
27  const char *name, u8 irq, u8 addr)
28 {
29  struct smbios_type41 *t = smbios_carve_table(*current,
31  sizeof(*t), *handle);
32 
35  t->device_status = 1;
36  t->device_type_instance = irq;
37  t->segment_group_number = 0;
38  t->bus_number = addr;
39  t->function_number = 0;
40  t->device_number = 0;
41 
42  const int len = smbios_full_table_len(&t->header, t->eos);
43  *current += len;
44  *handle += 1;
45  return len;
46 }
47 
48 
49 static int lumpy_onboard_smbios_data(struct device *dev, int *handle,
50  unsigned long *current)
51 {
52  int len = 0;
53 
54  len += lumpy_smbios_type41_irq(handle, current,
58 
59  len += lumpy_smbios_type41_irq(handle, current,
63 
64  return len;
65 }
66 
67 // mainboard_enable is executed as first thing after
68 // enumerate_buses().
69 
70 static void mainboard_enable(struct device *dev)
71 {
72  dev->ops->init = mainboard_init;
73  dev->ops->get_smbios_data = lumpy_onboard_smbios_data;
75 }
76 
79 };
struct chip_operations mainboard_ops
Definition: mainboard.c:19
const char * name
Definition: mmu.c:92
int smbios_add_string(u8 *start, const char *str)
Definition: smbios.c:40
void * smbios_carve_table(unsigned long start, u8 type, u8 length, u16 handle)
Definition: smbios.c:91
int smbios_full_table_len(struct smbios_header *header, u8 *str_table_start)
Definition: smbios.c:86
static u32 addr
Definition: cirrus.c:14
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_INT_LVDS
Definition: int15.h:25
@ GMA_INT15_PANEL_FIT_DEFAULT
Definition: int15.h:17
int send_ec_command(u8 command)
Definition: ec.c:13
#define BOARD_TRACKPAD_NAME
Definition: onboard.h:6
#define BOARD_TRACKPAD_I2C_ADDR
Definition: onboard.h:10
#define BOARD_TRACKPAD_IRQ
Definition: onboard.h:7
void mainboard_suspend_resume(void)
Definition: mainboard.c:10
@ SMBIOS_ONBOARD_DEVICES_EXTENDED_INFORMATION
Definition: smbios.h:255
@ SMBIOS_DEVICE_TYPE_OTHER
Definition: smbios.h:940
void lumpy_ec_init(void)
Definition: ec.c:8
#define EC_SMI_DISABLE
Definition: ec.h:8
#define EC_ACPI_ENABLE
Definition: ec.h:9
static void mainboard_init(struct device *dev)
Definition: mainboard.c:20
static int lumpy_smbios_type41_irq(int *handle, unsigned long *current, const char *name, u8 irq, u8 addr)
Definition: mainboard.c:26
static void mainboard_enable(struct device *dev)
Definition: mainboard.c:70
static int lumpy_onboard_smbios_data(struct device *dev, int *handle, unsigned long *current)
Definition: mainboard.c:49
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
struct smbios_header header
Definition: smbios.h:955
u8 bus_number
Definition: smbios.h:961
u8 device_type
Definition: smbios.h:957
u8 device_type_instance
Definition: smbios.h:959
u8 device_number
Definition: smbios.h:963
u8 reference_designation
Definition: smbios.h:956
u8 eos[2]
Definition: smbios.h:964
u8 device_status
Definition: smbios.h:958
u8 function_number
Definition: smbios.h:962
u16 segment_group_number
Definition: smbios.h:960