1*e9628b71Stakemura /* $NetBSD: vrpiureg.h,v 1.4 2002/12/15 09:24:26 takemura Exp $ */ 23e0dc7b3Stakemura 33e0dc7b3Stakemura /* 43e0dc7b3Stakemura * Copyright (c) 1999 Shin Takemura All rights reserved. 53e0dc7b3Stakemura * Copyright (c) 1999 PocketBSD Project. All rights reserved. 63e0dc7b3Stakemura * 73e0dc7b3Stakemura * Redistribution and use in source and binary forms, with or without 83e0dc7b3Stakemura * modification, are permitted provided that the following conditions 93e0dc7b3Stakemura * are met: 103e0dc7b3Stakemura * 1. Redistributions of source code must retain the above copyright 113e0dc7b3Stakemura * notice, this list of conditions and the following disclaimer. 123e0dc7b3Stakemura * 2. Redistributions in binary form must reproduce the above copyright 133e0dc7b3Stakemura * notice, this list of conditions and the following disclaimer in the 143e0dc7b3Stakemura * documentation and/or other materials provided with the distribution. 153e0dc7b3Stakemura * 163e0dc7b3Stakemura * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 173e0dc7b3Stakemura * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 183e0dc7b3Stakemura * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 193e0dc7b3Stakemura * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 203e0dc7b3Stakemura * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 213e0dc7b3Stakemura * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 223e0dc7b3Stakemura * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 233e0dc7b3Stakemura * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 243e0dc7b3Stakemura * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 253e0dc7b3Stakemura * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 263e0dc7b3Stakemura * SUCH DAMAGE. 273e0dc7b3Stakemura * 283e0dc7b3Stakemura */ 293e0dc7b3Stakemura 303e0dc7b3Stakemura /* 313e0dc7b3Stakemura * PIU (Touch panel interface unit) register definitions 323e0dc7b3Stakemura */ 333e0dc7b3Stakemura 343e0dc7b3Stakemura #define PIUCNT_REG_W 0x002 /* PIU Control register */ 353e0dc7b3Stakemura #define PIUCNT_PENSTC (1<<13) 363e0dc7b3Stakemura #define PIUCNT_PADSTATE_MASK (0x7<<10) 373e0dc7b3Stakemura #define PIUCNT_PADSTATE_SHIFT 10 383e0dc7b3Stakemura #define PIUCNT_PADSTATE_CmdScan (0x7<<10) 393e0dc7b3Stakemura #define PIUCNT_PADSTATE_IntervalNextScan (0x6<<10) 403e0dc7b3Stakemura #define PIUCNT_PADSTATE_PenDataScan (0x5<<10) 413e0dc7b3Stakemura #define PIUCNT_PADSTATE_WaitPenTouch (0x4<<10) 423e0dc7b3Stakemura #define PIUCNT_PADSTATE_RFU (0x3<<10) 433e0dc7b3Stakemura #define PIUCNT_PADSTATE_ADPortScan (0x2<<10) 443e0dc7b3Stakemura #define PIUCNT_PADSTATE_Standby (0x1<<10) 453e0dc7b3Stakemura #define PIUCNT_PADSTATE_Disable (0x0<<10) 463e0dc7b3Stakemura #define PIUCNT_PADATSTOP (1<<9) 473e0dc7b3Stakemura #define PIUCNT_PADATSTART (1<<8) 483e0dc7b3Stakemura #define PIUCNT_PADSCANSTOP (1<<7) 493e0dc7b3Stakemura #define PIUCNT_PADSCANSTART (1<<6) 503e0dc7b3Stakemura #define PIUCNT_PADSCANTYPE (1<<5) 513e0dc7b3Stakemura #define PIUCNT_PIUMODE_MASK (0x3<<3) 523e0dc7b3Stakemura #define PIUCNT_PIUMODE_ADCONVERTER (0x1<<3) 533e0dc7b3Stakemura #define PIUCNT_PIUMODE_COORDINATE (0x0<<3) 543e0dc7b3Stakemura #define PIUCNT_PIUSEQEN (1<<2) 553e0dc7b3Stakemura #define PIUCNT_PIUPWR (1<<1) 563e0dc7b3Stakemura #define PIUCNT_PADRST (1<<0) 573e0dc7b3Stakemura 583e0dc7b3Stakemura #define PIUINT_REG_W 0x004 /* PIU Interruptcause register */ 593e0dc7b3Stakemura #define PIUINT_OVP (1<<15) 603e0dc7b3Stakemura #define PIUINT_PADCMDINTR (1<<6) 613e0dc7b3Stakemura #define PIUINT_PADADPINTR (1<<5) 623e0dc7b3Stakemura #define PIUINT_PADPAGE1INTR (1<<4) 633e0dc7b3Stakemura #define PIUINT_PADPAGE0INTR (1<<3) 643e0dc7b3Stakemura #define PIUINT_PADDLOSTINTR (1<<2) 653e0dc7b3Stakemura #define PIUINT_PENCHGINTR (1<<0) 663e0dc7b3Stakemura #define PIUINT_ALLINTR (PIUINT_PADCMDINTR | \ 673e0dc7b3Stakemura PIUINT_PADADPINTR | \ 683e0dc7b3Stakemura PIUINT_PADPAGE1INTR | \ 693e0dc7b3Stakemura PIUINT_PADPAGE0INTR | \ 703e0dc7b3Stakemura PIUINT_PADDLOSTINTR | \ 713e0dc7b3Stakemura PIUINT_PENCHGINTR) 723e0dc7b3Stakemura 733e0dc7b3Stakemura #define PIUSIVL_REG_W 0x006 /* PIU Data sampling interval register */ 743e0dc7b3Stakemura #define PIUSIVL_SCANINTVAL_MASK 0x7FF 753e0dc7b3Stakemura #define PIUSIVL_SCANINTVAL_UNIT 30 /* 30 us */ 763e0dc7b3Stakemura 773e0dc7b3Stakemura #define PIUSTBL_REG_W 0x008 /* PIU A/D converter start delay register*/ 783e0dc7b3Stakemura #define PIUSTBL_STABLE_MASK 0x1F 793e0dc7b3Stakemura #define PIUSTBL_STABLE_UNIT 30 /* 30 us */ 803e0dc7b3Stakemura 813e0dc7b3Stakemura #define PIUCMD_REG_W 0x00A /* PIU A/D command register */ 823e0dc7b3Stakemura #define PIUCMD_STABLEON (1<<12) 833e0dc7b3Stakemura #define PIUCMD_TPYEN_MASK (3<<10) 843e0dc7b3Stakemura #define PIUCMD_TPY1_INPUT (0<<11) 853e0dc7b3Stakemura #define PIUCMD_TPY1_OUTPUT (1<<11) 863e0dc7b3Stakemura #define PIUCMD_TPY0_INPUT (0<<10) 873e0dc7b3Stakemura #define PIUCMD_TPY0_OUTPUT (1<<10) 883e0dc7b3Stakemura #define PIUCMD_TPXEN_MASK (3<<8) 893e0dc7b3Stakemura #define PIUCMD_TPX1_INPUT (0<<9) 903e0dc7b3Stakemura #define PIUCMD_TPX1_OUTPUT (1<<9) 913e0dc7b3Stakemura #define PIUCMD_TPX0_INPUT (0<<8) 923e0dc7b3Stakemura #define PIUCMD_TPX0_OUTPUT (1<<8) 933e0dc7b3Stakemura #define PIUCMD_TPYD_MASK (3<<6) 943e0dc7b3Stakemura #define PIUCMD_TPY1_LOW (0<<7) 953e0dc7b3Stakemura #define PIUCMD_TPY1_HIGH (1<<7) 963e0dc7b3Stakemura #define PIUCMD_TPY0_LOW (0<<6) 973e0dc7b3Stakemura #define PIUCMD_TPY0_HIGH (1<<6) 983e0dc7b3Stakemura #define PIUCMD_TPXD_MASK (3<<4) 993e0dc7b3Stakemura #define PIUCMD_TPX1_LOW (0<<5) 1003e0dc7b3Stakemura #define PIUCMD_TPX1_HIGH (1<<5) 1013e0dc7b3Stakemura #define PIUCMD_TPX0_LOW (0<<4) 1023e0dc7b3Stakemura #define PIUCMD_TPX0_HIGH (1<<4) 1033e0dc7b3Stakemura #define PIUCMD_ADCMD_MASK 0xF 1043e0dc7b3Stakemura #define PIUCMD_STANBYREQ 0xF 1053e0dc7b3Stakemura #define PIUCMD_AUDIOIN 0x7 1063e0dc7b3Stakemura #define PIUCMD_ADIN2 0x6 1073e0dc7b3Stakemura #define PIUCMD_ADIN1 0x5 1083e0dc7b3Stakemura #define PIUCMD_ADIN0 0x4 1093e0dc7b3Stakemura #define PIUCMD_TPY1 0x3 1103e0dc7b3Stakemura #define PIUCMD_TPY0 0x2 1113e0dc7b3Stakemura #define PIUCMD_TPX1 0x1 1123e0dc7b3Stakemura #define PIUCMD_TPX0 0x0 1133e0dc7b3Stakemura 1143e0dc7b3Stakemura #define PIUASCN_REG_W 0x010 /* PIU A/D port scan register */ 1153e0dc7b3Stakemura #define PIUACN_TPPSCAN (1<<1) 1163e0dc7b3Stakemura #define PIUACN_ADPSSTART (1<<0) 1173e0dc7b3Stakemura 1183e0dc7b3Stakemura #define PIUAMSK_REG_W 0x012 /* PIU A/D scan mask register */ 1193e0dc7b3Stakemura #define PIUAMSK_ADINM3 (1<<7) 1203e0dc7b3Stakemura #define PIUAMSK_AUDIOM PIUAMSK_ADINM3 1213e0dc7b3Stakemura #define PIUAMSK_ADINM2 (1<<6) 1223e0dc7b3Stakemura #define PIUAMSK_ADINM1 (1<<5) 1233e0dc7b3Stakemura #define PIUAMSK_ADINM0 (1<<4) 1243e0dc7b3Stakemura #define PIUAMSK_ADINMALL 0x70 1253e0dc7b3Stakemura #define PIUAMSK_TPYM1 (1<<3) 1263e0dc7b3Stakemura #define PIUAMSK_TPYM0 (1<<2) 1273e0dc7b3Stakemura #define PIUAMSK_TPXM1 (1<<1) 1283e0dc7b3Stakemura #define PIUAMSK_TPXM0 (1<<0) 1293e0dc7b3Stakemura #define PIUAMSK_TPMALL 0xF0 1303e0dc7b3Stakemura 1313e0dc7b3Stakemura #define PIUCIVL_REG_W 0x01E /* PIU Check interval register */ 1323e0dc7b3Stakemura #define PIUCIVL_CHKINTVAL_MASK 0x7FF 1333e0dc7b3Stakemura 13441e10f2dStakemura #ifndef PIUB_REG_OFFSSET 13541e10f2dStakemura #define PIUB_REG_OFFSSET 0x180 13641e10f2dStakemura #endif 13741e10f2dStakemura #define PIUPB00_REG_W (PIUB_REG_OFFSSET+0x00) /* PIU Page 0 Buffer 0 reg */ 13841e10f2dStakemura #define PIUPB01_REG_W (PIUB_REG_OFFSSET+0x02) /* PIU Page 0 Buffer 1 reg */ 13941e10f2dStakemura #define PIUPB02_REG_W (PIUB_REG_OFFSSET+0x04) /* PIU Page 0 Buffer 2 reg */ 14041e10f2dStakemura #define PIUPB03_REG_W (PIUB_REG_OFFSSET+0x06) /* PIU Page 0 Buffer 3 reg */ 14141e10f2dStakemura #define PIUPB04_REG_W (PIUB_REG_OFFSSET+0x1C) /* PIU Page 0 Buffer 4 reg */ 14241e10f2dStakemura #define PIUPB10_REG_W (PIUB_REG_OFFSSET+0x08) /* PIU Page 1 Buffer 0 reg */ 14341e10f2dStakemura #define PIUPB11_REG_W (PIUB_REG_OFFSSET+0x0A) /* PIU Page 1 Buffer 1 reg */ 14441e10f2dStakemura #define PIUPB12_REG_W (PIUB_REG_OFFSSET+0x0C) /* PIU Page 1 Buffer 2 reg */ 14541e10f2dStakemura #define PIUPB13_REG_W (PIUB_REG_OFFSSET+0x0E) /* PIU Page 1 Buffer 3 reg */ 14641e10f2dStakemura #define PIUPB14_REG_W (PIUB_REG_OFFSSET+0x1E) /* PIU Page 1 Buffer 4 reg */ 1473e0dc7b3Stakemura #define PIUPB(page, n) (((n)<4) ? \ 14841e10f2dStakemura (PIUPB00_REG_W + (page) * 8 + (n) * 2) : \ 14941e10f2dStakemura (PIUPB04_REG_W + (page) * 2)) 1503e0dc7b3Stakemura #define PIUPB_VALID (1<<15) 1513e0dc7b3Stakemura #define PIUPB_PADDATA_MASK 0x3FF 1523e0dc7b3Stakemura #define PIUPB_PADDATA_MAX 0x3FF 153*e9628b71Stakemura #define VRC4173PIUPB_PADDATA_MASK 0xFFF 154*e9628b71Stakemura #define VRC4173PIUPB_PADDATA_MAX 0xFFF 1553e0dc7b3Stakemura 15641e10f2dStakemura #define PIUAB0_REG_W (PIUB_REG_OFFSSET+0x10) /* PIU A/D scan Buffer 0 reg */ 15741e10f2dStakemura #define PIUAB1_REG_W (PIUB_REG_OFFSSET+0x12) /* PIU A/D scan Buffer 1 reg */ 15841e10f2dStakemura #define PIUAB2_REG_W (PIUB_REG_OFFSSET+0x14) /* PIU A/D scan Buffer 2 reg */ 15941e10f2dStakemura #define PIUAB3_REG_W (PIUB_REG_OFFSSET+0x16) /* PIU A/D scan Buffer 3 reg */ 16041e10f2dStakemura #define PIUAB(n) (PIUAB0_REG_W+(n)*2) 1613e0dc7b3Stakemura #define PIUAB_VALID (1<<15) 1623e0dc7b3Stakemura #define PIUAB_PADDATA_MASK 0x3FF 163*e9628b71Stakemura #define VRC4173PIUAB_PADDATA_MASK 0xFFF 164