您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ to_pll_clk函数代码示例

51自学网 2021-06-03 08:54:24
  C++
这篇教程C++ to_pll_clk函数代码示例写得很实用,希望能帮到您。

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

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

示例1: local_pll_clk_set_rate

static int local_pll_clk_set_rate(struct clk *c, unsigned long rate){	struct pll_freq_tbl *nf;	struct pll_clk *pll = to_pll_clk(c);	u32 mode;	mode = readl_relaxed(PLL_MODE_REG(pll));	/* Don't change PLL's rate if it is enabled */	if ((mode & PLL_MODE_MASK) == PLL_MODE_MASK)		return -EBUSY;	for (nf = pll->freq_tbl; nf->freq_hz != PLL_FREQ_END			&& nf->freq_hz != rate; nf++)		;	if (nf->freq_hz == PLL_FREQ_END)		return -EINVAL;	writel_relaxed(nf->l_val, PLL_L_REG(pll));	writel_relaxed(nf->m_val, PLL_M_REG(pll));	writel_relaxed(nf->n_val, PLL_N_REG(pll));	__pll_config_reg(PLL_CONFIG_REG(pll), nf, &pll->masks);	return 0;}
开发者ID:StanTRC,项目名称:lge-kernel-e400,代码行数:27,


示例2: sr_pll_clk_enable

int sr_pll_clk_enable(struct clk *c){	u32 mode;	unsigned long flags;	struct pll_clk *pll = to_pll_clk(c);	spin_lock_irqsave(&pll_reg_lock, flags);	mode = readl_relaxed(PLL_MODE_REG(pll));		mode |= PLL_RESET_N;	writel_relaxed(mode, PLL_MODE_REG(pll));	mb();	udelay(10);		mode |= PLL_BYPASSNL;	writel_relaxed(mode, PLL_MODE_REG(pll));		mb();	udelay(60);		mode |= PLL_OUTCTRL;	writel_relaxed(mode, PLL_MODE_REG(pll));		mb();	spin_unlock_irqrestore(&pll_reg_lock, flags);	return 0;}
开发者ID:MardonHH,项目名称:kernel_3.4_pico,代码行数:34,


示例3: local_pll_clk_handoff

static enum handoff local_pll_clk_handoff(struct clk *c){	struct pll_clk *pll = to_pll_clk(c);	u32 mode = readl_relaxed(PLL_MODE_REG(pll));	u32 mask = PLL_BYPASSNL | PLL_RESET_N | PLL_OUTCTRL;	unsigned long parent_rate;	u32 lval, mval, nval, userval;	if ((mode & mask) != mask)		return HANDOFF_DISABLED_CLK;	/* Assume bootloaders configure PLL to c->rate */	if (c->rate)		return HANDOFF_ENABLED_CLK;	parent_rate = clk_get_rate(c->parent);	lval = readl_relaxed(PLL_L_REG(pll));	mval = readl_relaxed(PLL_M_REG(pll));	nval = readl_relaxed(PLL_N_REG(pll));	userval = readl_relaxed(PLL_CONFIG_REG(pll));	c->rate = parent_rate * lval;	if (pll->masks.mn_en_mask && userval) {		if (!nval)			nval = 1;		c->rate += (parent_rate * mval) / nval;	}	return HANDOFF_ENABLED_CLK;}
开发者ID:ZolaIII,项目名称:android_kernel_synopsis_nightly,代码行数:31,


示例4: local_pll_clk_set_rate

static int local_pll_clk_set_rate(struct clk *c, unsigned long rate){	struct pll_freq_tbl *nf;	struct pll_clk *pll = to_pll_clk(c);	unsigned long flags;	for (nf = pll->freq_tbl; nf->freq_hz != PLL_FREQ_END			&& nf->freq_hz != rate; nf++)		;	if (nf->freq_hz == PLL_FREQ_END)		return -EINVAL;	/*	 * Ensure PLL is off before changing rate. For optimization reasons,	 * assume no downstream clock is using actively using it.	 */	spin_lock_irqsave(&c->lock, flags);	if (c->count)		c->ops->disable(c);	writel_relaxed(nf->l_val, PLL_L_REG(pll));	writel_relaxed(nf->m_val, PLL_M_REG(pll));	writel_relaxed(nf->n_val, PLL_N_REG(pll));	__pll_config_reg(PLL_CONFIG_REG(pll), nf, &pll->masks);	if (c->count)		c->ops->enable(c);	spin_unlock_irqrestore(&c->lock, flags);	return 0;}
开发者ID:ZolaIII,项目名称:android_kernel_synopsis_nightly,代码行数:33,


