coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
gpio.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <console/console.h>
4 #include <soc/car.h>
5 #include <soc/ramstage.h>
6 #include "reg_access.h"
7 #include "gen1.h"
8 #include "gen2.h"
9 
11 {
12  const struct reg_script *script;
13 
14  /* Initialize the GPIO controllers */
15  if (CONFIG(GALILEO_GEN2))
16  script = gen2_gpio_init;
17  else
18  script = gen1_gpio_init;
19  reg_script_run(script);
20 
21  /* Initialize the RXD and TXD paths for UART0 */
22  if (CONFIG(ENABLE_BUILTIN_HSUART0)) {
23  if (CONFIG(GALILEO_GEN2))
24  script = gen2_hsuart0;
25  else
26  script = (reg_legacy_gpio_read(
30  reg_script_run(script);
31  }
32 }
33 
35 {
36  const struct reg_script *script;
37 
38  printk(BIOS_INFO, "Galileo I2C chip initialization\n");
39 
40  /* Determine the correct script for the board */
41  if (CONFIG(GALILEO_GEN2))
42  script = gen2_i2c_init;
43  else
44  /* Determine which I2C address is in use */
48 
49  /* Initialize the I2C chips */
50  reg_script_run(script);
51 }
52 
54 {
55  uint32_t pin_number;
57 
58  /* Determine the correct PCIe reset pin */
59  if (CONFIG(GALILEO_GEN2))
60  pin_number = GEN2_PCI_RESET_RESUMEWELL_GPIO;
61  else
62  pin_number = GEN1_PCI_RESET_RESUMEWELL_GPIO;
63 
64  /* Update the PCIe reset value */
66  value = (value & ~(1 << pin_number)) | ((pin_value & 1) << pin_number);
68 }
#define R_QNC_GPIO_RGLVL_RESUME_WELL
Definition: QuarkNcSocId.h:477
pte_t value
Definition: mmu.c:91
#define printk(level,...)
Definition: stdlib.h:16
@ CONFIG
Definition: dsi_common.h:201
static const struct reg_script gen1_hsuart0_0x21[]
Definition: gen1.h:74
static const struct reg_script gen1_gpio_init[]
Definition: gen1.h:9
#define GALILEO_DETERMINE_IOEXP_SLA_RESUMEWELL_GPIO
Definition: gen1.h:7
static const struct reg_script gen1_i2c_0x20_init[]
Definition: gen1.h:99
static const struct reg_script gen1_hsuart0_0x20[]
Definition: gen1.h:49
static const struct reg_script gen1_i2c_0x21_init[]
Definition: gen1.h:120
#define GEN1_PCI_RESET_RESUMEWELL_GPIO
Definition: gen1.h:4
static const struct reg_script gen2_gpio_init[]
Definition: gen2.h:6
static const struct reg_script gen2_hsuart0[]
Definition: gen2.h:42
#define GEN2_PCI_RESET_RESUMEWELL_GPIO
Definition: gen2.h:4
static const struct reg_script gen2_i2c_init[]
Definition: gen2.h:64
#define BIOS_INFO
BIOS_INFO - Expected events.
Definition: loglevel.h:113
void mainboard_gpio_i2c_init(struct device *dev)
Definition: gpio.c:34
void mainboard_gpio_pcie_reset(uint32_t pin_value)
Definition: gpio.c:53
void car_mainboard_pre_console_init(void)
Definition: gpio.c:10
void reg_script_run(const struct reg_script *script)
Definition: reg_script.c:700
uint32_t reg_legacy_gpio_read(uint32_t reg_address)
Definition: reg_access.c:208
void reg_legacy_gpio_write(uint32_t reg_address, uint32_t value)
Definition: reg_access.c:214
unsigned int uint32_t
Definition: stdint.h:14
Definition: device.h:107
struct device * dev
Definition: reg_script.h:78