1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
2debd1f3cSChristophe Leroy /*
3debd1f3cSChristophe Leroy * (C) Copyright 2000-2003
4debd1f3cSChristophe Leroy * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
5debd1f3cSChristophe Leroy */
6debd1f3cSChristophe Leroy
7debd1f3cSChristophe Leroy /*
8debd1f3cSChristophe Leroy * MPC8xx Internal Memory Map Functions
9debd1f3cSChristophe Leroy */
10debd1f3cSChristophe Leroy
11debd1f3cSChristophe Leroy #include <common.h>
12debd1f3cSChristophe Leroy #include <command.h>
13debd1f3cSChristophe Leroy
14ee1e600cSChristophe Leroy #include <asm/immap_8xx.h>
1518f8d4c6SChristophe Leroy #include <asm/cpm_8xx.h>
16debd1f3cSChristophe Leroy #include <asm/iopin_8xx.h>
17ba3da734SChristophe Leroy #include <asm/io.h>
18debd1f3cSChristophe Leroy
19debd1f3cSChristophe Leroy DECLARE_GLOBAL_DATA_PTR;
20debd1f3cSChristophe Leroy
do_siuinfo(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])2108dd988bSChristophe Leroy static int do_siuinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
22debd1f3cSChristophe Leroy {
23ba3da734SChristophe Leroy immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
24ba3da734SChristophe Leroy sysconf8xx_t __iomem *sc = &immap->im_siu_conf;
25debd1f3cSChristophe Leroy
26ba3da734SChristophe Leroy printf("SIUMCR= %08x SYPCR = %08x\n",
27ba3da734SChristophe Leroy in_be32(&sc->sc_siumcr), in_be32(&sc->sc_sypcr));
28ba3da734SChristophe Leroy printf("SWT = %08x\n", in_be32(&sc->sc_swt));
29ba3da734SChristophe Leroy printf("SIPEND= %08x SIMASK= %08x\n",
30ba3da734SChristophe Leroy in_be32(&sc->sc_sipend), in_be32(&sc->sc_simask));
31ba3da734SChristophe Leroy printf("SIEL = %08x SIVEC = %08x\n",
32ba3da734SChristophe Leroy in_be32(&sc->sc_siel), in_be32(&sc->sc_sivec));
33ba3da734SChristophe Leroy printf("TESR = %08x SDCR = %08x\n",
34ba3da734SChristophe Leroy in_be32(&sc->sc_tesr), in_be32(&sc->sc_sdcr));
35debd1f3cSChristophe Leroy return 0;
36debd1f3cSChristophe Leroy }
37debd1f3cSChristophe Leroy
do_memcinfo(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])3808dd988bSChristophe Leroy static int do_memcinfo(cmd_tbl_t *cmdtp, int flag, int argc,
3908dd988bSChristophe Leroy char * const argv[])
40debd1f3cSChristophe Leroy {
41ba3da734SChristophe Leroy immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
42ba3da734SChristophe Leroy memctl8xx_t __iomem *memctl = &immap->im_memctl;
43debd1f3cSChristophe Leroy int nbanks = 8;
44ba3da734SChristophe Leroy uint __iomem *p = &memctl->memc_br0;
45debd1f3cSChristophe Leroy int i;
46debd1f3cSChristophe Leroy
47ba3da734SChristophe Leroy for (i = 0; i < nbanks; i++, p += 2)
48ba3da734SChristophe Leroy printf("BR%-2d = %08x OR%-2d = %08x\n",
49ba3da734SChristophe Leroy i, in_be32(p), i, in_be32(p + 1));
50debd1f3cSChristophe Leroy
51ba3da734SChristophe Leroy printf("MAR = %08x", in_be32(&memctl->memc_mar));
52ba3da734SChristophe Leroy printf(" MCR = %08x\n", in_be32(&memctl->memc_mcr));
53debd1f3cSChristophe Leroy printf("MAMR = %08x MBMR = %08x",
54ba3da734SChristophe Leroy in_be32(&memctl->memc_mamr), in_be32(&memctl->memc_mbmr));
55ba3da734SChristophe Leroy printf("\nMSTAT = %04x\n", in_be16(&memctl->memc_mstat));
56debd1f3cSChristophe Leroy printf("MPTPR = %04x MDR = %08x\n",
57ba3da734SChristophe Leroy in_be16(&memctl->memc_mptpr), in_be32(&memctl->memc_mdr));
58debd1f3cSChristophe Leroy return 0;
59debd1f3cSChristophe Leroy }
60debd1f3cSChristophe Leroy
do_carinfo(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])6108dd988bSChristophe Leroy static int do_carinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
62debd1f3cSChristophe Leroy {
63ba3da734SChristophe Leroy immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
64ba3da734SChristophe Leroy car8xx_t __iomem *car = &immap->im_clkrst;
65debd1f3cSChristophe Leroy
66ba3da734SChristophe Leroy printf("SCCR = %08x\n", in_be32(&car->car_sccr));
67ba3da734SChristophe Leroy printf("PLPRCR= %08x\n", in_be32(&car->car_plprcr));
68ba3da734SChristophe Leroy printf("RSR = %08x\n", in_be32(&car->car_rsr));
69debd1f3cSChristophe Leroy return 0;
70debd1f3cSChristophe Leroy }
71debd1f3cSChristophe Leroy
72debd1f3cSChristophe Leroy static int counter;
73debd1f3cSChristophe Leroy
header(void)7470fd0710SChristophe Leroy static void header(void)
75debd1f3cSChristophe Leroy {
76debd1f3cSChristophe Leroy char *data = "\
77debd1f3cSChristophe Leroy -------------------------------- --------------------------------\
78debd1f3cSChristophe Leroy 00000000001111111111222222222233 00000000001111111111222222222233\
79debd1f3cSChristophe Leroy 01234567890123456789012345678901 01234567890123456789012345678901\
80debd1f3cSChristophe Leroy -------------------------------- --------------------------------\
81debd1f3cSChristophe Leroy ";
82debd1f3cSChristophe Leroy int i;
83debd1f3cSChristophe Leroy
84debd1f3cSChristophe Leroy if (counter % 2)
85debd1f3cSChristophe Leroy putc('\n');
86debd1f3cSChristophe Leroy counter = 0;
87debd1f3cSChristophe Leroy
88debd1f3cSChristophe Leroy for (i = 0; i < 4; i++, data += 79)
89debd1f3cSChristophe Leroy printf("%.79s\n", data);
90debd1f3cSChristophe Leroy }
91debd1f3cSChristophe Leroy
binary(char * label,uint value,int nbits)92debd1f3cSChristophe Leroy static void binary(char *label, uint value, int nbits)
93debd1f3cSChristophe Leroy {
94debd1f3cSChristophe Leroy uint mask = 1 << (nbits - 1);
95debd1f3cSChristophe Leroy int i, second = (counter++ % 2);
96debd1f3cSChristophe Leroy
97debd1f3cSChristophe Leroy if (second)
98debd1f3cSChristophe Leroy putc(' ');
99debd1f3cSChristophe Leroy puts(label);
100debd1f3cSChristophe Leroy for (i = 32 + 1; i != nbits; i--)
101debd1f3cSChristophe Leroy putc(' ');
102debd1f3cSChristophe Leroy
103debd1f3cSChristophe Leroy while (mask != 0) {
104debd1f3cSChristophe Leroy if (value & mask)
105debd1f3cSChristophe Leroy putc('1');
106debd1f3cSChristophe Leroy else
107debd1f3cSChristophe Leroy putc('0');
108debd1f3cSChristophe Leroy mask >>= 1;
109debd1f3cSChristophe Leroy }
110debd1f3cSChristophe Leroy
111debd1f3cSChristophe Leroy if (second)
112debd1f3cSChristophe Leroy putc('\n');
113debd1f3cSChristophe Leroy }
114debd1f3cSChristophe Leroy
115debd1f3cSChristophe Leroy #define PA_NBITS 16
116debd1f3cSChristophe Leroy #define PA_NB_ODR 8
117debd1f3cSChristophe Leroy #define PB_NBITS 18
118debd1f3cSChristophe Leroy #define PB_NB_ODR 16
119debd1f3cSChristophe Leroy #define PC_NBITS 12
120debd1f3cSChristophe Leroy #define PD_NBITS 13
121debd1f3cSChristophe Leroy
do_iopinfo(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])12208dd988bSChristophe Leroy static int do_iopinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
123debd1f3cSChristophe Leroy {
124ba3da734SChristophe Leroy immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
125ba3da734SChristophe Leroy iop8xx_t __iomem *iop = &immap->im_ioport;
126ba3da734SChristophe Leroy ushort __iomem *l, *r;
127ba3da734SChristophe Leroy uint __iomem *R;
128debd1f3cSChristophe Leroy
129debd1f3cSChristophe Leroy counter = 0;
130debd1f3cSChristophe Leroy header();
131debd1f3cSChristophe Leroy
132debd1f3cSChristophe Leroy /*
133debd1f3cSChristophe Leroy * Ports A & B
134debd1f3cSChristophe Leroy */
135debd1f3cSChristophe Leroy
136debd1f3cSChristophe Leroy l = &iop->iop_padir;
137debd1f3cSChristophe Leroy R = &immap->im_cpm.cp_pbdir;
138ba3da734SChristophe Leroy binary("PA_DIR", in_be16(l++), PA_NBITS);
139ba3da734SChristophe Leroy binary("PB_DIR", in_be32(R++), PB_NBITS);
140ba3da734SChristophe Leroy binary("PA_PAR", in_be16(l++), PA_NBITS);
141ba3da734SChristophe Leroy binary("PB_PAR", in_be32(R++), PB_NBITS);
142ba3da734SChristophe Leroy binary("PA_ODR", in_be16(l++), PA_NB_ODR);
143ba3da734SChristophe Leroy binary("PB_ODR", in_be32(R++), PB_NB_ODR);
144ba3da734SChristophe Leroy binary("PA_DAT", in_be16(l++), PA_NBITS);
145ba3da734SChristophe Leroy binary("PB_DAT", in_be32(R++), PB_NBITS);
146debd1f3cSChristophe Leroy
147debd1f3cSChristophe Leroy header();
148debd1f3cSChristophe Leroy
149debd1f3cSChristophe Leroy /*
150debd1f3cSChristophe Leroy * Ports C & D
151debd1f3cSChristophe Leroy */
152debd1f3cSChristophe Leroy
153debd1f3cSChristophe Leroy l = &iop->iop_pcdir;
154debd1f3cSChristophe Leroy r = &iop->iop_pddir;
155ba3da734SChristophe Leroy binary("PC_DIR", in_be16(l++), PC_NBITS);
156ba3da734SChristophe Leroy binary("PD_DIR", in_be16(r++), PD_NBITS);
157ba3da734SChristophe Leroy binary("PC_PAR", in_be16(l++), PC_NBITS);
158ba3da734SChristophe Leroy binary("PD_PAR", in_be16(r++), PD_NBITS);
159ba3da734SChristophe Leroy binary("PC_SO ", in_be16(l++), PC_NBITS);
160debd1f3cSChristophe Leroy binary(" ", 0, 0);
161debd1f3cSChristophe Leroy r++;
162ba3da734SChristophe Leroy binary("PC_DAT", in_be16(l++), PC_NBITS);
163ba3da734SChristophe Leroy binary("PD_DAT", in_be16(r++), PD_NBITS);
164ba3da734SChristophe Leroy binary("PC_INT", in_be16(l++), PC_NBITS);
165debd1f3cSChristophe Leroy
166debd1f3cSChristophe Leroy header();
167debd1f3cSChristophe Leroy return 0;
168debd1f3cSChristophe Leroy }
169debd1f3cSChristophe Leroy
170debd1f3cSChristophe Leroy /*
171debd1f3cSChristophe Leroy * set the io pins
172debd1f3cSChristophe Leroy * this needs a clean up for smaller tighter code
173debd1f3cSChristophe Leroy * use *uint and set the address based on cmd + port
174debd1f3cSChristophe Leroy */
do_iopset(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])17508dd988bSChristophe Leroy static int do_iopset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
176debd1f3cSChristophe Leroy {
177debd1f3cSChristophe Leroy uint rcode = 0;
178debd1f3cSChristophe Leroy iopin_t iopin;
17970fd0710SChristophe Leroy static uint port;
18070fd0710SChristophe Leroy static uint pin;
18170fd0710SChristophe Leroy static uint value;
182debd1f3cSChristophe Leroy static enum {
183debd1f3cSChristophe Leroy DIR,
184debd1f3cSChristophe Leroy PAR,
185debd1f3cSChristophe Leroy SOR,
186debd1f3cSChristophe Leroy ODR,
187debd1f3cSChristophe Leroy DAT,
188debd1f3cSChristophe Leroy INT
189debd1f3cSChristophe Leroy } cmd = DAT;
190debd1f3cSChristophe Leroy
191debd1f3cSChristophe Leroy if (argc != 5) {
192debd1f3cSChristophe Leroy puts("iopset PORT PIN CMD VALUE\n");
193debd1f3cSChristophe Leroy return 1;
194debd1f3cSChristophe Leroy }
195debd1f3cSChristophe Leroy port = argv[1][0] - 'A';
196debd1f3cSChristophe Leroy if (port > 3)
197debd1f3cSChristophe Leroy port -= 0x20;
198debd1f3cSChristophe Leroy if (port > 3)
199debd1f3cSChristophe Leroy rcode = 1;
200debd1f3cSChristophe Leroy pin = simple_strtol(argv[2], NULL, 10);
201debd1f3cSChristophe Leroy if (pin > 31)
202debd1f3cSChristophe Leroy rcode = 1;
203debd1f3cSChristophe Leroy
204debd1f3cSChristophe Leroy
205debd1f3cSChristophe Leroy switch (argv[3][0]) {
206debd1f3cSChristophe Leroy case 'd':
207debd1f3cSChristophe Leroy if (argv[3][1] == 'a')
208debd1f3cSChristophe Leroy cmd = DAT;
209debd1f3cSChristophe Leroy else if (argv[3][1] == 'i')
210debd1f3cSChristophe Leroy cmd = DIR;
211debd1f3cSChristophe Leroy else
212debd1f3cSChristophe Leroy rcode = 1;
213debd1f3cSChristophe Leroy break;
214debd1f3cSChristophe Leroy case 'p':
215debd1f3cSChristophe Leroy cmd = PAR;
216debd1f3cSChristophe Leroy break;
217debd1f3cSChristophe Leroy case 'o':
218debd1f3cSChristophe Leroy cmd = ODR;
219debd1f3cSChristophe Leroy break;
220debd1f3cSChristophe Leroy case 's':
221debd1f3cSChristophe Leroy cmd = SOR;
222debd1f3cSChristophe Leroy break;
223debd1f3cSChristophe Leroy case 'i':
224debd1f3cSChristophe Leroy cmd = INT;
225debd1f3cSChristophe Leroy break;
226debd1f3cSChristophe Leroy default:
227debd1f3cSChristophe Leroy printf("iopset: unknown command %s\n", argv[3]);
228debd1f3cSChristophe Leroy rcode = 1;
229debd1f3cSChristophe Leroy }
230debd1f3cSChristophe Leroy if (argv[4][0] == '1')
231debd1f3cSChristophe Leroy value = 1;
232debd1f3cSChristophe Leroy else if (argv[4][0] == '0')
233debd1f3cSChristophe Leroy value = 0;
234debd1f3cSChristophe Leroy else
235debd1f3cSChristophe Leroy rcode = 1;
236debd1f3cSChristophe Leroy if (rcode == 0) {
237debd1f3cSChristophe Leroy iopin.port = port;
238debd1f3cSChristophe Leroy iopin.pin = pin;
239debd1f3cSChristophe Leroy iopin.flag = 0;
240debd1f3cSChristophe Leroy switch (cmd) {
241debd1f3cSChristophe Leroy case DIR:
242debd1f3cSChristophe Leroy if (value)
243debd1f3cSChristophe Leroy iopin_set_out(&iopin);
244debd1f3cSChristophe Leroy else
245debd1f3cSChristophe Leroy iopin_set_in(&iopin);
246debd1f3cSChristophe Leroy break;
247debd1f3cSChristophe Leroy case PAR:
248debd1f3cSChristophe Leroy if (value)
249debd1f3cSChristophe Leroy iopin_set_ded(&iopin);
250debd1f3cSChristophe Leroy else
251debd1f3cSChristophe Leroy iopin_set_gen(&iopin);
252debd1f3cSChristophe Leroy break;
253debd1f3cSChristophe Leroy case SOR:
254debd1f3cSChristophe Leroy if (value)
255debd1f3cSChristophe Leroy iopin_set_opt2(&iopin);
256debd1f3cSChristophe Leroy else
257debd1f3cSChristophe Leroy iopin_set_opt1(&iopin);
258debd1f3cSChristophe Leroy break;
259debd1f3cSChristophe Leroy case ODR:
260debd1f3cSChristophe Leroy if (value)
261debd1f3cSChristophe Leroy iopin_set_odr(&iopin);
262debd1f3cSChristophe Leroy else
263debd1f3cSChristophe Leroy iopin_set_act(&iopin);
264debd1f3cSChristophe Leroy break;
265debd1f3cSChristophe Leroy case DAT:
266debd1f3cSChristophe Leroy if (value)
267debd1f3cSChristophe Leroy iopin_set_high(&iopin);
268debd1f3cSChristophe Leroy else
269debd1f3cSChristophe Leroy iopin_set_low(&iopin);
270debd1f3cSChristophe Leroy break;
271debd1f3cSChristophe Leroy case INT:
272debd1f3cSChristophe Leroy if (value)
273debd1f3cSChristophe Leroy iopin_set_falledge(&iopin);
274debd1f3cSChristophe Leroy else
275debd1f3cSChristophe Leroy iopin_set_anyedge(&iopin);
276debd1f3cSChristophe Leroy break;
277debd1f3cSChristophe Leroy }
278debd1f3cSChristophe Leroy }
279debd1f3cSChristophe Leroy return rcode;
280debd1f3cSChristophe Leroy }
281debd1f3cSChristophe Leroy
prbrg(int n,uint val)282debd1f3cSChristophe Leroy static void prbrg(int n, uint val)
283debd1f3cSChristophe Leroy {
284debd1f3cSChristophe Leroy uint extc = (val >> 14) & 3;
285debd1f3cSChristophe Leroy uint cd = (val & CPM_BRG_CD_MASK) >> 1;
286debd1f3cSChristophe Leroy uint div16 = (val & CPM_BRG_DIV16) != 0;
287debd1f3cSChristophe Leroy
288debd1f3cSChristophe Leroy ulong clock = gd->cpu_clk;
289debd1f3cSChristophe Leroy
290debd1f3cSChristophe Leroy printf("BRG%d:", n);
291debd1f3cSChristophe Leroy
292debd1f3cSChristophe Leroy if (val & CPM_BRG_RST)
293debd1f3cSChristophe Leroy puts(" RESET");
294debd1f3cSChristophe Leroy else
295debd1f3cSChristophe Leroy puts(" ");
296debd1f3cSChristophe Leroy
297debd1f3cSChristophe Leroy if (val & CPM_BRG_EN)
298debd1f3cSChristophe Leroy puts(" ENABLED");
299debd1f3cSChristophe Leroy else
300debd1f3cSChristophe Leroy puts(" DISABLED");
301debd1f3cSChristophe Leroy
302debd1f3cSChristophe Leroy printf(" EXTC=%d", extc);
303debd1f3cSChristophe Leroy
304debd1f3cSChristophe Leroy if (val & CPM_BRG_ATB)
305debd1f3cSChristophe Leroy puts(" ATB");
306debd1f3cSChristophe Leroy else
307debd1f3cSChristophe Leroy puts(" ");
308debd1f3cSChristophe Leroy
309debd1f3cSChristophe Leroy printf(" DIVIDER=%4d", cd);
310debd1f3cSChristophe Leroy if (extc == 0 && cd != 0) {
311debd1f3cSChristophe Leroy uint baudrate;
312debd1f3cSChristophe Leroy
313debd1f3cSChristophe Leroy if (div16)
314debd1f3cSChristophe Leroy baudrate = (clock / 16) / (cd + 1);
315debd1f3cSChristophe Leroy else
316debd1f3cSChristophe Leroy baudrate = clock / (cd + 1);
317debd1f3cSChristophe Leroy
318debd1f3cSChristophe Leroy printf("=%6d bps", baudrate);
319debd1f3cSChristophe Leroy } else {
320debd1f3cSChristophe Leroy puts(" ");
321debd1f3cSChristophe Leroy }
322debd1f3cSChristophe Leroy
323debd1f3cSChristophe Leroy if (val & CPM_BRG_DIV16)
324debd1f3cSChristophe Leroy puts(" DIV16");
325debd1f3cSChristophe Leroy else
326debd1f3cSChristophe Leroy puts(" ");
327debd1f3cSChristophe Leroy
328debd1f3cSChristophe Leroy putc('\n');
329debd1f3cSChristophe Leroy }
330debd1f3cSChristophe Leroy
do_brginfo(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])33108dd988bSChristophe Leroy static int do_brginfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
332debd1f3cSChristophe Leroy {
333ba3da734SChristophe Leroy immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
334ba3da734SChristophe Leroy cpm8xx_t __iomem *cp = &immap->im_cpm;
335ba3da734SChristophe Leroy uint __iomem *p = &cp->cp_brgc1;
336debd1f3cSChristophe Leroy int i = 1;
337debd1f3cSChristophe Leroy
338debd1f3cSChristophe Leroy while (i <= 4)
339ba3da734SChristophe Leroy prbrg(i++, in_be32(p++));
340debd1f3cSChristophe Leroy
341debd1f3cSChristophe Leroy return 0;
342debd1f3cSChristophe Leroy }
343debd1f3cSChristophe Leroy
344ab0d8192SChristophe Leroy #ifdef CONFIG_CMD_REGINFO
print_reginfo(void)345ab0d8192SChristophe Leroy void print_reginfo(void)
346ab0d8192SChristophe Leroy {
347ab0d8192SChristophe Leroy immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
348ab0d8192SChristophe Leroy sit8xx_t __iomem *timers = &immap->im_sit;
349ab0d8192SChristophe Leroy
350ab0d8192SChristophe Leroy printf("\nSystem Configuration registers\n"
351ab0d8192SChristophe Leroy "\tIMMR\t0x%08X\n", get_immr());
352ab0d8192SChristophe Leroy do_siuinfo(NULL, 0, 0, NULL);
353ab0d8192SChristophe Leroy
354ab0d8192SChristophe Leroy printf("Memory Controller Registers\n");
355ab0d8192SChristophe Leroy do_memcinfo(NULL, 0, 0, NULL);
356ab0d8192SChristophe Leroy
357ab0d8192SChristophe Leroy printf("\nSystem Integration Timers\n");
358ab0d8192SChristophe Leroy printf("\tTBSCR\t0x%04X\tRTCSC\t0x%04X\n",
359ab0d8192SChristophe Leroy in_be16(&timers->sit_tbscr), in_be16(&timers->sit_rtcsc));
360ab0d8192SChristophe Leroy printf("\tPISCR\t0x%04X\n", in_be16(&timers->sit_piscr));
361ab0d8192SChristophe Leroy }
362ab0d8192SChristophe Leroy #endif
363ab0d8192SChristophe Leroy
364debd1f3cSChristophe Leroy /***************************************************/
365debd1f3cSChristophe Leroy
366debd1f3cSChristophe Leroy U_BOOT_CMD(
367debd1f3cSChristophe Leroy siuinfo, 1, 1, do_siuinfo,
368debd1f3cSChristophe Leroy "print System Interface Unit (SIU) registers",
369debd1f3cSChristophe Leroy ""
370debd1f3cSChristophe Leroy );
371debd1f3cSChristophe Leroy
372debd1f3cSChristophe Leroy U_BOOT_CMD(
373debd1f3cSChristophe Leroy memcinfo, 1, 1, do_memcinfo,
374debd1f3cSChristophe Leroy "print Memory Controller registers",
375debd1f3cSChristophe Leroy ""
376debd1f3cSChristophe Leroy );
377debd1f3cSChristophe Leroy
378debd1f3cSChristophe Leroy U_BOOT_CMD(
379debd1f3cSChristophe Leroy carinfo, 1, 1, do_carinfo,
380debd1f3cSChristophe Leroy "print Clocks and Reset registers",
381debd1f3cSChristophe Leroy ""
382debd1f3cSChristophe Leroy );
383debd1f3cSChristophe Leroy
384debd1f3cSChristophe Leroy U_BOOT_CMD(
385debd1f3cSChristophe Leroy iopinfo, 1, 1, do_iopinfo,
386debd1f3cSChristophe Leroy "print I/O Port registers",
387debd1f3cSChristophe Leroy ""
388debd1f3cSChristophe Leroy );
389debd1f3cSChristophe Leroy
390debd1f3cSChristophe Leroy U_BOOT_CMD(
391debd1f3cSChristophe Leroy iopset, 5, 0, do_iopset,
392debd1f3cSChristophe Leroy "set I/O Port registers",
393debd1f3cSChristophe Leroy "PORT PIN CMD VALUE\nPORT: A-D, PIN: 0-31, CMD: [dat|dir|odr|sor], VALUE: 0|1"
394debd1f3cSChristophe Leroy );
395debd1f3cSChristophe Leroy
396debd1f3cSChristophe Leroy U_BOOT_CMD(
397debd1f3cSChristophe Leroy brginfo, 1, 1, do_brginfo,
398debd1f3cSChristophe Leroy "print Baud Rate Generator (BRG) registers",
399debd1f3cSChristophe Leroy ""
400debd1f3cSChristophe Leroy );
401