示例5: variable_rate_pll_set_rate

/* * For optimization reasons, assumes no downstream clocks are actively using * it. */static int variable_rate_pll_set_rate(struct clk *c, unsigned long rate){	struct pll_clk *pll = to_pll_clk(c);	unsigned long flags;	u32 l_val;	if (rate != variable_rate_pll_round_rate(c, rate))		return -EINVAL;	l_val = rate / pll->src_rate;	spin_lock_irqsave(&c->lock, flags);	if (c->count)		c->ops->disable(c);	writel_relaxed(l_val, PLL_L_REG(pll));	if (c->count)		c->ops->enable(c);	spin_unlock_irqrestore(&c->lock, flags);	return 0;}
开发者ID:DgeunLee,项目名称:DTS-Eagle-Integration_CAF-Android-kernel,代码行数:29,


示例6: sr_pll_clk_enable

static int sr_pll_clk_enable(struct clk *clk){	uint32_t mode;	struct pll_clk *pll = to_pll_clk(clk);	mode = readl_relaxed(pll->mode_reg);	/* De-assert active-low PLL reset. */	mode |= BIT(2);	writel_relaxed(mode, pll->mode_reg);	/*	 * H/W requires a 5us delay between disabling the bypass and	 * de-asserting the reset. Delay 10us just to be safe.	 */	dmb();	udelay(10);	/* Disable PLL bypass mode. */	mode |= BIT(1);	writel_relaxed(mode, pll->mode_reg);	/* Wait until PLL is locked. */	dmb();	udelay(60);	/* Enable PLL output. */	mode |= BIT(0);	writel_relaxed(mode, pll->mode_reg);	return 0;}
开发者ID:HunterNight,项目名称:lk-ef65l,代码行数:31,


示例7: local_pll_clk_set_rate

static int local_pll_clk_set_rate(struct clk *c, unsigned long rate){	struct pll_freq_tbl *nf;	struct pll_clk *pll = to_pll_clk(c);	unsigned long flags;	for (nf = pll->freq_tbl; nf->freq_hz != PLL_FREQ_END			&& nf->freq_hz != rate; nf++)		;	if (nf->freq_hz == PLL_FREQ_END)		return -EINVAL;	spin_lock_irqsave(&c->lock, flags);	if (c->count)		c->ops->disable(c);	writel_relaxed(nf->l_val, PLL_L_REG(pll));	writel_relaxed(nf->m_val, PLL_M_REG(pll));	writel_relaxed(nf->n_val, PLL_N_REG(pll));	__pll_config_reg(PLL_CONFIG_REG(pll), nf, &pll->masks);	if (c->count)		c->ops->enable(c);	spin_unlock_irqrestore(&c->lock, flags);	return 0;}
开发者ID:Blackburn29,项目名称:PsycoKernel,代码行数:29,


示例8: local_pll_clk_disable

static void local_pll_clk_disable(struct clk *c){	unsigned long flags;	struct pll_clk *pll = to_pll_clk(c);	spin_lock_irqsave(&pll_reg_lock, flags);	__pll_clk_disable_reg(PLL_MODE_REG(pll));	spin_unlock_irqrestore(&pll_reg_lock, flags);}
开发者ID:MardonHH,项目名称:kernel_3.4_pico,代码行数:9,


示例9: local_pll_clk_enable

static int local_pll_clk_enable(struct clk *clk){	unsigned long flags;	struct pll_clk *pll = to_pll_clk(clk);	spin_lock_irqsave(&pll_reg_lock, flags);	__pll_clk_enable_reg(PLL_MODE_REG(pll));	spin_unlock_irqrestore(&pll_reg_lock, flags);	return 0;}
开发者ID:Bigtime1267,项目名称:HTC-C525c,代码行数:11,


示例10: local_pll_clk_handoff

static enum handoff local_pll_clk_handoff(struct clk *c){	struct pll_clk *pll = to_pll_clk(c);	u32 mode = readl_relaxed(PLL_MODE_REG(pll));	u32 mask = PLL_BYPASSNL | PLL_RESET_N | PLL_OUTCTRL;	if ((mode & mask) == mask)		return HANDOFF_ENABLED_CLK;	return HANDOFF_DISABLED_CLK;}
开发者ID:StanTRC,项目名称:lge-kernel-e400,代码行数:11,


示例11: local_pll_clk_disable

