1 /* 2 * (C) Copyright 2016 Rockchip Electronics Co., Ltd 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 #include <common.h> 7 #include <dm.h> 8 #include <ram.h> 9 #include <dm/pinctrl.h> 10 #include <dm/uclass-internal.h> 11 #include <asm/arch/periph.h> 12 #include <power/regulator.h> 13 14 DECLARE_GLOBAL_DATA_PTR; 15 16 int board_init(void) 17 { 18 struct udevice *pinctrl, *regulator; 19 int ret; 20 21 /* 22 * The PWM do not have decicated interrupt number in dts and can 23 * not get periph_id by pinctrl framework, so let's init them here. 24 * The PWM2 and PWM3 are for pwm regulater. 25 */ 26 ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl); 27 if (ret) { 28 debug("%s: Cannot find pinctrl device\n", __func__); 29 goto out; 30 } 31 32 ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_PWM2); 33 if (ret) { 34 debug("%s PWM2 pinctrl init fail!\n", __func__); 35 goto out; 36 } 37 38 ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_PWM3); 39 if (ret) { 40 debug("%s PWM3 pinctrl init fail!\n", __func__); 41 goto out; 42 } 43 44 ret = regulators_enable_boot_on(false); 45 if (ret) 46 debug("%s: Cannot enable boot on regulator\n", __func__); 47 48 ret = regulator_get_by_platname("vcc5v0_host", ®ulator); 49 if (ret) { 50 debug("%s vcc5v0_host init fail! ret %d\n", __func__, ret); 51 goto out; 52 } 53 54 ret = regulator_set_enable(regulator, true); 55 if (ret) { 56 debug("%s vcc5v0-host-en set fail!\n", __func__); 57 goto out; 58 } 59 60 out: 61 return 0; 62 } 63 64 int dram_init(void) 65 { 66 struct ram_info ram; 67 struct udevice *dev; 68 int ret; 69 70 ret = uclass_get_device(UCLASS_RAM, 0, &dev); 71 if (ret) { 72 debug("DRAM init failed: %d\n", ret); 73 return ret; 74 } 75 ret = ram_get_info(dev, &ram); 76 if (ret) { 77 debug("Cannot get DRAM size: %d\n", ret); 78 return ret; 79 } 80 debug("SDRAM base=%llx, size=%x\n", ram.base, (unsigned int)ram.size); 81 gd->ram_size = ram.size; 82 83 return 0; 84 } 85 86 int dram_init_banksize(void) 87 { 88 /* Reserve 0x200000 for ATF bl31 */ 89 gd->bd->bi_dram[0].start = 0x200000; 90 gd->bd->bi_dram[0].size = 0x7e000000; 91 92 return 0; 93 } 94