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