Esempio n. 1
0
static void configure_iva_dpll(dpll_param *dpll_param_p)
{
	/* Unlock the IVA dpll */
	set_modify(CM_CLKMODE_DPLL_IVA, 0x00000007, PLL_MN_POWER_BYPASS);

	check_loop(BIT0, 0, CM_IDLEST_DPLL_IVA);

	/* CM_BYPCLK_DPLL_IVA = CORE_X2_CLK/2 */
	set_modify(CM_BYPCLK_DPLL_IVA, 0x00000003, 0x1);

	/* Disable DPLL autoidle */
	set_modify(CM_AUTOIDLE_DPLL_IVA, 0x00000007, 0x0);

	/* Set M,N,M4,M5 */
	set_modify(CM_CLKSEL_DPLL_IVA, 0x0007ff00, dpll_param_p->m << 8);
	set_modify(CM_CLKSEL_DPLL_IVA, 0x0000007f, dpll_param_p->n);
	set_modify(CM_DIV_M4_DPLL_IVA, 0x0000001f, dpll_param_p->m4);
	set_modify(CM_DIV_M4_DPLL_IVA, 0x00000100, 0x1 << 8);
	set_modify(CM_DIV_M5_DPLL_IVA, 0x0000001f, dpll_param_p->m5);
	set_modify(CM_DIV_M5_DPLL_IVA, 0x00000100, 0x1 << 8);

	/* Lock the iva dpll */
	set_modify(CM_CLKMODE_DPLL_IVA, 0x00000007, PLL_LOCK);
	check_loop(BIT0, 1, CM_IDLEST_DPLL_IVA);
}
Esempio n. 2
0
static void configure_mpu_dpll(dpll_param *dpll_param_p,
			struct proc_specific_functions *proc_ops)
{
	int omap_rev;
	u32 emif_div_4, abe_div_8, dcc_en;

	/* Unlock the MPU dpll */
	set_modify(CM_CLKMODE_DPLL_MPU, 0x00000007, PLL_MN_POWER_BYPASS);
	check_loop(BIT0, 0, CM_IDLEST_DPLL_MPU);

	omap_rev = proc_ops->proc_get_proc_id();
	if (omap_rev >= OMAP_4470_ES1_DOT_0) {
		/*
		* Same M, N as for 800 MHz from M2 output will
		* give 1600 MHz from M3 output
		*/
		dpll_param_p = &mpu_dpll_param_800mhz;
	} else if (omap_rev >= OMAP_4460_ES1_DOT_0) {
		/*
		 * Same M, N as for 700 MHz from M2 output will
		 * give 1400 MHz from M3 output
		 */
		dpll_param_p = &mpu_dpll_param_700mhz;

		emif_div_4 = 1;
		abe_div_8 = 1;

		set_modify(CM_MPU_MPU_CLKCTRL, 0x01000000, emif_div_4 << 24);
		set_modify(CM_MPU_MPU_CLKCTRL, 0x02000000, abe_div_8 << 25);

		dcc_en = 0;
		/* Enable / disable DCC on 4460 */
		set_modify(CM_CLKSEL_DPLL_MPU, 0x00400000, dcc_en << 22);
	}

	/* Disable DPLL autoidle */
	set_modify(CM_AUTOIDLE_DPLL_MPU, 0x00000007, 0x0);

	/* Set M,N,M2 values */
	set_modify(CM_CLKSEL_DPLL_MPU, 0x0007ff00, dpll_param_p->m << 8);

	set_modify(CM_CLKSEL_DPLL_MPU, 0x0000003f, dpll_param_p->n);

	set_modify(CM_DIV_M2_DPLL_MPU, 0x0000001f, dpll_param_p->m2);

	set_modify(CM_DIV_M2_DPLL_MPU, 0x00000100, 0x1 << 8);

