3 #include <asm/arch/ldo.h>
4 #include <asm/arch/sprd_reg_ahb.h>
5 #include <asm/arch/regs_ahb.h>
6 #include <asm/arch/common.h>
7 #include <asm/arch/adi_hal_internal.h>
8 #include <asm/u-boot.h>
11 #include <asm/arch/mfp.h>
12 #include <linux/gpio.h>
13 #include <asm/arch/gpio.h>
14 #include <asm/arch/pinmap.h>
15 DECLARE_GLOBAL_DATA_PTR;
17 extern void sprd_gpio_init(void);
18 extern void ADI_init (void);
19 extern int LDO_Init(void);
20 extern void ADC_Init(void);
21 extern void init_ldo_sleep_gr(void);
23 #ifdef CONFIG_GENERIC_MMC
24 int mv_sdh_init(u32 regbase, u32 max_clk, u32 min_clk, u32 quirks);
25 int mmc_sdcard_init();
27 int board_mmc_init(bd_t *bd)
31 mv_sdh_init(SDIO0_BASE_ADDR, SDIO_BASE_CLK_384M,
38 extern struct eic_gpio_resource sprd_gpio_resource[];
40 #ifdef CONFIG_HARDWARE_VERSION
41 #define GPIO_BOARD_ID_VALUE 0x40280080
42 unsigned int get_hw_version()
44 //HW_REV_MOD:[0, 1, 2]; RFCTL:8, 9, 12; gpio:27, 28, 31; GPIO_BASE+0x80:gpio16-gpio31
46 unsigned int hw_version = 0;
49 REG32(GPIO_BOARD_ID_VALUE+0x4) |= (1<<11) | (1<<12) | (1<<15);
51 gpio_states = REG32(GPIO_BOARD_ID_VALUE);
53 //HW Ver0.3 [0, 1, 2] values is [0, 1, 0]
55 ((gpio_states & (1<<15)) >> 13) |
56 ((gpio_states & (1<<12)) >> 11) |
57 ((gpio_states & (1<<11)) >> 11)
60 printf("%s HW board ID values=%d\n", __FUNCTION__, hw_version);
68 gd->bd->bi_arch_number = MACH_TYPE_OPENPHONE;
69 gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
83 PUBLIC phys_size_t get_dram_size_from_gd(void)
90 #ifdef CONFIG_DDR_AUTO_DETECT
91 ulong sdram_base = CONFIG_SYS_SDRAM_BASE;
96 ulong bank_cnt = CONFIG_NR_DRAM_BANKS_ADDR_IN_IRAM;
98 for (i = 1; i <= *(volatile uint32 *)CONFIG_NR_DRAM_BANKS_ADDR_IN_IRAM; i++) {
99 gd->ram_size += *(volatile ulong *)((volatile ulong *)CONFIG_NR_DRAM_BANKS_ADDR_IN_IRAM + i);
102 gd->ram_size = get_ram_size((volatile void *)sdram_base, gd->ram_size);
104 gd->ram_size = get_ram_size((volatile void *)PHYS_SDRAM_1,
110 void fdt_fixup_chosen_bootargs_board(char *buf, const char *boot_mode, int calibration_mode)
114 * Because of in u-boot, we can't find FDT chosen remove function
115 * and samsung only uses uart to do calibration,
116 * so in samsung board .dts, we remove the "console=ttyS1,115200n8" in chosen node by default.
117 * so in normal mode, we need to append console
119 if (!calibration_mode) {
120 p += sprintf(p, "console=ttyS1,115200n8 no_console_suspend");