1 /* $NetBSD: clps711xreg.h,v 1.1 2013/04/28 11:57:13 kiyohara Exp $ */ 2 /* 3 * Copyright (c) 2013 KIYOHARA Takashi 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 19 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 21 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 23 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 24 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 * POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28 #define PS711X_PADR 0x000 /* Port A Data Register */ 29 #define PS711X_PBDR 0x001 /* Port B Data Register */ 30 #define PS711X_PCDR 0x002 /* Port C Data Register */ 31 #define PS711X_PDDR 0x003 /* Port D Data Register */ 32 #define PS711X_PADDR 0x040 /* Port A Data Direction Register */ 33 #define PS711X_PBDDR 0x041 /* Port B Data Direction Register */ 34 #define PS711X_PCDDR 0x042 /* Port C Data Direction Register */ 35 #define PS711X_PDDDR 0x043 /* Port D Data Direction Register */ 36 #define PS711X_PEDR 0x080 /* Port E Data Register */ 37 #define PS711X_PEDDR 0x0c0 /* Port E Data Direction Register */ 38 #define PS711X_SYSCON 0x100 /* System Control Register */ 39 #define SYSCON_IRTXM (1 << 20) 40 #define SYSCON_WAKEDIS (1 << 19) 41 #define SYSCON_EXCKEN (1 << 18) 42 #define SYSCON_ADCKSEL (0x3 << 16) 43 #define SYSCON_SIREN (1 << 15) 44 #define SYSCON_CDENRX (1 << 14) 45 #define SYSCON_CDENTX (1 << 13) 46 #define SYSCON_LCDEN (1 << 12) 47 #define SYSCON_DBGEN (1 << 11) 48 #define SYSCON_BZMOD (1 << 10) 49 #define SYSCON_BZTOG (1 << 9) 50 #define SYSCON_UARTEN (1 << 8) 51 #define SYSCON_TC2S (1 << 7) 52 #define SYSCON_TC2M (1 << 6) 53 #define SYSCON_TC1S (1 << 5) 54 #define SYSCON_TC1M (1 << 4) 55 #define SYSCON_KBDSCAN_MASK (0xf << 0) 56 #define PS711X_SYSFLG 0x140 /* System Status Flag Register (RO) */ 57 #define SYSFLG_VERID(x) (((x) >> 30) & 0x3) 58 #define SYSFLG_BOOT8BIT (1 << 27) 59 #define SYSFLG_SSIBUSY (1 << 26) 60 #define SYSFLG_CTXFF (1 << 25) 61 #define SYSFLG_CRXFE (1 << 24) 62 #define SYSFLG_UTXFF (1 << 23) 63 #define SYSFLG_URXFE (1 << 22) 64 #define SYSFLG_RTCDIV (0x3f << 16) 65 #define SYSFLG_CLDFLG (1 << 15) 66 #define SYSFLG_PFFLG (1 << 14) 67 #define SYSFLG_RSTFLG (1 << 13) 68 #define SYSFLG_NBFLG (1 << 12) 69 #define SYSFLG_UBUSY (1 << 11) 70 #define SYSFLG_DCD (1 << 10) 71 #define SYSFLG_DSR (1 << 9) 72 #define SYSFLG_CTS (1 << 8) 73 #define SYSFLG_DID (1 << 7) 74 #define SYSFLG_WUON (1 << 3) 75 #define SYSFLG_WUDR (1 << 2) 76 #define SYSFLG_DCDET (1 << 1) 77 #define SYSFLG_MCDR (1 << 0) 78 #define PS711X_MEMCFG1 0x180 /* Memory Configuration Register 1 */ 79 #define MEMCFG1_NCSCFG(n, x) ((x) << ((n) << 3)) 80 #define PS711X_MEMCFG2 0x1c0 /* Memory Configuration Register 2 */ 81 #define MEMCFG2_CSCFG(n, x) ((x) << ((n) << 3)) 82 #define CSCFG_CLKEN (1 << 7) 83 #define CSCFG_SQAEN (1 << 6) 84 #define CSCFG_SAWS_MASK (0x3 << 4) /* Sequential access wait state */ 85 #define CSCFG_RAWS_MASK (0x3 << 2) /* Random access wait state */ 86 #define CSCFG_BUSWIDTH_MASK (0x3 << 0) 87 #define PS711X_DRFPR 0x200 /* DRAM Refresh Period Register */ 88 #define DRFPR_RFSHEN (1 << 7) 89 #define DRFPR_RFDIV_MASK (0x7f << 0) 90 #define PS711X_INTSR 0x240 /* Interrupt Status Register (RO) */ 91 #define PS711X_INTMR 0x280 /* Interrupt Mask Register */ 92 #define PS711X_LCDCON 0x2c0 /* LCD Control Register */ 93 #define LCDCON_GSMD (1 << 31) /* Grayscale mode 0:2bpp/1:4bpp */ 94 #define LCDCON_GSEN (1 << 30) /* Grayscale enable */ 95 #define LCDCON_ACP_SFT 25 /* AC prescale */ 96 #define LCDCON_ACP_MSK 0x1f 97 #define LCDCON_ACP(b) ((((b) + 1) & LCDCON_ACP_MSK) << LCDCON_ACP_SFT) 98 #define LCDCON_PP_SFT 19 /* Pixel prescale */ 99 #define LCDCON_PP_MSK 0x3f 100 #define LCDCON_PP(b) (((526628 / (b) - 1) & LCDCON_PP_MSK) << LCDCON_PP_SFT) 101 #define LCDCON_LL_SFT 13 /* Line length */ 102 #define LCDCON_LL_MSK 0x3f 103 #define LCDCON_LL(b) ((((b) / 16 - 1) & LCDCON_LL_MSK) << LCDCON_LL_SFT) 104 #define LCDCON_VBS_SFT 0 /* Video buffer size */ 105 #define LCDCON_VBS_MSK 0x1fff 106 #define LCDCON_VBS(b) ((((b) / 128 - 1) & LCDCON_VBS_MSK) << LCDCON_VBS_SFT) 107 #define PS711X_TC1D 0x300 /* Read/Write data to TC1 */ 108 #define PS711X_TC2D 0x340 /* Read/Write data to TC2 */ 109 #define PS711X_RTCDR 0x380 /* Realtime Clock Data Register */ 110 #define PS711X_RTCMR 0x3c0 /* Realtime Clock Match Register */ 111 #define PS711X_PMPCON 0x400 /* DC-to-DC Pump Control Register */ 112 #define PS711X_CODR 0x440 /* Codec Data I/O Register */ 113 #define PS711X_UARTDR 0x480 /* UART FIFO Data Register */ 114 #define UARTDR_OVERR (1 << 10) 115 #define UARTDR_PARERR (1 << 9) 116 #define UARTDR_FRMERR (1 << 8) 117 #define UARTDR_RXDATA_MASK 0xff 118 #define PS711X_UBRLCR 0x4c0 /* UART Bit Rate and Line Control Register */ 119 #define UBRLCR_WRDLEN_MASK (0x3 << 17) 120 #define UBRLCR_WRDLEN_8B (0x3 << 17) 121 #define UBRLCR_WRDLEN_7B (0x2 << 17) 122 #define UBRLCR_WRDLEN_6B (0x1 << 17) 123 #define UBRLCR_WRDLEN_5B (0x0 << 17) 124 #define UBRLCR_FIFOEN (1 << 16) 125 #define UBRLCR_XSTOP (1 << 15) 126 #define UBRLCR_EVENPRT (1 << 14) 127 #define UBRLCR_PRTEN (1 << 13) 128 #define UBRLCR_BREAK (1 << 12) 129 #define UBRLCR_BRD_MASK (0xfff << 0) /* Bit rate divisor */ 130 #define PS711X_SYNCIO 0x500 /* Synchronous Serial I/O Data Register */ 131 #define PS711X_PALLSW 0x540 /* Least-significant 32b Word of LCD Palette */ 132 #define PS711X_PALMSW 0x580 /* Most-significant 32b Word of LCD Palette */ 133 #define PS711X_STFCLR 0x5c0 /* Write to clear all Start up reason flags */ 134 #define PS711X_BLEOI 0x600 /* Write to clear Battery Low Interrupt */ 135 #define PS711X_MCEOI 0x640 /* Write to clear Media Changed Interrupt */ 136 #define PS711X_TEOI 0x680 /* Write to clear Tick and Watchdog Interrupt */ 137 #define PS711X_TC1EOI 0x6c0 /* Write to clear TC1 Interrupt */ 138 #define PS711X_TC2EOI 0x700 /* Write to clear TC2 Interrupt */ 139 #define PS711X_RTCEOI 0x740 /* Write to clear RTC Match Interrupt */ 140 #define PS711X_UMSEOI 0x780 /* Write to clear UART Modem Stat Changed Int */ 141 #define PS711X_COEOI 0x7c0 /* Write to clear Codec Sound Interrupt */ 142 #define PS711X_HALT 0x800 /* Write to enter idle state */ 143 #define PS711X_STDBY 0x840 /* Write to enter standby state */ 144 145 #define IRQ_EXTFIQ 0 /* External fast interrupt */ 146 #define IRQ_BLINT 1 /* Battery low interrupt */ 147 #define IRQ_WEINT 2 /* Watch dog expired interrupt */ 148 #define IRQ_MCINT 3 /* Media changed interrupt */ 149 #define IRQ_CSINT 4 /* Codec sound interrupt */ 150 #define IRQ_EINT1 5 /* External interrupt 1 */ 151 #define IRQ_EINT2 6 /* External interrupt 2 */ 152 #define IRQ_EINT3 7 /* External interrupt 3 */ 153 #define IRQ_TC1DI 8 /* TC1 under-flow interrupt */ 154 #define IRQ_TC2DI 9 /* TC2 under-flow interrupt */ 155 #define IRQ_RTCMI 10 /* RTC compare match interrupt */ 156 #define IRQ_TINT 11 /* 64-Hz tick interrupt */ 157 #define IRQ_UTXINT 12 /* Internal UART transmit FIFO half-empty */ 158 #define IRQ_URXINT 13 /* Internal UART receive FIFO half-full */ 159 #define IRQ_UMSINT 14 /* Internal UART modem status changed */ 160 #define IRQ_SSEOTI 15 /* Synchronous serial interface end-of-transfer */ 161