| /kernel/linux/linux-6.6/drivers/clk/spear/ |
| D | clk-vco-pll.c | 6 * VCO-PLL clock implementation 9 #define pr_fmt(fmt) "clk-vco-pll: " fmt 18 * DOC: VCO-PLL clock 20 * VCO and PLL rate are derived from following equations: 23 * vco = (2 * M[15:8] * Fin)/N 26 * vco = (2 * M[15:0] * Fin)/(256 * N) 30 * vco and pll are very closely bound to each other, "vco needs to program: 34 * clk_register_vco_pll() registers instances of both vco & pll. 36 * set_rate to vco. A single rate table exists for both the clocks, which 94 for (*index = 0; *index < pll->vco->rtbl_cnt; (*index)++) { in clk_pll_round_rate_index() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/spear/ |
| D | clk-vco-pll.c | 9 * VCO-PLL clock implementation 12 #define pr_fmt(fmt) "clk-vco-pll: " fmt 21 * DOC: VCO-PLL clock 23 * VCO and PLL rate are derived from following equations: 26 * vco = (2 * M[15:8] * Fin)/N 29 * vco = (2 * M[15:0] * Fin)/(256 * N) 33 * vco and pll are very closely bound to each other, "vco needs to program: 37 * clk_register_vco_pll() registers instances of both vco & pll. 39 * set_rate to vco. A single rate table exists for both the clocks, which 97 for (*index = 0; *index < pll->vco->rtbl_cnt; (*index)++) { in clk_pll_round_rate_index() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/versatile/ |
| D | clk-icst.c | 3 * Driver for the ICST307 VCO clock found in the ARM Reference designs. 37 * struct clk_icst - ICST VCO clock wrapper 39 * @vcoreg: VCO register address 40 * @lockreg: VCO lock register address 58 * vco_get() - get ICST VCO settings from a certain ICST 60 * @vco: the VCO struct to return the value in 62 static int vco_get(struct clk_icst *icst, struct icst_vco *vco) in vco_get() argument 80 vco->v = val & INTEGRATOR_AP_CM_BITS; in vco_get() 81 vco->r = 22; in vco_get() 82 vco->s = 1; in vco_get() [all …]
|
| D | icst.c | 27 unsigned long icst_hz(const struct icst_params *p, struct icst_vco vco) in icst_hz() argument 29 u64 dividend = p->ref * 2 * (u64)(vco.v + 8); in icst_hz() 30 u32 divisor = (vco.r + 2) * p->s2div[vco.s]; in icst_hz() 49 struct icst_vco vco = { .s = 1, .v = p->vd_max, .r = p->rd_max }; in icst_hz_to_vco() local 66 return vco; in icst_hz_to_vco() 68 vco.s = p->idx2s[i]; in icst_hz_to_vco() 91 vco.v = vd - 8; in icst_hz_to_vco() 92 vco.r = rd - 2; in icst_hz_to_vco() 99 return vco; in icst_hz_to_vco()
|
| /kernel/linux/linux-6.6/drivers/clk/versatile/ |
| D | clk-icst.c | 3 * Driver for the ICST307 VCO clock found in the ARM Reference designs. 37 * struct clk_icst - ICST VCO clock wrapper 40 * @vcoreg_off: VCO register address 41 * @lockreg_off: VCO lock register address 59 * vco_get() - get ICST VCO settings from a certain ICST 61 * @vco: the VCO struct to return the value in 63 static int vco_get(struct clk_icst *icst, struct icst_vco *vco) in vco_get() argument 81 vco->v = val & INTEGRATOR_AP_CM_BITS; in vco_get() 82 vco->r = 22; in vco_get() 83 vco->s = 1; in vco_get() [all …]
|
| D | icst.c | 27 unsigned long icst_hz(const struct icst_params *p, struct icst_vco vco) in icst_hz() argument 29 u64 dividend = p->ref * 2 * (u64)(vco.v + 8); in icst_hz() 30 u32 divisor = (vco.r + 2) * p->s2div[vco.s]; in icst_hz() 49 struct icst_vco vco = { .s = 1, .v = p->vd_max, .r = p->rd_max }; in icst_hz_to_vco() local 66 return vco; in icst_hz_to_vco() 68 vco.s = p->idx2s[i]; in icst_hz_to_vco() 91 vco.v = vd - 8; in icst_hz_to_vco() 92 vco.r = rd - 2; in icst_hz_to_vco() 99 return vco; in icst_hz_to_vco()
|
| /kernel/linux/linux-6.6/drivers/gpu/drm/i915/display/ |
| D | intel_cdclk.c | 272 unsigned int vco; in intel_hpll_vco() local 292 vco = vco_table[tmp & 0x7]; in intel_hpll_vco() 293 if (vco == 0) in intel_hpll_vco() 294 drm_err(&dev_priv->drm, "Bad HPLL VCO (HPLLVCO=0x%02x)\n", in intel_hpll_vco() 297 drm_dbg_kms(&dev_priv->drm, "HPLL VCO %u kHz\n", vco); in intel_hpll_vco() 299 return vco; in intel_hpll_vco() 314 cdclk_config->vco = intel_hpll_vco(dev_priv); in g33_get_cdclk() 323 switch (cdclk_config->vco) { in g33_get_cdclk() 340 cdclk_config->cdclk = DIV_ROUND_CLOSEST(cdclk_config->vco, in g33_get_cdclk() 346 "Unable to determine CDCLK. HPLL VCO=%u kHz, CFGC=0x%08x\n", in g33_get_cdclk() [all …]
|
| /kernel/linux/linux-5.10/drivers/gpu/drm/i915/display/ |
| D | intel_cdclk.c | 226 unsigned int vco; in intel_hpll_vco() local 246 vco = vco_table[tmp & 0x7]; in intel_hpll_vco() 247 if (vco == 0) in intel_hpll_vco() 248 drm_err(&dev_priv->drm, "Bad HPLL VCO (HPLLVCO=0x%02x)\n", in intel_hpll_vco() 251 drm_dbg_kms(&dev_priv->drm, "HPLL VCO %u kHz\n", vco); in intel_hpll_vco() 253 return vco; in intel_hpll_vco() 268 cdclk_config->vco = intel_hpll_vco(dev_priv); in g33_get_cdclk() 277 switch (cdclk_config->vco) { in g33_get_cdclk() 294 cdclk_config->cdclk = DIV_ROUND_CLOSEST(cdclk_config->vco, in g33_get_cdclk() 300 "Unable to determine CDCLK. HPLL VCO=%u kHz, CFGC=0x%08x\n", in g33_get_cdclk() [all …]
|
| /kernel/linux/linux-6.6/drivers/clk/berlin/ |
| D | berlin2-avpll.c | 19 * VCO with 8 channels each, channel 8 is the odd-one-out and does 26 * Also, here and there the VCO registers are a bit different with 115 struct berlin2_avpll_vco *vco = to_avpll_vco(hw); in berlin2_avpll_vco_is_enabled() local 118 reg = readl_relaxed(vco->base + VCO_CTRL0); in berlin2_avpll_vco_is_enabled() 119 if (vco->flags & BERLIN2_AVPLL_BIT_QUIRK) in berlin2_avpll_vco_is_enabled() 127 struct berlin2_avpll_vco *vco = to_avpll_vco(hw); in berlin2_avpll_vco_enable() local 130 reg = readl_relaxed(vco->base + VCO_CTRL0); in berlin2_avpll_vco_enable() 131 if (vco->flags & BERLIN2_AVPLL_BIT_QUIRK) in berlin2_avpll_vco_enable() 135 writel_relaxed(reg, vco->base + VCO_CTRL0); in berlin2_avpll_vco_enable() 142 struct berlin2_avpll_vco *vco = to_avpll_vco(hw); in berlin2_avpll_vco_disable() local [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/berlin/ |
| D | berlin2-avpll.c | 19 * VCO with 8 channels each, channel 8 is the odd-one-out and does 26 * Also, here and there the VCO registers are a bit different with 115 struct berlin2_avpll_vco *vco = to_avpll_vco(hw); in berlin2_avpll_vco_is_enabled() local 118 reg = readl_relaxed(vco->base + VCO_CTRL0); in berlin2_avpll_vco_is_enabled() 119 if (vco->flags & BERLIN2_AVPLL_BIT_QUIRK) in berlin2_avpll_vco_is_enabled() 127 struct berlin2_avpll_vco *vco = to_avpll_vco(hw); in berlin2_avpll_vco_enable() local 130 reg = readl_relaxed(vco->base + VCO_CTRL0); in berlin2_avpll_vco_enable() 131 if (vco->flags & BERLIN2_AVPLL_BIT_QUIRK) in berlin2_avpll_vco_enable() 135 writel_relaxed(reg, vco->base + VCO_CTRL0); in berlin2_avpll_vco_enable() 142 struct berlin2_avpll_vco *vco = to_avpll_vco(hw); in berlin2_avpll_vco_disable() local [all …]
|
| /kernel/linux/linux-6.6/drivers/clk/ |
| D | clk-si544.c | 45 /* VCO range is 10.8 .. 12.1 GHz, max depends on speed grade */ 223 u64 vco; in si544_calc_muldiv() local 248 vco = FVCO_MIN + ls_freq - 1; in si544_calc_muldiv() 249 do_div(vco, ls_freq); in si544_calc_muldiv() 250 settings->hs_div = vco; in si544_calc_muldiv() 257 /* Calculate VCO frequency (in 10..12GHz range) */ in si544_calc_muldiv() 258 vco = (u64)ls_freq * settings->hs_div; in si544_calc_muldiv() 261 tmp = do_div(vco, FXO); in si544_calc_muldiv() 262 settings->fb_div_int = vco; in si544_calc_muldiv() 265 vco = (u64)tmp << 32; in si544_calc_muldiv() [all …]
|
| D | clk-lmk04832.c | 242 * @vco: reference to the internal VCO clock 244 * @vco_rate: user provided VCO rate 261 struct clk_hw vco; member 330 struct lmk04832 *lmk = container_of(hw, struct lmk04832, vco); in lmk04832_vco_is_enabled() 345 struct lmk04832 *lmk = container_of(hw, struct lmk04832, vco); in lmk04832_vco_prepare() 363 struct lmk04832 *lmk = container_of(hw, struct lmk04832, vco); in lmk04832_vco_unprepare() 377 struct lmk04832 *lmk = container_of(hw, struct lmk04832, vco); in lmk04832_vco_recalc_rate() 413 * lmk04832_check_vco_ranges - Check requested VCO frequency against VCO ranges 416 * @rate: Desired output rate for the VCO 418 * The LMK04832 has 2 internal VCO, each with independent operating ranges. [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/ |
| D | clk-si544.c | 45 /* VCO range is 10.8 .. 12.1 GHz, max depends on speed grade */ 223 u64 vco; in si544_calc_muldiv() local 248 vco = FVCO_MIN + ls_freq - 1; in si544_calc_muldiv() 249 do_div(vco, ls_freq); in si544_calc_muldiv() 250 settings->hs_div = vco; in si544_calc_muldiv() 257 /* Calculate VCO frequency (in 10..12GHz range) */ in si544_calc_muldiv() 258 vco = (u64)ls_freq * settings->hs_div; in si544_calc_muldiv() 261 tmp = do_div(vco, FXO); in si544_calc_muldiv() 262 settings->fb_div_int = vco; in si544_calc_muldiv() 265 vco = (u64)tmp << 32; in si544_calc_muldiv() [all …]
|
| /kernel/linux/linux-6.6/drivers/net/wireless/broadcom/b43/ |
| D | radio_2055.h | 72 #define B2055_VCO_CAL1 0x40 /* VCO cal 1 */ 73 #define B2055_VCO_CAL2 0x41 /* VCO cal 2 */ 74 #define B2055_VCO_CAL3 0x42 /* VCO cal 3 */ 75 #define B2055_VCO_CAL4 0x43 /* VCO cal 4 */ 76 #define B2055_VCO_CAL5 0x44 /* VCO cal 5 */ 77 #define B2055_VCO_CAL6 0x45 /* VCO cal 6 */ 78 #define B2055_VCO_CAL7 0x46 /* VCO cal 7 */ 79 #define B2055_VCO_CAL8 0x47 /* VCO cal 8 */ 80 #define B2055_VCO_CAL9 0x48 /* VCO cal 9 */ 81 #define B2055_VCO_CAL10 0x49 /* VCO cal 10 */ [all …]
|
| /kernel/linux/linux-5.10/drivers/net/wireless/broadcom/b43/ |
| D | radio_2055.h | 72 #define B2055_VCO_CAL1 0x40 /* VCO cal 1 */ 73 #define B2055_VCO_CAL2 0x41 /* VCO cal 2 */ 74 #define B2055_VCO_CAL3 0x42 /* VCO cal 3 */ 75 #define B2055_VCO_CAL4 0x43 /* VCO cal 4 */ 76 #define B2055_VCO_CAL5 0x44 /* VCO cal 5 */ 77 #define B2055_VCO_CAL6 0x45 /* VCO cal 6 */ 78 #define B2055_VCO_CAL7 0x46 /* VCO cal 7 */ 79 #define B2055_VCO_CAL8 0x47 /* VCO cal 8 */ 80 #define B2055_VCO_CAL9 0x48 /* VCO cal 9 */ 81 #define B2055_VCO_CAL10 0x49 /* VCO cal 10 */ [all …]
|
| /kernel/linux/linux-6.6/drivers/clk/pistachio/ |
| D | clk-pll.c | 199 u64 val, vco, old_postdiv1, old_postdiv2; in pll_gf40lp_frac_set_rate() local 209 /* calculate vco */ in pll_gf40lp_frac_set_rate() 210 vco = params->fref; in pll_gf40lp_frac_set_rate() 211 vco *= (params->fbdiv << 24) + params->frac; in pll_gf40lp_frac_set_rate() 212 vco = div64_u64(vco, params->refdiv << 24); in pll_gf40lp_frac_set_rate() 214 if (vco < MIN_VCO_FRAC_FRAC || vco > MAX_VCO_FRAC_FRAC) in pll_gf40lp_frac_set_rate() 215 pr_warn("%s: VCO %llu is out of range %lu..%lu\n", name, vco, in pll_gf40lp_frac_set_rate() 222 if (val > vco / 16) in pll_gf40lp_frac_set_rate() 224 name, val, vco / 16); in pll_gf40lp_frac_set_rate() 356 u32 val, vco, old_postdiv1, old_postdiv2; in pll_gf40lp_laint_set_rate() local [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/pistachio/ |
| D | clk-pll.c | 199 u64 val, vco, old_postdiv1, old_postdiv2; in pll_gf40lp_frac_set_rate() local 209 /* calculate vco */ in pll_gf40lp_frac_set_rate() 210 vco = params->fref; in pll_gf40lp_frac_set_rate() 211 vco *= (params->fbdiv << 24) + params->frac; in pll_gf40lp_frac_set_rate() 212 vco = div64_u64(vco, params->refdiv << 24); in pll_gf40lp_frac_set_rate() 214 if (vco < MIN_VCO_FRAC_FRAC || vco > MAX_VCO_FRAC_FRAC) in pll_gf40lp_frac_set_rate() 215 pr_warn("%s: VCO %llu is out of range %lu..%lu\n", name, vco, in pll_gf40lp_frac_set_rate() 222 if (val > vco / 16) in pll_gf40lp_frac_set_rate() 224 name, val, vco / 16); in pll_gf40lp_frac_set_rate() 356 u32 val, vco, old_postdiv1, old_postdiv2; in pll_gf40lp_laint_set_rate() local [all …]
|
| /kernel/linux/linux-5.10/drivers/media/tuners/ |
| D | fc0011.c | 21 FC11_REG_VCO, /* VCO */ 22 FC11_REG_VCOSEL, /* VCO select */ 30 FC11_REG_VCOCAL, /* VCO calibrate */ 39 FC11_VCOSEL_2 = 0x08, /* VCO select 2 */ 40 FC11_VCOSEL_1 = 0x10, /* VCO select 1 */ 51 FC11_VCOCAL_RUN = 0, /* VCO calibration run */ 52 FC11_VCOCAL_VALUEMASK = 0x3F, /* VCO calibration value mask */ 53 FC11_VCOCAL_OK = 0x40, /* VCO calibration Ok */ 54 FC11_VCOCAL_RESET = 0x80, /* VCO calibration reset */ 132 /* Initiate VCO calibration */ [all …]
|
| /kernel/linux/linux-6.6/drivers/media/tuners/ |
| D | fc0011.c | 21 FC11_REG_VCO, /* VCO */ 22 FC11_REG_VCOSEL, /* VCO select */ 30 FC11_REG_VCOCAL, /* VCO calibrate */ 39 FC11_VCOSEL_2 = 0x08, /* VCO select 2 */ 40 FC11_VCOSEL_1 = 0x10, /* VCO select 1 */ 51 FC11_VCOCAL_RUN = 0, /* VCO calibration run */ 52 FC11_VCOCAL_VALUEMASK = 0x3F, /* VCO calibration value mask */ 53 FC11_VCOCAL_OK = 0x40, /* VCO calibration Ok */ 54 FC11_VCOCAL_RESET = 0x80, /* VCO calibration reset */ 132 /* Initiate VCO calibration */ [all …]
|
| /kernel/linux/linux-6.6/drivers/video/fbdev/kyro/ |
| D | STG4000InitDevice.c | 69 #define STG4K3_PLL_MIN_VCO_SC (100000000 >> STG4K3_PLL_SCALER) /* Min VCO rate */ 70 #define STG4K3_PLL_MAX_VCO_SC (500000000 >> STG4K3_PLL_SCALER) /* Max VCO rate */ 71 #define STG4K3_PLL_MINR_VCO_SC (100000000 >> STG4K3_PLL_SCALER) /* Min VCO rate (restricted) */ 72 #define STG4K3_PLL_MAXR_VCO_SC (500000000 >> STG4K3_PLL_SCALER) /* Max VCO rate (restricted) */ 73 #define STG4K3_PLL_MINR_VCO 100000000 /* Min VCO rate (restricted) */ 74 #define STG4K3_PLL_MAX_VCO 500000000 /* Max VCO rate */ 75 #define STG4K3_PLL_MAXR_VCO 500000000 /* Max VCO rate (restricted) */ 167 /* Calc VCO at full accuracy */ in ProgramClock() 172 * Check it's within restricted VCO range in ProgramClock() 175 * against VCO limit in ProgramClock() [all …]
|
| /kernel/linux/linux-5.10/drivers/video/fbdev/kyro/ |
| D | STG4000InitDevice.c | 69 #define STG4K3_PLL_MIN_VCO_SC (100000000 >> STG4K3_PLL_SCALER) /* Min VCO rate */ 70 #define STG4K3_PLL_MAX_VCO_SC (500000000 >> STG4K3_PLL_SCALER) /* Max VCO rate */ 71 #define STG4K3_PLL_MINR_VCO_SC (100000000 >> STG4K3_PLL_SCALER) /* Min VCO rate (restricted) */ 72 #define STG4K3_PLL_MAXR_VCO_SC (500000000 >> STG4K3_PLL_SCALER) /* Max VCO rate (restricted) */ 73 #define STG4K3_PLL_MINR_VCO 100000000 /* Min VCO rate (restricted) */ 74 #define STG4K3_PLL_MAX_VCO 500000000 /* Max VCO rate */ 75 #define STG4K3_PLL_MAXR_VCO 500000000 /* Max VCO rate (restricted) */ 167 /* Calc VCO at full accuracy */ in ProgramClock() 172 * Check it's within restricted VCO range in ProgramClock() 175 * against VCO limit in ProgramClock() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/analogbits/ |
| D | wrpll-cln28hpc.c | 42 /* MIN_VCO_FREQ: minimum VCO frequency, in Hz (Fvco_min) */ 45 /* MAX_VCO_FREQ: maximum VCO frequency, in Hz (Fvco_max) */ 131 * @vco_rate: pointer to a u64 to store the computed VCO rate into 136 * desired target VCO rate into the variable pointed to by @vco_rate. 225 u64 target_vco_rate, delta, best_delta, f_pre_div, vco, vco_pre; in wrpll_configure_for_rate() local 254 /* Calculate the Q shift and target VCO rate */ in wrpll_configure_for_rate() 279 vco = vco_pre * f; in wrpll_configure_for_rate() 282 if (vco > target_vco_rate) { in wrpll_configure_for_rate() 284 vco = vco_pre * f; in wrpll_configure_for_rate() 285 } else if (vco < MIN_VCO_FREQ) { in wrpll_configure_for_rate() [all …]
|
| /kernel/linux/linux-6.6/drivers/clk/analogbits/ |
| D | wrpll-cln28hpc.c | 46 /* MIN_VCO_FREQ: minimum VCO frequency, in Hz (Fvco_min) */ 49 /* MAX_VCO_FREQ: maximum VCO frequency, in Hz (Fvco_max) */ 135 * @vco_rate: pointer to a u64 to store the computed VCO rate into 140 * desired target VCO rate into the variable pointed to by @vco_rate. 229 u64 target_vco_rate, delta, best_delta, f_pre_div, vco, vco_pre; in wrpll_configure_for_rate() local 258 /* Calculate the Q shift and target VCO rate */ in wrpll_configure_for_rate() 283 vco = vco_pre * f; in wrpll_configure_for_rate() 286 if (vco > target_vco_rate) { in wrpll_configure_for_rate() 288 vco = vco_pre * f; in wrpll_configure_for_rate() 289 } else if (vco < MIN_VCO_FREQ) { in wrpll_configure_for_rate() [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/clock/ |
| D | fsl,plldig.yaml | 30 fsl,vco-hz: 31 description: Optional for VCO frequency of the PLL in Hertz. The VCO frequency 35 its own desired VCO frequency for the PLL.
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/clock/ |
| D | fsl,plldig.yaml | 30 fsl,vco-hz: 31 description: Optional for VCO frequency of the PLL in Hertz. The VCO frequency 35 its own desired VCO frequency for the PLL.
|