xref: /netbsd-src/sys/arch/hpcmips/dev/ucb1200reg.h (revision ce099b40997c43048fb78bd578195f81d2456523)
1*ce099b40Smartin /*	$NetBSD: ucb1200reg.h,v 1.8 2008/04/28 20:23:21 martin Exp $ */
2ce3b031dSuch 
327a7fbffSuch /*-
458f851eeSuch  * Copyright (c) 2000 The NetBSD Foundation, Inc.
558f851eeSuch  * All rights reserved.
658f851eeSuch  *
758f851eeSuch  * This code is derived from software contributed to The NetBSD Foundation
858f851eeSuch  * by UCHIYAMA Yasushi.
9ce3b031dSuch  *
10ce3b031dSuch  * Redistribution and use in source and binary forms, with or without
11ce3b031dSuch  * modification, are permitted provided that the following conditions
12ce3b031dSuch  * are met:
13ce3b031dSuch  * 1. Redistributions of source code must retain the above copyright
14ce3b031dSuch  *    notice, this list of conditions and the following disclaimer.
1527a7fbffSuch  * 2. Redistributions in binary form must reproduce the above copyright
1627a7fbffSuch  *    notice, this list of conditions and the following disclaimer in the
1727a7fbffSuch  *    documentation and/or other materials provided with the distribution.
18ce3b031dSuch  *
1958f851eeSuch  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
2058f851eeSuch  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
2158f851eeSuch  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
2258f851eeSuch  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
2358f851eeSuch  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2458f851eeSuch  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2558f851eeSuch  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2658f851eeSuch  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2758f851eeSuch  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2858f851eeSuch  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2958f851eeSuch  * POSSIBILITY OF SUCH DAMAGE.
30ce3b031dSuch  */
31ce3b031dSuch 
32ce3b031dSuch /*
33ce3b031dSuch  * PHILIPS UCB1200 Advanced modem/audio analog front-end
34ce3b031dSuch  */
35ce3b031dSuch 
36ce3b031dSuch /* Internal register. access via SIB */
37ce3b031dSuch #define	UCB1200_IO_DATA_REG		0
38ce3b031dSuch #define	UCB1200_IO_DIR_REG		1
39ce3b031dSuch #define	UCB1200_POSINTEN_REG		2
40ce3b031dSuch #define	UCB1200_NEGINTEN_REG		3
41ce3b031dSuch #define	UCB1200_INTSTAT_REG		4
42ce3b031dSuch #define	UCB1200_TELECOMCTRLA_REG	5
43ce3b031dSuch #define	UCB1200_TELECOMCTRLB_REG	6
44ce3b031dSuch #define	UCB1200_AUDIOCTRLA_REG		7
45ce3b031dSuch #define	UCB1200_AUDIOCTRLB_REG		8
46ce3b031dSuch #define	UCB1200_TSCTRL_REG		9
47ce3b031dSuch #define	UCB1200_ADCCTRL_REG		10
48ce3b031dSuch #define	UCB1200_ADCDATA_REG		11
49ce3b031dSuch #define	UCB1200_ID_REG			12
50ce3b031dSuch #define	UCB1200_MODE_REG		13
51ce3b031dSuch #define	UCB1200_RESERVED_REG		14
52ce3b031dSuch #define	UCB1200_NULL_REG		15 /* always returns 0xffff */
53ce3b031dSuch 
54ce3b031dSuch /*
55dce2bc94Such  * I/O port data register
56dce2bc94Such  */
57dc8f1b2cSuch #define UCB1200_IOPORT_MAX		10
58dce2bc94Such #define UCB1200_IO_DATA_SPEAKER		0x100 /* XXX general? */
59dce2bc94Such 
60dce2bc94Such /*
61dce2bc94Such  * Telecom control register A
62dce2bc94Such  */
63dce2bc94Such #define UCB1200_TELECOMCTRLA_DIV_MIN	16
64dce2bc94Such #define UCB1200_TELECOMCTRLA_DIV_MAX	127
65dce2bc94Such #define UCB1200_TELECOMCTRLA_DIV_SHIFT	0
66dce2bc94Such #define UCB1200_TELECOMCTRLA_DIV_MASK	0x7f
67dce2bc94Such #define UCB1200_TELECOMCTRLA_DIV(cr)					\
68dce2bc94Such 	(((cr) >> UCB1200_TELECOMCTRLA_DIV_SHIFT) &			\
69dce2bc94Such 	UCB1200_TELECOMCTRLA_DIV_MASK)
70dce2bc94Such #define UCB1200_TELECOMCTRLA_DIV_SET(cr, val)				\
71dce2bc94Such 	((cr) | (((val) << UCB1200_TELECOMCTRLA_DIV_SHIFT) &		\
72dce2bc94Such 	(UCB1200_TELECOMCTRLA_DIV_MASK << UCB1200_TELECOMCTRLA_DIV_SHIFT)))
73dce2bc94Such 
74dce2bc94Such #define UCB1200_TELECOMCTRLA_LOOP	0x0080
75dce2bc94Such 
76dce2bc94Such /*
77dce2bc94Such  * Telecom control register B
78dce2bc94Such  */
79dce2bc94Such #define UCB1200_TELECOMCTRLB_VBF		0x0008
80dce2bc94Such #define UCB1200_TELECOMCTRLB_CLIPSTATCLR	0x0010
81dce2bc94Such #define UCB1200_TELECOMCTRLB_ATT		0x0040
82dce2bc94Such #define UCB1200_TELECOMCTRLB_STS		0x0800
83dce2bc94Such #define UCB1200_TELECOMCTRLB_MUTE		0x2000
84dce2bc94Such #define UCB1200_TELECOMCTRLB_INEN		0x4000
85dce2bc94Such #define UCB1200_TELECOMCTRLB_OUTEN		0x8000
86dce2bc94Such 
87dce2bc94Such /*
88dce2bc94Such  * Audio control register A
89dce2bc94Such  */
90dce2bc94Such #define UCB1200_AUDIOCTRLA_DIV_MIN	6
91dce2bc94Such #define UCB1200_AUDIOCTRLA_DIV_MAX	127
92dce2bc94Such #define UCB1200_AUDIOCTRLA_DIV_SHIFT	0
93dce2bc94Such #define UCB1200_AUDIOCTRLA_DIV_MASK	0x7f
94dce2bc94Such #define UCB1200_AUDIOCTRLA_DIV(cr)					\
95dce2bc94Such 	(((cr) >> UCB1200_AUDIOCTRLA_DIV_SHIFT) &			\
96dce2bc94Such 	UCB1200_AUDIOCTRLA_DIV_MASK)
97dce2bc94Such #define UCB1200_AUDIOCTRLA_DIV_SET(cr, val)				\
98dce2bc94Such 	((cr) | (((val) << UCB1200_AUDIOCTRLA_DIV_SHIFT) &		\
99dce2bc94Such 	(UCB1200_AUDIOCTRLA_DIV_MASK << UCB1200_AUDIOCTRLA_DIV_SHIFT)))
100dce2bc94Such 
101dce2bc94Such #define UCB1200_AUDIOCTRLA_GAIN_SHIFT	7
102dce2bc94Such #define UCB1200_AUDIOCTRLA_GAIN_MASK	0x1f
103dce2bc94Such #define UCB1200_AUDIOCTRLA_GAIN(cr)					\
104dce2bc94Such 	(((cr) >> UCB1200_AUDIOCTRLA_GAIN_SHIFT) &			\
105dce2bc94Such 	UCB1200_AUDIOCTRLA_GAIN_MASK)
106dce2bc94Such #define UCB1200_AUDIOCTRLA_GAIN_SET(cr, val)				\
107dce2bc94Such 	((cr) | (((val) << UCB1200_AUDIOCTRLA_GAIN_SHIFT) &		\
108dce2bc94Such 	(UCB1200_AUDIOCTRLA_GAIN_MASK << UCB1200_AUDIOCTRLA_GAIN_SHIFT)))
109dce2bc94Such 
110dce2bc94Such /*
111dce2bc94Such  * Audio control register B
112dce2bc94Such  */
113dce2bc94Such #define UCB1200_AUDIOCTRLB_ATT_MIN	0
114dce2bc94Such #define UCB1200_AUDIOCTRLB_ATT_MAX	0x1f
115dce2bc94Such #define UCB1200_AUDIOCTRLB_ATT_SHIFT	0
116dce2bc94Such #define UCB1200_AUDIOCTRLB_ATT_MASK	0x1f
117dce2bc94Such #define UCB1200_AUDIOCTRLB_ATT(cr)					\
118dce2bc94Such 	(((cr) >> UCB1200_AUDIOCTRLB_ATT_SHIFT) &			\
119dce2bc94Such 	UCB1200_AUDIOCTRLB_ATT_MASK)
120630279a8Such #define UCB1200_AUDIOCTRLB_ATT_CLR(cr)					\
121630279a8Such 	((cr) & ~(UCB1200_AUDIOCTRLB_ATT_MASK <<			\
122630279a8Such 		  UCB1200_AUDIOCTRLB_ATT_SHIFT))
123dce2bc94Such #define UCB1200_AUDIOCTRLB_ATT_SET(cr, val)				\
124dce2bc94Such 	((cr) | (((val) << UCB1200_AUDIOCTRLB_ATT_SHIFT) &		\
125dce2bc94Such 	(UCB1200_AUDIOCTRLB_ATT_MASK << UCB1200_AUDIOCTRLB_ATT_SHIFT)))
126dce2bc94Such 
127dce2bc94Such #define	UCB1200_AUDIOCTRLB_CLIPSTATCLR	0x0040
128dce2bc94Such #define	UCB1200_AUDIOCTRLB_LOOP		0x0100
129dce2bc94Such #define	UCB1200_AUDIOCTRLB_MUTE		0x2000
130dce2bc94Such #define	UCB1200_AUDIOCTRLB_INEN		0x4000
131dce2bc94Such #define	UCB1200_AUDIOCTRLB_OUTEN	0x8000
132dce2bc94Such 
133dce2bc94Such /*
134ce3b031dSuch  * Touch screen control register
135ce3b031dSuch  */
136ce3b031dSuch #define	UCB1200_TSCTRL_MXLOW	0x00002000
137ce3b031dSuch #define	UCB1200_TSCTRL_PXLOW	0x00001000
138ce3b031dSuch #define	UCB1200_TSCTRL_BIAS	0x00000800
139ce3b031dSuch 
140ce3b031dSuch #define UCB1200_TSCTRL_MODE_SHIFT	8
141ce3b031dSuch #define UCB1200_TSCTRL_MODE_MASK	0x7f
142ce3b031dSuch #define UCB1200_TSCTRL_MODE(cr)						\
143ce3b031dSuch 	(((cr) >> UCB1200_TSCTRL_MODE_SHIFT) &				\
144ce3b031dSuch 	UCB1200_TSCTRL_MODE_MASK)
145ce3b031dSuch #define UCB1200_TSCTRL_MODE_INTERRUPT	0
146ce3b031dSuch #define UCB1200_TSCTRL_MODE_PRESSURE	(1 << UCB1200_TSCTRL_MODE_SHIFT)
147ce3b031dSuch #define UCB1200_TSCTRL_MODE_POSITION0	(2 << UCB1200_TSCTRL_MODE_SHIFT)
148ce3b031dSuch #define UCB1200_TSCTRL_MODE_POSITION1	(3 << UCB1200_TSCTRL_MODE_SHIFT)
149ce3b031dSuch 
150ce3b031dSuch #define	UCB1200_TSCTRL_PYGND	0x00000080
151ce3b031dSuch #define	UCB1200_TSCTRL_MYGND	0x00000040
152ce3b031dSuch #define	UCB1200_TSCTRL_PXGND	0x00000020
153ce3b031dSuch #define	UCB1200_TSCTRL_MXGND	0x00000010
154ce3b031dSuch #define	UCB1200_TSCTRL_PYPWR	0x00000008
155ce3b031dSuch #define	UCB1200_TSCTRL_MYPWR	0x00000004
156ce3b031dSuch #define	UCB1200_TSCTRL_PXPWR	0x00000002
157ce3b031dSuch #define	UCB1200_TSCTRL_MXPWR	0x00000001
158ce3b031dSuch 
159ce3b031dSuch /* touch screen modes */
160ce3b031dSuch #define UCB1200_TSCTRL_YPOSITION					\
161ce3b031dSuch 	(UCB1200_TSCTRL_PXPWR | UCB1200_TSCTRL_MXGND |			\
162ce3b031dSuch 	UCB1200_TSCTRL_MODE_POSITION0 | UCB1200_TSCTRL_BIAS)
163ce3b031dSuch #define UCB1200_TSCTRL_XPOSITION					\
164ce3b031dSuch 	(UCB1200_TSCTRL_PYPWR | UCB1200_TSCTRL_MYGND |			\
165ce3b031dSuch 	UCB1200_TSCTRL_MODE_POSITION0 | UCB1200_TSCTRL_BIAS)
166ce3b031dSuch #define UCB1200_TSCTRL_PRESSURE						\
167ce3b031dSuch 	(UCB1200_TSCTRL_PXPWR | UCB1200_TSCTRL_MXPWR |			\
168ce3b031dSuch 	UCB1200_TSCTRL_PYGND | UCB1200_TSCTRL_MYGND |			\
169ce3b031dSuch 	UCB1200_TSCTRL_MODE_PRESSURE | UCB1200_TSCTRL_BIAS)
17027a7fbffSuch 
171ce3b031dSuch #define UCB1200_TSCTRL_INTERRUPT					\
172ce3b031dSuch 	(UCB1200_TSCTRL_PXPWR | UCB1200_TSCTRL_MXPWR |			\
173ce3b031dSuch 	UCB1200_TSCTRL_PYGND | UCB1200_TSCTRL_MYGND |			\
174ce3b031dSuch 	UCB1200_TSCTRL_MODE_INTERRUPT)
175ce3b031dSuch 
176ce3b031dSuch #define UCB1200_TSCTRL_PRESSURE1
177ce3b031dSuch #define UCB1200_TSCTRL_PRESSURE2
178ce3b031dSuch #define UCB1200_TSCTRL_PRESSURE3
179ce3b031dSuch #define UCB1200_TSCTRL_PRESSURE4
180ce3b031dSuch #define UCB1200_TSCTRL_PRESSURE5
181ce3b031dSuch #define UCB1200_TSCTRL_XRESISTANCE
182ce3b031dSuch #define UCB1200_TSCTRL_YRESISTANCE
183ce3b031dSuch 
184ce3b031dSuch /*
185ce3b031dSuch  * ADC control register
186ce3b031dSuch  */
187ce3b031dSuch #define UCB1200_ADCCTRL_ENABLE		0x8000
188ce3b031dSuch #define UCB1200_ADCCTRL_START		0x0080
189ce3b031dSuch #define UCB1200_ADCCTRL_EXTREF		0x0020
190ce3b031dSuch 
191ce3b031dSuch #define UCB1200_ADCCTRL_INPUT_SHIFT	2
192ce3b031dSuch #define UCB1200_ADCCTRL_INPUT_MASK	0x7
193ce3b031dSuch #define UCB1200_ADCCTRL_INPUT_SET(cr, val)				\
194ce3b031dSuch 	((cr) | (((val) << UCB1200_ADCCTRL_INPUT_SHIFT) &		\
195ce3b031dSuch 	(UCB1200_ADCCTRL_INPUT_MASK << UCB1200_ADCCTRL_INPUT_SHIFT)))
196ce3b031dSuch #define UCB1200_ADCCTRL_INPUT_TSPX	0x0
197ce3b031dSuch #define UCB1200_ADCCTRL_INPUT_TSMX	0x1
198ce3b031dSuch #define UCB1200_ADCCTRL_INPUT_TSPY	0x2
199ce3b031dSuch #define UCB1200_ADCCTRL_INPUT_TSMY	0x3
200ce3b031dSuch #define UCB1200_ADCCTRL_INPUT_AD0	0x4
201ce3b031dSuch #define UCB1200_ADCCTRL_INPUT_AD1	0x5
202ce3b031dSuch #define UCB1200_ADCCTRL_INPUT_AD2	0x6
203ce3b031dSuch #define UCB1200_ADCCTRL_INPUT_AD3	0x7
204ce3b031dSuch 
205ce3b031dSuch #define UCB1200_ADCCTRL_VREFBYP		0x0002
206ce3b031dSuch #define UCB1200_ADCCTRL_SYNCMODE	0x0001
207ce3b031dSuch 
208ce3b031dSuch /*
209ce3b031dSuch  * ADC data register
210ce3b031dSuch  */
211ce3b031dSuch #define UCB1200_ADCDATA_INPROGRESS	0x8000
212ce3b031dSuch 
213ce3b031dSuch #define UCB1200_ADCDATA_SHIFT	5
214ce3b031dSuch #define UCB1200_ADCDATA_MASK	0x3ff
215ce3b031dSuch #define UCB1200_ADCDATA(cr)						\
216ce3b031dSuch 	(((cr) >> UCB1200_ADCDATA_SHIFT) &				\
217ce3b031dSuch 	UCB1200_ADCDATA_MASK)
218ce3b031dSuch 
219ce3b031dSuch /*
220ce3b031dSuch  * ID register
221ce3b031dSuch  */
22244b86d33Such /* PHILIPS products */
22344b86d33Such /* Version 3, Device 0, Supplier 1 */
22444b86d33Such #define UCB1100_ID	0x1003
225ce3b031dSuch /* Version 4, Device 0, Supplier 1 */
226ce3b031dSuch #define UCB1200_ID	0x1004
22744b86d33Such /* Version 10, Device 0, Supplier 1 */
22844b86d33Such #define UCB1300_ID	0x100a
229dce2bc94Such /* TOSHIBA TC35413F */
230dce2bc94Such #define TC35413F_ID	0x9712
231