当前位置: 首页>>代码示例>>C++>>正文


C++ cm_read_mod_reg函数代码示例

本文整理汇总了C++中cm_read_mod_reg函数的典型用法代码示例。如果您正苦于以下问题:C++ cm_read_mod_reg函数的具体用法?C++ cm_read_mod_reg怎么用?C++ cm_read_mod_reg使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了cm_read_mod_reg函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: prcm_clear_mod_irqs

/*
 * PRCM Interrupt Handler Helper Function
 *
 * The purpose of this function is to clear any wake-up events latched
 * in the PRCM PM_WKST_x registers. It is possible that a wake-up event
 * may occur whilst attempting to clear a PM_WKST_x register and thus
 * set another bit in this register. A while loop is used to ensure
 * that any peripheral wake-up events occurring while attempting to
 * clear the PM_WKST_x are detected and cleared.
 */
static int prcm_clear_mod_irqs(s16 module, u8 regs)
{
	u32 wkst, fclk, iclk, clken;
	u16 wkst_off = (regs == 3) ? OMAP3430ES2_PM_WKST3 : PM_WKST1;
	u16 fclk_off = (regs == 3) ? OMAP3430ES2_CM_FCLKEN3 : CM_FCLKEN1;
	u16 iclk_off = (regs == 3) ? CM_ICLKEN3 : CM_ICLKEN1;
	u16 grpsel_off = (regs == 3) ?
		OMAP3430ES2_PM_MPUGRPSEL3 : OMAP3430_PM_MPUGRPSEL;
	int c = 0;

	wkst = prm_read_mod_reg(module, wkst_off);
	wkst &= prm_read_mod_reg(module, grpsel_off);
	if (wkst) {
		iclk = cm_read_mod_reg(module, iclk_off);
		fclk = cm_read_mod_reg(module, fclk_off);
		while (wkst) {
			clken = wkst;
			cm_set_mod_reg_bits(clken, module, iclk_off);
			/*
			 * For USBHOST, we don't know whether HOST1 or
			 * HOST2 woke us up, so enable both f-clocks
			 */
			if (module == OMAP3430ES2_USBHOST_MOD)
				clken |= 1 << OMAP3430ES2_EN_USBHOST2_SHIFT;
			cm_set_mod_reg_bits(clken, module, fclk_off);
			prm_write_mod_reg(wkst, module, wkst_off);
			wkst = prm_read_mod_reg(module, wkst_off);
			c++;
		}
		cm_write_mod_reg(iclk, module, iclk_off);
		cm_write_mod_reg(fclk, module, fclk_off);
	}

	return c;
}
开发者ID:BytecodeMe,项目名称:kernel_mapphone_kexec,代码行数:45,代码来源:pm34xx.c

示例2: omap2_fclks_active

static int omap2_fclks_active(void)
{
	u32 f1, f2;

	f1 = cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);
	f2 = cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_FCLKEN2);
	serial_console_fclk_mask(&f1, &f2);
	if (f1 | f2)
		return 1;
	return 0;
}
开发者ID:smartassfox,项目名称:archos_kernel_27,代码行数:11,代码来源:pm24xx.c

示例3: omap2_fclks_active

static int omap2_fclks_active(void)
{
	u32 f1, f2;

	f1 = cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);
	f2 = cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_FCLKEN2);

	/* Ignore UART clocks.  These are handled by UART core (serial.c) */
	f1 &= ~(OMAP24XX_EN_UART1 | OMAP24XX_EN_UART2);
	f2 &= ~OMAP24XX_EN_UART3;

	if (f1 | f2)
		return 1;
	return 0;
}
开发者ID:embest-tech,项目名称:rowboat-kernel,代码行数:15,代码来源:pm24xx.c

示例4: omap2_i2c_active

static int omap2_i2c_active(void)
{
	u32 l;

	l = cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);
	return l & (OMAP2420_EN_I2C2 | OMAP2420_EN_I2C1);
}
开发者ID:embest-tech,项目名称:rowboat-kernel,代码行数:7,代码来源:pm24xx.c

示例5: omap2_cm_wait_module_ready

/**
 * omap2_cm_wait_idlest_ready - wait for a module to leave idle or standby
 * @prcm_mod: PRCM module offset
 * @idlest_id: CM_IDLESTx register ID (i.e., x = 1, 2, 3)
 * @idlest_shift: shift of the bit in the CM_IDLEST* register to check
 *
 * XXX document
 */