static void local_pll_clk_disable(struct clk *c){	unsigned long flags;	struct pll_clk *pll = to_pll_clk(c);	/*	 * Disable the PLL output, disable test mode, enable	 * the bypass mode, and assert the reset.	 */	spin_lock_irqsave(&pll_reg_lock, flags);	__pll_clk_disable_reg(PLL_MODE_REG(pll));	spin_unlock_irqrestore(&pll_reg_lock, flags);}
开发者ID:ZolaIII,项目名称:android_kernel_synopsis_nightly,代码行数:13,


示例12: local_pll_clk_round_rate

static long local_pll_clk_round_rate(struct clk *c, unsigned long rate){	struct pll_freq_tbl *nf;	struct pll_clk *pll = to_pll_clk(c);	if (!pll->freq_tbl)		return -EINVAL;	for (nf = pll->freq_tbl; nf->freq_hz != PLL_FREQ_END; nf++)		if (nf->freq_hz >= rate)			return nf->freq_hz;	nf--;	return nf->freq_hz;}
开发者ID:ZolaIII,项目名称:android_kernel_synopsis_nightly,代码行数:15,


示例13: variable_rate_pll_round_rate

static long variable_rate_pll_round_rate(struct clk *c, unsigned long rate){	struct pll_clk *pll = to_pll_clk(c);	if (!pll->src_rate)		return 0;	if (rate < pll->min_rate)		rate = pll->min_rate;	if (rate > pll->max_rate)		rate = pll->max_rate;	return min(pll->max_rate,			DIV_ROUND_UP(rate, pll->src_rate) * pll->src_rate);}
开发者ID:DgeunLee,项目名称:DTS-Eagle-Integration_CAF-Android-kernel,代码行数:15,


示例14: sr2_pll_clk_enable

static int sr2_pll_clk_enable(struct clk *c){	unsigned long flags;	struct pll_clk *pll = to_pll_clk(c);	int ret = 0, count;	u32 mode = readl_relaxed(PLL_MODE_REG(pll));	u32 lockmask = pll->masks.lock_mask ?: PLL_LOCKED_BIT;	spin_lock_irqsave(&pll_reg_lock, flags);	spm_event(pll->spm_ctrl.spm_base, pll->spm_ctrl.offset,				pll->spm_ctrl.event_bit, false);	/* Disable PLL bypass mode. */	mode |= PLL_BYPASSNL;	writel_relaxed(mode, PLL_MODE_REG(pll));	/*	 * H/W requires a 5us delay between disabling the bypass and	 * de-asserting the reset. Delay 10us just to be safe.	 */	mb();	udelay(10);	/* De-assert active-low PLL reset. */	mode |= PLL_RESET_N;	writel_relaxed(mode, PLL_MODE_REG(pll));	/* Wait for pll to lock. */	for (count = ENABLE_WAIT_MAX_LOOPS; count > 0; count--) {		if (readl_relaxed(PLL_STATUS_REG(pll)) & lockmask)			break;		udelay(1);	}	if (!(readl_relaxed(PLL_STATUS_REG(pll)) & lockmask))		pr_err("PLL %s didn't lock after enabling it!/n", c->dbg_name);	/* Enable PLL output. */	mode |= PLL_OUTCTRL;	writel_relaxed(mode, PLL_MODE_REG(pll));	/* Ensure that the write above goes through before returning. */	mb();	spin_unlock_irqrestore(&pll_reg_lock, flags);	return ret;}
开发者ID:DaMadOne,项目名称:android_kernel_samsung_msm8976,代码行数:48,


示例15: msm8974_pll_clk_enable

int msm8974_pll_clk_enable(struct clk *c){	unsigned long flags;	struct pll_clk *pll = to_pll_clk(c);	u32 count, mode;	int ret = 0;	spin_lock_irqsave(&pll_reg_lock, flags);	mode = readl_relaxed(PLL_MODE_REG(pll));	/* Disable PLL bypass mode. */	mode |= PLL_BYPASSNL;	writel_relaxed(mode, PLL_MODE_REG(pll));	/*	 * H/W requires a 5us delay between disabling the bypass and	 * de-asserting the reset. Delay 10us just to be safe.	 */	mb();	udelay(10);	/* De-assert active-low PLL reset. */	mode |= PLL_RESET_N;	writel_relaxed(mode, PLL_MODE_REG(pll));	/* Wait for pll to enable. */	for (count = ENABLE_WAIT_MAX_LOOPS; count > 0; count--) {		if (readl_relaxed(PLL_STATUS_REG(pll)) & PLL_LOCKED_BIT)			break;		udelay(1);	}	if (!(readl_relaxed(PLL_STATUS_REG(pll)) & PLL_LOCKED_BIT)) {		WARN("PLL %s didn't lock after enabling it!/n", c->dbg_name);		ret = -ETIMEDOUT;		goto out;	}	/* Enable PLL output. */	mode |= PLL_OUTCTRL;	writel_relaxed(mode, PLL_MODE_REG(pll));	/* Ensure the write above goes through before returning. */	mb();out:	spin_unlock_irqrestore(&pll_reg_lock, flags);	return ret;}
开发者ID:ZolaIII,项目名称:android_kernel_synopsis_nightly,代码行数:48,


