]> git.ipfire.org Git - people/ms/u-boot.git/blame - board/renesas/sh7785lcr/selfcheck.c
Add GPL-2.0+ SPDX-License-Identifier to source files
[people/ms/u-boot.git] / board / renesas / sh7785lcr / selfcheck.c
CommitLineData
0d53a47d
NI
1/*
2 * Copyright (C) 2008 Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
3 *
1a459660 4 * SPDX-License-Identifier: GPL-2.0+
0d53a47d
NI
5 */
6
7#include <common.h>
8#include <asm/io.h>
9#include <asm/processor.h>
10#include <asm/pci.h>
11
12#if defined(CONFIG_CPU_32BIT)
13#define NOCACHE_OFFSET 0x00000000
14#else
15#define NOCACHE_OFFSET 0xa0000000
16#endif
17#define PLD_LEDCR (0x04000008 + NOCACHE_OFFSET)
18#define PLD_SWSR (0x0400000a + NOCACHE_OFFSET)
19#define PLD_VERSR (0x0400000c + NOCACHE_OFFSET)
20
21#define SM107_DEVICEID (0x13e00060 + NOCACHE_OFFSET)
22
0d53a47d
NI
23static void test_pld(void)
24{
25 printf("PLD version = %04x\n", readb(PLD_VERSR));
26}
27
28static void test_sm107(void)
29{
30 printf("SM107 device ID = %04x\n", readl(SM107_DEVICEID));
31}
32
33static void test_led(void)
34{
35 printf("turn on LEDs 3, 5, 7, 9\n");
36 writeb(0x55, PLD_LEDCR);
5b84dd67 37 mdelay(2000);
0d53a47d
NI
38 printf("turn on LEDs 4, 6, 8, 10\n");
39 writeb(0xaa, PLD_LEDCR);
5b84dd67 40 mdelay(2000);
0d53a47d
NI
41 writeb(0x00, PLD_LEDCR);
42}
43
44static void test_dipsw(void)
45{
46 printf("Please DIPSW set = B'0101\n");
47 while (readb(PLD_SWSR) != 0x05) {
48 if (ctrlc())
49 return;
50 }
51 printf("Please DIPSW set = B'1010\n");
52 while (readb(PLD_SWSR) != 0x0A) {
53 if (ctrlc())
54 return;
55 }
56 printf("DIPSW OK\n");
57}
58
59static void test_net(void)
60{
61 unsigned long data;
62
63 writel(0x80000000, 0xfe0401c0);
64 data = readl(0xfe040220);
65 if (data == 0x816910ec)
66 printf("Ethernet OK\n");
67 else
b5d10a13 68 printf("Ethernet NG, data = %08x\n", (unsigned int)data);
0d53a47d
NI
69}
70
71static void test_sata(void)
72{
73 unsigned long data;
74
75 writel(0x80000800, 0xfe0401c0);
76 data = readl(0xfe040220);
77 if (data == 0x35121095)
78 printf("SATA OK\n");
79 else
b5d10a13 80 printf("SATA NG, data = %08x\n", (unsigned int)data);
0d53a47d
NI
81}
82
83static void test_pci(void)
84{
85 writel(0x80001800, 0xfe0401c0);
86 printf("PCI CN1 ID = %08x\n", readl(0xfe040220));
87
88 writel(0x80001000, 0xfe0401c0);
89 printf("PCI CN2 ID = %08x\n", readl(0xfe040220));
90}
91
54841ab5 92int do_hw_test(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
0d53a47d
NI
93{
94 char *cmd;
95
47e26b1b
WD
96 if (argc != 2)
97 return cmd_usage(cmdtp);
0d53a47d
NI
98
99 cmd = argv[1];
100 switch (cmd[0]) {
101 case 'a': /* all */
102 test_pld();
103 test_led();
104 test_dipsw();
105 test_sm107();
106 test_net();
107 test_sata();
108 test_pci();
109 break;
110 case 'p': /* pld or pci */
111 if (cmd[1] == 'l')
112 test_pld();
113 else
114 test_pci();
115 break;
116 case 'l': /* led */
117 test_led();
118 break;
119 case 'd': /* dipsw */
120 test_dipsw();
121 break;
122 case 's': /* sm107 or sata */
123 if (cmd[1] == 'm')
124 test_sm107();
125 else
126 test_sata();
127 break;
128 case 'n': /* net */
129 test_net();
130 break;
131 default:
47e26b1b 132 return cmd_usage(cmdtp);
0d53a47d
NI
133 }
134
135 return 0;
136}
137
138U_BOOT_CMD(
139 hwtest, 2, 1, do_hw_test,
2fb2604d 140 "hardware test for R0P7785LC0011RL board",
0d53a47d
NI
141 "\n"
142 "hwtest all - test all hardware\n"
143 "hwtest pld - output PLD version\n"
144 "hwtest led - turn on LEDs\n"
145 "hwtest dipsw - test DIP switch\n"
146 "hwtest sm107 - output SM107 version\n"
147 "hwtest net - check RTL8110 ID\n"
148 "hwtest sata - check SiI3512 ID\n"
a89c33db 149 "hwtest pci - output PCI slot device ID"
0d53a47d 150);