8709b5677c88665ef92c74d7ee94fb115b0ddc6e
[profile/mobile/platform/kernel/u-boot-tm1.git] / board / spreadtrum / sp8815ga / openphone.c
1 #include <common.h>
2 #include <asm/io.h>
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>
9 #include <part.h>
10 #include <sdhci.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;
16
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 int sound_init(void);
22 extern void init_ldo_sleep_gr(void);
23
24 #define GPIO_CP2_RFCTL      73
25
26 #ifdef CONFIG_GENERIC_MMC
27 int mv_sdh_init(u32 regbase, u32 max_clk, u32 min_clk, u32 quirks);
28 int mmc_sdcard_init();
29
30 int board_mmc_init(bd_t *bd)
31 {
32         mmc_sdcard_init();
33
34         mv_sdh_init(CONFIG_SYS_SD_BASE, SDIO_BASE_CLK_192M,
35                         SDIO_CLK_250K, 0);
36
37         return 0;
38 }
39 #endif
40
41 extern struct eic_gpio_resource sprd_gpio_resource[];
42
43 static void cp2_rfctl_init(void)
44 {
45         sprd_gpio_request(NULL,GPIO_CP2_RFCTL);
46         sprd_gpio_direction_output(NULL, GPIO_CP2_RFCTL, 1);
47         sprd_gpio_set(NULL, GPIO_CP2_RFCTL, 1);
48 }
49
50 typedef enum
51 {
52         TD_MODE,
53         W_MODE
54 }COMM_STD_MODE_E;
55 static void TD_comm_misc_init(COMM_STD_MODE_E csm)
56 {
57         if(TD_MODE == csm){
58                 REG32(REG_AON_APB_WTG_TEST) |= BIT_TG_DAC_OUT_SEL;
59         }
60         REG32(REG_AON_APB_BB_BG_CTRL) |= (BIT_BB_REF_AUTO_PD_EN|BIT_BB_LDO_FORCE_ON|BIT_BB_BG_FORCE_ON);
61         REG32(REG_AON_APB_RES_REG0) |= BIT_BB_LDO_AUTO_EN;
62 }
63 int board_init()
64 {
65         gd->bd->bi_arch_number = MACH_TYPE_OPENPHONE;
66         gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
67         ADI_init();
68         misc_init();
69         LDO_Init();
70         ADC_Init();
71         pin_init();
72         sprd_eic_init();
73         sprd_gpio_init();
74         sound_init();
75         init_ldo_sleep_gr();
76         if(ANA_GET_CHIP_ID() != 0x2711a000){
77                 TDPllRefConfig(1);
78         }
79         cp2_rfctl_init();
80         TD_comm_misc_init(TD_MODE);
81         return 0;
82 }
83
84 int dram_init(void)
85 {
86         gd->ram_size = get_ram_size((volatile void *)PHYS_SDRAM_1,
87                         PHYS_SDRAM_1_SIZE);
88         return 0;
89 }