mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 23:34:05 +08:00
staging: clocking-wizard: Remove the hardcoding of the clock outputs
The number of output clocks are configurable in the hardware. Currently the driver registers the maximum number of outputs. Fix the same by registering only the outputs that are there. Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com> Link: https://lore.kernel.org/r/1614172241-17326-8-git-send-email-shubhrajyoti.datta@xilinx.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
91d695d718
commit
a0d1a3864c
@ -517,16 +517,15 @@ static int clk_wzrd_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
/* register div per output */
|
||||
for (i = WZRD_NUM_OUTPUTS - 1; i >= 0 ; i--) {
|
||||
for (i = nr_outputs - 1; i >= 0 ; i--) {
|
||||
const char *clkout_name;
|
||||
|
||||
if (of_property_read_string_index(np, "clock-output-names", i,
|
||||
&clkout_name)) {
|
||||
dev_err(&pdev->dev,
|
||||
"clock output name not specified\n");
|
||||
ret = -EINVAL;
|
||||
goto err_rm_int_clks;
|
||||
clkout_name = kasprintf(GFP_KERNEL, "%s_out%d", dev_name(&pdev->dev), i);
|
||||
if (!clkout_name) {
|
||||
ret = -ENOMEM;
|
||||
goto err_rm_int_clk;
|
||||
}
|
||||
|
||||
if (!i)
|
||||
clk_wzrd->clkout[i] = clk_wzrd_register_divf
|
||||
(&pdev->dev, clkout_name,
|
||||
@ -548,7 +547,7 @@ static int clk_wzrd_probe(struct platform_device *pdev)
|
||||
if (IS_ERR(clk_wzrd->clkout[i])) {
|
||||
int j;
|
||||
|
||||
for (j = i + 1; j < WZRD_NUM_OUTPUTS; j++)
|
||||
for (j = i + 1; j < nr_outputs; j++)
|
||||
clk_unregister(clk_wzrd->clkout[j]);
|
||||
dev_err(&pdev->dev,
|
||||
"unable to register divider clock\n");
|
||||
|
Loading…
Reference in New Issue
Block a user