clk.c (bf6d43d7232511d4aadb634ec97fcbe5d49ee120) clk.c (03813d9b7d4368d4a8c9bb8f5a2a1e23dac8f1b5)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2010-2011 Canonical Ltd <jeremy.kerr@canonical.com>
4 * Copyright (C) 2011-2012 Linaro Ltd <mturquette@linaro.org>
5 *
6 * Standard functionality for the common clock API. See Documentation/driver-api/clk.rst
7 */
8

--- 2300 unchanged lines hidden (view full) ---

2309int clk_set_rate_range(struct clk *clk, unsigned long min, unsigned long max)
2310{
2311 int ret = 0;
2312 unsigned long old_min, old_max, rate;
2313
2314 if (!clk)
2315 return 0;
2316
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2010-2011 Canonical Ltd <jeremy.kerr@canonical.com>
4 * Copyright (C) 2011-2012 Linaro Ltd <mturquette@linaro.org>
5 *
6 * Standard functionality for the common clock API. See Documentation/driver-api/clk.rst
7 */
8

--- 2300 unchanged lines hidden (view full) ---

2309int clk_set_rate_range(struct clk *clk, unsigned long min, unsigned long max)
2310{
2311 int ret = 0;
2312 unsigned long old_min, old_max, rate;
2313
2314 if (!clk)
2315 return 0;
2316
2317 trace_clk_set_rate_range(clk->core, min, max);
2318
2317 if (min > max) {
2318 pr_err("%s: clk %s dev %s con %s: invalid range [%lu, %lu]\n",
2319 __func__, clk->core->name, clk->dev_id, clk->con_id,
2320 min, max);
2321 return -EINVAL;
2322 }
2323
2324 clk_prepare_lock();

--- 51 unchanged lines hidden (view full) ---

2376 *
2377 * Returns success (0) or negative errno.
2378 */
2379int clk_set_min_rate(struct clk *clk, unsigned long rate)
2380{
2381 if (!clk)
2382 return 0;
2383
2319 if (min > max) {
2320 pr_err("%s: clk %s dev %s con %s: invalid range [%lu, %lu]\n",
2321 __func__, clk->core->name, clk->dev_id, clk->con_id,
2322 min, max);
2323 return -EINVAL;
2324 }
2325
2326 clk_prepare_lock();

--- 51 unchanged lines hidden (view full) ---

2378 *
2379 * Returns success (0) or negative errno.
2380 */
2381int clk_set_min_rate(struct clk *clk, unsigned long rate)
2382{
2383 if (!clk)
2384 return 0;
2385
2386 trace_clk_set_min_rate(clk->core, rate);
2387
2384 return clk_set_rate_range(clk, rate, clk->max_rate);
2385}
2386EXPORT_SYMBOL_GPL(clk_set_min_rate);
2387
2388/**
2389 * clk_set_max_rate - set a maximum clock rate for a clock source
2390 * @clk: clock source
2391 * @rate: desired maximum clock rate in Hz, inclusive
2392 *
2393 * Returns success (0) or negative errno.
2394 */
2395int clk_set_max_rate(struct clk *clk, unsigned long rate)
2396{
2397 if (!clk)
2398 return 0;
2399
2388 return clk_set_rate_range(clk, rate, clk->max_rate);
2389}
2390EXPORT_SYMBOL_GPL(clk_set_min_rate);
2391
2392/**
2393 * clk_set_max_rate - set a maximum clock rate for a clock source
2394 * @clk: clock source
2395 * @rate: desired maximum clock rate in Hz, inclusive
2396 *
2397 * Returns success (0) or negative errno.
2398 */
2399int clk_set_max_rate(struct clk *clk, unsigned long rate)
2400{
2401 if (!clk)
2402 return 0;
2403
2404 trace_clk_set_max_rate(clk->core, rate);
2405
2400 return clk_set_rate_range(clk, clk->min_rate, rate);
2401}
2402EXPORT_SYMBOL_GPL(clk_set_max_rate);
2403
2404/**
2405 * clk_get_parent - return the parent of a clk
2406 * @clk: the clk whose parent gets returned
2407 *

--- 518 unchanged lines hidden (view full) ---

2926 clk_core_get_accuracy_recalc(c));
2927
2928 phase = clk_core_get_phase(c);
2929 if (phase >= 0)
2930 seq_printf(s, "%5d", phase);
2931 else
2932 seq_puts(s, "-----");
2933
2406 return clk_set_rate_range(clk, clk->min_rate, rate);
2407}
2408EXPORT_SYMBOL_GPL(clk_set_max_rate);
2409
2410/**
2411 * clk_get_parent - return the parent of a clk
2412 * @clk: the clk whose parent gets returned
2413 *

--- 518 unchanged lines hidden (view full) ---

2932 clk_core_get_accuracy_recalc(c));
2933
2934 phase = clk_core_get_phase(c);
2935 if (phase >= 0)
2936 seq_printf(s, "%5d", phase);
2937 else
2938 seq_puts(s, "-----");
2939
2934 seq_printf(s, " %6d", clk_core_get_scaled_duty_cycle(c, 100000));
2935
2936 if (c->ops->is_enabled)
2937 seq_printf(s, " %9c\n", clk_core_is_enabled(c) ? 'Y' : 'N');
2938 else if (!c->ops->enable)
2939 seq_printf(s, " %9c\n", 'Y');
2940 else
2941 seq_printf(s, " %9c\n", '?');
2940 seq_printf(s, " %6d\n", clk_core_get_scaled_duty_cycle(c, 100000));
2942}
2943
2944static void clk_summary_show_subtree(struct seq_file *s, struct clk_core *c,
2945 int level)
2946{
2947 struct clk_core *child;
2948
2949 clk_summary_show_one(s, c, level);
2950
2951 hlist_for_each_entry(child, &c->children, child_node)
2952 clk_summary_show_subtree(s, child, level + 1);
2953}
2954
2955static int clk_summary_show(struct seq_file *s, void *data)
2956{
2957 struct clk_core *c;
2958 struct hlist_head **lists = (struct hlist_head **)s->private;
2959
2941}
2942
2943static void clk_summary_show_subtree(struct seq_file *s, struct clk_core *c,
2944 int level)
2945{
2946 struct clk_core *child;
2947
2948 clk_summary_show_one(s, c, level);
2949
2950 hlist_for_each_entry(child, &c->children, child_node)
2951 clk_summary_show_subtree(s, child, level + 1);
2952}
2953
2954static int clk_summary_show(struct seq_file *s, void *data)
2955{
2956 struct clk_core *c;
2957 struct hlist_head **lists = (struct hlist_head **)s->private;
2958
2960 seq_puts(s, " enable prepare protect duty hardware\n");
2961 seq_puts(s, " clock count count count rate accuracy phase cycle enable\n");
2962 seq_puts(s, "-------------------------------------------------------------------------------------------------------\n");
2959 seq_puts(s, " enable prepare protect duty\n");
2960 seq_puts(s, " clock count count count rate accuracy phase cycle\n");
2961 seq_puts(s, "---------------------------------------------------------------------------------------------\n");
2963
2964 clk_prepare_lock();
2965
2966 for (; *lists; lists++)
2967 hlist_for_each_entry(c, *lists, child_node)
2968 clk_summary_show_subtree(s, c, 0);
2969
2970 clk_prepare_unlock();

--- 2063 unchanged lines hidden ---
2962
2963 clk_prepare_lock();
2964
2965 for (; *lists; lists++)
2966 hlist_for_each_entry(c, *lists, child_node)
2967 clk_summary_show_subtree(s, c, 0);
2968
2969 clk_prepare_unlock();

--- 2063 unchanged lines hidden ---