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:
David Collins 2018-01-09 18:01:35 -08:00 committed by Mike Tipton
parent 21f18e9e49
commit cc4ad0b211

View File

@ -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;