int omap2_cm_wait_module_ready(s16 prcm_mod, u8 idlest_id, u8 idlest_shift)
{
	int ena = 0, i = 0;
	u8 cm_idlest_reg;
	u32 mask;

	if (!idlest_id || (idlest_id > ARRAY_SIZE(cm_idlest_offs)))
		return -EINVAL;

	cm_idlest_reg = cm_idlest_offs[idlest_id - 1];

	if (cpu_is_omap24xx())
		ena = idlest_shift;
	else if (cpu_is_omap34xx())
		ena = 0;
	else
		BUG();

	mask = 1 << idlest_shift;

	/* XXX should be OMAP2 CM */
	while (((cm_read_mod_reg(prcm_mod, cm_idlest_reg) & mask) != ena) &&
	       (i++ < MAX_MODULE_READY_TIME))
		udelay(1);

	return (i < MAX_MODULE_READY_TIME) ? 0 : -EBUSY;
}
开发者ID:0x0f,项目名称:adam-kernel,代码行数:35,代码来源:cm.c

示例6: omap3_clkoutx2_recalc

/**
 * omap3_clkoutx2_recalc - recalculate DPLL X2 output virtual clock rate
 * @clk: DPLL output struct clk
 * @parent_rate: rate of the parent clock of @clk
 * @rate_storage: flag indicating whether current or temporary rate is changing
 *
 * Using parent clock DPLL data, look up DPLL state.  If locked, set our
 * rate to the dpll_clk * 2; otherwise, just use dpll_clk.
 */
static void omap3_clkoutx2_recalc(struct clk *clk, unsigned long parent_rate,
				  u8 rate_storage)
{
	const struct dpll_data *dd;
	u32 v;
	unsigned long rate;
	struct clk *pclk;

	/* Walk up the parents of clk, looking for a DPLL */
	pclk = clk->parent;
	while (pclk && !pclk->dpll_data)
		pclk = pclk->parent;

	/* clk does not have a DPLL as a parent? */
	WARN_ON(!pclk);

	dd = pclk->dpll_data;

	WARN_ON(!dd->enable_mask);

	rate = parent_rate;

	v = cm_read_mod_reg(pclk->prcm_mod, dd->control_reg) & dd->enable_mask;
	v >>= __ffs(dd->enable_mask);
	if (v == OMAP3XXX_EN_DPLL_LOCKED)
		rate *= 2;

	if (rate_storage == CURRENT_RATE)
		clk->rate = rate;
	else if (rate_storage == TEMP_RATE)
		clk->temp_rate = rate;
}
开发者ID:cloned67,项目名称:Beagleboard-OSy2010,代码行数:41,代码来源:clock34xx.c

示例7: omap2_clk_fixed_enable

/* Enable an APLL if off */
static int omap2_clk_fixed_enable(struct clk *clk)
{
    u32 cval, apll_mask;

    apll_mask = EN_APLL_LOCKED << clk->enable_bit;

    cval = cm_read_mod_reg(PLL_MOD, CM_CLKEN);

    if ((cval & apll_mask) == apll_mask)
        return 0;   /* apll already enabled */

    cval &= ~apll_mask;
    cval |= apll_mask;
    cm_write_mod_reg(cval, PLL_MOD, CM_CLKEN);

    if (clk == &apll96_ck)
        cval = OMAP24XX_ST_96M_APLL;
    else if (clk == &apll54_ck)
        cval = OMAP24XX_ST_54M_APLL;

    omap2_wait_clock_ready(OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), cval,
                clk->name);

    /*
     * REVISIT: Should we return an error code if omap2_wait_clock_ready()
     * fails?
     */
    return 0;
}
开发者ID:274914765,项目名称:C,代码行数:30,代码来源:clock24xx.c

示例8: omap2_dpll_round_rate

/*
 * Uses the current prcm set to tell if a rate is valid.
 * You can go slower, but not faster within a given rate set.
 */
static u32 omap2_dpll_round_rate(unsigned long target_rate)
{
    u32 high, low, core_clk_src;

    core_clk_src = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
    core_clk_src &= OMAP24XX_CORE_CLK_SRC_MASK;

    if (core_clk_src == CORE_CLK_SRC_DPLL) {    /* DPLL clockout */
        high = curr_prcm_set->dpll_speed * 2;
        low = curr_prcm_set->dpll_speed;
    } else {                /* DPLL clockout x 2 */
        high = curr_prcm_set->dpll_speed;
        low = curr_prcm_set->dpll_speed / 2;
    }

#ifdef DOWN_VARIABLE_DPLL
    if (target_rate > high)
        return high;
    else
        return target_rate;
#else
    if (target_rate > low)
        return high;
    else
        return low;
#endif

}
开发者ID:274914765,项目名称:C,代码行数:32,代码来源:clock24xx.c

示例9: _omap3_wait_dpll_status