示例16: __variable_rate_pll_init

static void __variable_rate_pll_init(struct clk *c){	struct pll_clk *pll = to_pll_clk(c);	u32 regval;	regval = readl_relaxed(PLL_CONFIG_REG(pll));	if (pll->masks.post_div_mask) {		regval &= ~pll->masks.post_div_mask;		regval |= pll->vals.post_div_masked;	}	if (pll->masks.pre_div_mask) {		regval &= ~pll->masks.pre_div_mask;		regval |= pll->vals.pre_div_masked;	}	if (pll->masks.main_output_mask)		regval |= pll->masks.main_output_mask;	if (pll->masks.early_output_mask)		regval |= pll->masks.early_output_mask;	if (pll->vals.enable_mn)		regval |= pll->masks.mn_en_mask;	else		regval &= ~pll->masks.mn_en_mask;	writel_relaxed(regval, PLL_CONFIG_REG(pll));	regval = readl_relaxed(PLL_MODE_REG(pll));	if (pll->masks.apc_pdn_mask)		regval &= ~pll->masks.apc_pdn_mask;	writel_relaxed(regval, PLL_MODE_REG(pll));	writel_relaxed(pll->vals.alpha_val, PLL_ALPHA_REG(pll));	writel_relaxed(pll->vals.config_ctl_val, PLL_CFG_CTL_REG(pll));	if (pll->init_test_ctl) {		writel_relaxed(pll->vals.test_ctl_lo_val,				PLL_TEST_CTL_LO_REG(pll));		writel_relaxed(pll->vals.test_ctl_hi_val,				PLL_TEST_CTL_HI_REG(pll));	}	pll->inited = true;}
开发者ID:DaMadOne,项目名称:android_kernel_samsung_msm8976,代码行数:46,


示例17: variable_rate_pll_round_rate

static long variable_rate_pll_round_rate(struct clk *c, unsigned long rate){	struct pll_clk *pll = to_pll_clk(c);	if (!pll->src_rate)		return 0;	if (pll->no_prepared_reconfig && c->prepare_count)		return -EINVAL;	if (rate < pll->min_rate)		rate = pll->min_rate;	if (rate > pll->max_rate)		rate = pll->max_rate;	return min(pll->max_rate,			DIV_ROUND_UP(rate, pll->src_rate) * pll->src_rate);}
开发者ID:DaMadOne,项目名称:android_kernel_samsung_msm8976,代码行数:18,


示例18: msm8974_pll_clk_enable

int msm8974_pll_clk_enable(struct clk *c){	unsigned long flags;	struct pll_clk *pll = to_pll_clk(c);	u32 count, mode;	int ret = 0;	spin_lock_irqsave(&pll_reg_lock, flags);	mode = readl_relaxed(PLL_MODE_REG(pll));		mode |= PLL_BYPASSNL;	writel_relaxed(mode, PLL_MODE_REG(pll));	mb();	udelay(10);		mode |= PLL_RESET_N;	writel_relaxed(mode, PLL_MODE_REG(pll));		for (count = ENABLE_WAIT_MAX_LOOPS; count > 0; count--) {		if (readl_relaxed(PLL_STATUS_REG(pll)) & PLL_LOCKED_BIT)			break;		udelay(1);	}	if (!(readl_relaxed(PLL_STATUS_REG(pll)) & PLL_LOCKED_BIT)) {		WARN("PLL %s didn't lock after enabling it!/n", c->dbg_name);		ret = -ETIMEDOUT;		goto out;	}		mode |= PLL_OUTCTRL;	writel_relaxed(mode, PLL_MODE_REG(pll));		mb();out:	spin_unlock_irqrestore(&pll_reg_lock, flags);	return ret;}
开发者ID:MardonHH,项目名称:kernel_3.4_pico,代码行数:44,


示例19: to_pll_clk

