diff options
Diffstat (limited to 'drivers/clk/bcm/clk-iproc-pll.c')
-rw-r--r-- | drivers/clk/bcm/clk-iproc-pll.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/drivers/clk/bcm/clk-iproc-pll.c b/drivers/clk/bcm/clk-iproc-pll.c index fd492a5dad12..e04634c46395 100644 --- a/drivers/clk/bcm/clk-iproc-pll.c +++ b/drivers/clk/bcm/clk-iproc-pll.c | |||
@@ -89,7 +89,7 @@ struct iproc_pll { | |||
89 | const struct iproc_pll_vco_param *vco_param; | 89 | const struct iproc_pll_vco_param *vco_param; |
90 | unsigned int num_vco_entries; | 90 | unsigned int num_vco_entries; |
91 | 91 | ||
92 | struct clk_onecell_data clk_data; | 92 | struct clk_hw_onecell_data *clk_data; |
93 | struct iproc_clk *clks; | 93 | struct iproc_clk *clks; |
94 | }; | 94 | }; |
95 | 95 | ||
@@ -625,7 +625,6 @@ void __init iproc_pll_clk_setup(struct device_node *node, | |||
625 | unsigned int num_clks) | 625 | unsigned int num_clks) |
626 | { | 626 | { |
627 | int i, ret; | 627 | int i, ret; |
628 | struct clk *clk; | ||
629 | struct iproc_pll *pll; | 628 | struct iproc_pll *pll; |
630 | struct iproc_clk *iclk; | 629 | struct iproc_clk *iclk; |
631 | struct clk_init_data init; | 630 | struct clk_init_data init; |
@@ -638,11 +637,11 @@ void __init iproc_pll_clk_setup(struct device_node *node, | |||
638 | if (WARN_ON(!pll)) | 637 | if (WARN_ON(!pll)) |
639 | return; | 638 | return; |
640 | 639 | ||
641 | pll->clk_data.clk_num = num_clks; | 640 | pll->clk_data = kzalloc(sizeof(*pll->clk_data->hws) * num_clks + |
642 | pll->clk_data.clks = kcalloc(num_clks, sizeof(*pll->clk_data.clks), | 641 | sizeof(*pll->clk_data), GFP_KERNEL); |
643 | GFP_KERNEL); | 642 | if (WARN_ON(!pll->clk_data)) |
644 | if (WARN_ON(!pll->clk_data.clks)) | ||
645 | goto err_clk_data; | 643 | goto err_clk_data; |
644 | pll->clk_data->num = num_clks; | ||
646 | 645 | ||
647 | pll->clks = kcalloc(num_clks, sizeof(*pll->clks), GFP_KERNEL); | 646 | pll->clks = kcalloc(num_clks, sizeof(*pll->clks), GFP_KERNEL); |
648 | if (WARN_ON(!pll->clks)) | 647 | if (WARN_ON(!pll->clks)) |
@@ -694,11 +693,11 @@ void __init iproc_pll_clk_setup(struct device_node *node, | |||
694 | 693 | ||
695 | iproc_pll_sw_cfg(pll); | 694 | iproc_pll_sw_cfg(pll); |
696 | 695 | ||
697 | clk = clk_register(NULL, &iclk->hw); | 696 | ret = clk_hw_register(NULL, &iclk->hw); |
698 | if (WARN_ON(IS_ERR(clk))) | 697 | if (WARN_ON(ret)) |
699 | goto err_pll_register; | 698 | goto err_pll_register; |
700 | 699 | ||
701 | pll->clk_data.clks[0] = clk; | 700 | pll->clk_data->hws[0] = &iclk->hw; |
702 | 701 | ||
703 | /* now initialize and register all leaf clocks */ | 702 | /* now initialize and register all leaf clocks */ |
704 | for (i = 1; i < num_clks; i++) { | 703 | for (i = 1; i < num_clks; i++) { |
@@ -724,22 +723,23 @@ void __init iproc_pll_clk_setup(struct device_node *node, | |||
724 | init.num_parents = (parent_name ? 1 : 0); | 723 | init.num_parents = (parent_name ? 1 : 0); |
725 | iclk->hw.init = &init; | 724 | iclk->hw.init = &init; |
726 | 725 | ||
727 | clk = clk_register(NULL, &iclk->hw); | 726 | ret = clk_hw_register(NULL, &iclk->hw); |
728 | if (WARN_ON(IS_ERR(clk))) | 727 | if (WARN_ON(ret)) |
729 | goto err_clk_register; | 728 | goto err_clk_register; |
730 | 729 | ||
731 | pll->clk_data.clks[i] = clk; | 730 | pll->clk_data->hws[i] = &iclk->hw; |
732 | } | 731 | } |
733 | 732 | ||
734 | ret = of_clk_add_provider(node, of_clk_src_onecell_get, &pll->clk_data); | 733 | ret = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, |
734 | pll->clk_data); | ||
735 | if (WARN_ON(ret)) | 735 | if (WARN_ON(ret)) |
736 | goto err_clk_register; | 736 | goto err_clk_register; |
737 | 737 | ||
738 | return; | 738 | return; |
739 | 739 | ||
740 | err_clk_register: | 740 | err_clk_register: |
741 | for (i = 0; i < num_clks; i++) | 741 | while (--i >= 0) |
742 | clk_unregister(pll->clk_data.clks[i]); | 742 | clk_hw_unregister(pll->clk_data->hws[i]); |
743 | 743 | ||
744 | err_pll_register: | 744 | err_pll_register: |
745 | if (pll->status_base != pll->control_base) | 745 | if (pll->status_base != pll->control_base) |
@@ -759,7 +759,7 @@ err_pll_iomap: | |||
759 | kfree(pll->clks); | 759 | kfree(pll->clks); |
760 | 760 | ||
761 | err_clks: | 761 | err_clks: |
762 | kfree(pll->clk_data.clks); | 762 | kfree(pll->clk_data); |
763 | 763 | ||
764 | err_clk_data: | 764 | err_clk_data: |
765 | kfree(pll); | 765 | kfree(pll); |