/* _omap3_wait_dpll_status: wait for a DPLL to enter a specific state */
static int _omap3_wait_dpll_status(struct clk *clk, u8 state)
{
	const struct dpll_data *dd;
	int i = 0;
	int ret = -EINVAL;

	dd = clk->dpll_data;

	state <<= __ffs(dd->idlest_mask);

	while (((cm_read_mod_reg(clk->prcm_mod, dd->idlest_reg)
		 & dd->idlest_mask) != state) &&
	       i < MAX_DPLL_WAIT_TRIES) {
		i++;
		udelay(1);
	}

	if (i == MAX_DPLL_WAIT_TRIES) {
		printk(KERN_ERR "clock: %s failed transition to '%s'\n",
		       clk->name, (state) ? "locked" : "bypassed");
	} else {
		pr_debug("clock: %s transition to '%s' in %d loops\n",
			 clk->name, (state) ? "locked" : "bypassed", i);

		ret = 0;
	}

	return ret;
}
开发者ID:linuxkrishna,项目名称:4pamo-hari,代码行数:30,代码来源:clock34xx.c

示例10: omap2_clk_fixed_disable

/* Stop APLL */
static void omap2_clk_fixed_disable(struct clk *clk)
{
    u32 cval;

    cval = cm_read_mod_reg(PLL_MOD, CM_CLKEN);
    cval &= ~(EN_APLL_LOCKED << clk->enable_bit);
    cm_write_mod_reg(cval, PLL_MOD, CM_CLKEN);
}
开发者ID:274914765,项目名称:C,代码行数:9,代码来源:clock24xx.c

示例11: omap2_allow_mpu_retention

static int omap2_allow_mpu_retention(void)
{
	u32 l;

	/* Check for MMC, UART2, UART1, McSPI2, McSPI1 and DSS1. */
	l = cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);
	if (l & (OMAP2420_EN_MMC_MASK | OMAP24XX_EN_UART2_MASK |
		 OMAP24XX_EN_UART1_MASK | OMAP24XX_EN_MCSPI2_MASK |
		 OMAP24XX_EN_MCSPI1_MASK | OMAP24XX_EN_DSS1_MASK))
		return 0;
	/* Check for UART3. */
	l = cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_FCLKEN2);
	if (l & OMAP24XX_EN_UART3_MASK)
		return 0;
	if (sti_console_enabled)
		return 0;

	return 1;
}
开发者ID:Bloodawn,项目名称:lge-kernel-sniper,代码行数:19,代码来源:pm24xx.c

示例12: omap_ohci_bus_check_ctrl_standby

static int omap_ohci_bus_check_ctrl_standby(void)
{
	u32 val;

	val = cm_read_mod_reg(OMAP3430ES2_USBHOST_MOD, CM_IDLEST);
	if (val & OMAP3430ES2_ST_USBHOST_STDBY_MASK)
		return 1;
	else
		return 0;
}
开发者ID:Racing1,项目名称:zeppelin_kernel,代码行数:10,代码来源:board-sholest.c

示例13: cm_rmw_mod_reg_bits

/* Read-modify-write a register in a CM module. Caller must lock */
u32 cm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, s16 idx)
{
	u32 v;

	v = cm_read_mod_reg(module, idx);
	v &= ~mask;
	v |= bits;
	cm_write_mod_reg(v, module, idx);

	return v;
}
开发者ID:egonalter,项目名称:R-Link_kernel,代码行数:12,代码来源:prcm.c

示例14: _omap3_dpll_write_clken

/* _omap3_dpll_write_clken - write clken_bits arg to a DPLL's enable bits */
static void _omap3_dpll_write_clken(struct clk *clk, u8 clken_bits)
{
	const struct dpll_data *dd;
	u32 v;

	dd = clk->dpll_data;

	v = cm_read_mod_reg(clk->prcm_mod, dd->control_reg);
	v &= ~dd->enable_mask;
	v |= clken_bits << __ffs(dd->enable_mask);
	cm_write_mod_reg(v, clk->prcm_mod, dd->control_reg);
}
开发者ID:linuxkrishna,项目名称:4pamo-hari,代码行数:13,代码来源:clock34xx.c

示例15: omap4_sar_enable_check

static int omap4_sar_enable_check(void)
{
	u32 usbhost_state, usbtll_state;

	/* Make sure that USB host and TLL modules are not
	 * enabled before attempting to save the context
	 * registers, otherwise this will trigger an exception.
	 */
	usbhost_state = cm_read_mod_reg(OMAP4430_CM2_L3INIT_MOD,
		OMAP4_CM_L3INIT_USB_HOST_CLKCTRL_OFFSET)
		& (OMAP4430_STBYST_MASK | OMAP4430_IDLEST_MASK);
	usbtll_state = cm_read_mod_reg(OMAP4430_CM2_L3INIT_MOD,
		OMAP4_CM_L3INIT_USB_TLL_CLKCTRL_OFFSET)
		& OMAP4430_IDLEST_MASK;

	if ((usbhost_state == (OMAP4430_STBYST_MASK | OMAP4430_IDLEST_MASK)) &&
		(usbtll_state == (OMAP4430_IDLEST_MASK)))
		return 0;
	else
		return -EBUSY;
}
开发者ID:BytecodeMe,项目名称:kernel_mapphone_kexec,代码行数:21,代码来源:omap4-sar.c


注:本文中的cm_read_mod_reg函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。