1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun * pxaregs - tool to display and modify PXA250's registers at runtime
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * (c) Copyright 2002 by M&N Logistik-Lösungen Online GmbH
5*4882a593Smuzhiyun * set under the GPLv2
6*4882a593Smuzhiyun *
7*4882a593Smuzhiyun * $Id: pxaregs.c,v 1.14 2003/11/12 13:14:43 schurig Exp $
8*4882a593Smuzhiyun *
9*4882a593Smuzhiyun * Please send patches to h.schurig, working at mn-logistik.de
10*4882a593Smuzhiyun * - added fix from Bernhard Nemec
11*4882a593Smuzhiyun * - i2c registers from Stefan Eletzhofer
12*4882a593Smuzhiyun */
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun #include <stdio.h>
15*4882a593Smuzhiyun #include <unistd.h>
16*4882a593Smuzhiyun #include <stdlib.h>
17*4882a593Smuzhiyun #include <string.h>
18*4882a593Smuzhiyun #include <sys/mman.h>
19*4882a593Smuzhiyun #include <sys/types.h>
20*4882a593Smuzhiyun #include <sys/stat.h>
21*4882a593Smuzhiyun #include <fcntl.h>
22*4882a593Smuzhiyun #include <ctype.h>
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun #include <linux/i2c.h>
25*4882a593Smuzhiyun #include <linux/i2c-dev.h>
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun // fd for /dev/mem
29*4882a593Smuzhiyun static int fd = -1;
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun typedef unsigned int u32;
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun struct reg_info {
34*4882a593Smuzhiyun char *name;
35*4882a593Smuzhiyun u32 addr;
36*4882a593Smuzhiyun int shift;
37*4882a593Smuzhiyun u32 mask;
38*4882a593Smuzhiyun char type;
39*4882a593Smuzhiyun char *desc;
40*4882a593Smuzhiyun };
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun static struct reg_info regs[] = {
44*4882a593Smuzhiyun { "IBMR", 0x40301680, 0, 0xffffffff, 'x', "I2C Bus Monitor Register" },
45*4882a593Smuzhiyun { "IBMR_SDAS", 0x40301680, 0, 0x00000001, 'x', "SDA Status" },
46*4882a593Smuzhiyun { "IBMR_SCLS", 0x40301680, 1, 0x00000001, 'x', "SDA Status" },
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun { "IDBR", 0x40301688, 0, 0xffffffff, 'x', "I2C Data Buffer Register" },
49*4882a593Smuzhiyun { "IDBR_IDB", 0x40301688, 0, 0x000000ff, 'x', "I2C Data Buffer" },
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun { "ICR", 0x40301690, 0, 0xffffffff, 'x', "I2C Control Register" },
52*4882a593Smuzhiyun { "ICR_START", 0x40301690, 0, 1, 'x', " start bit " },
53*4882a593Smuzhiyun { "ICR_STOP", 0x40301690, 1, 1, 'x', " stop bit " },
54*4882a593Smuzhiyun { "ICR_ACKNAK",0x40301690, 2, 1, 'x', " send ACK(0) or NAK(1)" },
55*4882a593Smuzhiyun { "ICR_TB", 0x40301690, 3, 1, 'x', " transfer byte bit " },
56*4882a593Smuzhiyun { "ICR_MA", 0x40301690, 4, 1, 'x', " master abort " },
57*4882a593Smuzhiyun { "ICR_SCLE", 0x40301690, 5, 1, 'x', " master clock enable " },
58*4882a593Smuzhiyun { "ICR_IUE", 0x40301690, 6, 1, 'x', " unit enable " },
59*4882a593Smuzhiyun { "ICR_GCD", 0x40301690, 7, 1, 'x', " general call disable " },
60*4882a593Smuzhiyun { "ICR_ITEIE", 0x40301690, 8, 1, 'x', " enable tx interrupts " },
61*4882a593Smuzhiyun { "ICR_IRFIE", 0x40301690, 9, 1, 'x', " enable rx interrupts " },
62*4882a593Smuzhiyun { "ICR_BEIE", 0x40301690, 10, 1, 'x', " enable bus error ints " },
63*4882a593Smuzhiyun { "ICR_SSDIE", 0x40301690, 11, 1, 'x', " slave STOP detected int enable " },
64*4882a593Smuzhiyun { "ICR_ALDIE", 0x40301690, 12, 1, 'x', " enable arbitration interrupt " },
65*4882a593Smuzhiyun { "ICR_SADIE", 0x40301690, 13, 1, 'x', " slave address detected int enable " },
66*4882a593Smuzhiyun { "ICR_UR", 0x40301690, 14, 1, 'x', " unit reset " },
67*4882a593Smuzhiyun { "ICR_FM", 0x40301690, 15, 1, 'x', " fast mode " },
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun { "ISR", 0x40301698, 0, 0xffffffff, 'x', "I2C Status Register" },
70*4882a593Smuzhiyun { "ISR_RWM", 0x40301698, 0, 1, 'x', " read/write mode " },
71*4882a593Smuzhiyun { "ISR_ACKNAK",0x40301698, 1, 1, 'x', " ack/nak status " },
72*4882a593Smuzhiyun { "ISR_UB", 0x40301698, 2, 1, 'x', " unit busy " },
73*4882a593Smuzhiyun { "ISR_IBB", 0x40301698, 3, 1, 'x', " bus busy " },
74*4882a593Smuzhiyun { "ISR_SSD", 0x40301698, 4, 1, 'x', " slave stop detected " },
75*4882a593Smuzhiyun { "ISR_ALD", 0x40301698, 5, 1, 'x', " arbitration loss detected " },
76*4882a593Smuzhiyun { "ISR_ITE", 0x40301698, 6, 1, 'x', " tx buffer empty " },
77*4882a593Smuzhiyun { "ISR_IRF", 0x40301698, 7, 1, 'x', " rx buffer full " },
78*4882a593Smuzhiyun { "ISR_GCAD", 0x40301698, 8, 1, 'x', " general call address detected " },
79*4882a593Smuzhiyun { "ISR_SAD", 0x40301698, 9, 1, 'x', " slave address detected " },
80*4882a593Smuzhiyun { "ISR_BED", 0x40301698, 10, 1, 'x', " bus error no ACK/NAK " },
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun { "ISAR", 0x403016A0, 0, 0xffffffff, 'x', "I2C Slave Address Register" },
83*4882a593Smuzhiyun { "ISAR_SA", 0x403016A0, 0, 0x0000007f, 'x', "I2C Slave Address" },
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun { "PMCR", 0x40F00000, 0, 0xffffffff, 'x', "Power Manager Control Register (3-23)" },
86*4882a593Smuzhiyun { "PMCR_IDAE", 0x40F00000, 0, 0x00000001, 'd', "PM imprecise data abort abort signal" },
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun { "PSSR", 0x40F00004, 0, 0xffffffff, 'x', "Power Manager Sleep Status Register (3-29)" },
89*4882a593Smuzhiyun { "PSSR_SSS", 0x40F00004, 0, 0x00000001, 'd', "PM chip was in sleep by setting sleep mode bit" },
90*4882a593Smuzhiyun { "PSSR_BFS", 0x40F00004, 1, 0x00000001, 'd', "PM nBATT_FAULT has been asserted" },
91*4882a593Smuzhiyun { "PSSR_VFS", 0x40F00004, 2, 0x00000001, 'd', "PM nVDD_FAULT was asserted while in Run or Idle" },
92*4882a593Smuzhiyun { "PSSR_PH", 0x40F00004, 4, 0x00000001, 'd', "PM GPIO pins are held in their sleep state" },
93*4882a593Smuzhiyun { "PSSR_RDH", 0x40F00004, 5, 0x00000001, 'd', "PM receivers of all input GPIO are disabled" },
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun { "PSPR", 0x40F00008, 0, 0xffffffff, 'x', "Power Manager Scratch Pad Register (3-30)" },
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun { "PWER", 0x40F0000C, 0, 0xffffffff, 'x', "Power Manager Wake-Up Enable Register (3-25)" },
98*4882a593Smuzhiyun { "PWER_WE0", 0x40F0000C, 0, 0x00000001, 'd', "PM wake up due to GPIO 0 edge detect enabled" },
99*4882a593Smuzhiyun { "PWER_WE1", 0x40F0000C, 1, 0x00000001, 'd', "PM wake up due to GPIO 1 edge detect enabled" },
100*4882a593Smuzhiyun { "PWER_WE2", 0x40F0000C, 2, 0x00000001, 'd', "PM wake up due to GPIO 2 edge detect enabled" },
101*4882a593Smuzhiyun { "PWER_WE3", 0x40F0000C, 3, 0x00000001, 'd', "PM wake up due to GPIO 3 edge detect enabled" },
102*4882a593Smuzhiyun { "PWER_WE4", 0x40F0000C, 4, 0x00000001, 'd', "PM wake up due to GPIO 4 edge detect enabled" },
103*4882a593Smuzhiyun { "PWER_WE5", 0x40F0000C, 5, 0x00000001, 'd', "PM wake up due to GPIO 5 edge detect enabled" },
104*4882a593Smuzhiyun { "PWER_WE6", 0x40F0000C, 6, 0x00000001, 'd', "PM wake up due to GPIO 6 edge detect enabled" },
105*4882a593Smuzhiyun { "PWER_WE7", 0x40F0000C, 7, 0x00000001, 'd', "PM wake up due to GPIO 7 edge detect enabled" },
106*4882a593Smuzhiyun { "PWER_WE8", 0x40F0000C, 8, 0x00000001, 'd', "PM wake up due to GPIO 8 edge detect enabled" },
107*4882a593Smuzhiyun { "PWER_WE9", 0x40F0000C, 9, 0x00000001, 'd', "PM wake up due to GPIO 9 edge detect enabled" },
108*4882a593Smuzhiyun { "PWER_WE10", 0x40F0000C, 10, 0x00000001, 'd', "PM wake up due to GPIO10 edge detect enabled" },
109*4882a593Smuzhiyun { "PWER_WE11", 0x40F0000C, 11, 0x00000001, 'd', "PM wake up due to GPIO11 edge detect enabled" },
110*4882a593Smuzhiyun { "PWER_WE12", 0x40F0000C, 12, 0x00000001, 'd', "PM wake up due to GPIO12 edge detect enabled" },
111*4882a593Smuzhiyun { "PWER_WE13", 0x40F0000C, 13, 0x00000001, 'd', "PM wake up due to GPIO13 edge detect enabled" },
112*4882a593Smuzhiyun { "PWER_WE14", 0x40F0000C, 14, 0x00000001, 'd', "PM wake up due to GPIO14 edge detect enabled" },
113*4882a593Smuzhiyun { "PWER_WE15", 0x40F0000C, 15, 0x00000001, 'd', "PM wake up due to GPIO15 edge detect enabled" },
114*4882a593Smuzhiyun { "PWER_WERTC",0x40F0000C, 31, 0x00000001, 'd', "PM wake up due to RTC alarm enabled" },
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun { "PRER", 0x40F00010, 0, 0xffffffff, 'x', "Power Manager Rising Edge Detect Enable Register (3-26)" },
117*4882a593Smuzhiyun { "PRER_RE0", 0x40F00010, 0, 0x00000001, 'd', "PM wake up due to GPIO 0 rising edge detect enabled" },
118*4882a593Smuzhiyun { "PRER_RE1", 0x40F00010, 1, 0x00000001, 'd', "PM wake up due to GPIO 1 rising edge detect enabled" },
119*4882a593Smuzhiyun { "PRER_RE2", 0x40F00010, 2, 0x00000001, 'd', "PM wake up due to GPIO 2 rising edge detect enabled" },
120*4882a593Smuzhiyun { "PRER_RE3", 0x40F00010, 3, 0x00000001, 'd', "PM wake up due to GPIO 3 rising edge detect enabled" },
121*4882a593Smuzhiyun { "PRER_RE4", 0x40F00010, 4, 0x00000001, 'd', "PM wake up due to GPIO 4 rising edge detect enabled" },
122*4882a593Smuzhiyun { "PRER_RE5", 0x40F00010, 5, 0x00000001, 'd', "PM wake up due to GPIO 5 rising edge detect enabled" },
123*4882a593Smuzhiyun { "PRER_RE6", 0x40F00010, 6, 0x00000001, 'd', "PM wake up due to GPIO 6 rising edge detect enabled" },
124*4882a593Smuzhiyun { "PRER_RE7", 0x40F00010, 7, 0x00000001, 'd', "PM wake up due to GPIO 7 rising edge detect enabled" },
125*4882a593Smuzhiyun { "PRER_RE8", 0x40F00010, 8, 0x00000001, 'd', "PM wake up due to GPIO 8 rising edge detect enabled" },
126*4882a593Smuzhiyun { "PRER_RE9", 0x40F00010, 9, 0x00000001, 'd', "PM wake up due to GPIO 9 rising edge detect enabled" },
127*4882a593Smuzhiyun { "PRER_RE10", 0x40F00010, 10, 0x00000001, 'd', "PM wake up due to GPIO10 rising edge detect enabled" },
128*4882a593Smuzhiyun { "PRER_RE11", 0x40F00010, 11, 0x00000001, 'd', "PM wake up due to GPIO11 rising edge detect enabled" },
129*4882a593Smuzhiyun { "PRER_RE12", 0x40F00010, 12, 0x00000001, 'd', "PM wake up due to GPIO12 rising edge detect enabled" },
130*4882a593Smuzhiyun { "PRER_RE13", 0x40F00010, 13, 0x00000001, 'd', "PM wake up due to GPIO13 rising edge detect enabled" },
131*4882a593Smuzhiyun { "PRER_RE14", 0x40F00010, 14, 0x00000001, 'd', "PM wake up due to GPIO14 rising edge detect enabled" },
132*4882a593Smuzhiyun { "PRER_RE15", 0x40F00010, 15, 0x00000001, 'd', "PM wake up due to GPIO15 rising edge detect enabled" },
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun { "PFER", 0x40F00014, 0, 0xffffffff, 'x', "Power Manager Falling Detect Enable Register (3-27)" },
135*4882a593Smuzhiyun { "PFER_FE0", 0x40F00014, 0, 0x00000001, 'd', "PM wake up due to GPIO 0 falling edge detect enabled" },
136*4882a593Smuzhiyun { "PFER_FE1", 0x40F00014, 1, 0x00000001, 'd', "PM wake up due to GPIO 1 falling edge detect enabled" },
137*4882a593Smuzhiyun { "PFER_FE2", 0x40F00014, 2, 0x00000001, 'd', "PM wake up due to GPIO 2 falling edge detect enabled" },
138*4882a593Smuzhiyun { "PFER_FE3", 0x40F00014, 3, 0x00000001, 'd', "PM wake up due to GPIO 3 falling edge detect enabled" },
139*4882a593Smuzhiyun { "PFER_FE4", 0x40F00014, 4, 0x00000001, 'd', "PM wake up due to GPIO 4 falling edge detect enabled" },
140*4882a593Smuzhiyun { "PFER_FE5", 0x40F00014, 5, 0x00000001, 'd', "PM wake up due to GPIO 5 falling edge detect enabled" },
141*4882a593Smuzhiyun { "PFER_FE6", 0x40F00014, 6, 0x00000001, 'd', "PM wake up due to GPIO 6 falling edge detect enabled" },
142*4882a593Smuzhiyun { "PFER_FE7", 0x40F00014, 7, 0x00000001, 'd', "PM wake up due to GPIO 7 falling edge detect enabled" },
143*4882a593Smuzhiyun { "PFER_FE8", 0x40F00014, 8, 0x00000001, 'd', "PM wake up due to GPIO 8 falling edge detect enabled" },
144*4882a593Smuzhiyun { "PFER_FE9", 0x40F00014, 9, 0x00000001, 'd', "PM wake up due to GPIO 9 falling edge detect enabled" },
145*4882a593Smuzhiyun { "PFER_FE10", 0x40F00014, 10, 0x00000001, 'd', "PM wake up due to GPIO10 falling edge detect enabled" },
146*4882a593Smuzhiyun { "PFER_FE11", 0x40F00014, 11, 0x00000001, 'd', "PM wake up due to GPIO11 falling edge detect enabled" },
147*4882a593Smuzhiyun { "PFER_FE12", 0x40F00014, 12, 0x00000001, 'd', "PM wake up due to GPIO12 falling edge detect enabled" },
148*4882a593Smuzhiyun { "PFER_FE13", 0x40F00014, 13, 0x00000001, 'd', "PM wake up due to GPIO13 falling edge detect enabled" },
149*4882a593Smuzhiyun { "PFER_FE14", 0x40F00014, 14, 0x00000001, 'd', "PM wake up due to GPIO14 falling edge detect enabled" },
150*4882a593Smuzhiyun { "PFER_FE15", 0x40F00014, 15, 0x00000001, 'd', "PM wake up due to GPIO15 falling edge detect enabled" },
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun { "PEDR", 0x40F00018, 0, 0xffffffff, 'x', "Power Manager Edge Detect Status Register (3-28)" },
153*4882a593Smuzhiyun { "PEDR_ED0", 0x40F00018, 0, 0x00000001, 'd', "PM wake up due to edge on GPIO 0 detected" },
154*4882a593Smuzhiyun { "PEDR_ED1", 0x40F00018, 1, 0x00000001, 'd', "PM wake up due to edge on GPIO 1 detected" },
155*4882a593Smuzhiyun { "PEDR_ED2", 0x40F00018, 2, 0x00000001, 'd', "PM wake up due to edge on GPIO 2 detected" },
156*4882a593Smuzhiyun { "PEDR_ED3", 0x40F00018, 3, 0x00000001, 'd', "PM wake up due to edge on GPIO 3 detected" },
157*4882a593Smuzhiyun { "PEDR_ED4", 0x40F00018, 4, 0x00000001, 'd', "PM wake up due to edge on GPIO 4 detected" },
158*4882a593Smuzhiyun { "PEDR_ED5", 0x40F00018, 5, 0x00000001, 'd', "PM wake up due to edge on GPIO 5 detected" },
159*4882a593Smuzhiyun { "PEDR_ED6", 0x40F00018, 6, 0x00000001, 'd', "PM wake up due to edge on GPIO 6 detected" },
160*4882a593Smuzhiyun { "PEDR_ED7", 0x40F00018, 7, 0x00000001, 'd', "PM wake up due to edge on GPIO 7 detected" },
161*4882a593Smuzhiyun { "PEDR_ED8", 0x40F00018, 8, 0x00000001, 'd', "PM wake up due to edge on GPIO 8 detected" },
162*4882a593Smuzhiyun { "PEDR_ED9", 0x40F00018, 9, 0x00000001, 'd', "PM wake up due to edge on GPIO 9 detected" },
163*4882a593Smuzhiyun { "PEDR_ED10", 0x40F00018, 10, 0x00000001, 'd', "PM wake up due to edge on GPIO10 detected" },
164*4882a593Smuzhiyun { "PEDR_ED11", 0x40F00018, 11, 0x00000001, 'd', "PM wake up due to edge on GPIO11 detected" },
165*4882a593Smuzhiyun { "PEDR_ED12", 0x40F00018, 12, 0x00000001, 'd', "PM wake up due to edge on GPIO12 detected" },
166*4882a593Smuzhiyun { "PEDR_ED13", 0x40F00018, 13, 0x00000001, 'd', "PM wake up due to edge on GPIO13 detected" },
167*4882a593Smuzhiyun { "PEDR_ED14", 0x40F00018, 14, 0x00000001, 'd', "PM wake up due to edge on GPIO14 detected" },
168*4882a593Smuzhiyun { "PEDR_ED15", 0x40F00018, 15, 0x00000001, 'd', "PM wake up due to edge on GPIO15 detected" },
169*4882a593Smuzhiyun
170*4882a593Smuzhiyun { "PCFR", 0x40F0001C, 0, 0xffffffff, 'x', "Power Manager General Configuration Register (3-24)" },
171*4882a593Smuzhiyun { "PCFR_OPDE", 0x40F0001C, 0, 0x00000001, 'd', "PM stop 3.6864 MHz oscillator during sleep" },
172*4882a593Smuzhiyun { "PCFR_FP", 0x40F0001C, 1, 0x00000001, 'd', "PM PCMCIA signals float during sleep" },
173*4882a593Smuzhiyun { "PCFR_FS", 0x40F0001C, 2, 0x00000001, 'd', "PM static chip select signals float during sleep" },
174*4882a593Smuzhiyun
175*4882a593Smuzhiyun { "PGSR0", 0x40F00020, 0, 0xffffffff, 'x', "Power Manager GPIO Sleep State Register 0 (3-32)" },
176*4882a593Smuzhiyun { "PGSR_SS0", 0x40F00020, 0, 0x00000001, 'd', "PM GPIO pin 0 is driven to 1 during sleep" },
177*4882a593Smuzhiyun { "PGSR_SS1", 0x40F00020, 1, 0x00000001, 'd', "PM GPIO pin 1 is driven to 1 during sleep" },
178*4882a593Smuzhiyun { "PGSR_SS2", 0x40F00020, 2, 0x00000001, 'd', "PM GPIO pin 2 is driven to 1 during sleep" },
179*4882a593Smuzhiyun { "PGSR_SS3", 0x40F00020, 3, 0x00000001, 'd', "PM GPIO pin 3 is driven to 1 during sleep" },
180*4882a593Smuzhiyun { "PGSR_SS4", 0x40F00020, 4, 0x00000001, 'd', "PM GPIO pin 4 is driven to 1 during sleep" },
181*4882a593Smuzhiyun { "PGSR_SS5", 0x40F00020, 5, 0x00000001, 'd', "PM GPIO pin 5 is driven to 1 during sleep" },
182*4882a593Smuzhiyun { "PGSR_SS6", 0x40F00020, 6, 0x00000001, 'd', "PM GPIO pin 6 is driven to 1 during sleep" },
183*4882a593Smuzhiyun { "PGSR_SS7", 0x40F00020, 7, 0x00000001, 'd', "PM GPIO pin 7 is driven to 1 during sleep" },
184*4882a593Smuzhiyun { "PGSR_SS8", 0x40F00020, 8, 0x00000001, 'd', "PM GPIO pin 8 is driven to 1 during sleep" },
185*4882a593Smuzhiyun { "PGSR_SS9", 0x40F00020, 9, 0x00000001, 'd', "PM GPIO pin 9 is driven to 1 during sleep" },
186*4882a593Smuzhiyun { "PGSR_SS10", 0x40F00020, 10, 0x00000001, 'd', "PM GPIO pin 10 is driven to 1 during sleep" },
187*4882a593Smuzhiyun { "PGSR_SS11", 0x40F00020, 11, 0x00000001, 'd', "PM GPIO pin 11 is driven to 1 during sleep" },
188*4882a593Smuzhiyun { "PGSR_SS12", 0x40F00020, 12, 0x00000001, 'd', "PM GPIO pin 12 is driven to 1 during sleep" },
189*4882a593Smuzhiyun { "PGSR_SS13", 0x40F00020, 13, 0x00000001, 'd', "PM GPIO pin 13 is driven to 1 during sleep" },
190*4882a593Smuzhiyun { "PGSR_SS14", 0x40F00020, 14, 0x00000001, 'd', "PM GPIO pin 14 is driven to 1 during sleep" },
191*4882a593Smuzhiyun { "PGSR_SS15", 0x40F00020, 15, 0x00000001, 'd', "PM GPIO pin 15 is driven to 1 during sleep" },
192*4882a593Smuzhiyun { "PGSR_SS16", 0x40F00020, 16, 0x00000001, 'd', "PM GPIO pin 16 is driven to 1 during sleep" },
193*4882a593Smuzhiyun { "PGSR_SS17", 0x40F00020, 17, 0x00000001, 'd', "PM GPIO pin 17 is driven to 1 during sleep" },
194*4882a593Smuzhiyun { "PGSR_SS18", 0x40F00020, 18, 0x00000001, 'd', "PM GPIO pin 18 is driven to 1 during sleep" },
195*4882a593Smuzhiyun { "PGSR_SS19", 0x40F00020, 19, 0x00000001, 'd', "PM GPIO pin 19 is driven to 1 during sleep" },
196*4882a593Smuzhiyun { "PGSR_SS20", 0x40F00020, 20, 0x00000001, 'd', "PM GPIO pin 20 is driven to 1 during sleep" },
197*4882a593Smuzhiyun { "PGSR_SS21", 0x40F00020, 21, 0x00000001, 'd', "PM GPIO pin 21 is driven to 1 during sleep" },
198*4882a593Smuzhiyun { "PGSR_SS22", 0x40F00020, 22, 0x00000001, 'd', "PM GPIO pin 22 is driven to 1 during sleep" },
199*4882a593Smuzhiyun { "PGSR_SS23", 0x40F00020, 23, 0x00000001, 'd', "PM GPIO pin 23 is driven to 1 during sleep" },
200*4882a593Smuzhiyun { "PGSR_SS24", 0x40F00020, 24, 0x00000001, 'd', "PM GPIO pin 24 is driven to 1 during sleep" },
201*4882a593Smuzhiyun { "PGSR_SS25", 0x40F00020, 25, 0x00000001, 'd', "PM GPIO pin 25 is driven to 1 during sleep" },
202*4882a593Smuzhiyun { "PGSR_SS26", 0x40F00020, 26, 0x00000001, 'd', "PM GPIO pin 26 is driven to 1 during sleep" },
203*4882a593Smuzhiyun { "PGSR_SS27", 0x40F00020, 27, 0x00000001, 'd', "PM GPIO pin 27 is driven to 1 during sleep" },
204*4882a593Smuzhiyun { "PGSR_SS28", 0x40F00020, 28, 0x00000001, 'd', "PM GPIO pin 28 is driven to 1 during sleep" },
205*4882a593Smuzhiyun { "PGSR_SS29", 0x40F00020, 29, 0x00000001, 'd', "PM GPIO pin 29 is driven to 1 during sleep" },
206*4882a593Smuzhiyun { "PGSR_SS30", 0x40F00020, 30, 0x00000001, 'd', "PM GPIO pin 30 is driven to 1 during sleep" },
207*4882a593Smuzhiyun { "PGSR_SS31", 0x40F00020, 31, 0x00000001, 'd', "PM GPIO pin 31 is driven to 1 during sleep" },
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun { "PGSR1", 0x40F00024, 0, 0xffffffff, 'x', "Power Manager GPIO Sleep State Register 1 (3-32)" },
210*4882a593Smuzhiyun { "PGSR_SS32", 0x40F00024, 0, 0x00000001, 'd', "PM GPIO pin 32 is driven to 1 during sleep" },
211*4882a593Smuzhiyun { "PGSR_SS33", 0x40F00024, 1, 0x00000001, 'd', "PM GPIO pin 33 is driven to 1 during sleep" },
212*4882a593Smuzhiyun { "PGSR_SS34", 0x40F00024, 2, 0x00000001, 'd', "PM GPIO pin 34 is driven to 1 during sleep" },
213*4882a593Smuzhiyun { "PGSR_SS35", 0x40F00024, 3, 0x00000001, 'd', "PM GPIO pin 35 is driven to 1 during sleep" },
214*4882a593Smuzhiyun { "PGSR_SS36", 0x40F00024, 4, 0x00000001, 'd', "PM GPIO pin 36 is driven to 1 during sleep" },
215*4882a593Smuzhiyun { "PGSR_SS37", 0x40F00024, 5, 0x00000001, 'd', "PM GPIO pin 37 is driven to 1 during sleep" },
216*4882a593Smuzhiyun { "PGSR_SS38", 0x40F00024, 6, 0x00000001, 'd', "PM GPIO pin 38 is driven to 1 during sleep" },
217*4882a593Smuzhiyun { "PGSR_SS39", 0x40F00024, 7, 0x00000001, 'd', "PM GPIO pin 39 is driven to 1 during sleep" },
218*4882a593Smuzhiyun { "PGSR_SS40", 0x40F00024, 8, 0x00000001, 'd', "PM GPIO pin 40 is driven to 1 during sleep" },
219*4882a593Smuzhiyun { "PGSR_SS41", 0x40F00024, 9, 0x00000001, 'd', "PM GPIO pin 41 is driven to 1 during sleep" },
220*4882a593Smuzhiyun { "PGSR_SS42", 0x40F00024, 10, 0x00000001, 'd', "PM GPIO pin 42 is driven to 1 during sleep" },
221*4882a593Smuzhiyun { "PGSR_SS43", 0x40F00024, 11, 0x00000001, 'd', "PM GPIO pin 43 is driven to 1 during sleep" },
222*4882a593Smuzhiyun { "PGSR_SS44", 0x40F00024, 12, 0x00000001, 'd', "PM GPIO pin 44 is driven to 1 during sleep" },
223*4882a593Smuzhiyun { "PGSR_SS45", 0x40F00024, 13, 0x00000001, 'd', "PM GPIO pin 45 is driven to 1 during sleep" },
224*4882a593Smuzhiyun { "PGSR_SS46", 0x40F00024, 14, 0x00000001, 'd', "PM GPIO pin 46 is driven to 1 during sleep" },
225*4882a593Smuzhiyun { "PGSR_SS47", 0x40F00024, 15, 0x00000001, 'd', "PM GPIO pin 47 is driven to 1 during sleep" },
226*4882a593Smuzhiyun { "PGSR_SS48", 0x40F00024, 16, 0x00000001, 'd', "PM GPIO pin 48 is driven to 1 during sleep" },
227*4882a593Smuzhiyun { "PGSR_SS49", 0x40F00024, 17, 0x00000001, 'd', "PM GPIO pin 49 is driven to 1 during sleep" },
228*4882a593Smuzhiyun { "PGSR_SS50", 0x40F00024, 18, 0x00000001, 'd', "PM GPIO pin 50 is driven to 1 during sleep" },
229*4882a593Smuzhiyun { "PGSR_SS51", 0x40F00024, 19, 0x00000001, 'd', "PM GPIO pin 51 is driven to 1 during sleep" },
230*4882a593Smuzhiyun { "PGSR_SS52", 0x40F00024, 20, 0x00000001, 'd', "PM GPIO pin 52 is driven to 1 during sleep" },
231*4882a593Smuzhiyun { "PGSR_SS53", 0x40F00024, 21, 0x00000001, 'd', "PM GPIO pin 53 is driven to 1 during sleep" },
232*4882a593Smuzhiyun { "PGSR_SS54", 0x40F00024, 22, 0x00000001, 'd', "PM GPIO pin 54 is driven to 1 during sleep" },
233*4882a593Smuzhiyun { "PGSR_SS55", 0x40F00024, 23, 0x00000001, 'd', "PM GPIO pin 55 is driven to 1 during sleep" },
234*4882a593Smuzhiyun { "PGSR_SS56", 0x40F00024, 24, 0x00000001, 'd', "PM GPIO pin 56 is driven to 1 during sleep" },
235*4882a593Smuzhiyun { "PGSR_SS57", 0x40F00024, 25, 0x00000001, 'd', "PM GPIO pin 57 is driven to 1 during sleep" },
236*4882a593Smuzhiyun { "PGSR_SS58", 0x40F00024, 26, 0x00000001, 'd', "PM GPIO pin 58 is driven to 1 during sleep" },
237*4882a593Smuzhiyun { "PGSR_SS59", 0x40F00024, 27, 0x00000001, 'd', "PM GPIO pin 59 is driven to 1 during sleep" },
238*4882a593Smuzhiyun { "PGSR_SS60", 0x40F00024, 28, 0x00000001, 'd', "PM GPIO pin 60 is driven to 1 during sleep" },
239*4882a593Smuzhiyun { "PGSR_SS61", 0x40F00024, 29, 0x00000001, 'd', "PM GPIO pin 61 is driven to 1 during sleep" },
240*4882a593Smuzhiyun { "PGSR_SS62", 0x40F00024, 30, 0x00000001, 'd', "PM GPIO pin 62 is driven to 1 during sleep" },
241*4882a593Smuzhiyun { "PGSR_SS63", 0x40F00024, 31, 0x00000001, 'd', "PM GPIO pin 63 is driven to 1 during sleep" },
242*4882a593Smuzhiyun
243*4882a593Smuzhiyun { "PGSR2", 0x40F00028, 0, 0xffffffff, 'x', "Power Manager GPIO Sleep State Register 2 (3-33)" },
244*4882a593Smuzhiyun { "PGSR_SS64", 0x40F00028, 0, 0x00000001, 'd', "PM GPIO pin 64 is driven to 1 during sleep" },
245*4882a593Smuzhiyun { "PGSR_SS65", 0x40F00028, 1, 0x00000001, 'd', "PM GPIO pin 65 is driven to 1 during sleep" },
246*4882a593Smuzhiyun { "PGSR_SS66", 0x40F00028, 2, 0x00000001, 'd', "PM GPIO pin 66 is driven to 1 during sleep" },
247*4882a593Smuzhiyun { "PGSR_SS67", 0x40F00028, 3, 0x00000001, 'd', "PM GPIO pin 67 is driven to 1 during sleep" },
248*4882a593Smuzhiyun { "PGSR_SS68", 0x40F00028, 4, 0x00000001, 'd', "PM GPIO pin 68 is driven to 1 during sleep" },
249*4882a593Smuzhiyun { "PGSR_SS69", 0x40F00028, 5, 0x00000001, 'd', "PM GPIO pin 69 is driven to 1 during sleep" },
250*4882a593Smuzhiyun { "PGSR_SS70", 0x40F00028, 6, 0x00000001, 'd', "PM GPIO pin 70 is driven to 1 during sleep" },
251*4882a593Smuzhiyun { "PGSR_SS71", 0x40F00028, 7, 0x00000001, 'd', "PM GPIO pin 71 is driven to 1 during sleep" },
252*4882a593Smuzhiyun { "PGSR_SS72", 0x40F00028, 8, 0x00000001, 'd', "PM GPIO pin 72 is driven to 1 during sleep" },
253*4882a593Smuzhiyun { "PGSR_SS73", 0x40F00028, 9, 0x00000001, 'd', "PM GPIO pin 73 is driven to 1 during sleep" },
254*4882a593Smuzhiyun { "PGSR_SS74", 0x40F00028, 10, 0x00000001, 'd', "PM GPIO pin 74 is driven to 1 during sleep" },
255*4882a593Smuzhiyun { "PGSR_SS75", 0x40F00028, 11, 0x00000001, 'd', "PM GPIO pin 75 is driven to 1 during sleep" },
256*4882a593Smuzhiyun { "PGSR_SS76", 0x40F00028, 12, 0x00000001, 'd', "PM GPIO pin 76 is driven to 1 during sleep" },
257*4882a593Smuzhiyun { "PGSR_SS77", 0x40F00028, 13, 0x00000001, 'd', "PM GPIO pin 77 is driven to 1 during sleep" },
258*4882a593Smuzhiyun { "PGSR_SS78", 0x40F00028, 14, 0x00000001, 'd', "PM GPIO pin 78 is driven to 1 during sleep" },
259*4882a593Smuzhiyun { "PGSR_SS79", 0x40F00028, 15, 0x00000001, 'd', "PM GPIO pin 79 is driven to 1 during sleep" },
260*4882a593Smuzhiyun { "PGSR_SS80", 0x40F00028, 16, 0x00000001, 'd', "PM GPIO pin 80 is driven to 1 during sleep" },
261*4882a593Smuzhiyun
262*4882a593Smuzhiyun { "RCSR", 0x40F00030, 0, 0xffffffff, 'x', "Power Manager Reset Controller Status Register (3-34)" },
263*4882a593Smuzhiyun { "RCSR_HWR", 0x40F00030, 0, 0x00000001, 'd', "PM hardware reset occurred" },
264*4882a593Smuzhiyun { "RCSR_WDR", 0x40F00030, 1, 0x00000001, 'd', "PM watchdog reset occurred" },
265*4882a593Smuzhiyun { "RCSR_SMR", 0x40F00030, 2, 0x00000001, 'd', "PM sleep mode occurred" },
266*4882a593Smuzhiyun { "RCSR_GFR", 0x40F00030, 3, 0x00000001, 'd', "PM GPIO reset occurred" },
267*4882a593Smuzhiyun
268*4882a593Smuzhiyun // PXA255
269*4882a593Smuzhiyun { "PMFW", 0x40F00034, 0, 0xffffffff, 'x', "Power Manager Fast Sleep Wakeup Register (3-31)" },
270*4882a593Smuzhiyun { "PMFW_FWAKE",0x40F00034, 1, 0x00000001, 'x', "Fast Wakeup Enable" },
271*4882a593Smuzhiyun
272*4882a593Smuzhiyun { "CCCR", 0x41300000, 0, 0xffffffff, 'x', "Core Clock Configuration Register (3-35)" },
273*4882a593Smuzhiyun { "CCCR_L", 0x41300000, 0, 0x0000001f, 'x', "CM crystal freq to memory freq multiplier" },
274*4882a593Smuzhiyun { "CCCR_M", 0x41300000, 5, 0x00000003, 'x', "CM memory freq to run mode freq multiplier" },
275*4882a593Smuzhiyun { "CCCR_N", 0x41300000, 7, 0x00000007, 'x', "CM run mode freq to turbo freq multiplier" },
276*4882a593Smuzhiyun
277*4882a593Smuzhiyun { "CKEN", 0x41300004, 0, 0xffffffff, 'x', "Clock Enable Register (3-36)" },
278*4882a593Smuzhiyun { "CKEN_0", 0x41300004, 0, 0x00000001, 'd', "CM PWM0 clock enabled" },
279*4882a593Smuzhiyun { "CKEN_1", 0x41300004, 1, 0x00000001, 'd', "CM PWM1 clock enabled" },
280*4882a593Smuzhiyun { "CKEN_2", 0x41300004, 2, 0x00000001, 'd', "CM AC97 clock enabled" },
281*4882a593Smuzhiyun { "CKEN_3", 0x41300004, 3, 0x00000001, 'd', "CM SSP clock enabled" },
282*4882a593Smuzhiyun { "CKEN_5", 0x41300004, 5, 0x00000001, 'd', "CM STUART clock enabled" },
283*4882a593Smuzhiyun { "CKEN_6", 0x41300004, 6, 0x00000001, 'd', "CM FFUART clock enabled" },
284*4882a593Smuzhiyun { "CKEN_7", 0x41300004, 7, 0x00000001, 'd', "CM BTUART clock enabled" },
285*4882a593Smuzhiyun { "CKEN_8", 0x41300004, 8, 0x00000001, 'd', "CM I2S clock enabled" },
286*4882a593Smuzhiyun { "CKEN_11", 0x41300004, 11, 0x00000001, 'd', "CM USB clock enabled" },
287*4882a593Smuzhiyun { "CKEN_12", 0x41300004, 12, 0x00000001, 'd', "CM MMC clock enabled" },
288*4882a593Smuzhiyun { "CKEN_13", 0x41300004, 13, 0x00000001, 'd', "CM FIPC clock enabled" },
289*4882a593Smuzhiyun { "CKEN_14", 0x41300004, 14, 0x00000001, 'd', "CM I2C clock enabled" },
290*4882a593Smuzhiyun { "CKEN_16", 0x41300004, 16, 0x00000001, 'd', "CM LCD clock enabled" },
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun { "OSCC", 0x41300008, 0, 0xffffffff, 'x', "Oscillator Configuration Register (3-38)" },
293*4882a593Smuzhiyun { "OSCC_OOK", 0x41300008, 0, 0x00000001, 'd', "CM 32.768 kHz oscillator enabled and stabilized" },
294*4882a593Smuzhiyun { "OSCC_OON", 0x41300008, 1, 0x00000001, 'd', "CM 32.768 kHz oscillator enabled" },
295*4882a593Smuzhiyun
296*4882a593Smuzhiyun // TODO: CP14-Registers (3-37)
297*4882a593Smuzhiyun
298*4882a593Smuzhiyun { "GPLR0", 0x40E00000, 0, 0xffffffff, 'x', "GPIO Pin Level Register 0 (4-7)" },
299*4882a593Smuzhiyun #if defined(CONFIG_ARCH_RAMSES)
300*4882a593Smuzhiyun { "GPLR0_0", 0x40E00000, 0, 0x00000001, 'd', "GPIO 0 (nc) level" },
301*4882a593Smuzhiyun { "GPLR0_1", 0x40E00000, 1, 0x00000001, 'd', "GPIO 1 (nPFI) level" },
302*4882a593Smuzhiyun { "GPLR0_2", 0x40E00000, 2, 0x00000001, 'd', "GPIO 2 (BAT_DATA) level" },
303*4882a593Smuzhiyun { "GPLR0_3", 0x40E00000, 3, 0x00000001, 'd', "GPIO 3 (IRQ_KEY) level" },
304*4882a593Smuzhiyun { "GPLR0_4", 0x40E00000, 4, 0x00000001, 'd', "GPIO 4 (IRQ_ETH) level" },
305*4882a593Smuzhiyun { "GPLR0_5", 0x40E00000, 5, 0x00000001, 'd', "GPIO 5 (nc) level" },
306*4882a593Smuzhiyun { "GPLR0_6", 0x40E00000, 6, 0x00000001, 'd', "GPIO 6 (MMC_CLK) level" },
307*4882a593Smuzhiyun { "GPLR0_7", 0x40E00000, 7, 0x00000001, 'd', "GPIO 7 (IRQ_GSM) level" },
308*4882a593Smuzhiyun { "GPLR0_8", 0x40E00000, 8, 0x00000001, 'd', "GPIO 8 (nPCC_S1_CD) level" },
309*4882a593Smuzhiyun { "GPLR0_9", 0x40E00000, 9, 0x00000001, 'd', "GPIO 9 (MMC_CD) level" },
310*4882a593Smuzhiyun { "GPLR0_10", 0x40E00000, 10, 0x00000001, 'd', "GPIO 10 (IRQ_RTC) level" },
311*4882a593Smuzhiyun { "GPLR0_11", 0x40E00000, 11, 0x00000001, 'd', "GPIO 11 (nc 3M6) level" },
312*4882a593Smuzhiyun { "GPLR0_12", 0x40E00000, 12, 0x00000001, 'd', "GPIO 12 (nc) level" },
313*4882a593Smuzhiyun { "GPLR0_13", 0x40E00000, 13, 0x00000001, 'd', "GPIO 13 (IRQ_DOCK) level" },
314*4882a593Smuzhiyun { "GPLR0_14", 0x40E00000, 14, 0x00000001, 'd', "GPIO 14 (nc) level" },
315*4882a593Smuzhiyun { "GPLR0_15", 0x40E00000, 15, 0x00000001, 'd', "GPIO 15 (nCS1) level" },
316*4882a593Smuzhiyun { "GPLR0_16", 0x40E00000, 16, 0x00000001, 'd', "GPIO 16 (PWM0) level" },
317*4882a593Smuzhiyun { "GPLR0_17", 0x40E00000, 17, 0x00000001, 'd', "GPIO 17 (PWM1) level" },
318*4882a593Smuzhiyun { "GPLR0_18", 0x40E00000, 18, 0x00000001, 'd', "GPIO 18 (RDY) level" },
319*4882a593Smuzhiyun { "GPLR0_19", 0x40E00000, 19, 0x00000001, 'd', "GPIO 19 (nc nPCC_S0_IRQ) level" },
320*4882a593Smuzhiyun { "GPLR0_20", 0x40E00000, 20, 0x00000001, 'd', "GPIO 20 (nc) level" },
321*4882a593Smuzhiyun { "GPLR0_21", 0x40E00000, 21, 0x00000001, 'd', "GPIO 21 (AC97_IRQ) level" },
322*4882a593Smuzhiyun { "GPLR0_22", 0x40E00000, 22, 0x00000001, 'd', "GPIO 22 (nPCC_S1_IRQ) level" },
323*4882a593Smuzhiyun { "GPLR0_23", 0x40E00000, 23, 0x00000001, 'd', "GPIO 23 (UART_INTA) level" },
324*4882a593Smuzhiyun { "GPLR0_24", 0x40E00000, 24, 0x00000001, 'd', "GPIO 24 (UART_INTB) level" },
325*4882a593Smuzhiyun { "GPLR0_25", 0x40E00000, 25, 0x00000001, 'd', "GPIO 25 (UART_INTC) level" },
326*4882a593Smuzhiyun { "GPLR0_26", 0x40E00000, 26, 0x00000001, 'd', "GPIO 26 (UART_INTD) level" },
327*4882a593Smuzhiyun { "GPLR0_27", 0x40E00000, 27, 0x00000001, 'd', "GPIO 27 (nc CPLD_FREE) level" },
328*4882a593Smuzhiyun { "GPLR0_28", 0x40E00000, 28, 0x00000001, 'd', "GPIO 28 (AUD_BITCLK) level" },
329*4882a593Smuzhiyun { "GPLR0_29", 0x40E00000, 29, 0x00000001, 'd', "GPIO 29 (AUD_SDIN0) level" },
330*4882a593Smuzhiyun { "GPLR0_30", 0x40E00000, 30, 0x00000001, 'd', "GPIO 30 (AUD_SDOUT) level" },
331*4882a593Smuzhiyun { "GPLR0_31", 0x40E00000, 31, 0x00000001, 'd', "GPIO 31 (AUD_SYNC) level" },
332*4882a593Smuzhiyun #else
333*4882a593Smuzhiyun { "GPLR0_0", 0x40E00000, 0, 0x00000001, 'd', "GPIO 0 level" },
334*4882a593Smuzhiyun { "GPLR0_1", 0x40E00000, 1, 0x00000001, 'd', "GPIO 1 level" },
335*4882a593Smuzhiyun { "GPLR0_2", 0x40E00000, 2, 0x00000001, 'd', "GPIO 2 level" },
336*4882a593Smuzhiyun { "GPLR0_3", 0x40E00000, 3, 0x00000001, 'd', "GPIO 3 level" },
337*4882a593Smuzhiyun { "GPLR0_4", 0x40E00000, 4, 0x00000001, 'd', "GPIO 4 level" },
338*4882a593Smuzhiyun { "GPLR0_5", 0x40E00000, 5, 0x00000001, 'd', "GPIO 5 level" },
339*4882a593Smuzhiyun { "GPLR0_6", 0x40E00000, 6, 0x00000001, 'd', "GPIO 6 level" },
340*4882a593Smuzhiyun { "GPLR0_7", 0x40E00000, 7, 0x00000001, 'd', "GPIO 7 level" },
341*4882a593Smuzhiyun { "GPLR0_8", 0x40E00000, 8, 0x00000001, 'd', "GPIO 8 level" },
342*4882a593Smuzhiyun { "GPLR0_9", 0x40E00000, 9, 0x00000001, 'd', "GPIO 9 level" },
343*4882a593Smuzhiyun { "GPLR0_10", 0x40E00000, 10, 0x00000001, 'd', "GPIO 10 level" },
344*4882a593Smuzhiyun { "GPLR0_11", 0x40E00000, 11, 0x00000001, 'd', "GPIO 11 level" },
345*4882a593Smuzhiyun { "GPLR0_12", 0x40E00000, 12, 0x00000001, 'd', "GPIO 12 level" },
346*4882a593Smuzhiyun { "GPLR0_13", 0x40E00000, 13, 0x00000001, 'd', "GPIO 13 level" },
347*4882a593Smuzhiyun { "GPLR0_14", 0x40E00000, 14, 0x00000001, 'd', "GPIO 14 level" },
348*4882a593Smuzhiyun { "GPLR0_15", 0x40E00000, 15, 0x00000001, 'd', "GPIO 15 level" },
349*4882a593Smuzhiyun { "GPLR0_16", 0x40E00000, 16, 0x00000001, 'd', "GPIO 16 level" },
350*4882a593Smuzhiyun { "GPLR0_17", 0x40E00000, 17, 0x00000001, 'd', "GPIO 17 level" },
351*4882a593Smuzhiyun { "GPLR0_18", 0x40E00000, 18, 0x00000001, 'd', "GPIO 18 level" },
352*4882a593Smuzhiyun { "GPLR0_19", 0x40E00000, 19, 0x00000001, 'd', "GPIO 19 level" },
353*4882a593Smuzhiyun { "GPLR0_20", 0x40E00000, 20, 0x00000001, 'd', "GPIO 20 level" },
354*4882a593Smuzhiyun { "GPLR0_21", 0x40E00000, 21, 0x00000001, 'd', "GPIO 21 level" },
355*4882a593Smuzhiyun { "GPLR0_22", 0x40E00000, 22, 0x00000001, 'd', "GPIO 22 level" },
356*4882a593Smuzhiyun { "GPLR0_23", 0x40E00000, 23, 0x00000001, 'd', "GPIO 23 level" },
357*4882a593Smuzhiyun { "GPLR0_24", 0x40E00000, 24, 0x00000001, 'd', "GPIO 24 level" },
358*4882a593Smuzhiyun { "GPLR0_25", 0x40E00000, 25, 0x00000001, 'd', "GPIO 25 level" },
359*4882a593Smuzhiyun { "GPLR0_26", 0x40E00000, 26, 0x00000001, 'd', "GPIO 26 level" },
360*4882a593Smuzhiyun { "GPLR0_27", 0x40E00000, 27, 0x00000001, 'd', "GPIO 27 level" },
361*4882a593Smuzhiyun { "GPLR0_28", 0x40E00000, 28, 0x00000001, 'd', "GPIO 28 level" },
362*4882a593Smuzhiyun { "GPLR0_29", 0x40E00000, 29, 0x00000001, 'd', "GPIO 29 level" },
363*4882a593Smuzhiyun { "GPLR0_30", 0x40E00000, 30, 0x00000001, 'd', "GPIO 30 level" },
364*4882a593Smuzhiyun { "GPLR0_31", 0x40E00000, 31, 0x00000001, 'd', "GPIO 31 level" },
365*4882a593Smuzhiyun #endif
366*4882a593Smuzhiyun
367*4882a593Smuzhiyun { "GPLR1", 0x40E00004, 0, 0xffffffff, 'x', "GPIO Level Register 1 (4-8)" },
368*4882a593Smuzhiyun #if defined(CONFIG_ARCH_RAMSES)
369*4882a593Smuzhiyun { "GPLR1_32", 0x40E00004, 0, 0x00000001, 'd', "GPIO 32 (AUD_SDIN1) level" },
370*4882a593Smuzhiyun { "GPLR1_33", 0x40E00004, 1, 0x00000001, 'd', "GPIO 33 (nCS5) level" },
371*4882a593Smuzhiyun { "GPLR1_34", 0x40E00004, 2, 0x00000001, 'd', "GPIO 34 (FF_RXD) level" },
372*4882a593Smuzhiyun { "GPLR1_35", 0x40E00004, 3, 0x00000001, 'd', "GPIO 35 (FF_CTS) level" },
373*4882a593Smuzhiyun { "GPLR1_36", 0x40E00004, 4, 0x00000001, 'd', "GPIO 36 (FF_DCD) level" },
374*4882a593Smuzhiyun { "GPLR1_37", 0x40E00004, 5, 0x00000001, 'd', "GPIO 37 (FF_DSR) level" },
375*4882a593Smuzhiyun { "GPLR1_38", 0x40E00004, 6, 0x00000001, 'd', "GPIO 38 (FF_RI) level" },
376*4882a593Smuzhiyun { "GPLR1_39", 0x40E00004, 7, 0x00000001, 'd', "GPIO 39 (FF_TXD) level" },
377*4882a593Smuzhiyun { "GPLR1_40", 0x40E00004, 8, 0x00000001, 'd', "GPIO 40 (FF_DTR) level" },
378*4882a593Smuzhiyun { "GPLR1_41", 0x40E00004, 9, 0x00000001, 'd', "GPIO 41 (FF_RTS) level" },
379*4882a593Smuzhiyun { "GPLR1_42", 0x40E00004, 10, 0x00000001, 'd', "GPIO 42 (BT_RXD) level" },
380*4882a593Smuzhiyun { "GPLR1_43", 0x40E00004, 11, 0x00000001, 'd', "GPIO 43 (BT_TXD) level" },
381*4882a593Smuzhiyun { "GPLR1_44", 0x40E00004, 12, 0x00000001, 'd', "GPIO 44 (BT_CTS) level" },
382*4882a593Smuzhiyun { "GPLR1_45", 0x40E00004, 13, 0x00000001, 'd', "GPIO 45 (BT_RTS) level" },
383*4882a593Smuzhiyun { "GPLR1_46", 0x40E00004, 14, 0x00000001, 'd', "GPIO 46 (IR_RXD) level" },
384*4882a593Smuzhiyun { "GPLR1_47", 0x40E00004, 15, 0x00000001, 'd', "GPIO 47 (IR_TXD) level" },
385*4882a593Smuzhiyun { "GPLR1_48", 0x40E00004, 16, 0x00000001, 'd', "GPIO 48 (nPOE) level" },
386*4882a593Smuzhiyun { "GPLR1_49", 0x40E00004, 17, 0x00000001, 'd', "GPIO 49 (nPWE) level" },
387*4882a593Smuzhiyun { "GPLR1_50", 0x40E00004, 18, 0x00000001, 'd', "GPIO 50 (nPIOR) level" },
388*4882a593Smuzhiyun { "GPLR1_51", 0x40E00004, 19, 0x00000001, 'd', "GPIO 51 (nPIOW) level" },
389*4882a593Smuzhiyun { "GPLR1_52", 0x40E00004, 20, 0x00000001, 'd', "GPIO 52 (nPCE1) level" },
390*4882a593Smuzhiyun { "GPLR1_53", 0x40E00004, 21, 0x00000001, 'd', "GPIO 53 (nPCE2) level" },
391*4882a593Smuzhiyun { "GPLR1_54", 0x40E00004, 22, 0x00000001, 'd', "GPIO 54 (nPKTSEL) level" },
392*4882a593Smuzhiyun { "GPLR1_55", 0x40E00004, 23, 0x00000001, 'd', "GPIO 55 (nPREG) level" },
393*4882a593Smuzhiyun { "GPLR1_56", 0x40E00004, 24, 0x00000001, 'd', "GPIO 56 (nPWAIT) level" },
394*4882a593Smuzhiyun { "GPLR1_57", 0x40E00004, 25, 0x00000001, 'd', "GPIO 57 (nIOIS16) level" },
395*4882a593Smuzhiyun { "GPLR1_58", 0x40E00004, 26, 0x00000001, 'd', "GPIO 58 (LDD0) level" },
396*4882a593Smuzhiyun { "GPLR1_59", 0x40E00004, 27, 0x00000001, 'd', "GPIO 59 (LDD1) level" },
397*4882a593Smuzhiyun { "GPLR1_60", 0x40E00004, 28, 0x00000001, 'd', "GPIO 60 (LDD2) level" },
398*4882a593Smuzhiyun { "GPLR1_61", 0x40E00004, 29, 0x00000001, 'd', "GPIO 61 (LDD3) level" },
399*4882a593Smuzhiyun { "GPLR1_62", 0x40E00004, 30, 0x00000001, 'd', "GPIO 62 (LDD4) level" },
400*4882a593Smuzhiyun { "GPLR1_63", 0x40E00004, 31, 0x00000001, 'd', "GPIO 63 (LDD5) level" },
401*4882a593Smuzhiyun #else
402*4882a593Smuzhiyun { "GPLR1_32", 0x40E00004, 0, 0x00000001, 'd', "GPIO 32 level" },
403*4882a593Smuzhiyun { "GPLR1_33", 0x40E00004, 1, 0x00000001, 'd', "GPIO 33 level" },
404*4882a593Smuzhiyun { "GPLR1_34", 0x40E00004, 2, 0x00000001, 'd', "GPIO 34 level" },
405*4882a593Smuzhiyun { "GPLR1_35", 0x40E00004, 3, 0x00000001, 'd', "GPIO 35 level" },
406*4882a593Smuzhiyun { "GPLR1_36", 0x40E00004, 4, 0x00000001, 'd', "GPIO 36 level" },
407*4882a593Smuzhiyun { "GPLR1_37", 0x40E00004, 5, 0x00000001, 'd', "GPIO 37 level" },
408*4882a593Smuzhiyun { "GPLR1_38", 0x40E00004, 6, 0x00000001, 'd', "GPIO 38 level" },
409*4882a593Smuzhiyun { "GPLR1_39", 0x40E00004, 7, 0x00000001, 'd', "GPIO 39 level" },
410*4882a593Smuzhiyun { "GPLR1_40", 0x40E00004, 8, 0x00000001, 'd', "GPIO 40 level" },
411*4882a593Smuzhiyun { "GPLR1_41", 0x40E00004, 9, 0x00000001, 'd', "GPIO 41 level" },
412*4882a593Smuzhiyun { "GPLR1_42", 0x40E00004, 10, 0x00000001, 'd', "GPIO 42 level" },
413*4882a593Smuzhiyun { "GPLR1_43", 0x40E00004, 11, 0x00000001, 'd', "GPIO 43 level" },
414*4882a593Smuzhiyun { "GPLR1_44", 0x40E00004, 12, 0x00000001, 'd', "GPIO 44 level" },
415*4882a593Smuzhiyun { "GPLR1_45", 0x40E00004, 13, 0x00000001, 'd', "GPIO 45 level" },
416*4882a593Smuzhiyun { "GPLR1_46", 0x40E00004, 14, 0x00000001, 'd', "GPIO 46 level" },
417*4882a593Smuzhiyun { "GPLR1_47", 0x40E00004, 15, 0x00000001, 'd', "GPIO 47 level" },
418*4882a593Smuzhiyun { "GPLR1_48", 0x40E00004, 16, 0x00000001, 'd', "GPIO 48 level" },
419*4882a593Smuzhiyun { "GPLR1_49", 0x40E00004, 17, 0x00000001, 'd', "GPIO 49 level" },
420*4882a593Smuzhiyun { "GPLR1_50", 0x40E00004, 18, 0x00000001, 'd', "GPIO 50 level" },
421*4882a593Smuzhiyun { "GPLR1_51", 0x40E00004, 19, 0x00000001, 'd', "GPIO 51 level" },
422*4882a593Smuzhiyun { "GPLR1_52", 0x40E00004, 20, 0x00000001, 'd', "GPIO 52 level" },
423*4882a593Smuzhiyun { "GPLR1_53", 0x40E00004, 21, 0x00000001, 'd', "GPIO 53 level" },
424*4882a593Smuzhiyun { "GPLR1_54", 0x40E00004, 22, 0x00000001, 'd', "GPIO 54 level" },
425*4882a593Smuzhiyun { "GPLR1_55", 0x40E00004, 23, 0x00000001, 'd', "GPIO 55 level" },
426*4882a593Smuzhiyun { "GPLR1_56", 0x40E00004, 24, 0x00000001, 'd', "GPIO 56 level" },
427*4882a593Smuzhiyun { "GPLR1_57", 0x40E00004, 25, 0x00000001, 'd', "GPIO 57 level" },
428*4882a593Smuzhiyun { "GPLR1_58", 0x40E00004, 26, 0x00000001, 'd', "GPIO 58 level" },
429*4882a593Smuzhiyun { "GPLR1_59", 0x40E00004, 27, 0x00000001, 'd', "GPIO 59 level" },
430*4882a593Smuzhiyun { "GPLR1_60", 0x40E00004, 28, 0x00000001, 'd', "GPIO 60 level" },
431*4882a593Smuzhiyun { "GPLR1_61", 0x40E00004, 29, 0x00000001, 'd', "GPIO 61 level" },
432*4882a593Smuzhiyun { "GPLR1_62", 0x40E00004, 30, 0x00000001, 'd', "GPIO 62 level" },
433*4882a593Smuzhiyun { "GPLR1_63", 0x40E00004, 31, 0x00000001, 'd', "GPIO 63 level" },
434*4882a593Smuzhiyun #endif
435*4882a593Smuzhiyun
436*4882a593Smuzhiyun { "GPLR2", 0x40E00008, 0, 0xffffffff, 'x', "GPIO Level Register 2 (4-8)" },
437*4882a593Smuzhiyun #if defined(CONFIG_ARCH_RAMSES)
438*4882a593Smuzhiyun { "GPLR2_64", 0x40E00008, 0, 0x00000001, 'd', "GPIO 64 (LDD6) level" },
439*4882a593Smuzhiyun { "GPLR2_65", 0x40E00008, 1, 0x00000001, 'd', "GPIO 65 (LDD7) level" },
440*4882a593Smuzhiyun { "GPLR2_66", 0x40E00008, 2, 0x00000001, 'd', "GPIO 66 (nc) level" },
441*4882a593Smuzhiyun { "GPLR2_67", 0x40E00008, 3, 0x00000001, 'd', "GPIO 67 (nc) level" },
442*4882a593Smuzhiyun { "GPLR2_68", 0x40E00008, 4, 0x00000001, 'd', "GPIO 68 (nc) level" },
443*4882a593Smuzhiyun { "GPLR2_69", 0x40E00008, 5, 0x00000001, 'd', "GPIO 69 (nc) level" },
444*4882a593Smuzhiyun { "GPLR2_70", 0x40E00008, 6, 0x00000001, 'd', "GPIO 70 (nc) level" },
445*4882a593Smuzhiyun { "GPLR2_71", 0x40E00008, 7, 0x00000001, 'd', "GPIO 71 (nc) level" },
446*4882a593Smuzhiyun { "GPLR2_72", 0x40E00008, 8, 0x00000001, 'd', "GPIO 72 (nc) level" },
447*4882a593Smuzhiyun { "GPLR2_73", 0x40E00008, 9, 0x00000001, 'd', "GPIO 73 (nc) level" },
448*4882a593Smuzhiyun { "GPLR2_74", 0x40E00008, 10, 0x00000001, 'd', "GPIO 74 (FCLK) level" },
449*4882a593Smuzhiyun { "GPLR2_75", 0x40E00008, 11, 0x00000001, 'd', "GPIO 75 (LCLK) level" },
450*4882a593Smuzhiyun { "GPLR2_76", 0x40E00008, 12, 0x00000001, 'd', "GPIO 76 (PCLK) level" },
451*4882a593Smuzhiyun { "GPLR2_77", 0x40E00008, 13, 0x00000001, 'd', "GPIO 77 (BIAS) level" },
452*4882a593Smuzhiyun { "GPLR2_78", 0x40E00008, 14, 0x00000001, 'd', "GPIO 78 (nCS2) level" },
453*4882a593Smuzhiyun { "GPLR2_79", 0x40E00008, 15, 0x00000001, 'd', "GPIO 79 (nCS3) level" },
454*4882a593Smuzhiyun { "GPLR2_80", 0x40E00008, 16, 0x00000001, 'd', "GPIO 80 (nCS4) level" },
455*4882a593Smuzhiyun { "GPLR2_81", 0x40E00008, 17, 0x00000001, 'd', "GPIO 81 (nc) level" },
456*4882a593Smuzhiyun { "GPLR2_82", 0x40E00008, 18, 0x00000001, 'd', "GPIO 82 (nc) level" },
457*4882a593Smuzhiyun { "GPLR2_83", 0x40E00008, 19, 0x00000001, 'd', "GPIO 83 (nc) level" },
458*4882a593Smuzhiyun { "GPLR2_84", 0x40E00008, 20, 0x00000001, 'd', "GPIO 84 (nc) level" },
459*4882a593Smuzhiyun #else
460*4882a593Smuzhiyun { "GPLR2_64", 0x40E00008, 0, 0x00000001, 'd', "GPIO 64 level" },
461*4882a593Smuzhiyun { "GPLR2_65", 0x40E00008, 1, 0x00000001, 'd', "GPIO 65 level" },
462*4882a593Smuzhiyun { "GPLR2_66", 0x40E00008, 2, 0x00000001, 'd', "GPIO 66 level" },
463*4882a593Smuzhiyun { "GPLR2_67", 0x40E00008, 3, 0x00000001, 'd', "GPIO 67 level" },
464*4882a593Smuzhiyun { "GPLR2_68", 0x40E00008, 4, 0x00000001, 'd', "GPIO 68 level" },
465*4882a593Smuzhiyun { "GPLR2_69", 0x40E00008, 5, 0x00000001, 'd', "GPIO 69 level" },
466*4882a593Smuzhiyun { "GPLR2_70", 0x40E00008, 6, 0x00000001, 'd', "GPIO 70 level" },
467*4882a593Smuzhiyun { "GPLR2_71", 0x40E00008, 7, 0x00000001, 'd', "GPIO 71 level" },
468*4882a593Smuzhiyun { "GPLR2_72", 0x40E00008, 8, 0x00000001, 'd', "GPIO 72 level" },
469*4882a593Smuzhiyun { "GPLR2_73", 0x40E00008, 9, 0x00000001, 'd', "GPIO 73 level" },
470*4882a593Smuzhiyun { "GPLR2_74", 0x40E00008, 10, 0x00000001, 'd', "GPIO 74 level" },
471*4882a593Smuzhiyun { "GPLR2_75", 0x40E00008, 11, 0x00000001, 'd', "GPIO 75 level" },
472*4882a593Smuzhiyun { "GPLR2_76", 0x40E00008, 12, 0x00000001, 'd', "GPIO 76 level" },
473*4882a593Smuzhiyun { "GPLR2_77", 0x40E00008, 13, 0x00000001, 'd', "GPIO 77 level" },
474*4882a593Smuzhiyun { "GPLR2_78", 0x40E00008, 14, 0x00000001, 'd', "GPIO 78 level" },
475*4882a593Smuzhiyun { "GPLR2_79", 0x40E00008, 15, 0x00000001, 'd', "GPIO 79 level" },
476*4882a593Smuzhiyun { "GPLR2_80", 0x40E00008, 16, 0x00000001, 'd', "GPIO 80 level" },
477*4882a593Smuzhiyun { "GPLR2_81", 0x40E00008, 17, 0x00000001, 'd', "GPIO 81 level" },
478*4882a593Smuzhiyun { "GPLR2_82", 0x40E00008, 18, 0x00000001, 'd', "GPIO 82 level" },
479*4882a593Smuzhiyun { "GPLR2_83", 0x40E00008, 19, 0x00000001, 'd', "GPIO 83 level" },
480*4882a593Smuzhiyun { "GPLR2_84", 0x40E00008, 20, 0x00000001, 'd', "GPIO 84 level" },
481*4882a593Smuzhiyun #endif
482*4882a593Smuzhiyun
483*4882a593Smuzhiyun { "GPDR0", 0x40E0000C, 0, 0xffffffff, 'x', "GPIO Direction Register 0 (4-9)" },
484*4882a593Smuzhiyun { "GPDR0_0", 0x40E0000C, 0, 0x00000001, 'd', "GPIO 0 i/o direction (1=output)" },
485*4882a593Smuzhiyun { "GPDR0_1", 0x40E0000C, 1, 0x00000001, 'd', "GPIO 1 i/o direction (1=output)" },
486*4882a593Smuzhiyun { "GPDR0_2", 0x40E0000C, 2, 0x00000001, 'd', "GPIO 2 i/o direction (1=output)" },
487*4882a593Smuzhiyun { "GPDR0_3", 0x40E0000C, 3, 0x00000001, 'd', "GPIO 3 i/o direction (1=output)" },
488*4882a593Smuzhiyun { "GPDR0_4", 0x40E0000C, 4, 0x00000001, 'd', "GPIO 4 i/o direction (1=output)" },
489*4882a593Smuzhiyun { "GPDR0_5", 0x40E0000C, 5, 0x00000001, 'd', "GPIO 5 i/o direction (1=output)" },
490*4882a593Smuzhiyun { "GPDR0_6", 0x40E0000C, 6, 0x00000001, 'd', "GPIO 6 i/o direction (1=output)" },
491*4882a593Smuzhiyun { "GPDR0_7", 0x40E0000C, 7, 0x00000001, 'd', "GPIO 7 i/o direction (1=output)" },
492*4882a593Smuzhiyun { "GPDR0_8", 0x40E0000C, 8, 0x00000001, 'd', "GPIO 8 i/o direction (1=output)" },
493*4882a593Smuzhiyun { "GPDR0_9", 0x40E0000C, 9, 0x00000001, 'd', "GPIO 9 i/o direction (1=output)" },
494*4882a593Smuzhiyun { "GPDR0_10", 0x40E0000C, 10, 0x00000001, 'd', "GPIO 10 i/o direction (1=output)" },
495*4882a593Smuzhiyun { "GPDR0_11", 0x40E0000C, 11, 0x00000001, 'd', "GPIO 11 i/o direction (1=output)" },
496*4882a593Smuzhiyun { "GPDR0_12", 0x40E0000C, 12, 0x00000001, 'd', "GPIO 12 i/o direction (1=output)" },
497*4882a593Smuzhiyun { "GPDR0_13", 0x40E0000C, 13, 0x00000001, 'd', "GPIO 13 i/o direction (1=output)" },
498*4882a593Smuzhiyun { "GPDR0_14", 0x40E0000C, 14, 0x00000001, 'd', "GPIO 14 i/o direction (1=output)" },
499*4882a593Smuzhiyun { "GPDR0_15", 0x40E0000C, 15, 0x00000001, 'd', "GPIO 15 i/o direction (1=output)" },
500*4882a593Smuzhiyun { "GPDR0_16", 0x40E0000C, 16, 0x00000001, 'd', "GPIO 16 i/o direction (1=output)" },
501*4882a593Smuzhiyun { "GPDR0_17", 0x40E0000C, 17, 0x00000001, 'd', "GPIO 17 i/o direction (1=output)" },
502*4882a593Smuzhiyun { "GPDR0_18", 0x40E0000C, 18, 0x00000001, 'd', "GPIO 18 i/o direction (1=output)" },
503*4882a593Smuzhiyun { "GPDR0_19", 0x40E0000C, 19, 0x00000001, 'd', "GPIO 19 i/o direction (1=output)" },
504*4882a593Smuzhiyun { "GPDR0_20", 0x40E0000C, 20, 0x00000001, 'd', "GPIO 20 i/o direction (1=output)" },
505*4882a593Smuzhiyun { "GPDR0_21", 0x40E0000C, 21, 0x00000001, 'd', "GPIO 21 i/o direction (1=output)" },
506*4882a593Smuzhiyun { "GPDR0_22", 0x40E0000C, 22, 0x00000001, 'd', "GPIO 22 i/o direction (1=output)" },
507*4882a593Smuzhiyun { "GPDR0_23", 0x40E0000C, 23, 0x00000001, 'd', "GPIO 23 i/o direction (1=output)" },
508*4882a593Smuzhiyun { "GPDR0_24", 0x40E0000C, 24, 0x00000001, 'd', "GPIO 24 i/o direction (1=output)" },
509*4882a593Smuzhiyun { "GPDR0_25", 0x40E0000C, 25, 0x00000001, 'd', "GPIO 25 i/o direction (1=output)" },
510*4882a593Smuzhiyun { "GPDR0_26", 0x40E0000C, 26, 0x00000001, 'd', "GPIO 26 i/o direction (1=output)" },
511*4882a593Smuzhiyun { "GPDR0_27", 0x40E0000C, 27, 0x00000001, 'd', "GPIO 27 i/o direction (1=output)" },
512*4882a593Smuzhiyun { "GPDR0_28", 0x40E0000C, 28, 0x00000001, 'd', "GPIO 28 i/o direction (1=output)" },
513*4882a593Smuzhiyun { "GPDR0_29", 0x40E0000C, 29, 0x00000001, 'd', "GPIO 29 i/o direction (1=output)" },
514*4882a593Smuzhiyun { "GPDR0_30", 0x40E0000C, 30, 0x00000001, 'd', "GPIO 30 i/o direction (1=output)" },
515*4882a593Smuzhiyun { "GPDR0_31", 0x40E0000C, 31, 0x00000001, 'd', "GPIO 31 i/o direction (1=output)" },
516*4882a593Smuzhiyun
517*4882a593Smuzhiyun { "GPDR1", 0x40E00010, 0, 0xffffffff, 'x', "GPIO Direction Register 1 (4-9)" },
518*4882a593Smuzhiyun { "GPDR1_32", 0x40E00010, 0, 0x00000001, 'd', "GPIO 32 i/o direction (1=output)" },
519*4882a593Smuzhiyun { "GPDR1_33", 0x40E00010, 1, 0x00000001, 'd', "GPIO 33 i/o direction (1=output)" },
520*4882a593Smuzhiyun { "GPDR1_34", 0x40E00010, 2, 0x00000001, 'd', "GPIO 34 i/o direction (1=output)" },
521*4882a593Smuzhiyun { "GPDR1_35", 0x40E00010, 3, 0x00000001, 'd', "GPIO 35 i/o direction (1=output)" },
522*4882a593Smuzhiyun { "GPDR1_36", 0x40E00010, 4, 0x00000001, 'd', "GPIO 36 i/o direction (1=output)" },
523*4882a593Smuzhiyun { "GPDR1_37", 0x40E00010, 5, 0x00000001, 'd', "GPIO 37 i/o direction (1=output)" },
524*4882a593Smuzhiyun { "GPDR1_38", 0x40E00010, 6, 0x00000001, 'd', "GPIO 38 i/o direction (1=output)" },
525*4882a593Smuzhiyun { "GPDR1_39", 0x40E00010, 7, 0x00000001, 'd', "GPIO 39 i/o direction (1=output)" },
526*4882a593Smuzhiyun { "GPDR1_40", 0x40E00010, 8, 0x00000001, 'd', "GPIO 40 i/o direction (1=output)" },
527*4882a593Smuzhiyun { "GPDR1_41", 0x40E00010, 9, 0x00000001, 'd', "GPIO 41 i/o direction (1=output)" },
528*4882a593Smuzhiyun { "GPDR1_42", 0x40E00010, 10, 0x00000001, 'd', "GPIO 42 i/o direction (1=output)" },
529*4882a593Smuzhiyun { "GPDR1_43", 0x40E00010, 11, 0x00000001, 'd', "GPIO 43 i/o direction (1=output)" },
530*4882a593Smuzhiyun { "GPDR1_44", 0x40E00010, 12, 0x00000001, 'd', "GPIO 44 i/o direction (1=output)" },
531*4882a593Smuzhiyun { "GPDR1_45", 0x40E00010, 13, 0x00000001, 'd', "GPIO 45 i/o direction (1=output)" },
532*4882a593Smuzhiyun { "GPDR1_46", 0x40E00010, 14, 0x00000001, 'd', "GPIO 46 i/o direction (1=output)" },
533*4882a593Smuzhiyun { "GPDR1_47", 0x40E00010, 15, 0x00000001, 'd', "GPIO 47 i/o direction (1=output)" },
534*4882a593Smuzhiyun { "GPDR1_48", 0x40E00010, 16, 0x00000001, 'd', "GPIO 48 i/o direction (1=output)" },
535*4882a593Smuzhiyun { "GPDR1_49", 0x40E00010, 17, 0x00000001, 'd', "GPIO 49 i/o direction (1=output)" },
536*4882a593Smuzhiyun { "GPDR1_50", 0x40E00010, 18, 0x00000001, 'd', "GPIO 50 i/o direction (1=output)" },
537*4882a593Smuzhiyun { "GPDR1_51", 0x40E00010, 19, 0x00000001, 'd', "GPIO 51 i/o direction (1=output)" },
538*4882a593Smuzhiyun { "GPDR1_52", 0x40E00010, 20, 0x00000001, 'd', "GPIO 52 i/o direction (1=output)" },
539*4882a593Smuzhiyun { "GPDR1_53", 0x40E00010, 21, 0x00000001, 'd', "GPIO 53 i/o direction (1=output)" },
540*4882a593Smuzhiyun { "GPDR1_54", 0x40E00010, 22, 0x00000001, 'd', "GPIO 54 i/o direction (1=output)" },
541*4882a593Smuzhiyun { "GPDR1_55", 0x40E00010, 23, 0x00000001, 'd', "GPIO 55 i/o direction (1=output)" },
542*4882a593Smuzhiyun { "GPDR1_56", 0x40E00010, 24, 0x00000001, 'd', "GPIO 56 i/o direction (1=output)" },
543*4882a593Smuzhiyun { "GPDR1_57", 0x40E00010, 25, 0x00000001, 'd', "GPIO 57 i/o direction (1=output)" },
544*4882a593Smuzhiyun { "GPDR1_58", 0x40E00010, 26, 0x00000001, 'd', "GPIO 58 i/o direction (1=output)" },
545*4882a593Smuzhiyun { "GPDR1_59", 0x40E00010, 27, 0x00000001, 'd', "GPIO 59 i/o direction (1=output)" },
546*4882a593Smuzhiyun { "GPDR1_60", 0x40E00010, 28, 0x00000001, 'd', "GPIO 60 i/o direction (1=output)" },
547*4882a593Smuzhiyun { "GPDR1_61", 0x40E00010, 29, 0x00000001, 'd', "GPIO 61 i/o direction (1=output)" },
548*4882a593Smuzhiyun { "GPDR1_62", 0x40E00010, 30, 0x00000001, 'd', "GPIO 62 i/o direction (1=output)" },
549*4882a593Smuzhiyun { "GPDR1_63", 0x40E00010, 31, 0x00000001, 'd', "GPIO 63 i/o direction (1=output)" },
550*4882a593Smuzhiyun
551*4882a593Smuzhiyun { "GPDR2", 0x40E00014, 0, 0xffffffff, 'x', "GPIO Direction Register 2 (4-9)" },
552*4882a593Smuzhiyun { "GPDR2_64", 0x40E00014, 0, 0x00000001, 'd', "GPIO 64 i/o direction (1=output)" },
553*4882a593Smuzhiyun { "GPDR2_65", 0x40E00014, 1, 0x00000001, 'd', "GPIO 65 i/o direction (1=output)" },
554*4882a593Smuzhiyun { "GPDR2_66", 0x40E00014, 2, 0x00000001, 'd', "GPIO 66 i/o direction (1=output)" },
555*4882a593Smuzhiyun { "GPDR2_67", 0x40E00014, 3, 0x00000001, 'd', "GPIO 67 i/o direction (1=output)" },
556*4882a593Smuzhiyun { "GPDR2_68", 0x40E00014, 4, 0x00000001, 'd', "GPIO 68 i/o direction (1=output)" },
557*4882a593Smuzhiyun { "GPDR2_69", 0x40E00014, 5, 0x00000001, 'd', "GPIO 69 i/o direction (1=output)" },
558*4882a593Smuzhiyun { "GPDR2_70", 0x40E00014, 6, 0x00000001, 'd', "GPIO 70 i/o direction (1=output)" },
559*4882a593Smuzhiyun { "GPDR2_71", 0x40E00014, 7, 0x00000001, 'd', "GPIO 71 i/o direction (1=output)" },
560*4882a593Smuzhiyun { "GPDR2_72", 0x40E00014, 8, 0x00000001, 'd', "GPIO 72 i/o direction (1=output)" },
561*4882a593Smuzhiyun { "GPDR2_73", 0x40E00014, 9, 0x00000001, 'd', "GPIO 73 i/o direction (1=output)" },
562*4882a593Smuzhiyun { "GPDR2_74", 0x40E00014, 10, 0x00000001, 'd', "GPIO 74 i/o direction (1=output)" },
563*4882a593Smuzhiyun { "GPDR2_75", 0x40E00014, 11, 0x00000001, 'd', "GPIO 75 i/o direction (1=output)" },
564*4882a593Smuzhiyun { "GPDR2_76", 0x40E00014, 12, 0x00000001, 'd', "GPIO 76 i/o direction (1=output)" },
565*4882a593Smuzhiyun { "GPDR2_77", 0x40E00014, 13, 0x00000001, 'd', "GPIO 77 i/o direction (1=output)" },
566*4882a593Smuzhiyun { "GPDR2_78", 0x40E00014, 14, 0x00000001, 'd', "GPIO 78 i/o direction (1=output)" },
567*4882a593Smuzhiyun { "GPDR2_79", 0x40E00014, 15, 0x00000001, 'd', "GPIO 79 i/o direction (1=output)" },
568*4882a593Smuzhiyun { "GPDR2_80", 0x40E00014, 16, 0x00000001, 'd', "GPIO 80 i/o direction (1=output)" },
569*4882a593Smuzhiyun { "GPDR2_81", 0x40E00014, 17, 0x00000001, 'd', "GPIO 81 i/o direction (1=output)" },
570*4882a593Smuzhiyun { "GPDR2_82", 0x40E00014, 18, 0x00000001, 'd', "GPIO 82 i/o direction (1=output)" },
571*4882a593Smuzhiyun { "GPDR2_83", 0x40E00014, 19, 0x00000001, 'd', "GPIO 83 i/o direction (1=output)" },
572*4882a593Smuzhiyun { "GPDR2_84", 0x40E00014, 20, 0x00000001, 'd', "GPIO 84 i/o direction (1=output)" },
573*4882a593Smuzhiyun
574*4882a593Smuzhiyun { "GPSR0", 0x40E00018, 0, 0xffffffff, 'x', "GPIO Set Register 0 (4-10)" },
575*4882a593Smuzhiyun { "GPSR0_0", 0x40E00018, 0, 0x00000001, 'd', "GPIO 0 set" },
576*4882a593Smuzhiyun { "GPSR0_1", 0x40E00018, 1, 0x00000001, 'd', "GPIO 1 set" },
577*4882a593Smuzhiyun { "GPSR0_2", 0x40E00018, 2, 0x00000001, 'd', "GPIO 2 set" },
578*4882a593Smuzhiyun { "GPSR0_3", 0x40E00018, 3, 0x00000001, 'd', "GPIO 3 set" },
579*4882a593Smuzhiyun { "GPSR0_4", 0x40E00018, 4, 0x00000001, 'd', "GPIO 4 set" },
580*4882a593Smuzhiyun { "GPSR0_5", 0x40E00018, 5, 0x00000001, 'd', "GPIO 5 set" },
581*4882a593Smuzhiyun { "GPSR0_6", 0x40E00018, 6, 0x00000001, 'd', "GPIO 6 set" },
582*4882a593Smuzhiyun { "GPSR0_7", 0x40E00018, 7, 0x00000001, 'd', "GPIO 7 set" },
583*4882a593Smuzhiyun { "GPSR0_8", 0x40E00018, 8, 0x00000001, 'd', "GPIO 8 set" },
584*4882a593Smuzhiyun { "GPSR0_9", 0x40E00018, 9, 0x00000001, 'd', "GPIO 9 set" },
585*4882a593Smuzhiyun { "GPSR0_10", 0x40E00018, 10, 0x00000001, 'd', "GPIO 10 set" },
586*4882a593Smuzhiyun { "GPSR0_11", 0x40E00018, 11, 0x00000001, 'd', "GPIO 11 set" },
587*4882a593Smuzhiyun { "GPSR0_12", 0x40E00018, 12, 0x00000001, 'd', "GPIO 12 set" },
588*4882a593Smuzhiyun { "GPSR0_13", 0x40E00018, 13, 0x00000001, 'd', "GPIO 13 set" },
589*4882a593Smuzhiyun { "GPSR0_14", 0x40E00018, 14, 0x00000001, 'd', "GPIO 14 set" },
590*4882a593Smuzhiyun { "GPSR0_15", 0x40E00018, 15, 0x00000001, 'd', "GPIO 15 set" },
591*4882a593Smuzhiyun { "GPSR0_16", 0x40E00018, 16, 0x00000001, 'd', "GPIO 16 set" },
592*4882a593Smuzhiyun { "GPSR0_17", 0x40E00018, 17, 0x00000001, 'd', "GPIO 17 set" },
593*4882a593Smuzhiyun { "GPSR0_18", 0x40E00018, 18, 0x00000001, 'd', "GPIO 18 set" },
594*4882a593Smuzhiyun { "GPSR0_19", 0x40E00018, 19, 0x00000001, 'd', "GPIO 19 set" },
595*4882a593Smuzhiyun { "GPSR0_20", 0x40E00018, 20, 0x00000001, 'd', "GPIO 20 set" },
596*4882a593Smuzhiyun { "GPSR0_21", 0x40E00018, 21, 0x00000001, 'd', "GPIO 21 set" },
597*4882a593Smuzhiyun { "GPSR0_22", 0x40E00018, 22, 0x00000001, 'd', "GPIO 22 set" },
598*4882a593Smuzhiyun { "GPSR0_23", 0x40E00018, 23, 0x00000001, 'd', "GPIO 23 set" },
599*4882a593Smuzhiyun { "GPSR0_24", 0x40E00018, 24, 0x00000001, 'd', "GPIO 24 set" },
600*4882a593Smuzhiyun { "GPSR0_25", 0x40E00018, 25, 0x00000001, 'd', "GPIO 25 set" },
601*4882a593Smuzhiyun { "GPSR0_26", 0x40E00018, 26, 0x00000001, 'd', "GPIO 26 set" },
602*4882a593Smuzhiyun { "GPSR0_27", 0x40E00018, 27, 0x00000001, 'd', "GPIO 27 set" },
603*4882a593Smuzhiyun { "GPSR0_28", 0x40E00018, 28, 0x00000001, 'd', "GPIO 28 set" },
604*4882a593Smuzhiyun { "GPSR0_29", 0x40E00018, 29, 0x00000001, 'd', "GPIO 29 set" },
605*4882a593Smuzhiyun { "GPSR0_30", 0x40E00018, 30, 0x00000001, 'd', "GPIO 30 set" },
606*4882a593Smuzhiyun { "GPSR0_31", 0x40E00018, 31, 0x00000001, 'd', "GPIO 31 set" },
607*4882a593Smuzhiyun
608*4882a593Smuzhiyun { "GPSR1", 0x40E0001C, 0, 0xffffffff, 'x', "GPIO Set Register 1 (4-10)" },
609*4882a593Smuzhiyun { "GPSR1_32", 0x40E0001C, 0, 0x00000001, 'd', "GPIO 32 set" },
610*4882a593Smuzhiyun { "GPSR1_33", 0x40E0001C, 1, 0x00000001, 'd', "GPIO 33 set" },
611*4882a593Smuzhiyun { "GPSR1_34", 0x40E0001C, 2, 0x00000001, 'd', "GPIO 34 set" },
612*4882a593Smuzhiyun { "GPSR1_35", 0x40E0001C, 3, 0x00000001, 'd', "GPIO 35 set" },
613*4882a593Smuzhiyun { "GPSR1_36", 0x40E0001C, 4, 0x00000001, 'd', "GPIO 36 set" },
614*4882a593Smuzhiyun { "GPSR1_37", 0x40E0001C, 5, 0x00000001, 'd', "GPIO 37 set" },
615*4882a593Smuzhiyun { "GPSR1_38", 0x40E0001C, 6, 0x00000001, 'd', "GPIO 38 set" },
616*4882a593Smuzhiyun { "GPSR1_39", 0x40E0001C, 7, 0x00000001, 'd', "GPIO 39 set" },
617*4882a593Smuzhiyun { "GPSR1_40", 0x40E0001C, 8, 0x00000001, 'd', "GPIO 40 set" },
618*4882a593Smuzhiyun { "GPSR1_41", 0x40E0001C, 9, 0x00000001, 'd', "GPIO 41 set" },
619*4882a593Smuzhiyun { "GPSR1_42", 0x40E0001C, 10, 0x00000001, 'd', "GPIO 42 set" },
620*4882a593Smuzhiyun { "GPSR1_43", 0x40E0001C, 11, 0x00000001, 'd', "GPIO 43 set" },
621*4882a593Smuzhiyun { "GPSR1_44", 0x40E0001C, 12, 0x00000001, 'd', "GPIO 44 set" },
622*4882a593Smuzhiyun { "GPSR1_45", 0x40E0001C, 13, 0x00000001, 'd', "GPIO 45 set" },
623*4882a593Smuzhiyun { "GPSR1_46", 0x40E0001C, 14, 0x00000001, 'd', "GPIO 46 set" },
624*4882a593Smuzhiyun { "GPSR1_47", 0x40E0001C, 15, 0x00000001, 'd', "GPIO 47 set" },
625*4882a593Smuzhiyun { "GPSR1_48", 0x40E0001C, 16, 0x00000001, 'd', "GPIO 48 set" },
626*4882a593Smuzhiyun { "GPSR1_49", 0x40E0001C, 17, 0x00000001, 'd', "GPIO 49 set" },
627*4882a593Smuzhiyun { "GPSR1_50", 0x40E0001C, 18, 0x00000001, 'd', "GPIO 50 set" },
628*4882a593Smuzhiyun { "GPSR1_51", 0x40E0001C, 19, 0x00000001, 'd', "GPIO 51 set" },
629*4882a593Smuzhiyun { "GPSR1_52", 0x40E0001C, 20, 0x00000001, 'd', "GPIO 52 set" },
630*4882a593Smuzhiyun { "GPSR1_53", 0x40E0001C, 21, 0x00000001, 'd', "GPIO 53 set" },
631*4882a593Smuzhiyun { "GPSR1_54", 0x40E0001C, 22, 0x00000001, 'd', "GPIO 54 set" },
632*4882a593Smuzhiyun { "GPSR1_55", 0x40E0001C, 23, 0x00000001, 'd', "GPIO 55 set" },
633*4882a593Smuzhiyun { "GPSR1_56", 0x40E0001C, 24, 0x00000001, 'd', "GPIO 56 set" },
634*4882a593Smuzhiyun { "GPSR1_57", 0x40E0001C, 25, 0x00000001, 'd', "GPIO 57 set" },
635*4882a593Smuzhiyun { "GPSR1_58", 0x40E0001C, 26, 0x00000001, 'd', "GPIO 58 set" },
636*4882a593Smuzhiyun { "GPSR1_59", 0x40E0001C, 27, 0x00000001, 'd', "GPIO 59 set" },
637*4882a593Smuzhiyun { "GPSR1_60", 0x40E0001C, 28, 0x00000001, 'd', "GPIO 60 set" },
638*4882a593Smuzhiyun { "GPSR1_61", 0x40E0001C, 29, 0x00000001, 'd', "GPIO 61 set" },
639*4882a593Smuzhiyun { "GPSR1_62", 0x40E0001C, 30, 0x00000001, 'd', "GPIO 62 set" },
640*4882a593Smuzhiyun { "GPSR1_63", 0x40E0001C, 31, 0x00000001, 'd', "GPIO 63 set" },
641*4882a593Smuzhiyun
642*4882a593Smuzhiyun { "GPSR2", 0x40E00020, 0, 0xffffffff, 'x', "GPIO Set Register 2 (4-11)" },
643*4882a593Smuzhiyun { "GPSR2_64", 0x40E00020, 0, 0x00000001, 'd', "GPIO 64 set" },
644*4882a593Smuzhiyun { "GPSR2_65", 0x40E00020, 1, 0x00000001, 'd', "GPIO 65 set" },
645*4882a593Smuzhiyun { "GPSR2_66", 0x40E00020, 2, 0x00000001, 'd', "GPIO 66 set" },
646*4882a593Smuzhiyun { "GPSR2_67", 0x40E00020, 3, 0x00000001, 'd', "GPIO 67 set" },
647*4882a593Smuzhiyun { "GPSR2_68", 0x40E00020, 4, 0x00000001, 'd', "GPIO 68 set" },
648*4882a593Smuzhiyun { "GPSR2_69", 0x40E00020, 5, 0x00000001, 'd', "GPIO 69 set" },
649*4882a593Smuzhiyun { "GPSR2_70", 0x40E00020, 6, 0x00000001, 'd', "GPIO 70 set" },
650*4882a593Smuzhiyun { "GPSR2_71", 0x40E00020, 7, 0x00000001, 'd', "GPIO 71 set" },
651*4882a593Smuzhiyun { "GPSR2_72", 0x40E00020, 8, 0x00000001, 'd', "GPIO 72 set" },
652*4882a593Smuzhiyun { "GPSR2_73", 0x40E00020, 9, 0x00000001, 'd', "GPIO 73 set" },
653*4882a593Smuzhiyun { "GPSR2_74", 0x40E00020, 10, 0x00000001, 'd', "GPIO 74 set" },
654*4882a593Smuzhiyun { "GPSR2_75", 0x40E00020, 11, 0x00000001, 'd', "GPIO 75 set" },
655*4882a593Smuzhiyun { "GPSR2_76", 0x40E00020, 12, 0x00000001, 'd', "GPIO 76 set" },
656*4882a593Smuzhiyun { "GPSR2_77", 0x40E00020, 13, 0x00000001, 'd', "GPIO 77 set" },
657*4882a593Smuzhiyun { "GPSR2_78", 0x40E00020, 14, 0x00000001, 'd', "GPIO 78 set" },
658*4882a593Smuzhiyun { "GPSR2_79", 0x40E00020, 15, 0x00000001, 'd', "GPIO 79 set" },
659*4882a593Smuzhiyun { "GPSR2_80", 0x40E00020, 16, 0x00000001, 'd', "GPIO 80 set" },
660*4882a593Smuzhiyun { "GPSR2_81", 0x40E00020, 17, 0x00000001, 'd', "GPIO 81 set" },
661*4882a593Smuzhiyun { "GPSR2_82", 0x40E00020, 18, 0x00000001, 'd', "GPIO 82 set" },
662*4882a593Smuzhiyun { "GPSR2_83", 0x40E00020, 19, 0x00000001, 'd', "GPIO 83 set" },
663*4882a593Smuzhiyun { "GPSR2_84", 0x40E00020, 20, 0x00000001, 'd', "GPIO 84 set" },
664*4882a593Smuzhiyun
665*4882a593Smuzhiyun { "GPCR0", 0x40E00024, 0, 0xffffffff, 'x', "GPIO Clear Register 0 (4-11)" },
666*4882a593Smuzhiyun { "GPCR0_0", 0x40E00024, 0, 0x00000001, 'd', "GPIO 0 clear" },
667*4882a593Smuzhiyun { "GPCR0_1", 0x40E00024, 1, 0x00000001, 'd', "GPIO 1 clear" },
668*4882a593Smuzhiyun { "GPCR0_2", 0x40E00024, 2, 0x00000001, 'd', "GPIO 2 clear" },
669*4882a593Smuzhiyun { "GPCR0_3", 0x40E00024, 3, 0x00000001, 'd', "GPIO 3 clear" },
670*4882a593Smuzhiyun { "GPCR0_4", 0x40E00024, 4, 0x00000001, 'd', "GPIO 4 clear" },
671*4882a593Smuzhiyun { "GPCR0_5", 0x40E00024, 5, 0x00000001, 'd', "GPIO 5 clear" },
672*4882a593Smuzhiyun { "GPCR0_6", 0x40E00024, 6, 0x00000001, 'd', "GPIO 6 clear" },
673*4882a593Smuzhiyun { "GPCR0_7", 0x40E00024, 7, 0x00000001, 'd', "GPIO 7 clear" },
674*4882a593Smuzhiyun { "GPCR0_8", 0x40E00024, 8, 0x00000001, 'd', "GPIO 8 clear" },
675*4882a593Smuzhiyun { "GPCR0_9", 0x40E00024, 9, 0x00000001, 'd', "GPIO 9 clear" },
676*4882a593Smuzhiyun { "GPCR0_10", 0x40E00024, 10, 0x00000001, 'd', "GPIO 10 clear" },
677*4882a593Smuzhiyun { "GPCR0_11", 0x40E00024, 11, 0x00000001, 'd', "GPIO 11 clear" },
678*4882a593Smuzhiyun { "GPCR0_12", 0x40E00024, 12, 0x00000001, 'd', "GPIO 12 clear" },
679*4882a593Smuzhiyun { "GPCR0_13", 0x40E00024, 13, 0x00000001, 'd', "GPIO 13 clear" },
680*4882a593Smuzhiyun { "GPCR0_14", 0x40E00024, 14, 0x00000001, 'd', "GPIO 14 clear" },
681*4882a593Smuzhiyun { "GPCR0_15", 0x40E00024, 15, 0x00000001, 'd', "GPIO 15 clear" },
682*4882a593Smuzhiyun { "GPCR0_16", 0x40E00024, 16, 0x00000001, 'd', "GPIO 16 clear" },
683*4882a593Smuzhiyun { "GPCR0_17", 0x40E00024, 17, 0x00000001, 'd', "GPIO 17 clear" },
684*4882a593Smuzhiyun { "GPCR0_18", 0x40E00024, 18, 0x00000001, 'd', "GPIO 18 clear" },
685*4882a593Smuzhiyun { "GPCR0_19", 0x40E00024, 19, 0x00000001, 'd', "GPIO 19 clear" },
686*4882a593Smuzhiyun { "GPCR0_20", 0x40E00024, 20, 0x00000001, 'd', "GPIO 20 clear" },
687*4882a593Smuzhiyun { "GPCR0_21", 0x40E00024, 21, 0x00000001, 'd', "GPIO 21 clear" },
688*4882a593Smuzhiyun { "GPCR0_22", 0x40E00024, 22, 0x00000001, 'd', "GPIO 22 clear" },
689*4882a593Smuzhiyun { "GPCR0_23", 0x40E00024, 23, 0x00000001, 'd', "GPIO 23 clear" },
690*4882a593Smuzhiyun { "GPCR0_24", 0x40E00024, 24, 0x00000001, 'd', "GPIO 24 clear" },
691*4882a593Smuzhiyun { "GPCR0_25", 0x40E00024, 25, 0x00000001, 'd', "GPIO 25 clear" },
692*4882a593Smuzhiyun { "GPCR0_26", 0x40E00024, 26, 0x00000001, 'd', "GPIO 26 clear" },
693*4882a593Smuzhiyun { "GPCR0_27", 0x40E00024, 27, 0x00000001, 'd', "GPIO 27 clear" },
694*4882a593Smuzhiyun { "GPCR0_28", 0x40E00024, 28, 0x00000001, 'd', "GPIO 28 clear" },
695*4882a593Smuzhiyun { "GPCR0_29", 0x40E00024, 29, 0x00000001, 'd', "GPIO 29 clear" },
696*4882a593Smuzhiyun { "GPCR0_30", 0x40E00024, 30, 0x00000001, 'd', "GPIO 30 clear" },
697*4882a593Smuzhiyun { "GPCR0_31", 0x40E00024, 31, 0x00000001, 'd', "GPIO 31 clear" },
698*4882a593Smuzhiyun
699*4882a593Smuzhiyun { "GPCR1", 0x40E00028, 0, 0xffffffff, 'x', "GPIO Clear Register 1 (4-11)" },
700*4882a593Smuzhiyun { "GPCR1_32", 0x40E00028, 0, 0x00000001, 'd', "GPIO 32 clear" },
701*4882a593Smuzhiyun { "GPCR1_33", 0x40E00028, 1, 0x00000001, 'd', "GPIO 33 clear" },
702*4882a593Smuzhiyun { "GPCR1_34", 0x40E00028, 2, 0x00000001, 'd', "GPIO 34 clear" },
703*4882a593Smuzhiyun { "GPCR1_35", 0x40E00028, 3, 0x00000001, 'd', "GPIO 35 clear" },
704*4882a593Smuzhiyun { "GPCR1_36", 0x40E00028, 4, 0x00000001, 'd', "GPIO 36 clear" },
705*4882a593Smuzhiyun { "GPCR1_37", 0x40E00028, 5, 0x00000001, 'd', "GPIO 37 clear" },
706*4882a593Smuzhiyun { "GPCR1_38", 0x40E00028, 6, 0x00000001, 'd', "GPIO 38 clear" },
707*4882a593Smuzhiyun { "GPCR1_39", 0x40E00028, 7, 0x00000001, 'd', "GPIO 39 clear" },
708*4882a593Smuzhiyun { "GPCR1_40", 0x40E00028, 8, 0x00000001, 'd', "GPIO 40 clear" },
709*4882a593Smuzhiyun { "GPCR1_41", 0x40E00028, 9, 0x00000001, 'd', "GPIO 41 clear" },
710*4882a593Smuzhiyun { "GPCR1_42", 0x40E00028, 10, 0x00000001, 'd', "GPIO 42 clear" },
711*4882a593Smuzhiyun { "GPCR1_43", 0x40E00028, 11, 0x00000001, 'd', "GPIO 43 clear" },
712*4882a593Smuzhiyun { "GPCR1_44", 0x40E00028, 12, 0x00000001, 'd', "GPIO 44 clear" },
713*4882a593Smuzhiyun { "GPCR1_45", 0x40E00028, 13, 0x00000001, 'd', "GPIO 45 clear" },
714*4882a593Smuzhiyun { "GPCR1_46", 0x40E00028, 14, 0x00000001, 'd', "GPIO 46 clear" },
715*4882a593Smuzhiyun { "GPCR1_47", 0x40E00028, 15, 0x00000001, 'd', "GPIO 47 clear" },
716*4882a593Smuzhiyun { "GPCR1_48", 0x40E00028, 16, 0x00000001, 'd', "GPIO 48 clear" },
717*4882a593Smuzhiyun { "GPCR1_49", 0x40E00028, 17, 0x00000001, 'd', "GPIO 49 clear" },
718*4882a593Smuzhiyun { "GPCR1_50", 0x40E00028, 18, 0x00000001, 'd', "GPIO 50 clear" },
719*4882a593Smuzhiyun { "GPCR1_51", 0x40E00028, 19, 0x00000001, 'd', "GPIO 51 clear" },
720*4882a593Smuzhiyun { "GPCR1_52", 0x40E00028, 20, 0x00000001, 'd', "GPIO 52 clear" },
721*4882a593Smuzhiyun { "GPCR1_53", 0x40E00028, 21, 0x00000001, 'd', "GPIO 53 clear" },
722*4882a593Smuzhiyun { "GPCR1_54", 0x40E00028, 22, 0x00000001, 'd', "GPIO 54 clear" },
723*4882a593Smuzhiyun { "GPCR1_55", 0x40E00028, 23, 0x00000001, 'd', "GPIO 55 clear" },
724*4882a593Smuzhiyun { "GPCR1_56", 0x40E00028, 24, 0x00000001, 'd', "GPIO 56 clear" },
725*4882a593Smuzhiyun { "GPCR1_57", 0x40E00028, 25, 0x00000001, 'd', "GPIO 57 clear" },
726*4882a593Smuzhiyun { "GPCR1_58", 0x40E00028, 26, 0x00000001, 'd', "GPIO 58 clear" },
727*4882a593Smuzhiyun { "GPCR1_59", 0x40E00028, 27, 0x00000001, 'd', "GPIO 59 clear" },
728*4882a593Smuzhiyun { "GPCR1_60", 0x40E00028, 28, 0x00000001, 'd', "GPIO 60 clear" },
729*4882a593Smuzhiyun { "GPCR1_61", 0x40E00028, 29, 0x00000001, 'd', "GPIO 61 clear" },
730*4882a593Smuzhiyun { "GPCR1_62", 0x40E00028, 30, 0x00000001, 'd', "GPIO 62 clear" },
731*4882a593Smuzhiyun { "GPCR1_63", 0x40E00028, 31, 0x00000001, 'd', "GPIO 63 clear" },
732*4882a593Smuzhiyun
733*4882a593Smuzhiyun { "GPCR2", 0x40E0002C, 0, 0xffffffff, 'x', "GPIO Clear Register 2 (4-12)" },
734*4882a593Smuzhiyun { "GPCR2_64", 0x40E0002C, 0, 0x00000001, 'd', "GPIO 64 clear" },
735*4882a593Smuzhiyun { "GPCR2_65", 0x40E0002C, 1, 0x00000001, 'd', "GPIO 65 clear" },
736*4882a593Smuzhiyun { "GPCR2_66", 0x40E0002C, 2, 0x00000001, 'd', "GPIO 66 clear" },
737*4882a593Smuzhiyun { "GPCR2_67", 0x40E0002C, 3, 0x00000001, 'd', "GPIO 67 clear" },
738*4882a593Smuzhiyun { "GPCR2_68", 0x40E0002C, 4, 0x00000001, 'd', "GPIO 68 clear" },
739*4882a593Smuzhiyun { "GPCR2_69", 0x40E0002C, 5, 0x00000001, 'd', "GPIO 69 clear" },
740*4882a593Smuzhiyun { "GPCR2_70", 0x40E0002C, 6, 0x00000001, 'd', "GPIO 70 clear" },
741*4882a593Smuzhiyun { "GPCR2_71", 0x40E0002C, 7, 0x00000001, 'd', "GPIO 71 clear" },
742*4882a593Smuzhiyun { "GPCR2_72", 0x40E0002C, 8, 0x00000001, 'd', "GPIO 72 clear" },
743*4882a593Smuzhiyun { "GPCR2_73", 0x40E0002C, 9, 0x00000001, 'd', "GPIO 73 clear" },
744*4882a593Smuzhiyun { "GPCR2_74", 0x40E0002C, 10, 0x00000001, 'd', "GPIO 74 clear" },
745*4882a593Smuzhiyun { "GPCR2_75", 0x40E0002C, 11, 0x00000001, 'd', "GPIO 75 clear" },
746*4882a593Smuzhiyun { "GPCR2_76", 0x40E0002C, 12, 0x00000001, 'd', "GPIO 76 clear" },
747*4882a593Smuzhiyun { "GPCR2_77", 0x40E0002C, 13, 0x00000001, 'd', "GPIO 77 clear" },
748*4882a593Smuzhiyun { "GPCR2_78", 0x40E0002C, 14, 0x00000001, 'd', "GPIO 78 clear" },
749*4882a593Smuzhiyun { "GPCR2_79", 0x40E0002C, 15, 0x00000001, 'd', "GPIO 79 clear" },
750*4882a593Smuzhiyun { "GPCR2_80", 0x40E0002C, 16, 0x00000001, 'd', "GPIO 80 clear" },
751*4882a593Smuzhiyun { "GPCR2_81", 0x40E0002C, 17, 0x00000001, 'd', "GPIO 81 clear" },
752*4882a593Smuzhiyun { "GPCR2_82", 0x40E0002C, 18, 0x00000001, 'd', "GPIO 82 clear" },
753*4882a593Smuzhiyun { "GPCR2_83", 0x40E0002C, 19, 0x00000001, 'd', "GPIO 83 clear" },
754*4882a593Smuzhiyun { "GPCR2_84", 0x40E0002C, 20, 0x00000001, 'd', "GPIO 84 clear" },
755*4882a593Smuzhiyun
756*4882a593Smuzhiyun { "GRER0", 0x40E00030, 0, 0xffffffff, 'x', "GPIO Raising Edge Detect Enable Register 0 (4-13)" },
757*4882a593Smuzhiyun { "GRER0_0", 0x40E00030, 0, 0x00000001, 'd', "GPIO 0 raising edge detect enabled" },
758*4882a593Smuzhiyun { "GRER0_1", 0x40E00030, 1, 0x00000001, 'd', "GPIO 1 raising edge detect enabled" },
759*4882a593Smuzhiyun { "GRER0_2", 0x40E00030, 2, 0x00000001, 'd', "GPIO 2 raising edge detect enabled" },
760*4882a593Smuzhiyun { "GRER0_3", 0x40E00030, 3, 0x00000001, 'd', "GPIO 3 raising edge detect enabled" },
761*4882a593Smuzhiyun { "GRER0_4", 0x40E00030, 4, 0x00000001, 'd', "GPIO 4 raising edge detect enabled" },
762*4882a593Smuzhiyun { "GRER0_5", 0x40E00030, 5, 0x00000001, 'd', "GPIO 5 raising edge detect enabled" },
763*4882a593Smuzhiyun { "GRER0_6", 0x40E00030, 6, 0x00000001, 'd', "GPIO 6 raising edge detect enabled" },
764*4882a593Smuzhiyun { "GRER0_7", 0x40E00030, 7, 0x00000001, 'd', "GPIO 7 raising edge detect enabled" },
765*4882a593Smuzhiyun { "GRER0_8", 0x40E00030, 8, 0x00000001, 'd', "GPIO 8 raising edge detect enabled" },
766*4882a593Smuzhiyun { "GRER0_9", 0x40E00030, 9, 0x00000001, 'd', "GPIO 9 raising edge detect enabled" },
767*4882a593Smuzhiyun { "GRER0_10", 0x40E00030, 10, 0x00000001, 'd', "GPIO 10 raising edge detect enabled" },
768*4882a593Smuzhiyun { "GRER0_11", 0x40E00030, 11, 0x00000001, 'd', "GPIO 11 raising edge detect enabled" },
769*4882a593Smuzhiyun { "GRER0_12", 0x40E00030, 12, 0x00000001, 'd', "GPIO 12 raising edge detect enabled" },
770*4882a593Smuzhiyun { "GRER0_13", 0x40E00030, 13, 0x00000001, 'd', "GPIO 13 raising edge detect enabled" },
771*4882a593Smuzhiyun { "GRER0_14", 0x40E00030, 14, 0x00000001, 'd', "GPIO 14 raising edge detect enabled" },
772*4882a593Smuzhiyun { "GRER0_15", 0x40E00030, 15, 0x00000001, 'd', "GPIO 15 raising edge detect enabled" },
773*4882a593Smuzhiyun { "GRER0_16", 0x40E00030, 16, 0x00000001, 'd', "GPIO 16 raising edge detect enabled" },
774*4882a593Smuzhiyun { "GRER0_17", 0x40E00030, 17, 0x00000001, 'd', "GPIO 17 raising edge detect enabled" },
775*4882a593Smuzhiyun { "GRER0_18", 0x40E00030, 18, 0x00000001, 'd', "GPIO 18 raising edge detect enabled" },
776*4882a593Smuzhiyun { "GRER0_19", 0x40E00030, 19, 0x00000001, 'd', "GPIO 19 raising edge detect enabled" },
777*4882a593Smuzhiyun { "GRER0_20", 0x40E00030, 20, 0x00000001, 'd', "GPIO 20 raising edge detect enabled" },
778*4882a593Smuzhiyun { "GRER0_21", 0x40E00030, 21, 0x00000001, 'd', "GPIO 21 raising edge detect enabled" },
779*4882a593Smuzhiyun { "GRER0_22", 0x40E00030, 22, 0x00000001, 'd', "GPIO 22 raising edge detect enabled" },
780*4882a593Smuzhiyun { "GRER0_23", 0x40E00030, 23, 0x00000001, 'd', "GPIO 23 raising edge detect enabled" },
781*4882a593Smuzhiyun { "GRER0_24", 0x40E00030, 24, 0x00000001, 'd', "GPIO 24 raising edge detect enabled" },
782*4882a593Smuzhiyun { "GRER0_25", 0x40E00030, 25, 0x00000001, 'd', "GPIO 25 raising edge detect enabled" },
783*4882a593Smuzhiyun { "GRER0_26", 0x40E00030, 26, 0x00000001, 'd', "GPIO 26 raising edge detect enabled" },
784*4882a593Smuzhiyun { "GRER0_27", 0x40E00030, 27, 0x00000001, 'd', "GPIO 27 raising edge detect enabled" },
785*4882a593Smuzhiyun { "GRER0_28", 0x40E00030, 28, 0x00000001, 'd', "GPIO 28 raising edge detect enabled" },
786*4882a593Smuzhiyun { "GRER0_29", 0x40E00030, 29, 0x00000001, 'd', "GPIO 29 raising edge detect enabled" },
787*4882a593Smuzhiyun { "GRER0_30", 0x40E00030, 30, 0x00000001, 'd', "GPIO 30 raising edge detect enabled" },
788*4882a593Smuzhiyun { "GRER0_31", 0x40E00030, 31, 0x00000001, 'd', "GPIO 31 raising edge detect enabled" },
789*4882a593Smuzhiyun
790*4882a593Smuzhiyun { "GRER1", 0x40E00034, 0, 0xffffffff, 'x', "GPIO Raising Edge Detect Enable Register 1 (4-13)" },
791*4882a593Smuzhiyun { "GRER1_32", 0x40E00034, 0, 0x00000001, 'd', "GPIO 32 raising edge detect enabled" },
792*4882a593Smuzhiyun { "GRER1_33", 0x40E00034, 1, 0x00000001, 'd', "GPIO 33 raising edge detect enabled" },
793*4882a593Smuzhiyun { "GRER1_34", 0x40E00034, 2, 0x00000001, 'd', "GPIO 34 raising edge detect enabled" },
794*4882a593Smuzhiyun { "GRER1_35", 0x40E00034, 3, 0x00000001, 'd', "GPIO 35 raising edge detect enabled" },
795*4882a593Smuzhiyun { "GRER1_36", 0x40E00034, 4, 0x00000001, 'd', "GPIO 36 raising edge detect enabled" },
796*4882a593Smuzhiyun { "GRER1_37", 0x40E00034, 5, 0x00000001, 'd', "GPIO 37 raising edge detect enabled" },
797*4882a593Smuzhiyun { "GRER1_38", 0x40E00034, 6, 0x00000001, 'd', "GPIO 38 raising edge detect enabled" },
798*4882a593Smuzhiyun { "GRER1_39", 0x40E00034, 7, 0x00000001, 'd', "GPIO 39 raising edge detect enabled" },
799*4882a593Smuzhiyun { "GRER1_40", 0x40E00034, 8, 0x00000001, 'd', "GPIO 40 raising edge detect enabled" },
800*4882a593Smuzhiyun { "GRER1_41", 0x40E00034, 9, 0x00000001, 'd', "GPIO 41 raising edge detect enabled" },
801*4882a593Smuzhiyun { "GRER1_42", 0x40E00034, 10, 0x00000001, 'd', "GPIO 42 raising edge detect enabled" },
802*4882a593Smuzhiyun { "GRER1_43", 0x40E00034, 11, 0x00000001, 'd', "GPIO 43 raising edge detect enabled" },
803*4882a593Smuzhiyun { "GRER1_44", 0x40E00034, 12, 0x00000001, 'd', "GPIO 44 raising edge detect enabled" },
804*4882a593Smuzhiyun { "GRER1_45", 0x40E00034, 13, 0x00000001, 'd', "GPIO 45 raising edge detect enabled" },
805*4882a593Smuzhiyun { "GRER1_46", 0x40E00034, 14, 0x00000001, 'd', "GPIO 46 raising edge detect enabled" },
806*4882a593Smuzhiyun { "GRER1_47", 0x40E00034, 15, 0x00000001, 'd', "GPIO 47 raising edge detect enabled" },
807*4882a593Smuzhiyun { "GRER1_48", 0x40E00034, 16, 0x00000001, 'd', "GPIO 48 raising edge detect enabled" },
808*4882a593Smuzhiyun { "GRER1_49", 0x40E00034, 17, 0x00000001, 'd', "GPIO 49 raising edge detect enabled" },
809*4882a593Smuzhiyun { "GRER1_50", 0x40E00034, 18, 0x00000001, 'd', "GPIO 50 raising edge detect enabled" },
810*4882a593Smuzhiyun { "GRER1_51", 0x40E00034, 19, 0x00000001, 'd', "GPIO 51 raising edge detect enabled" },
811*4882a593Smuzhiyun { "GRER1_52", 0x40E00034, 20, 0x00000001, 'd', "GPIO 52 raising edge detect enabled" },
812*4882a593Smuzhiyun { "GRER1_53", 0x40E00034, 21, 0x00000001, 'd', "GPIO 53 raising edge detect enabled" },
813*4882a593Smuzhiyun { "GRER1_54", 0x40E00034, 22, 0x00000001, 'd', "GPIO 54 raising edge detect enabled" },
814*4882a593Smuzhiyun { "GRER1_55", 0x40E00034, 23, 0x00000001, 'd', "GPIO 55 raising edge detect enabled" },
815*4882a593Smuzhiyun { "GRER1_56", 0x40E00034, 24, 0x00000001, 'd', "GPIO 56 raising edge detect enabled" },
816*4882a593Smuzhiyun { "GRER1_57", 0x40E00034, 25, 0x00000001, 'd', "GPIO 57 raising edge detect enabled" },
817*4882a593Smuzhiyun { "GRER1_58", 0x40E00034, 26, 0x00000001, 'd', "GPIO 58 raising edge detect enabled" },
818*4882a593Smuzhiyun { "GRER1_59", 0x40E00034, 27, 0x00000001, 'd', "GPIO 59 raising edge detect enabled" },
819*4882a593Smuzhiyun { "GRER1_60", 0x40E00034, 28, 0x00000001, 'd', "GPIO 60 raising edge detect enabled" },
820*4882a593Smuzhiyun { "GRER1_61", 0x40E00034, 29, 0x00000001, 'd', "GPIO 61 raising edge detect enabled" },
821*4882a593Smuzhiyun { "GRER1_62", 0x40E00034, 30, 0x00000001, 'd', "GPIO 62 raising edge detect enabled" },
822*4882a593Smuzhiyun { "GRER1_63", 0x40E00034, 31, 0x00000001, 'd', "GPIO 63 raising edge detect enabled" },
823*4882a593Smuzhiyun
824*4882a593Smuzhiyun { "GRER2", 0x40E00038, 0, 0xffffffff, 'x', "GPIO Raising Edge Detect Enable Register 2 (4-13)" },
825*4882a593Smuzhiyun { "GRER2_64", 0x40E00038, 0, 0x00000001, 'd', "GPIO 64 raising edge detect enabled" },
826*4882a593Smuzhiyun { "GRER2_65", 0x40E00038, 1, 0x00000001, 'd', "GPIO 65 raising edge detect enabled" },
827*4882a593Smuzhiyun { "GRER2_66", 0x40E00038, 2, 0x00000001, 'd', "GPIO 66 raising edge detect enabled" },
828*4882a593Smuzhiyun { "GRER2_67", 0x40E00038, 3, 0x00000001, 'd', "GPIO 67 raising edge detect enabled" },
829*4882a593Smuzhiyun { "GRER2_68", 0x40E00038, 4, 0x00000001, 'd', "GPIO 68 raising edge detect enabled" },
830*4882a593Smuzhiyun { "GRER2_69", 0x40E00038, 5, 0x00000001, 'd', "GPIO 69 raising edge detect enabled" },
831*4882a593Smuzhiyun { "GRER2_70", 0x40E00038, 6, 0x00000001, 'd', "GPIO 70 raising edge detect enabled" },
832*4882a593Smuzhiyun { "GRER2_71", 0x40E00038, 7, 0x00000001, 'd', "GPIO 71 raising edge detect enabled" },
833*4882a593Smuzhiyun { "GRER2_72", 0x40E00038, 8, 0x00000001, 'd', "GPIO 72 raising edge detect enabled" },
834*4882a593Smuzhiyun { "GRER2_73", 0x40E00038, 9, 0x00000001, 'd', "GPIO 73 raising edge detect enabled" },
835*4882a593Smuzhiyun { "GRER2_74", 0x40E00038, 10, 0x00000001, 'd', "GPIO 74 raising edge detect enabled" },
836*4882a593Smuzhiyun { "GRER2_75", 0x40E00038, 11, 0x00000001, 'd', "GPIO 75 raising edge detect enabled" },
837*4882a593Smuzhiyun { "GRER2_76", 0x40E00038, 12, 0x00000001, 'd', "GPIO 76 raising edge detect enabled" },
838*4882a593Smuzhiyun { "GRER2_77", 0x40E00038, 13, 0x00000001, 'd', "GPIO 77 raising edge detect enabled" },
839*4882a593Smuzhiyun { "GRER2_78", 0x40E00038, 14, 0x00000001, 'd', "GPIO 78 raising edge detect enabled" },
840*4882a593Smuzhiyun { "GRER2_79", 0x40E00038, 15, 0x00000001, 'd', "GPIO 79 raising edge detect enabled" },
841*4882a593Smuzhiyun { "GRER2_80", 0x40E00038, 16, 0x00000001, 'd', "GPIO 80 raising edge detect enabled" },
842*4882a593Smuzhiyun { "GRER2_81", 0x40E00038, 17, 0x00000001, 'd', "GPIO 81 raising edge detect enabled" },
843*4882a593Smuzhiyun { "GRER2_82", 0x40E00038, 18, 0x00000001, 'd', "GPIO 82 raising edge detect enabled" },
844*4882a593Smuzhiyun { "GRER2_83", 0x40E00038, 19, 0x00000001, 'd', "GPIO 83 raising edge detect enabled" },
845*4882a593Smuzhiyun { "GRER2_84", 0x40E00038, 20, 0x00000001, 'd', "GPIO 84 raising edge detect enabled" },
846*4882a593Smuzhiyun
847*4882a593Smuzhiyun { "GFER0", 0x40E0003C, 0, 0xffffffff, 'x', "GPIO Falling Edge Detect Enable Register 0 (4-14)" },
848*4882a593Smuzhiyun { "GFER0_0", 0x40E0003C, 0, 0x00000001, 'd', "GPIO 0 falling edge detect enabled" },
849*4882a593Smuzhiyun { "GFER0_1", 0x40E0003C, 1, 0x00000001, 'd', "GPIO 1 falling edge detect enabled" },
850*4882a593Smuzhiyun { "GFER0_2", 0x40E0003C, 2, 0x00000001, 'd', "GPIO 2 falling edge detect enabled" },
851*4882a593Smuzhiyun { "GFER0_3", 0x40E0003C, 3, 0x00000001, 'd', "GPIO 3 falling edge detect enabled" },
852*4882a593Smuzhiyun { "GFER0_4", 0x40E0003C, 4, 0x00000001, 'd', "GPIO 4 falling edge detect enabled" },
853*4882a593Smuzhiyun { "GFER0_5", 0x40E0003C, 5, 0x00000001, 'd', "GPIO 5 falling edge detect enabled" },
854*4882a593Smuzhiyun { "GFER0_6", 0x40E0003C, 6, 0x00000001, 'd', "GPIO 6 falling edge detect enabled" },
855*4882a593Smuzhiyun { "GFER0_7", 0x40E0003C, 7, 0x00000001, 'd', "GPIO 7 falling edge detect enabled" },
856*4882a593Smuzhiyun { "GFER0_8", 0x40E0003C, 8, 0x00000001, 'd', "GPIO 8 falling edge detect enabled" },
857*4882a593Smuzhiyun { "GFER0_9", 0x40E0003C, 9, 0x00000001, 'd', "GPIO 9 falling edge detect enabled" },
858*4882a593Smuzhiyun { "GFER0_10", 0x40E0003C, 10, 0x00000001, 'd', "GPIO 10 falling edge detect enabled" },
859*4882a593Smuzhiyun { "GFER0_11", 0x40E0003C, 11, 0x00000001, 'd', "GPIO 11 falling edge detect enabled" },
860*4882a593Smuzhiyun { "GFER0_12", 0x40E0003C, 12, 0x00000001, 'd', "GPIO 12 falling edge detect enabled" },
861*4882a593Smuzhiyun { "GFER0_13", 0x40E0003C, 13, 0x00000001, 'd', "GPIO 13 falling edge detect enabled" },
862*4882a593Smuzhiyun { "GFER0_14", 0x40E0003C, 14, 0x00000001, 'd', "GPIO 14 falling edge detect enabled" },
863*4882a593Smuzhiyun { "GFER0_15", 0x40E0003C, 15, 0x00000001, 'd', "GPIO 15 falling edge detect enabled" },
864*4882a593Smuzhiyun { "GFER0_16", 0x40E0003C, 16, 0x00000001, 'd', "GPIO 16 falling edge detect enabled" },
865*4882a593Smuzhiyun { "GFER0_17", 0x40E0003C, 17, 0x00000001, 'd', "GPIO 17 falling edge detect enabled" },
866*4882a593Smuzhiyun { "GFER0_18", 0x40E0003C, 18, 0x00000001, 'd', "GPIO 18 falling edge detect enabled" },
867*4882a593Smuzhiyun { "GFER0_19", 0x40E0003C, 19, 0x00000001, 'd', "GPIO 19 falling edge detect enabled" },
868*4882a593Smuzhiyun { "GFER0_20", 0x40E0003C, 20, 0x00000001, 'd', "GPIO 20 falling edge detect enabled" },
869*4882a593Smuzhiyun { "GFER0_21", 0x40E0003C, 21, 0x00000001, 'd', "GPIO 21 falling edge detect enabled" },
870*4882a593Smuzhiyun { "GFER0_22", 0x40E0003C, 22, 0x00000001, 'd', "GPIO 22 falling edge detect enabled" },
871*4882a593Smuzhiyun { "GFER0_23", 0x40E0003C, 23, 0x00000001, 'd', "GPIO 23 falling edge detect enabled" },
872*4882a593Smuzhiyun { "GFER0_24", 0x40E0003C, 24, 0x00000001, 'd', "GPIO 24 falling edge detect enabled" },
873*4882a593Smuzhiyun { "GFER0_25", 0x40E0003C, 25, 0x00000001, 'd', "GPIO 25 falling edge detect enabled" },
874*4882a593Smuzhiyun { "GFER0_26", 0x40E0003C, 26, 0x00000001, 'd', "GPIO 26 falling edge detect enabled" },
875*4882a593Smuzhiyun { "GFER0_27", 0x40E0003C, 27, 0x00000001, 'd', "GPIO 27 falling edge detect enabled" },
876*4882a593Smuzhiyun { "GFER0_28", 0x40E0003C, 28, 0x00000001, 'd', "GPIO 28 falling edge detect enabled" },
877*4882a593Smuzhiyun { "GFER0_29", 0x40E0003C, 29, 0x00000001, 'd', "GPIO 29 falling edge detect enabled" },
878*4882a593Smuzhiyun { "GFER0_30", 0x40E0003C, 30, 0x00000001, 'd', "GPIO 30 falling edge detect enabled" },
879*4882a593Smuzhiyun { "GFER0_31", 0x40E0003C, 31, 0x00000001, 'd', "GPIO 31 falling edge detect enabled" },
880*4882a593Smuzhiyun
881*4882a593Smuzhiyun { "GFER1", 0x40E00040, 0, 0xffffffff, 'x', "GPIO Falling Edge Detect Enable Register 1 (4-14)" },
882*4882a593Smuzhiyun { "GFER1_32", 0x40E00040, 0, 0x00000001, 'd', "GPIO 32 falling edge detect enabled" },
883*4882a593Smuzhiyun { "GFER1_33", 0x40E00040, 1, 0x00000001, 'd', "GPIO 33 falling edge detect enabled" },
884*4882a593Smuzhiyun { "GFER1_34", 0x40E00040, 2, 0x00000001, 'd', "GPIO 34 falling edge detect enabled" },
885*4882a593Smuzhiyun { "GFER1_35", 0x40E00040, 3, 0x00000001, 'd', "GPIO 35 falling edge detect enabled" },
886*4882a593Smuzhiyun { "GFER1_36", 0x40E00040, 4, 0x00000001, 'd', "GPIO 36 falling edge detect enabled" },
887*4882a593Smuzhiyun { "GFER1_37", 0x40E00040, 5, 0x00000001, 'd', "GPIO 37 falling edge detect enabled" },
888*4882a593Smuzhiyun { "GFER1_38", 0x40E00040, 6, 0x00000001, 'd', "GPIO 38 falling edge detect enabled" },
889*4882a593Smuzhiyun { "GFER1_39", 0x40E00040, 7, 0x00000001, 'd', "GPIO 39 falling edge detect enabled" },
890*4882a593Smuzhiyun { "GFER1_40", 0x40E00040, 8, 0x00000001, 'd', "GPIO 40 falling edge detect enabled" },
891*4882a593Smuzhiyun { "GFER1_41", 0x40E00040, 9, 0x00000001, 'd', "GPIO 41 falling edge detect enabled" },
892*4882a593Smuzhiyun { "GFER1_42", 0x40E00040, 10, 0x00000001, 'd', "GPIO 42 falling edge detect enabled" },
893*4882a593Smuzhiyun { "GFER1_43", 0x40E00040, 11, 0x00000001, 'd', "GPIO 43 falling edge detect enabled" },
894*4882a593Smuzhiyun { "GFER1_44", 0x40E00040, 12, 0x00000001, 'd', "GPIO 44 falling edge detect enabled" },
895*4882a593Smuzhiyun { "GFER1_45", 0x40E00040, 13, 0x00000001, 'd', "GPIO 45 falling edge detect enabled" },
896*4882a593Smuzhiyun { "GFER1_46", 0x40E00040, 14, 0x00000001, 'd', "GPIO 46 falling edge detect enabled" },
897*4882a593Smuzhiyun { "GFER1_47", 0x40E00040, 15, 0x00000001, 'd', "GPIO 47 falling edge detect enabled" },
898*4882a593Smuzhiyun { "GFER1_48", 0x40E00040, 16, 0x00000001, 'd', "GPIO 48 falling edge detect enabled" },
899*4882a593Smuzhiyun { "GFER1_49", 0x40E00040, 17, 0x00000001, 'd', "GPIO 49 falling edge detect enabled" },
900*4882a593Smuzhiyun { "GFER1_50", 0x40E00040, 18, 0x00000001, 'd', "GPIO 50 falling edge detect enabled" },
901*4882a593Smuzhiyun { "GFER1_51", 0x40E00040, 19, 0x00000001, 'd', "GPIO 51 falling edge detect enabled" },
902*4882a593Smuzhiyun { "GFER1_52", 0x40E00040, 20, 0x00000001, 'd', "GPIO 52 falling edge detect enabled" },
903*4882a593Smuzhiyun { "GFER1_53", 0x40E00040, 21, 0x00000001, 'd', "GPIO 53 falling edge detect enabled" },
904*4882a593Smuzhiyun { "GFER1_54", 0x40E00040, 22, 0x00000001, 'd', "GPIO 54 falling edge detect enabled" },
905*4882a593Smuzhiyun { "GFER1_55", 0x40E00040, 23, 0x00000001, 'd', "GPIO 55 falling edge detect enabled" },
906*4882a593Smuzhiyun { "GFER1_56", 0x40E00040, 24, 0x00000001, 'd', "GPIO 56 falling edge detect enabled" },
907*4882a593Smuzhiyun { "GFER1_57", 0x40E00040, 25, 0x00000001, 'd', "GPIO 57 falling edge detect enabled" },
908*4882a593Smuzhiyun { "GFER1_58", 0x40E00040, 26, 0x00000001, 'd', "GPIO 58 falling edge detect enabled" },
909*4882a593Smuzhiyun { "GFER1_59", 0x40E00040, 27, 0x00000001, 'd', "GPIO 59 falling edge detect enabled" },
910*4882a593Smuzhiyun { "GFER1_60", 0x40E00040, 28, 0x00000001, 'd', "GPIO 60 falling edge detect enabled" },
911*4882a593Smuzhiyun { "GFER1_61", 0x40E00040, 29, 0x00000001, 'd', "GPIO 61 falling edge detect enabled" },
912*4882a593Smuzhiyun { "GFER1_62", 0x40E00040, 30, 0x00000001, 'd', "GPIO 62 falling edge detect enabled" },
913*4882a593Smuzhiyun { "GFER1_63", 0x40E00040, 31, 0x00000001, 'd', "GPIO 63 falling edge detect enabled" },
914*4882a593Smuzhiyun
915*4882a593Smuzhiyun { "GFER2", 0x40E00044, 0, 0xffffffff, 'x', "GPIO Falling Edge Detect Enable Register 2 (4-14)" },
916*4882a593Smuzhiyun { "GFER2_64", 0x40E00044, 0, 0x00000001, 'd', "GPIO 64 falling edge detect enabled" },
917*4882a593Smuzhiyun { "GFER2_65", 0x40E00044, 1, 0x00000001, 'd', "GPIO 65 falling edge detect enabled" },
918*4882a593Smuzhiyun { "GFER2_66", 0x40E00044, 2, 0x00000001, 'd', "GPIO 66 falling edge detect enabled" },
919*4882a593Smuzhiyun { "GFER2_67", 0x40E00044, 3, 0x00000001, 'd', "GPIO 67 falling edge detect enabled" },
920*4882a593Smuzhiyun { "GFER2_68", 0x40E00044, 4, 0x00000001, 'd', "GPIO 68 falling edge detect enabled" },
921*4882a593Smuzhiyun { "GFER2_69", 0x40E00044, 5, 0x00000001, 'd', "GPIO 69 falling edge detect enabled" },
922*4882a593Smuzhiyun { "GFER2_70", 0x40E00044, 6, 0x00000001, 'd', "GPIO 70 falling edge detect enabled" },
923*4882a593Smuzhiyun { "GFER2_71", 0x40E00044, 7, 0x00000001, 'd', "GPIO 71 falling edge detect enabled" },
924*4882a593Smuzhiyun { "GFER2_72", 0x40E00044, 8, 0x00000001, 'd', "GPIO 72 falling edge detect enabled" },
925*4882a593Smuzhiyun { "GFER2_73", 0x40E00044, 9, 0x00000001, 'd', "GPIO 73 falling edge detect enabled" },
926*4882a593Smuzhiyun { "GFER2_74", 0x40E00044, 10, 0x00000001, 'd', "GPIO 74 falling edge detect enabled" },
927*4882a593Smuzhiyun { "GFER2_75", 0x40E00044, 11, 0x00000001, 'd', "GPIO 75 falling edge detect enabled" },
928*4882a593Smuzhiyun { "GFER2_76", 0x40E00044, 12, 0x00000001, 'd', "GPIO 76 falling edge detect enabled" },
929*4882a593Smuzhiyun { "GFER2_77", 0x40E00044, 13, 0x00000001, 'd', "GPIO 77 falling edge detect enabled" },
930*4882a593Smuzhiyun { "GFER2_78", 0x40E00044, 14, 0x00000001, 'd', "GPIO 78 falling edge detect enabled" },
931*4882a593Smuzhiyun { "GFER2_79", 0x40E00044, 15, 0x00000001, 'd', "GPIO 79 falling edge detect enabled" },
932*4882a593Smuzhiyun { "GFER2_80", 0x40E00044, 16, 0x00000001, 'd', "GPIO 80 falling edge detect enabled" },
933*4882a593Smuzhiyun { "GFER2_81", 0x40E00044, 17, 0x00000001, 'd', "GPIO 81 falling edge detect enabled" },
934*4882a593Smuzhiyun { "GFER2_82", 0x40E00044, 18, 0x00000001, 'd', "GPIO 82 falling edge detect enabled" },
935*4882a593Smuzhiyun { "GFER2_83", 0x40E00044, 19, 0x00000001, 'd', "GPIO 83 falling edge detect enabled" },
936*4882a593Smuzhiyun { "GFER2_84", 0x40E00044, 20, 0x00000001, 'd', "GPIO 84 falling edge detect enabled" },
937*4882a593Smuzhiyun
938*4882a593Smuzhiyun { "GEDR0", 0x40E00048, 0, 0xffffffff, 'x', "GPIO Edge Detect Register 0 (4-15)" },
939*4882a593Smuzhiyun { "GEDR0_0", 0x40E00048, 0, 0x00000001, 'd', "GPIO 0 edge detected" },
940*4882a593Smuzhiyun { "GEDR0_1", 0x40E00048, 1, 0x00000001, 'd', "GPIO 1 edge detected" },
941*4882a593Smuzhiyun { "GEDR0_2", 0x40E00048, 2, 0x00000001, 'd', "GPIO 2 edge detected" },
942*4882a593Smuzhiyun { "GEDR0_3", 0x40E00048, 3, 0x00000001, 'd', "GPIO 3 edge detected" },
943*4882a593Smuzhiyun { "GEDR0_4", 0x40E00048, 4, 0x00000001, 'd', "GPIO 4 edge detected" },
944*4882a593Smuzhiyun { "GEDR0_5", 0x40E00048, 5, 0x00000001, 'd', "GPIO 5 edge detected" },
945*4882a593Smuzhiyun { "GEDR0_6", 0x40E00048, 6, 0x00000001, 'd', "GPIO 6 edge detected" },
946*4882a593Smuzhiyun { "GEDR0_7", 0x40E00048, 7, 0x00000001, 'd', "GPIO 7 edge detected" },
947*4882a593Smuzhiyun { "GEDR0_8", 0x40E00048, 8, 0x00000001, 'd', "GPIO 8 edge detected" },
948*4882a593Smuzhiyun { "GEDR0_9", 0x40E00048, 9, 0x00000001, 'd', "GPIO 9 edge detected" },
949*4882a593Smuzhiyun { "GEDR0_10", 0x40E00048, 10, 0x00000001, 'd', "GPIO 10 edge detected" },
950*4882a593Smuzhiyun { "GEDR0_11", 0x40E00048, 11, 0x00000001, 'd', "GPIO 11 edge detected" },
951*4882a593Smuzhiyun { "GEDR0_12", 0x40E00048, 12, 0x00000001, 'd', "GPIO 12 edge detected" },
952*4882a593Smuzhiyun { "GEDR0_13", 0x40E00048, 13, 0x00000001, 'd', "GPIO 13 edge detected" },
953*4882a593Smuzhiyun { "GEDR0_14", 0x40E00048, 14, 0x00000001, 'd', "GPIO 14 edge detected" },
954*4882a593Smuzhiyun { "GEDR0_15", 0x40E00048, 15, 0x00000001, 'd', "GPIO 15 edge detected" },
955*4882a593Smuzhiyun { "GEDR0_16", 0x40E00048, 16, 0x00000001, 'd', "GPIO 16 edge detected" },
956*4882a593Smuzhiyun { "GEDR0_17", 0x40E00048, 17, 0x00000001, 'd', "GPIO 17 edge detected" },
957*4882a593Smuzhiyun { "GEDR0_18", 0x40E00048, 18, 0x00000001, 'd', "GPIO 18 edge detected" },
958*4882a593Smuzhiyun { "GEDR0_19", 0x40E00048, 19, 0x00000001, 'd', "GPIO 19 edge detected" },
959*4882a593Smuzhiyun { "GEDR0_20", 0x40E00048, 20, 0x00000001, 'd', "GPIO 20 edge detected" },
960*4882a593Smuzhiyun { "GEDR0_21", 0x40E00048, 21, 0x00000001, 'd', "GPIO 21 edge detected" },
961*4882a593Smuzhiyun { "GEDR0_22", 0x40E00048, 22, 0x00000001, 'd', "GPIO 22 edge detected" },
962*4882a593Smuzhiyun { "GEDR0_23", 0x40E00048, 23, 0x00000001, 'd', "GPIO 23 edge detected" },
963*4882a593Smuzhiyun { "GEDR0_24", 0x40E00048, 24, 0x00000001, 'd', "GPIO 24 edge detected" },
964*4882a593Smuzhiyun { "GEDR0_25", 0x40E00048, 25, 0x00000001, 'd', "GPIO 25 edge detected" },
965*4882a593Smuzhiyun { "GEDR0_26", 0x40E00048, 26, 0x00000001, 'd', "GPIO 26 edge detected" },
966*4882a593Smuzhiyun { "GEDR0_27", 0x40E00048, 27, 0x00000001, 'd', "GPIO 27 edge detected" },
967*4882a593Smuzhiyun { "GEDR0_28", 0x40E00048, 28, 0x00000001, 'd', "GPIO 28 edge detected" },
968*4882a593Smuzhiyun { "GEDR0_29", 0x40E00048, 29, 0x00000001, 'd', "GPIO 29 edge detected" },
969*4882a593Smuzhiyun { "GEDR0_30", 0x40E00048, 30, 0x00000001, 'd', "GPIO 30 edge detected" },
970*4882a593Smuzhiyun { "GEDR0_31", 0x40E00048, 31, 0x00000001, 'd', "GPIO 31 edge detected" },
971*4882a593Smuzhiyun
972*4882a593Smuzhiyun { "GEDR1", 0x40E0004C, 0, 0xffffffff, 'x', "GPIO Edge Detect Register 1 (4-16)" },
973*4882a593Smuzhiyun { "GEDR1_32", 0x40E0004C, 0, 0x00000001, 'd', "GPIO 32 edge detected" },
974*4882a593Smuzhiyun { "GEDR1_33", 0x40E0004C, 1, 0x00000001, 'd', "GPIO 33 edge detected" },
975*4882a593Smuzhiyun { "GEDR1_34", 0x40E0004C, 2, 0x00000001, 'd', "GPIO 34 edge detected" },
976*4882a593Smuzhiyun { "GEDR1_35", 0x40E0004C, 3, 0x00000001, 'd', "GPIO 35 edge detected" },
977*4882a593Smuzhiyun { "GEDR1_36", 0x40E0004C, 4, 0x00000001, 'd', "GPIO 36 edge detected" },
978*4882a593Smuzhiyun { "GEDR1_37", 0x40E0004C, 5, 0x00000001, 'd', "GPIO 37 edge detected" },
979*4882a593Smuzhiyun { "GEDR1_38", 0x40E0004C, 6, 0x00000001, 'd', "GPIO 38 edge detected" },
980*4882a593Smuzhiyun { "GEDR1_39", 0x40E0004C, 7, 0x00000001, 'd', "GPIO 39 edge detected" },
981*4882a593Smuzhiyun { "GEDR1_40", 0x40E0004C, 8, 0x00000001, 'd', "GPIO 40 edge detected" },
982*4882a593Smuzhiyun { "GEDR1_41", 0x40E0004C, 9, 0x00000001, 'd', "GPIO 41 edge detected" },
983*4882a593Smuzhiyun { "GEDR1_42", 0x40E0004C, 10, 0x00000001, 'd', "GPIO 42 edge detected" },
984*4882a593Smuzhiyun { "GEDR1_43", 0x40E0004C, 11, 0x00000001, 'd', "GPIO 43 edge detected" },
985*4882a593Smuzhiyun { "GEDR1_44", 0x40E0004C, 12, 0x00000001, 'd', "GPIO 44 edge detected" },
986*4882a593Smuzhiyun { "GEDR1_45", 0x40E0004C, 13, 0x00000001, 'd', "GPIO 45 edge detected" },
987*4882a593Smuzhiyun { "GEDR1_46", 0x40E0004C, 14, 0x00000001, 'd', "GPIO 46 edge detected" },
988*4882a593Smuzhiyun { "GEDR1_47", 0x40E0004C, 15, 0x00000001, 'd', "GPIO 47 edge detected" },
989*4882a593Smuzhiyun { "GEDR1_48", 0x40E0004C, 16, 0x00000001, 'd', "GPIO 48 edge detected" },
990*4882a593Smuzhiyun { "GEDR1_49", 0x40E0004C, 17, 0x00000001, 'd', "GPIO 49 edge detected" },
991*4882a593Smuzhiyun { "GEDR1_50", 0x40E0004C, 18, 0x00000001, 'd', "GPIO 50 edge detected" },
992*4882a593Smuzhiyun { "GEDR1_51", 0x40E0004C, 19, 0x00000001, 'd', "GPIO 51 edge detected" },
993*4882a593Smuzhiyun { "GEDR1_52", 0x40E0004C, 20, 0x00000001, 'd', "GPIO 52 edge detected" },
994*4882a593Smuzhiyun { "GEDR1_53", 0x40E0004C, 21, 0x00000001, 'd', "GPIO 53 edge detected" },
995*4882a593Smuzhiyun { "GEDR1_54", 0x40E0004C, 22, 0x00000001, 'd', "GPIO 54 edge detected" },
996*4882a593Smuzhiyun { "GEDR1_55", 0x40E0004C, 23, 0x00000001, 'd', "GPIO 55 edge detected" },
997*4882a593Smuzhiyun { "GEDR1_56", 0x40E0004C, 24, 0x00000001, 'd', "GPIO 56 edge detected" },
998*4882a593Smuzhiyun { "GEDR1_57", 0x40E0004C, 25, 0x00000001, 'd', "GPIO 57 edge detected" },
999*4882a593Smuzhiyun { "GEDR1_58", 0x40E0004C, 26, 0x00000001, 'd', "GPIO 58 edge detected" },
1000*4882a593Smuzhiyun { "GEDR1_59", 0x40E0004C, 27, 0x00000001, 'd', "GPIO 59 edge detected" },
1001*4882a593Smuzhiyun { "GEDR1_60", 0x40E0004C, 28, 0x00000001, 'd', "GPIO 60 edge detected" },
1002*4882a593Smuzhiyun { "GEDR1_61", 0x40E0004C, 29, 0x00000001, 'd', "GPIO 61 edge detected" },
1003*4882a593Smuzhiyun { "GEDR1_62", 0x40E0004C, 30, 0x00000001, 'd', "GPIO 62 edge detected" },
1004*4882a593Smuzhiyun { "GEDR1_63", 0x40E0004C, 31, 0x00000001, 'd', "GPIO 63 edge detected" },
1005*4882a593Smuzhiyun
1006*4882a593Smuzhiyun { "GEDR2", 0x40E00050, 0, 0xffffffff, 'x', "GPIO Edge Detect Register 2 (4-16)" },
1007*4882a593Smuzhiyun { "GEDR2_64", 0x40E00050, 0, 0x00000001, 'd', "GPIO 64 edge detected" },
1008*4882a593Smuzhiyun { "GEDR2_65", 0x40E00050, 1, 0x00000001, 'd', "GPIO 65 edge detected" },
1009*4882a593Smuzhiyun { "GEDR2_66", 0x40E00050, 2, 0x00000001, 'd', "GPIO 66 edge detected" },
1010*4882a593Smuzhiyun { "GEDR2_67", 0x40E00050, 3, 0x00000001, 'd', "GPIO 67 edge detected" },
1011*4882a593Smuzhiyun { "GEDR2_68", 0x40E00050, 4, 0x00000001, 'd', "GPIO 68 edge detected" },
1012*4882a593Smuzhiyun { "GEDR2_69", 0x40E00050, 5, 0x00000001, 'd', "GPIO 69 edge detected" },
1013*4882a593Smuzhiyun { "GEDR2_70", 0x40E00050, 6, 0x00000001, 'd', "GPIO 70 edge detected" },
1014*4882a593Smuzhiyun { "GEDR2_71", 0x40E00050, 7, 0x00000001, 'd', "GPIO 71 edge detected" },
1015*4882a593Smuzhiyun { "GEDR2_72", 0x40E00050, 8, 0x00000001, 'd', "GPIO 72 edge detected" },
1016*4882a593Smuzhiyun { "GEDR2_73", 0x40E00050, 9, 0x00000001, 'd', "GPIO 73 edge detected" },
1017*4882a593Smuzhiyun { "GEDR2_74", 0x40E00050, 10, 0x00000001, 'd', "GPIO 74 edge detected" },
1018*4882a593Smuzhiyun { "GEDR2_75", 0x40E00050, 11, 0x00000001, 'd', "GPIO 75 edge detected" },
1019*4882a593Smuzhiyun { "GEDR2_76", 0x40E00050, 12, 0x00000001, 'd', "GPIO 76 edge detected" },
1020*4882a593Smuzhiyun { "GEDR2_77", 0x40E00050, 13, 0x00000001, 'd', "GPIO 77 edge detected" },
1021*4882a593Smuzhiyun { "GEDR2_78", 0x40E00050, 14, 0x00000001, 'd', "GPIO 78 edge detected" },
1022*4882a593Smuzhiyun { "GEDR2_79", 0x40E00050, 15, 0x00000001, 'd', "GPIO 79 edge detected" },
1023*4882a593Smuzhiyun { "GEDR2_80", 0x40E00050, 16, 0x00000001, 'd', "GPIO 80 edge detected" },
1024*4882a593Smuzhiyun { "GEDR2_81", 0x40E00050, 17, 0x00000001, 'd', "GPIO 81 edge detected" },
1025*4882a593Smuzhiyun { "GEDR2_82", 0x40E00050, 18, 0x00000001, 'd', "GPIO 82 edge detected" },
1026*4882a593Smuzhiyun { "GEDR2_83", 0x40E00050, 19, 0x00000001, 'd', "GPIO 83 edge detected" },
1027*4882a593Smuzhiyun { "GEDR2_84", 0x40E00050, 20, 0x00000001, 'd', "GPIO 84 edge detected" },
1028*4882a593Smuzhiyun
1029*4882a593Smuzhiyun { "GAFR0L", 0x40E00054, 0, 0xffffffff, 'x', "GPIO Alternate Function Register 0 Lower (4-17)" },
1030*4882a593Smuzhiyun { "GAFR0L_0", 0x40E00054, 0, 0x00000003, 'x', "GPIO 0 alternate function select" },
1031*4882a593Smuzhiyun { "GAFR0L_1", 0x40E00054, 2, 0x00000003, 'x', "GPIO 1 alternate function select" },
1032*4882a593Smuzhiyun { "GAFR0L_2", 0x40E00054, 4, 0x00000003, 'x', "GPIO 2 alternate function select" },
1033*4882a593Smuzhiyun { "GAFR0L_3", 0x40E00054, 6, 0x00000003, 'x', "GPIO 3 alternate function select" },
1034*4882a593Smuzhiyun { "GAFR0L_4", 0x40E00054, 8, 0x00000003, 'x', "GPIO 4 alternate function select" },
1035*4882a593Smuzhiyun { "GAFR0L_5", 0x40E00054, 10, 0x00000003, 'x', "GPIO 5 alternate function select" },
1036*4882a593Smuzhiyun { "GAFR0L_6", 0x40E00054, 12, 0x00000003, 'x', "GPIO 6 alternate function select" },
1037*4882a593Smuzhiyun { "GAFR0L_7", 0x40E00054, 14, 0x00000003, 'x', "GPIO 7 alternate function select" },
1038*4882a593Smuzhiyun { "GAFR0L_8", 0x40E00054, 16, 0x00000003, 'x', "GPIO 8 alternate function select" },
1039*4882a593Smuzhiyun { "GAFR0L_9", 0x40E00054, 18, 0x00000003, 'x', "GPIO 9 alternate function select" },
1040*4882a593Smuzhiyun { "GAFR0L_10", 0x40E00054, 20, 0x00000003, 'x', "GPIO 10 alternate function select" },
1041*4882a593Smuzhiyun { "GAFR0L_11", 0x40E00054, 22, 0x00000003, 'x', "GPIO 11 alternate function select" },
1042*4882a593Smuzhiyun { "GAFR0L_12", 0x40E00054, 24, 0x00000003, 'x', "GPIO 12 alternate function select" },
1043*4882a593Smuzhiyun { "GAFR0L_13", 0x40E00054, 26, 0x00000003, 'x', "GPIO 13 alternate function select" },
1044*4882a593Smuzhiyun { "GAFR0L_14", 0x40E00054, 28, 0x00000003, 'x', "GPIO 14 alternate function select" },
1045*4882a593Smuzhiyun { "GAFR0L_15", 0x40E00054, 30, 0x00000003, 'x', "GPIO 15 alternate function select" },
1046*4882a593Smuzhiyun
1047*4882a593Smuzhiyun { "GAFR0U", 0x40E00058, 0, 0xffffffff, 'x', "GPIO Alternate Function Register 0 Upper (4-18)" },
1048*4882a593Smuzhiyun { "GAFR0U_16", 0x40E00058, 0, 0x00000003, 'x', "GPIO 16 alternate function select" },
1049*4882a593Smuzhiyun { "GAFR0U_17", 0x40E00058, 2, 0x00000003, 'x', "GPIO 17 alternate function select" },
1050*4882a593Smuzhiyun { "GAFR0U_18", 0x40E00058, 4, 0x00000003, 'x', "GPIO 18 alternate function select" },
1051*4882a593Smuzhiyun { "GAFR0U_19", 0x40E00058, 6, 0x00000003, 'x', "GPIO 19 alternate function select" },
1052*4882a593Smuzhiyun { "GAFR0U_20", 0x40E00058, 8, 0x00000003, 'x', "GPIO 20 alternate function select" },
1053*4882a593Smuzhiyun { "GAFR0U_21", 0x40E00058, 10, 0x00000003, 'x', "GPIO 21 alternate function select" },
1054*4882a593Smuzhiyun { "GAFR0U_22", 0x40E00058, 12, 0x00000003, 'x', "GPIO 22 alternate function select" },
1055*4882a593Smuzhiyun { "GAFR0U_23", 0x40E00058, 14, 0x00000003, 'x', "GPIO 23 alternate function select" },
1056*4882a593Smuzhiyun { "GAFR0U_24", 0x40E00058, 16, 0x00000003, 'x', "GPIO 24 alternate function select" },
1057*4882a593Smuzhiyun { "GAFR0U_25", 0x40E00058, 18, 0x00000003, 'x', "GPIO 25 alternate function select" },
1058*4882a593Smuzhiyun { "GAFR0U_26", 0x40E00058, 20, 0x00000003, 'x', "GPIO 26 alternate function select" },
1059*4882a593Smuzhiyun { "GAFR0U_27", 0x40E00058, 22, 0x00000003, 'x', "GPIO 27 alternate function select" },
1060*4882a593Smuzhiyun { "GAFR0U_28", 0x40E00058, 24, 0x00000003, 'x', "GPIO 28 alternate function select" },
1061*4882a593Smuzhiyun { "GAFR0U_29", 0x40E00058, 26, 0x00000003, 'x', "GPIO 29 alternate function select" },
1062*4882a593Smuzhiyun { "GAFR0U_30", 0x40E00058, 28, 0x00000003, 'x', "GPIO 30 alternate function select" },
1063*4882a593Smuzhiyun { "GAFR0U_31", 0x40E00058, 30, 0x00000003, 'x', "GPIO 31 alternate function select" },
1064*4882a593Smuzhiyun
1065*4882a593Smuzhiyun { "GAFR1L", 0x40E0005C, 0, 0xffffffff, 'x', "GPIO Alternate Function Register 1 Lower (4-18)" },
1066*4882a593Smuzhiyun { "GAFR1L_32", 0x40E0005C, 0, 0x00000003, 'x', "GPIO 32 alternate function select" },
1067*4882a593Smuzhiyun { "GAFR1L_33", 0x40E0005C, 2, 0x00000003, 'x', "GPIO 33 alternate function select" },
1068*4882a593Smuzhiyun { "GAFR1L_34", 0x40E0005C, 4, 0x00000003, 'x', "GPIO 34 alternate function select" },
1069*4882a593Smuzhiyun { "GAFR1L_35", 0x40E0005C, 6, 0x00000003, 'x', "GPIO 35 alternate function select" },
1070*4882a593Smuzhiyun { "GAFR1L_36", 0x40E0005C, 8, 0x00000003, 'x', "GPIO 36 alternate function select" },
1071*4882a593Smuzhiyun { "GAFR1L_37", 0x40E0005C, 10, 0x00000003, 'x', "GPIO 37 alternate function select" },
1072*4882a593Smuzhiyun { "GAFR1L_38", 0x40E0005C, 12, 0x00000003, 'x', "GPIO 38 alternate function select" },
1073*4882a593Smuzhiyun { "GAFR1L_39", 0x40E0005C, 14, 0x00000003, 'x', "GPIO 39 alternate function select" },
1074*4882a593Smuzhiyun { "GAFR1L_40", 0x40E0005C, 16, 0x00000003, 'x', "GPIO 40 alternate function select" },
1075*4882a593Smuzhiyun { "GAFR1L_41", 0x40E0005C, 18, 0x00000003, 'x', "GPIO 41 alternate function select" },
1076*4882a593Smuzhiyun { "GAFR1L_42", 0x40E0005C, 20, 0x00000003, 'x', "GPIO 42 alternate function select" },
1077*4882a593Smuzhiyun { "GAFR1L_43", 0x40E0005C, 22, 0x00000003, 'x', "GPIO 43 alternate function select" },
1078*4882a593Smuzhiyun { "GAFR1L_44", 0x40E0005C, 24, 0x00000003, 'x', "GPIO 44 alternate function select" },
1079*4882a593Smuzhiyun { "GAFR1L_45", 0x40E0005C, 26, 0x00000003, 'x', "GPIO 45 alternate function select" },
1080*4882a593Smuzhiyun { "GAFR1L_46", 0x40E0005C, 28, 0x00000003, 'x', "GPIO 46 alternate function select" },
1081*4882a593Smuzhiyun { "GAFR1L_47", 0x40E0005C, 30, 0x00000003, 'x', "GPIO 47 alternate function select" },
1082*4882a593Smuzhiyun
1083*4882a593Smuzhiyun { "GAFR1U", 0x40E00060, 0, 0xffffffff, 'x', "GPIO Alternate Function Register 1 Upper (4-19)" },
1084*4882a593Smuzhiyun { "GAFR1U_48", 0x40E00060, 0, 0x00000003, 'x', "GPIO 48 alternate function select" },
1085*4882a593Smuzhiyun { "GAFR1U_49", 0x40E00060, 2, 0x00000003, 'x', "GPIO 49 alternate function select" },
1086*4882a593Smuzhiyun { "GAFR1U_50", 0x40E00060, 4, 0x00000003, 'x', "GPIO 50 alternate function select" },
1087*4882a593Smuzhiyun { "GAFR1U_51", 0x40E00060, 6, 0x00000003, 'x', "GPIO 51 alternate function select" },
1088*4882a593Smuzhiyun { "GAFR1U_52", 0x40E00060, 8, 0x00000003, 'x', "GPIO 52 alternate function select" },
1089*4882a593Smuzhiyun { "GAFR1U_53", 0x40E00060, 10, 0x00000003, 'x', "GPIO 53 alternate function select" },
1090*4882a593Smuzhiyun { "GAFR1U_54", 0x40E00060, 12, 0x00000003, 'x', "GPIO 54 alternate function select" },
1091*4882a593Smuzhiyun { "GAFR1U_55", 0x40E00060, 14, 0x00000003, 'x', "GPIO 55 alternate function select" },
1092*4882a593Smuzhiyun { "GAFR1U_56", 0x40E00060, 16, 0x00000003, 'x', "GPIO 56 alternate function select" },
1093*4882a593Smuzhiyun { "GAFR1U_57", 0x40E00060, 18, 0x00000003, 'x', "GPIO 57 alternate function select" },
1094*4882a593Smuzhiyun { "GAFR1U_58", 0x40E00060, 20, 0x00000003, 'x', "GPIO 58 alternate function select" },
1095*4882a593Smuzhiyun { "GAFR1U_59", 0x40E00060, 22, 0x00000003, 'x', "GPIO 59 alternate function select" },
1096*4882a593Smuzhiyun { "GAFR1U_60", 0x40E00060, 24, 0x00000003, 'x', "GPIO 60 alternate function select" },
1097*4882a593Smuzhiyun { "GAFR1U_61", 0x40E00060, 26, 0x00000003, 'x', "GPIO 61 alternate function select" },
1098*4882a593Smuzhiyun { "GAFR1U_62", 0x40E00060, 28, 0x00000003, 'x', "GPIO 62 alternate function select" },
1099*4882a593Smuzhiyun { "GAFR1U_63", 0x40E00060, 30, 0x00000003, 'x', "GPIO 63 alternate function select" },
1100*4882a593Smuzhiyun
1101*4882a593Smuzhiyun { "GAFR2L", 0x40E00064, 0, 0xffffffff, 'x', "GPIO Alternate Function Register 2 Lower (4-19)" },
1102*4882a593Smuzhiyun { "GAFR2L_64", 0x40E00064, 0, 0x00000003, 'x', "GPIO 64 alternate function select" },
1103*4882a593Smuzhiyun { "GAFR2L_65", 0x40E00064, 2, 0x00000003, 'x', "GPIO 65 alternate function select" },
1104*4882a593Smuzhiyun { "GAFR2L_66", 0x40E00064, 4, 0x00000003, 'x', "GPIO 66 alternate function select" },
1105*4882a593Smuzhiyun { "GAFR2L_67", 0x40E00064, 6, 0x00000003, 'x', "GPIO 67 alternate function select" },
1106*4882a593Smuzhiyun { "GAFR2L_68", 0x40E00064, 8, 0x00000003, 'x', "GPIO 68 alternate function select" },
1107*4882a593Smuzhiyun { "GAFR2L_69", 0x40E00064, 10, 0x00000003, 'x', "GPIO 69 alternate function select" },
1108*4882a593Smuzhiyun { "GAFR2L_70", 0x40E00064, 12, 0x00000003, 'x', "GPIO 70 alternate function select" },
1109*4882a593Smuzhiyun { "GAFR2L_71", 0x40E00064, 14, 0x00000003, 'x', "GPIO 71 alternate function select" },
1110*4882a593Smuzhiyun { "GAFR2L_72", 0x40E00064, 16, 0x00000003, 'x', "GPIO 72 alternate function select" },
1111*4882a593Smuzhiyun { "GAFR2L_73", 0x40E00064, 18, 0x00000003, 'x', "GPIO 73 alternate function select" },
1112*4882a593Smuzhiyun { "GAFR2L_74", 0x40E00064, 20, 0x00000003, 'x', "GPIO 74 alternate function select" },
1113*4882a593Smuzhiyun { "GAFR2L_75", 0x40E00064, 22, 0x00000003, 'x', "GPIO 75 alternate function select" },
1114*4882a593Smuzhiyun { "GAFR2L_76", 0x40E00064, 24, 0x00000003, 'x', "GPIO 76 alternate function select" },
1115*4882a593Smuzhiyun { "GAFR2L_77", 0x40E00064, 26, 0x00000003, 'x', "GPIO 77 alternate function select" },
1116*4882a593Smuzhiyun { "GAFR2L_78", 0x40E00064, 28, 0x00000003, 'x', "GPIO 78 alternate function select" },
1117*4882a593Smuzhiyun { "GAFR2L_79", 0x40E00064, 30, 0x00000003, 'x', "GPIO 79 alternate function select" },
1118*4882a593Smuzhiyun
1119*4882a593Smuzhiyun { "GAFR2U", 0x40E00068, 0, 0xffffffff, 'x', "GPIO Alternate Function Register 2 Upper (4-19)" },
1120*4882a593Smuzhiyun { "GAFR2U_80", 0x40E00068, 0, 0x00000003, 'x', "GPIO 80 alternate function select" },
1121*4882a593Smuzhiyun { "GAFR2U_81", 0x40E00068, 2, 0x00000003, 'x', "GPIO 81 alternate function select" },
1122*4882a593Smuzhiyun { "GAFR2U_82", 0x40E00068, 4, 0x00000003, 'x', "GPIO 82 alternate function select" },
1123*4882a593Smuzhiyun { "GAFR2U_83", 0x40E00068, 6, 0x00000003, 'x', "GPIO 83 alternate function select" },
1124*4882a593Smuzhiyun { "GAFR2U_84", 0x40E00068, 8, 0x00000003, 'x', "GPIO 84 alternate function select" },
1125*4882a593Smuzhiyun
1126*4882a593Smuzhiyun { "ICMR", 0x40D00004, 0, 0xffffffff, 'x', "Interrupt Controller Mask Register (4-22)" },
1127*4882a593Smuzhiyun { "ICMR_IM7", 0x40D00004, 7, 0x00000001, 'x', "Pending IRQ 7 (HWUART) unmasked?" },
1128*4882a593Smuzhiyun { "ICMR_IM8", 0x40D00004, 8, 0x00000001, 'x', "Pending IRQ 8 (GPIO0) unmasked" },
1129*4882a593Smuzhiyun { "ICMR_IM9", 0x40D00004, 9, 0x00000001, 'x', "Pending IRQ 9 (GPIO1) unmasked" },
1130*4882a593Smuzhiyun { "ICMR_IM10", 0x40D00004, 10, 0x00000001, 'x', "Pending IRQ 10 (GPIO2_80) unmasked" },
1131*4882a593Smuzhiyun { "ICMR_IM11", 0x40D00004, 11, 0x00000001, 'x', "Pending IRQ 11 (USB) unmasked" },
1132*4882a593Smuzhiyun { "ICMR_IM12", 0x40D00004, 12, 0x00000001, 'x', "Pending IRQ 12 (PMU) unmasked" },
1133*4882a593Smuzhiyun { "ICMR_IM13", 0x40D00004, 13, 0x00000001, 'x', "Pending IRQ 13 (I2S) unmasked" },
1134*4882a593Smuzhiyun { "ICMR_IM14", 0x40D00004, 14, 0x00000001, 'x', "Pending IRQ 14 (AC97) unmasked" },
1135*4882a593Smuzhiyun { "ICMR_IM17", 0x40D00004, 17, 0x00000001, 'x', "Pending IRQ 17 (LCD) unmasked" },
1136*4882a593Smuzhiyun { "ICMR_IM18", 0x40D00004, 18, 0x00000001, 'x', "Pending IRQ 18 (I2C) unmasked" },
1137*4882a593Smuzhiyun { "ICMR_IM19", 0x40D00004, 19, 0x00000001, 'x', "Pending IRQ 19 (ICP) unmasked" },
1138*4882a593Smuzhiyun { "ICMR_IM20", 0x40D00004, 20, 0x00000001, 'x', "Pending IRQ 20 (STUART) unmasked" },
1139*4882a593Smuzhiyun { "ICMR_IM21", 0x40D00004, 21, 0x00000001, 'x', "Pending IRQ 21 (BTUART) unmasked" },
1140*4882a593Smuzhiyun { "ICMR_IM22", 0x40D00004, 22, 0x00000001, 'x', "Pending IRQ 22 (FFUART) unmasked" },
1141*4882a593Smuzhiyun { "ICMR_IM23", 0x40D00004, 23, 0x00000001, 'x', "Pending IRQ 23 (MMC) unmasked" },
1142*4882a593Smuzhiyun { "ICMR_IM24", 0x40D00004, 24, 0x00000001, 'x', "Pending IRQ 24 (SSP) unmasked" },
1143*4882a593Smuzhiyun { "ICMR_IM25", 0x40D00004, 25, 0x00000001, 'x', "Pending IRQ 25 (DMA) unmasked" },
1144*4882a593Smuzhiyun { "ICMR_IM26", 0x40D00004, 26, 0x00000001, 'x', "Pending IRQ 26 (OSMR0) unmasked" },
1145*4882a593Smuzhiyun { "ICMR_IM27", 0x40D00004, 27, 0x00000001, 'x', "Pending IRQ 27 (OSMR1) unmasked" },
1146*4882a593Smuzhiyun { "ICMR_IM28", 0x40D00004, 28, 0x00000001, 'x', "Pending IRQ 28 (OSMR2) unmasked" },
1147*4882a593Smuzhiyun { "ICMR_IM29", 0x40D00004, 29, 0x00000001, 'x', "Pending IRQ 29 (OSMR3) unmasked" },
1148*4882a593Smuzhiyun { "ICMR_IM30", 0x40D00004, 30, 0x00000001, 'x', "Pending IRQ 30 (RTCCLK) unmasked" },
1149*4882a593Smuzhiyun { "ICMR_IM31", 0x40D00004, 31, 0x00000001, 'x', "Pending IRQ 31 (RTCALM) unmasked" },
1150*4882a593Smuzhiyun
1151*4882a593Smuzhiyun { "ICLR", 0x40D00008, 0, 0xffffffff, 'x', "Interrupt Controller Level Register (4-23)" },
1152*4882a593Smuzhiyun { "ICLR_IL7", 0x40D00008, 7, 0x00000001, 'x', "IRQ 8 (HWUART) generates FIQ?" },
1153*4882a593Smuzhiyun { "ICLR_IL8", 0x40D00008, 8, 0x00000001, 'x', "IRQ 8 (GPIO0) generates FIQ" },
1154*4882a593Smuzhiyun { "ICLR_IL9", 0x40D00008, 9, 0x00000001, 'x', "IRQ 9 (GPIO1) generates FIQ" },
1155*4882a593Smuzhiyun { "ICLR_IL10", 0x40D00008, 10, 0x00000001, 'x', "IRQ 10 (GPIO2_80) generates FIQ" },
1156*4882a593Smuzhiyun { "ICLR_IL11", 0x40D00008, 11, 0x00000001, 'x', "IRQ 11 (USB) generates FIQ" },
1157*4882a593Smuzhiyun { "ICLR_IL12", 0x40D00008, 12, 0x00000001, 'x', "IRQ 12 (PMU) generates FIQ" },
1158*4882a593Smuzhiyun { "ICLR_IL13", 0x40D00008, 13, 0x00000001, 'x', "IRQ 13 (I2S) generates FIQ" },
1159*4882a593Smuzhiyun { "ICLR_IL14", 0x40D00008, 14, 0x00000001, 'x', "IRQ 14 (AC97) generates FIQ" },
1160*4882a593Smuzhiyun { "ICLR_IL17", 0x40D00008, 17, 0x00000001, 'x', "IRQ 17 (LCD) generates FIQ" },
1161*4882a593Smuzhiyun { "ICLR_IL18", 0x40D00008, 18, 0x00000001, 'x', "IRQ 18 (I2C) generates FIQ" },
1162*4882a593Smuzhiyun { "ICLR_IL19", 0x40D00008, 19, 0x00000001, 'x', "IRQ 19 (ICP) generates FIQ" },
1163*4882a593Smuzhiyun { "ICLR_IL20", 0x40D00008, 20, 0x00000001, 'x', "IRQ 10 (STUART) generates FIQ" },
1164*4882a593Smuzhiyun { "ICLR_IL21", 0x40D00008, 21, 0x00000001, 'x', "IRQ 21 (BTUART) generates FIQ" },
1165*4882a593Smuzhiyun { "ICLR_IL22", 0x40D00008, 22, 0x00000001, 'x', "IRQ 22 (FFUART) generates FIQ" },
1166*4882a593Smuzhiyun { "ICLR_IL23", 0x40D00008, 23, 0x00000001, 'x', "IRQ 23 (MMC) generates FIQ" },
1167*4882a593Smuzhiyun { "ICLR_IL24", 0x40D00008, 24, 0x00000001, 'x', "IRQ 24 (SSP) generates FIQ" },
1168*4882a593Smuzhiyun { "ICLR_IL25", 0x40D00008, 25, 0x00000001, 'x', "IRQ 25 (DMA) generates FIQ" },
1169*4882a593Smuzhiyun { "ICLR_IL26", 0x40D00008, 26, 0x00000001, 'x', "IRQ 26 (OSMR0) generates FIQ" },
1170*4882a593Smuzhiyun { "ICLR_IL27", 0x40D00008, 27, 0x00000001, 'x', "IRQ 27 (OSMR1) generates FIQ" },
1171*4882a593Smuzhiyun { "ICLR_IL28", 0x40D00008, 28, 0x00000001, 'x', "IRQ 28 (OSMR2) generates FIQ" },
1172*4882a593Smuzhiyun { "ICLR_IL29", 0x40D00008, 29, 0x00000001, 'x', "IRQ 29 (OSMR3) generates FIQ" },
1173*4882a593Smuzhiyun { "ICLR_IL30", 0x40D00008, 30, 0x00000001, 'x', "IRQ 30 (RTCCLK) generates FIQ" },
1174*4882a593Smuzhiyun { "ICLR_IL31", 0x40D00008, 31, 0x00000001, 'x', "IRQ 31 (RTCALM) generates FIQ" },
1175*4882a593Smuzhiyun
1176*4882a593Smuzhiyun { "ICCR", 0x40D00014, 0, 0xffffffff, 'x', "Interrupt Controller Control Register (4-23)" },
1177*4882a593Smuzhiyun { "ICCR_DIM", 0x40D00014, 8, 0x00000001, 'x', "ONLY enabled and unmasked IRQ bring CPU from idle to run" },
1178*4882a593Smuzhiyun
1179*4882a593Smuzhiyun { "ICIP", 0x40D00000, 0, 0xffffffff, 'x', "Interrupt Controller IRQ Pending Register (4-24)" },
1180*4882a593Smuzhiyun
1181*4882a593Smuzhiyun { "ICFP", 0x40D0000C, 0, 0xffffffff, 'x', "Interrupt Controller FIQ Pending Register (4-24)" },
1182*4882a593Smuzhiyun
1183*4882a593Smuzhiyun { "ICPR", 0x40D00010, 0, 0xffffffff, 'x', "Interrupt Controller Pending Register (4-25)" },
1184*4882a593Smuzhiyun { "ICPR_IS7", 0x40D00010, 7, 0x00000001, 'x', "IRQ 7 (HWUART) pending" },
1185*4882a593Smuzhiyun { "ICPR_IS8", 0x40D00010, 8, 0x00000001, 'x', "IRQ 8 (GPIO0) pending" },
1186*4882a593Smuzhiyun { "ICPR_IS9", 0x40D00010, 9, 0x00000001, 'x', "IRQ 9 (GPIO1) pending" },
1187*4882a593Smuzhiyun { "ICPR_IS10", 0x40D00010, 10, 0x00000001, 'x', "IRQ 10 (GPIO2_80) pending" },
1188*4882a593Smuzhiyun { "ICPR_IS11", 0x40D00010, 11, 0x00000001, 'x', "IRQ 11 (USB) pending" },
1189*4882a593Smuzhiyun { "ICPR_IS12", 0x40D00010, 12, 0x00000001, 'x', "IRQ 12 (PMU) pending" },
1190*4882a593Smuzhiyun { "ICPR_IS13", 0x40D00010, 13, 0x00000001, 'x', "IRQ 13 (I2S) pending" },
1191*4882a593Smuzhiyun { "ICPR_IS14", 0x40D00010, 14, 0x00000001, 'x', "IRQ 14 (AC97) pending" },
1192*4882a593Smuzhiyun { "ICPR_IS17", 0x40D00010, 17, 0x00000001, 'x', "IRQ 17 (LCD) pending" },
1193*4882a593Smuzhiyun { "ICPR_IS18", 0x40D00010, 18, 0x00000001, 'x', "IRQ 18 (I2C) pending" },
1194*4882a593Smuzhiyun { "ICPR_IS19", 0x40D00010, 19, 0x00000001, 'x', "IRQ 19 (ICP) pending" },
1195*4882a593Smuzhiyun { "ICPR_IS20", 0x40D00010, 20, 0x00000001, 'x', "IRQ 10 (STUART) pending" },
1196*4882a593Smuzhiyun { "ICPR_IS21", 0x40D00010, 21, 0x00000001, 'x', "IRQ 21 (BTUART) pending" },
1197*4882a593Smuzhiyun { "ICPR_IS22", 0x40D00010, 22, 0x00000001, 'x', "IRQ 22 (FFUART) pending" },
1198*4882a593Smuzhiyun { "ICPR_IS23", 0x40D00010, 23, 0x00000001, 'x', "IRQ 23 (MMC) pending" },
1199*4882a593Smuzhiyun { "ICPR_IS24", 0x40D00010, 24, 0x00000001, 'x', "IRQ 24 (SSP) pending" },
1200*4882a593Smuzhiyun { "ICPR_IS25", 0x40D00010, 25, 0x00000001, 'x', "IRQ 25 (DMA) pending" },
1201*4882a593Smuzhiyun { "ICPR_IS26", 0x40D00010, 26, 0x00000001, 'x', "IRQ 26 (OSMR0) pending" },
1202*4882a593Smuzhiyun { "ICPR_IS27", 0x40D00010, 27, 0x00000001, 'x', "IRQ 27 (OSMR1) pending" },
1203*4882a593Smuzhiyun { "ICPR_IS28", 0x40D00010, 28, 0x00000001, 'x', "IRQ 28 (OSMR2) pending" },
1204*4882a593Smuzhiyun { "ICPR_IS29", 0x40D00010, 29, 0x00000001, 'x', "IRQ 29 (OSMR3) pending" },
1205*4882a593Smuzhiyun { "ICPR_IS30", 0x40D00010, 30, 0x00000001, 'x', "IRQ 30 (RTCCLK) pending" },
1206*4882a593Smuzhiyun { "ICPR_IS31", 0x40D00010, 31, 0x00000001, 'x', "IRQ 31 (RTCALM) pending" },
1207*4882a593Smuzhiyun
1208*4882a593Smuzhiyun { "RTTR", 0x4090000C, 0, 0xffffffff, 'x', "RTC Trim Register (4-30)" },
1209*4882a593Smuzhiyun { "RTTR_CK_DIV", 0x4090000C, 0, 0x0000ffff, 'x', "RTC Clock Divider Count" },
1210*4882a593Smuzhiyun { "RTTR_DEL", 0x4090000C, 16, 0x000003ff, 'x', "RTC Trim delete Count" },
1211*4882a593Smuzhiyun { "RTTR_LCK", 0x4090000C, 31, 0x00000001, 'x', "RTC Locking for RTTR" },
1212*4882a593Smuzhiyun
1213*4882a593Smuzhiyun { "RTAR", 0x40900010, 0, 0xffffffff, 'x', "RTC Alarm Register (4-30)" },
1214*4882a593Smuzhiyun { "RTAR_RTMV", 0x40900010, 0, 0xffffffff, 'x', "RTC Target Match Value" },
1215*4882a593Smuzhiyun
1216*4882a593Smuzhiyun { "RCNR", 0x40900000, 0, 0xffffffff, 'x', "RTC Counter Register (4-31)" },
1217*4882a593Smuzhiyun { "RCNR_RCV", 0x40900000, 0, 0xffffffff, 'x', "RTC Count Value" },
1218*4882a593Smuzhiyun
1219*4882a593Smuzhiyun { "RTSR", 0x40900008, 0, 0xffffffff, 'x', "RTC Status Register (4-32)" },
1220*4882a593Smuzhiyun { "RTSR_AL", 0x40900008, 0, 0x00000001, 'x', "RTC Alarm Interrupt detected" },
1221*4882a593Smuzhiyun { "RTSR_HZ", 0x40900008, 1, 0x00000001, 'x', "RTC Hz Interrupt detected" },
1222*4882a593Smuzhiyun { "RTSR_ALE", 0x40900008, 2, 0x00000001, 'x', "RTC Alarm Interrupt Enable" },
1223*4882a593Smuzhiyun { "RTSR_HZE", 0x40900008, 3, 0x00000001, 'x', "RTC Hz Interrupt Enable" },
1224*4882a593Smuzhiyun
1225*4882a593Smuzhiyun { "OSMR0", 0x40A00000, 0, 0xffffffff, 'x', "OS Timer Match Register 0 (4-36)" },
1226*4882a593Smuzhiyun { "OSMR1", 0x40A00004, 0, 0xffffffff, 'x', "OS Timer Match Register 1 (4-36)" },
1227*4882a593Smuzhiyun { "OSMR2", 0x40A00008, 0, 0xffffffff, 'x', "OS Timer Match Register 2 (4-36)" },
1228*4882a593Smuzhiyun { "OSMR3", 0x40A0000C, 0, 0xffffffff, 'x', "OS Timer Match Register 3 (4-36)" },
1229*4882a593Smuzhiyun
1230*4882a593Smuzhiyun { "OIER", 0x40A0001C, 0, 0xffffffff, 'x', "OS Timer Interrupt Enable Register (4-36)" },
1231*4882a593Smuzhiyun { "OIER_E0", 0x40A0001C, 0, 0x00000001, 'x', "OS Interrupt for OSMR0 enabled" },
1232*4882a593Smuzhiyun { "OIER_E1", 0x40A0001C, 1, 0x00000001, 'x', "OS Interrupt for OSMR1 enabled" },
1233*4882a593Smuzhiyun { "OIER_E2", 0x40A0001C, 2, 0x00000001, 'x', "OS Interrupt for OSMR2 enabled" },
1234*4882a593Smuzhiyun { "OIER_E3", 0x40A0001C, 3, 0x00000001, 'x', "OS Interrupt for OSMR3 enabled" },
1235*4882a593Smuzhiyun
1236*4882a593Smuzhiyun { "OWER", 0x40A00018, 0, 0xffffffff, 'x', "OS Timer Watchdog Match Enable Register (4-37)" },
1237*4882a593Smuzhiyun { "OWER_WME", 0x40A00018, 0, 0x00000001, 'x', "OSMR3 match causes a reset" },
1238*4882a593Smuzhiyun
1239*4882a593Smuzhiyun { "OSCR", 0x40A00010, 0, 0xffffffff, 'x', "OS Timer Count Register (4-37)" },
1240*4882a593Smuzhiyun { "OSCR_OSCV", 0x40A00010, 0, 0xffffffff, 'x', "OS Timer Count Value" },
1241*4882a593Smuzhiyun
1242*4882a593Smuzhiyun { "OSSR", 0x40A00014, 0, 0xffffffff, 'x', "OS Timer Status Register (4-38)" },
1243*4882a593Smuzhiyun { "OSSR_M0", 0x40A00014, 0, 0x00000001, 'x', "OS OSMR0 matched OSCR0" },
1244*4882a593Smuzhiyun { "OSSR_M1", 0x40A00014, 1, 0x00000001, 'x', "OS OSMR1 matched OSCR1" },
1245*4882a593Smuzhiyun { "OSSR_M2", 0x40A00014, 2, 0x00000001, 'x', "OS OSMR2 matched OSCR2" },
1246*4882a593Smuzhiyun { "OSSR_M3", 0x40A00014, 3, 0x00000001, 'x', "OS OSMR3 matched OSCR3" },
1247*4882a593Smuzhiyun
1248*4882a593Smuzhiyun { "PWMCTL0", 0x40B00000, 0, 0xffffffff, 'x', "PWM Control Register 0 (4-41)" },
1249*4882a593Smuzhiyun { "PWMCTL0_PRESCALE", 0x40B00000, 0, 0x0000003f, 'd', "PWM0 Prescale Divisor" },
1250*4882a593Smuzhiyun { "PWMCTL0_SD", 0x40B00000, 5, 0x00000001, 'x', "PWM0 abrupt shutdown" },
1251*4882a593Smuzhiyun
1252*4882a593Smuzhiyun { "PWMDUTY0", 0x40B00004, 0, 0xffffffff, 'x', "PWM Duty Cycle Register 0 (4-42)" },
1253*4882a593Smuzhiyun { "PWMDUTY0_DCYCLE", 0x40B00004, 0, 0x000003ff, 'd', "PWM0 Duty Cycle" },
1254*4882a593Smuzhiyun { "PWMDUTY0_FDCYCLE", 0x40B00004, 10, 0x00000001, 'x', "PWM_OUT0 is set high and does not toggle" },
1255*4882a593Smuzhiyun
1256*4882a593Smuzhiyun { "PWMPERVAL0", 0x40B00008, 0, 0xffffffff, 'x', "PWM Period Control Register 0 (4-43)" },
1257*4882a593Smuzhiyun { "PWMPERVAL0_PV", 0x40B00008, 0, 0x000003ff, 'd', "PWM0 Period Cycle Length" },
1258*4882a593Smuzhiyun
1259*4882a593Smuzhiyun { "PWMCTL1", 0x40C00000, 0, 0xffffffff, 'x', "PWM Control Register 1 (4-41)" },
1260*4882a593Smuzhiyun { "PWMCTL1_PRESCALE", 0x40C00000, 0, 0x0000003f, 'd', "PWM1 Prescale Divisor" },
1261*4882a593Smuzhiyun { "PWMCTL1_SD", 0x40C00000, 5, 0x00000001, 'x', "PWM1 abrupt shutdown" },
1262*4882a593Smuzhiyun
1263*4882a593Smuzhiyun { "PWMDUTY1", 0x40C00004, 0, 0xffffffff, 'x', "PWM Duty Cycle Register 1 (4-42)" },
1264*4882a593Smuzhiyun { "PWMDUTY1_DCYCLE", 0x40C00004, 0, 0x000003ff, 'd', "PWM1 Duty Cycle" },
1265*4882a593Smuzhiyun { "PWMDUTY1_FDCYCLE", 0x40C00004, 10, 0x00000001, 'x', "PWM_OUT1 is set high and does not toggle" },
1266*4882a593Smuzhiyun
1267*4882a593Smuzhiyun { "PWMPERVAL1", 0x40C00008, 0, 0xffffffff, 'x', "PWM Period Control Register 1 (4-43)" },
1268*4882a593Smuzhiyun { "PWMPERVAL1_PV", 0x40C00008, 0, 0x000003ff, 'd', "PWM1 Period Cycle Length" },
1269*4882a593Smuzhiyun
1270*4882a593Smuzhiyun
1271*4882a593Smuzhiyun { "LCCR0", 0x44000000, 0, 0xffffffff, 'x', "LCD Controller Control Register 0 (7-23)" },
1272*4882a593Smuzhiyun { "LCCR0_ENB", 0x44000000, 0, 0x00000001, 'd', "LCD controller enable" },
1273*4882a593Smuzhiyun { "LCCR0_CMS", 0x44000000, 1, 0x00000001, 'd', "LCD monochrome operation enable" },
1274*4882a593Smuzhiyun { "LCCR0_SDS", 0x44000000, 2, 0x00000001, 'd', "LCD dual panel display enable" },
1275*4882a593Smuzhiyun { "LCCR0_LDM", 0x44000000, 3, 0x00000001, 'd', "LCD disable done IRQ disable" },
1276*4882a593Smuzhiyun { "LCCR0_SFM", 0x44000000, 4, 0x00000001, 'd', "LCD start of frame IRQ disable" },
1277*4882a593Smuzhiyun { "LCCR0_IUM", 0x44000000, 5, 0x00000001, 'd', "LCD fifo underrun error IRQ disable" },
1278*4882a593Smuzhiyun { "LCCR0_EFM", 0x44000000, 6, 0x00000001, 'd', "LCD end of frame IRQ disable" },
1279*4882a593Smuzhiyun { "LCCR0_PAS", 0x44000000, 7, 0x00000001, 'd', "LCD active display enable" },
1280*4882a593Smuzhiyun { "LCCR0_DPD", 0x44000000, 9, 0x00000001, 'd', "LCD send 8 pixel on L_DD[7:0] at each clock" },
1281*4882a593Smuzhiyun { "LCCR0_DIS", 0x44000000, 10, 0x00000001, 'd', "LCD controller disable" },
1282*4882a593Smuzhiyun { "LCCR0_QDM", 0x44000000, 11, 0x00000001, 'd', "LCD quick disable IRQ disable" },
1283*4882a593Smuzhiyun { "LCCR0_PDD", 0x44000000, 12, 0x000000FF, 'd', "LCD palette DMA request delay" },
1284*4882a593Smuzhiyun { "LCCR0_BM", 0x44000000, 20, 0x00000001, 'd', "LCD branch start IRQ disable" },
1285*4882a593Smuzhiyun { "LCCR0_OUM", 0x44000000, 21, 0x00000001, 'd', "LCD fifo underrun IRQ disable" },
1286*4882a593Smuzhiyun
1287*4882a593Smuzhiyun { "LCCR1", 0x44000004, 0, 0xffffffff, 'x', "LCD Controller Control Register 1 (7-26)" },
1288*4882a593Smuzhiyun { "LCCR1_PPL", 0x44000004, 0, 0x000003ff, 'd', "LCD pixels per line (+1)" },
1289*4882a593Smuzhiyun { "LCCR1_HSW", 0x44000004, 10, 0x0000003f, 'd', "LCD horizontal sync pulse width (+1)" },
1290*4882a593Smuzhiyun { "LCCR1_ELW", 0x44000004, 16, 0x000000ff, 'd', "LCD end of line pixel clock wait count (+1)" },
1291*4882a593Smuzhiyun { "LCCR1_BLW", 0x44000004, 24, 0x000000ff, 'd', "LCD beginning of line pixel clock wait count (+1)" },
1292*4882a593Smuzhiyun
1293*4882a593Smuzhiyun { "LCCR2", 0x44000008, 0, 0xffffffff, 'x', "LCD Controller Control Register 2 (7-28)" },
1294*4882a593Smuzhiyun { "LCCR2_LPP", 0x44000008, 0, 0x000003ff, 'd', "LCD lines per panel (+1)" },
1295*4882a593Smuzhiyun { "LCCR2_VSW", 0x44000008, 10, 0x0000003f, 'd', "LCD vertical sync pulse width (+1)" },
1296*4882a593Smuzhiyun { "LCCR2_EFW", 0x44000008, 16, 0x000000ff, 'd', "LCD end of frame line clock wait count (+1)" },
1297*4882a593Smuzhiyun { "LCCR2_BFW", 0x44000008, 24, 0x000000ff, 'd', "LCD beginning of frame line clock wait count (+1)" },
1298*4882a593Smuzhiyun
1299*4882a593Smuzhiyun { "LCCR3", 0x4400000C, 0, 0xffffffff, 'x', "LCD Controller Control Register 3 (7-31)" },
1300*4882a593Smuzhiyun { "LCCR3_PCD", 0x4400000C, 0, 0x000000ff, 'd', "LCD pixel clock divisor (+1)" },
1301*4882a593Smuzhiyun { "LCCR3_ACB", 0x4400000C, 8, 0x000000ff, 'd', "LCD AC bias pin frequency (+1)" },
1302*4882a593Smuzhiyun { "LCCR3_API", 0x4400000C, 16, 0x0000000f, 'd', "LCD AC bias pin transitions per interrupt" },
1303*4882a593Smuzhiyun { "LCCR3_VSP", 0x4400000C, 20, 0x00000001, 'd', "LCD L_FCLK vertical sync polarity active low" },
1304*4882a593Smuzhiyun { "LCCR3_HSP", 0x4400000C, 21, 0x00000001, 'd', "LCD L_LCLK horizontal sync polarity active low" },
1305*4882a593Smuzhiyun { "LCCR3_PCP", 0x4400000C, 22, 0x00000001, 'd', "LCD data sampled on falling edge of L_PCLK" },
1306*4882a593Smuzhiyun { "LCCR3_OEP", 0x4400000C, 23, 0x00000001, 'd', "LCD L_BIAS output enable active low" },
1307*4882a593Smuzhiyun { "LCCR3_BPP", 0x4400000C, 24, 0x00000007, '<', "LCD bits per pixel" },
1308*4882a593Smuzhiyun { "LCCR3_DPC", 0x4400000C, 27, 0x00000007, 'd', "LCD double pixel clock rate at L_PCLK" },
1309*4882a593Smuzhiyun
1310*4882a593Smuzhiyun
1311*4882a593Smuzhiyun { "FBR0", 0x44000020, 0, 0xffffffff, 'x', "FBR0" },
1312*4882a593Smuzhiyun { "FBR1", 0x44000020, 0, 0xffffffff, 'x', "FBR1" },
1313*4882a593Smuzhiyun { "LCSR", 0x44000038, 0, 0xffffffff, 'x', "LCD Controller Status Register (7-40)" },
1314*4882a593Smuzhiyun { "LIIDR", 0x4400003C, 0, 0xffffffff, 'x', "LCD Controller Interrupt ID Register (7-41)" },
1315*4882a593Smuzhiyun // TODO
1316*4882a593Smuzhiyun
1317*4882a593Smuzhiyun { "TRGBBR", 0x44000040, 0, 0xffffffff, 'x', "TMED RBG Seed Register (7-42)" },
1318*4882a593Smuzhiyun { "TRGBBR_TRS",0x44000040, 0, 0x000000ff, 'x', "Red Seed" },
1319*4882a593Smuzhiyun { "TRGBBR_TGS",0x44000040, 8, 0x000000ff, 'x', "Green Seed" },
1320*4882a593Smuzhiyun { "TRGBBR_TBS",0x44000040, 16, 0x000000ff, 'x', "Blue Seed" },
1321*4882a593Smuzhiyun
1322*4882a593Smuzhiyun { "TCR", 0x44000044, 0, 0xffffffff, 'x', "TMED Control Register (7-44)" },
1323*4882a593Smuzhiyun { "TCR_COAM", 0x44000044, 0, 0x00000001, 'x', "Color Offset Adjuster Matrix" },
1324*4882a593Smuzhiyun { "TCR_FNAM", 0x44000044, 1, 0x00000001, 'x', "Frame Number Adjuster Matrix" },
1325*4882a593Smuzhiyun { "TCR_COAE", 0x44000044, 2, 0x00000001, 'x', "Color Offset Adjuster Enable" },
1326*4882a593Smuzhiyun { "TCR_FNAME", 0x44000044, 3, 0x00000001, 'x', "Frame Number Adjuster Enable" },
1327*4882a593Smuzhiyun { "TCR_TVBS", 0x44000044, 4, 0x0000000f, 'd', "Vertical Beat Suppression" },
1328*4882a593Smuzhiyun { "TCR_THBS", 0x44000044, 8, 0x0000000f, 'd', "Horizontal Beat Suppression" },
1329*4882a593Smuzhiyun { "TCR_TED", 0x44000044, 14, 0x00000001, 'x', "Energy Distribution Matrix Select" },
1330*4882a593Smuzhiyun
1331*4882a593Smuzhiyun { "FDADR0", 0x44000200, 0, 0xffffffff, 'x', "FDADR0" },
1332*4882a593Smuzhiyun { "FSADR0", 0x44000204, 0, 0xffffffff, 'x', "FSADR0" },
1333*4882a593Smuzhiyun { "FIDR0", 0x44000208, 0, 0xffffffff, 'x', "FODR0" },
1334*4882a593Smuzhiyun { "LDCMD0", 0x4400020C, 0, 0xffffffff, 'x', "LDCMD0" },
1335*4882a593Smuzhiyun { "FDADR1", 0x44000210, 0, 0xffffffff, 'x', "FDADR1" },
1336*4882a593Smuzhiyun { "FSADR1", 0x44000214, 0, 0xffffffff, 'x', "FSADR1" },
1337*4882a593Smuzhiyun { "FIDR1", 0x44000218, 0, 0xffffffff, 'x', "FIDR1" },
1338*4882a593Smuzhiyun { "LDCMD1", 0x4400021C, 0, 0xffffffff, 'x', "LDCMD1" },
1339*4882a593Smuzhiyun // TODO
1340*4882a593Smuzhiyun
1341*4882a593Smuzhiyun
1342*4882a593Smuzhiyun
1343*4882a593Smuzhiyun
1344*4882a593Smuzhiyun { "MDCNFG", 0x48000000, 0, 0xffffffff, 'x', "SDRAM Configuration Register (6-9)" },
1345*4882a593Smuzhiyun { "MDCNFG_DE0", 0x48000000, 0, 0x00000001, 'd', "SDRAM enable for partition 0" },
1346*4882a593Smuzhiyun { "MDCNFG_DE1", 0x48000000, 1, 0x00000001, 'd', "SDRAM enable for partition 1" },
1347*4882a593Smuzhiyun { "MDCNFG_DWID0", 0x48000000, 2, 0x00000001, 'd', "SDRAM data width (0=32, 1=16)" },
1348*4882a593Smuzhiyun { "MDCNFG_DCAC0", 0x48000000, 3, 0x00000003, 'd', "Column address bits for partition pair 0/1" },
1349*4882a593Smuzhiyun { "MDCNFG_DRAC0", 0x48000000, 5, 0x00000003, 'd', "Row address bits for partition pair 0/1" },
1350*4882a593Smuzhiyun { "MDCNFG_DNB0", 0x48000000, 7, 0x00000001, 'd', "Banks in partition pair 0/1 (0=2, 1=4)" },
1351*4882a593Smuzhiyun { "MDCNFG_DTC0", 0x48000000, 8, 0x00000003, 'd', "Timing Category for partition pair 0/1" },
1352*4882a593Smuzhiyun { "MDCNFG_DADDR0", 0x48000000,10, 0x00000001, 'd', "Use alternate addressing for partition pair 0/1" },
1353*4882a593Smuzhiyun { "MDCNFG_DLATCH0", 0x48000000,11, 0x00000001, 'd', "Return data latching scheme for partition pair 0/1" },
1354*4882a593Smuzhiyun { "MDCNFG_DSA11110",0x48000000,12, 0x00000001, 'd', "use SA1111 address muxing for partition pair 0/1" },
1355*4882a593Smuzhiyun { "MDCNFG_DE2", 0x48000000,16, 0x00000001, 'd', "SDRAM enable for partition 2" },
1356*4882a593Smuzhiyun { "MDCNFG_DE3", 0x48000000,17, 0x00000001, 'd', "SDRAM enable for partition 3" },
1357*4882a593Smuzhiyun { "MDCNFG_DWID2", 0x48000000,18, 0x00000001, 'd', "SDRAM data width (0=32, 1=16)" },
1358*4882a593Smuzhiyun { "MDCNFG_DCAC2", 0x48000000,19, 0x00000003, 'd', "Column address bits for partition pair 2/3" },
1359*4882a593Smuzhiyun { "MDCNFG_DRAC2", 0x48000000,21, 0x00000003, 'd', "Row address bits for partition pair 2/3" },
1360*4882a593Smuzhiyun { "MDCNFG_DNB2", 0x48000000,23, 0x00000001, 'd', "Banks in partition pair 2/3 (0=2, 1=4)" },
1361*4882a593Smuzhiyun { "MDCNFG_DTC2", 0x48000000,24, 0x00000003, 'd', "Timing Category for partition pair 2/3" },
1362*4882a593Smuzhiyun { "MDCNFG_DADDR2", 0x48000000,26, 0x00000001, 'd', "Use alternate addressing for partition pair 2/3" },
1363*4882a593Smuzhiyun { "MDCNFG_DLATCH2", 0x48000000,27, 0x00000001, 'd', "Return data latching scheme for partition pair 2/3" },
1364*4882a593Smuzhiyun { "MDCNFG_DSA11112",0x48000000,28, 0x00000001, 'd', "use SA1111 address muxing for partition pair 2/3" },
1365*4882a593Smuzhiyun
1366*4882a593Smuzhiyun { "MDREFR", 0x48000004, 0, 0xffffffff, 'x', "SDRAM Refresh Configuration Register (6-15)" },
1367*4882a593Smuzhiyun { "MDREFR_DRI", 0x48000004, 0, 0x00000fff, 'x', "SDRAM Refresh intervall, all paritions" },
1368*4882a593Smuzhiyun { "MDREFR_E0PIN", 0x48000004,12, 0x00000001, 'x', "SDRAM Clock Enable Pin 0 Level" },
1369*4882a593Smuzhiyun { "MDREFR_K0RUN", 0x48000004,13, 0x00000001, 'x', "SDRAM Clock Run Pin 0" },
1370*4882a593Smuzhiyun { "MDREFR_K0DB2", 0x48000004,14, 0x00000001, 'x', "SDRAM Clock Pin 0 Divide/2" },
1371*4882a593Smuzhiyun { "MDREFR_E1PIN", 0x48000004,15, 0x00000001, 'x', "SDRAM Clock Enable Pin 1 Level" },
1372*4882a593Smuzhiyun { "MDREFR_K1RUN", 0x48000004,16, 0x00000001, 'x', "SDRAM Clock Run Pin 1" },
1373*4882a593Smuzhiyun { "MDREFR_K1DB2", 0x48000004,17, 0x00000001, 'x', "SDRAM Clock Pin 1 Divide/2" },
1374*4882a593Smuzhiyun { "MDREFR_K2RUN", 0x48000004,18, 0x00000001, 'x', "SDRAM Clock Run Pin 2" },
1375*4882a593Smuzhiyun { "MDREFR_K2DB2", 0x48000004,19, 0x00000001, 'x', "SDRAM Clock Pin 2 Divide/2" },
1376*4882a593Smuzhiyun { "MDREFR_APD", 0x48000004,20, 0x00000001, 'x', "SDRAM Auto Power Down enable" },
1377*4882a593Smuzhiyun { "MDREFR_SLFRSH", 0x48000004,22, 0x00000001, 'x', "SDRAM Self-Refresh" },
1378*4882a593Smuzhiyun { "MDREFR_K0FREE", 0x48000004,23, 0x00000001, 'x', "SDRAM Free Running Control for SDCLK0" },
1379*4882a593Smuzhiyun { "MDREFR_K1FREE", 0x48000004,24, 0x00000001, 'x', "SDRAM Free Running Control for SDCLK1" },
1380*4882a593Smuzhiyun { "MDREFR_K2FREE", 0x48000004,25, 0x00000001, 'x', "SDRAM Free Running Control for SDCLK2" },
1381*4882a593Smuzhiyun
1382*4882a593Smuzhiyun { "MSC0", 0x48000008, 0, 0xffffffff, 'x', "Asynchronous Static Memory Control Register 0 (6-45)" },
1383*4882a593Smuzhiyun { "MSC0_RT0", 0x48000008, 0, 0x00000007, 'd', "nCS[0] ROM Type" },
1384*4882a593Smuzhiyun { "MSC0_RBW0", 0x48000008, 3, 0x00000001, 'd', "nCS[0] ROM Bus Width (1=16bit)" },
1385*4882a593Smuzhiyun { "MSC0_RDF0", 0x48000008, 4, 0x0000000f, 'd', "nCS[0] ROM Delay First Access" },
1386*4882a593Smuzhiyun { "MSC0_RDN0", 0x48000008, 8, 0x0000000f, 'd', "nCS[0] ROM Delay Next Access" },
1387*4882a593Smuzhiyun { "MSC0_RRR0", 0x48000008,12, 0x00000007, 'd', "nCS[0] ROM/SRAM Recovery Time" },
1388*4882a593Smuzhiyun { "MSC0_RBUFF0", 0x48000008,15, 0x00000001, 'd', "nCS[0] Return Buffer Behavior (1=streaming)" },
1389*4882a593Smuzhiyun { "MSC0_RT1", 0x48000008,16, 0x00000007, 'd', "nCS[1] ROM Type" },
1390*4882a593Smuzhiyun { "MSC0_RBW1", 0x48000008,19, 0x00000001, 'd', "nCS[1] ROM Bus Width (1=16bit)" },
1391*4882a593Smuzhiyun { "MSC0_RDF1", 0x48000008,20, 0x0000000f, 'd', "nCS[1] ROM Delay First Access" },
1392*4882a593Smuzhiyun { "MSC0_RDN1", 0x48000008,24, 0x0000000f, 'd', "nCS[1] ROM Delay Next Access" },
1393*4882a593Smuzhiyun { "MSC0_RRR1", 0x48000008,28, 0x00000007, 'd', "nCS[1] ROM/SRAM Recovery Time" },
1394*4882a593Smuzhiyun { "MSC0_RBUFF1", 0x48000008,31, 0x00000001, 'd', "nCS[1] Return Buffer Behavior (1=streaming)" },
1395*4882a593Smuzhiyun
1396*4882a593Smuzhiyun { "MSC1", 0x4800000C, 0, 0xffffffff, 'x', "Asynchronous Static Memory Control Register 1 (6-45)" },
1397*4882a593Smuzhiyun { "MSC1_RT2", 0x4800000C, 0, 0x00000007, 'd', "nCS[2] ROM Type" },
1398*4882a593Smuzhiyun { "MSC1_RBW2", 0x4800000C, 3, 0x00000001, 'd', "nCS[2] ROM Bus Width (1=16bit)" },
1399*4882a593Smuzhiyun { "MSC1_RDF2", 0x4800000C, 4, 0x0000000f, 'd', "nCS[2] ROM Delay First Access" },
1400*4882a593Smuzhiyun { "MSC1_RDN2", 0x4800000C, 8, 0x0000000f, 'd', "nCS[2] ROM Delay Next Access" },
1401*4882a593Smuzhiyun { "MSC1_RRR2", 0x4800000C,12, 0x00000007, 'd', "nCS[2] ROM/SRAM Recovery Time" },
1402*4882a593Smuzhiyun { "MSC1_RBUFF2", 0x4800000C,15, 0x00000001, 'd', "nCS[2] Return Buffer Behavior (1=streaming)" },
1403*4882a593Smuzhiyun { "MSC1_RT3", 0x4800000C,16, 0x00000007, 'd', "nCS[3] ROM Type" },
1404*4882a593Smuzhiyun { "MSC1_RBW3", 0x4800000C,19, 0x00000001, 'd', "nCS[3] ROM Bus Width (1=16bit)" },
1405*4882a593Smuzhiyun { "MSC1_RDF3", 0x4800000C,20, 0x0000000f, 'd', "nCS[3] ROM Delay First Access" },
1406*4882a593Smuzhiyun { "MSC1_RDN3", 0x4800000C,24, 0x0000000f, 'd', "nCS[3] ROM Delay Next Access" },
1407*4882a593Smuzhiyun { "MSC1_RRR3", 0x4800000C,28, 0x00000007, 'd', "nCS[3] ROM/SRAM Recovery Time" },
1408*4882a593Smuzhiyun { "MSC1_RBUFF3", 0x4800000C,31, 0x00000001, 'd', "nCS[3] Return Buffer Behavior (1=streaming)" },
1409*4882a593Smuzhiyun
1410*4882a593Smuzhiyun { "MSC2", 0x48000010, 0, 0xffffffff, 'x', "Asynchronous Static Memory Control Register 2 (6-45)" },
1411*4882a593Smuzhiyun { "MSC2_RT4", 0x48000010, 0, 0x00000007, 'd', "nCS[4] ROM Type" },
1412*4882a593Smuzhiyun { "MSC2_RBW4", 0x48000010, 3, 0x00000001, 'd', "nCS[4] ROM Bus Width (1=16bit)" },
1413*4882a593Smuzhiyun { "MSC2_RDF4", 0x48000010, 4, 0x0000000f, 'd', "nCS[4] ROM Delay First Access" },
1414*4882a593Smuzhiyun { "MSC2_RDN4", 0x48000010, 8, 0x0000000f, 'd', "nCS[4] ROM Delay Next Access" },
1415*4882a593Smuzhiyun { "MSC2_RRR4", 0x48000010,12, 0x00000007, 'd', "nCS[4] ROM/SRAM Recovery Time" },
1416*4882a593Smuzhiyun { "MSC2_RBUFF4", 0x48000010,15, 0x00000001, 'd', "nCS[4] Return Buffer Behavior (1=streaming)" },
1417*4882a593Smuzhiyun { "MSC2_RT5", 0x48000010,16, 0x00000007, 'd', "nCS[5] ROM Type" },
1418*4882a593Smuzhiyun { "MSC2_RBW5", 0x48000010,19, 0x00000001, 'd', "nCS[5] ROM Bus Width (1=16bit)" },
1419*4882a593Smuzhiyun { "MSC2_RDF5", 0x48000010,20, 0x0000000f, 'd', "nCS[5] ROM Delay First Access" },
1420*4882a593Smuzhiyun { "MSC2_RDN5", 0x48000010,24, 0x0000000f, 'd', "nCS[5] ROM Delay Next Access" },
1421*4882a593Smuzhiyun { "MSC2_RRR5", 0x48000010,28, 0x00000007, 'd', "nCS[5] ROM/SRAM Recovery Time" },
1422*4882a593Smuzhiyun { "MSC2_RBUFF5", 0x48000010,31, 0x00000001, 'd', "nCS[5] Return Buffer Behavior (1=streaming)" },
1423*4882a593Smuzhiyun
1424*4882a593Smuzhiyun { "MECR", 0x48000014, 0, 0xffffffff, 'x', "Expansion Memory Configuration Register (6-61)" },
1425*4882a593Smuzhiyun { "MECR_NOS", 0x48000014, 0, 0x00000001, 'x', "Number of Sockets (1=2 Sockets)" },
1426*4882a593Smuzhiyun { "MECR_CIT", 0x48000014, 1, 0x00000001, 'x', "Card inserted" },
1427*4882a593Smuzhiyun
1428*4882a593Smuzhiyun { "SXCNFG", 0x4800001C, 0, 0xffffffff, 'x', "Synchronous Static Memory Configuration Register (6-33)" },
1429*4882a593Smuzhiyun { "SXCNFG_SXEN0", 0x4800001C, 0, 0x00000001, 'x', "Partition 0 enabled as SX memory" },
1430*4882a593Smuzhiyun { "SXCNFG_SXEN1", 0x4800001C, 1, 0x00000001, 'x', "Partition 1 enabled as SX memory" },
1431*4882a593Smuzhiyun { "SXCNFG_SXCL0", 0x4800001C, 2, 0x00000007, 'x', "Partition 0/1 CAS Latency" },
1432*4882a593Smuzhiyun { "SXCNFG_SXRL0", 0x4800001C, 5, 0x00000007, 'x', "Partition 0/1 RAS Latency" },
1433*4882a593Smuzhiyun { "SXCNFG_SXRA0", 0x4800001C, 8, 0x00000003, 'x', "Partition 0/1 row address bit count" },
1434*4882a593Smuzhiyun { "SXCNFG_SXCA0", 0x4800001C,10, 0x00000003, 'x', "Partition 0/1 column address bit count" },
1435*4882a593Smuzhiyun { "SXCNFG_SXTP0", 0x4800001C,12, 0x00000003, 'x', "Partition 0/1 memory type" },
1436*4882a593Smuzhiyun { "SXCNFG_SXLATCH0",0x4800001C,14, 0x00000001, 'x', "Partition 0/1 return data with return clock" },
1437*4882a593Smuzhiyun { "SXCNFG_SXEN2", 0x4800001C,16, 0x00000001, 'x', "Partition 2 enabled as SX memory" },
1438*4882a593Smuzhiyun { "SXCNFG_SXEN3", 0x4800001C,17, 0x00000001, 'x', "Partition 3 enabled as SX memory" },
1439*4882a593Smuzhiyun { "SXCNFG_SXCL2", 0x4800001C,18, 0x00000007, 'x', "Partition 2/3 CAS Latency" },
1440*4882a593Smuzhiyun { "SXCNFG_SXRL2", 0x4800001C,21, 0x00000007, 'x', "Partition 2/3 RAS Latency" },
1441*4882a593Smuzhiyun { "SXCNFG_SXRA2", 0x4800001C,24, 0x00000003, 'x', "Partition 2/3 row address bit count" },
1442*4882a593Smuzhiyun { "SXCNFG_SXCA2", 0x4800001C,26, 0x00000003, 'x', "Partition 2/3 column address bit count" },
1443*4882a593Smuzhiyun { "SXCNFG_SXTP2", 0x4800001C,28, 0x00000003, 'x', "Partition 2/3 memory type" },
1444*4882a593Smuzhiyun { "SXCNFG_SXLATCH2",0x4800001C,30, 0x00000001, 'x', "Partition 2/3 return data with return clock" },
1445*4882a593Smuzhiyun
1446*4882a593Smuzhiyun { "SXMRS", 0x48000024, 0, 0xffffffff, 'x', "MRS value to be written to SX Memory (6-38)" },
1447*4882a593Smuzhiyun
1448*4882a593Smuzhiyun { "MCMEM0", 0x48000028, 0, 0xffffffff, 'x', "MEM Control for PCMCIA Socket 0 (6-58)" },
1449*4882a593Smuzhiyun { "MCMEM0_SET", 0x48000028, 0, 0x0000007f, 'd', "Address set time" },
1450*4882a593Smuzhiyun { "MCMEM0_ASST", 0x48000028, 7, 0x0000001f, 'd', "Command assertion time" },
1451*4882a593Smuzhiyun { "MCMEM0_HOLD", 0x48000028,14, 0x0000003f, 'd', "Address hold time" },
1452*4882a593Smuzhiyun
1453*4882a593Smuzhiyun { "MCMEM1", 0x4800002C, 0, 0xffffffff, 'x', "MEM Control for PCMCIA Socket 1 (6-58)" },
1454*4882a593Smuzhiyun { "MCMEM1_SET", 0x4800002C, 0, 0x0000007f, 'd', "Address set time" },
1455*4882a593Smuzhiyun { "MCMEM1_ASST", 0x4800002C, 7, 0x0000001f, 'd', "Command assertion time" },
1456*4882a593Smuzhiyun { "MCMEM1_HOLD", 0x4800002C,14, 0x0000003f, 'd', "Address hold time" },
1457*4882a593Smuzhiyun
1458*4882a593Smuzhiyun { "MCATT0", 0x48000030, 0, 0xffffffff, 'x', "ATT Control for PCMCIA Socket 0 (6-59)" },
1459*4882a593Smuzhiyun { "MCATT0_SET", 0x48000030, 0, 0x0000007f, 'd', "Address set time" },
1460*4882a593Smuzhiyun { "MCATT0_ASST", 0x48000030, 7, 0x0000001f, 'd', "Command assertion time" },
1461*4882a593Smuzhiyun { "MCATT0_HOLD", 0x48000030,14, 0x0000003f, 'd', "Address hold time" },
1462*4882a593Smuzhiyun
1463*4882a593Smuzhiyun { "MCATT1", 0x48000034, 0, 0xffffffff, 'x', "ATT Control for PCMCIA Socket 1 (6-59)" },
1464*4882a593Smuzhiyun { "MCATT1_SET", 0x48000034, 0, 0x0000007f, 'd', "Address set time" },
1465*4882a593Smuzhiyun { "MCATT1_ASST", 0x48000034, 7, 0x0000001f, 'd', "Command assertion time" },
1466*4882a593Smuzhiyun { "MCATT1_HOLD", 0x48000034,14, 0x0000003f, 'd', "Address hold time" },
1467*4882a593Smuzhiyun
1468*4882a593Smuzhiyun { "MCIO0", 0x48000038, 0, 0xffffffff, 'x', "I/O Control for PCMCIA Socket 0 (6-59)" },
1469*4882a593Smuzhiyun { "MCIO0_SET", 0x48000038, 0, 0x0000007f, 'd', "Address set time" },
1470*4882a593Smuzhiyun { "MCIO0_ASST", 0x48000038, 7, 0x0000001f, 'd', "Command assertion time" },
1471*4882a593Smuzhiyun { "MCIO0_HOLD", 0x48000038,14, 0x0000003f, 'd', "Address hold time" },
1472*4882a593Smuzhiyun
1473*4882a593Smuzhiyun { "MCIO1", 0x4800003C, 0, 0xffffffff, 'x', "I/O Control for PCMCIA Socket 1 (6-59)" },
1474*4882a593Smuzhiyun { "MCIO1_SET", 0x4800003C, 0, 0x0000007f, 'd', "Address set time" },
1475*4882a593Smuzhiyun { "MCIO1_ASST", 0x4800003C, 7, 0x0000001f, 'd', "Command assertion time" },
1476*4882a593Smuzhiyun { "MCIO1_HOLD", 0x4800003C,14, 0x0000003f, 'd', "Address hold time" },
1477*4882a593Smuzhiyun
1478*4882a593Smuzhiyun { "MDMRS", 0x48000040, 0, 0xffffffff, 'x', "SDRAM Mode Register Set Configuration Register (6-12)" },
1479*4882a593Smuzhiyun { "MDMRS_MDBL0", 0x48000040, 0, 0x00000007, 'x', "SDRAM Partition 0/1 burst length" },
1480*4882a593Smuzhiyun { "MDMRS_MDADD0", 0x48000040, 3, 0x00000001, 'x', "SDRAM Partition 0/1 burst type" },
1481*4882a593Smuzhiyun { "MDMRS_MDCL0", 0x48000040, 4, 0x00000007, 'x', "SDRAM Partition 0/1 CAS latency" },
1482*4882a593Smuzhiyun { "MDMRS_MDMRS0", 0x48000040, 7, 0x000000ff, 'x', "MRS value to be written to SDRAM Partition 0/1" },
1483*4882a593Smuzhiyun { "MDMRS_MDBL2", 0x48000040,16, 0x00000007, 'x', "SDRAM Partition 2/3 burst length" },
1484*4882a593Smuzhiyun { "MDMRS_MDADD2", 0x48000040,19, 0x00000001, 'x', "SDRAM Partition 2/3 burst type" },
1485*4882a593Smuzhiyun { "MDMRS_MDCL2", 0x48000040,20, 0x00000007, 'x', "SDRAM Partition 2/3 CAS latency" },
1486*4882a593Smuzhiyun { "MDMRS_MDMRS2", 0x48000040,23, 0x000000ff, 'x', "MRS value to be written to SDRAM Partition 2/3" },
1487*4882a593Smuzhiyun
1488*4882a593Smuzhiyun { "BOOTDEF", 0x48000044, 0, 0xffffffff, 'x', "Boot Time Defaults (6-73)" },
1489*4882a593Smuzhiyun { "BOOTDEF_BOOTSEL",0x48000044, 0, 0x00000007, 'x', "Boot Configuration at BOOT_SEL pins" },
1490*4882a593Smuzhiyun { "BOOTDEF_PKGTYPE",0x48000044, 3, 0x00000001, 'x', "Processor type, 1 for PXA250" },
1491*4882a593Smuzhiyun
1492*4882a593Smuzhiyun { "MDMRSLP", 0x48000058, 0, 0xffffffff, 'x', "Low-Power SDRAM Mode Register Set Configuration Register (6-14)" },
1493*4882a593Smuzhiyun // TODO
1494*4882a593Smuzhiyun
1495*4882a593Smuzhiyun
1496*4882a593Smuzhiyun
1497*4882a593Smuzhiyun { "MMC_STRPCL", 0x41100000, 0, 0xffffffff, 'x', "MMC Start/Stop Clock (15-23)" },
1498*4882a593Smuzhiyun
1499*4882a593Smuzhiyun { "MMC_STAT", 0x41100004, 0, 0xffffffff, 'x', "MMC Status Register (15-24)" },
1500*4882a593Smuzhiyun { "MMC_STAT_READ_TIME_OUT", 0x41100004, 0, 0x00000001, 'x', "Read Time Out" },
1501*4882a593Smuzhiyun { "MMC_STAT_TIME_OUT_RESP", 0x41100004, 1, 0x00000001, 'x', "Time Out Response" },
1502*4882a593Smuzhiyun { "MMC_STAT_CRC_WRITE_ERROR", 0x41100004, 2, 0x00000001, 'x', "CRC Write Error" },
1503*4882a593Smuzhiyun { "MMC_STAT_CRC_READ_ERR", 0x41100004, 3, 0x00000001, 'x', "CRC Read Error" },
1504*4882a593Smuzhiyun { "MMC_STAT_SPI_READ_ERR_TKN", 0x41100004, 4, 0x00000001, 'x', "SPI Read Error Token" },
1505*4882a593Smuzhiyun { "MMC_STAT_RES_CRC_ERR", 0x41100004, 5, 0x00000001, 'x', "Response CRC Error" },
1506*4882a593Smuzhiyun { "MMC_STAT_XMIT_FIFO_EMPTY", 0x41100004, 6, 0x00000001, 'x', "Transmit FIFO Empty" },
1507*4882a593Smuzhiyun { "MMC_STAT_RECV_FIFO_EMPTY", 0x41100004, 7, 0x00000001, 'x', "Receive FIFO Empty" },
1508*4882a593Smuzhiyun { "MMC_STAT_CLK_EN", 0x41100004, 8, 0x00000001, 'x', "Clock Enabled" },
1509*4882a593Smuzhiyun { "MMC_STAT_DATA_TRAN_DONE", 0x41100004,11, 0x00000001, 'x', "Data Transmission Done" },
1510*4882a593Smuzhiyun { "MMC_STAT_PRG_DONE", 0x41100004,12, 0x00000001, 'x', "Program Done" },
1511*4882a593Smuzhiyun { "MMC_STAT_END_CMD_RES", 0x41100004,13, 0x00000001, 'x', "End Command Response" },
1512*4882a593Smuzhiyun
1513*4882a593Smuzhiyun { "MMC_CLKRT", 0x41100008, 0, 0xffffffff, 'x', "MMC Clock Read Timeout Register (15-26)" },
1514*4882a593Smuzhiyun { "MMC_CLK_RATE", 0x41100008, 0, 0x00000007, 'x', "Read Time Out bitmask" },
1515*4882a593Smuzhiyun
1516*4882a593Smuzhiyun { "MMC_SPI", 0x4110000c, 0, 0xffffffff, 'x', "MMC SPI mode (15-27)" },
1517*4882a593Smuzhiyun { "MMC_SPI_EN", 0x4110000c, 0, 0x00000001, 'x', "SPI mode enabled" },
1518*4882a593Smuzhiyun { "MMC_SPI_CRC_ON", 0x4110000c, 1, 0x00000001, 'x', "CRC generation enabled" },
1519*4882a593Smuzhiyun { "MMC_SPI_CS_EN", 0x4110000c, 2, 0x00000001, 'x', "SPI chip select enabled" },
1520*4882a593Smuzhiyun { "MMC_SPI_CS_ADDRESS", 0x4110000c, 3, 0x00000001, 'x', "CS0 enabled" },
1521*4882a593Smuzhiyun
1522*4882a593Smuzhiyun { "MMC_CMDAT", 0x41100010, 0, 0xffffffff, 'x', "MMC Command Data (15-28)" },
1523*4882a593Smuzhiyun { "MMC_CMDAT_RF", 0x41100010, 0, 0x00000003, 'x', "response format" },
1524*4882a593Smuzhiyun { "MMC_CMDAT_DATA_EN", 0x41100010, 2, 0x00000001, 'x', "current cmd includes data transfer" },
1525*4882a593Smuzhiyun { "MMC_CMDAT_WRITE", 0x41100010, 3, 0x00000001, 'x', "data transfer is a write" },
1526*4882a593Smuzhiyun { "MMC_CMDAT_STREAM", 0x41100010, 4, 0x00000001, 'x', "data transfer is in stream mode" },
1527*4882a593Smuzhiyun { "MMC_CMDAT_BUSY", 0x41100010, 5, 0x00000001, 'x', "busy signal is expected after data transfer" },
1528*4882a593Smuzhiyun { "MMC_CMDAT_INIT", 0x41100010, 6, 0x00000001, 'x', "precede cmd with 80 clocks" },
1529*4882a593Smuzhiyun { "MMC_CMDAT_DMA_EN", 0x41100010, 7, 0x00000001, 'x', "enable DMA mode" },
1530*4882a593Smuzhiyun
1531*4882a593Smuzhiyun { "MMC_RESTO", 0x41100014, 0, 0xffffffff, 'x', "MMC Response Time Out (15-29)" },
1532*4882a593Smuzhiyun { "MMC_RESTO_TO", 0x41100014, 0, 0x0000007f, 'd', "clocks before a response time out" },
1533*4882a593Smuzhiyun
1534*4882a593Smuzhiyun { "MMC_RDTO", 0x41100018, 0, 0xffffffff, 'x', "MMC Read Time Out (15-29)" },
1535*4882a593Smuzhiyun { "MMC_RDTO_TO", 0x41100018, 0, 0x0000ffff, 'd', "time until read time out" },
1536*4882a593Smuzhiyun
1537*4882a593Smuzhiyun { "MMC_BLKLEN", 0x4110001C, 0, 0xffffffff, 'x', "MMC Block Len Register (15-30)" },
1538*4882a593Smuzhiyun { "MMC_BLKLEN_LEN", 0x4110001C, 0, 0x000003ff, 'd', "Number of bytes in the block" },
1539*4882a593Smuzhiyun
1540*4882a593Smuzhiyun { "MMC_NOB", 0x41100020, 0, 0xffffffff, 'x', "MMC Block Number Register (15-30)" },
1541*4882a593Smuzhiyun { "MMC_NOB_N", 0x41100020, 0, 0x0000ffff, 'd', "number of blocks" },
1542*4882a593Smuzhiyun
1543*4882a593Smuzhiyun { "MMC_PRTBUF", 0x41100024, 0, 0xffffffff, 'x', "MMC Partial Buffer Register (15-31)" },
1544*4882a593Smuzhiyun { "MMC_PRTBUF_FULL", 0x41100024, 0, 0x00000001, 'x', "Buffer is partially full" },
1545*4882a593Smuzhiyun
1546*4882a593Smuzhiyun { "MMC_IMASK", 0x41100028, 0, 0xffffffff, 'x', "MMC Interrupt Mask Register (15-31)" },
1547*4882a593Smuzhiyun { "MMC_IMASK_DATATRAN", 0x41100028, 0, 0x00000001, 'x', "Data Transfer Done masked" },
1548*4882a593Smuzhiyun { "MMC_IMASK_PRGDONE", 0x41100028, 1, 0x00000001, 'x', "Programming Done masked" },
1549*4882a593Smuzhiyun { "MMC_IMASK_ENDCMD", 0x41100028, 2, 0x00000001, 'x', "End Command Response masked" },
1550*4882a593Smuzhiyun { "MMC_IMASK_STOPCMD", 0x41100028, 3, 0x00000001, 'x', "Ready for Stop Transaction Command masked" },
1551*4882a593Smuzhiyun { "MMC_IMASK_CLOCKOFF", 0x41100028, 4, 0x00000001, 'x', "Clock Is Off masked" },
1552*4882a593Smuzhiyun { "MMC_IMASK_RXFIFO", 0x41100028, 5, 0x00000001, 'x', "Receive FIFO Read Request masked" },
1553*4882a593Smuzhiyun { "MMC_IMASK_TXFIFO", 0x41100028, 6, 0x00000001, 'x', "Transmit FIFO Write Request masked" },
1554*4882a593Smuzhiyun
1555*4882a593Smuzhiyun { "MMC_IREG", 0x4110002c, 0, 0xffffffff, 'x', "MMC Interrupt Register (15-33)" },
1556*4882a593Smuzhiyun { "MMC_IREG_DATATRAN", 0x4110002c, 0, 0x00000001, 'x', "Data Transfer Done or Read TimeOut occured" },
1557*4882a593Smuzhiyun { "MMC_IREG_PRGDONE", 0x4110002c, 1, 0x00000001, 'x', "Card has finished programming" },
1558*4882a593Smuzhiyun { "MMC_IREG_ENDCMD", 0x4110002c, 2, 0x00000001, 'x', "MMC has received response or Response TimeOut" },
1559*4882a593Smuzhiyun { "MMC_IREG_STOPCMD", 0x4110002c, 3, 0x00000001, 'x', "MMC is ready for the Stop Transaction Command" },
1560*4882a593Smuzhiyun { "MMC_IREG_CLOCKOFF", 0x4110002c, 4, 0x00000001, 'x', "MMC clock has been turned off" },
1561*4882a593Smuzhiyun { "MMC_IREG_RXFIFO", 0x4110002c, 5, 0x00000001, 'x', "Request for data read from receive FIFO" },
1562*4882a593Smuzhiyun { "MMC_IREG_TXFIFO", 0x4110002c, 6, 0x00000001, 'x', "Request to data write to transmit FIFO" },
1563*4882a593Smuzhiyun
1564*4882a593Smuzhiyun { "MMC_CMD", 0x41100030, 0, 0xffffffff, 'x', "MMC Command Register (15-34)" },
1565*4882a593Smuzhiyun { "MMC_CMD_INDEX", 0x41100030, 0, 0x0000003f, 'x', "command index" },
1566*4882a593Smuzhiyun
1567*4882a593Smuzhiyun { "MMC_ARGH", 0x41100034, 0, 0xffffffff, 'x', "MMC Higher Argument Register (15-36)" },
1568*4882a593Smuzhiyun { "MMC_ARGH_ARG", 0x41100034, 0, 0x0000ffff, 'x', "upper 16 bits of command argument" },
1569*4882a593Smuzhiyun
1570*4882a593Smuzhiyun { "MMC_ARGL", 0x41100038, 0, 0xffffffff, 'x', "MMC Lower Argument Register (15-36)" },
1571*4882a593Smuzhiyun { "MMC_ARGL_ARG", 0x41100038, 0, 0x0000ffff, 'x', "upper 16 bits of command argument" },
1572*4882a593Smuzhiyun
1573*4882a593Smuzhiyun
1574*4882a593Smuzhiyun #if defined(CONFIG_ARCH_PXA_IDP) || defined(CONFIG_ARCH_RAMSES)
1575*4882a593Smuzhiyun // CS5+0x03C00000 CPLD 0x14000000
1576*4882a593Smuzhiyun // CS1 Alt-Flash 0x04000000
1577*4882a593Smuzhiyun // CS0 Flash 0x00000000
1578*4882a593Smuzhiyun
1579*4882a593Smuzhiyun { "CPLD_PWR", 0x17C00004, 0, 0x000000ff, 'x', "CPLD_PERIPH_PWR" },
1580*4882a593Smuzhiyun { "CPLD_PWR_CORE", 0x17C00004, 0, 0x00000001, 'd', "Variable core enable - latch value in first" },
1581*4882a593Smuzhiyun #ifdef CONFIG_ARCH_PXA_IDP
1582*4882a593Smuzhiyun { "CPLD_PWR_MQ", 0x17C00004, 2, 0x00000001, 'd', "MQ1132 power switch" },
1583*4882a593Smuzhiyun #else
1584*4882a593Smuzhiyun { "CPLD_PWR_SL811HS", 0x17C00004, 2, 0x00000001, 'd', "SL811HS power switch" },
1585*4882a593Smuzhiyun #endif
1586*4882a593Smuzhiyun { "CPLD_PWR_PER", 0x17C00004, 3, 0x00000001, 'd', "peripheral power enable" },
1587*4882a593Smuzhiyun { "CPLD_PWR_RST", 0x17C00004, 4, 0x00000001, 'd', "peripheral reset" },
1588*4882a593Smuzhiyun
1589*4882a593Smuzhiyun { "CPLD_LED", 0x17C00008, 0, 0x000000ff, 'x', "CPLD_LED_CONTROL" },
1590*4882a593Smuzhiyun { "CPLD_LED_CIR", 0x17C00008, 0, 0x00000001, 'd', "CIR" },
1591*4882a593Smuzhiyun { "CPLD_LED_HB", 0x17C00008, 5, 0x00000001, 'd', "red LED (0=on)" },
1592*4882a593Smuzhiyun { "CPLD_LED_BUSY", 0x17C00008, 6, 0x00000001, 'd', "green LED (0=on)" },
1593*4882a593Smuzhiyun { "CPLD_LED_FLASH", 0x17C00008, 7, 0x00000001, 'd', "red LED flash enable" },
1594*4882a593Smuzhiyun
1595*4882a593Smuzhiyun { "CPLD_KBD_COL_HIGH", 0x17C0000C, 0, 0x000000ff, 'x', "CPLD" },
1596*4882a593Smuzhiyun
1597*4882a593Smuzhiyun { "CPLD_KBD_COL_LOW", 0x17C00010, 0, 0x000000ff, 'x', "CPLD" },
1598*4882a593Smuzhiyun
1599*4882a593Smuzhiyun { "CPLD_PCCARD_EN", 0x17C00014, 0, 0x000000ff, 'x', "CPLD PC-Card Enable" },
1600*4882a593Smuzhiyun { "CPLD_PCC0_ENABLE", 0x17C00014, 0, 0x00000001, 'd', "PC-Card 0 enable" },
1601*4882a593Smuzhiyun { "CPLD_PCC1_ENABLE", 0x17C00014, 1, 0x00000001, 'd', "PC-Card 1 enable" },
1602*4882a593Smuzhiyun { "CPLD_PCC0_RESET", 0x17C00014, 6, 0x00000001, 'd', "PC-Card 0 reset" },
1603*4882a593Smuzhiyun { "CPLD_PCC1_RESET", 0x17C00014, 7, 0x00000001, 'd', "PC-Card 1 reset" },
1604*4882a593Smuzhiyun
1605*4882a593Smuzhiyun /*
1606*4882a593Smuzhiyun { "CPLD_GPIOH_DIR", 0x17C00018, 0, 0xffffffff, 'x', "CPLD" },
1607*4882a593Smuzhiyun { "CPLD_GPIOH_VALUE", 0x17C0001C, 0, 0xffffffff, 'x', "CPLD" },
1608*4882a593Smuzhiyun { "CPLD_GPIOL_DIR", 0x17C00020, 0, 0xffffffff, 'x', "CPLD" },
1609*4882a593Smuzhiyun { "CPLD_GPIOL_VALUE", 0x17C00024, 0, 0xffffffff, 'x', "CPLD" },
1610*4882a593Smuzhiyun
1611*4882a593Smuzhiyun WHEN "00110" =>
1612*4882a593Smuzhiyun data(7) <= l3_data_out; -- L3 IIS control bus - direction of data bit
1613*4882a593Smuzhiyun data(6) <= '0';
1614*4882a593Smuzhiyun data(5) <= '0';
1615*4882a593Smuzhiyun data(4) <= '0';
1616*4882a593Smuzhiyun data(3) <= '0';
1617*4882a593Smuzhiyun data(2) <= '0';
1618*4882a593Smuzhiyun data(1) <= gpslow_out(1); -- direction of pld_gpio_09
1619*4882a593Smuzhiyun data(0) <= gpslow_out(0); -- direction of pld_gpio_08
1620*4882a593Smuzhiyun
1621*4882a593Smuzhiyun WHEN "00111" => -- gpio on async bus
1622*4882a593Smuzhiyun data(7) <= l3_data_io; -- L3 IIS control bus - always reads pin
1623*4882a593Smuzhiyun data(6) <= l3_clk; -- L3 IIS control bus - read back clock
1624*4882a593Smuzhiyun data(5) <= l3_mode; -- L3 IIS control bus - read back mode
1625*4882a593Smuzhiyun data(4) <= '0';
1626*4882a593Smuzhiyun data(3) <= '0';
1627*4882a593Smuzhiyun data(2) <= '0';
1628*4882a593Smuzhiyun data(1) <= gpslow_io(1); -- gpio on async bus
1629*4882a593Smuzhiyun data(0) <= gpslow_io(0); -- gpio on async bus
1630*4882a593Smuzhiyun
1631*4882a593Smuzhiyun WHEN "01000" =>
1632*4882a593Smuzhiyun data <= gp_out; -- direction of pld_gpio_07 through 00
1633*4882a593Smuzhiyun
1634*4882a593Smuzhiyun WHEN "01001" => -- gpio on high speed bus
1635*4882a593Smuzhiyun data <= gp_io;
1636*4882a593Smuzhiyun */
1637*4882a593Smuzhiyun
1638*4882a593Smuzhiyun { "CPLD_PCCARD_PWR", 0x17C00028, 0, 0x000000ff, 'x', "CPLD PC-Card Power" },
1639*4882a593Smuzhiyun { "CPLD_PCC0_PWR0", 0x17C00028, 0, 0x00000001, 'd', "PC-Card 0 Pwr 0" },
1640*4882a593Smuzhiyun { "CPLD_PCC0_PWR1", 0x17C00028, 1, 0x00000001, 'd', "PC-Card 0 Pwr 1" },
1641*4882a593Smuzhiyun { "CPLD_PCC0_PWR2", 0x17C00028, 2, 0x00000001, 'd', "PC-Card 0 Pwr 2" },
1642*4882a593Smuzhiyun { "CPLD_PCC0_PWR3", 0x17C00028, 3, 0x00000001, 'd', "PC-Card 0 Pwr 3" },
1643*4882a593Smuzhiyun { "CPLD_PCC1_PWR0", 0x17C00028, 4, 0x00000001, 'd', "PC-Card 1 Pwr 0" },
1644*4882a593Smuzhiyun { "CPLD_PCC1_PWR1", 0x17C00028, 5, 0x00000001, 'd', "PC-Card 1 Pwr 1" },
1645*4882a593Smuzhiyun { "CPLD_PCC1_PWR2", 0x17C00028, 6, 0x00000001, 'd', "PC-Card 1 Pwr 2" },
1646*4882a593Smuzhiyun { "CPLD_PCC1_PWR3", 0x17C00028, 7, 0x00000001, 'd', "PC-Card 1 Pwr 3" },
1647*4882a593Smuzhiyun
1648*4882a593Smuzhiyun { "CPLD_MISC", 0x17C0002C, 0, 0x000000ff, 'x', "CPLD_MISC_CTRL" },
1649*4882a593Smuzhiyun { "CPLD_MISC_SER1EN", 0x17C0002C, 0, 0x00000001, 'd', "RS-232 on FF UART enable" },
1650*4882a593Smuzhiyun { "CPLD_MISC_SER2EN", 0x17C0002C, 1, 0x00000001, 'd', "RS-232 on BT UART enable" },
1651*4882a593Smuzhiyun { "CPLD_MISC_SER3EN", 0x17C0002C, 2, 0x00000001, 'd', "RS-232 on ST UART enable" },
1652*4882a593Smuzhiyun { "CPLD_MISC_IRDAFIR", 0x17C0002C, 3, 0x00000001, 'd', "IrDA FIR enable" },
1653*4882a593Smuzhiyun { "CPLD_MISC_IRDAMD0", 0x17C0002C, 4, 0x00000001, 'd', "IrDA mode 0" },
1654*4882a593Smuzhiyun { "CPLD_MISC_IRDAMD1", 0x17C0002C, 5, 0x00000001, 'd', "IrDA mode 1" },
1655*4882a593Smuzhiyun #ifdef CONFIG_ARCH_PXA_IDP
1656*4882a593Smuzhiyun { "CPLD_MISC_I2SPWR", 0x17C0002C, 7, 0x00000001, 'd', "UDA1341 power switch" },
1657*4882a593Smuzhiyun #endif
1658*4882a593Smuzhiyun
1659*4882a593Smuzhiyun { "CPLD_LCD", 0x17C00030, 0, 0x000000ff, 'x', "CPLD LCD Control", },
1660*4882a593Smuzhiyun #ifdef CONFIG_ARCH_PXA_IDP
1661*4882a593Smuzhiyun { "CPLD_LCD_PWR", 0x17C00030, 0, 0x00000001, 'd', "LCD Power" },
1662*4882a593Smuzhiyun { "CPLD_LCD_BACKLIGHT", 0x17C00030, 1, 0x00000001, 'd', "LCD Backlight" },
1663*4882a593Smuzhiyun { "CPLD_LCD_VLCD", 0x17C00030, 2, 0x00000001, 'd', "LCD VLCD" },
1664*4882a593Smuzhiyun #else
1665*4882a593Smuzhiyun { "CPLD_LCD_VCC", 0x17C00030, 0, 0x00000001, 'd', "LCD VCC" },
1666*4882a593Smuzhiyun { "CPLD_LCD_DISPOFF", 0x17C00030, 2, 0x00000001, 'd', "LCD nDISPOFF" },
1667*4882a593Smuzhiyun #endif
1668*4882a593Smuzhiyun
1669*4882a593Smuzhiyun { "CPLD_FLASH", 0x17C00034, 0, 0x000000ff, 'x', "CPLD Flash Control" },
1670*4882a593Smuzhiyun { "CPLD_FLASH_WE", 0x17C00034, 0, 0x00000001, 'd', "CPLD StrataFlash Write Enable" },
1671*4882a593Smuzhiyun #ifdef CONFIG_ARCH_PXA_IDP
1672*4882a593Smuzhiyun { "CPLD_FLASH_MWE", 0x17C00034, 1, 0x00000001, 'd', "CPLD MPlus Write Enable" },
1673*4882a593Smuzhiyun { "CPLD_FLASH_MOE", 0x17C00034, 2, 0x00000001, 'd', "CPLD MPlus Output Enable" },
1674*4882a593Smuzhiyun
1675*4882a593Smuzhiyun { "CPLD_CS", 0x17C00038, 0, 0x000000ff, 'x', "CPLD Chip Select Register" },
1676*4882a593Smuzhiyun { "CPLD_CS_CS0EN", 0x17C00038, 0, 0x00000001, 'd', "CPLD Chip Select 0 Enable" },
1677*4882a593Smuzhiyun { "CPLD_CS_CS1EN", 0x17C00038, 1, 0x00000001, 'd', "CPLD Chip Select 1 Enable" },
1678*4882a593Smuzhiyun { "CPLD_CS_CS2EN", 0x17C00038, 2, 0x00000001, 'd', "CPLD Chip Select 2 Enable" },
1679*4882a593Smuzhiyun { "CPLD_CS_CS3EN", 0x17C00038, 3, 0x00000001, 'd', "CPLD Chip Select 3 Enable" },
1680*4882a593Smuzhiyun { "CPLD_CS_CS4EN", 0x17C00038, 4, 0x00000001, 'd', "CPLD Chip Select 4 Enable" },
1681*4882a593Smuzhiyun //{ "CPLD_CS_CS5EN", 0x17C00038, 4, 0x00000001, 'd', "CPLD Chip Select 5 Enable" },
1682*4882a593Smuzhiyun #endif
1683*4882a593Smuzhiyun
1684*4882a593Smuzhiyun { "CPLD_KB_ROW", 0x17C00050, 0, 0x000000ff, 'x', "CPLD" },
1685*4882a593Smuzhiyun
1686*4882a593Smuzhiyun { "CPLD_PCCARD0_STATUS", 0x17C00054, 0, 0x000000ff, 'x', "CPLD PC-Card 0 Status" },
1687*4882a593Smuzhiyun { "CPLD_PCC0_VS1", 0x17C00054, 0, 0x00000001, 'd', "PC-Card 0 VS1" },
1688*4882a593Smuzhiyun { "CPLD_PCC0_VS2", 0x17C00054, 1, 0x00000001, 'd', "PC-Card 0 VS2" },
1689*4882a593Smuzhiyun { "CPLD_PCC0_BVD1", 0x17C00054, 2, 0x00000001, 'd', "PC-Card 0 BVD1" },
1690*4882a593Smuzhiyun { "CPLD_PCC0_BVD2", 0x17C00054, 3, 0x00000001, 'd', "PC-Card 0 BVD2" },
1691*4882a593Smuzhiyun { "CPLD_PCC0_INPACK", 0x17C00054, 4, 0x00000001, 'd', "PC-Card 0 INPACK" },
1692*4882a593Smuzhiyun { "CPLD_PCC0_IRQ", 0x17C00054, 5, 0x00000001, 'd', "PC-Card 0 IRQ" },
1693*4882a593Smuzhiyun { "CPLD_PCC0_STRESET", 0x17C00054, 6, 0x00000001, 'd', "PC-Card 0 RESET" },
1694*4882a593Smuzhiyun { "CPLD_PCC0_WRPROT", 0x17C00054, 7, 0x00000001, 'd', "PC-Card 0 WRPROT" },
1695*4882a593Smuzhiyun
1696*4882a593Smuzhiyun { "CPLD_PCCARD1_STATUS", 0x17C00058, 0, 0x000000ff, 'x', "CPLD PC-Card 1 Status" },
1697*4882a593Smuzhiyun { "CPLD_PCC1_VS1", 0x17C00058, 0, 0x00000001, 'd', "PC-Card 1 VS1" },
1698*4882a593Smuzhiyun { "CPLD_PCC1_VS2", 0x17C00058, 1, 0x00000001, 'd', "PC-Card 1 VS2" },
1699*4882a593Smuzhiyun { "CPLD_PCC1_BVD1", 0x17C00058, 2, 0x00000001, 'd', "PC-Card 1 BVD1" },
1700*4882a593Smuzhiyun { "CPLD_PCC1_BVD2", 0x17C00058, 3, 0x00000001, 'd', "PC-Card 1 BVD2" },
1701*4882a593Smuzhiyun { "CPLD_PCC1_INPACK", 0x17C00058, 4, 0x00000001, 'd', "PC-Card 1 INPACK" },
1702*4882a593Smuzhiyun { "CPLD_PCC1_IRQ", 0x17C00058, 5, 0x00000001, 'd', "PC-Card 1 IRQ" },
1703*4882a593Smuzhiyun { "CPLD_PCC1_STRESET", 0x17C00058, 6, 0x00000001, 'd', "PC-Card 1 RESET" },
1704*4882a593Smuzhiyun { "CPLD_PCC1_WRPROT", 0x17C00058, 7, 0x00000001, 'd', "PC-Card 1 WRPROT" },
1705*4882a593Smuzhiyun
1706*4882a593Smuzhiyun { "CPLD_MISC_STATUS", 0x17C0005C, 0, 0x000000ff, 'x', "CPLD Misc Status" },
1707*4882a593Smuzhiyun { "CPLD_MISC_USB_D_CON", 0x17C0005C, 0, 0x00000001, 'd', "Charge status" },
1708*4882a593Smuzhiyun { "CPLD_MISC_WALL_IN", 0x17C0005C, 1, 0x00000001, 'd', "Charge status" },
1709*4882a593Smuzhiyun { "CPLD_MISC_CHG_STS", 0x17C0005C, 2, 0x00000001, 'd', "Charge status" },
1710*4882a593Smuzhiyun { "CPLD_MISC_MMC_WPROT", 0x17C0005C, 7, 0x00000001, 'd', "MMC write protect" },
1711*4882a593Smuzhiyun
1712*4882a593Smuzhiyun { "CPLD_VER_YEAR", 0x17C00060, 0, 0x000000ff, 'x', "CPLD Year" },
1713*4882a593Smuzhiyun { "CPLD_VER_MONTH", 0x17C00064, 0, 0x000000ff, 'x', "CPLD Month" },
1714*4882a593Smuzhiyun { "CPLD_VER_DAY", 0x17C00068, 0, 0x000000ff, 'x', "CPLD Day" },
1715*4882a593Smuzhiyun { "CPLD_VER_REV", 0x17C0006C, 0, 0x000000ff, 'x', "CPLD Revision" },
1716*4882a593Smuzhiyun
1717*4882a593Smuzhiyun { "CPLD_VSTAT", 0x17C0007C, 0, 0x000000ff, 'x', "CPLD Voltage Status" },
1718*4882a593Smuzhiyun #ifdef CONFIG_ARCH_PXA_IDP
1719*4882a593Smuzhiyun { "CPLD_BSTAT_V3GOOD", 0x17C0007C, 0, 0x00000001, 'x', "v3good" },
1720*4882a593Smuzhiyun #endif
1721*4882a593Smuzhiyun { "CPLD_BSTAT_BWE", 0x17C0007C, 1, 0x00000001, 'x', "bwe" },
1722*4882a593Smuzhiyun
1723*4882a593Smuzhiyun #endif
1724*4882a593Smuzhiyun
1725*4882a593Smuzhiyun #if defined(CONFIG_ARCH_RAMSES)
1726*4882a593Smuzhiyun { "UARTA_RHR", 0x0C002E00, 0, 0xffffffff, 'x', "UART A RHR/THR" },
1727*4882a593Smuzhiyun { "UARTA_IER", 0x0C002E04, 0, 0xffffffff, 'x', "UART A IER" },
1728*4882a593Smuzhiyun { "UARTA_FCR", 0x0C002E08, 0, 0xffffffff, 'x', "UART A FCR/IIR" },
1729*4882a593Smuzhiyun { "UARTA_LCR", 0x0C002E0C, 0, 0xffffffff, 'x', "UART A LCR" },
1730*4882a593Smuzhiyun { "UARTA_MCR", 0x0C002E10, 0, 0xffffffff, 'x', "UART A MCR" },
1731*4882a593Smuzhiyun { "UARTA_LSR", 0x0C002E14, 0, 0xffffffff, 'x', "UART A LSR" },
1732*4882a593Smuzhiyun { "UARTA_MSR", 0x0C002E18, 0, 0xffffffff, 'x', "UART A MSR" },
1733*4882a593Smuzhiyun { "UARTA_SPR", 0x0C002E1C, 0, 0xffffffff, 'x', "UART A SPR" },
1734*4882a593Smuzhiyun
1735*4882a593Smuzhiyun { "UARTB_RHR", 0x0C002D00, 0, 0xffffffff, 'x', "UART B RHR/THR" },
1736*4882a593Smuzhiyun { "UARTB_IER", 0x0C002D04, 0, 0xffffffff, 'x', "UART B IER" },
1737*4882a593Smuzhiyun { "UARTB_FCR", 0x0C002D08, 0, 0xffffffff, 'x', "UART B FCR/IIR" },
1738*4882a593Smuzhiyun { "UARTB_LCR", 0x0C002D0C, 0, 0xffffffff, 'x', "UART B LCR" },
1739*4882a593Smuzhiyun { "UARTB_MCR", 0x0C002D10, 0, 0xffffffff, 'x', "UART B MCR" },
1740*4882a593Smuzhiyun { "UARTB_LSR", 0x0C002D14, 0, 0xffffffff, 'x', "UART B LSR" },
1741*4882a593Smuzhiyun { "UARTB_MSR", 0x0C002D18, 0, 0xffffffff, 'x', "UART B MSR" },
1742*4882a593Smuzhiyun { "UARTB_SPR", 0x0C002D1C, 0, 0xffffffff, 'x', "UART B SPR" },
1743*4882a593Smuzhiyun
1744*4882a593Smuzhiyun { "UARTD_RHR", 0x0C002B00, 0, 0xffffffff, 'x', "UART C RHR/THR" },
1745*4882a593Smuzhiyun { "UARTD_IER", 0x0C002B04, 0, 0xffffffff, 'x', "UART C IER" },
1746*4882a593Smuzhiyun { "UARTD_FCR", 0x0C002B08, 0, 0xffffffff, 'x', "UART C FCR/IIR" },
1747*4882a593Smuzhiyun { "UARTD_LCR", 0x0C002B0C, 0, 0xffffffff, 'x', "UART C LCR" },
1748*4882a593Smuzhiyun { "UARTD_MCR", 0x0C002B10, 0, 0xffffffff, 'x', "UART C MCR" },
1749*4882a593Smuzhiyun { "UARTD_LSR", 0x0C002B14, 0, 0xffffffff, 'x', "UART C LSR" },
1750*4882a593Smuzhiyun { "UARTD_MSR", 0x0C002B18, 0, 0xffffffff, 'x', "UART C MSR" },
1751*4882a593Smuzhiyun { "UARTD_SPR", 0x0C002B1C, 0, 0xffffffff, 'x', "UART C SPR" },
1752*4882a593Smuzhiyun
1753*4882a593Smuzhiyun { "UARTD_RHR", 0x0C002700, 0, 0xffffffff, 'x', "UART D RHR/THR" },
1754*4882a593Smuzhiyun { "UARTD_IER", 0x0C002704, 0, 0xffffffff, 'x', "UART D IER" },
1755*4882a593Smuzhiyun { "UARTD_FCR", 0x0C002708, 0, 0xffffffff, 'x', "UART D FCR/IIR" },
1756*4882a593Smuzhiyun { "UARTD_LCR", 0x0C00270C, 0, 0xffffffff, 'x', "UART D LCR" },
1757*4882a593Smuzhiyun { "UARTD_MCR", 0x0C002710, 0, 0xffffffff, 'x', "UART D MCR" },
1758*4882a593Smuzhiyun { "UARTD_LSR", 0x0C002714, 0, 0xffffffff, 'x', "UART D LSR" },
1759*4882a593Smuzhiyun { "UARTD_MSR", 0x0C002718, 0, 0xffffffff, 'x', "UART D MSR" },
1760*4882a593Smuzhiyun { "UARTD_SPR", 0x0C00271C, 0, 0xffffffff, 'x', "UART D SPR" },
1761*4882a593Smuzhiyun
1762*4882a593Smuzhiyun #endif
1763*4882a593Smuzhiyun
1764*4882a593Smuzhiyun };
1765*4882a593Smuzhiyun
1766*4882a593Smuzhiyun
1767*4882a593Smuzhiyun
1768*4882a593Smuzhiyun #define MAP_SIZE 4096
1769*4882a593Smuzhiyun #define MAP_MASK ( MAP_SIZE - 1 )
1770*4882a593Smuzhiyun
getmem(u32 addr)1771*4882a593Smuzhiyun static int getmem(u32 addr)
1772*4882a593Smuzhiyun {
1773*4882a593Smuzhiyun void *map, *regaddr;
1774*4882a593Smuzhiyun u32 val;
1775*4882a593Smuzhiyun
1776*4882a593Smuzhiyun //printf("getmem(0x%08x)\n", addr);
1777*4882a593Smuzhiyun
1778*4882a593Smuzhiyun if (fd == -1) {
1779*4882a593Smuzhiyun fd = open("/dev/mem", O_RDWR | O_SYNC);
1780*4882a593Smuzhiyun if (fd<0) {
1781*4882a593Smuzhiyun perror("open(\"/dev/mem\")");
1782*4882a593Smuzhiyun exit(1);
1783*4882a593Smuzhiyun }
1784*4882a593Smuzhiyun }
1785*4882a593Smuzhiyun
1786*4882a593Smuzhiyun map = mmap(0,
1787*4882a593Smuzhiyun MAP_SIZE,
1788*4882a593Smuzhiyun PROT_READ | PROT_WRITE,
1789*4882a593Smuzhiyun MAP_SHARED,
1790*4882a593Smuzhiyun fd,
1791*4882a593Smuzhiyun addr & ~MAP_MASK
1792*4882a593Smuzhiyun );
1793*4882a593Smuzhiyun if (map == (void*)-1 ) {
1794*4882a593Smuzhiyun perror("mmap()");
1795*4882a593Smuzhiyun exit(1);
1796*4882a593Smuzhiyun }
1797*4882a593Smuzhiyun
1798*4882a593Smuzhiyun regaddr = map + (addr & MAP_MASK);
1799*4882a593Smuzhiyun
1800*4882a593Smuzhiyun val = *(u32*) regaddr;
1801*4882a593Smuzhiyun munmap(0,MAP_SIZE);
1802*4882a593Smuzhiyun
1803*4882a593Smuzhiyun return val;
1804*4882a593Smuzhiyun }
1805*4882a593Smuzhiyun
putmem(u32 addr,u32 val)1806*4882a593Smuzhiyun static void putmem(u32 addr, u32 val)
1807*4882a593Smuzhiyun {
1808*4882a593Smuzhiyun void *map, *regaddr;
1809*4882a593Smuzhiyun static int fd = -1;
1810*4882a593Smuzhiyun
1811*4882a593Smuzhiyun //printf("putmem(0x%08x, 0x%08x)\n", addr, val);
1812*4882a593Smuzhiyun
1813*4882a593Smuzhiyun if (fd == -1) {
1814*4882a593Smuzhiyun fd = open("/dev/mem", O_RDWR | O_SYNC);
1815*4882a593Smuzhiyun if (fd<0) {
1816*4882a593Smuzhiyun perror("open(\"/dev/mem\")");
1817*4882a593Smuzhiyun exit(1);
1818*4882a593Smuzhiyun }
1819*4882a593Smuzhiyun }
1820*4882a593Smuzhiyun
1821*4882a593Smuzhiyun map = mmap(0,
1822*4882a593Smuzhiyun MAP_SIZE,
1823*4882a593Smuzhiyun PROT_READ | PROT_WRITE,
1824*4882a593Smuzhiyun MAP_SHARED,
1825*4882a593Smuzhiyun fd,
1826*4882a593Smuzhiyun addr & ~MAP_MASK
1827*4882a593Smuzhiyun );
1828*4882a593Smuzhiyun if (map == (void*)-1 ) {
1829*4882a593Smuzhiyun perror("mmap()");
1830*4882a593Smuzhiyun exit(1);
1831*4882a593Smuzhiyun }
1832*4882a593Smuzhiyun
1833*4882a593Smuzhiyun regaddr = map + (addr & MAP_MASK);
1834*4882a593Smuzhiyun
1835*4882a593Smuzhiyun *(u32*) regaddr = val;
1836*4882a593Smuzhiyun munmap(0,MAP_SIZE);
1837*4882a593Smuzhiyun }
1838*4882a593Smuzhiyun
1839*4882a593Smuzhiyun static u32 lastaddr = 0;
1840*4882a593Smuzhiyun static u32 newaddr = 1;
1841*4882a593Smuzhiyun static u32 data = 0;
1842*4882a593Smuzhiyun static u32 shiftdata;
1843*4882a593Smuzhiyun
1844*4882a593Smuzhiyun
dumpentry(int i)1845*4882a593Smuzhiyun static void dumpentry(int i)
1846*4882a593Smuzhiyun {
1847*4882a593Smuzhiyun int j;
1848*4882a593Smuzhiyun
1849*4882a593Smuzhiyun if (regs[i].addr != lastaddr) newaddr = 1;
1850*4882a593Smuzhiyun if (newaddr) {
1851*4882a593Smuzhiyun newaddr = 0;
1852*4882a593Smuzhiyun lastaddr = regs[i].addr;
1853*4882a593Smuzhiyun data = getmem(lastaddr);
1854*4882a593Smuzhiyun printf("\n%s\n", regs[i].desc);
1855*4882a593Smuzhiyun printf("%-24s 0x%08x ", regs[i].name, data);
1856*4882a593Smuzhiyun shiftdata = data;
1857*4882a593Smuzhiyun for (j=32; j>0; j--) {
1858*4882a593Smuzhiyun printf("%c", shiftdata & 0x80000000 ? '1' : '0');
1859*4882a593Smuzhiyun shiftdata = shiftdata << 1;
1860*4882a593Smuzhiyun if (j==9 || j==17 || j==25) printf(" ");
1861*4882a593Smuzhiyun }
1862*4882a593Smuzhiyun
1863*4882a593Smuzhiyun printf("\n");
1864*4882a593Smuzhiyun }
1865*4882a593Smuzhiyun
1866*4882a593Smuzhiyun if (regs[i].shift != 0 || regs[i].mask != 0xffffffff) {
1867*4882a593Smuzhiyun shiftdata = (data >> regs[i].shift) & regs[i].mask;
1868*4882a593Smuzhiyun printf("%-25s ", regs[i].name);
1869*4882a593Smuzhiyun switch (regs[i].type) {
1870*4882a593Smuzhiyun case 'x': printf("%8x", shiftdata);
1871*4882a593Smuzhiyun break;
1872*4882a593Smuzhiyun case '<': printf("%8u", 1 << shiftdata);
1873*4882a593Smuzhiyun break;
1874*4882a593Smuzhiyun default:
1875*4882a593Smuzhiyun printf("%8u", shiftdata);
1876*4882a593Smuzhiyun }
1877*4882a593Smuzhiyun printf(" %s\n", regs[i].desc);
1878*4882a593Smuzhiyun }
1879*4882a593Smuzhiyun }
1880*4882a593Smuzhiyun
1881*4882a593Smuzhiyun
dumpall(void)1882*4882a593Smuzhiyun static void dumpall(void)
1883*4882a593Smuzhiyun {
1884*4882a593Smuzhiyun int i;
1885*4882a593Smuzhiyun int n=sizeof(regs)/sizeof(struct reg_info);
1886*4882a593Smuzhiyun
1887*4882a593Smuzhiyun for (i=0; i<n; i++) {
1888*4882a593Smuzhiyun dumpentry(i);
1889*4882a593Smuzhiyun }
1890*4882a593Smuzhiyun }
1891*4882a593Smuzhiyun
1892*4882a593Smuzhiyun
dumpmatching(char * name)1893*4882a593Smuzhiyun static void dumpmatching(char *name)
1894*4882a593Smuzhiyun {
1895*4882a593Smuzhiyun int i;
1896*4882a593Smuzhiyun int n=sizeof(regs)/sizeof(struct reg_info);
1897*4882a593Smuzhiyun
1898*4882a593Smuzhiyun
1899*4882a593Smuzhiyun for (i=0; i<n; i++) {
1900*4882a593Smuzhiyun if (strstr(regs[i].name, name))
1901*4882a593Smuzhiyun dumpentry(i);
1902*4882a593Smuzhiyun }
1903*4882a593Smuzhiyun }
1904*4882a593Smuzhiyun
1905*4882a593Smuzhiyun
setreg(char * name,u32 val)1906*4882a593Smuzhiyun static void setreg(char *name, u32 val)
1907*4882a593Smuzhiyun {
1908*4882a593Smuzhiyun int i;
1909*4882a593Smuzhiyun u32 mem;
1910*4882a593Smuzhiyun int found=0;
1911*4882a593Smuzhiyun int count=0;
1912*4882a593Smuzhiyun int n=sizeof(regs)/sizeof(struct reg_info);
1913*4882a593Smuzhiyun
1914*4882a593Smuzhiyun
1915*4882a593Smuzhiyun for (i=0; i<n; i++) {
1916*4882a593Smuzhiyun if (strcmp(regs[i].name, name)==0) {
1917*4882a593Smuzhiyun found = i;
1918*4882a593Smuzhiyun //printf("Matched %s with %s, count=%d\n", regs[i].name, name, count);
1919*4882a593Smuzhiyun count++;
1920*4882a593Smuzhiyun }
1921*4882a593Smuzhiyun }
1922*4882a593Smuzhiyun if (count!=1) {
1923*4882a593Smuzhiyun printf("No or more than one matching register found\n");
1924*4882a593Smuzhiyun exit(1);
1925*4882a593Smuzhiyun }
1926*4882a593Smuzhiyun
1927*4882a593Smuzhiyun mem = getmem(regs[found].addr);
1928*4882a593Smuzhiyun //printf("Old contents: 0x%08x\n", mem);
1929*4882a593Smuzhiyun mem &= ~(regs[found].mask << regs[found].shift);
1930*4882a593Smuzhiyun //printf("Unmasked contents: 0x%08x\n", mem);
1931*4882a593Smuzhiyun val &= regs[found].mask;
1932*4882a593Smuzhiyun //printf("mask: 0x%08x\n", regs[found].mask);
1933*4882a593Smuzhiyun //printf("masked val: 0x%08x\n", val);
1934*4882a593Smuzhiyun mem |= val << regs[found].shift;
1935*4882a593Smuzhiyun //printf("Embedded value: 0x%08x\n", mem);
1936*4882a593Smuzhiyun putmem(regs[found].addr, mem);
1937*4882a593Smuzhiyun }
1938*4882a593Smuzhiyun
1939*4882a593Smuzhiyun
main(int argc,char * argv[])1940*4882a593Smuzhiyun int main(int argc, char *argv[])
1941*4882a593Smuzhiyun {
1942*4882a593Smuzhiyun char *p;
1943*4882a593Smuzhiyun u32 val;
1944*4882a593Smuzhiyun
1945*4882a593Smuzhiyun if (argc == 1) {
1946*4882a593Smuzhiyun dumpall();
1947*4882a593Smuzhiyun return 0;
1948*4882a593Smuzhiyun }
1949*4882a593Smuzhiyun
1950*4882a593Smuzhiyun // Uppercase first argument
1951*4882a593Smuzhiyun if (argc >= 2) {
1952*4882a593Smuzhiyun p = argv[1];
1953*4882a593Smuzhiyun while (*p) {
1954*4882a593Smuzhiyun *p = toupper(*p);
1955*4882a593Smuzhiyun p++;
1956*4882a593Smuzhiyun }
1957*4882a593Smuzhiyun }
1958*4882a593Smuzhiyun
1959*4882a593Smuzhiyun if (argc == 2) {
1960*4882a593Smuzhiyun dumpmatching(argv[1]);
1961*4882a593Smuzhiyun return 0;
1962*4882a593Smuzhiyun }
1963*4882a593Smuzhiyun
1964*4882a593Smuzhiyun if (argc == 3) {
1965*4882a593Smuzhiyun sscanf(argv[2],"%i",&val);
1966*4882a593Smuzhiyun setreg(argv[1], val);
1967*4882a593Smuzhiyun return 0;
1968*4882a593Smuzhiyun }
1969*4882a593Smuzhiyun
1970*4882a593Smuzhiyun printf("Usage: %s - to dump all known registers\n"
1971*4882a593Smuzhiyun " %s <name> - to dump named register\n"
1972*4882a593Smuzhiyun " %s <name> <value> - to set named register\n",
1973*4882a593Smuzhiyun argv[0], argv[0], argv[0]);
1974*4882a593Smuzhiyun return 1;
1975*4882a593Smuzhiyun }
1976