coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
azalia_device.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef DEVICE_AZALIA_H
4 #define DEVICE_AZALIA_H
5 
6 #include <acpi/acpi.h>
7 #include <device/mmio.h>
8 #include <device/device.h>
9 #include <stdint.h>
10 
11 #define HDA_GCAP_REG 0x00
12 #define HDA_GCTL_REG 0x08
13 #define HDA_GCTL_CRST (1 << 0)
14 #define HDA_STATESTS_REG 0x0e
15 #define HDA_IC_REG 0x60
16 #define HDA_IR_REG 0x64
17 #define HDA_ICII_REG 0x68
18 #define HDA_ICII_BUSY (1 << 0)
19 #define HDA_ICII_VALID (1 << 1)
20 
21 int azalia_set_bits(void *port, u32 mask, u32 val);
24 u32 azalia_find_verb(const u32 *verb_table, u32 verb_table_bytes, u32 viddid, const u32 **verb);
25 int azalia_program_verb_table(u8 *base, const u32 *verbs, u32 verb_size);
26 void azalia_codec_init(u8 *base, int addr, const u32 *verb_table, u32 verb_table_bytes);
27 void azalia_codecs_init(u8 *base, u16 codec_mask);
28 void azalia_audio_init(struct device *dev);
30 
31 /* Optional hook to program codec settings that are only known at runtime */
33 
34 extern const u32 cim_verb_data[];
35 extern const u32 cim_verb_data_size;
36 extern const u32 pc_beep_verbs[];
37 extern const u32 pc_beep_verbs_size;
38 
40  JACK = 0,
41  NC,
44 };
45 
52  RED,
57  WHITE = 0xe,
58  COLOR_OTHER = 0xf,
59 };
60 
66  RCA,
71  XLR,
74  TYPE_OTHER = 0xf
75 };
76 
78  LINE_OUT = 0,
81  CD,
87  AUX,
92  DEVICE_OTHER = 0xf,
93 };
94 
96  NA = 0,
106 };
107 
113 };
114 
115 #define AZALIA_PIN_DESC(conn, location2, location1, dev, type, color, no_presence_detect, \
116  association, sequence) \
117  (((conn) << 30) | \
118  ((location2) << 27) | \
119  ((location1) << 24) | \
120  ((dev) << 20) | \
121  ((type) << 16) | \
122  ((color) << 12) | \
123  ((no_presence_detect) << 8) | \
124  ((association) << 4) | \
125  ((sequence) << 0))
126 
127 #define AZALIA_ARRAY_SIZES const u32 pc_beep_verbs_size = \
128  ARRAY_SIZE(pc_beep_verbs); \
129  const u32 cim_verb_data_size = sizeof(cim_verb_data)
130 
131 #define AZALIA_VERB_12B(codec, pin, verb, val) \
132  ((codec) << 28 | (pin) << 20 | (verb) << 8 | (val))
133 
134 #define AZALIA_PIN_CFG(codec, pin, val) \
135  AZALIA_VERB_12B(codec, pin, 0x71c, ((val) >> 0) & 0xff), \
136  AZALIA_VERB_12B(codec, pin, 0x71d, ((val) >> 8) & 0xff), \
137  AZALIA_VERB_12B(codec, pin, 0x71e, ((val) >> 16) & 0xff), \
138  AZALIA_VERB_12B(codec, pin, 0x71f, ((val) >> 24) & 0xff)
139 
140 #define AZALIA_PIN_CFG_NC(n) (0x411111f0 | ((n) & 0xf))
141 
142 #define AZALIA_RESET(pin) \
143  AZALIA_VERB_12B(0, pin, 0x7ff, 0), \
144  AZALIA_VERB_12B(0, pin, 0x7ff, 0), \
145  AZALIA_VERB_12B(0, pin, 0x7ff, 0), \
146  AZALIA_VERB_12B(0, pin, 0x7ff, 0)
147 
148 #define AZALIA_SUBVENDOR(codec, val) \
149  AZALIA_VERB_12B(codec, 1, 0x720, ((val) >> 0) & 0xff), \
150  AZALIA_VERB_12B(codec, 1, 0x721, ((val) >> 8) & 0xff), \
151  AZALIA_VERB_12B(codec, 1, 0x722, ((val) >> 16) & 0xff), \
152  AZALIA_VERB_12B(codec, 1, 0x723, ((val) >> 24) & 0xff)
153 
154 #endif /* DEVICE_AZALIA_H */
int azalia_enter_reset(u8 *base)
Definition: azalia_device.c:38
const u32 cim_verb_data[]
Definition: hda_verb.c:5
azalia_pin_device
Definition: azalia_device.h:77
@ MIC_IN
Definition: azalia_device.h:88
@ LINE_IN
Definition: azalia_device.h:86
@ DIGITAL_OTHER_IN
Definition: azalia_device.h:91
@ AUX
Definition: azalia_device.h:87
@ MODEM_LINE_SIDE
Definition: azalia_device.h:84
@ DIGITAL_OTHER_OUT
Definition: azalia_device.h:83
@ SPDIF_IN
Definition: azalia_device.h:90
@ CD
Definition: azalia_device.h:81
@ TELEPHONY
Definition: azalia_device.h:89
@ SPEAKER
Definition: azalia_device.h:79
@ MODEM_HANDSET_SIDE
Definition: azalia_device.h:85
@ SPDIF_OUT
Definition: azalia_device.h:82
@ LINE_OUT
Definition: azalia_device.h:78
@ HP_OUT
Definition: azalia_device.h:80
@ DEVICE_OTHER
Definition: azalia_device.h:92
void mainboard_azalia_program_runtime_verbs(u8 *base, u32 viddid)
void azalia_codec_init(u8 *base, int addr, const u32 *verb_table, u32 verb_table_bytes)
const u32 cim_verb_data_size
Definition: hda_verb.c:39
const u32 pc_beep_verbs[]
Definition: hda_verb.c:37
azalia_pin_color
Definition: azalia_device.h:46
@ PINK
Definition: azalia_device.h:56
@ PURPLE
Definition: azalia_device.h:55
@ WHITE
Definition: azalia_device.h:57
@ BLUE
Definition: azalia_device.h:50
@ GREY
Definition: azalia_device.h:49
@ COLOR_OTHER
Definition: azalia_device.h:58
@ GREEN
Definition: azalia_device.h:51
@ COLOR_UNKNOWN
Definition: azalia_device.h:47
@ ORANGE
Definition: azalia_device.h:53
@ YELLOW
Definition: azalia_device.h:54
@ BLACK
Definition: azalia_device.h:48
@ RED
Definition: azalia_device.h:52
azalia_pin_location_2
@ SEPARATE_CHASSIS
@ INTERNAL
@ LOCATION_OTHER
@ EXTERNAL_PRIMARY_CHASSIS
azalia_pin_location_1
Definition: azalia_device.h:95
@ TOP
@ SPECIAL8
@ FRONT
Definition: azalia_device.h:98
@ REAR
Definition: azalia_device.h:97
@ BOTTOM
@ NA
Definition: azalia_device.h:96
@ SPECIAL9
@ LEFT
Definition: azalia_device.h:99
@ RIGHT
@ SPECIAL7
void azalia_audio_init(struct device *dev)
azalia_pin_type
Definition: azalia_device.h:61
@ OTHER_ANALOG
Definition: azalia_device.h:69
@ TYPE_OTHER
Definition: azalia_device.h:74
@ OTHER_DIGITAL
Definition: azalia_device.h:68
@ TYPE_UNKNOWN
Definition: azalia_device.h:62
@ RCA
Definition: azalia_device.h:66
@ RJ_11
Definition: azalia_device.h:72
@ OPTICAL
Definition: azalia_device.h:67
@ STEREO_MONO_1_8
Definition: azalia_device.h:63
@ COMBINATION
Definition: azalia_device.h:73
@ XLR
Definition: azalia_device.h:71
@ MULTICHANNEL_ANALOG
Definition: azalia_device.h:70
@ ATAPI
Definition: azalia_device.h:65
@ STEREO_MONO_1_4
Definition: azalia_device.h:64
int azalia_set_bits(void *port, u32 mask, u32 val)
Definition: azalia_device.c:11
int azalia_program_verb_table(u8 *base, const u32 *verbs, u32 verb_size)
void azalia_codecs_init(u8 *base, u16 codec_mask)
struct device_operations default_azalia_audio_ops
int azalia_exit_reset(u8 *base)
Definition: azalia_device.c:44
u32 azalia_find_verb(const u32 *verb_table, u32 verb_table_bytes, u32 viddid, const u32 **verb)
azalia_pin_connection
Definition: azalia_device.h:39
@ JACK_AND_INTEGRATED
Definition: azalia_device.h:43
@ NC
Definition: azalia_device.h:41
@ JACK
Definition: azalia_device.h:40
@ INTEGRATED
Definition: azalia_device.h:42
const u32 pc_beep_verbs_size
Definition: hda_verb.c:38
static u32 addr
Definition: cirrus.c:14
port
Definition: i915.h:29
uintptr_t base
Definition: uart.c:17
static const int mask[4]
Definition: gpio.c:308
uint32_t u32
Definition: stdint.h:51
uint16_t u16
Definition: stdint.h:48
uint8_t u8
Definition: stdint.h:45
Definition: device.h:107
u8 val
Definition: sys.c:300