coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
early_kempld.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <stdint.h>
4 #include <arch/io.h>
5 #include <delay.h>
6 
7 #include "chip.h"
8 #include "kempld.h"
9 #include "kempld_internal.h"
10 
11 void kempld_write8(const uint8_t addr, const uint8_t data)
12 {
14  outb(data, KEMPLD_DAT);
15 }
16 
18 {
20  return inb(KEMPLD_DAT);
21 }
22 
23 int kempld_get_mutex(int timeout_ms)
24 {
25  while (inb(KEMPLD_IDX) & KEMPLD_MUTEX_KEY && timeout_ms--)
26  mdelay(1);
27  return timeout_ms;
28 }
29 
31 {
33 }
34 
36 {
37  if (!CONFIG(CONSOLE_SERIAL))
38  return;
39 
40  if (kempld_get_mutex(100) < 0)
41  return;
42 
43  switch (CONFIG_UART_FOR_CONSOLE) {
44  case 0:
47  break;
48  case 1:
51  break;
52  default:
53  break;
54  }
55 
57 }
static u32 addr
Definition: cirrus.c:14
void mdelay(unsigned int msecs)
Definition: delay.c:2
u8 inb(u16 port)
void outb(u8 val, u16 port)
@ CONFIG
Definition: dsi_common.h:201
void kempld_write8(const uint8_t addr, const uint8_t data)
Definition: early_kempld.c:11
int kempld_get_mutex(int timeout_ms)
Definition: early_kempld.c:23
void kempld_release_mutex(void)
Definition: early_kempld.c:30
void kempld_enable_uart_for_console(void)
Definition: early_kempld.c:35
uint8_t kempld_read8(const uint8_t addr)
Definition: early_kempld.c:17
@ KEMPLD_UART_2F8
Definition: chip.h:18
@ KEMPLD_UART_3F8
Definition: chip.h:17
#define KEMPLD_UART_0
#define KEMPLD_UART_1
#define KEMPLD_IDX
#define KEMPLD_MUTEX_KEY
#define KEMPLD_DAT
#define KEMPLD_UART_ENABLE
#define KEMPLD_UART_IO_SHIFT
unsigned char uint8_t
Definition: stdint.h:8