| .. | .. |
|---|
| 19 | 19 | |
|---|
| 20 | 20 | static const u32 gpll0_a53cc_map[] = { 4, 5 }; |
|---|
| 21 | 21 | |
|---|
| 22 | | -static const char * const gpll0_a53cc[] = { |
|---|
| 23 | | - "gpll0_vote", |
|---|
| 24 | | - "a53pll", |
|---|
| 22 | +static const struct clk_parent_data pdata[] = { |
|---|
| 23 | + { .fw_name = "aux", .name = "gpll0_vote", }, |
|---|
| 24 | + { .fw_name = "pll", .name = "a53pll", }, |
|---|
| 25 | 25 | }; |
|---|
| 26 | 26 | |
|---|
| 27 | 27 | /* |
|---|
| .. | .. |
|---|
| 62 | 62 | return -ENOMEM; |
|---|
| 63 | 63 | |
|---|
| 64 | 64 | init.name = "a53mux"; |
|---|
| 65 | | - init.parent_names = gpll0_a53cc; |
|---|
| 66 | | - init.num_parents = ARRAY_SIZE(gpll0_a53cc); |
|---|
| 65 | + init.parent_data = pdata; |
|---|
| 66 | + init.num_parents = ARRAY_SIZE(pdata); |
|---|
| 67 | 67 | init.ops = &clk_regmap_mux_div_ops; |
|---|
| 68 | 68 | init.flags = CLK_SET_RATE_PARENT; |
|---|
| 69 | 69 | |
|---|
| .. | .. |
|---|
| 79 | 79 | a53cc->pclk = devm_clk_get(parent, NULL); |
|---|
| 80 | 80 | if (IS_ERR(a53cc->pclk)) { |
|---|
| 81 | 81 | ret = PTR_ERR(a53cc->pclk); |
|---|
| 82 | | - dev_err(dev, "failed to get clk: %d\n", ret); |
|---|
| 82 | + if (ret != -EPROBE_DEFER) |
|---|
| 83 | + dev_err(dev, "failed to get clk: %d\n", ret); |
|---|
| 83 | 84 | return ret; |
|---|
| 84 | 85 | } |
|---|
| 85 | 86 | |
|---|
| .. | .. |
|---|
| 96 | 97 | goto err; |
|---|
| 97 | 98 | } |
|---|
| 98 | 99 | |
|---|
| 99 | | - ret = of_clk_add_hw_provider(parent->of_node, of_clk_hw_simple_get, |
|---|
| 100 | | - &a53cc->clkr.hw); |
|---|
| 100 | + ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, |
|---|
| 101 | + &a53cc->clkr.hw); |
|---|
| 101 | 102 | if (ret) { |
|---|
| 102 | 103 | dev_err(dev, "failed to add clock provider: %d\n", ret); |
|---|
| 103 | 104 | goto err; |
|---|
| .. | .. |
|---|
| 115 | 116 | static int qcom_apcs_msm8916_clk_remove(struct platform_device *pdev) |
|---|
| 116 | 117 | { |
|---|
| 117 | 118 | struct clk_regmap_mux_div *a53cc = platform_get_drvdata(pdev); |
|---|
| 118 | | - struct device *parent = pdev->dev.parent; |
|---|
| 119 | 119 | |
|---|
| 120 | 120 | clk_notifier_unregister(a53cc->pclk, &a53cc->clk_nb); |
|---|
| 121 | | - of_clk_del_provider(parent->of_node); |
|---|
| 122 | 121 | |
|---|
| 123 | 122 | return 0; |
|---|
| 124 | 123 | } |
|---|