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 <smbios.h>
5 #include "ec.h"
6 #include <variant/onboard.h>
7 #include <soc/gpio.h>
8 #include <soc/int15.h>
9 #include <bootstate.h>
10 
11 static void mainboard_init(struct device *dev)
12 {
14 #if CONFIG(BOARD_GOOGLE_NINJA) || CONFIG(BOARD_GOOGLE_SUMO)
15  lan_init();
16 #endif
17 }
18 
19 static int mainboard_smbios_data(struct device *dev, int *handle,
20  unsigned long *current)
21 {
22  int len = 0;
23 #ifdef BOARD_TRACKPAD_NAME
24  len += smbios_write_type41(
25  current, handle,
26  BOARD_TRACKPAD_NAME, /* name */
27  BOARD_TRACKPAD_IRQ, /* instance */
28  BOARD_TRACKPAD_I2C_BUS, /* segment */
29  BOARD_TRACKPAD_I2C_ADDR, /* bus */
30  0, /* device */
31  0, /* function */
32  SMBIOS_DEVICE_TYPE_OTHER); /* device type */
33 #endif
34 #ifdef BOARD_TOUCHSCREEN_NAME
35  len += smbios_write_type41(
36  current, handle,
37  BOARD_TOUCHSCREEN_NAME, /* name */
38  BOARD_TOUCHSCREEN_IRQ, /* instance */
39  BOARD_TOUCHSCREEN_I2C_BUS, /* segment */
41  0, /* device */
42  0, /* function */
43  SMBIOS_DEVICE_TYPE_OTHER); /* device type */
44 #endif
45  return len;
46 }
47 
48 // mainboard_enable is executed as first thing after
49 // enumerate_buses().
50 
51 static void mainboard_enable(struct device *dev)
52 {
53  dev->ops->init = mainboard_init;
54  dev->ops->get_smbios_data = mainboard_smbios_data;
55 
56  /* Install custom int15 handler for VGA OPROM */
57  if (CONFIG(VGA_ROM_RUN))
59 }
60 
63 };
64 
65 static void edp_vdden_cb(void *unused)
66 {
68 }
69 
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
@ BS_DEV_INIT
Definition: bootstate.h:83
@ BS_ON_EXIT
Definition: bootstate.h:96
BOOT_STATE_INIT_ENTRY(BS_POST_DEVICE, BS_ON_EXIT, sch5545_ec_hwm_init, NULL)
@ CONFIG
Definition: dsi_common.h:201
void mainboard_ec_init(void)
Definition: ec.c:8
__weak void lan_init(void)
Definition: mainboard.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
static void mainboard_init(struct device *dev)
Definition: mainboard.c:11
static int mainboard_smbios_data(struct device *dev, int *handle, unsigned long *current)
Definition: mainboard.c:19
static void mainboard_enable(struct device *dev)
Definition: mainboard.c:51
static void edp_vdden_cb(void *unused)
Definition: mainboard.c:65
@ SMBIOS_DEVICE_TYPE_OTHER
Definition: smbios.h:940
#define SOC_DDI1_VDDEN_PAD
Definition: gpio.h:373
#define PAD_FUNC2
Definition: gpio.h:109
static void ncore_select_func(int pad, int func)
Definition: gpio.h:380
void install_baytrail_vga_int15_handler(void)
Definition: int15.c:92
#define NULL
Definition: stddef.h:19
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