	/* Lock the mpu dpll */
	set_modify(CM_CLKMODE_DPLL_MPU, 0x00000007, (PLL_LOCK | 10));
	check_loop(BIT0, 1, CM_IDLEST_DPLL_MPU);
}
Esempio n. 3
0
void configure_smartio(struct smartio *smartio_config)
{

    struct smartio *smartio;

    if (smartio_config != NULL) {
        for (smartio = &smartio_config[0]; smartio->base > 0;
                smartio++)
            set_modify(smartio->base, smartio->mask,
                       smartio->value);
    } else {
        for (smartio = &smartio_default[0]; smartio->base > 0;
                smartio++)
            set_modify(smartio->base, smartio->mask,
                       smartio->value);
    }
}
Esempio n. 4
0
/* must be called from sram or flash */
void gpmc_init(void)
{
    u32 cs_base = GPMC_CONFIG_CS0;
    u8 i;

    /* Disable all Chip Selects as there is
     * no device on gpmc right now
     */
    for (i = 0; i < 8; i++)
        set_modify(cs_base + GPMC_CONFIG7 + 0x30*i, 0x00000040, 0 << 6);

    return;
}
Esempio n. 5
0
static int omap5evm_check_fastboot(void)
{
	u32 temp;
	/* set the clock for the keypad */
	set_modify(CM_WKUPAON_KBD_CLKCTRL, 0x00000003, 0x02);
	/* any key pressed ? */
	temp = readl(KBD_STATEMACHINE);
	if (temp == 0)
		return 0;
	ldelay(200000);
	temp = readl(KBD_FULLCODE31_0);
	if ((temp & USER_FASTBOOT_RQ) == USER_FASTBOOT_RQ) {
		printf("Keypress detected: going to fastboot mode\n");
		return 1;
	}
	return 0;
}
Esempio n. 6
0
/**
 * scale_vcore_omap4460() - Scale for OMAP4460
 * @rev:	OMAP chip revision
 *
 * PMIC assumed to be used is TWL6030 + TPS62361
 */
