/* SPDX-License-Identifier: GPL-2.0 *//* * Copyright (c) 2010-2011 Jeremy Kerr <jeremy.kerr@canonical.com> * Copyright (C) 2011-2012 Linaro Ltd <mturquette@linaro.org> */#ifndef __LINUX_CLK_PROVIDER_H#define __LINUX_CLK_PROVIDER_H#include<linux/of.h>#include<linux/of_clk.h>/* * flags used across common struct clk. these flags should only affect the * top-level framework. custom flags for dealing with hardware specifics * belong in struct clk_foo * * Please update clk_flags[] in drivers/clk/clk.c when making changes here! */#define CLK_SET_RATE_GATE BIT(0) /* must be gated across rate change */#define CLK_SET_PARENT_GATE BIT(1) /* must be gated across re-parent */#define CLK_SET_RATE_PARENT BIT(2) /* propagate rate change up one level */#define CLK_IGNORE_UNUSED BIT(3) /* do not gate even if unused *//* unused *//* unused */#define CLK_GET_RATE_NOCACHE BIT(6) /* do not use the cached clk rate */#define CLK_SET_RATE_NO_REPARENT BIT(7) /* don't re-parent on rate change */#define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */#define CLK_RECALC_NEW_RATES BIT(9) /* recalc rates after notifications */#define CLK_SET_RATE_UNGATE BIT(10) /* clock needs to run to set rate */#define CLK_IS_CRITICAL BIT(11) /* do not gate, ever *//* parents need enable during gate/ungate, set rate and re-parent */#define CLK_OPS_PARENT_ENABLE BIT(12)/* duty cycle call may be forwarded to the parent clock */#define CLK_DUTY_CYCLE_PARENT BIT(13)structclk;structclk_hw;structclk_core;structdentry;/** * struct clk_rate_request - Structure encoding the clk constraints that * a clock user might require. * * @rate: Requested clock rate. This field will be adjusted by * clock drivers according to hardware capabilities. * @min_rate: Minimum rate imposed by clk users. * @max_rate: Maximum rate imposed by clk users. * @best_parent_rate: The best parent rate a parent can provide to fulfill the * requested constraints. * @best_parent_hw: The most appropriate parent clock that fulfills the * requested constraints. * */structclk_rate_request{unsignedlongrate;unsignedlongmin_rate;unsignedlongmax_rate;unsignedlongbest_parent_rate;structclk_hw*best_parent_hw;};/** * struct clk_duty - Struture encoding the duty cycle ratio of a clock * * @num: Numerator of the duty cycle ratio