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