static void __iomem *variable_rate_pll_list_registers(struct clk *c, int n,				struct clk_register_data **regs, u32 *size){	struct pll_clk *pll = to_pll_clk(c);	static struct clk_register_data data[] = {		{"MODE", 0x0},		{"L", 0x4},		{"ALPHA", 0x8},		{"USER_CTL", 0x10},		{"CONFIG_CTL", 0x14},		{"STATUS", 0x1C},	};	if (n)		return ERR_PTR(-EINVAL);	*regs = data;	*size = ARRAY_SIZE(data);	return PLL_MODE_REG(pll);}
开发者ID:DaMadOne,项目名称:android_kernel_samsung_msm8976,代码行数:19,


示例20: variable_rate_pll_set_rate

/* * For optimization reasons, assumes no downstream clocks are actively using * it. */static int variable_rate_pll_set_rate(struct clk *c, unsigned long rate){	struct pll_clk *pll = to_pll_clk(c);	unsigned long flags;	u32 l_val, regval;	if (rate != variable_rate_pll_round_rate(c, rate))		return -EINVAL;	l_val = rate / pll->src_rate;	spin_lock_irqsave(&c->lock, flags);	if (c->count)		c->ops->disable(c);	/* Set any vco data if present */	if (pll->data.vco_val) {		regval = readl_relaxed(PLL_CONFIG_REG(pll));		if ((rate >= pll->data.min_freq) &&				(rate <= pll->data.max_freq)) {			regval |= pll->data.vco_val;			writel_relaxed(pll->data.config_ctl_val,					PLL_CFG_CTL_REG(pll));		} else {			regval &= ~pll->data.vco_val;			writel_relaxed(pll->vals.config_ctl_val,					PLL_CFG_CTL_REG(pll));		}		writel_relaxed(regval, PLL_CONFIG_REG(pll));	}	writel_relaxed(l_val, PLL_L_REG(pll));	if (c->count)		c->ops->enable(c);	spin_unlock_irqrestore(&c->lock, flags);	return 0;}
开发者ID:DaMadOne,项目名称:android_kernel_samsung_msm8976,代码行数:46,


示例21: __hf_pll_init

static void __hf_pll_init(struct clk *c){	struct pll_clk *pll = to_pll_clk(c);	u32 regval;	regval = readl_relaxed(PLL_CONFIG_REG(pll));	if (pll->masks.post_div_mask) {		regval &= ~pll->masks.post_div_mask;		regval |= pll->vals.post_div_masked;	}	if (pll->masks.pre_div_mask) {		regval &= ~pll->masks.pre_div_mask;		regval |= pll->vals.pre_div_masked;	}	if (pll->masks.vco_mask) {		regval &= ~pll->masks.vco_mask;		regval |= pll->vals.vco_mode_masked;	}	if (pll->masks.main_output_mask)		regval |= pll->masks.main_output_mask;	if (pll->masks.early_output_mask)		regval |= pll->masks.early_output_mask;	if (pll->vals.enable_mn)		regval |= pll->masks.mn_en_mask;	else		regval &= ~pll->masks.mn_en_mask;	writel_relaxed(regval, PLL_CONFIG_REG(pll));	writel_relaxed(pll->vals.config_ctl_val, PLL_CFG_CTL_REG(pll));	pll->inited = true;}
开发者ID:DaMadOne,项目名称:android_kernel_samsung_msm8976,代码行数:39,


示例22: sr_pll_clk_enable

int sr_pll_clk_enable(struct clk *c){	u32 mode;	unsigned long flags;	struct pll_clk *pll = to_pll_clk(c);	spin_lock_irqsave(&pll_reg_lock, flags);	mode = readl_relaxed(PLL_MODE_REG(pll));	/* De-assert active-low PLL reset. */	mode |= PLL_RESET_N;	writel_relaxed(mode, PLL_MODE_REG(pll));	/*	 * H/W requires a 5us delay between disabling the bypass and	 * de-asserting the reset. Delay 10us just to be safe.	 */	mb();	udelay(10);	/* Disable PLL bypass mode. */	mode |= PLL_BYPASSNL;	writel_relaxed(mode, PLL_MODE_REG(pll));	/* Wait until PLL is locked. */	mb();	udelay(60);	/* Enable PLL output. */	mode |= PLL_OUTCTRL;	writel_relaxed(mode, PLL_MODE_REG(pll));	/* Ensure that the write above goes through before returning. */	mb();	spin_unlock_irqrestore(&pll_reg_lock, flags);	return 0;}
开发者ID:ZolaIII,项目名称:android_kernel_synopsis_nightly,代码行数:38,


