Lines Matching +full:meson8b +full:- +full:saradc
1 // SPDX-License-Identifier: GPL-2.0+
549 CLK_MSR_ID(111, "saradc"),
793 struct meson_msr *priv = clk_msr_id->priv; in meson_measure_id()
794 const struct msr_reg_offset *reg = priv->data.reg; in meson_measure_id()
802 regmap_write(priv->regmap, reg->freq_ctrl, 0); in meson_measure_id()
805 regmap_update_bits(priv->regmap, reg->freq_ctrl, MSR_DURATION, in meson_measure_id()
806 FIELD_PREP(MSR_DURATION, duration - 1)); in meson_measure_id()
809 regmap_update_bits(priv->regmap, reg->freq_ctrl, MSR_CLK_SRC, in meson_measure_id()
810 FIELD_PREP(MSR_CLK_SRC, clk_msr_id->id)); in meson_measure_id()
813 regmap_update_bits(priv->regmap, reg->freq_ctrl, in meson_measure_id()
817 ret = regmap_read_poll_timeout(priv->regmap, reg->freq_ctrl, in meson_measure_id()
825 regmap_update_bits(priv->regmap, reg->freq_ctrl, MSR_ENABLE, 0); in meson_measure_id()
828 regmap_read(priv->regmap, reg->freq_val, &val); in meson_measure_id()
833 return -EINVAL; in meson_measure_id()
851 duration -= DIV_STEP; in meson_measure_best_id()
852 } while (duration >= DIV_MIN && ret == -EINVAL); in meson_measure_best_id()
859 struct meson_msr_id *clk_msr_id = s->private; in clk_msr_show()
867 seq_printf(s, "%d\t+/-%dHz\n", val, precision); in clk_msr_show()
875 struct meson_msr_id *msr_table = s->private; in clk_msr_summary_show()
876 unsigned int msr_count = msr_table->priv->data.msr_count; in clk_msr_summary_show()
881 seq_puts(s, "---------------------------------------------\n"); in clk_msr_summary_show()
891 seq_printf(s, " %-20s %10d +/-%dHz\n", in clk_msr_summary_show()
914 priv = devm_kzalloc(&pdev->dev, sizeof(struct meson_msr), in meson_msr_probe()
917 return -ENOMEM; in meson_msr_probe()
919 match_data = device_get_match_data(&pdev->dev); in meson_msr_probe()
921 dev_err(&pdev->dev, "failed to get match data\n"); in meson_msr_probe()
922 return -ENODEV; in meson_msr_probe()
925 priv->data.msr_table = devm_kcalloc(&pdev->dev, in meson_msr_probe()
926 match_data->msr_count, in meson_msr_probe()
929 if (!priv->data.msr_table) in meson_msr_probe()
930 return -ENOMEM; in meson_msr_probe()
932 memcpy(priv->data.msr_table, match_data->msr_table, in meson_msr_probe()
933 match_data->msr_count * sizeof(struct meson_msr_id)); in meson_msr_probe()
934 priv->data.msr_count = match_data->msr_count; in meson_msr_probe()
940 meson_clk_msr_regmap_config.max_register = resource_size(res) - 4; in meson_msr_probe()
941 priv->regmap = devm_regmap_init_mmio(&pdev->dev, base, in meson_msr_probe()
943 if (IS_ERR(priv->regmap)) in meson_msr_probe()
944 return PTR_ERR(priv->regmap); in meson_msr_probe()
946 priv->data.reg = devm_kzalloc(&pdev->dev, sizeof(struct msr_reg_offset), in meson_msr_probe()
948 if (!priv->data.reg) in meson_msr_probe()
949 return -ENOMEM; in meson_msr_probe()
951 memcpy((void *)priv->data.reg, match_data->reg, in meson_msr_probe()
954 root = debugfs_create_dir("meson-clk-msr", NULL); in meson_msr_probe()
958 priv->data.msr_table, &clk_msr_summary_fops); in meson_msr_probe()
960 for (i = 0 ; i < priv->data.msr_count ; ++i) { in meson_msr_probe()
961 if (!priv->data.msr_table[i].name) in meson_msr_probe()
964 priv->data.msr_table[i].priv = priv; in meson_msr_probe()
966 debugfs_create_file(priv->data.msr_table[i].name, 0444, clks, in meson_msr_probe()
967 &priv->data.msr_table[i], &clk_msr_fops); in meson_msr_probe()
1031 .compatible = "amlogic,meson-gx-clk-measure",
1035 .compatible = "amlogic,meson8-clk-measure",
1039 .compatible = "amlogic,meson8b-clk-measure",
1043 .compatible = "amlogic,meson-axg-clk-measure",
1047 .compatible = "amlogic,meson-g12a-clk-measure",
1051 .compatible = "amlogic,meson-sm1-clk-measure",
1055 .compatible = "amlogic,c3-clk-measure",
1059 .compatible = "amlogic,s4-clk-measure",