xref: /rk3399_rockchip-uboot/board/compulab/cl-som-am57x/cl-som-am57x.c (revision 1a4f6af8bfd44c8ae6e87a81ff125eed47042cc5)
146650d58SDmitry Lifshitz /*
246650d58SDmitry Lifshitz  * Board functions for CompuLab cl_som_am57x board
346650d58SDmitry Lifshitz  *
446650d58SDmitry Lifshitz  * (C) Copyright 2016 CompuLab, Ltd. http://compulab.co.il/
546650d58SDmitry Lifshitz  *
646650d58SDmitry Lifshitz  * Author: Dmitry Lifshitz <lifshitz@compulab.co.il>
746650d58SDmitry Lifshitz  *
846650d58SDmitry Lifshitz  * SPDX-License-Identifier:	GPL-2.0+
946650d58SDmitry Lifshitz  */
1046650d58SDmitry Lifshitz 
1146650d58SDmitry Lifshitz #include <common.h>
1246650d58SDmitry Lifshitz #include <palmas.h>
1346650d58SDmitry Lifshitz #include <usb.h>
1446650d58SDmitry Lifshitz #include <asm/gpio.h>
1546650d58SDmitry Lifshitz #include <asm/arch/mmc_host_def.h>
1646650d58SDmitry Lifshitz #include <asm/arch/sys_proto.h>
17965c509fSDmitry Lifshitz #include "../common/common.h"
18965c509fSDmitry Lifshitz #include "../common/eeprom.h"
19*99ed6217SFaiz Abbas #include <asm/omap_common.h>
2046650d58SDmitry Lifshitz 
2146650d58SDmitry Lifshitz DECLARE_GLOBAL_DATA_PTR;
2246650d58SDmitry Lifshitz 
2346650d58SDmitry Lifshitz const struct omap_sysinfo sysinfo = {
2446650d58SDmitry Lifshitz 	"Board: CL-SOM-AM57x\n"
2546650d58SDmitry Lifshitz };
2646650d58SDmitry Lifshitz 
board_init(void)2746650d58SDmitry Lifshitz int board_init(void)
2846650d58SDmitry Lifshitz {
2946650d58SDmitry Lifshitz 	/* Disable PMIC Powerhold feature, DEV_CTRL.DEV_ON = 1 */
3046650d58SDmitry Lifshitz 	palmas_i2c_write_u8(TPS65903X_CHIP_P1, 0xA0, 0x1);
3146650d58SDmitry Lifshitz 
3246650d58SDmitry Lifshitz 	gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
3346650d58SDmitry Lifshitz 
3446650d58SDmitry Lifshitz 	return 0;
3546650d58SDmitry Lifshitz }
3646650d58SDmitry Lifshitz 
374aa2ba3aSMasahiro Yamada #ifdef CONFIG_MMC
3846650d58SDmitry Lifshitz #define SB_SOM_CD_GPIO 187
3946650d58SDmitry Lifshitz #define SB_SOM_WP_GPIO 188
4046650d58SDmitry Lifshitz 
board_mmc_init(bd_t * bis)4146650d58SDmitry Lifshitz int board_mmc_init(bd_t *bis)
4246650d58SDmitry Lifshitz {
4346650d58SDmitry Lifshitz 	int ret0, ret1;
4446650d58SDmitry Lifshitz 
4546650d58SDmitry Lifshitz 	ret0 = omap_mmc_init(0, 0, 0, SB_SOM_CD_GPIO, SB_SOM_WP_GPIO);
4646650d58SDmitry Lifshitz 	if (ret0)
4746650d58SDmitry Lifshitz 		printf("cl-som-am57x: failed to initialize mmc0\n");
4846650d58SDmitry Lifshitz 
4946650d58SDmitry Lifshitz 	ret1 = omap_mmc_init(1, 0, 0, -1, -1);
5046650d58SDmitry Lifshitz 	if (ret1)
5146650d58SDmitry Lifshitz 		printf("cl-som-am57x: failed to initialize mmc1\n");
5246650d58SDmitry Lifshitz 
5346650d58SDmitry Lifshitz 	return ret0 && ret1;
5446650d58SDmitry Lifshitz }
554aa2ba3aSMasahiro Yamada #endif /* CONFIG_MMC */
5646650d58SDmitry Lifshitz 
misc_init_r(void)57965c509fSDmitry Lifshitz int misc_init_r(void)
58965c509fSDmitry Lifshitz {
59965c509fSDmitry Lifshitz 	cl_print_pcb_info();
60965c509fSDmitry Lifshitz 
61965c509fSDmitry Lifshitz 	return 0;
62965c509fSDmitry Lifshitz }
63965c509fSDmitry Lifshitz 
get_board_rev(void)64965c509fSDmitry Lifshitz u32 get_board_rev(void)
65965c509fSDmitry Lifshitz {
66965c509fSDmitry Lifshitz 	return cl_eeprom_get_board_rev(CONFIG_SYS_I2C_EEPROM_BUS);
67965c509fSDmitry Lifshitz }
68*99ed6217SFaiz Abbas 
board_usb_init(int index,enum usb_init_type init)69*99ed6217SFaiz Abbas int board_usb_init(int index, enum usb_init_type init)
70*99ed6217SFaiz Abbas {
71*99ed6217SFaiz Abbas 	enable_usb_clocks(index);
72*99ed6217SFaiz Abbas 	return 0;
73*99ed6217SFaiz Abbas }
74*99ed6217SFaiz Abbas 
board_usb_cleanup(int index,enum usb_init_type init)75*99ed6217SFaiz Abbas int board_usb_cleanup(int index, enum usb_init_type init)
76*99ed6217SFaiz Abbas {
77*99ed6217SFaiz Abbas 	disable_usb_clocks(index);
78*99ed6217SFaiz Abbas 	return 0;
79*99ed6217SFaiz Abbas }
80