示例23: variable_rate_pll_handoff

static enum handoff variable_rate_pll_handoff(struct clk *c){	struct pll_clk *pll = to_pll_clk(c);	u32 mode = readl_relaxed(PLL_MODE_REG(pll));	u32 mask = PLL_BYPASSNL | PLL_RESET_N | PLL_OUTCTRL;	u32 lval;	pll->src_rate = clk_get_rate(c->parent);	if ((mode & mask) != mask)		return HANDOFF_DISABLED_CLK;	lval = readl_relaxed(PLL_L_REG(pll));	c->rate = pll->src_rate * lval;	if (c->rate > pll->max_rate || c->rate < pll->min_rate) {		WARN(1, "%s: Out of spec PLL", c->dbg_name);		return HANDOFF_DISABLED_CLK;	}	return HANDOFF_ENABLED_CLK;}
开发者ID:DaMadOne,项目名称:android_kernel_samsung_msm8976,代码行数:23,


示例24: sr_hpm_lp_pll_clk_enable

int sr_hpm_lp_pll_clk_enable(struct clk *c){	unsigned long flags;	struct pll_clk *pll = to_pll_clk(c);	u32 count, mode;	int ret = 0;	spin_lock_irqsave(&pll_reg_lock, flags);	/* Disable PLL bypass mode and de-assert reset. */	mode = PLL_BYPASSNL | PLL_RESET_N;	writel_relaxed(mode, PLL_MODE_REG(pll));	/* Wait for pll to lock. */	for (count = ENABLE_WAIT_MAX_LOOPS; count > 0; count--) {		if (readl_relaxed(PLL_STATUS_REG(pll)) & PLL_LOCKED_BIT)			break;		udelay(1);	}	if (!(readl_relaxed(PLL_STATUS_REG(pll)) & PLL_LOCKED_BIT)) {		WARN("PLL %s didn't lock after enabling it!/n", c->dbg_name);		ret = -ETIMEDOUT;		goto out;	}	/* Enable PLL output. */	mode |= PLL_OUTCTRL;	writel_relaxed(mode, PLL_MODE_REG(pll));	/* Ensure the write above goes through before returning. */	mb();out:	spin_unlock_irqrestore(&pll_reg_lock, flags);	return ret;}
开发者ID:StanTRC,项目名称:lge-kernel-e400,代码行数:37,


示例25: sr_pll_clk_enable

int sr_pll_clk_enable(struct clk *c){	u32 mode;	int count;	unsigned long flags;	struct pll_clk *pll = to_pll_clk(c);	u32 lockmask = pll->masks.lock_mask ?: PLL_LOCKED_BIT;	u32 status_reg, user_reg, l_reg, m_reg, n_reg, config_reg;	spin_lock_irqsave(&pll_reg_lock, flags);	if (unlikely(!to_pll_clk(c)->inited))		/* PLL initilazation is similar to HF PLL */		__hf_pll_init(c);	/* Remove SPM HW event */	spm_event(pll->spm_ctrl.spm_base, pll->spm_ctrl.offset,				pll->spm_ctrl.event_bit, false);	mode = readl_relaxed(PLL_MODE_REG(pll));	/* De-assert active-low PLL reset. */	mode |= PLL_RESET_N | PLL_BYPASSNL;	writel_relaxed(mode, PLL_MODE_REG(pll));	/* A 100us delay required before locking the PLL */	mb();	udelay(100);	/* Wait for the PLL to lock */	for (count = ENABLE_WAIT_MAX_LOOPS; count > 0; count--) {		if (readl_relaxed(PLL_STATUS_REG(pll)) & lockmask)			break;		udelay(1);	}	if (!(readl_relaxed(PLL_STATUS_REG(pll)) & lockmask)) {		mode = readl_relaxed(PLL_MODE_REG(pll));		status_reg = readl_relaxed(PLL_STATUS_REG(pll));		user_reg = readl_relaxed(PLL_CONFIG_REG(pll));		config_reg = readl_relaxed(PLL_CFG_CTL_REG(pll));		l_reg = readl_relaxed(PLL_L_REG(pll));		m_reg = readl_relaxed(PLL_M_REG(pll));		n_reg = readl_relaxed(PLL_N_REG(pll));		pr_err("PLL %s didn't lock after enabling for L value 0x%x!/n",				c->dbg_name, l_reg);		pr_err("mode register is 0x%x/n", mode);		pr_err("status register is 0x%x/n", status_reg);		pr_err("user control register is 0x%x/n", user_reg);		pr_err("config control register is 0x%x/n", config_reg);		pr_err("L value register is 0x%x/n", l_reg);		pr_err("M value register is 0x%x/n", m_reg);		pr_err("N value control register is 0x%x/n", n_reg);		if (pll->spm_ctrl.spm_base)			pr_err("L2 spm_force_event_en 0x%x/n",			readl_relaxed(pll->spm_ctrl.spm_base +						SPM_FORCE_EVENT));		panic("PLL %s didn't lock after enabling it!/n", c->dbg_name);	}	/* Enable PLL output. */	mode |= PLL_OUTCTRL;	writel_relaxed(mode, PLL_MODE_REG(pll));	/* Ensure that the write above goes through before returning. */	mb();	spin_unlock_irqrestore(&pll_reg_lock, flags);	return 0;}
开发者ID:DaMadOne,项目名称:android_kernel_samsung_msm8976,代码行数:72,


