mirror of
https://github.com/revyos/th1520-vendor-uboot.git
synced 2026-09-16 12:22:14 +02:00
2741 lines
92 KiB
C
2741 lines
92 KiB
C
/*
|
|
* Copyright (C) 2017-2020 Alibaba Group Holding Limited
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <command.h>
|
|
#include <asm/io.h>
|
|
#include <asm/types.h>
|
|
#include <thead/clock_config.h>
|
|
#include <linux/bitops.h>
|
|
#include <asm/arch-thead/light-iopmp.h>
|
|
#include <memalign.h>
|
|
#include <fdt_support.h>
|
|
#include <fs.h>
|
|
#include <asm/global_data.h>
|
|
|
|
#define SOC_PIN_AP_RIGHT_TOP (0x0)
|
|
#define SOC_PIN_AP_LEFT_TOP (0x1)
|
|
#define SOC_PIN_AON (0x2)
|
|
|
|
#define PAD_GRP_BASE_SET(x) (x << 12)
|
|
#define PAD_GRP_IDX_GET(x) ( (x >> 12) & 0xF)
|
|
#define PAD_INDEX(x) (x & 0xFFF)
|
|
|
|
#define LIGHT_GPIO1_BADDR 0xffec006000
|
|
#define LIGHT_GPIO2_BADDR 0xffe7f34000
|
|
#define LIGHT_GPIO3_BADDR 0xffe7f38000
|
|
#define LIGHT_GPIO1_13 (0x1 << 13)
|
|
#define LIGHT_GPIO3_21 (0x1 << 21)
|
|
#define LIGHT_GPIO2_26 (0x1 << 26)
|
|
#define LIGHT_GPIO2_28 (0x1 << 28)
|
|
|
|
#define GMAC0_APB3S_BADDR 0xffec003000
|
|
#define GMAC1_APB3S_BADDR 0xffec004000
|
|
|
|
static uint64_t apb3s_baddr;
|
|
extern int check_image_board_id(uint8_t *image_data);
|
|
|
|
typedef enum {
|
|
UART0_TXD = PAD_GRP_BASE_SET(SOC_PIN_AP_RIGHT_TOP),
|
|
UART0_RXD,
|
|
QSPI0_SCLK,
|
|
QSPI0_CSN0,
|
|
QSPI0_CSN1,
|
|
QSPI0_D0_MOSI,
|
|
QSPI0_D1_MISO,
|
|
QSPI0_D2_WP,
|
|
QSPI0_D3_HOLD,
|
|
I2C2_SCL,
|
|
I2C2_SDA,
|
|
I2C3_SCL,
|
|
I2C3_SDA,
|
|
GPIO2_13,
|
|
SPI_SCLK,
|
|
SPI_CSN,
|
|
SPI_MOSI,
|
|
SPI_MISO,
|
|
GPIO2_18,
|
|
GPIO2_19,
|
|
GPIO2_20,
|
|
GPIO2_21,
|
|
GPIO2_22,
|
|
GPIO2_23,
|
|
GPIO2_24,
|
|
GPIO2_25,
|
|
SDIO0_WPRTN,
|
|
SDIO0_DETN,
|
|
SDIO1_WPRTN,
|
|
SDIO1_DETN,
|
|
GPIO2_30,
|
|
GPIO2_31,
|
|
GPIO3_0,
|
|
GPIO3_1,
|
|
GPIO3_2,
|
|
GPIO3_3,
|
|
HDMI_SCL,
|
|
HDMI_SDA,
|
|
HDMI_CEC,
|
|
GMAC0_TX_CLK,
|
|
GMAC0_RX_CLK,
|
|
GMAC0_TXEN,
|
|
GMAC0_TXD0,
|
|
GMAC0_TXD1,
|
|
GMAC0_TXD2,
|
|
GMAC0_TXD3,
|
|
GMAC0_RXDV,
|
|
GMAC0_RXD0,
|
|
GMAC0_RXD1,
|
|
GMAC0_RXD2,
|
|
GMAC0_RXD3,
|
|
GMAC0_MDC,
|
|
GMAC0_MDIO,
|
|
GMAC0_COL,
|
|
GMAC0_CRS,
|
|
|
|
QSPI1_SCLK = PAD_GRP_BASE_SET(SOC_PIN_AP_LEFT_TOP),
|
|
QSPI1_CSN0,
|
|
QSPI1_D0_MOSI,
|
|
QSPI1_D1_MISO,
|
|
QSPI1_D2_WP,
|
|
QSPI1_D3_HOLD,
|
|
I2C0_SCL,
|
|
I2C0_SDA,
|
|
I2C1_SCL,
|
|
I2C1_SDA,
|
|
UART1_TXD,
|
|
UART1_RXD,
|
|
UART4_TXD,
|
|
UART4_RXD,
|
|
UART4_CTSN,
|
|
UART4_RTSN,
|
|
UART3_TXD,
|
|
UART3_RXD,
|
|
GPIO0_18,
|
|
GPIO0_19,
|
|
GPIO0_20,
|
|
GPIO0_21,
|
|
GPIO0_22,
|
|
GPIO0_23,
|
|
GPIO0_24,
|
|
GPIO0_25,
|
|
GPIO0_26,
|
|
GPIO0_27,
|
|
GPIO0_28,
|
|
GPIO0_29,
|
|
GPIO0_30,
|
|
GPIO0_31,
|
|
GPIO1_0,
|
|
GPIO1_1,
|
|
GPIO1_2,
|
|
GPIO1_3,
|
|
GPIO1_4,
|
|
GPIO1_5,
|
|
GPIO1_6,
|
|
GPIO1_7,
|
|
GPIO1_8,
|
|
GPIO1_9,
|
|
GPIO1_10,
|
|
GPIO1_11,
|
|
GPIO1_12,
|
|
GPIO1_13,
|
|
GPIO1_14,
|
|
GPIO1_15,
|
|
GPIO1_16,
|
|
CLK_OUT_0,
|
|
CLK_OUT_1,
|
|
CLK_OUT_2,
|
|
CLK_OUT_3,
|
|
GPIO1_21,
|
|
GPIO1_22,
|
|
GPIO1_23,
|
|
GPIO1_24,
|
|
GPIO1_25,
|
|
GPIO1_26,
|
|
GPIO1_27,
|
|
GPIO1_28,
|
|
GPIO1_29,
|
|
GPIO1_30,
|
|
|
|
OSC_CLK_IN= PAD_GRP_BASE_SET(SOC_PIN_AON),
|
|
OSC_CLK_OUT,
|
|
SYS_RST_N,
|
|
RTC_CLK_IN,
|
|
RTC_CLK_OUT,
|
|
TEST_MODE,
|
|
DFT_PROT_DIS_0,
|
|
DEBUG_MODE,
|
|
POR_SEL,
|
|
I2C_AON_SCL,
|
|
I2C_AON_SDA,
|
|
CPU_JTG_TCLK,
|
|
CPU_JTG_TMS,
|
|
CPU_JTG_TDI,
|
|
CPU_JTG_TDO,
|
|
CPU_JTG_TRST,
|
|
AOGPIO_7,
|
|
AOGPIO_8,
|
|
AOGPIO_9,
|
|
AOGPIO_10,
|
|
AOGPIO_11,
|
|
AOGPIO_12,
|
|
AOGPIO_13,
|
|
AOGPIO_14,
|
|
AOGPIO_15,
|
|
AUDIO_PA0,
|
|
AUDIO_PA1,
|
|
AUDIO_PA2,
|
|
AUDIO_PA3,
|
|
AUDIO_PA4,
|
|
AUDIO_PA5,
|
|
AUDIO_PA6,
|
|
AUDIO_PA7,
|
|
AUDIO_PA8,
|
|
AUDIO_PA9,
|
|
AUDIO_PA10,
|
|
AUDIO_PA11,
|
|
AUDIO_PA12,
|
|
AUDIO_PA13,
|
|
AUDIO_PA14,
|
|
AUDIO_PA15,
|
|
AUDIO_PA16,
|
|
AUDIO_PA17,
|
|
AUDIO_PA27,
|
|
AUDIO_PA28,
|
|
AUDIO_PA29,
|
|
AUDIO_PA30,
|
|
} pin_name_t;
|
|
|
|
enum {
|
|
PIN_PD,
|
|
PIN_PU,
|
|
PIN_PN,
|
|
};
|
|
|
|
enum {
|
|
PIN_SPEED_NORMAL,
|
|
PIN_SPEED_FAST
|
|
};
|
|
|
|
#define PIN_DRV_MAX (15)
|
|
|
|
#define USBPHY_TEST_CTRL2 0xFFEC03F02C
|
|
#define USBPHY_TEST_CTRL3 0xFFEC03F030
|
|
|
|
#define SYSCLK_USB_CTRL 0xFFFC02D104
|
|
#define REF_SSP_EN 0xFFEC03F034
|
|
#define USB3_DRD_SWRST 0xFFEC02C014
|
|
#define SOC_OM_ADDRBASE 0xFFEF018010
|
|
|
|
#define ISO7816_CARD_ADDRBASE 0xFFF7F30000
|
|
#define REG_CONFIG_OFF 0x10
|
|
#define MIE (1<<7)
|
|
|
|
#define LIGHT_IOPMP_DEFAULT_ATTR 0xffffffff
|
|
#define LIGHT_IOPMP_DEFAULT_OFF 0xc0
|
|
#ifndef CONFIG_TARGET_LIGHT_FPGA_FM_C910
|
|
|
|
#define PADMUX_REG_ADDR(base,index) ((void*)(base) + ((index >> 3) << 2))
|
|
#define PADMUX_REG_BIT_POS(index) ((index & 0x7) << 2)
|
|
#define PADMUX_REG_MASK(index) (0xF << PADMUX_REG_BIT_POS(index))
|
|
|
|
#define PADCFG_REG_ADDR(base,index) ((void*)(base) + ((index >> 1) << 2))
|
|
#define PADCFG_REG_BIT_POS(index) ((index & 0x1) << 4)
|
|
#define PADCFG_REG_PULL_MASK(index) (0x70 << PADCFG_REG_BIT_POS(index))
|
|
#define PADCFG_REG_DRV_MASK(index) (0xF << PADCFG_REG_BIT_POS(index))
|
|
#define PADCFG_REG_SLEW_MASK(index) (0x100 << PADCFG_REG_BIT_POS(index))
|
|
|
|
|
|
#define PADMUX_CFG(grp_addr_base,index,pin_func) \
|
|
{ \
|
|
uint32_t val; \
|
|
val = readl(PADMUX_REG_ADDR(grp_addr_base,index)); \
|
|
val &=~PADMUX_REG_MASK(index); \
|
|
val |= pin_func << PADMUX_REG_BIT_POS(index); \
|
|
writel(val,PADMUX_REG_ADDR(grp_addr_base,index)); \
|
|
}
|
|
|
|
#define PADCFG_PULL(grp_addr_base,index,bpull,bpullup) \
|
|
{ \
|
|
uint32_t val; \
|
|
val = readl(PADCFG_REG_ADDR(grp_addr_base,index)); \
|
|
val &=~PADCFG_REG_PULL_MASK(index); \
|
|
val |= ((bpull<<4)|(bpullup<<5)) << PADCFG_REG_BIT_POS(index); \
|
|
writel(val,PADCFG_REG_ADDR(grp_addr_base,index)); \
|
|
}
|
|
|
|
#define PADCFG_SLEW(grp_addr_base,index,bfast) \
|
|
{ \
|
|
uint32_t val; \
|
|
val = readl(PADCFG_REG_ADDR(grp_addr_base,index)); \
|
|
val &=~PADCFG_REG_SLEW_MASK(index); \
|
|
val |= (bfast<<8) << PADCFG_REG_BIT_POS(index); \
|
|
writel(val,PADCFG_REG_ADDR(grp_addr_base,index)); \
|
|
}
|
|
|
|
#define PADCFG_DRV(grp_addr_base,index,strength) \
|
|
{ \
|
|
uint32_t val; \
|
|
val = readl(PADCFG_REG_ADDR(grp_addr_base,index)); \
|
|
val &=~PADCFG_REG_DRV_MASK(index); \
|
|
val |= (strength) << PADCFG_REG_BIT_POS(index); \
|
|
writel(val,PADCFG_REG_ADDR(grp_addr_base,index)); \
|
|
}
|
|
|
|
struct pinmux_addr_t {
|
|
uint32_t pin_grp_id;
|
|
uint32_t *pin_grp_cfg_base;
|
|
uint32_t *pin_grp_mux_base;
|
|
};
|
|
|
|
#define PIN_GRP_ADDR_DEF(grp_idx,cfg_base,mux_base) \
|
|
{ \
|
|
.pin_grp_id = grp_idx, \
|
|
.pin_grp_cfg_base =(uint32_t*) cfg_base, \
|
|
.pin_grp_mux_base =(uint32_t*) mux_base, \
|
|
}
|
|
|
|
struct pinmux_addr_t g_soc_pin_grp_addr[] = {
|
|
PIN_GRP_ADDR_DEF(SOC_PIN_AP_RIGHT_TOP, 0xFFEC007000,0xFFEC007400),
|
|
PIN_GRP_ADDR_DEF(SOC_PIN_AP_LEFT_TOP, 0xFFE7F3C000,0xFFE7F3C400),
|
|
PIN_GRP_ADDR_DEF(SOC_PIN_AON, 0xFFFFF4A000,0xFFFFF4A400),
|
|
};
|
|
|
|
static void iso7816_card_glb_interrupt_disable(void)
|
|
{
|
|
writel(readl((void *)(ISO7816_CARD_ADDRBASE + REG_CONFIG_OFF)) & (~MIE), (void *)(ISO7816_CARD_ADDRBASE + REG_CONFIG_OFF));
|
|
}
|
|
|
|
static int light_pinmx_get_cfg_base(pin_name_t pin_name, uint32_t** cfg_base)
|
|
{
|
|
uint32_t grp_num = ARRAY_SIZE(g_soc_pin_grp_addr);
|
|
uint32_t grp_idx = PAD_GRP_IDX_GET(pin_name);
|
|
uint32_t i;
|
|
|
|
for(i = 0; i < grp_num; i++) {
|
|
if (grp_idx == g_soc_pin_grp_addr[i].pin_grp_id)
|
|
break;
|
|
}
|
|
|
|
if (i == grp_num)
|
|
return -1;
|
|
|
|
*cfg_base = g_soc_pin_grp_addr[i].pin_grp_cfg_base;
|
|
return 0;
|
|
}
|
|
|
|
static int light_pinmx_get_mux_base(pin_name_t pin_name, uint32_t** cfg_base)
|
|
{
|
|
uint32_t grp_num = ARRAY_SIZE(g_soc_pin_grp_addr);
|
|
uint32_t grp_idx = PAD_GRP_IDX_GET(pin_name);
|
|
uint32_t i;
|
|
|
|
for(i = 0; i < grp_num; i++) {
|
|
if (grp_idx == g_soc_pin_grp_addr[i].pin_grp_id)
|
|
break;
|
|
}
|
|
|
|
if (i == grp_num)
|
|
return -1;
|
|
|
|
*cfg_base = g_soc_pin_grp_addr[i].pin_grp_mux_base;
|
|
return 0;
|
|
}
|
|
|
|
/*******************************************************************************
|
|
* function: danica_ioreuse_inital
|
|
*
|
|
* description:
|
|
* initial danica_pinmux
|
|
*******************************************************************************/
|
|
static inline int light_pin_pllmode(pin_name_t pin_name, uint32_t mode)
|
|
{
|
|
uint32_t bpull,bpullup;
|
|
uint32_t *reg_addr;
|
|
int ret;
|
|
|
|
ret = light_pinmx_get_cfg_base(pin_name,®_addr);
|
|
if (ret)
|
|
return ret;
|
|
|
|
switch (mode)
|
|
{
|
|
case PIN_PD:
|
|
bpull =1;
|
|
bpullup = 0;
|
|
/* code */
|
|
break;
|
|
case PIN_PU:
|
|
bpull =1;
|
|
bpullup = 1;
|
|
/* code */
|
|
break;
|
|
case PIN_PN:
|
|
bpull =0;
|
|
bpullup = 0;
|
|
/* code */
|
|
break;
|
|
default:
|
|
return -1;
|
|
break;
|
|
}
|
|
PADCFG_PULL(reg_addr,PAD_INDEX(pin_name),bpull,bpullup);
|
|
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
\brief set pin speed
|
|
\param[in] pin_name pin name, defined in soc.h.
|
|
\param[in] speed io speed
|
|
\return error code
|
|
*/
|
|
static inline int light_pin_speed(pin_name_t pin_name, uint32_t speed)
|
|
{
|
|
uint32_t bfast;
|
|
uint32_t *reg_addr;
|
|
int ret;
|
|
|
|
ret = light_pinmx_get_cfg_base(pin_name,®_addr);
|
|
if (ret)
|
|
return ret;
|
|
|
|
switch (speed)
|
|
{
|
|
case PIN_SPEED_NORMAL:
|
|
bfast = 0;
|
|
break;
|
|
case PIN_SPEED_FAST:
|
|
bfast = 1;
|
|
break;
|
|
default:
|
|
return -1;
|
|
}
|
|
|
|
PADCFG_SLEW(reg_addr,PAD_INDEX(pin_name),bfast);
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
\brief set pin drive
|
|
\param[in] pin_name pin name, defined in soc.h.
|
|
\param[in] drive io drive
|
|
\return error code
|
|
*/
|
|
static inline int light_pin_drv_strength(pin_name_t pin_name, uint32_t strength)
|
|
{
|
|
uint32_t *reg_addr;
|
|
int ret;
|
|
|
|
ret = light_pinmx_get_cfg_base(pin_name,®_addr);
|
|
if (ret)
|
|
return ret;
|
|
|
|
if(strength > PIN_DRV_MAX) {
|
|
return -1;
|
|
}
|
|
|
|
PADCFG_DRV(reg_addr,PAD_INDEX(pin_name),strength);
|
|
return 0;
|
|
}
|
|
|
|
int light_pin_mux(pin_name_t pin_name, uint32_t pin_func)
|
|
{
|
|
uint32_t *reg_addr;
|
|
int ret;
|
|
|
|
ret = light_pinmx_get_mux_base(pin_name,®_addr);
|
|
if (ret)
|
|
return ret;
|
|
|
|
PADMUX_CFG(reg_addr,PAD_INDEX(pin_name),pin_func);
|
|
return 0;
|
|
}
|
|
|
|
int light_pin_cfg(pin_name_t pin_name,uint32_t slew_rate, uint32_t pullmode,uint32_t drvstrength)
|
|
{
|
|
int ret;
|
|
|
|
ret = light_pin_speed(pin_name,slew_rate);
|
|
if (ret)
|
|
return ret;
|
|
ret = light_pin_pllmode(pin_name,pullmode);
|
|
if (ret )
|
|
return ret;
|
|
ret = light_pin_drv_strength(pin_name,drvstrength);
|
|
|
|
return ret;
|
|
}
|
|
#endif
|
|
|
|
static struct light_iopmp_list {
|
|
int iopmp_type;
|
|
u64 reg;
|
|
} light_iopmp_lists[] = {
|
|
{IOPMP_EMMC, 0xFFFC028000},
|
|
{IOPMP_SDIO0, 0xFFFC029000},
|
|
{IOPMP_SDIO1, 0xFFFC02A000},
|
|
{IOPMP_USB0, 0xFFFC02E000},
|
|
{IOPMP_AO, 0xFFFFC21000},
|
|
{IOPMP_AUD, 0xFFFFC22000},
|
|
{IOPMP_CHIP_DBG, 0xFFFFC37000},
|
|
{IOPMP_EIP120I, 0xFFFF220000},
|
|
{IOPMP_EIP120II, 0xFFFF230000},
|
|
{IOPMP_EIP120III, 0xFFFF240000},
|
|
{IOPMP_ISP0, 0xFFF4080000},
|
|
{IOPMP_ISP1, 0xFFF4081000},
|
|
{IOPMP_DW200, 0xFFF4082000},
|
|
{IOPMP_VIPRE, 0xFFF4083000},
|
|
{IOPMP_VENC, 0xFFFCC60000},
|
|
{IOPMP_VDEC, 0xFFFCC61000},
|
|
{IOPMP_G2D, 0xFFFCC62000},
|
|
{IOPMP_FCE, 0xFFFCC63000},
|
|
{IOPMP_NPU, 0xFFFF01C000},
|
|
{IOPMP0_DPU, 0xFFFF520000},
|
|
{IOPMP1_DPU, 0xFFFF521000},
|
|
{IOPMP_GPU, 0xFFFF522000},
|
|
{IOPMP_GMAC1, 0xFFFC001000},
|
|
{IOPMP_GMAC2, 0xFFFC002000},
|
|
{IOPMP_DMAC, 0xFFFFC20000},
|
|
{IOPMP_TEE_DMAC, 0xFFFF250000},
|
|
{IOPMP_DSP0, 0xFFFF058000},
|
|
{IOPMP_DSP1, 0xFFFF059000},
|
|
{IOPMP_AUDIO, 0xFFFFC22000},
|
|
{IOPMP_AUDIO0, 0xFFCB02E000},
|
|
{IOPMP_AUDIO1, 0xFFCB02F000},
|
|
};
|
|
|
|
static void light_iopmp_config(void)
|
|
{
|
|
int i = 0;
|
|
int entry_size;
|
|
|
|
entry_size = ARRAY_SIZE(light_iopmp_lists);
|
|
|
|
while (i < entry_size) {
|
|
writel(LIGHT_IOPMP_DEFAULT_ATTR, (void *)(light_iopmp_lists[i].reg) + LIGHT_IOPMP_DEFAULT_OFF);
|
|
i++;
|
|
}
|
|
}
|
|
|
|
void board_lmb_reserve(struct lmb *lmb)
|
|
{
|
|
lmb_add(lmb, (phys_addr_t)0x0, (phys_addr_t)0x20000000);
|
|
lmb_add(lmb, (phys_addr_t)0xffffef8000, (phys_addr_t)(64*1024));
|
|
lmb_add(lmb, (phys_addr_t)0xffc0000000, (phys_addr_t)(128 * 1024));
|
|
}
|
|
|
|
int dw_txclk_set_rate(u32 rate)
|
|
{
|
|
switch (rate) {
|
|
case 125000000:
|
|
writel(0x4, (void *)(apb3s_baddr + 0xc));
|
|
writel(0x80000004, (void *)(apb3s_baddr + 0xc));
|
|
break;
|
|
case 25000000:
|
|
writel(0x14, (void *)(apb3s_baddr + 0xc));
|
|
writel(0x80000014, (void *)(apb3s_baddr + 0xc));
|
|
break;
|
|
case 2500000:
|
|
writel(0xc8, (void *)(apb3s_baddr + 0xc));
|
|
writel(0x800000c8, (void *)(apb3s_baddr + 0xc));
|
|
break;
|
|
default:
|
|
return -EINVAL;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static void gmac_phy_rst(void)
|
|
{
|
|
//GPIO reset
|
|
writel(readl((void *)(LIGHT_GPIO3_BADDR + 0x4)) | LIGHT_GPIO3_21,
|
|
(void *)(LIGHT_GPIO3_BADDR + 0x4));
|
|
writel(readl((void *)(LIGHT_GPIO1_BADDR + 0x4)) | LIGHT_GPIO1_13,
|
|
(void *)(LIGHT_GPIO1_BADDR + 0x4));
|
|
|
|
writel(readl((void *)LIGHT_GPIO3_BADDR) & ~LIGHT_GPIO3_21,
|
|
(void *)LIGHT_GPIO3_BADDR);
|
|
writel(readl((void *)LIGHT_GPIO1_BADDR) & ~LIGHT_GPIO1_13,
|
|
(void *)LIGHT_GPIO1_BADDR);
|
|
wmb();
|
|
/* At least 10ms */
|
|
mdelay(50);
|
|
writel(readl((void *)LIGHT_GPIO3_BADDR) | LIGHT_GPIO3_21,
|
|
(void *)LIGHT_GPIO3_BADDR);
|
|
writel(readl((void *)LIGHT_GPIO1_BADDR) | LIGHT_GPIO1_13,
|
|
(void *)LIGHT_GPIO1_BADDR);
|
|
wmb();
|
|
}
|
|
|
|
static void gmac_glue_init(uint64_t apb3s_baddr)
|
|
{
|
|
/* Interface select mii:0 rgmii:1 */
|
|
//writel(0x0, (void *)(apb3s_baddr + 0x1c));
|
|
writel(0x1, (void *)(apb3s_baddr + 0x1c));
|
|
writel(0x7e, (void *)(apb3s_baddr + 0x0));
|
|
|
|
writel(0x4, (void *)(apb3s_baddr + 0xc));
|
|
writel(0x80000004, (void *)(apb3s_baddr + 0xc));
|
|
|
|
/* Clock source pad:0 pll:1 */
|
|
//writel(0x0, (void *)(apb3s_baddr + 0x18));
|
|
writel(0x1, (void *)(apb3s_baddr + 0x18));
|
|
|
|
/* tx clk direction output:0 input:1 */
|
|
//writel(0x1, (void *)(apb3s_baddr + 0x20));
|
|
writel(0x0, (void *)(apb3s_baddr + 0x20));
|
|
}
|
|
|
|
void gmac_hw_init(void)
|
|
{
|
|
gmac_phy_rst();
|
|
apb3s_baddr = GMAC1_APB3S_BADDR;
|
|
gmac_glue_init(apb3s_baddr);
|
|
apb3s_baddr = GMAC0_APB3S_BADDR;
|
|
gmac_glue_init(apb3s_baddr);
|
|
}
|
|
|
|
static void wifi_en(void)
|
|
{
|
|
uint32_t val;
|
|
|
|
writel(readl((void *)(LIGHT_GPIO2_BADDR + 0x4)) | LIGHT_GPIO2_26 | LIGHT_GPIO2_28,
|
|
(void *)(LIGHT_GPIO2_BADDR + 0x4));
|
|
|
|
/* kernel driver will reset wifi module */
|
|
val = readl((void *)LIGHT_GPIO2_BADDR);
|
|
val |= LIGHT_GPIO2_26 | LIGHT_GPIO2_28;
|
|
writel(val, (void *)LIGHT_GPIO2_BADDR);
|
|
}
|
|
|
|
static void usb_phy_test_config(void)
|
|
{
|
|
writel(0x77F, (void *)USBPHY_TEST_CTRL3);
|
|
writel(0x15150F0, (void *)USBPHY_TEST_CTRL2);
|
|
}
|
|
|
|
static void usb_clk_config(void)
|
|
{
|
|
writel(readl((void *)SYSCLK_USB_CTRL) | 0xf, (void *)SYSCLK_USB_CTRL);
|
|
writel(readl((void *)REF_SSP_EN) | 0x1, (void *)REF_SSP_EN);
|
|
|
|
udelay(10);
|
|
|
|
writel(0x0, (void *)USB3_DRD_SWRST);
|
|
udelay(1000);
|
|
writel(0x7, (void *)USB3_DRD_SWRST);
|
|
}
|
|
|
|
#if defined (CONFIG_TARGET_LIGHT_FPGA_FM_C910)
|
|
static void light_iopin_init(void)
|
|
{
|
|
return;
|
|
}
|
|
|
|
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_A)
|
|
static void light_iopin_init(void)
|
|
{
|
|
/*AON-PADMUX*/
|
|
light_pin_mux(AOGPIO_7,3);
|
|
light_pin_mux(AOGPIO_8,3);
|
|
light_pin_mux(AOGPIO_9,3);
|
|
light_pin_mux(AOGPIO_10,3);
|
|
light_pin_mux(AOGPIO_12,1);
|
|
light_pin_mux(AOGPIO_13,1);
|
|
light_pin_mux(AUDIO_PA9,3);
|
|
light_pin_mux(AUDIO_PA10,3);
|
|
light_pin_mux(AUDIO_PA11,3);
|
|
light_pin_mux(AUDIO_PA12,3);
|
|
light_pin_mux(AUDIO_PA27,3);
|
|
light_pin_mux(AUDIO_PA28,3);
|
|
light_pin_mux(AUDIO_PA29,3);
|
|
light_pin_mux(AUDIO_PA30,3);
|
|
|
|
light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(AOGPIO_7,PIN_SPEED_NORMAL,PIN_PD,2);
|
|
light_pin_cfg(AOGPIO_8,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_10,PIN_SPEED_NORMAL,PIN_PD,2);
|
|
light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AUDIO_PA11,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AUDIO_PA27,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AUDIO_PA28,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AUDIO_PA29,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(AUDIO_PA30,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
/*AP-LEFT-TOP PADMUX*/
|
|
light_pin_mux(QSPI1_CSN0,4);
|
|
light_pin_mux(QSPI1_SCLK,4);
|
|
light_pin_mux(QSPI1_D0_MOSI,4);
|
|
light_pin_mux(QSPI1_D1_MISO,4);
|
|
light_pin_mux(QSPI1_D2_WP,2);
|
|
light_pin_mux(QSPI1_D3_HOLD,2);
|
|
light_pin_cfg(QSPI1_CSN0,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(QSPI1_SCLK,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(QSPI1_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,8);
|
|
light_pin_cfg(QSPI1_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,8);
|
|
light_pin_cfg(QSPI1_D2_WP,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(QSPI1_D3_HOLD,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
|
|
light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,5);
|
|
light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,5);
|
|
light_pin_cfg(I2C1_SCL,PIN_SPEED_NORMAL,PIN_PN,5);
|
|
light_pin_cfg(I2C1_SDA,PIN_SPEED_NORMAL,PIN_PN,5);
|
|
|
|
light_pin_mux(UART1_TXD,3);
|
|
light_pin_mux(UART1_RXD,3);
|
|
light_pin_cfg(UART1_TXD,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(UART1_RXD,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
light_pin_mux(UART3_TXD,1);
|
|
light_pin_mux(UART3_RXD,1);
|
|
light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
|
|
light_pin_mux(GPIO0_18,1);
|
|
light_pin_mux(GPIO0_19,1);
|
|
light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,5);
|
|
light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,5);
|
|
|
|
light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_22,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_23,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_31,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
light_pin_mux(CLK_OUT_0,1);
|
|
light_pin_mux(CLK_OUT_1,1);
|
|
light_pin_mux(CLK_OUT_2,1);
|
|
light_pin_mux(CLK_OUT_3,1);
|
|
|
|
/*AP-RIGHT-TOP PADMUX*/
|
|
light_pin_mux(QSPI0_CSN0,2);
|
|
light_pin_mux(QSPI0_SCLK,2);
|
|
light_pin_mux(QSPI0_D0_MOSI,2);
|
|
light_pin_mux(QSPI0_D1_MISO,2);
|
|
light_pin_mux(QSPI0_D2_WP,2);
|
|
light_pin_mux(QSPI0_D3_HOLD,2);
|
|
light_pin_cfg(QSPI0_CSN0,PIN_SPEED_NORMAL,PIN_PN,0x8);
|
|
light_pin_cfg(QSPI0_SCLK,PIN_SPEED_NORMAL,PIN_PN,0x8);
|
|
light_pin_cfg(QSPI0_D0_MOSI,PIN_SPEED_NORMAL,PIN_PN,0x8);
|
|
light_pin_cfg(QSPI0_D1_MISO,PIN_SPEED_NORMAL,PIN_PN,0x8);
|
|
light_pin_cfg(QSPI0_D2_WP,PIN_SPEED_NORMAL,PIN_PN,0x8);
|
|
light_pin_cfg(QSPI0_D3_HOLD,PIN_SPEED_NORMAL,PIN_PN,0x8);
|
|
light_pin_cfg(I2C2_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C2_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(SPI_CSN,3);
|
|
light_pin_mux(SPI_SCLK,3);
|
|
light_pin_mux(SPI_MISO,3);
|
|
light_pin_mux(SPI_MOSI,3);
|
|
light_pin_mux(GPIO1_21,3);
|
|
light_pin_mux(GPIO1_22,3);
|
|
light_pin_mux(GPIO1_23,3);
|
|
light_pin_mux(GPIO1_24,3);
|
|
light_pin_mux(GPIO1_25,3);
|
|
light_pin_cfg(SPI_CSN,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(SPI_SCLK,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(SPI_MISO,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(SPI_MOSI,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
light_pin_cfg(GPIO1_7, PIN_SPEED_NORMAL, PIN_PU, 0x2);
|
|
light_pin_cfg(GPIO1_8, PIN_SPEED_NORMAL, PIN_PU, 0x2);
|
|
light_pin_cfg(GPIO1_9, PIN_SPEED_NORMAL, PIN_PU, 0x2);
|
|
light_pin_cfg(GPIO1_21, PIN_SPEED_NORMAL, PIN_PU, 0x2);
|
|
light_pin_cfg(GPIO1_22, PIN_SPEED_NORMAL, PIN_PU, 0x2);
|
|
light_pin_cfg(GPIO1_23, PIN_SPEED_NORMAL, PIN_PU, 0x2);
|
|
light_pin_cfg(GPIO1_24, PIN_SPEED_NORMAL, PIN_PU, 0x2);
|
|
light_pin_cfg(GPIO1_25, PIN_SPEED_NORMAL, PIN_PU, 0x2);
|
|
light_pin_mux(GPIO2_18,1);
|
|
light_pin_mux(GPIO2_19,1);
|
|
light_pin_mux(GPIO2_20,1);
|
|
light_pin_mux(GPIO2_21,1);
|
|
light_pin_mux(GPIO2_22,1);
|
|
light_pin_mux(GPIO2_23,1);
|
|
light_pin_mux(GPIO2_24,1);
|
|
light_pin_mux(GPIO2_25,1);
|
|
|
|
light_pin_cfg(GPIO2_13, PIN_SPEED_NORMAL, PIN_PD, 0x2);
|
|
light_pin_cfg(GPIO2_18, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_19, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_20, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_21, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_22, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_23, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_24, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_25, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
|
|
light_pin_mux(SDIO0_WPRTN,3);
|
|
light_pin_mux(SDIO0_DETN,3);
|
|
light_pin_mux(SDIO1_WPRTN,3);
|
|
light_pin_cfg(SDIO0_WPRTN,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(SDIO0_DETN,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
light_pin_mux(GPIO2_30,1);
|
|
light_pin_mux(GPIO2_31,1);
|
|
light_pin_mux(GPIO3_0,1);
|
|
light_pin_mux(GPIO3_1,1);
|
|
light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
|
|
light_pin_mux(GPIO3_3,1);
|
|
light_pin_cfg(GPIO3_3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
|
|
light_pin_mux(GMAC0_COL,3);
|
|
light_pin_mux(GMAC0_CRS,3);
|
|
light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
|
|
|
|
/* GMAC0 pad drive strength configurate to 0xF */
|
|
light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
|
|
}
|
|
|
|
#elif defined ( CONFIG_TARGET_LIGHT_FM_C910_VAL_B) || defined ( CONFIG_TARGET_LIGHT_FM_C910_B_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_POWER)
|
|
static void light_iopin_init(void)
|
|
{
|
|
/* aon-padmux config */
|
|
light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(AOGPIO_7,PIN_SPEED_NORMAL,PIN_PU,2);//soc_aud_3v3_en_reg
|
|
light_pin_cfg(AOGPIO_8,PIN_SPEED_NORMAL,PIN_PU,2);//soc_aud_1v8_en_reg
|
|
light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_10,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_11,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AOGPIO_7,3);
|
|
light_pin_mux(AOGPIO_8,3);
|
|
light_pin_mux(AOGPIO_9,3);
|
|
light_pin_mux(AOGPIO_10,3);
|
|
light_pin_mux(AOGPIO_11,0);
|
|
light_pin_mux(AOGPIO_12,1);
|
|
light_pin_mux(AOGPIO_13,1);
|
|
light_pin_mux(AOGPIO_14,0);
|
|
light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PU,2); ///WL_DEV_WAKE_HOST
|
|
light_pin_mux(AOGPIO_15,0);
|
|
light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PU,2); ///BT_DEV_WAKE_HOST
|
|
|
|
light_pin_mux(AUDIO_PA4,3); ///NC
|
|
light_pin_cfg(AUDIO_PA4,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AUDIO_PA5,3); ///NC
|
|
light_pin_cfg(AUDIO_PA5,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AUDIO_PA11,3); ///NC
|
|
light_pin_cfg(AUDIO_PA11,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AUDIO_PA16,3); ///NC
|
|
light_pin_cfg(AUDIO_PA16,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(AUDIO_PA9,3);
|
|
light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PU,2);// reset signal for audio-pa
|
|
light_pin_mux(AUDIO_PA10,3); ///NC
|
|
light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AUDIO_PA12,3); ///NC
|
|
light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AUDIO_PA13,0);
|
|
|
|
/*ap-padmux on left/top */
|
|
light_pin_mux(QSPI1_CSN0,3);
|
|
light_pin_cfg(QSPI1_CSN0,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(QSPI1_SCLK,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(QSPI1_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,8);
|
|
light_pin_cfg(QSPI1_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,8);
|
|
light_pin_cfg(QSPI1_D2_WP,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(QSPI1_D3_HOLD,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
|
|
light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C1_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C1_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(UART3_TXD,1);
|
|
light_pin_mux(UART3_RXD,1);
|
|
light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(GPIO0_18,1);
|
|
light_pin_mux(GPIO0_19,1);
|
|
light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(GPIO0_20,0);
|
|
light_pin_mux(GPIO0_21,0);
|
|
light_pin_mux(GPIO0_22,1);
|
|
light_pin_mux(GPIO0_23,1);
|
|
light_pin_mux(GPIO0_24,1);
|
|
light_pin_mux(GPIO0_25,1);
|
|
light_pin_mux(GPIO0_26,1);
|
|
light_pin_mux(GPIO0_27,0);
|
|
light_pin_mux(GPIO0_28,0);
|
|
light_pin_mux(GPIO0_29,0);
|
|
light_pin_mux(GPIO0_30,0);
|
|
light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_27,PIN_SPEED_NORMAL,PIN_PN,2);//soc_dovdd18_ir_reg
|
|
light_pin_cfg(GPIO0_28,PIN_SPEED_NORMAL,PIN_PN,2);//soc_avdd25_ir_reg
|
|
light_pin_cfg(GPIO0_29,PIN_SPEED_NORMAL,PIN_PN,2);//soc_dvdd12_ir_reg
|
|
light_pin_cfg(GPIO0_30,PIN_SPEED_NORMAL,PIN_PU,2);//soc_vdd_3v3_en_reg for uart/gmac/debug_port/hdmi/sd
|
|
|
|
light_pin_mux(GPIO1_0,1);
|
|
light_pin_mux(GPIO1_1,1);
|
|
light_pin_mux(GPIO1_2,1);
|
|
light_pin_mux(GPIO1_3,1);
|
|
light_pin_mux(GPIO1_4,1);
|
|
light_pin_mux(GPIO1_9,0);
|
|
light_pin_mux(GPIO1_10,0);
|
|
light_pin_mux(GPIO1_11,0);
|
|
light_pin_mux(GPIO1_12,0);
|
|
light_pin_mux(GPIO1_13,0);
|
|
light_pin_mux(GPIO1_14,0);
|
|
light_pin_mux(GPIO1_15,0);
|
|
light_pin_mux(GPIO1_16,0);
|
|
light_pin_mux(GPIO1_24,3);
|
|
light_pin_mux(GPIO1_25,3);
|
|
light_pin_cfg(GPIO1_0,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_1,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_2,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_3,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_4,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
#if ! defined (CONFIG_TARGET_LIGHT_FM_C910_B_POWER)
|
|
light_pin_cfg(GPIO1_9,PIN_SPEED_NORMAL,PIN_PN,2); //soc_vdd18_lcd0_en_reg --backup regulator
|
|
#else
|
|
light_pin_cfg(GPIO1_9,PIN_SPEED_NORMAL,PIN_PU,2); //soc_vdd18_lcd0_en_reg
|
|
#endif
|
|
light_pin_cfg(GPIO1_10,PIN_SPEED_NORMAL,PIN_PN,2);//soc_lcd0_bias_en_reg
|
|
light_pin_cfg(GPIO1_11,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
#if ! defined (CONFIG_TARGET_LIGHT_FM_C910_B_POWER)
|
|
light_pin_cfg(GPIO1_12,PIN_SPEED_NORMAL,PIN_PN,2);//reg_tp_pwr_en --touch pannel
|
|
#else
|
|
light_pin_cfg(GPIO1_12,PIN_SPEED_NORMAL,PIN_PU,2);//reg_tp_pwr_en --touch pannel
|
|
#endif
|
|
light_pin_cfg(GPIO1_13,PIN_SPEED_NORMAL,PIN_PN,2);//soc_dovdd18_rgb_reg
|
|
light_pin_cfg(GPIO1_14,PIN_SPEED_NORMAL,PIN_PN,2);//soc_dvdd12_rgb_reg
|
|
light_pin_cfg(GPIO1_15,PIN_SPEED_NORMAL,PIN_PN,2);//soc_avdd28_rgb_reg
|
|
light_pin_cfg(GPIO1_16,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_24,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_25,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(CLK_OUT_0,1);
|
|
light_pin_mux(CLK_OUT_1,1);
|
|
light_pin_mux(CLK_OUT_2,3);
|
|
light_pin_mux(CLK_OUT_3,1);
|
|
light_pin_cfg(CLK_OUT_2,PIN_SPEED_NORMAL,PIN_PU,2);///volume key
|
|
|
|
/*ap-pdmux on righ/top*/
|
|
light_pin_mux(QSPI0_SCLK,2);
|
|
light_pin_mux(QSPI0_CSN0,2);
|
|
light_pin_mux(QSPI0_CSN1,2);
|
|
light_pin_mux(QSPI0_D0_MOSI,2);
|
|
light_pin_mux(QSPI0_D1_MISO,2);
|
|
light_pin_mux(QSPI0_D2_WP,2);
|
|
light_pin_mux(QSPI0_D3_HOLD,2);
|
|
|
|
light_pin_cfg(I2C2_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C2_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(SPI_CSN,3);
|
|
light_pin_mux(SPI_MOSI,3);
|
|
light_pin_mux(SPI_MISO,3);
|
|
light_pin_mux(SPI_SCLK,3);
|
|
light_pin_cfg(SPI_SCLK,PIN_SPEED_NORMAL,PIN_PU,2); ///vdd5v_se_en
|
|
|
|
light_pin_mux(GPIO2_18,0);
|
|
light_pin_mux(GPIO2_19,0);
|
|
light_pin_mux(GPIO2_20,0);
|
|
light_pin_mux(GPIO2_21,0);
|
|
light_pin_mux(GPIO2_22,0);
|
|
light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PU,2); ///WL_HOST_WAKE_DEV
|
|
light_pin_mux(GPIO2_23,0);
|
|
light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PU,2); ///BT_DEV_WAKE_HOST
|
|
light_pin_mux(GPIO2_24,0);
|
|
light_pin_mux(GPIO2_25,0);
|
|
|
|
light_pin_cfg(GPIO2_18,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_19,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_21,PIN_SPEED_NORMAL,PIN_PU,2); //audio-pa-reset
|
|
light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
|
|
light_pin_mux(SDIO0_WPRTN,3);
|
|
light_pin_cfg(SDIO0_WPRTN,PIN_SPEED_NORMAL,PIN_PN,2);///NC
|
|
light_pin_mux(SDIO1_WPRTN,3);
|
|
light_pin_cfg(SDIO1_WPRTN,PIN_SPEED_NORMAL,PIN_PD,2);//gpio2_28 vbus_en
|
|
light_pin_mux(SDIO1_DETN,3);
|
|
light_pin_cfg(SDIO1_DETN,PIN_SPEED_NORMAL,PIN_PN,2); //gpio2_29 wcn33_en
|
|
|
|
light_pin_mux(GPIO2_30,0);
|
|
light_pin_mux(GPIO2_31,0);
|
|
light_pin_mux(GPIO3_0,0);
|
|
light_pin_mux(GPIO3_1,0);
|
|
light_pin_mux(GPIO3_2,1);
|
|
light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0x2);//soc_avdd28_scan_en_reg
|
|
light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0x2);//soc_dovdd18_scan_reg
|
|
light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0x2); //soc_dvdd12_scan_reg
|
|
light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0x2);
|
|
light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
|
|
light_pin_mux(GMAC0_COL,3);
|
|
light_pin_mux(GMAC0_CRS,3);
|
|
light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);//gmac0_phy0_rst
|
|
light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);//gmac0_phy0_int
|
|
|
|
/* GMAC0 pad drive strength configurate to 0xF */
|
|
light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
}
|
|
|
|
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_DISCRETE)
|
|
static void light_iopin_init(void)
|
|
{
|
|
/* aon-padmux config */
|
|
light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(AOGPIO_7,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
|
|
light_pin_cfg(AOGPIO_8,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
|
|
light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_10,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_11,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AOGPIO_7,3);
|
|
light_pin_mux(AOGPIO_8,3);
|
|
light_pin_mux(AOGPIO_9,3);
|
|
light_pin_mux(AOGPIO_10,3);
|
|
light_pin_mux(AOGPIO_11,0);
|
|
light_pin_mux(AOGPIO_12,0); ///aud-tx
|
|
light_pin_mux(AOGPIO_13,0); ///aud-rx
|
|
light_pin_mux(AOGPIO_14,0);
|
|
light_pin_mux(AOGPIO_15,0);
|
|
|
|
|
|
light_pin_mux(AUDIO_PA9,3);
|
|
light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PN,2); ///audio-pa-rst
|
|
light_pin_mux(AUDIO_PA10,3); ///aud_3v3_en
|
|
light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_mux(AUDIO_PA12,3); ///aud_1v8_en
|
|
light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_mux(AUDIO_PA13,0);
|
|
|
|
/*ap-padmux on left/top */
|
|
light_pin_mux(QSPI1_CSN0,3);
|
|
light_pin_cfg(QSPI1_CSN0,PIN_SPEED_NORMAL,PIN_PN,8); ///se-spi
|
|
light_pin_cfg(QSPI1_SCLK,PIN_SPEED_NORMAL,PIN_PN,8); ///se-spi
|
|
light_pin_cfg(QSPI1_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,8); ///se-spi
|
|
light_pin_cfg(QSPI1_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,8); ///se-spi
|
|
light_pin_cfg(QSPI1_D2_WP,PIN_SPEED_NORMAL,PIN_PN,8); ///uart5-rx
|
|
light_pin_cfg(QSPI1_D3_HOLD,PIN_SPEED_NORMAL,PIN_PN,8); ///uart5-tx
|
|
|
|
light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C1_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C1_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(UART3_TXD,1);
|
|
light_pin_mux(UART3_RXD,1);
|
|
light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(GPIO0_18,1);
|
|
light_pin_mux(GPIO0_19,1);
|
|
light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(GPIO0_20,0);
|
|
light_pin_mux(GPIO0_21,0);
|
|
light_pin_mux(GPIO0_22,1);
|
|
light_pin_mux(GPIO0_23,1);
|
|
light_pin_mux(GPIO0_24,1);
|
|
light_pin_mux(GPIO0_25,1);
|
|
light_pin_mux(GPIO0_26,1);
|
|
light_pin_mux(GPIO0_27,0);
|
|
light_pin_mux(GPIO0_28,0);
|
|
light_pin_mux(GPIO0_29,0);
|
|
light_pin_mux(GPIO0_30,0);
|
|
light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_27,PIN_SPEED_NORMAL,PIN_PN,2); /// NC
|
|
light_pin_cfg(GPIO0_28,PIN_SPEED_NORMAL,PIN_PN,2); /// AVDD25_IR_EN
|
|
light_pin_cfg(GPIO0_29,PIN_SPEED_NORMAL,PIN_PN,2); /// DVDD12_IR_EN
|
|
light_pin_cfg(GPIO0_30,PIN_SPEED_NORMAL,PIN_PN,2); /// vdd-3v3-en (gmac,uart,led)
|
|
|
|
light_pin_mux(GPIO1_0,1);
|
|
light_pin_mux(GPIO1_1,1);
|
|
light_pin_mux(GPIO1_2,1);
|
|
light_pin_mux(GPIO1_3,1);
|
|
light_pin_mux(GPIO1_4,1);
|
|
light_pin_mux(GPIO1_9,0);
|
|
light_pin_mux(GPIO1_10,0);
|
|
light_pin_mux(GPIO1_11,0);
|
|
light_pin_mux(GPIO1_12,0);
|
|
light_pin_mux(GPIO1_13,0);
|
|
light_pin_mux(GPIO1_14,0);
|
|
light_pin_mux(GPIO1_15,0);
|
|
light_pin_mux(GPIO1_16,0);
|
|
light_pin_mux(GPIO1_21,3);
|
|
light_pin_mux(GPIO1_22,3);
|
|
light_pin_mux(GPIO1_23,3);
|
|
light_pin_mux(GPIO1_24,3);
|
|
light_pin_mux(GPIO1_25,3);
|
|
light_pin_cfg(GPIO1_0,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_1,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_2,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_3,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_4,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_9,PIN_SPEED_NORMAL,PIN_PN,2); ///VDD18_LCD0_EN
|
|
light_pin_cfg(GPIO1_10,PIN_SPEED_NORMAL,PIN_PN,2); ///LCD0_BIAS_EN
|
|
light_pin_cfg(GPIO1_11,PIN_SPEED_NORMAL,PIN_PN,2); /// LCD_ID0
|
|
light_pin_cfg(GPIO1_12,PIN_SPEED_NORMAL,PIN_PN,2); /// VDD28_TP0_EN
|
|
light_pin_cfg(GPIO1_13,PIN_SPEED_NORMAL,PIN_PN,2); /// DOVDD18_RGB_EN
|
|
light_pin_cfg(GPIO1_14,PIN_SPEED_NORMAL,PIN_PN,2); /// DVDD12_RGB_EN
|
|
light_pin_cfg(GPIO1_15,PIN_SPEED_NORMAL,PIN_PN,2); /// AVDD28_RGB_EN
|
|
light_pin_cfg(GPIO1_16,PIN_SPEED_NORMAL,PIN_PN,2); /// RGBCAM_RESET
|
|
light_pin_cfg(GPIO1_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_22,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_23,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_24,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_25,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_26,PIN_SPEED_NORMAL,PIN_PN,2); /// DBB2LEDDRIVER_EN1
|
|
|
|
light_pin_mux(CLK_OUT_0,1);
|
|
light_pin_mux(CLK_OUT_1,1);
|
|
light_pin_mux(CLK_OUT_3,1);
|
|
light_pin_mux(CLK_OUT_2,3);
|
|
light_pin_cfg(CLK_OUT_2,PIN_SPEED_NORMAL,PIN_PU,2); ///volume key
|
|
|
|
/*ap-pdmux on righ/top*/
|
|
light_pin_mux(QSPI0_SCLK,2);
|
|
light_pin_mux(QSPI0_CSN0,2);
|
|
light_pin_mux(QSPI0_CSN1,2);
|
|
light_pin_mux(QSPI0_D0_MOSI,2);
|
|
light_pin_mux(QSPI0_D1_MISO,2);
|
|
light_pin_mux(QSPI0_D2_WP,2);
|
|
light_pin_mux(QSPI0_D3_HOLD,2);
|
|
|
|
light_pin_cfg(I2C2_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C2_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(SPI_CSN,3);
|
|
light_pin_mux(SPI_MOSI,3);
|
|
light_pin_mux(SPI_MISO,3);
|
|
light_pin_mux(SPI_SCLK,3);
|
|
light_pin_cfg(SPI_SCLK,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
|
|
|
|
light_pin_mux(GPIO2_18,0);
|
|
light_pin_mux(GPIO2_19,0);
|
|
light_pin_mux(GPIO2_20,0);
|
|
light_pin_mux(GPIO2_21,0);
|
|
light_pin_mux(GPIO2_22,0);
|
|
light_pin_mux(GPIO2_23,0);
|
|
light_pin_mux(GPIO2_24,0);
|
|
light_pin_mux(GPIO2_25,0);
|
|
|
|
light_pin_cfg(GPIO2_18,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_19,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_21,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
|
|
light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2); ///WIFI_BT_GPIO2
|
|
light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2); ///WIFI_BT_GPIO3
|
|
light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2); ///WIFI_BT_RST_N
|
|
light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PU,2); ///KEY1
|
|
|
|
|
|
light_pin_mux(SDIO0_WPRTN,3);
|
|
light_pin_cfg(SDIO0_WPRTN,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
|
|
light_pin_mux(SDIO1_WPRTN,3);
|
|
light_pin_cfg(SDIO1_WPRTN,PIN_SPEED_NORMAL,PIN_PU,2); ///VBUS_EN
|
|
light_pin_mux(SDIO1_DETN,3);
|
|
light_pin_cfg(SDIO1_DETN,PIN_SPEED_NORMAL,PIN_PN,2); ///WCN33_EN
|
|
|
|
light_pin_mux(GPIO2_30,0);
|
|
light_pin_mux(GPIO2_31,0);
|
|
light_pin_mux(GPIO3_0,0);
|
|
|
|
light_pin_mux(GPIO3_1,0);
|
|
light_pin_mux(GPIO3_2,1);
|
|
light_pin_mux(GPIO3_3,0);
|
|
light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
|
|
light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
|
|
light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
|
|
light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0x2);
|
|
light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO3_3, PIN_SPEED_NORMAL, PIN_PN, 0x2); /// WAKEUP_IN_CAT1
|
|
|
|
light_pin_mux(GMAC0_COL,3);
|
|
light_pin_mux(GMAC0_CRS,3);
|
|
light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
/* GMAC0 pad drive strength configurate to 0xF */
|
|
light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
}
|
|
|
|
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF)
|
|
static void light_iopin_init(void)
|
|
{
|
|
/* aon-padmux config */
|
|
light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(AOGPIO_7,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
|
|
light_pin_cfg(AOGPIO_8,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
|
|
light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_10,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_11,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AOGPIO_7,3);
|
|
light_pin_mux(AOGPIO_8,3);
|
|
light_pin_mux(AOGPIO_9,3);
|
|
light_pin_mux(AOGPIO_10,3);
|
|
light_pin_mux(AOGPIO_11,0);
|
|
light_pin_mux(AOGPIO_12,1);
|
|
light_pin_mux(AOGPIO_13,1);
|
|
light_pin_mux(AOGPIO_14,0);
|
|
light_pin_mux(AOGPIO_15,0);
|
|
|
|
light_pin_mux(AUDIO_PA9,3); ///AUDIO-PA-RESET
|
|
light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AUDIO_PA10,3); /// AUD-3V3-EN
|
|
light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_mux(AUDIO_PA12,3); /// AUD-1V8-EN
|
|
light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_mux(AUDIO_PA13,0);
|
|
|
|
/*ap-padmux on left/top */
|
|
light_pin_mux(QSPI1_CSN0,3);
|
|
light_pin_cfg(QSPI1_CSN0,PIN_SPEED_NORMAL,PIN_PN,8); ///se-spi
|
|
light_pin_cfg(QSPI1_SCLK,PIN_SPEED_NORMAL,PIN_PN,8); ///se-spi
|
|
light_pin_cfg(QSPI1_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,8); ///se-spi
|
|
light_pin_cfg(QSPI1_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,8); ///se-spi
|
|
light_pin_cfg(QSPI1_D2_WP,PIN_SPEED_NORMAL,PIN_PN,8); ///NC
|
|
light_pin_cfg(QSPI1_D3_HOLD,PIN_SPEED_NORMAL,PIN_PN,8); ///NC
|
|
|
|
light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C1_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C1_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(UART3_TXD,1);
|
|
light_pin_mux(UART3_RXD,1);
|
|
light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(GPIO0_18,1);
|
|
light_pin_mux(GPIO0_19,1);
|
|
light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(GPIO0_20,0);
|
|
light_pin_mux(GPIO0_21,0);
|
|
light_pin_mux(GPIO0_22,1);
|
|
light_pin_mux(GPIO0_23,1);
|
|
light_pin_mux(GPIO0_24,1);
|
|
light_pin_mux(GPIO0_25,1);
|
|
light_pin_mux(GPIO0_26,1);
|
|
light_pin_mux(GPIO0_27,0);
|
|
light_pin_mux(GPIO0_28,0);
|
|
light_pin_mux(GPIO0_29,0);
|
|
light_pin_mux(GPIO0_30,0);
|
|
light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_27,PIN_SPEED_NORMAL,PIN_PN,2); ///< NC(not used)
|
|
light_pin_cfg(GPIO0_28,PIN_SPEED_NORMAL,PIN_PN,2); ///< AVDD25_IR_EN
|
|
light_pin_cfg(GPIO0_29,PIN_SPEED_NORMAL,PIN_PN,2); ///< DVDD12_IR_EN
|
|
light_pin_cfg(GPIO0_30,PIN_SPEED_NORMAL,PIN_PU,2); ///< gmac,uart,led
|
|
|
|
light_pin_mux(GPIO1_0,1);
|
|
light_pin_mux(GPIO1_1,1);
|
|
light_pin_mux(GPIO1_2,1);
|
|
light_pin_mux(GPIO1_3,1);
|
|
light_pin_mux(GPIO1_4,1);
|
|
light_pin_mux(GPIO1_9,0);
|
|
light_pin_mux(GPIO1_10,0);
|
|
light_pin_mux(GPIO1_11,0);
|
|
light_pin_mux(GPIO1_12,0);
|
|
light_pin_mux(GPIO1_13,0);
|
|
light_pin_mux(GPIO1_14,0);
|
|
light_pin_mux(GPIO1_15,0);
|
|
light_pin_mux(GPIO1_16,0);
|
|
light_pin_mux(GPIO1_21,3);
|
|
light_pin_mux(GPIO1_22,3);
|
|
light_pin_mux(GPIO1_23,3);
|
|
light_pin_mux(GPIO1_24,3);
|
|
light_pin_mux(GPIO1_25,3);
|
|
light_pin_cfg(GPIO1_0,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_1,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_2,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_3,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_4,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_9,PIN_SPEED_NORMAL,PIN_PN,2); ///<VDD18_LCD0_EN
|
|
light_pin_cfg(GPIO1_10,PIN_SPEED_NORMAL,PIN_PN,2); ///<LCD0_BIAS_EN
|
|
light_pin_cfg(GPIO1_11,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_12,PIN_SPEED_NORMAL,PIN_PN,2); ///<TOUCH-PANNEL VDD28_TP0_EN
|
|
light_pin_cfg(GPIO1_13,PIN_SPEED_NORMAL,PIN_PN,2); ///<DOVDD18_RGB_EN
|
|
light_pin_cfg(GPIO1_14,PIN_SPEED_NORMAL,PIN_PN,2); ///<DVDD12_RGB_EN
|
|
light_pin_cfg(GPIO1_15,PIN_SPEED_NORMAL,PIN_PN,2); ///<AVDD28_RGB_EN
|
|
light_pin_cfg(GPIO1_16,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_22,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_23,PIN_SPEED_NORMAL,PIN_PN,2); ///<LED_PDN
|
|
light_pin_cfg(GPIO1_24,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_25,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_26,PIN_SPEED_NORMAL,PIN_PN,2); ///<DBB2LEDDRIVER_EN
|
|
|
|
light_pin_mux(CLK_OUT_0,1);
|
|
light_pin_mux(CLK_OUT_1,1);
|
|
light_pin_mux(CLK_OUT_3,1);
|
|
light_pin_mux(CLK_OUT_2,3);
|
|
light_pin_cfg(CLK_OUT_2,PIN_SPEED_NORMAL,PIN_PU,2); ///volume key "-"
|
|
|
|
/*ap-pdmux on righ/top*/
|
|
light_pin_mux(QSPI0_SCLK,3); ///NC
|
|
light_pin_mux(QSPI0_CSN0,3); ///NC
|
|
light_pin_mux(QSPI0_CSN1,3); ///NC
|
|
light_pin_mux(QSPI0_D0_MOSI,3); ///NC
|
|
light_pin_mux(QSPI0_D1_MISO,3); ///NC
|
|
light_pin_mux(QSPI0_D2_WP,3); ///NC
|
|
light_pin_mux(QSPI0_D3_HOLD,3); ///NC
|
|
|
|
light_pin_cfg(I2C2_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C2_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(SPI_CSN,3); /// W_DISABLE_CATE1
|
|
light_pin_mux(SPI_MOSI,3); /// NC
|
|
light_pin_mux(SPI_MISO,3); /// RERST1_N_CAT1
|
|
light_pin_mux(SPI_SCLK,3);
|
|
light_pin_cfg(SPI_SCLK,PIN_SPEED_NORMAL,PIN_PN,2); /// NC
|
|
|
|
light_pin_mux(GPIO2_18,0);
|
|
light_pin_mux(GPIO2_19,0);
|
|
light_pin_mux(GPIO2_20,0);
|
|
light_pin_mux(GPIO2_21,0);
|
|
light_pin_mux(GPIO2_22,0);
|
|
light_pin_mux(GPIO2_23,0);
|
|
light_pin_mux(GPIO2_24,0);
|
|
light_pin_mux(GPIO2_25,0);
|
|
|
|
light_pin_cfg(GPIO2_18,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_19,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_21,PIN_SPEED_NORMAL,PIN_PN,2); ///<NC
|
|
light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2); ///<WIFI_BT_GPIO2
|
|
light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2); ///<WIFI_BT_GPIO3
|
|
light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2); ///<WIFI_BT_RST_N
|
|
light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PN,2); ///KEY1
|
|
|
|
|
|
light_pin_mux(SDIO0_WPRTN,3);
|
|
light_pin_cfg(SDIO0_WPRTN,PIN_SPEED_NORMAL,PIN_PN,2); ///< NC
|
|
light_pin_mux(SDIO1_WPRTN,3);
|
|
light_pin_cfg(SDIO1_WPRTN,PIN_SPEED_NORMAL,PIN_PU,2); ///VBUS_EN
|
|
light_pin_mux(SDIO1_DETN,3);
|
|
light_pin_cfg(SDIO1_DETN,PIN_SPEED_NORMAL,PIN_PN,2); ///WCN_33_EN
|
|
|
|
light_pin_mux(GPIO2_30,0);
|
|
light_pin_mux(GPIO2_31,0);
|
|
light_pin_mux(GPIO3_0,0);
|
|
light_pin_mux(GPIO3_1,0);
|
|
light_pin_mux(GPIO3_2,1);
|
|
light_pin_mux(GPIO3_3,0);
|
|
light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
|
|
light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PU, 0x2); ///NC
|
|
light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
|
|
light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0x2);
|
|
light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO3_3, PIN_SPEED_NORMAL, PIN_PN, 0x2);
|
|
|
|
light_pin_mux(GMAC0_COL,3);
|
|
light_pin_mux(GMAC0_CRS,3);
|
|
light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
/* GMAC0 pad drive strength configurate to 0xF */
|
|
light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
}
|
|
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_LPI4A)
|
|
static void light_iopin_init(void)
|
|
{
|
|
/* aon-padmux config */
|
|
light_pin_cfg(I2C_AON_SCL, PIN_SPEED_NORMAL, PIN_PN, 8);
|
|
light_pin_cfg(I2C_AON_SDA, PIN_SPEED_NORMAL, PIN_PN, 8);
|
|
|
|
light_pin_mux(CPU_JTG_TCLK, 3);
|
|
light_pin_cfg(CPU_JTG_TCLK, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(CPU_JTG_TMS, 3);
|
|
light_pin_cfg(CPU_JTG_TMS, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(CPU_JTG_TDI, 3);
|
|
light_pin_cfg(CPU_JTG_TDI, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
|
|
light_pin_mux(AOGPIO_7, 1);
|
|
light_pin_mux(AOGPIO_8, 1);
|
|
// light_pin_mux(AOGPIO_9, 0);
|
|
light_pin_mux(AOGPIO_10, 1);
|
|
light_pin_mux(AOGPIO_11, 1);
|
|
light_pin_mux(AOGPIO_12, 1);
|
|
light_pin_mux(AOGPIO_13, 1);
|
|
light_pin_mux(AOGPIO_14, 0);
|
|
// light_pin_mux(AOGPIO_15,0);
|
|
light_pin_cfg(AOGPIO_7, PIN_SPEED_NORMAL, PIN_PN, 2); ///NC
|
|
light_pin_cfg(AOGPIO_8, PIN_SPEED_NORMAL, PIN_PN, 2); ///NC
|
|
light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_10, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(AOGPIO_11, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(AOGPIO_12, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(AOGPIO_13, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(AOGPIO_14, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
// light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(AUDIO_PA0, 0);
|
|
light_pin_cfg(AUDIO_PA0, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA1, 0);
|
|
light_pin_cfg(AUDIO_PA1, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA3, 0);
|
|
light_pin_cfg(AUDIO_PA3, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA4, 0);
|
|
light_pin_cfg(AUDIO_PA4, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA5, 0);
|
|
light_pin_cfg(AUDIO_PA5, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA6, 0);
|
|
light_pin_cfg(AUDIO_PA6, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA7, 0);
|
|
light_pin_cfg(AUDIO_PA7, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA14, 0);
|
|
light_pin_cfg(AUDIO_PA14, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA15, 0);
|
|
light_pin_cfg(AUDIO_PA15, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA16, 0);
|
|
light_pin_cfg(AUDIO_PA16, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA17, 0);
|
|
light_pin_cfg(AUDIO_PA17, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA29, 0);
|
|
light_pin_cfg(AUDIO_PA29, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA30, 0);
|
|
light_pin_cfg(AUDIO_PA30, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AUDIO_PA30, 3);
|
|
|
|
// light_pin_mux(AUDIO_PA9,3); ///AUDIO-PA-RESET
|
|
// light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
// light_pin_mux(AUDIO_PA10,3); /// AUD-3V3-EN
|
|
// light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
// light_pin_mux(AUDIO_PA12,3); /// AUD-1V8-EN
|
|
// light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
// light_pin_mux(AUDIO_PA13,0);
|
|
|
|
/*ap-padmux on left/top */
|
|
light_pin_mux(QSPI1_SCLK, 4);
|
|
light_pin_cfg(QSPI1_SCLK, PIN_SPEED_NORMAL,PIN_PN, 8); ///se-spi
|
|
light_pin_mux(QSPI1_CSN0, 4);
|
|
light_pin_cfg(QSPI1_CSN0, PIN_SPEED_NORMAL, PIN_PN, 8); ///se-spi
|
|
light_pin_mux(QSPI1_D0_MOSI, 4);
|
|
light_pin_cfg(QSPI1_D0_MOSI, PIN_SPEED_NORMAL, PIN_PU, 8); ///se-spi
|
|
light_pin_mux(QSPI1_D1_MISO, 4);
|
|
light_pin_cfg(QSPI1_D1_MISO, PIN_SPEED_NORMAL, PIN_PU, 8); ///se-spi
|
|
light_pin_mux(QSPI1_D2_WP, 4);
|
|
light_pin_cfg(QSPI1_D2_WP, PIN_SPEED_NORMAL, PIN_PN, 8); ///NC
|
|
// light_pin_mux(QSPI1_D3_HOLD, 4);
|
|
// light_pin_cfg(QSPI1_D3_HOLD, PIN_SPEED_NORMAL, PIN_PN, 8); ///NC
|
|
|
|
light_pin_cfg(I2C0_SCL, PIN_SPEED_NORMAL, PIN_PN, 4);
|
|
light_pin_cfg(I2C0_SDA, PIN_SPEED_NORMAL, PIN_PN, 4);
|
|
light_pin_cfg(I2C1_SCL, PIN_SPEED_NORMAL, PIN_PN, 4);
|
|
light_pin_cfg(I2C1_SDA, PIN_SPEED_NORMAL, PIN_PN, 4);
|
|
|
|
light_pin_cfg(UART1_TXD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(UART1_RXD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(UART4_TXD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(UART4_RXD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(UART4_CTSN, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(UART4_RTSN, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(UART3_TXD, 1);
|
|
light_pin_cfg(UART3_TXD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(UART3_RXD, 1);
|
|
light_pin_cfg(UART3_RXD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
|
|
// light_pin_mux(GPIO0_18,1);
|
|
// light_pin_mux(GPIO0_19,1);
|
|
// light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
// light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
// light_pin_mux(GPIO0_20,0);
|
|
// light_pin_mux(GPIO0_21,0);
|
|
// light_pin_mux(GPIO0_22,1);
|
|
// light_pin_mux(GPIO0_23,1);
|
|
// light_pin_mux(GPIO0_24,1);
|
|
// light_pin_mux(GPIO0_25,1);
|
|
// light_pin_mux(GPIO0_26,1);
|
|
// light_pin_mux(GPIO0_27,0);
|
|
// light_pin_mux(GPIO0_28,0);
|
|
// light_pin_mux(GPIO0_29,0);
|
|
// light_pin_mux(GPIO0_30,0);
|
|
// light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
// light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_24, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(GPIO0_25, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(GPIO0_27, PIN_SPEED_NORMAL, PIN_PN, 2); ///< NC(not used)
|
|
light_pin_cfg(GPIO0_28, PIN_SPEED_NORMAL, PIN_PN, 2); ///< AVDD25_IR_EN
|
|
// light_pin_cfg(GPIO0_29,PIN_SPEED_NORMAL,PIN_PN,2); ///< DVDD12_IR_EN
|
|
light_pin_cfg(GPIO0_30, PIN_SPEED_NORMAL, PIN_PU, 2); ///< gmac,uart,led
|
|
light_pin_cfg(GPIO0_31, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
|
|
light_pin_mux(GPIO1_0, 0);
|
|
// light_pin_mux(GPIO1_1,1);
|
|
// light_pin_mux(GPIO1_2,1);
|
|
light_pin_mux(GPIO1_3, 0);
|
|
light_pin_mux(GPIO1_4, 0);
|
|
light_pin_mux(GPIO1_5, 0);
|
|
light_pin_mux(GPIO1_6, 0);
|
|
light_pin_mux(GPIO1_9, 0);
|
|
light_pin_mux(GPIO1_10, 0);
|
|
// light_pin_mux(GPIO1_11,0);
|
|
// light_pin_mux(GPIO1_12,0);
|
|
light_pin_mux(GPIO1_13, 0);
|
|
light_pin_mux(GPIO1_14, 0);
|
|
// light_pin_mux(GPIO1_15,0);
|
|
// light_pin_mux(GPIO1_16,0);
|
|
light_pin_cfg(GPIO1_0, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
// light_pin_cfg(GPIO1_1,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
// light_pin_cfg(GPIO1_2,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_3, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(GPIO1_4, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(GPIO1_5, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(GPIO1_6, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(GPIO1_9, PIN_SPEED_NORMAL, PIN_PN, 2); ///<VDD18_LCD0_EN
|
|
light_pin_cfg(GPIO1_10, PIN_SPEED_NORMAL, PIN_PN, 2); ///<LCD0_BIAS_EN
|
|
// light_pin_cfg(GPIO1_11,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
// light_pin_cfg(GPIO1_12,PIN_SPEED_NORMAL,PIN_PN,2); ///<TOUCH-PANNEL VDD28_TP0_EN
|
|
light_pin_cfg(GPIO1_13, PIN_SPEED_NORMAL, PIN_PN, 2); ///<DOVDD18_RGB_EN
|
|
light_pin_cfg(GPIO1_14, PIN_SPEED_NORMAL, PIN_PN, 2); ///<DVDD12_RGB_EN
|
|
// light_pin_cfg(GPIO1_15,PIN_SPEED_NORMAL,PIN_PN,2); ///<AVDD28_RGB_EN
|
|
// light_pin_cfg(GPIO1_16,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(CLK_OUT_0, 1);
|
|
light_pin_cfg(CLK_OUT_0, PIN_SPEED_NORMAL, PIN_PU, 2);
|
|
light_pin_mux(CLK_OUT_1, 1);
|
|
light_pin_cfg(CLK_OUT_1, PIN_SPEED_NORMAL, PIN_PU, 2);
|
|
light_pin_mux(CLK_OUT_2, 0);
|
|
light_pin_cfg(CLK_OUT_2, PIN_SPEED_NORMAL, PIN_PU, 2);
|
|
light_pin_mux(CLK_OUT_3, 0);
|
|
light_pin_cfg(CLK_OUT_3, PIN_SPEED_NORMAL, PIN_PU, 2);
|
|
|
|
// light_pin_mux(GPIO1_21,3);
|
|
light_pin_mux(GPIO1_22, 3);
|
|
// light_pin_mux(GPIO1_23,3);
|
|
light_pin_mux(GPIO1_24, 3);
|
|
// light_pin_mux(GPIO1_25,3);
|
|
// light_pin_mux(GPIO1_26,3);
|
|
// light_pin_mux(GPIO1_27,3);
|
|
light_pin_mux(GPIO1_28, 0);
|
|
// light_pin_mux(GPIO1_29,3);
|
|
light_pin_mux(GPIO1_30, 0);
|
|
// light_pin_cfg(GPIO1_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_22, PIN_SPEED_NORMAL, PIN_PN,2);
|
|
// light_pin_cfg(GPIO1_23,PIN_SPEED_NORMAL,PIN_PN,2); ///<LED_PDN
|
|
light_pin_cfg(GPIO1_24, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(GPIO1_28, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(GPIO1_30, PIN_SPEED_NORMAL, PIN_PN, 2); ///<DBB2LEDDRIVER_EN
|
|
|
|
light_pin_cfg(UART0_TXD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(UART0_RXD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
|
|
/*ap-pdmux on righ/top*/
|
|
// light_pin_mux(QSPI0_SCLK,3); ///NC
|
|
// light_pin_mux(QSPI0_CSN0,3); ///NC
|
|
// light_pin_mux(QSPI0_CSN1,3); ///NC
|
|
// light_pin_mux(QSPI0_D0_MOSI,3); ///NC
|
|
// light_pin_mux(QSPI0_D1_MISO,3); ///NC
|
|
// light_pin_mux(QSPI0_D2_WP,3); ///NC
|
|
// light_pin_mux(QSPI0_D3_HOLD,3); ///NC
|
|
|
|
light_pin_cfg(I2C2_SCL, PIN_SPEED_NORMAL, PIN_PN, 4);
|
|
light_pin_cfg(I2C2_SDA, PIN_SPEED_NORMAL, PIN_PN, 4);
|
|
light_pin_cfg(I2C3_SCL, PIN_SPEED_NORMAL, PIN_PN, 4);
|
|
light_pin_cfg(I2C3_SDA, PIN_SPEED_NORMAL, PIN_PN, 4);
|
|
|
|
// light_pin_mux(SPI_CSN,3); /// W_DISABLE_CATE1
|
|
// light_pin_mux(SPI_MOSI,3); /// NC
|
|
// light_pin_mux(SPI_MISO,3); /// RERST1_N_CAT1
|
|
// light_pin_mux(SPI_SCLK,3);
|
|
light_pin_cfg(SPI_CSN, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(SPI_MOSI, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(SPI_MISO, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(SPI_SCLK, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
|
|
light_pin_mux(GPIO2_13, 0);
|
|
light_pin_mux(GPIO2_18, 1);
|
|
light_pin_mux(GPIO2_19, 1);
|
|
light_pin_mux(GPIO2_20, 1);
|
|
light_pin_mux(GPIO2_21, 1);
|
|
light_pin_mux(GPIO2_22, 1);
|
|
light_pin_mux(GPIO2_23, 1);
|
|
light_pin_mux(GPIO2_24, 1);
|
|
light_pin_mux(GPIO2_25, 1);
|
|
|
|
light_pin_cfg(GPIO2_13, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(GPIO2_18, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_19, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_20, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_21, PIN_SPEED_NORMAL, PIN_PN, 0xF); ///<NC
|
|
light_pin_cfg(GPIO2_22, PIN_SPEED_NORMAL, PIN_PN, 0xF); ///<WIFI_BT_GPIO2
|
|
light_pin_cfg(GPIO2_23, PIN_SPEED_NORMAL, PIN_PN, 0xF); ///<WIFI_BT_GPIO3
|
|
light_pin_cfg(GPIO2_24, PIN_SPEED_NORMAL, PIN_PN, 0xF); ///<WIFI_BT_RST_N
|
|
light_pin_cfg(GPIO2_25, PIN_SPEED_NORMAL, PIN_PU, 0xF); ///KEY1
|
|
|
|
light_pin_mux(SDIO0_DETN, 0);
|
|
light_pin_cfg(SDIO0_DETN, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
// light_pin_mux(SDIO0_WPRTN,3);
|
|
// light_pin_cfg(SDIO0_WPRTN,PIN_SPEED_NORMAL,PIN_PN,2); ///< NC
|
|
// light_pin_mux(SDIO1_WPRTN,3);
|
|
// light_pin_cfg(SDIO1_WPRTN,PIN_SPEED_NORMAL,PIN_PU,2); ///VBUS_EN
|
|
// light_pin_mux(SDIO1_DETN,3);
|
|
// light_pin_cfg(SDIO1_DETN,PIN_SPEED_NORMAL,PIN_PN,2); ///WCN_33_EN
|
|
|
|
light_pin_mux(GPIO2_30, 1);
|
|
light_pin_mux(GPIO2_31, 1);
|
|
light_pin_mux(GPIO3_0, 1);
|
|
light_pin_mux(GPIO3_1, 1);
|
|
light_pin_mux(GPIO3_2, 1);
|
|
light_pin_mux(GPIO3_3, 1);
|
|
light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0xF); ///NC
|
|
light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0xF); ///NC
|
|
light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0xF); ///NC
|
|
light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO3_3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
|
|
light_pin_cfg(HDMI_SCL, PIN_SPEED_NORMAL, PIN_PN, 0x2);
|
|
light_pin_cfg(HDMI_SDA, PIN_SPEED_NORMAL, PIN_PN, 0x2);
|
|
light_pin_cfg(HDMI_CEC, PIN_SPEED_NORMAL, PIN_PN, 0x2);
|
|
|
|
/* GMAC0 pad drive strength configurate to 0xF */
|
|
light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
// light_pin_cfg(GMAC0_MDC, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
// light_pin_cfg(GMAC0_MDIO, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
|
|
light_pin_mux(GMAC0_COL, 3);
|
|
light_pin_mux(GMAC0_CRS, 3);
|
|
light_pin_cfg(GMAC0_COL, PIN_SPEED_NORMAL, PIN_PU, 2);
|
|
light_pin_cfg(GMAC0_CRS, PIN_SPEED_NORMAL, PIN_PU, 2);
|
|
}
|
|
|
|
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE)
|
|
static void light_iopin_init(void)
|
|
{
|
|
/* P8_03 (Ball:J34) GPIO1_21_MUX*/
|
|
light_pin_mux(GPIO1_21,3);
|
|
light_pin_cfg(GPIO1_21, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_04 (Ball:J35) GPIO1_22_MUX*/
|
|
light_pin_mux(GPIO1_22,3);
|
|
light_pin_cfg(GPIO1_22, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_05 (Ball:K32) GPIO1_23_MUX*/
|
|
light_pin_mux(GPIO1_23,3);
|
|
light_pin_cfg(GPIO1_23, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_06 (Ball:K33) GPIO1_24_MUX*/
|
|
light_pin_mux(GPIO1_24,3);
|
|
light_pin_cfg(GPIO1_24, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_07 (Ball:K34) GPIO1_25_MUX*/
|
|
light_pin_mux(GPIO1_25,3);
|
|
light_pin_cfg(GPIO1_25, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_08 (Ball:K35) GPIO1_26_MUX*/
|
|
light_pin_mux(GPIO1_26,0);
|
|
light_pin_cfg(GPIO1_26, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_09 (Ball:K36) GPIO1_27_MUX*/
|
|
light_pin_mux(GPIO1_27,0);
|
|
light_pin_cfg(GPIO1_27, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_10 (Ball:K37) GPIO1_28_MUX*/
|
|
light_pin_mux(GPIO1_28,0);
|
|
light_pin_cfg(GPIO1_28, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_11 (Ball:L32) GPIO1_29_MUX*/
|
|
light_pin_mux(GPIO1_29,0);
|
|
light_pin_cfg(GPIO1_29, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_12 (Ball:L33) GPIO1_30_MUX*/
|
|
light_pin_mux(GPIO1_30,0);
|
|
light_pin_cfg(GPIO1_30, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_13 (Ball:C6) GPIO3_2_MUX*/
|
|
light_pin_mux(GPIO3_2,0);
|
|
light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_14 (Ball:E29) CLK_OUT_3_MUX*/
|
|
light_pin_mux(CLK_OUT_3,3);
|
|
light_pin_cfg(CLK_OUT_3, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_15 (Ball:A6) GPIO3_0_MUX*/
|
|
light_pin_mux(GPIO3_0,0);
|
|
light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_16 (Ball:F34) GPIO0_20_MUX*/
|
|
light_pin_mux(GPIO0_20,0);
|
|
light_pin_cfg(GPIO0_20, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_17 (Ball:B6) GPIO3_1_MUX*/
|
|
light_pin_mux(GPIO3_1,0);
|
|
light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_18 (Ball:B34) GPIO1_5_MUX*/
|
|
light_pin_mux(GPIO1_5,0);
|
|
light_pin_cfg(GPIO1_5, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_19 (Ball:D6) GPIO3_3_MUX*/
|
|
light_pin_mux(GPIO3_3,0);
|
|
light_pin_cfg(GPIO3_3, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_20 (Ball:C34) GPIO1_6_MUX*/
|
|
light_pin_mux(GPIO1_6,0);
|
|
light_pin_cfg(GPIO1_6, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_21 (Ball:D34) GPIO1_7_MUX*/
|
|
light_pin_mux(GPIO1_7,0);
|
|
light_pin_cfg(GPIO1_7, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_22 (Ball:B35) GPIO1_8_MUX*/
|
|
light_pin_mux(GPIO1_8,0);
|
|
light_pin_cfg(GPIO1_8, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_23 (Ball:A36) GPIO1_9_MUX*/
|
|
light_pin_mux(GPIO1_9,0);
|
|
light_pin_cfg(GPIO1_9, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_24 (Ball:B36) GPIO1_10_MUX*/
|
|
light_pin_mux(GPIO1_10,0);
|
|
light_pin_cfg(GPIO1_10, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_25 (Ball:B37) GPIO1_11_MUX*/
|
|
light_pin_mux(GPIO1_11,0);
|
|
light_pin_cfg(GPIO1_11, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_26 (Ball:C36) GPIO1_12_MUX*/
|
|
light_pin_mux(GPIO1_12,0);
|
|
light_pin_cfg(GPIO1_12, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_27 (Ball:D37) GPIO1_15_MUX*/
|
|
light_pin_mux(GPIO1_15,0);
|
|
light_pin_cfg(GPIO1_15, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_28 (Ball:E34) GPIO1_16_MUX*/
|
|
light_pin_mux(GPIO1_16,0);
|
|
light_pin_cfg(GPIO1_16, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_29 (Ball:D36) GPIO1_14_MUX*/
|
|
light_pin_mux(GPIO1_14,0);
|
|
light_pin_cfg(GPIO1_14, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_30 (Ball:D35) GPIO1_13_MUX*/
|
|
light_pin_mux(GPIO1_13,0);
|
|
light_pin_cfg(GPIO1_13, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_31 (Ball:D33) GPIO1_3_MUX*/
|
|
light_pin_mux(GPIO1_3,0);
|
|
light_pin_cfg(GPIO1_3, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_32 (Ball:A34) GPIO1_4_MUX*/
|
|
light_pin_mux(GPIO1_4,0);
|
|
light_pin_cfg(GPIO1_4, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_33 (Ball:C33) GPIO1_2_MUX*/
|
|
light_pin_mux(GPIO1_2,0);
|
|
light_pin_cfg(GPIO1_2, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_34 (Ball:E32) GPIO1_0_MUX*/
|
|
light_pin_mux(GPIO1_0,0);
|
|
light_pin_cfg(GPIO1_0, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_35 (Ball:A32) GPIO1_1_MUX*/
|
|
light_pin_mux(GPIO1_1,0);
|
|
light_pin_cfg(GPIO1_1, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_36 (Ball:D32) GPIO0_31_MUX*/
|
|
light_pin_mux(GPIO0_31,0);
|
|
light_pin_cfg(GPIO0_31, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_37 (Ball:B32) GPIO0_29_MUX*/
|
|
light_pin_mux(GPIO0_29,0);
|
|
light_pin_cfg(GPIO0_29, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_38 (Ball:C32) GPIO0_30_MUX*/
|
|
light_pin_mux(GPIO0_30,0);
|
|
light_pin_cfg(GPIO0_30, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_39 (Ball:D31) GPIO0_27_MUX*/
|
|
light_pin_mux(GPIO0_27,0);
|
|
light_pin_cfg(GPIO0_27, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_40 (Ball:E31) GPIO0_28_MUX*/
|
|
light_pin_mux(GPIO0_28,0);
|
|
light_pin_cfg(GPIO0_28, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_41 (Ball:F30) GPIO0_25_MUX*/
|
|
light_pin_mux(GPIO0_25,0);
|
|
light_pin_cfg(GPIO0_25, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_42 (Ball:C31) GPIO0_26_MUX*/
|
|
light_pin_mux(GPIO0_26,0);
|
|
light_pin_cfg(GPIO0_26, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_43 (Ball:C30) GPIO0_23_MUX*/
|
|
light_pin_mux(GPIO0_23,0);
|
|
light_pin_cfg(GPIO0_23, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_44 (Ball:D30) GPIO0_24_MUX*/
|
|
light_pin_mux(GPIO0_24,0);
|
|
light_pin_cfg(GPIO0_24, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_45 (Ball:F36) GPIO0_21_MUX*/
|
|
light_pin_mux(GPIO0_21,0);
|
|
light_pin_cfg(GPIO0_21, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P8_46 (Ball:D29) GPIO0_22_MUX*/
|
|
light_pin_mux(GPIO0_22,0);
|
|
light_pin_cfg(GPIO0_22, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_01 - GND */
|
|
/* P9_02 - GND */
|
|
/* P9_03 - VOUT_3V3 */
|
|
/* P9_04 - VOUT_3V3 */
|
|
/* P9_05 - VIN */
|
|
/* P9_06 - VIN */
|
|
/* P9_07 - VOUT_SYS */
|
|
/* P9_08 - VOUT_SYS */
|
|
/* P9_09 - ONKEY# */
|
|
/* P9_10 - RESET# */
|
|
/* P9_11 (Ball:M32) UART1_TXD_MUX*/
|
|
light_pin_mux(UART1_TXD,3);
|
|
light_pin_cfg(UART1_TXD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_12 (Ball:H1) QSPI0_CSN0_MUX*/
|
|
light_pin_mux(QSPI0_CSN0,3);
|
|
light_pin_cfg(QSPI0_CSN0, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_13 (Ball:M33) UART1_RXD_MUX*/
|
|
light_pin_mux(UART1_RXD,3);
|
|
light_pin_cfg(UART1_RXD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_14 (Ball:K3) QSPI0_D1_MISO_MUX*/
|
|
light_pin_mux(QSPI0_D1_MISO,3);
|
|
light_pin_cfg(QSPI0_D1_MISO, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_15 (Ball:K2) QSPI0_D2_WP_MUX*/
|
|
light_pin_mux(QSPI0_D2_WP,3);
|
|
light_pin_cfg(QSPI0_D2_WP, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_16 (Ball:J3) QSPI0_D0_MOSI_MUX*/
|
|
light_pin_mux(QSPI0_D0_MOSI,3);
|
|
light_pin_cfg(QSPI0_D0_MOSI, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_17 (Ball:H32) QSPI1_CSN0_MUX*/
|
|
light_pin_mux(QSPI1_CSN0,3);
|
|
light_pin_cfg(QSPI1_CSN0, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_18 (Ball:G35) QSPI1_D0_MOSI_MUX*/
|
|
light_pin_mux(QSPI1_D0_MOSI,3);
|
|
light_pin_cfg(QSPI1_D0_MOSI, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_19 (Ball:G4) I2C2_SCL_MUX*/
|
|
light_pin_mux(I2C2_SCL,3);
|
|
light_pin_cfg(I2C2_SCL, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_20 (Ball:G3) I2C2_SDA_MUX*/
|
|
light_pin_mux(I2C2_SDA,3);
|
|
light_pin_cfg(I2C2_SDA, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_21 (Ball:G34) QSPI1_D1_MISO_MUX*/
|
|
light_pin_mux(QSPI1_D1_MISO,3);
|
|
light_pin_cfg(QSPI1_D1_MISO, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_22 (Ball:H34) QSPI1_SCLK_MUX*/
|
|
light_pin_mux(QSPI1_SCLK,3);
|
|
light_pin_cfg(QSPI1_SCLK, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_23 (Ball:K1) QSPI0_D3_HOLD_MUX*/
|
|
light_pin_mux(QSPI0_D3_HOLD,3);
|
|
light_pin_cfg(QSPI0_D3_HOLD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_24 (Ball:G33) QSPI1_D2_WP_MUX*/
|
|
light_pin_mux(QSPI1_D2_WP,3);
|
|
light_pin_cfg(QSPI1_D2_WP, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_25 (Ball:F5) GPIO2_18_MUX*/
|
|
light_pin_mux(GPIO2_18,0);
|
|
light_pin_cfg(GPIO2_18, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_26 (Ball:F37) QSPI1_D3_HOLD_MUX*/
|
|
light_pin_mux(QSPI1_D3_HOLD,3);
|
|
light_pin_cfg(QSPI1_D3_HOLD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_27 (Ball:E4) GPIO2_19_MUX*/
|
|
light_pin_mux(GPIO2_19,0);
|
|
light_pin_cfg(GPIO2_19, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_28 (Ball:E3) SPI_CSN_MUX*/
|
|
light_pin_mux(SPI_CSN,3);
|
|
light_pin_cfg(SPI_CSN, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_29 (Ball:F1) SPI_MISO_MUX*/
|
|
light_pin_mux(SPI_MISO,3);
|
|
light_pin_cfg(SPI_MISO, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_30 (Ball:F2) SPI_MOSI_MUX*/
|
|
light_pin_mux(SPI_MOSI,3);
|
|
light_pin_cfg(SPI_MOSI, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_31 (Ball:D3) SPI_SCLK_MUX*/
|
|
light_pin_mux(SPI_SCLK,3);
|
|
light_pin_cfg(SPI_SCLK, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_32 - GND */
|
|
/* P9_33 - ADC_VIN_CH4 */
|
|
/* P9_34 - GND */
|
|
/* P9_35 - ADC_VIN_CH6 */
|
|
/* P9_36 - ADC_VIN_CH5 */
|
|
/* P9_37 - ADC_VIN_CH2 */
|
|
/* P9_38 - ADC_VIN_CH3 */
|
|
/* P9_39 - ADC_VIN_CH0 */
|
|
/* P9_39 - ADC_VIN_CH1 */
|
|
/* P9_41 (Ball:D2) GPIO2_13_MUX*/
|
|
light_pin_mux(GPIO2_13,0);
|
|
light_pin_cfg(GPIO2_13, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_42 (Ball:H3) QSPI0_SCLK_MUX*/
|
|
light_pin_mux(QSPI0_SCLK,3);
|
|
light_pin_cfg(QSPI0_SCLK, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
/* P9_43 - GND */
|
|
/* P9_44 - GND */
|
|
/* P9_45 - GND */
|
|
/* P9_46 - GND */
|
|
|
|
/* RTL8211F-VD-CG */
|
|
|
|
light_pin_mux(GMAC0_COL,3);
|
|
light_pin_mux(GMAC0_CRS,3);
|
|
light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
|
|
/* PMIC */
|
|
light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
|
|
light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AOGPIO_14,0);
|
|
light_pin_mux(AOGPIO_15,0);
|
|
|
|
/* Debug port */
|
|
light_pin_mux(AOGPIO_12,0xF); // TXD
|
|
light_pin_mux(AOGPIO_13,0xF); // RXD
|
|
|
|
/* LEDs */
|
|
light_pin_mux(AUDIO_PA8,3);
|
|
light_pin_cfg(AUDIO_PA8,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AUDIO_PA9,3);
|
|
light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AUDIO_PA10,3);
|
|
light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_mux(AUDIO_PA11,3);
|
|
light_pin_cfg(AUDIO_PA11,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_mux(AUDIO_PA12,3);
|
|
light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
/* Boot select*/
|
|
|
|
/* SD boot button*/
|
|
light_pin_mux(CLK_OUT_0,3);
|
|
light_pin_cfg(CLK_OUT_0,PIN_SPEED_NORMAL,PIN_PD,2);
|
|
|
|
/* NC */
|
|
light_pin_mux(CLK_OUT_1,3);
|
|
light_pin_cfg(CLK_OUT_1,PIN_SPEED_NORMAL,PIN_PD,2);
|
|
|
|
/* USB boot button*/
|
|
light_pin_mux(CLK_OUT_2,3);
|
|
light_pin_cfg(CLK_OUT_2,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
|
|
/*mikroBUS pinmuxing*/
|
|
|
|
/*mikroBUS PWM*/
|
|
light_pin_mux(QSPI0_CSN1,3); // MB_PWM
|
|
light_pin_cfg(QSPI0_CSN1,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
/*mikroBUS GPIO*/
|
|
light_pin_mux(AUDIO_PA3,3); // MB_RST
|
|
light_pin_mux(GPIO2_21,0); // MB_INT
|
|
light_pin_cfg(AUDIO_PA3,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
/*mikroBUS UART*/
|
|
light_pin_mux(UART3_RXD,3); // MB_RXD
|
|
light_pin_mux(UART3_TXD,3); // MB_TXD
|
|
light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
/*mikroBUS SPI*/
|
|
light_pin_mux(GPIO2_20,3); // MB_CS
|
|
light_pin_mux(SPI_SCLK,3); // MB_SCK
|
|
light_pin_mux(SPI_MISO,3); // MB_MOSI
|
|
light_pin_mux(SPI_MOSI,3); // MB_MISO
|
|
light_pin_cfg(GPIO2_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(SPI_SCLK,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(SPI_MISO,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(SPI_MOSI,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
/*mikroBUS I2C*/
|
|
light_pin_mux(GPIO0_18,0); // MB_SCL
|
|
light_pin_mux(GPIO0_19,0); // MB_SDA
|
|
light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
/* CSI0 */
|
|
light_pin_mux(GPIO2_23,0); // CSI0
|
|
light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(I2C1_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C1_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
/* CSI1 */
|
|
light_pin_mux(GPIO2_24,0); // CSI1
|
|
light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
/* EEPROM */
|
|
light_pin_mux(GPIO2_22,0); // EEPROM
|
|
light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
/* AM6203BM */
|
|
light_pin_mux(SDIO1_WPRTN,3);
|
|
light_pin_mux(SDIO1_DETN,3);
|
|
light_pin_mux(GPIO2_25,0);
|
|
light_pin_mux(GPIO2_30,0);
|
|
light_pin_mux(GPIO2_31,0);
|
|
light_pin_cfg(SDIO1_WPRTN,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(SDIO1_DETN,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_30,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_31,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
//BT hardware flow control uart
|
|
light_pin_cfg(UART4_TXD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(UART4_RXD, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(UART4_CTSN, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_cfg(UART4_RTSN, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
|
|
|
|
}
|
|
|
|
#elif defined (CONFIG_TARGET_LIGHT_FM_C910_MILKV_MELES)
|
|
static void light_iopin_init(void)
|
|
{
|
|
/* aon-padmux config */
|
|
light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
|
|
light_pin_mux(AOGPIO_7,3);
|
|
light_pin_mux(AOGPIO_8,3);
|
|
light_pin_mux(AOGPIO_9,3);
|
|
light_pin_mux(AOGPIO_10,3);
|
|
light_pin_mux(AOGPIO_11,0);
|
|
light_pin_mux(AOGPIO_12,1);
|
|
light_pin_mux(AOGPIO_13,1);
|
|
light_pin_mux(AOGPIO_14,0);
|
|
light_pin_mux(AOGPIO_15,0);
|
|
light_pin_cfg(AOGPIO_7,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_8,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_10,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_11,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(AUDIO_PA9,3);
|
|
light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(AUDIO_PA10,3);
|
|
light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_mux(AUDIO_PA12,3);
|
|
light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_mux(AUDIO_PA13,0);
|
|
|
|
/*ap-padmux on left/top */
|
|
light_pin_mux(QSPI1_CSN0,3);
|
|
light_pin_mux(QSPI1_D2_WP,1);
|
|
light_pin_cfg(QSPI1_CSN0,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(QSPI1_SCLK,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(QSPI1_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,8);
|
|
light_pin_cfg(QSPI1_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,8);
|
|
light_pin_cfg(QSPI1_D2_WP,PIN_SPEED_NORMAL,PIN_PN,0xF);
|
|
light_pin_cfg(QSPI1_D3_HOLD,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
|
|
light_pin_mux(I2C0_SCL,0);
|
|
light_pin_mux(I2C0_SDA,0);
|
|
light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(UART3_TXD,1);
|
|
light_pin_mux(UART3_RXD,1);
|
|
light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(GPIO0_18,1);
|
|
light_pin_mux(GPIO0_19,1);
|
|
light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(GPIO0_20,0);
|
|
light_pin_mux(GPIO0_21,0);
|
|
light_pin_mux(GPIO0_22,1);
|
|
light_pin_mux(GPIO0_23,1);
|
|
light_pin_mux(GPIO0_24,1);
|
|
light_pin_mux(GPIO0_25,1);
|
|
light_pin_mux(GPIO0_26,1);
|
|
light_pin_mux(GPIO0_27,0);
|
|
light_pin_mux(GPIO0_28,0);
|
|
light_pin_mux(GPIO0_29,0);
|
|
light_pin_mux(GPIO0_30,0);
|
|
light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_27,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_28,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_29,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_30,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
light_pin_mux(GPIO1_0,1);
|
|
light_pin_mux(GPIO1_1,1);
|
|
light_pin_mux(GPIO1_2,1);
|
|
light_pin_mux(GPIO1_3,1);
|
|
light_pin_mux(GPIO1_4,1);
|
|
light_pin_mux(GPIO1_9,0);
|
|
light_pin_mux(GPIO1_10,0);
|
|
light_pin_mux(GPIO1_11,0);
|
|
light_pin_mux(GPIO1_12,0);
|
|
light_pin_mux(GPIO1_13,0);
|
|
light_pin_mux(GPIO1_14,0);
|
|
light_pin_mux(GPIO1_15,0);
|
|
light_pin_mux(GPIO1_16,0);
|
|
light_pin_mux(GPIO1_21,3);
|
|
light_pin_mux(GPIO1_22,3);
|
|
light_pin_mux(GPIO1_23,3);
|
|
light_pin_mux(GPIO1_24,3);
|
|
light_pin_mux(GPIO1_25,3);
|
|
light_pin_cfg(GPIO1_0,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_1,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_2,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_3,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_4,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_9,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_10,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_11,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_12,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_13,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_14,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_15,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_16,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_22,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_23,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_24,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_25,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_26,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(CLK_OUT_0,1);
|
|
light_pin_mux(CLK_OUT_1,1);
|
|
light_pin_mux(CLK_OUT_3,1);
|
|
light_pin_mux(CLK_OUT_2,3);
|
|
light_pin_cfg(CLK_OUT_2,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
/*ap-pdmux on righ/top*/
|
|
light_pin_mux(QSPI0_SCLK,3);
|
|
light_pin_mux(QSPI0_CSN0,3);
|
|
light_pin_mux(QSPI0_CSN1,3);
|
|
light_pin_mux(QSPI0_D0_MOSI,3);
|
|
light_pin_mux(QSPI0_D1_MISO,3);
|
|
light_pin_mux(QSPI0_D2_WP,3);
|
|
light_pin_mux(QSPI0_D3_HOLD,3);
|
|
|
|
light_pin_cfg(I2C2_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C2_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(I2C3_SCL,0);
|
|
light_pin_mux(I2C3_SDA,0);
|
|
light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PU,4);
|
|
light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PU,4);
|
|
|
|
light_pin_mux(SPI_CSN,1);
|
|
light_pin_cfg(SPI_CSN,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
light_pin_mux(GPIO2_18,0);
|
|
light_pin_mux(GPIO2_19,0);
|
|
light_pin_mux(GPIO2_20,0);
|
|
light_pin_mux(GPIO2_21,0);
|
|
light_pin_mux(GPIO2_22,0);
|
|
light_pin_mux(GPIO2_23,0);
|
|
light_pin_mux(GPIO2_24,0);
|
|
light_pin_mux(GPIO2_25,0);
|
|
|
|
light_pin_cfg(GPIO2_18,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_19,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
light_pin_mux(SDIO0_WPRTN,3);
|
|
light_pin_cfg(SDIO0_WPRTN,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_mux(SDIO1_WPRTN,3);
|
|
light_pin_cfg(SDIO1_WPRTN,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_mux(SDIO1_DETN,3);
|
|
light_pin_cfg(SDIO1_DETN,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(GPIO2_30,0);
|
|
light_pin_mux(GPIO2_31,0);
|
|
light_pin_mux(GPIO3_0,0);
|
|
light_pin_mux(GPIO3_1,0);
|
|
light_pin_mux(GPIO3_2,1);
|
|
light_pin_mux(GPIO3_3,1);
|
|
light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0x2);
|
|
light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0x2);
|
|
light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0x2);
|
|
light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0x2);
|
|
light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO3_3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
|
|
light_pin_mux(GMAC0_COL,3);
|
|
light_pin_mux(GMAC0_CRS,3);
|
|
light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
/* GMAC0 pad drive strength configurate to 0xF */
|
|
light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
}
|
|
|
|
#else
|
|
|
|
static void light_iopin_init(void)
|
|
{
|
|
light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(AOGPIO_8,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(AOGPIO_14, PIN_SPEED_NORMAL, PIN_PN, 2);
|
|
light_pin_mux(AOGPIO_10,1);
|
|
light_pin_mux(AOGPIO_11,1);
|
|
light_pin_mux(AOGPIO_12,1);
|
|
light_pin_mux(AOGPIO_13,1);
|
|
light_pin_mux(AOGPIO_14, 0);
|
|
light_pin_mux(AUDIO_PA30,3);
|
|
|
|
/*qspi1 cs0 gpio0-1 pad strength and pin-pull mode*/
|
|
light_pin_mux(QSPI1_CSN0,3);
|
|
light_pin_cfg(QSPI1_CSN0,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(QSPI1_SCLK,PIN_SPEED_NORMAL,PIN_PN,8);
|
|
light_pin_cfg(QSPI1_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,8);
|
|
light_pin_cfg(QSPI1_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,8);
|
|
light_pin_cfg(QSPI1_D2_WP,PIN_SPEED_NORMAL,PIN_PU,8);
|
|
light_pin_cfg(QSPI1_D3_HOLD,PIN_SPEED_NORMAL,PIN_PU,8);
|
|
|
|
light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C1_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C1_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(UART3_TXD,1);
|
|
light_pin_mux(UART3_RXD,1);
|
|
light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(GPIO0_18,1);
|
|
light_pin_mux(GPIO0_19,1);
|
|
light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(GPIO0_20,2);
|
|
light_pin_mux(GPIO0_21,2);
|
|
light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO0_30,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
light_pin_mux(GPIO1_0,1);
|
|
light_pin_mux(GPIO1_1,1);
|
|
light_pin_mux(GPIO1_2,1);
|
|
light_pin_mux(GPIO1_3,1);
|
|
light_pin_mux(GPIO1_4,1);
|
|
light_pin_cfg(GPIO1_0,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_1,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_2,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_3,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO1_4,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
|
|
light_pin_mux(GPIO1_24,3);
|
|
light_pin_cfg(GPIO1_24,PIN_SPEED_NORMAL,PIN_PD,2);
|
|
light_pin_mux(GPIO1_25,3);
|
|
light_pin_cfg(GPIO1_25,PIN_SPEED_NORMAL,PIN_PD,2);
|
|
|
|
light_pin_mux(CLK_OUT_0,1);
|
|
light_pin_mux(CLK_OUT_1,1);
|
|
light_pin_mux(CLK_OUT_2,1);
|
|
light_pin_mux(CLK_OUT_3,1);
|
|
|
|
light_pin_cfg(I2C2_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C2_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
|
|
|
|
light_pin_mux(GPIO2_18,1);
|
|
light_pin_mux(GPIO2_19,1);
|
|
light_pin_mux(GPIO2_20,1);
|
|
light_pin_mux(GPIO2_21,1);
|
|
light_pin_mux(GPIO2_22,1);
|
|
light_pin_mux(GPIO2_23,1);
|
|
light_pin_mux(GPIO2_24,1);
|
|
light_pin_mux(GPIO2_25,1);
|
|
|
|
light_pin_cfg(GPIO2_13,PIN_SPEED_NORMAL,PIN_PD,2);
|
|
light_pin_cfg(GPIO2_18,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_19,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_20,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_21,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PN,2);
|
|
light_pin_cfg(GPIO2_18, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_19, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_20, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_21, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_22, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_23, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_24, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_25, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
|
|
light_pin_mux(SDIO0_WPRTN,3);
|
|
light_pin_mux(SDIO1_WPRTN,3);
|
|
light_pin_mux(SDIO1_DETN,3);
|
|
|
|
light_pin_mux(GPIO2_30,1);
|
|
light_pin_mux(GPIO2_31,1);
|
|
light_pin_mux(GPIO3_0,1);
|
|
light_pin_mux(GPIO3_1,1);
|
|
light_pin_mux(GPIO3_2,1);
|
|
light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
|
|
light_pin_mux(GMAC0_COL,3);
|
|
light_pin_mux(GMAC0_CRS,3);
|
|
light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);
|
|
|
|
/*spi0 cs0 gpio2-15 pad strength and pin-pull mode*/
|
|
light_pin_mux(SPI_CSN,3);
|
|
light_pin_cfg(SPI_CSN,PIN_SPEED_NORMAL,PIN_PN,5);
|
|
light_pin_cfg(SPI_SCLK,PIN_SPEED_NORMAL,PIN_PN,5);
|
|
light_pin_cfg(SPI_MISO,PIN_SPEED_NORMAL,PIN_PU,5);
|
|
light_pin_cfg(SPI_MOSI,PIN_SPEED_NORMAL,PIN_PU,5);
|
|
|
|
/*qspi0 cs0 gpio2-3, pad strength and pin-pull mode */
|
|
light_pin_mux(QSPI0_CSN0,3);
|
|
light_pin_cfg(QSPI0_CSN0,PIN_SPEED_NORMAL,PIN_PN,0xA);
|
|
light_pin_cfg(QSPI0_SCLK,PIN_SPEED_NORMAL,PIN_PN,0xA);
|
|
light_pin_cfg(QSPI0_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,0xA);
|
|
light_pin_cfg(QSPI0_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,0xA);
|
|
light_pin_cfg(QSPI0_D2_WP,PIN_SPEED_NORMAL,PIN_PU,0xA);
|
|
light_pin_cfg(QSPI0_D3_HOLD,PIN_SPEED_NORMAL,PIN_PU,0xA);
|
|
|
|
/* GMAC0 pad drive strength configurate to 0xF */
|
|
light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
|
|
}
|
|
#endif
|
|
|
|
|
|
static void light_pwm_config(void)
|
|
{
|
|
/* pwm0 */
|
|
writel(0x4b0, (void *)0xFFEC01C008);
|
|
writel(0x258, (void *)0xFFEC01C00c);
|
|
writel(0x328, (void *)0xFFEC01C000);
|
|
}
|
|
|
|
int board_init(void)
|
|
{
|
|
light_iopmp_config();
|
|
light_iopin_init();
|
|
clk_config();
|
|
|
|
gmac_hw_init();
|
|
usb_clk_config();
|
|
usb_phy_test_config();
|
|
wifi_en();
|
|
iso7816_card_glb_interrupt_disable();
|
|
|
|
light_pwm_config();
|
|
|
|
return 0;
|
|
}
|
|
|
|
static void light_usb_boot_check(void)
|
|
{
|
|
uchar env_enetaddr[6];
|
|
uchar env_enet1addr[6];
|
|
int env_ethaddr_flag,env_eth1addr_flag;
|
|
int boot_mode;
|
|
int ret = 0;
|
|
|
|
boot_mode = readl((void *)SOC_OM_ADDRBASE) & 0x7;
|
|
if (boot_mode & BIT(2))
|
|
return;
|
|
|
|
/*check board id of uboot image*/
|
|
ret = check_image_board_id((uint8_t*)SRAM_BASE_ADDR);
|
|
if (ret != 0) {
|
|
while(1);
|
|
}
|
|
|
|
#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
|
|
env_set("usb_fastboot", "yes");
|
|
#endif
|
|
|
|
/* ensure flashing img not to lose mac address on ramfs mode */
|
|
env_ethaddr_flag = eth_env_get_enetaddr_by_index("eth", 0, env_enetaddr);
|
|
env_eth1addr_flag = eth_env_get_enetaddr_by_index("eth", 1, env_enet1addr);
|
|
|
|
run_command("env default -a -f", 0);
|
|
if (env_ethaddr_flag)
|
|
eth_env_set_enetaddr_by_index("eth", 0, env_enetaddr);
|
|
if (env_eth1addr_flag)
|
|
eth_env_set_enetaddr_by_index("eth", 1, env_enet1addr);
|
|
env_save();
|
|
run_command("run gpt_partition", 0);
|
|
run_command("fastboot usb 0", 0);
|
|
}
|
|
|
|
static void light_mac_vaild_check(void)
|
|
{
|
|
uchar env_enetaddr[6];
|
|
uchar env_enet1addr[6];
|
|
int env_ethaddr_flag,env_eth1addr_flag;
|
|
|
|
/*Get this version ethaddr(mac addr) env,which follows one board, trans to next version env*/
|
|
env_ethaddr_flag = eth_env_get_enetaddr_by_index("eth", 0, env_enetaddr);
|
|
env_eth1addr_flag = eth_env_get_enetaddr_by_index("eth", 1, env_enet1addr);
|
|
|
|
if (!env_ethaddr_flag || !env_eth1addr_flag) {
|
|
net_random_ethaddr(env_enetaddr);
|
|
if (env_enetaddr[5] == (uchar)(0xff)) {
|
|
env_enetaddr[5] = 0xfe;
|
|
}
|
|
eth_env_set_enetaddr_by_index("eth", 0, env_enetaddr);
|
|
env_enetaddr[5] += 0x01;
|
|
eth_env_set_enetaddr_by_index("eth", 1, env_enetaddr);
|
|
printf("Use random addr as fixed mac addr\n");
|
|
env_save();
|
|
}
|
|
|
|
printf("ethaddr: %s\n", env_get("ethaddr"));
|
|
printf("eth1addr: %s\n", env_get("eth1addr"));
|
|
|
|
return;
|
|
}
|
|
|
|
int board_late_init(void)
|
|
{
|
|
|
|
#if CONFIG_IS_ENABLED(LIGHT_SEC_UPGRADE)
|
|
extern void sec_upgrade_thread(void);
|
|
extern void sec_firmware_version_dump(void);
|
|
sec_upgrade_thread();
|
|
sec_firmware_version_dump();
|
|
#endif
|
|
light_usb_boot_check();
|
|
light_mac_vaild_check();
|
|
ap_peri_clk_disable();
|
|
return 0;
|
|
}
|
|
|
|
static int do_env_ethaddr_check(cmd_tbl_t *cmdtp, int flag, int argc,
|
|
char * const argv[])
|
|
{
|
|
uchar env_enetaddr[6]={0};
|
|
int i;
|
|
for(i=0;i<2;i++){
|
|
if(eth_env_get_enetaddr_by_index("eth", i, env_enetaddr)){
|
|
printf("env (eth%d) MAC address ok- %pM\n",i, env_enetaddr);
|
|
}
|
|
else {
|
|
printf("env (eth%d) MAC address invalid - %pM\n",i, env_enetaddr);
|
|
printf(" * Check that the Ethernet address (MAC) is not 00:00:00:00:00:00,\n"
|
|
" is not a multicast address(first byte low bit zero is not multi addr), \n"
|
|
"and is not FF:FF:FF:FF:FF:FF.\n");
|
|
}
|
|
|
|
}
|
|
return 0;
|
|
|
|
}
|
|
|
|
U_BOOT_CMD(
|
|
chk_ethaddr, 2, 0, do_env_ethaddr_check,
|
|
"check ethaddrs in environment variables is valid",
|
|
""
|
|
);
|
|
|
|
|
|
#define PAGE_SIZE 4096
|
|
#define HIBERNATE_SIG "S1SUSPEND"
|
|
#define HIBERNATE_SIG2 "S1SUSPEN2" //sign for 2nd time load image
|
|
|
|
static inline int fdt_disabled_node(void *blob,const char *path)
|
|
{
|
|
int offset;
|
|
offset = fdt_path_offset(blob,path);
|
|
if (offset < 0) {
|
|
printf("ERROR:failed to find %s node in dtb (ret %d)\n",path,offset);
|
|
return offset;
|
|
}
|
|
return fdt_status_disabled(blob,offset);
|
|
}
|
|
|
|
static int do_board_check_hibernate(cmd_tbl_t *cmdtp, int flag, int argc,
|
|
char * const argv[])
|
|
{
|
|
int ret;
|
|
char runcmd[128];
|
|
ulong addr;
|
|
void *blob = NULL;
|
|
ulong mask = 0;
|
|
int mmc_parts;
|
|
int resume_part;
|
|
bool fastresume = 0;
|
|
#define ON_RET_ERROR(str) if(ret < 0) printf("set node %s status failed %d\n",str,ret)
|
|
ALLOC_CACHE_ALIGN_BUFFER(u8,swsusp_header_buf,PAGE_SIZE);
|
|
u8 *header = &swsusp_header_buf[0];
|
|
|
|
mmc_parts = env_get_hex("mmcpart",3);
|
|
resume_part = mmc_parts - 2;
|
|
|
|
if(argc >= 4) { // is user pass in ,use that
|
|
sprintf(runcmd, "read %s %s %s 0 8",
|
|
argv[1],argv[2],argv[3]);
|
|
header = (u8 *)simple_strtoul(argv[3],NULL,16);
|
|
if(argc >= 5)
|
|
mask = simple_strtoul(argv[4],NULL,16);
|
|
printf("read swsusp_header to %p,dtb disbale mask 0x%lx\n",header,mask);
|
|
} else {
|
|
sprintf(runcmd, "read mmc 0:%d 0x%lx 0 8",
|
|
resume_part,(unsigned long)&header[0]);
|
|
}
|
|
|
|
ret = run_command(runcmd, 0);
|
|
if(ret != CMD_RET_SUCCESS)
|
|
goto failed;
|
|
if(!memcmp(HIBERNATE_SIG, &header[PAGE_SIZE-10], 10) ||
|
|
!memcmp(HIBERNATE_SIG2, &header[PAGE_SIZE-10], 10) ) {
|
|
printf("found sign\n");
|
|
}
|
|
else {
|
|
sprintf(runcmd, "0:%s",env_get("mmcbootpart"));
|
|
if(file_exists("mmc",runcmd,"no_fastresume",FS_TYPE_EXT)) {
|
|
printf("do not fastresume\n");
|
|
goto default_set;
|
|
}
|
|
|
|
sprintf(runcmd, "read mmc 0:%d 0x%lx 0 8",
|
|
resume_part+1,(unsigned long)&header[0]);
|
|
ret = run_command(runcmd, 0);
|
|
if(ret != CMD_RET_SUCCESS)
|
|
goto failed;
|
|
if(!memcmp(HIBERNATE_SIG, &header[PAGE_SIZE-10], 10) ||
|
|
!memcmp(HIBERNATE_SIG2, &header[PAGE_SIZE-10], 10) ) {
|
|
printf("found fastresume sign\n");
|
|
resume_part = resume_part+1;
|
|
fastresume = true;
|
|
}
|
|
else {
|
|
printf(" not find hibernate sign\n");
|
|
goto default_set;
|
|
}
|
|
}
|
|
|
|
/*get dtb address*/
|
|
if(env_get("dtb_addr") == NULL)
|
|
{
|
|
printf("Cannot get dtb_addr,check flow !\n");
|
|
goto failed;
|
|
}
|
|
addr = env_get_hex("dtb_addr",0);
|
|
sprintf(runcmd, "fdt addr 0x%lx", env_get_hex("dtb_addr",0));
|
|
ret = run_command(runcmd, 0);
|
|
if(ret != CMD_RET_SUCCESS)
|
|
goto failed;
|
|
sprintf(runcmd, "fdt resize");
|
|
ret = run_command(runcmd, 0);
|
|
if(ret != CMD_RET_SUCCESS)
|
|
goto failed;
|
|
|
|
/*set unneed devices node disabled for hibernate resume in kernel dtb*/
|
|
blob = (void *)addr;
|
|
ret = fdt_status_disabled_by_alias(blob,"i2c0");
|
|
ON_RET_ERROR("i2c0");
|
|
ret = fdt_status_disabled_by_alias(blob,"i2c1");
|
|
ON_RET_ERROR("i2c1");
|
|
ret = fdt_status_disabled_by_alias(blob,"i2c2");
|
|
ON_RET_ERROR("i2c2");
|
|
|
|
ret = fdt_status_disabled_by_alias(blob,"audio_i2c0");
|
|
ON_RET_ERROR("audio_i2c0");
|
|
ret = fdt_status_disabled_by_alias(blob,"audio_i2c1");
|
|
ON_RET_ERROR("audio_i2c1");
|
|
ret = fdt_status_disabled_by_alias(blob,"ethernet0");
|
|
ON_RET_ERROR("ethernet0");
|
|
ret = fdt_status_disabled_by_alias(blob,"ethernet1");
|
|
ON_RET_ERROR("ethernet1");
|
|
ret = fdt_status_disabled_by_alias(blob,"spi0");
|
|
ON_RET_ERROR("spi0");
|
|
ret = fdt_status_disabled_by_alias(blob,"spi1");
|
|
ON_RET_ERROR("spi1");
|
|
ret = fdt_status_disabled_by_alias(blob,"spi2");
|
|
ON_RET_ERROR("spi2");
|
|
|
|
ret = fdt_disabled_node(blob,"/soc/adc");
|
|
ON_RET_ERROR("/soc/adc");
|
|
|
|
//default mask is 0, need set this node disbaled
|
|
if(0 == (mask & 0x01)) {
|
|
ret = fdt_disabled_node(blob,"/soc/light_i2s");
|
|
ON_RET_ERROR("/soc/light_i2s");
|
|
ret = fdt_disabled_node(blob,"/soc/audio_i2s0");
|
|
ON_RET_ERROR("/soc/audio_i2s0");
|
|
ret = fdt_disabled_node(blob,"/soc/audio_i2s1");
|
|
ON_RET_ERROR("/soc/audio_i2s1");
|
|
ret = fdt_disabled_node(blob,"/soc/audio_i2s2");
|
|
ON_RET_ERROR("/soc/audio_i2s2");
|
|
}
|
|
if(0 == (mask & 0x02)) {
|
|
ret = fdt_disabled_node(blob,"/soc/audio_i2s_8ch_sd0");
|
|
ON_RET_ERROR("/soc/audio_i2s_8ch_sd0");
|
|
ret = fdt_disabled_node(blob,"/soc/audio_i2s_8ch_sd1");
|
|
ON_RET_ERROR("/soc/audio_i2s_8ch_sd1");
|
|
ret = fdt_disabled_node(blob,"/soc/audio_i2s_8ch_sd2");
|
|
ON_RET_ERROR("/soc/audio_i2s_8ch_sd2");
|
|
ret = fdt_disabled_node(blob,"/soc/audio_i2s_8ch_sd3");
|
|
ON_RET_ERROR("/soc/audio_i2s_8ch_sd3");
|
|
}
|
|
/*set resume_bootargs for kernel do fast bootup */
|
|
sprintf(runcmd,"resume=/dev/mmcblk0p%d notrace noftrace nopty noclkdebug ",resume_part);
|
|
env_set("resume_bootargs",runcmd);
|
|
|
|
return CMD_RET_SUCCESS;
|
|
|
|
default_set:
|
|
sprintf(runcmd,"resume=/dev/mmcblk0p%d",resume_part);
|
|
env_set("resume_bootargs",runcmd);
|
|
return CMD_RET_SUCCESS;
|
|
|
|
failed:
|
|
printf("ERROR:runcmd %s failed!\n",runcmd);
|
|
sprintf(runcmd,"resume=/dev/mmcblk0p%d",resume_part);
|
|
env_set("resume_bootargs",runcmd);
|
|
return CMD_RET_FAILURE;
|
|
}
|
|
|
|
U_BOOT_CMD(
|
|
chk_hibernate, 6, 0, do_board_check_hibernate,
|
|
"check hibernate image sign,if valid set dtb nodes and bootargs for fast boot resume",
|
|
" [<interface> <dev[:part]>] [mask]"
|
|
);
|
|
|
|
#ifdef CONFIG_FIXUP_MEMORY_REGION
|
|
static int do_fixup_memory_region(cmd_tbl_t *cmdtp, int flag, int argc,
|
|
char * const argv[])
|
|
{
|
|
ulong addr;
|
|
void *blob = NULL;
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
u64 base, size;
|
|
|
|
base = gd->ram_base;
|
|
size = gd->ram_size;
|
|
|
|
/*get dtb address*/
|
|
if(env_get("dtb_addr") == NULL)
|
|
{
|
|
printf("Cannot get dtb_addr,check flow !\n");
|
|
return CMD_RET_FAILURE;
|
|
}
|
|
addr = env_get_hex("dtb_addr",0);
|
|
|
|
/*set unneed devices node disabled for hibernate resume in kernel dtb*/
|
|
blob = (void *)addr;
|
|
fdtdec_setup_mem_size_base_fdt(blob);
|
|
size -= gd->ram_base;
|
|
|
|
if (size != gd->ram_size) {
|
|
printf("fixup memory region from [0x%09lx ~ 0x%09lx] to [0x%09lx ~ 0x%09lx]\n",
|
|
gd->ram_base, gd->ram_base+gd->ram_size, gd->ram_base, gd->ram_base+size);
|
|
gd->ram_size = size;
|
|
fdt_fixup_memory(blob, gd->ram_base, gd->ram_size);
|
|
}
|
|
return CMD_RET_SUCCESS;
|
|
}
|
|
U_BOOT_CMD(
|
|
fixup_memory_region, 2, 0, do_fixup_memory_region,
|
|
"modify linux memory region via gd->ram_size",
|
|
""
|
|
);
|
|
#endif
|