coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
acp_gen1.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <amdblocks/acp.h>
4 #include <amdblocks/chip.h>
5 #include <device/device.h>
6 #include <device/mmio.h>
7 #include <console/console.h>
8 #include "acp_def.h"
9 
10 /* ACP registers and associated fields */
11 #define ACP_I2S_PIN_CONFIG 0x1400 /* HDA, Soundwire, I2S */
12 #define PIN_CONFIG_MASK (7 << 0)
13 #define ACP_I2S_WAKE_EN 0x1414
14 #define WAKE_EN_MASK (1 << 0)
15 #define ACP_PME_EN 0x1418
16 #define PME_EN_MASK (1 << 0)
17 
18 static void acp_update32(uintptr_t bar, uint32_t reg, uint32_t clear, uint32_t set)
19 {
20  clrsetbits32((void *)(bar + reg), clear, set);
21 }
22 
23 void acp_init(struct device *dev)
24 {
25  const struct soc_amd_common_config *cfg = soc_get_common_config();
26  struct resource *res;
27  uintptr_t bar;
28 
29  res = dev->resource_list;
30  if (!res || !res->base) {
31  printk(BIOS_ERR, "Error, unable to configure pin in %s\n", __func__);
32  return;
33  }
34 
35  /* Set the proper I2S_PIN_CONFIG state */
36  bar = (uintptr_t)res->base;
38 
39  /* Enable ACP_PME_EN and ACP_I2S_WAKE_EN for I2S_WAKE event */
42 }
#define ACP_I2S_PIN_CONFIG
Definition: acp_gen1.c:11
#define PIN_CONFIG_MASK
Definition: acp_gen1.c:12
#define ACP_PME_EN
Definition: acp_gen1.c:15
#define PME_EN_MASK
Definition: acp_gen1.c:16
#define WAKE_EN_MASK
Definition: acp_gen1.c:14
void acp_init(struct device *dev)
Definition: acp_gen1.c:23
#define ACP_I2S_WAKE_EN
Definition: acp_gen1.c:13
static void acp_update32(uintptr_t bar, uint32_t reg, uint32_t clear, uint32_t set)
Definition: acp_gen1.c:18
const struct soc_amd_common_config * soc_get_common_config(void)
Definition: config.c:7
#define printk(level,...)
Definition: stdlib.h:16
#define clrsetbits32(addr, clear, set)
Definition: mmio.h:16
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
Definition: loglevel.h:72
unsigned int uint32_t
Definition: stdint.h:14
unsigned long uintptr_t
Definition: stdint.h:21
enum acp_config::@398 acp_pin_cfg
u8 acp_pme_enable
Definition: acp.h:38
u8 acp_i2s_wake_enable
Definition: acp.h:36
Definition: device.h:107
DEVTREE_CONST struct resource * resource_list
Definition: device.h:134
resource_t base
Definition: resource.h:45
struct acp_config acp_config
Definition: chip.h:42