mirror of
https://github.com/torvalds/linux.git
synced 2026-08-02 05:12:01 +02:00
clk: qcom: clk-spmi-pmic-div: add support for clock-output-names
Some boards utilize several PMICs which contain clock divider peripherals. Add support for the clock-output-names property so that unique names can be specified for each divider clock. If clock-output-names is not specified, then the clock names will be div_clkN where N=1 to qcom,num-clkdivs. Change-Id: I66b5fcd0a3890886fe1e8cd85b15ada8a55ecb0f Signed-off-by: David Collins <collinsd@codeaurora.org>
This commit is contained in:
parent
21f18e9e49
commit
cc4ad0b211
|
|
@ -1,6 +1,5 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright (c) 2017, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. */
|
||||
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/clk.h>
|
||||
|
|
@ -204,6 +203,7 @@ static int spmi_pmic_clkdiv_probe(struct platform_device *pdev)
|
|||
struct regmap *regmap;
|
||||
struct device *dev = &pdev->dev;
|
||||
struct device_node *of_node = dev->of_node;
|
||||
bool use_dt_name = false;
|
||||
const char *parent_name;
|
||||
int nclks, i, ret, cxo_hz;
|
||||
char name[20];
|
||||
|
|
@ -252,13 +252,26 @@ static int spmi_pmic_clkdiv_probe(struct platform_device *pdev)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (of_find_property(of_node, "clock-output-names", NULL))
|
||||
use_dt_name = true;
|
||||
|
||||
init.name = name;
|
||||
init.parent_names = &parent_name;
|
||||
init.num_parents = 1;
|
||||
init.ops = &clk_spmi_pmic_div_ops;
|
||||
|
||||
for (i = 0, clkdiv = cc->clks; i < nclks; i++) {
|
||||
snprintf(name, sizeof(name), "div_clk%d", i + 1);
|
||||
if (use_dt_name) {
|
||||
ret = of_property_read_string_index(of_node,
|
||||
"clock-output-names", i, &init.name);
|
||||
if (ret) {
|
||||
dev_err(dev, "could not read clock-output-names %d, ret=%d\n",
|
||||
i, ret);
|
||||
return ret;
|
||||
}
|
||||
} else {
|
||||
snprintf(name, sizeof(name), "div_clk%d", i + 1);
|
||||
}
|
||||
|
||||
spin_lock_init(&clkdiv[i].lock);
|
||||
clkdiv[i].base = start + i * 0x100;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user