Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mmc: meson-mx-sdhc: Use devm_clk_hw_get_clk() for clock retrieval

Now that devm_clk_hw_get_clk() has been available for a while we can
resolve an older TODO where this API did not exist yet. No functional
changes intended.

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Link: https://lore.kernel.org/r/20240217100200.1494980-2-martin.blumenstingl@googlemail.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

authored by

Martin Blumenstingl and committed by
Ulf Hansson
4c5e3efa 25e69172

+23 -20
+23 -20
drivers/mmc/host/meson-mx-sdhc-clkc.c
··· 71 71 static int meson_mx_sdhc_gate_clk_hw_register(struct device *dev, 72 72 const char *name_suffix, 73 73 struct clk_hw *parent, 74 - struct clk_hw *hw) 74 + struct clk_hw *hw, 75 + struct clk_bulk_data *clk_bulk_data, 76 + u8 bulk_index) 75 77 { 76 78 struct clk_parent_data parent_data = { .hw = parent }; 79 + int ret; 77 80 78 - return meson_mx_sdhc_clk_hw_register(dev, name_suffix, &parent_data, 1, 79 - &clk_gate_ops, hw); 81 + ret = meson_mx_sdhc_clk_hw_register(dev, name_suffix, &parent_data, 1, 82 + &clk_gate_ops, hw); 83 + if (ret) 84 + return ret; 85 + 86 + clk_bulk_data[bulk_index].clk = devm_clk_hw_get_clk(dev, hw, name_suffix); 87 + if (IS_ERR(clk_bulk_data[bulk_index].clk)) 88 + return PTR_ERR(clk_bulk_data[bulk_index].clk); 89 + 90 + return 0; 80 91 } 81 92 82 93 int meson_mx_sdhc_register_clkc(struct device *dev, void __iomem *base, ··· 126 115 clkc_data->mod_clk_en.bit_idx = 15; 127 116 ret = meson_mx_sdhc_gate_clk_hw_register(dev, "mod_clk_on", 128 117 &clkc_data->div.hw, 129 - &clkc_data->mod_clk_en.hw); 118 + &clkc_data->mod_clk_en.hw, 119 + clk_bulk_data, 0); 130 120 if (ret) 131 121 return ret; 132 122 ··· 135 123 clkc_data->tx_clk_en.bit_idx = 14; 136 124 ret = meson_mx_sdhc_gate_clk_hw_register(dev, "tx_clk_on", 137 125 &clkc_data->div.hw, 138 - &clkc_data->tx_clk_en.hw); 126 + &clkc_data->tx_clk_en.hw, 127 + clk_bulk_data, 1); 139 128 if (ret) 140 129 return ret; 141 130 ··· 144 131 clkc_data->rx_clk_en.bit_idx = 13; 145 132 ret = meson_mx_sdhc_gate_clk_hw_register(dev, "rx_clk_on", 146 133 &clkc_data->div.hw, 147 - &clkc_data->rx_clk_en.hw); 134 + &clkc_data->rx_clk_en.hw, 135 + clk_bulk_data, 2); 148 136 if (ret) 149 137 return ret; 150 138 ··· 153 139 clkc_data->sd_clk_en.bit_idx = 12; 154 140 ret = meson_mx_sdhc_gate_clk_hw_register(dev, "sd_clk_on", 155 141 &clkc_data->div.hw, 156 - &clkc_data->sd_clk_en.hw); 157 - if (ret) 158 - return ret; 159 - 160 - /* 161 - * TODO: Replace clk_hw.clk with devm_clk_hw_get_clk() once that is 162 - * available. 163 - */ 164 - clk_bulk_data[0].clk = clkc_data->mod_clk_en.hw.clk; 165 - clk_bulk_data[1].clk = clkc_data->sd_clk_en.hw.clk; 166 - clk_bulk_data[2].clk = clkc_data->tx_clk_en.hw.clk; 167 - clk_bulk_data[3].clk = clkc_data->rx_clk_en.hw.clk; 168 - 169 - return 0; 142 + &clkc_data->sd_clk_en.hw, 143 + clk_bulk_data, 3); 144 + return ret; 170 145 }