示例26: hf_pll_clk_enable

static int hf_pll_clk_enable(struct clk *c){	unsigned long flags;	struct pll_clk *pll = to_pll_clk(c);	int ret = 0, count;	u32 mode;	u32 lockmask = pll->masks.lock_mask ?: PLL_LOCKED_BIT;	u32 status_reg, user_reg, l_reg, m_reg, n_reg, config_reg;	spin_lock_irqsave(&pll_reg_lock, flags);	if (unlikely(!to_pll_clk(c)->inited))		__hf_pll_init(c);	/* Remove SPM HW event */	spm_event(pll->spm_ctrl.spm_base, pll->spm_ctrl.offset,				pll->spm_ctrl.event_bit, false);	mode = readl_relaxed(PLL_MODE_REG(pll));	/* Disable PLL bypass mode. */	mode |= PLL_BYPASSNL;	writel_relaxed(mode, PLL_MODE_REG(pll));	/*	 * H/W requires a 5us delay between disabling the bypass and	 * de-asserting the reset. Use 10us to be sure.	 */	mb();	udelay(10);	/* De-assert active-low PLL reset. */	mode |= PLL_RESET_N;	writel_relaxed(mode, PLL_MODE_REG(pll));	/* A 50us delay required before locking the PLL. */	mb();	udelay(50);	/* Wait for pll to lock. */	for (count = ENABLE_WAIT_MAX_LOOPS; count > 0; count--) {		if (readl_relaxed(PLL_STATUS_REG(pll)) & lockmask) {			udelay(1);			/*			 * Check again to be sure. This is to avoid			 * breaking too early if there is a "transient"			 * lock.			 */			if ((readl_relaxed(PLL_STATUS_REG(pll)) & lockmask))				break;		}		udelay(1);	}	if (!(readl_relaxed(PLL_STATUS_REG(pll)) & lockmask)) {		mode = readl_relaxed(PLL_MODE_REG(pll));		status_reg = readl_relaxed(PLL_STATUS_REG(pll));		user_reg = readl_relaxed(PLL_CONFIG_REG(pll));		config_reg = readl_relaxed(PLL_CFG_CTL_REG(pll));		l_reg = readl_relaxed(PLL_L_REG(pll));		m_reg = readl_relaxed(PLL_M_REG(pll));		n_reg = readl_relaxed(PLL_N_REG(pll));		pr_err("PLL %s didn't lock after enabling for L value 0x%x!/n",				c->dbg_name, l_reg);		pr_err("mode register is 0x%x/n", mode);		pr_err("status register is 0x%x/n", status_reg);		pr_err("user control register is 0x%x/n", user_reg);		pr_err("config control register is 0x%x/n", config_reg);		pr_err("L value register is 0x%x/n", l_reg);		pr_err("M value register is 0x%x/n", m_reg);		pr_err("N value control register is 0x%x/n", n_reg);		if (pll->spm_ctrl.spm_base)			pr_err("L2 spm_force_event_en 0x%x/n",			readl_relaxed(pll->spm_ctrl.spm_base +						SPM_FORCE_EVENT));		panic("PLL %s didn't lock after enabling it!/n", c->dbg_name);	}	/* Enable PLL output. */	mode |= PLL_OUTCTRL;	writel_relaxed(mode, PLL_MODE_REG(pll));	/* Ensure that the write above goes through before returning. */	mb();	spin_unlock_irqrestore(&pll_reg_lock, flags);	return ret;}
开发者ID:DaMadOne,项目名称:android_kernel_samsung_msm8976,代码行数:89,


