| /kernel/linux/linux-5.10/drivers/clk/baikal-t1/ |
| D | ccu-div.c | 12 #define pr_fmt(fmt) "bt1-ccu-div: " fmt 27 #include "ccu-div.h" 61 unsigned long div) in ccu_div_lock_delay_ns() argument 63 u64 ns = 4ULL * (div ?: 1) * NSEC_PER_SEC; in ccu_div_lock_delay_ns() 71 unsigned long div) in ccu_div_calc_freq() argument 73 return ref_clk / (div ?: 1); in ccu_div_calc_freq() 76 static int ccu_div_var_update_clkdiv(struct ccu_div *div, in ccu_div_var_update_clkdiv() argument 87 if (div->features & CCU_DIV_LOCK_SHIFTED) in ccu_div_var_update_clkdiv() 92 regmap_update_bits(div->sys_regs, div->reg_ctl, in ccu_div_var_update_clkdiv() 102 regmap_read(div->sys_regs, div->reg_ctl, &val); in ccu_div_var_update_clkdiv() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/berlin/ |
| D | berlin2-div.c | 16 #include "berlin2-div.h" 36 * (D) constant div-by-3 clock divider 38 * (F) constant div-by-3 clock mux controlled by <D3Switch> 46 * Also, clock gate and pll mux is not available on every div cell, so 67 struct berlin2_div *div = to_berlin2_div(hw); in berlin2_div_is_enabled() local 68 struct berlin2_div_map *map = &div->map; in berlin2_div_is_enabled() 71 if (div->lock) in berlin2_div_is_enabled() 72 spin_lock(div->lock); in berlin2_div_is_enabled() 74 reg = readl_relaxed(div->base + map->gate_offs); in berlin2_div_is_enabled() 77 if (div->lock) in berlin2_div_is_enabled() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/ |
| D | clk-divider.c | 50 for (clkt = table; clkt->div; clkt++) in _get_table_maxdiv() 51 if (clkt->div > maxdiv && clkt->val <= mask) in _get_table_maxdiv() 52 maxdiv = clkt->div; in _get_table_maxdiv() 61 for (clkt = table; clkt->div; clkt++) in _get_table_mindiv() 62 if (clkt->div < mindiv) in _get_table_mindiv() 63 mindiv = clkt->div; in _get_table_mindiv() 84 for (clkt = table; clkt->div; clkt++) in _get_table_div() 86 return clkt->div; in _get_table_div() 105 unsigned int div) in _get_table_val() argument 109 for (clkt = table; clkt->div; clkt++) in _get_table_val() [all …]
|
| D | clk-milbeaut.c | 83 u8 div; member 101 { .val = 0, .div = 8 }, 102 { .val = 1, .div = 9 }, 103 { .val = 2, .div = 10 }, 104 { .val = 3, .div = 15 }, 105 { .div = 0 }, 109 { .val = 1, .div = 2 }, 110 { .val = 3, .div = 4 }, 111 { .div = 0 }, 115 { .val = 3, .div = 4 }, [all …]
|
| D | clk-cdce706.c | 29 #define CDCE706_DIVIDER(div) (13 + (div)) argument 50 #define CDCE706_DIVIDER_PLL(div) (9 + (div) - ((div) > 2) - ((div) > 4)) argument 51 #define CDCE706_DIVIDER_PLL_SHIFT(div) ((div) < 2 ? 5 : 3 * ((div) & 1)) argument 52 #define CDCE706_DIVIDER_PLL_MASK(div) (0x7 << CDCE706_DIVIDER_PLL_SHIFT(div)) argument 72 unsigned div; member 168 "%s, pll: %d, mux: %d, mul: %u, div: %u\n", in cdce706_pll_recalc_rate() 169 __func__, hwd->idx, hwd->mux, hwd->mul, hwd->div); in cdce706_pll_recalc_rate() 172 if (hwd->div && hwd->mul) { in cdce706_pll_recalc_rate() 175 do_div(res, hwd->div); in cdce706_pll_recalc_rate() 179 if (hwd->div) in cdce706_pll_recalc_rate() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/imx/ |
| D | clk-divider-gate.c | 21 struct clk_divider *div = to_clk_divider(hw); in to_clk_divider_gate() local 23 return container_of(div, struct clk_divider_gate, divider); in to_clk_divider_gate() 29 struct clk_divider *div = to_clk_divider(hw); in clk_divider_gate_recalc_rate_ro() local 32 val = readl(div->reg) >> div->shift; in clk_divider_gate_recalc_rate_ro() 33 val &= clk_div_mask(div->width); in clk_divider_gate_recalc_rate_ro() 37 return divider_recalc_rate(hw, parent_rate, val, div->table, in clk_divider_gate_recalc_rate_ro() 38 div->flags, div->width); in clk_divider_gate_recalc_rate_ro() 45 struct clk_divider *div = to_clk_divider(hw); in clk_divider_gate_recalc_rate() local 49 spin_lock_irqsave(div->lock, flags); in clk_divider_gate_recalc_rate() 54 val = readl(div->reg) >> div->shift; in clk_divider_gate_recalc_rate() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/ti/ |
| D | divider.c | 34 for (clkt = table; clkt->div; clkt++) in _get_table_div() 36 return clkt->div; in _get_table_div() 49 for (clkt = divider->table; clkt->div; clkt++) in _setup_mask() 80 unsigned int div) in _get_table_val() argument 84 for (clkt = table; clkt->div; clkt++) in _get_table_val() 85 if (clkt->div == div) in _get_table_val() 90 static unsigned int _get_val(struct clk_omap_divider *divider, u8 div) in _get_val() argument 93 return div; in _get_val() 95 return __ffs(div); in _get_val() 97 return _get_table_val(divider->table, div); in _get_val() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/mxs/ |
| D | clk-div.c | 38 struct clk_div *div = to_clk_div(hw); in clk_div_recalc_rate() local 40 return div->ops->recalc_rate(&div->divider.hw, parent_rate); in clk_div_recalc_rate() 46 struct clk_div *div = to_clk_div(hw); in clk_div_round_rate() local 48 return div->ops->round_rate(&div->divider.hw, rate, prate); in clk_div_round_rate() 54 struct clk_div *div = to_clk_div(hw); in clk_div_set_rate() local 57 ret = div->ops->set_rate(&div->divider.hw, rate, parent_rate); in clk_div_set_rate() 59 ret = mxs_clk_wait(div->reg, div->busy); in clk_div_set_rate() 73 struct clk_div *div; in mxs_clk_div() local 77 div = kzalloc(sizeof(*div), GFP_KERNEL); in mxs_clk_div() 78 if (!div) in mxs_clk_div() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/bcm/ |
| D | clk-iproc-asiu.c | 32 struct iproc_asiu_div div; member 92 val = readl(asiu->div_base + clk->div.offset); in iproc_asiu_clk_recalc_rate() 93 if ((val & (1 << clk->div.en_shift)) == 0) { in iproc_asiu_clk_recalc_rate() 99 div_h = (val >> clk->div.high_shift) & bit_mask(clk->div.high_width); in iproc_asiu_clk_recalc_rate() 101 div_l = (val >> clk->div.low_shift) & bit_mask(clk->div.low_width); in iproc_asiu_clk_recalc_rate() 114 unsigned int div; in iproc_asiu_clk_round_rate() local 122 div = DIV_ROUND_CLOSEST(*parent_rate, rate); in iproc_asiu_clk_round_rate() 123 if (div < 2) in iproc_asiu_clk_round_rate() 126 return *parent_rate / div; in iproc_asiu_clk_round_rate() 134 unsigned int div, div_h, div_l; in iproc_asiu_clk_set_rate() local [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/meson/ |
| D | clk-regmap.c | 63 struct clk_regmap_div_data *div = clk_get_regmap_div_data(clk); in clk_regmap_div_recalc_rate() local 67 ret = regmap_read(clk->map, div->offset, &val); in clk_regmap_div_recalc_rate() 72 val >>= div->shift; in clk_regmap_div_recalc_rate() 73 val &= clk_div_mask(div->width); in clk_regmap_div_recalc_rate() 74 return divider_recalc_rate(hw, prate, val, div->table, div->flags, in clk_regmap_div_recalc_rate() 75 div->width); in clk_regmap_div_recalc_rate() 82 struct clk_regmap_div_data *div = clk_get_regmap_div_data(clk); in clk_regmap_div_round_rate() local 87 if (div->flags & CLK_DIVIDER_READ_ONLY) { in clk_regmap_div_round_rate() 88 ret = regmap_read(clk->map, div->offset, &val); in clk_regmap_div_round_rate() 93 val >>= div->shift; in clk_regmap_div_round_rate() [all …]
|
| /kernel/linux/linux-5.10/drivers/mmc/host/ |
| D | meson-mx-sdhc-clkc.c | 19 struct clk_divider div; member 34 { .div = 6, .val = 5, }, 35 { .div = 8, .val = 7, }, 36 { .div = 9, .val = 8, }, 37 { .div = 10, .val = 9, }, 38 { .div = 12, .val = 11, }, 39 { .div = 16, .val = 15, }, 40 { .div = 18, .val = 17, }, 41 { .div = 34, .val = 33, }, 42 { .div = 142, .val = 141, }, [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/sunxi/ |
| D | clk-sunxi.c | 35 u8 div; in sun4i_get_pll1_factors() local 38 div = req->rate / 6000000; in sun4i_get_pll1_factors() 39 req->rate = 6000000 * div; in sun4i_get_pll1_factors() 52 if (div < 10) in sun4i_get_pll1_factors() 56 else if (div < 20 || (div < 32 && (div & 1))) in sun4i_get_pll1_factors() 61 else if (div < 40 || (div < 64 && (div & 2))) in sun4i_get_pll1_factors() 69 div <<= req->p; in sun4i_get_pll1_factors() 70 div /= (req->k + 1); in sun4i_get_pll1_factors() 71 req->n = div / 4; in sun4i_get_pll1_factors() 159 u8 div; in sun8i_a23_get_pll1_factors() local [all …]
|
| D | clk-sun9i-cpus.c | 36 #define SUN9I_CPUS_DIV_SET(reg, div) ((reg & ~SUN9I_CPUS_DIV_MASK) | \ argument 37 (div << SUN9I_CPUS_DIV_SHIFT)) 42 #define SUN9I_CPUS_PLL4_DIV_SET(reg, div) ((reg & ~SUN9I_CPUS_PLL4_DIV_MASK) | \ argument 43 (div << SUN9I_CPUS_PLL4_DIV_SHIFT)) 75 u8 div, pre_div = 1; in sun9i_a80_cpus_clk_round() local 84 div = DIV_ROUND_UP(parent_rate, rate); in sun9i_a80_cpus_clk_round() 87 if (parent == SUN9I_CPUS_MUX_PARENT_PLL4 && div > 4) { in sun9i_a80_cpus_clk_round() 89 if (div < 32) { in sun9i_a80_cpus_clk_round() 90 pre_div = div; in sun9i_a80_cpus_clk_round() 91 div = 1; in sun9i_a80_cpus_clk_round() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/ingenic/ |
| D | cgu.c | 371 u32 div_reg, div; in ingenic_clk_recalc_rate() local 374 div_reg = readl(cgu->base + clk_info->div.reg); in ingenic_clk_recalc_rate() 375 div = (div_reg >> clk_info->div.shift) & in ingenic_clk_recalc_rate() 376 GENMASK(clk_info->div.bits - 1, 0); in ingenic_clk_recalc_rate() 378 if (clk_info->div.div_table) in ingenic_clk_recalc_rate() 379 div = clk_info->div.div_table[div]; in ingenic_clk_recalc_rate() 381 div = (div + 1) * clk_info->div.div; in ingenic_clk_recalc_rate() 383 rate /= div; in ingenic_clk_recalc_rate() 385 rate /= clk_info->fixdiv.div; in ingenic_clk_recalc_rate() 393 unsigned int div) in ingenic_clk_calc_hw_div() argument [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/tegra/ |
| D | clk-divider.c | 24 int div; in get_div() local 26 div = div_frac_get(rate, parent_rate, divider->width, in get_div() 29 if (div < 0) in get_div() 32 return div; in get_div() 40 int div, mul; in clk_frac_div_recalc_rate() local 49 div = (reg >> divider->shift) & div_mask(divider); in clk_frac_div_recalc_rate() 52 div += mul; in clk_frac_div_recalc_rate() 55 rate += div - 1; in clk_frac_div_recalc_rate() 56 do_div(rate, div); in clk_frac_div_recalc_rate() 65 int div, mul; in clk_frac_div_round_rate() local [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/sprd/ |
| D | div.c | 10 #include "div.h" 13 const struct sprd_div_internal *div, in sprd_div_helper_round_rate() argument 18 NULL, div->width, 0); in sprd_div_helper_round_rate() 27 return sprd_div_helper_round_rate(&cd->common, &cd->div, in sprd_div_round_rate() 32 const struct sprd_div_internal *div, in sprd_div_helper_recalc_rate() argument 39 val = reg >> div->shift; in sprd_div_helper_recalc_rate() 40 val &= (1 << div->width) - 1; in sprd_div_helper_recalc_rate() 43 div->width); in sprd_div_helper_recalc_rate() 52 return sprd_div_helper_recalc_rate(&cd->common, &cd->div, parent_rate); in sprd_div_recalc_rate() 56 const struct sprd_div_internal *div, in sprd_div_helper_set_rate() argument [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/x86/ |
| D | clk-cgu.c | 184 struct lgm_clk_divider *div = to_lgm_clk_divider(hw); in lgm_clk_divider_enable_disable() local 187 spin_lock_irqsave(&div->lock, flags); in lgm_clk_divider_enable_disable() 188 lgm_set_clk_val(div->membase, div->reg, div->shift_gate, in lgm_clk_divider_enable_disable() 189 div->width_gate, enable); in lgm_clk_divider_enable_disable() 190 spin_unlock_irqrestore(&div->lock, flags); in lgm_clk_divider_enable_disable() 218 struct lgm_clk_divider *div; in lgm_clk_register_divider() local 228 div = devm_kzalloc(dev, sizeof(*div), GFP_KERNEL); in lgm_clk_register_divider() 229 if (!div) in lgm_clk_register_divider() 238 div->membase = ctx->membase; in lgm_clk_register_divider() 239 div->lock = ctx->lock; in lgm_clk_register_divider() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/qcom/ |
| D | clk-regmap-mux-div.c | 12 #include "clk-regmap-mux-div.h" 23 int mux_div_set_src_div(struct clk_regmap_mux_div *md, u32 src, u32 div) in mux_div_set_src_div() argument 29 val = (div << md->hid_shift) | (src << md->src_shift); in mux_div_set_src_div() 60 u32 *div) in mux_div_get_src_div() argument 79 *div = d; in mux_div_get_src_div() 92 unsigned int i, div, max_div; in mux_div_determine_rate() local 101 for (div = 1; div < max_div; div++) { in mux_div_determine_rate() 102 parent_rate = mult_frac(req_rate, div, 2); in mux_div_determine_rate() 104 actual_rate = mult_frac(parent_rate, 2, div); in mux_div_determine_rate() 129 u32 div, max_div, best_src = 0, best_div = 0; in __mux_div_set_rate_and_parent() local [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/pistachio/ |
| D | clk-pistachio.c | 57 DIV(CLK_MIPS_INTERNAL_DIV, "mips_internal_div", "mips_pll_mux", 59 DIV(CLK_MIPS_DIV, "mips_div", "mips_internal_div", 0x208, 8), 68 DIV(CLK_RPU_V_DIV, "rpu_v_div", "rpu_v_pll_mux", 0x21c, 2), 69 DIV(CLK_RPU_L_DIV, "rpu_l_div", "rpu_l_mux", 0x220, 2), 70 DIV(CLK_RPU_SLEEP_DIV, "rpu_sleep_div", "xtal", 0x224, 10), 71 DIV(CLK_RPU_CORE_DIV, "rpu_core_div", "rpu_core_mux", 0x228, 3), 72 DIV(CLK_USB_PHY_DIV, "usb_phy_div", "sys_internal_div", 0x22c, 6), 73 DIV(CLK_ENET_DIV, "enet_div", "enet_mux", 0x230, 6), 82 DIV(CLK_SYS_INTERNAL_DIV, "sys_internal_div", "sys_pll_mux", 0x244, 3), 83 DIV(CLK_SPI0_INTERNAL_DIV, "spi0_internal_div", "sys_pll_mux", [all …]
|
| /kernel/linux/linux-5.10/drivers/media/i2c/ |
| D | aptina-pll.c | 25 unsigned int div; in aptina_pll_calculate() local 42 div = gcd(pll->pix_clock, pll->ext_clock); in aptina_pll_calculate() 43 pll->m = pll->pix_clock / div; in aptina_pll_calculate() 44 div = pll->ext_clock / div; in aptina_pll_calculate() 59 mf_min = max(mf_min, limits->n_min * limits->p1_min / div); in aptina_pll_calculate() 63 mf_max = min(mf_max, DIV_ROUND_UP(limits->n_max * limits->p1_max, div)); in aptina_pll_calculate() 78 * 3. div * mf is a multiple of p1, in order to compute in aptina_pll_calculate() 79 * n = div * mf / p1 in aptina_pll_calculate() 95 * mf_inc = p1 / gcd(div, p1) (6) in aptina_pll_calculate() 104 * ext_clock / (div * mf / p1) * m * mf >= out_clock_min in aptina_pll_calculate() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/at91/ |
| D | clk-master.c | 45 u8 div; member 79 u8 div; in clk_master_recalc_rate() local 91 div = (mckr >> MASTER_DIV_SHIFT) & MASTER_DIV_MASK; in clk_master_recalc_rate() 98 rate /= characteristics->divisors[div]; in clk_master_recalc_rate() 171 return DIV_ROUND_CLOSEST_ULL(parent_rate, (1 << master->div)); in clk_sama7g5_master_recalc_rate() 179 u32 div) in clk_sama7g5_master_best_diff() argument 183 if (div == MASTER_PRES_MAX) in clk_sama7g5_master_best_diff() 186 tmp_rate = parent_rate >> div; in clk_sama7g5_master_best_diff() 206 unsigned int div, i; in clk_sama7g5_master_determine_rate() local 218 for (div = 0; div < MASTER_PRES_MAX + 1; div++) { in clk_sama7g5_master_determine_rate() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/hisilicon/ |
| D | clkdivider-hi6220.c | 29 * @table: the div table that the divider supports 104 struct hi6220_clk_divider *div; in hi6220_register_clkdiv() local 112 div = kzalloc(sizeof(*div), GFP_KERNEL); in hi6220_register_clkdiv() 113 if (!div) in hi6220_register_clkdiv() 122 kfree(div); in hi6220_register_clkdiv() 127 table[i].div = min_div + i; in hi6220_register_clkdiv() 128 table[i].val = table[i].div - 1; in hi6220_register_clkdiv() 138 div->reg = reg; in hi6220_register_clkdiv() 139 div->shift = shift; in hi6220_register_clkdiv() 140 div->width = width; in hi6220_register_clkdiv() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/actions/ |
| D | owl-factor.c | 22 for (clkt = table; clkt->div; clkt++) in _get_table_maxval() 29 unsigned int val, unsigned int *mul, unsigned int *div) in _get_table_div_mul() argument 33 for (clkt = table; clkt->div; clkt++) { in _get_table_div_mul() 36 *div = clkt->div; in _get_table_div_mul() 51 for (clkt = table; clkt->div; clkt++) { in _get_table_val() 53 do_div(calc_rate, clkt->div); in _get_table_val() 85 for (clkt = factor_hw->table; clkt->div; clkt++) { in owl_clk_val_best() 86 try_parent_rate = rate * clkt->div / clkt->mul; in owl_clk_val_best() 90 __func__, clkt->val, clkt->mul, clkt->div, in owl_clk_val_best() 103 cur_rate = DIV_ROUND_UP(parent_rate, clkt->div) * clkt->mul; in owl_clk_val_best() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/sunxi-ng/ |
| D | ccu_div.c | 26 cd->div.table, cd->div.width, in ccu_div_round_rate() 27 cd->div.flags); in ccu_div_round_rate() 64 val = reg >> cd->div.shift; in ccu_div_recalc_rate() 65 val &= (1 << cd->div.width) - 1; in ccu_div_recalc_rate() 70 val = divider_recalc_rate(hw, parent_rate, val, cd->div.table, in ccu_div_recalc_rate() 71 cd->div.flags, cd->div.width); in ccu_div_recalc_rate() 102 val = divider_get_val(rate, parent_rate, cd->div.table, cd->div.width, in ccu_div_set_rate() 103 cd->div.flags); in ccu_div_set_rate() 108 reg &= ~GENMASK(cd->div.width + cd->div.shift - 1, cd->div.shift); in ccu_div_set_rate() 110 writel(reg | (val << cd->div.shift), in ccu_div_set_rate()
|
| /kernel/linux/linux-5.10/drivers/media/platform/sti/hva/ |
| D | hva-debugfs.c | 121 u64 div; in hva_dbg_perf_begin() local 131 div = (u64)ktime_us_delta(dbg->begin, prev); in hva_dbg_perf_begin() 132 do_div(div, 100); in hva_dbg_perf_begin() 133 period = (u32)div; in hva_dbg_perf_begin() 152 div = (u64)dbg->window_stream_size * 80; in hva_dbg_perf_begin() 153 do_div(div, dbg->window_duration); in hva_dbg_perf_begin() 154 bitrate = (u32)div; in hva_dbg_perf_begin() 178 u64 div; in hva_dbg_perf_end() local 187 div = stream->vbuf.vb2_buf.timestamp; in hva_dbg_perf_end() 188 do_div(div, 1000); in hva_dbg_perf_end() [all …]
|