blob: 98cff1c6bee93b7fee9bb0dd715af88055ef9442 [file] [log] [blame]
/********************************************************************************
* Marvell GPL License Option
*
* If you received this File from Marvell, you may opt to use, redistribute and/or
* modify this File in accordance with the terms and conditions of the General
* Public License Version 2, June 1991 (the "GPL License"), a copy of which is
* available along with the File in the license.txt file or by writing to the Free
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
* on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
*
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
* WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
* DISCLAIMED. The GPL License provides additional details about this warranty
* disclaimer.
******************************************************************************/
#include "io.h"
#include "memmap.h"
#include "global.h"
#include "apb_perf_base.h"
#include "pin_settings.h"
#include "gpio.h"
#if (BERLIN_CHIP_VERSION == BERLIN_BG2CD_A0)
void pin_init()
{
//writel(0x18209248, (MEMMAP_CHIP_CTRL_REG_BASE + RA_Gbl_pinMux));
//writel(0, (MEMMAP_CHIP_CTRL_REG_BASE + RA_Gbl_pinMux1));
/*
* pinmux
*/
T32Gbl_pinMux pinmux0;
T32Gbl_pinMux1 pinmux1;
pinmux0.upinMux_gp0 = SOC_GROUP0;
pinmux0.upinMux_gp1 = SOC_GROUP1;
pinmux0.upinMux_gp2 = SOC_GROUP2;
pinmux0.upinMux_gp3 = SOC_GROUP3;
pinmux0.upinMux_gp4 = SOC_GROUP4;
pinmux0.upinMux_gp5 = SOC_GROUP5;
pinmux0.upinMux_gp6 = SOC_GROUP6;
pinmux0.upinMux_gp7 = SOC_GROUP7;
pinmux0.upinMux_gp8 = SOC_GROUP8;
pinmux0.upinMux_gp9 = SOC_GROUP9;
pinmux0.upinMux_gp10 = SOC_GROUP10;
pinmux1.upinMux_gp11 = SOC_GROUP11;
pinmux1.upinMux_gp12 = SOC_GROUP12;
pinmux1.upinMux_gp13 = SOC_GROUP13;
pinmux1.upinMux_gp14 = SOC_GROUP14;
pinmux1.upinMux_gp15 = SOC_GROUP15;
writel(pinmux0.u32, (MEMMAP_CHIP_CTRL_REG_BASE + RA_Gbl_pinMux));
writel(pinmux1.u32, (MEMMAP_CHIP_CTRL_REG_BASE + RA_Gbl_pinMux1));
}
#else // BG2
void pin_init()
{
/*
* pinmux
*/
T32Gbl_pinMux pinmux_soc;
T32Gbl_pinMux1 pinmux_soc1;
T32smSysCtl_SM_GSM_SEL pinmux_sm;
pinmux_soc.upinMux_gp0 = SOC_GROUP0;
pinmux_soc.upinMux_gp1 = SOC_GROUP1;
pinmux_soc.upinMux_gp2 = SOC_GROUP2;
pinmux_soc.upinMux_gp3 = SOC_GROUP3;
pinmux_soc.upinMux_gp4 = SOC_GROUP4;
pinmux_soc.upinMux_gp5 = SOC_GROUP5;
pinmux_soc.upinMux_gp6 = SOC_GROUP6;
pinmux_soc.upinMux_gp7 = SOC_GROUP7;
pinmux_soc.upinMux_gp8 = SOC_GROUP8;
pinmux_soc.upinMux_gp9 = SOC_GROUP9;
pinmux_soc.upinMux_gp10 = SOC_GROUP10;
pinmux_soc.upinMux_gp11 = SOC_GROUP11;
pinmux_soc.upinMux_gp12 = SOC_GROUP12;
pinmux_soc1.upinMux_gp13 = SOC_GROUP13;
pinmux_soc1.upinMux_gp14 = SOC_GROUP14;
pinmux_soc1.upinMux_gp15 = SOC_GROUP15;
pinmux_soc1.upinMux_gp16 = SOC_GROUP16;
pinmux_soc1.upinMux_gp17 = SOC_GROUP17;
pinmux_soc1.upinMux_gp18 = SOC_GROUP18;
pinmux_soc1.upinMux_gp19 = SOC_GROUP19;
pinmux_soc1.upinMux_gp20 = SOC_GROUP20;
pinmux_soc1.upinMux_gp21 = SOC_GROUP21;
pinmux_soc1.upinMux_gp22 = SOC_GROUP22;
pinmux_soc1.upinMux_gp23 = SOC_GROUP23;
pinmux_soc1.upinMux_gp24 = SOC_GROUP24;
pinmux_soc1.upinMux_gp25 = SOC_GROUP25;
#if (BERLIN_CHIP_VERSION >= BERLIN_BG2_A0)
#if defined(EMMC_BOOT)
pinmux_soc1.upinMux_gp26 = SOC_GP26_EMMC;
#elif defined(NAND_BOOT)
pinmux_soc1.upinMux_gp26 = SOC_GP26_NAND;
#else
pinmux_soc1.upinMux_gp26 = SOC_GROUP26;
#endif
pinmux_soc1.upinMux_gp27 = SOC_GROUP27;
pinmux_soc1.upinMux_gp28 = SOC_GROUP28;
#endif
writel(pinmux_soc.u32, (MEMMAP_CHIP_CTRL_REG_BASE + RA_Gbl_pinMux));
writel(pinmux_soc1.u32, (MEMMAP_CHIP_CTRL_REG_BASE + RA_Gbl_pinMux1));
//def CONFIG_SM // need set SM's pinmux too
pinmux_sm.uSM_GSM_SEL_GSM0_SEL = SM_GROUP0;
pinmux_sm.uSM_GSM_SEL_GSM1_SEL = SM_GROUP1;
pinmux_sm.uSM_GSM_SEL_GSM2_SEL = SM_GROUP2;
pinmux_sm.uSM_GSM_SEL_GSM3_SEL = SM_GROUP3;
pinmux_sm.uSM_GSM_SEL_GSM4_SEL = SM_GROUP4;
pinmux_sm.uSM_GSM_SEL_GSM5_SEL = SM_GROUP5;
pinmux_sm.uSM_GSM_SEL_GSM6_SEL = SM_GROUP6;
pinmux_sm.uSM_GSM_SEL_GSM7_SEL = SM_GROUP7;
pinmux_sm.uSM_GSM_SEL_GSM8_SEL = SM_GROUP8;
pinmux_sm.uSM_GSM_SEL_GSM9_SEL = SM_GROUP9;
pinmux_sm.uSM_GSM_SEL_GSM10_SEL = SM_GROUP10;
#if (BERLIN_CHIP_VERSION >= BERLIN_BG2_A0)
pinmux_sm.uSM_GSM_SEL_GSM11_SEL = SM_GROUP11;
#endif
writel(pinmux_sm.u32, (SM_SYS_CTRL_REG_BASE + RA_smSysCtl_SM_GSM_SEL));
}
#if 0
void gpio_init()
{
int i;
/*
* GPIO settings
*/
for(i=0; sm_gpio_table[i][0] != -1; i++) {
SM_GPIO_PortSetInOut(sm_gpio_table[i][0], sm_gpio_table[i][1]);
SM_GPIO_PortWrite(sm_gpio_table[i][0], sm_gpio_table[i][2]);
// printf("sm port %d, in/out %d, value: %d\n", sm_gpio_table[i][0], sm_gpio_table[i][1], sm_gpio_table[i][2]);
}
for(i=0; soc_gpio_table[i][0] != -1; i++) {
GPIO_PortSetInOut(soc_gpio_table[i][0], soc_gpio_table[i][1]);
GPIO_PortWrite(soc_gpio_table[i][0], soc_gpio_table[i][2]);
// printf("soc port %d, in/out %d, value: %d\n", soc_gpio_table[i][0], soc_gpio_table[i][1], soc_gpio_table[i][2]);
}
}
#endif
#endif