示例27: to_pll_clk

static struct clk *local_pll_clk_get_parent(struct clk *c){	return to_pll_clk(c)->parent;}
开发者ID:MardonHH,项目名称:kernel_3.4_pico,代码行数:4,


示例28: variable_rate_pll_clk_enable

static int variable_rate_pll_clk_enable(struct clk *c){	unsigned long flags;	struct pll_clk *pll = to_pll_clk(c);	int ret = 0, count;	u32 mode, testlo;	u32 lockmask = pll->masks.lock_mask ?: PLL_LOCKED_BIT;	u32 mode_lock;	u64 time;	bool early_lock = false;	spin_lock_irqsave(&pll_reg_lock, flags);	if (unlikely(!to_pll_clk(c)->inited))		__variable_rate_pll_init(c);	mode = readl_relaxed(PLL_MODE_REG(pll));	/* Set test control bits as required by HW doc */	if (pll->test_ctl_lo_reg && pll->vals.test_ctl_lo_val &&		pll->pgm_test_ctl_enable)		writel_relaxed(pll->vals.test_ctl_lo_val,				PLL_TEST_CTL_LO_REG(pll));	/* Enable test_ctl debug */	mode |= BIT(3);	writel_relaxed(mode, PLL_MODE_REG(pll));	testlo = readl_relaxed(PLL_TEST_CTL_LO_REG(pll));	testlo &= ~BM(7, 6);	testlo |= 0xC0;	writel_relaxed(testlo, PLL_TEST_CTL_LO_REG(pll));	/* Wait for the write to complete */	mb();	/* Disable PLL bypass mode. */	mode |= PLL_BYPASSNL;	writel_relaxed(mode, PLL_MODE_REG(pll));	/*	 * H/W requires a 5us delay between disabling the bypass and	 * de-asserting the reset. Use 10us to be sure.	 */	mb();	udelay(10);	/* De-assert active-low PLL reset. */	mode |= PLL_RESET_N;	writel_relaxed(mode, PLL_MODE_REG(pll));	/*	 * 5us delay mandated by HPG. However, put in a 200us delay here.	 * This is to address possible locking issues with the PLL exhibit	 * early "transient" locks about 16us from this point. With this	 * higher delay, we avoid running into those transients.	 */	mb();	udelay(200);	/* Clear test control bits */	if (pll->test_ctl_lo_reg && pll->vals.test_ctl_lo_val &&		pll->pgm_test_ctl_enable)		writel_relaxed(0x0, PLL_TEST_CTL_LO_REG(pll));	time = sched_clock();	/* Wait for pll to lock. */	for (count = ENABLE_WAIT_MAX_LOOPS; count > 0; count--) {		if (readl_relaxed(PLL_STATUS_REG(pll)) & lockmask) {			udelay(1);			/*			 * Check again to be sure. This is to avoid			 * breaking too early if there is a "transient"			 * lock.			 */			if ((readl_relaxed(PLL_STATUS_REG(pll)) & lockmask))				break;			else				early_lock = true;		}		udelay(1);	}	time = sched_clock() - time;	mode_lock = readl_relaxed(PLL_STATUS_REG(pll));	if (!(mode_lock & lockmask)) {		pr_err("PLL lock bit detection total wait time: %lld ns", time);		pr_err("PLL %s didn't lock after enabling for L value 0x%x!/n",			c->dbg_name, readl_relaxed(PLL_L_REG(pll)));		pr_err("mode register is 0x%x/n",			readl_relaxed(PLL_STATUS_REG(pll)));		pr_err("user control register is 0x%x/n",			readl_relaxed(PLL_CONFIG_REG(pll)));		pr_err("config control register is 0x%x/n",			readl_relaxed(PLL_CFG_CTL_REG(pll)));		pr_err("test control high register is 0x%x/n",			readl_relaxed(PLL_TEST_CTL_HI_REG(pll)));		pr_err("test control low register is 0x%x/n",			readl_relaxed(PLL_TEST_CTL_LO_REG(pll)));//.........这里部分代码省略.........
开发者ID:DaMadOne,项目名称:android_kernel_samsung_msm8976,代码行数:101,


示例29: to_pll_clk

static struct clk *local_pll_clk_get_parent(struct clk *clk){	struct pll_clk *pll = to_pll_clk(clk);	return pll->parent;}
开发者ID:Bigtime1267,项目名称:HTC-C525c,代码行数:5,



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


C++ to_radeon_connector函数代码示例
C++ to_platform_device函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。