Lines Matching refs:fs
495 int clk_fs660c32_vco_get_rate(unsigned long input, struct stm_fs *fs, in clk_fs660c32_vco_get_rate() argument
498 unsigned long nd = fs->ndiv + 16; /* ndiv value */ in clk_fs660c32_vco_get_rate()
523 unsigned long output, struct stm_fs *fs) in clk_fs660c32_vco_get_params() argument
546 fs->ndiv = n - 16; /* Converting formula value to reg value */ in clk_fs660c32_vco_get_params()
707 static void quadfs_fsynth_program_enable(struct st_clk_quadfs_fsynth *fs) in quadfs_fsynth_program_enable() argument
713 CLKGEN_WRITE(fs, en[fs->chan], 1); in quadfs_fsynth_program_enable()
714 CLKGEN_WRITE(fs, en[fs->chan], 0); in quadfs_fsynth_program_enable()
717 static void quadfs_fsynth_program_rate(struct st_clk_quadfs_fsynth *fs) in quadfs_fsynth_program_rate() argument
726 CLKGEN_WRITE(fs, en[fs->chan], 0); in quadfs_fsynth_program_rate()
728 CLKGEN_WRITE(fs, mdiv[fs->chan], fs->md); in quadfs_fsynth_program_rate()
729 CLKGEN_WRITE(fs, pe[fs->chan], fs->pe); in quadfs_fsynth_program_rate()
730 CLKGEN_WRITE(fs, sdiv[fs->chan], fs->sdiv); in quadfs_fsynth_program_rate()
732 if (fs->lock) in quadfs_fsynth_program_rate()
733 spin_lock_irqsave(fs->lock, flags); in quadfs_fsynth_program_rate()
735 if (fs->data->nsdiv_present) in quadfs_fsynth_program_rate()
736 CLKGEN_WRITE(fs, nsdiv[fs->chan], fs->nsdiv); in quadfs_fsynth_program_rate()
738 if (fs->lock) in quadfs_fsynth_program_rate()
739 spin_unlock_irqrestore(fs->lock, flags); in quadfs_fsynth_program_rate()
744 struct st_clk_quadfs_fsynth *fs = to_quadfs_fsynth(hw); in quadfs_fsynth_enable() local
749 quadfs_fsynth_program_rate(fs); in quadfs_fsynth_enable()
751 if (fs->lock) in quadfs_fsynth_enable()
752 spin_lock_irqsave(fs->lock, flags); in quadfs_fsynth_enable()
754 CLKGEN_WRITE(fs, nsb[fs->chan], !fs->data->standby_polarity); in quadfs_fsynth_enable()
756 if (fs->data->nrst_present) in quadfs_fsynth_enable()
757 CLKGEN_WRITE(fs, nrst[fs->chan], 0); in quadfs_fsynth_enable()
759 if (fs->lock) in quadfs_fsynth_enable()
760 spin_unlock_irqrestore(fs->lock, flags); in quadfs_fsynth_enable()
762 quadfs_fsynth_program_enable(fs); in quadfs_fsynth_enable()
769 struct st_clk_quadfs_fsynth *fs = to_quadfs_fsynth(hw); in quadfs_fsynth_disable() local
774 if (fs->lock) in quadfs_fsynth_disable()
775 spin_lock_irqsave(fs->lock, flags); in quadfs_fsynth_disable()
777 CLKGEN_WRITE(fs, nsb[fs->chan], !fs->data->standby_polarity); in quadfs_fsynth_disable()
779 if (fs->lock) in quadfs_fsynth_disable()
780 spin_unlock_irqrestore(fs->lock, flags); in quadfs_fsynth_disable()
785 struct st_clk_quadfs_fsynth *fs = to_quadfs_fsynth(hw); in quadfs_fsynth_is_enabled() local
786 u32 nsb = CLKGEN_READ(fs, nsb[fs->chan]); in quadfs_fsynth_is_enabled()
791 return fs->data->standby_polarity ? !nsb : !!nsb; in quadfs_fsynth_is_enabled()
796 static int clk_fs216c65_get_rate(unsigned long input, const struct stm_fs *fs, in clk_fs216c65_get_rate() argument
805 m = fs->mdiv - 32; in clk_fs216c65_get_rate()
806 s = 1 << (fs->sdiv + 1); in clk_fs216c65_get_rate()
807 ns = (fs->nsdiv ? 1 : 3); in clk_fs216c65_get_rate()
810 res = res - (s * ns * fs->pe); in clk_fs216c65_get_rate()
816 static int clk_fs432c65_get_rate(unsigned long input, const struct stm_fs *fs, in clk_fs432c65_get_rate() argument
825 m = fs->mdiv - 32; in clk_fs432c65_get_rate()
826 sd = 1 << (fs->sdiv + 1); in clk_fs432c65_get_rate()
827 ns = (fs->nsdiv ? 1 : 3); in clk_fs432c65_get_rate()
830 res = res - (sd * ns * fs->pe); in clk_fs432c65_get_rate()
839 const struct stm_fs *fs, unsigned long *rate) in clk_fs660c32_dig_get_rate() argument
841 unsigned long s = (1 << fs->sdiv); in clk_fs660c32_dig_get_rate()
853 ns = (fs->nsdiv == 1) ? 1 : 3; in clk_fs660c32_dig_get_rate()
855 res = (P20 * (32 + fs->mdiv) + 32 * fs->pe) * s * ns; in clk_fs660c32_dig_get_rate()
861 static int quadfs_fsynt_get_hw_value_for_recalc(struct st_clk_quadfs_fsynth *fs, in quadfs_fsynt_get_hw_value_for_recalc() argument
867 params->mdiv = CLKGEN_READ(fs, mdiv[fs->chan]); in quadfs_fsynt_get_hw_value_for_recalc()
868 params->pe = CLKGEN_READ(fs, pe[fs->chan]); in quadfs_fsynt_get_hw_value_for_recalc()
869 params->sdiv = CLKGEN_READ(fs, sdiv[fs->chan]); in quadfs_fsynt_get_hw_value_for_recalc()
871 if (fs->data->nsdiv_present) in quadfs_fsynt_get_hw_value_for_recalc()
872 params->nsdiv = CLKGEN_READ(fs, nsdiv[fs->chan]); in quadfs_fsynt_get_hw_value_for_recalc()
882 fs->md = params->mdiv; in quadfs_fsynt_get_hw_value_for_recalc()
883 fs->pe = params->pe; in quadfs_fsynt_get_hw_value_for_recalc()
884 fs->sdiv = params->sdiv; in quadfs_fsynt_get_hw_value_for_recalc()
885 fs->nsdiv = params->nsdiv; in quadfs_fsynt_get_hw_value_for_recalc()
893 struct st_clk_quadfs_fsynth *fs = to_quadfs_fsynth(hw); in quadfs_find_best_rate() local
901 clk_fs_get_rate = fs->data->get_rate; in quadfs_find_best_rate()
903 for (index = 0; index < fs->data->rtbl_cnt; index++) { in quadfs_find_best_rate()
906 *params = fs->data->rtbl[index]; in quadfs_find_best_rate()
909 clk_fs_get_rate(prate, &fs->data->rtbl[index], &rate); in quadfs_find_best_rate()
926 if (index == fs->data->rtbl_cnt) in quadfs_find_best_rate()
935 struct st_clk_quadfs_fsynth *fs = to_quadfs_fsynth(hw); in quadfs_recalc_rate() local
941 clk_fs_get_rate = fs->data->get_rate; in quadfs_recalc_rate()
943 if (quadfs_fsynt_get_hw_value_for_recalc(fs, ¶ms)) in quadfs_recalc_rate()
972 static void quadfs_program_and_enable(struct st_clk_quadfs_fsynth *fs, in quadfs_program_and_enable() argument
975 fs->md = params->mdiv; in quadfs_program_and_enable()
976 fs->pe = params->pe; in quadfs_program_and_enable()
977 fs->sdiv = params->sdiv; in quadfs_program_and_enable()
978 fs->nsdiv = params->nsdiv; in quadfs_program_and_enable()
984 quadfs_fsynth_program_rate(fs); in quadfs_program_and_enable()
985 quadfs_fsynth_program_enable(fs); in quadfs_program_and_enable()
991 struct st_clk_quadfs_fsynth *fs = to_quadfs_fsynth(hw); in quadfs_set_rate() local
1005 quadfs_program_and_enable(fs, ¶ms); in quadfs_set_rate()
1026 struct st_clk_quadfs_fsynth *fs; in st_clk_register_quadfs_fsynth() local
1036 fs = kzalloc(sizeof(*fs), GFP_KERNEL); in st_clk_register_quadfs_fsynth()
1037 if (!fs) in st_clk_register_quadfs_fsynth()
1046 fs->data = quadfs; in st_clk_register_quadfs_fsynth()
1047 fs->regs_base = reg; in st_clk_register_quadfs_fsynth()
1048 fs->chan = chan; in st_clk_register_quadfs_fsynth()
1049 fs->lock = lock; in st_clk_register_quadfs_fsynth()
1050 fs->hw.init = &init; in st_clk_register_quadfs_fsynth()
1052 clk = clk_register(NULL, &fs->hw); in st_clk_register_quadfs_fsynth()
1055 kfree(fs); in st_clk_register_quadfs_fsynth()