static void scale_vcore_omap4460(unsigned int rev)
{
	u32 volt;

	/* vdd_core - TWL6030 VCORE 1 - OPP100 - 1.127V */
	omap_vc_bypass_send_value(TWL6030_SRI2C_SLAVE_ADDR,
				  TWL6030_SRI2C_REG_ADDR_VCORE1, 0x22);

	/* WKUP clocks */
	set_modify(CM_WKUP_GPIO1_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_WKUP_GPIO1_CLKCTRL);

	/* vdd_mpu - TPS62361 - OPP100 - 1.210V (roundup from 1.2V) */
	volt = 1210;
	volt -= TPS62361_BASE_VOLT_MV;
	volt /= 10;
	do_scale_tps62361(TPS62361_REG_ADDR_SET1, volt);

	/* vdd_iva - TWL6030 VCORE 2 - OPP50  - 0.950V */
	omap_vc_bypass_send_value(TWL6030_SRI2C_SLAVE_ADDR,
				  TWL6030_SRI2C_REG_ADDR_VCORE2, 0x14);
}
Esempio n. 7
0
static void configure_mpu_dpll(dpll_param *dpll_param_p)
{
	/* Unlock the MPU dpll */
	set_modify(CM_CLKMODE_DPLL_MPU, 0x00000007, PLL_MN_POWER_BYPASS);
	check_loop(BIT0, 0, CM_IDLEST_DPLL_MPU);

	/* Disable DPLL autoidle */
	set_modify(CM_AUTOIDLE_DPLL_MPU, 0x00000007, 0x0);

	/* Set M,N,M2 values */
	set_modify(CM_CLKSEL_DPLL_MPU, 0x0007ff00, dpll_param_p->m << 8);

	set_modify(CM_CLKSEL_DPLL_MPU, 0x0000003f, dpll_param_p->n);

	set_modify(CM_DIV_M2_DPLL_MPU, 0x0000001f, dpll_param_p->m2);

	set_modify(CM_DIV_M2_DPLL_MPU, 0x00000100, 0x1 << 8);

	/* Lock the mpu dpll */
	set_modify(CM_CLKMODE_DPLL_MPU, 0x00000007, (PLL_LOCK | 10));
	check_loop(BIT0, 1, CM_IDLEST_DPLL_MPU);
}
Esempio n. 8
0
static void enable_all_clocks(void)
{
	/* L4PER clocks */
	set_modify(CM_L4PER_CLKSTCTRL, 0x00000000, 0x2);
	set_modify(CM_L4PER_DMTIMER10_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_DMTIMER10_CLKCTRL);

	set_modify(CM_L4PER_DMTIMER11_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_DMTIMER11_CLKCTRL);

	set_modify(CM_L4PER_DMTIMER2_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_DMTIMER2_CLKCTRL);

	set_modify(CM_L4PER_DMTIMER3_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_DMTIMER3_CLKCTRL);

	set_modify(CM_L4PER_DMTIMER4_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_DMTIMER4_CLKCTRL);

	set_modify(CM_L4PER_DMTIMER9_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_DMTIMER9_CLKCTRL);

	/* GPIO clocks */
	set_modify(CM_L4PER_GPIO2_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_L4PER_GPIO2_CLKCTRL);

	set_modify(CM_L4PER_GPIO3_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_L4PER_GPIO3_CLKCTRL);

	set_modify(CM_L4PER_GPIO4_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_L4PER_GPIO4_CLKCTRL);

	set_modify(CM_L4PER_GPIO4_CLKCTRL, 0x00000100, 0x1 << 8);

	set_modify(CM_L4PER_GPIO5_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_L4PER_GPIO5_CLKCTRL);

	set_modify(CM_L4PER_GPIO6_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_L4PER_GPIO6_CLKCTRL);

	set_modify(CM_L4PER_HDQ1W_CLKCTRL, 0x00000000, 0x2);

	/* I2C clocks */
	set_modify(CM_L4PER_I2C1_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_I2C1_CLKCTRL);

	set_modify(CM_L4PER_I2C2_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_I2C2_CLKCTRL);

	set_modify(CM_L4PER_I2C3_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_I2C3_CLKCTRL);

	set_modify(CM_L4PER_I2C4_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_I2C4_CLKCTRL);

	set_modify(CM_L4PER_MCBSP4_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_MCBSP4_CLKCTRL);

	/* MCSPI clocks */
	set_modify(CM_L4PER_MCSPI1_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_MCSPI1_CLKCTRL);

	set_modify(CM_L4PER_MCSPI2_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_MCSPI2_CLKCTRL);

	set_modify(CM_L4PER_MCSPI3_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_MCSPI3_CLKCTRL);

	set_modify(CM_L4PER_MCSPI4_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_MCSPI4_CLKCTRL);

	/* MMC clocks */
	set_modify(CM_L3INIT_HSMMC1_CLKCTRL, 0x00000003, 0x2);
	set_modify(CM_L3INIT_HSMMC1_CLKCTRL, 0x01000000, 0x1 << 24);
	set_modify(CM_L3INIT_HSMMC2_CLKCTRL, 0x00000003, 0x2);
	set_modify(CM_L3INIT_HSMMC2_CLKCTRL, 0x01000000, 0x1 << 24);

	set_modify(CM_L4PER_MMCSD3_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT18|BIT17|BIT16, 0, CM_L4PER_MMCSD3_CLKCTRL);

	set_modify(CM_L4PER_MMCSD4_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT18|BIT17|BIT16, 0, CM_L4PER_MMCSD4_CLKCTRL);

	set_modify(CM_L4PER_MMCSD5_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_MMCSD5_CLKCTRL);

	/* UART clocks */
	set_modify(CM_L4PER_UART1_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_UART1_CLKCTRL);

	set_modify(CM_L4PER_UART2_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_UART2_CLKCTRL);

	set_modify(CM_L4PER_UART3_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_UART3_CLKCTRL);

	set_modify(CM_L4PER_UART4_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_L4PER_UART4_CLKCTRL);

	/* WKUP clocks */
	set_modify(CM_WKUP_GPIO1_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_WKUP_GPIO1_CLKCTRL);

	set_modify(CM_WKUP_TIMER1_CLKCTRL, 0x00000000, 0x01000002);
	check_loop(BIT17|BIT16, 0, CM_WKUP_TIMER1_CLKCTRL);

	set_modify(CM_WKUP_KEYBOARD_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_WKUP_KEYBOARD_CLKCTRL);

	set_modify(CM_SDMA_CLKSTCTRL, 0x00000000, 0x0);
	set_modify(CM_MEMIF_CLKSTCTRL, 0x00000000, 0x3);

	set_modify(CM_MEMIF_EMIF_1_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_MEMIF_EMIF_1_CLKCTRL);

	set_modify(CM_MEMIF_EMIF_2_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_MEMIF_EMIF_2_CLKCTRL);

	set_modify(CM_D2D_CLKSTCTRL, 0x00000000, 0x3);

	set_modify(CM_L3_2_GPMC_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_L3_2_GPMC_CLKCTRL);

	set_modify(CM_L3INSTR_L3_3_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_L3INSTR_L3_3_CLKCTRL);

	set_modify(CM_L3INSTR_L3_INSTR_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_L3INSTR_L3_INSTR_CLKCTRL);

	set_modify(CM_L3INSTR_OCP_WP1_CLKCTRL, 0x00000000, 0x1);
	check_loop(BIT17|BIT16, 0, CM_L3INSTR_OCP_WP1_CLKCTRL);

	/* WDT clocks */
	set_modify(CM_WKUP_WDT2_CLKCTRL, 0x00000000, 0x2);
	check_loop(BIT17|BIT16, 0, CM_WKUP_WDT2_CLKCTRL);

	/* Select DPLL PER CLOCK as source for SGX FCLK */
	set_modify(CM_SGX_SGX_CLKCTRL, 0x01000000, 0x1 << 24);

	/* Enable clocks for USB fast boot to work */
	set_modify(CM_L3INIT_USBPHY_CLKCTRL, 0x00000000, 0x301);
	set_modify(CM_L3INIT_HSUSBOTG_CLKCTRL, 0x00000000, 0x1);

	return;
}
Esempio n. 9
0
void lock_core_dpll(void)
{
	/* Lock the core dpll */
	set_modify(CM_CLKMODE_DPLL_CORE, 0x00000007, PLL_LOCK);
	check_loop(BIT0, 1, CM_IDLEST_DPLL_CORE);
}
Esempio n. 10
0
void configure_core_dpll_no_lock(void)
{
	dpll_param *dpll_param_p = &core_dpll_param_ddr400mhz;

	/* Get the sysclk speed from cm_sys_clksel
	 * Set it to 38.4 MHz, in case ROM code is bypassed
	 */
	writel(0x7,CM_SYS_CLKSEL);

	/* CORE_CLK=CORE_X2_CLK/2, L3_CLK=CORE_CLK/2, L4_CLK=L3_CLK/2 */
	set_modify(CM_CLKSEL_CORE, 0x00000000, 0x110);

	/* Unlock the CORE dpll */
	set_modify(CM_CLKMODE_DPLL_CORE, 0x00000007, PLL_MN_POWER_BYPASS);
	check_loop(BIT0, 0, CM_IDLEST_DPLL_CORE);

	/* Disable autoidle */
	set_modify(CM_AUTOIDLE_DPLL_CORE, 0x00000007, 0x0);
	set_modify(CM_CLKSEL_DPLL_CORE, 0x0007ff00, dpll_param_p->m << 8);
	set_modify(CM_CLKSEL_DPLL_CORE, 0x0000003f, dpll_param_p->n);
	set_modify(CM_DIV_M2_DPLL_CORE, 0x0000001f, dpll_param_p->m2);
	set_modify(CM_DIV_M3_DPLL_CORE, 0x0000001f, dpll_param_p->m3);
	set_modify(CM_DIV_M4_DPLL_CORE, 0x0000001f, dpll_param_p->m4);
	set_modify(CM_DIV_M5_DPLL_CORE, 0x0000001f, dpll_param_p->m5);
	set_modify(CM_DIV_M6_DPLL_CORE, 0x0000001f, dpll_param_p->m6);
	set_modify(CM_DIV_M7_DPLL_CORE, 0x0000001f, dpll_param_p->m7);
}
Esempio n. 11
0
static void configure_usb_dpll(dpll_param *dpll_param_p)
{
	/* Select the 60Mhz clock 480/8 = 60*/
	set_modify(CM_CLKSEL_USB_60MHz, 0x00000000, 0x1);

	/* Unlock the USB dpll */
	set_modify(CM_CLKMODE_DPLL_USB, 0x00000007, PLL_MN_POWER_BYPASS);
	check_loop(BIT0, 0, CM_IDLEST_DPLL_USB);

	/* Disable autoidle */
	set_modify(CM_AUTOIDLE_DPLL_USB, 0x00000007, 0x0);
	set_modify(CM_CLKSEL_DPLL_USB, 0x0007ff00, dpll_param_p->m << 8);
	set_modify(CM_CLKSEL_DPLL_USB, 0x0000003f, dpll_param_p->n);

	/* Force DPLL CLKOUT to stay active */
	set_modify(CM_DIV_M2_DPLL_USB, 0x00000000, 0x100);
	set_modify(CM_DIV_M2_DPLL_USB, 0x0000001f, dpll_param_p->m2);
	set_modify(CM_DIV_M2_DPLL_USB, 0x00000100, 0x1 << 8);
	set_modify(CM_CLKDCOLDO_DPLL_USB, 0x00000100, 0x1 << 8);

	/* Lock the usb dpll */
	set_modify(CM_CLKMODE_DPLL_USB, 0x00000007, PLL_LOCK);
	check_loop(BIT0, 1, CM_IDLEST_DPLL_USB);

	/* force enable the CLKDCOLDO clock */
	set_modify(CM_CLKDCOLDO_DPLL_USB, 0x00000000, 0x100);

}
Esempio n. 12
0
static void configure_abe_dpll(dpll_param *dpll_param_p)
{
	/* Select sys_clk as ref clk for ABE dpll */
	writel(0, CM_ABE_PLL_REF_CLKSEL);

	/* Unlock the ABE dpll */
	set_modify(CM_CLKMODE_DPLL_ABE, 0x00000007, PLL_MN_POWER_BYPASS);
	check_loop(BIT0, 0, CM_IDLEST_DPLL_ABE);

	/* Disable autoidle */
	set_modify(CM_AUTOIDLE_DPLL_ABE, 0x00000007, 0x0);

	set_modify(CM_CLKSEL_DPLL_ABE, 0x0007ff00, dpll_param_p->m << 8);
	set_modify(CM_CLKSEL_DPLL_ABE, 0x0000002f, dpll_param_p->n);

	/* Force DPLL CLKOUTHIF to stay enabled */
	set_modify(CM_DIV_M2_DPLL_ABE, 0x00000000, 0x500);
	set_modify(CM_DIV_M2_DPLL_ABE, 0x0000001f, dpll_param_p->m2);
	set_modify(CM_DIV_M2_DPLL_ABE, 0x00000100, 0x1 << 8);
	/* Force DPLL CLKOUTHIF to stay enabled */
	set_modify(CM_DIV_M3_DPLL_ABE, 0x00000000, 0x100);
	set_modify(CM_DIV_M3_DPLL_ABE, 0x0000001f, dpll_param_p->m3);
	set_modify(CM_DIV_M3_DPLL_ABE, 0x00000100, 0x1 << 8);

	/* Lock the abe dpll */
	set_modify(CM_CLKMODE_DPLL_ABE, 0x00000007, PLL_LOCK);
	check_loop(BIT0, 1, CM_IDLEST_DPLL_ABE);
}
Esempio n. 13
0
static void configure_per_dpll(const dpll_param *dpll_param_p)
{
	/* Unlock the PER dpll */
	set_modify(CM_CLKMODE_DPLL_PER, 0x00000007, PLL_MN_POWER_BYPASS);
	check_loop(BIT0, 0, CM_IDLEST_DPLL_PER);

	/* Disable autoidle */
	set_modify(CM_AUTOIDLE_DPLL_PER, 0x00000007, 0x0);
	set_modify(CM_CLKSEL_DPLL_PER, 0x0007ff00, dpll_param_p->m << 8);
	set_modify(CM_CLKSEL_DPLL_PER, 0x0000003f, dpll_param_p->n);
	set_modify(CM_DIV_M2_DPLL_PER, 0x0000001f, dpll_param_p->m2);
	set_modify(CM_DIV_M2_DPLL_PER, 0x00000100, 0x1 << 8);
	set_modify(CM_DIV_M3_DPLL_PER, 0x0000001f, dpll_param_p->m3);
	set_modify(CM_DIV_M3_DPLL_PER, 0x00000100, 0x1 << 8);
	set_modify(CM_DIV_M4_DPLL_PER, 0x0000001f, dpll_param_p->m4);
	set_modify(CM_DIV_M4_DPLL_PER, 0x00000100, 0x1 << 8);
	set_modify(CM_DIV_M5_DPLL_PER, 0x0000001f, dpll_param_p->m5);
	set_modify(CM_DIV_M5_DPLL_PER, 0x00000100, 0x1 << 8);
	set_modify(CM_DIV_M6_DPLL_PER, 0x0000001f, dpll_param_p->m6);
	set_modify(CM_DIV_M6_DPLL_PER, 0x00000100, 0x1 << 8);
	set_modify(CM_DIV_M7_DPLL_PER, 0x0000001f, dpll_param_p->m7);
	set_modify(CM_DIV_M7_DPLL_PER, 0x00000100, 0x1 << 8);

	/* Lock the per dpll */
	set_modify(CM_CLKMODE_DPLL_PER, 0x00000007, PLL_LOCK);
	check_loop(BIT0, 1, CM_IDLEST_DPLL_PER);
}
Esempio n. 14
0
void configure_core_dpll_no_lock(struct proc_specific_functions *proc_ops)
{
	int omap_rev;
	dpll_param *dpll_param_p;

	omap_rev = proc_ops->proc_get_proc_id();
	if (omap_rev >= OMAP_4470_ES1_DOT_0)
		dpll_param_p = &core_dpll_param_ddr466mhz;
	else
		dpll_param_p = &core_dpll_param_ddr400mhz;

	/* Get the sysclk speed from cm_sys_clksel
	 * Set it to 38.4 MHz, in case ROM code is bypassed
	 */
	writel(0x7,CM_SYS_CLKSEL);

	/* CORE_CLK=CORE_X2_CLK/2, L3_CLK=CORE_CLK/2, L4_CLK=L3_CLK/2 */
	set_modify(CM_CLKSEL_CORE, 0x00000000, 0x110);

	/* Unlock the CORE dpll */
	set_modify(CM_CLKMODE_DPLL_CORE, 0x00000007, PLL_MN_POWER_BYPASS);
	check_loop(BIT0, 0, CM_IDLEST_DPLL_CORE);

	/* Disable autoidle */
	set_modify(CM_AUTOIDLE_DPLL_CORE, 0x00000007, 0x0);
	set_modify(CM_CLKSEL_DPLL_CORE, 0x0007ff00, dpll_param_p->m << 8);
	set_modify(CM_CLKSEL_DPLL_CORE, 0x0000003f, dpll_param_p->n);
	set_modify(CM_DIV_M2_DPLL_CORE, 0x0000001f, dpll_param_p->m2);
	set_modify(CM_DIV_M3_DPLL_CORE, 0x0000001f, dpll_param_p->m3);
	set_modify(CM_DIV_M4_DPLL_CORE, 0x0000001f, dpll_param_p->m4);
	set_modify(CM_DIV_M5_DPLL_CORE, 0x0000001f, dpll_param_p->m5);
	set_modify(CM_DIV_M6_DPLL_CORE, 0x0000001f, dpll_param_p->m6);
	set_modify(CM_DIV_M7_DPLL_CORE, 0x0000001f, dpll_param_p->m7);
}