1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
/*
* Copyright (c) 2002 Orion Hodson <orion@freebsd.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHERIN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _SYS_SOUND_PCI_VIA8233_H_
#define _SYS_SOUND_PCI_VIA8233_H_
/*
* VIA Technologies VT8233 Southbridge Audio Driver
*
* Documentation sources:
*
* V8233C specs. from VIA, gratefully received under NDA.
* AC97 R2.2 specs.
* ALSA driver (very useful comments)
*/
#define VIA_PCI_ACLINK_STAT 0x40
# define VIA_PCI_ACLINK_C11_READY 0x20
# define VIA_PCI_ACLINK_C10_READY 0x10
# define VIA_PCI_ACLINK_C01_READY 0x04
# define VIA_PCI_ACLINK_LOW_POWER 0x02
# define VIA_PCI_ACLINK_C00_READY 0x01
#define VIA_PCI_ACLINK_CTRL 0x41
# define VIA_PCI_ACLINK_EN 0x80
# define VIA_PCI_ACLINK_NRST 0x40
# define VIA_PCI_ACLINK_SYNC 0x20
# define VIA_PCI_ACLINK_SERIAL 0x10
# define VIA_PCI_ACLINK_VRATE 0x08
# define VIA_PCI_ACLINK_SGD 0x04
#define VIA_MC_SGD_STATUS 0x40
#define VIA_WR0_SGD_STATUS 0x60
#define VIA_WR1_SGD_STATUS 0x70
# define SGD_STATUS_ACTIVE 0x80
# define SGD_STATUS_AT_STOP 0x40
# define SGD_STATUS_TRIGGER_Q 0x08
# define SGD_STATUS_STOP_I_S 0x04
# define SGD_STATUS_EOL 0x02
# define SGD_STATUS_FLAG 0x01
# define SGD_STATUS_INTR (SGD_STATUS_EOL | SGD_STATUS_FLAG)
#define VIA_MC_SGD_CONTROL 0x41
#define VIA_WR0_SGD_CONTROL 0x61
#define VIA_WR1_SGD_CONTROL 0x71
# define SGD_CONTROL_START 0x80
# define SGD_CONTROL_STOP 0x40
# define SGD_CONTROL_AUTOSTART 0x20
# define SGD_CONTROL_PAUSE 0x08
# define SGD_CONTROL_I_STOP 0x04
# define SGD_CONTROL_I_EOL 0x02
# define SGD_CONTROL_I_FLAG 0x01
#define VIA_MC_SGD_FORMAT 0x42
# define MC_SGD_16BIT 0x80
# define MC_SGD_8BIT 0x00
# define MC_SGD_CHANNELS(x) (((x)& 0x07) << 4)
#define VIA_WR0_SGD_FORMAT 0x62
#define VIA_WR1_SGD_FORMAT 0x72
# define WR_FIFO_ENABLE 0x40
#define VIA_WR0_SGD_INPUT 0x63
#define VIA_WR1_SGD_INPUT 0x73
# define WR_LINE_IN 0x00
# define WR_MIC_IN 0x04
# define WR_PRIMARY_CODEC 0x00
# define WR_SECONDARY_CODEC1 0x01
# define WR_SECONDARY_CODEC2 0x02
# define WR_SECONDARY_CODEC3 0x03
#define VIA_MC_TABLE_PTR_BASE 0x44
#define VIA_WR0_TABLE_PTR_BASE 0x64
#define VIA_WR1_TABLE_PTR_BASE 0x74
#define VIA_MC_SLOT_SELECT 0x48
# define SLOT3(x) (x)
# define SLOT4(x) ((x) << 4)
# define SLOT7(x) ((x) << 8)
# define SLOT8(x) ((x) << 12)
# define SLOT6(x) ((x) << 16)
# define SLOT9(x) ((x) << 20)
#define VIA_MC_CURRENT_COUNT 0x4c
#define VIA_WR0_FORMAT 0x68
#define VIA_WR1_FORMAT 0x78
# define WR_FORMAT_STOP_INDEX 0xff000000
# define WR_FORMAT_STEREO 0x00100000
# define WR_FORMAT_16BIT 0x00200000
/* Relative offsets */
#define VIA_RP_STATUS 0x00
#define VIA_RP_CONTROL 0x01
#define VIA_RP_TABLE_PTR 0x04
#define VIA_RP_CURRENT_COUNT 0x0c
#define VIA_AC97_CONTROL 0x80
# define VIA_AC97_CODECID11 0xc0000000
# define VIA_AC97_CODECID10 0x80000000
# define VIA_AC97_CODECID01 0x40000000
# define VIA_AC97_CODEC11_VALID 0x20000000
# define VIA_AC97_CODEC10_VALID 0x10000000
# define VIA_AC97_CODEC01_VALID 0x08000000
# define VIA_AC97_CODEC00_VALID 0x02000000
# define VIA_AC97_BUSY 0x01000000
# define VIA_AC97_READ 0x00800000
# define VIA_AC97_INDEX(x) ((x) << 16)
# define VIA_AC97_DATA(x) ((x) & 0xffff)
#define VIA_CODEC_BUSY 0x01000000
#define VIA_CODEC_PRIVALID 0x02000000
#define VIA_CODEC_INDEX(x) ((x)<<16)
#endif /* SYS_SOUND_PCI_VIA8233_H_ */
|