rpmi_clk
static int rpmi_clk_get_attrs(u32 clkid, struct rpmi_clk *rpmi_clk)
struct rpmi_clk_context *context = rpmi_clk->context;
rpmi_clk->id = clkid;
rpmi_clk->num_rates = le32_to_cpu(resp->num_rates);
rpmi_clk->transition_latency = le32_to_cpu(resp->transition_latency);
strscpy(rpmi_clk->name, resp->name, RPMI_CLK_NAME_LEN);
rpmi_clk->type = format;
static int rpmi_clk_get_supported_rates(u32 clkid, struct rpmi_clk *rpmi_clk)
struct rpmi_clk_context *context = rpmi_clk->context;
#define to_rpmi_clk(clk) container_of(clk, struct rpmi_clk, hw)
if (rpmi_clk->type == RPMI_CLK_DISCRETE) {
rpmi_clk->rates->discrete[rateidx] =
rpmi_clk->rates->discrete[rateidx++] =
} else if (rpmi_clk->type == RPMI_CLK_LINEAR) {
rpmi_clk->rates->linear.min = rpmi_clkrate_u64(le32_to_cpu(rate_linear->min_hi),
rpmi_clk->rates->linear.max = rpmi_clkrate_u64(le32_to_cpu(rate_linear->max_hi),
rpmi_clk->rates->linear.step = rpmi_clkrate_u64(le32_to_cpu(rate_linear->step_hi),
struct rpmi_clk *rpmi_clk = to_rpmi_clk(hw);
struct rpmi_clk_context *context = rpmi_clk->context;
tx.clkid = cpu_to_le32(rpmi_clk->id);
struct rpmi_clk *rpmi_clk = to_rpmi_clk(hw);
if (rpmi_clk->type == RPMI_CLK_DISCRETE)
fmin = rpmi_clk->rates->linear.min;
fmax = rpmi_clk->rates->linear.max;
ftmp += rpmi_clk->rates->linear.step - 1;
do_div(ftmp, rpmi_clk->rates->linear.step);
req->rate = ftmp * rpmi_clk->rates->linear.step + fmin;
struct rpmi_clk *rpmi_clk = to_rpmi_clk(hw);
struct rpmi_clk_context *context = rpmi_clk->context;
tx.clkid = cpu_to_le32(rpmi_clk->id);
struct rpmi_clk *rpmi_clk = to_rpmi_clk(hw);
struct rpmi_clk_context *context = rpmi_clk->context;
tx.clkid = cpu_to_le32(rpmi_clk->id);
struct rpmi_clk *rpmi_clk = to_rpmi_clk(hw);
struct rpmi_clk_context *context = rpmi_clk->context;
tx.clkid = cpu_to_le32(rpmi_clk->id);
struct rpmi_clk *rpmi_clk;
rpmi_clk = devm_kzalloc(dev, sizeof(*rpmi_clk), GFP_KERNEL);
if (!rpmi_clk)
rpmi_clk->context = context;
rpmi_clk->rates = rates;
ret = rpmi_clk_get_attrs(clkid, rpmi_clk);
ret = rpmi_clk_get_supported_rates(clkid, rpmi_clk);
init.name = rpmi_clk->name;
clk_hw = &rpmi_clk->hw;
if (rpmi_clk->type == RPMI_CLK_DISCRETE) {
min_rate = rpmi_clk->rates->discrete[0];
max_rate = rpmi_clk->rates->discrete[rpmi_clk->num_rates - 1];
min_rate = rpmi_clk->rates->linear.min;
max_rate = rpmi_clk->rates->linear.max;