Lines Matching refs:fs
496 static int clk_fs660c32_vco_get_rate(unsigned long input, struct stm_fs *fs, in clk_fs660c32_vco_get_rate() argument
499 unsigned long nd = fs->ndiv + 16; /* ndiv value */ in clk_fs660c32_vco_get_rate()
524 unsigned long output, struct stm_fs *fs) in clk_fs660c32_vco_get_params() argument
547 fs->ndiv = n - 16; /* Converting formula value to reg value */ in clk_fs660c32_vco_get_params()
708 static void quadfs_fsynth_program_enable(struct st_clk_quadfs_fsynth *fs) in quadfs_fsynth_program_enable() argument
714 CLKGEN_WRITE(fs, en[fs->chan], 1); in quadfs_fsynth_program_enable()
715 CLKGEN_WRITE(fs, en[fs->chan], 0); in quadfs_fsynth_program_enable()
718 static void quadfs_fsynth_program_rate(struct st_clk_quadfs_fsynth *fs) in quadfs_fsynth_program_rate() argument
727 CLKGEN_WRITE(fs, en[fs->chan], 0); in quadfs_fsynth_program_rate()
729 CLKGEN_WRITE(fs, mdiv[fs->chan], fs->md); in quadfs_fsynth_program_rate()
730 CLKGEN_WRITE(fs, pe[fs->chan], fs->pe); in quadfs_fsynth_program_rate()
731 CLKGEN_WRITE(fs, sdiv[fs->chan], fs->sdiv); in quadfs_fsynth_program_rate()
733 if (fs->lock) in quadfs_fsynth_program_rate()
734 spin_lock_irqsave(fs->lock, flags); in quadfs_fsynth_program_rate()
736 if (fs->data->nsdiv_present) in quadfs_fsynth_program_rate()
737 CLKGEN_WRITE(fs, nsdiv[fs->chan], fs->nsdiv); in quadfs_fsynth_program_rate()
739 if (fs->lock) in quadfs_fsynth_program_rate()
740 spin_unlock_irqrestore(fs->lock, flags); in quadfs_fsynth_program_rate()
745 struct st_clk_quadfs_fsynth *fs = to_quadfs_fsynth(hw); in quadfs_fsynth_enable() local
750 quadfs_fsynth_program_rate(fs); in quadfs_fsynth_enable()
752 if (fs->lock) in quadfs_fsynth_enable()
753 spin_lock_irqsave(fs->lock, flags); in quadfs_fsynth_enable()
755 CLKGEN_WRITE(fs, nsb[fs->chan], !fs->data->standby_polarity); in quadfs_fsynth_enable()
757 if (fs->data->nrst_present) in quadfs_fsynth_enable()
758 CLKGEN_WRITE(fs, nrst[fs->chan], 0); in quadfs_fsynth_enable()
760 if (fs->lock) in quadfs_fsynth_enable()
761 spin_unlock_irqrestore(fs->lock, flags); in quadfs_fsynth_enable()
763 quadfs_fsynth_program_enable(fs); in quadfs_fsynth_enable()
770 struct st_clk_quadfs_fsynth *fs = to_quadfs_fsynth(hw); in quadfs_fsynth_disable() local
775 if (fs->lock) in quadfs_fsynth_disable()
776 spin_lock_irqsave(fs->lock, flags); in quadfs_fsynth_disable()
778 CLKGEN_WRITE(fs, nsb[fs->chan], fs->data->standby_polarity); in quadfs_fsynth_disable()
780 if (fs->lock) in quadfs_fsynth_disable()
781 spin_unlock_irqrestore(fs->lock, flags); in quadfs_fsynth_disable()
786 struct st_clk_quadfs_fsynth *fs = to_quadfs_fsynth(hw); in quadfs_fsynth_is_enabled() local
787 u32 nsb = CLKGEN_READ(fs, nsb[fs->chan]); in quadfs_fsynth_is_enabled()
792 return fs->data->standby_polarity ? !nsb : !!nsb; in quadfs_fsynth_is_enabled()
797 static int clk_fs216c65_get_rate(unsigned long input, const struct stm_fs *fs, in clk_fs216c65_get_rate() argument
806 m = fs->mdiv - 32; in clk_fs216c65_get_rate()
807 s = 1 << (fs->sdiv + 1); in clk_fs216c65_get_rate()
808 ns = (fs->nsdiv ? 1 : 3); in clk_fs216c65_get_rate()
811 res = res - (s * ns * fs->pe); in clk_fs216c65_get_rate()
817 static int clk_fs432c65_get_rate(unsigned long input, const struct stm_fs *fs, in clk_fs432c65_get_rate() argument
826 m = fs->mdiv - 32; in clk_fs432c65_get_rate()
827 sd = 1 << (fs->sdiv + 1); in clk_fs432c65_get_rate()
828 ns = (fs->nsdiv ? 1 : 3); in clk_fs432c65_get_rate()
831 res = res - (sd * ns * fs->pe); in clk_fs432c65_get_rate()
840 const struct stm_fs *fs, unsigned long *rate) in clk_fs660c32_dig_get_rate() argument
842 unsigned long s = (1 << fs->sdiv); in clk_fs660c32_dig_get_rate()
854 ns = (fs->nsdiv == 1) ? 1 : 3; in clk_fs660c32_dig_get_rate()
856 res = (P20 * (32 + fs->mdiv) + 32 * fs->pe) * s * ns; in clk_fs660c32_dig_get_rate()
862 static int quadfs_fsynt_get_hw_value_for_recalc(struct st_clk_quadfs_fsynth *fs, in quadfs_fsynt_get_hw_value_for_recalc() argument
868 params->mdiv = CLKGEN_READ(fs, mdiv[fs->chan]); in quadfs_fsynt_get_hw_value_for_recalc()
869 params->pe = CLKGEN_READ(fs, pe[fs->chan]); in quadfs_fsynt_get_hw_value_for_recalc()
870 params->sdiv = CLKGEN_READ(fs, sdiv[fs->chan]); in quadfs_fsynt_get_hw_value_for_recalc()
872 if (fs->data->nsdiv_present) in quadfs_fsynt_get_hw_value_for_recalc()
873 params->nsdiv = CLKGEN_READ(fs, nsdiv[fs->chan]); in quadfs_fsynt_get_hw_value_for_recalc()
883 fs->md = params->mdiv; in quadfs_fsynt_get_hw_value_for_recalc()
884 fs->pe = params->pe; in quadfs_fsynt_get_hw_value_for_recalc()
885 fs->sdiv = params->sdiv; in quadfs_fsynt_get_hw_value_for_recalc()
886 fs->nsdiv = params->nsdiv; in quadfs_fsynt_get_hw_value_for_recalc()
894 struct st_clk_quadfs_fsynth *fs = to_quadfs_fsynth(hw); in quadfs_find_best_rate() local
902 clk_fs_get_rate = fs->data->get_rate; in quadfs_find_best_rate()
904 for (index = 0; index < fs->data->rtbl_cnt; index++) { in quadfs_find_best_rate()
907 *params = fs->data->rtbl[index]; in quadfs_find_best_rate()
910 clk_fs_get_rate(prate, &fs->data->rtbl[index], &rate); in quadfs_find_best_rate()
927 if (index == fs->data->rtbl_cnt) in quadfs_find_best_rate()
936 struct st_clk_quadfs_fsynth *fs = to_quadfs_fsynth(hw); in quadfs_recalc_rate() local
942 clk_fs_get_rate = fs->data->get_rate; in quadfs_recalc_rate()
944 if (quadfs_fsynt_get_hw_value_for_recalc(fs, ¶ms)) in quadfs_recalc_rate()
973 static void quadfs_program_and_enable(struct st_clk_quadfs_fsynth *fs, in quadfs_program_and_enable() argument
976 fs->md = params->mdiv; in quadfs_program_and_enable()
977 fs->pe = params->pe; in quadfs_program_and_enable()
978 fs->sdiv = params->sdiv; in quadfs_program_and_enable()
979 fs->nsdiv = params->nsdiv; in quadfs_program_and_enable()
985 quadfs_fsynth_program_rate(fs); in quadfs_program_and_enable()
986 quadfs_fsynth_program_enable(fs); in quadfs_program_and_enable()
992 struct st_clk_quadfs_fsynth *fs = to_quadfs_fsynth(hw); in quadfs_set_rate() local
1006 quadfs_program_and_enable(fs, ¶ms); in quadfs_set_rate()
1027 struct st_clk_quadfs_fsynth *fs; in st_clk_register_quadfs_fsynth() local
1037 fs = kzalloc(sizeof(*fs), GFP_KERNEL); in st_clk_register_quadfs_fsynth()
1038 if (!fs) in st_clk_register_quadfs_fsynth()
1047 fs->data = quadfs; in st_clk_register_quadfs_fsynth()
1048 fs->regs_base = reg; in st_clk_register_quadfs_fsynth()
1049 fs->chan = chan; in st_clk_register_quadfs_fsynth()
1050 fs->lock = lock; in st_clk_register_quadfs_fsynth()
1051 fs->hw.init = &init; in st_clk_register_quadfs_fsynth()
1053 clk = clk_register(NULL, &fs->hw); in st_clk_register_quadfs_fsynth()
1056 kfree(fs); in st_clk_register_quadfs_fsynth()