void power_init(void) { unsigned int val; struct pmic *p; pmic_init(); p = get_pmic(); /* Set VDDA to 1.25V */ pmic_reg_read(p, REG_SW_2, &val); val &= ~SWX_OUT_MASK; val |= SWX_OUT_1_25; pmic_reg_write(p, REG_SW_2, val); /* * Need increase VCC and VDDA to 1.3V * according to MX53 IC TO2 datasheet. */ if (is_soc_rev(CHIP_REV_2_0) == 0) { /* Set VCC to 1.3V for TO2 */ pmic_reg_read(p, REG_SW_1, &val); val &= ~SWX_OUT_MASK; val |= SWX_OUT_1_30; pmic_reg_write(p, REG_SW_1, val); /* Set VDDA to 1.3V for TO2 */ pmic_reg_read(p, REG_SW_2, &val); val &= ~SWX_OUT_MASK; val |= SWX_OUT_1_30; pmic_reg_write(p, REG_SW_2, val); } }
static inline u32 _get_mux_end(void) { if (is_soc_rev(CHIP_REV_2_0) < 0) return IOMUXC_BASE_ADDR + (0x3F8 - 4); else return IOMUXC_BASE_ADDR + (0x3F0 - 4); }
/* Get the pad register address of this pin */ static inline u32 get_pad_reg(iomux_pin_name_t pin) { u32 pad_reg = PIN_TO_IOMUX_PAD(pin); #if defined(CONFIG_MX51) if (is_soc_rev(CHIP_REV_2_0) < 0) { /* * Fixup register address: * i.MX51 TO1 has offset with the register * which is define as TO2. */ if ((pin == MX51_PIN_NANDF_RB5) || (pin == MX51_PIN_NANDF_RB6) || (pin == MX51_PIN_NANDF_RB7)) ; /* Do nothing */ else if (pad_reg == 0x4D0 - PAD_I_START) pad_reg += 0x4C; else if (pad_reg == 0x860 - PAD_I_START) pad_reg += 0x9C; else if (pad_reg >= 0x804 - PAD_I_START) pad_reg += 0xB0; else if (pad_reg >= 0x7FC - PAD_I_START) pad_reg += 0xB4; else if (pad_reg >= 0x4E4 - PAD_I_START) pad_reg += 0xCC; else pad_reg += 8; } #endif pad_reg += IOMUXSW_PAD_CTL; return pad_reg; }
static inline u32 _get_pad_reg(iomux_pin_name_t pin) { u32 pad_reg = PIN_TO_IOMUX_PAD(pin); if (is_soc_rev(CHIP_REV_2_0) < 0) { if ((pin == MX51_PIN_NANDF_RB5) || (pin == MX51_PIN_NANDF_RB6) || (pin == MX51_PIN_NANDF_RB7)) ; /* Do nothing */ else if (pad_reg == 0x4D0 - PAD_I_START) pad_reg += 0x4C; else if (pad_reg == 0x860 - PAD_I_START) pad_reg += 0x9C; else if (pad_reg >= 0x804 - PAD_I_START) pad_reg += 0xB0; else if (pad_reg >= 0x7FC - PAD_I_START) pad_reg += 0xB4; else if (pad_reg >= 0x4E4 - PAD_I_START) pad_reg += 0xCC; else pad_reg += 8; } pad_reg += IOMUXSW_PAD_CTL; return pad_reg; }
/*! * This function configures input path. * * @param input index of input select register as defined in \b * #iomux_input_select_t * @param config the binary value of elements defined in \b * #iomux_input_config_t */ void mxc_iomux_set_input(iomux_input_select_t input, u32 config) { u32 reg = IOMUXSW_INPUT_CTL + (input << 2); if (is_soc_rev(CHIP_REV_2_0) < 0) { if (input == MUX_IN_IPU_IPP_DI_0_IND_DISPB_SD_D_SELECT_INPUT) input -= 4; else if (input == MUX_IN_IPU_IPP_DI_1_IND_DISPB_SD_D_SELECT_INPUT) input -= 3; else if (input >= MUX_IN_KPP_IPP_IND_COL_6_SELECT_INPUT) input -= 2; else if (input >= MUX_IN_HSC_MIPI_MIX_PAR_SISG_TRIG_SELECT_INPUT) input -= 5; else if (input >= MUX_IN_HSC_MIPI_MIX_IPP_IND_SENS1_DATA_EN_SELECT_INPUT) input -= 3; else if (input >= MUX_IN_ECSPI2_IPP_IND_SS_B_3_SELECT_INPUT) input -= 2; else if (input >= MUX_IN_CCM_PLL1_BYPASS_CLK_SELECT_INPUT) input -= 1; reg += INPUT_CTL_START_TO1; } else { reg += INPUT_CTL_START; } writel(config, reg); }
/* Get the last iomux register address */ static inline u32 get_mux_end(void) { #if defined(CONFIG_MX51) if (is_soc_rev(CHIP_REV_2_0) < 0) return IOMUXC_BASE_ADDR + (0x3F8 - 4); else return IOMUXC_BASE_ADDR + (0x3F0 - 4); #endif return IOMUXSW_MUX_END; }
static inline int gpt_has_clk_source_osc(void) { #if defined(CONFIG_MX6) if (((is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D)) && (is_soc_rev(CHIP_REV_1_0) > 0)) || is_cpu_type(MXC_CPU_MX6DL) || is_cpu_type(MXC_CPU_MX6SOLO) || is_cpu_type(MXC_CPU_MX6SX)) return 1; return 0; #else return 0; #endif }
static inline u32 _get_mux_reg(iomux_pin_name_t pin) { u32 mux_reg = PIN_TO_IOMUX_MUX(pin); if (is_soc_rev(CHIP_REV_2_0) < 0) { if ((pin == MX51_PIN_NANDF_RB5) || (pin == MX51_PIN_NANDF_RB6) || (pin == MX51_PIN_NANDF_RB7)) ; /* Do nothing */ else if (mux_reg >= 0x2FC) mux_reg += 8; else if (mux_reg >= 0x130) mux_reg += 0xC; } mux_reg += IOMUXSW_MUX_CTL; return mux_reg; }
void power_init(void) { unsigned int val; struct pmic *p; int ret; ret = pmic_init(I2C_0); if (ret) return; p = pmic_get("FSL_PMIC"); if (!p) return; /* Set VDDA to 1.25V */ pmic_reg_read(p, REG_SW_2, &val); val &= ~SWX_OUT_MASK; val |= SWX_OUT_1_25; pmic_reg_write(p, REG_SW_2, val); /* * Need increase VCC and VDDA to 1.3V * according to MX53 IC TO2 datasheet. */ if (is_soc_rev(CHIP_REV_2_0) == 0) { /* Set VCC to 1.3V for TO2 */ pmic_reg_read(p, REG_SW_1, &val); val &= ~SWX_OUT_MASK; val |= SWX_OUT_1_30; pmic_reg_write(p, REG_SW_1, val); /* Set VDDA to 1.3V for TO2 */ pmic_reg_read(p, REG_SW_2, &val); val &= ~SWX_OUT_MASK; val |= SWX_OUT_1_30; pmic_reg_write(p, REG_SW_2, val); } }
/* Get the iomux register address of this pin */ static inline u32 get_mux_reg(iomux_pin_name_t pin) { u32 mux_reg = PIN_TO_IOMUX_MUX(pin); #if defined(CONFIG_MX51) if (is_soc_rev(CHIP_REV_2_0) < 0) { /* * Fixup register address: * i.MX51 TO1 has offset with the register * which is define as TO2. */ if ((pin == MX51_PIN_NANDF_RB5) || (pin == MX51_PIN_NANDF_RB6) || (pin == MX51_PIN_NANDF_RB7)) ; /* Do nothing */ else if (mux_reg >= 0x2FC) mux_reg += 8; else if (mux_reg >= 0x130) mux_reg += 0xC; } #endif mux_reg += IOMUXSW_MUX_CTL; return mux_reg; }