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