summaryrefslogtreecommitdiff
path: root/drivers/clk/clk-tps68470.c
diff options
context:
space:
mode:
authorDaniel Scally <djrscally@gmail.com>2022-09-22 02:04:37 +0300
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2022-09-24 20:12:32 +0300
commit43cf36974d760a3d1c705a83de89ac58059e5f0b (patch)
treefdd9358d26046dbb06b77b219bff08413ec509b0 /drivers/clk/clk-tps68470.c
parent62c8bc0d27a784b09114d67c33e8fa83f350fa77 (diff)
downloadlinux-43cf36974d760a3d1c705a83de89ac58059e5f0b.tar.xz
platform/x86: int3472: Support multiple clock consumers
At present, the tps68470.c only supports a single clock consumer when passing platform data to the clock driver. In some devices multiple sensors depend on the clock provided by a single TPS68470 and so all need to be able to acquire the clock. Support passing multiple consumers as platform data. Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Daniel Scally <djrscally@gmail.com> Reviewed-by: Stephen Boyd <sboyd@kernel.org> Acked-by: Stephen Boyd <sboyd@kernel.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/clk/clk-tps68470.c')
-rw-r--r--drivers/clk/clk-tps68470.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/clk/clk-tps68470.c b/drivers/clk/clk-tps68470.c
index e5fbefd6ac2d..38f44b5b9b1b 100644
--- a/drivers/clk/clk-tps68470.c
+++ b/drivers/clk/clk-tps68470.c
@@ -200,7 +200,9 @@ static int tps68470_clk_probe(struct platform_device *pdev)
.flags = CLK_SET_RATE_GATE,
};
struct tps68470_clkdata *tps68470_clkdata;
+ struct tps68470_clk_consumer *consumer;
int ret;
+ int i;
tps68470_clkdata = devm_kzalloc(&pdev->dev, sizeof(*tps68470_clkdata),
GFP_KERNEL);
@@ -223,10 +225,13 @@ static int tps68470_clk_probe(struct platform_device *pdev)
return ret;
if (pdata) {
- ret = devm_clk_hw_register_clkdev(&pdev->dev,
- &tps68470_clkdata->clkout_hw,
- pdata->consumer_con_id,
- pdata->consumer_dev_name);
+ for (i = 0; i < pdata->n_consumers; i++) {
+ consumer = &pdata->consumers[i];
+ ret = devm_clk_hw_register_clkdev(&pdev->dev,
+ &tps68470_clkdata->clkout_hw,
+ consumer->consumer_con_id,
+ consumer->consumer_dev_name);
+ }
}
return ret;