mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01:00 
			
		
		
		
	The console includes a global variable and several functions that are only used by a small subset of U-Boot files. Before adding more functions, move the definitions into their own header file. Signed-off-by: Simon Glass <sjg@chromium.org>
		
			
				
	
	
		
			152 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2008 Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
 | |
|  *
 | |
|  * SPDX-License-Identifier:	GPL-2.0+
 | |
|  */
 | |
| 
 | |
| #include <common.h>
 | |
| #include <console.h>
 | |
| #include <asm/io.h>
 | |
| #include <asm/processor.h>
 | |
| #include <asm/pci.h>
 | |
| 
 | |
| #if defined(CONFIG_CPU_32BIT)
 | |
| #define NOCACHE_OFFSET		0x00000000
 | |
| #else
 | |
| #define NOCACHE_OFFSET		0xa0000000
 | |
| #endif
 | |
| #define PLD_LEDCR		(0x04000008 + NOCACHE_OFFSET)
 | |
| #define PLD_SWSR		(0x0400000a + NOCACHE_OFFSET)
 | |
| #define PLD_VERSR		(0x0400000c + NOCACHE_OFFSET)
 | |
| 
 | |
| #define SM107_DEVICEID		(0x13e00060 + NOCACHE_OFFSET)
 | |
| 
 | |
| static void test_pld(void)
 | |
| {
 | |
| 	printf("PLD version = %04x\n", readb(PLD_VERSR));
 | |
| }
 | |
| 
 | |
| static void test_sm107(void)
 | |
| {
 | |
| 	printf("SM107 device ID = %04x\n", readl(SM107_DEVICEID));
 | |
| }
 | |
| 
 | |
| static void test_led(void)
 | |
| {
 | |
| 	printf("turn on LEDs 3, 5, 7, 9\n");
 | |
| 	writeb(0x55, PLD_LEDCR);
 | |
| 	mdelay(2000);
 | |
| 	printf("turn on LEDs 4, 6, 8, 10\n");
 | |
| 	writeb(0xaa, PLD_LEDCR);
 | |
| 	mdelay(2000);
 | |
| 	writeb(0x00, PLD_LEDCR);
 | |
| }
 | |
| 
 | |
| static void test_dipsw(void)
 | |
| {
 | |
| 	printf("Please DIPSW set = B'0101\n");
 | |
| 	while (readb(PLD_SWSR) != 0x05) {
 | |
| 		if (ctrlc())
 | |
| 			return;
 | |
| 	}
 | |
| 	printf("Please DIPSW set = B'1010\n");
 | |
| 	while (readb(PLD_SWSR) != 0x0A) {
 | |
| 		if (ctrlc())
 | |
| 			return;
 | |
| 	}
 | |
| 	printf("DIPSW OK\n");
 | |
| }
 | |
| 
 | |
| static void test_net(void)
 | |
| {
 | |
| 	unsigned long data;
 | |
| 
 | |
| 	writel(0x80000000, 0xfe0401c0);
 | |
| 	data = readl(0xfe040220);
 | |
| 	if (data == 0x816910ec)
 | |
| 		printf("Ethernet OK\n");
 | |
| 	else
 | |
| 		printf("Ethernet NG, data = %08x\n", (unsigned int)data);
 | |
| }
 | |
| 
 | |
| static void test_sata(void)
 | |
| {
 | |
| 	unsigned long data;
 | |
| 
 | |
| 	writel(0x80000800, 0xfe0401c0);
 | |
| 	data = readl(0xfe040220);
 | |
| 	if (data == 0x35121095)
 | |
| 		printf("SATA OK\n");
 | |
| 	else
 | |
| 		printf("SATA NG, data = %08x\n", (unsigned int)data);
 | |
| }
 | |
| 
 | |
| static void test_pci(void)
 | |
| {
 | |
| 	writel(0x80001800, 0xfe0401c0);
 | |
| 	printf("PCI CN1 ID = %08x\n", readl(0xfe040220));
 | |
| 
 | |
| 	writel(0x80001000, 0xfe0401c0);
 | |
| 	printf("PCI CN2 ID = %08x\n", readl(0xfe040220));
 | |
| }
 | |
| 
 | |
| int do_hw_test(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 | |
| {
 | |
| 	char *cmd;
 | |
| 
 | |
| 	if (argc != 2)
 | |
| 		return cmd_usage(cmdtp);
 | |
| 
 | |
| 	cmd = argv[1];
 | |
| 	switch (cmd[0]) {
 | |
| 	case 'a':	/* all */
 | |
| 		test_pld();
 | |
| 		test_led();
 | |
| 		test_dipsw();
 | |
| 		test_sm107();
 | |
| 		test_net();
 | |
| 		test_sata();
 | |
| 		test_pci();
 | |
| 		break;
 | |
| 	case 'p':	/* pld or pci */
 | |
| 		if (cmd[1] == 'l')
 | |
| 			test_pld();
 | |
| 		else
 | |
| 			test_pci();
 | |
| 		break;
 | |
| 	case 'l':	/* led */
 | |
| 		test_led();
 | |
| 		break;
 | |
| 	case 'd':	/* dipsw */
 | |
| 		test_dipsw();
 | |
| 		break;
 | |
| 	case 's':	/* sm107 or sata */
 | |
| 		if (cmd[1] == 'm')
 | |
| 			test_sm107();
 | |
| 		else
 | |
| 			test_sata();
 | |
| 		break;
 | |
| 	case 'n':	/* net */
 | |
| 		test_net();
 | |
| 		break;
 | |
| 	default:
 | |
| 		return cmd_usage(cmdtp);
 | |
| 	}
 | |
| 
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| U_BOOT_CMD(
 | |
| 	hwtest,	2,	1,	do_hw_test,
 | |
| 	"hardware test for R0P7785LC0011RL board",
 | |
| 	"\n"
 | |
| 	"hwtest all   - test all hardware\n"
 | |
| 	"hwtest pld   - output PLD version\n"
 | |
| 	"hwtest led   - turn on LEDs\n"
 | |
| 	"hwtest dipsw - test DIP switch\n"
 | |
| 	"hwtest sm107 - output SM107 version\n"
 | |
| 	"hwtest net   - check RTL8110 ID\n"
 | |
| 	"hwtest sata  - check SiI3512 ID\n"
 | |
| 	"hwtest pci   - output PCI slot device ID"
 | |
| );
 |