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

clk: meson: g12: use devm variant to register notifiers

Until now, nothing was done to unregister the dvfs clock notifiers of the
Amlogic g12 SoC family. This is not great but this driver was not really
expected to be unloaded. With the ongoing effort to build everything as
module for this platform, this needs to be cleanly handled.

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Link: https://lore.kernel.org/r/20201021163847.595189-3-jbrunet@baylibre.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>

authored by

Jerome Brunet and committed by
Stephen Boyd
e6fb7aee 6d30d50d

+29 -15
+20 -14
drivers/clk/meson/g12a.c
··· 5171 5171 g12a_cpu_clk_postmux0_nb_data.xtal = xtal; 5172 5172 notifier_clk = devm_clk_hw_get_clk(dev, &g12a_cpu_clk_postmux0.hw, 5173 5173 DVFS_CON_ID); 5174 - ret = clk_notifier_register(notifier_clk, 5175 - &g12a_cpu_clk_postmux0_nb_data.nb); 5174 + ret = devm_clk_notifier_register(dev, notifier_clk, 5175 + &g12a_cpu_clk_postmux0_nb_data.nb); 5176 5176 if (ret) { 5177 5177 dev_err(dev, "failed to register the cpu_clk_postmux0 notifier\n"); 5178 5178 return ret; ··· 5181 5181 /* Setup clock notifier for cpu_clk_dyn mux */ 5182 5182 notifier_clk = devm_clk_hw_get_clk(dev, &g12a_cpu_clk_dyn.hw, 5183 5183 DVFS_CON_ID); 5184 - ret = clk_notifier_register(notifier_clk, &g12a_cpu_clk_mux_nb); 5184 + ret = devm_clk_notifier_register(dev, notifier_clk, 5185 + &g12a_cpu_clk_mux_nb); 5185 5186 if (ret) { 5186 5187 dev_err(dev, "failed to register the cpu_clk_dyn notifier\n"); 5187 5188 return ret; ··· 5208 5207 /* Setup clock notifier for cpu_clk mux */ 5209 5208 notifier_clk = devm_clk_hw_get_clk(dev, &g12b_cpu_clk.hw, 5210 5209 DVFS_CON_ID); 5211 - ret = clk_notifier_register(notifier_clk, &g12a_cpu_clk_mux_nb); 5210 + ret = devm_clk_notifier_register(dev, notifier_clk, 5211 + &g12a_cpu_clk_mux_nb); 5212 5212 if (ret) { 5213 5213 dev_err(dev, "failed to register the cpu_clk notifier\n"); 5214 5214 return ret; ··· 5218 5216 /* Setup clock notifier for sys1_pll */ 5219 5217 notifier_clk = devm_clk_hw_get_clk(dev, &g12b_sys1_pll.hw, 5220 5218 DVFS_CON_ID); 5221 - ret = clk_notifier_register(notifier_clk, 5222 - &g12b_cpu_clk_sys1_pll_nb_data.nb); 5219 + ret = devm_clk_notifier_register(dev, notifier_clk, 5220 + &g12b_cpu_clk_sys1_pll_nb_data.nb); 5223 5221 if (ret) { 5224 5222 dev_err(dev, "failed to register the sys1_pll notifier\n"); 5225 5223 return ret; ··· 5231 5229 g12b_cpub_clk_postmux0_nb_data.xtal = xtal; 5232 5230 notifier_clk = devm_clk_hw_get_clk(dev, &g12b_cpub_clk_postmux0.hw, 5233 5231 DVFS_CON_ID); 5234 - ret = clk_notifier_register(notifier_clk, 5235 - &g12b_cpub_clk_postmux0_nb_data.nb); 5232 + ret = devm_clk_notifier_register(dev, notifier_clk, 5233 + &g12b_cpub_clk_postmux0_nb_data.nb); 5236 5234 if (ret) { 5237 5235 dev_err(dev, "failed to register the cpub_clk_postmux0 notifier\n"); 5238 5236 return ret; ··· 5240 5238 5241 5239 /* Setup clock notifier for cpub_clk_dyn mux */ 5242 5240 notifier_clk = devm_clk_hw_get_clk(dev, &g12b_cpub_clk_dyn.hw, "dvfs"); 5243 - ret = clk_notifier_register(notifier_clk, &g12a_cpu_clk_mux_nb); 5241 + ret = devm_clk_notifier_register(dev, notifier_clk, 5242 + &g12a_cpu_clk_mux_nb); 5244 5243 if (ret) { 5245 5244 dev_err(dev, "failed to register the cpub_clk_dyn notifier\n"); 5246 5245 return ret; ··· 5249 5246 5250 5247 /* Setup clock notifier for cpub_clk mux */ 5251 5248 notifier_clk = devm_clk_hw_get_clk(dev, &g12b_cpub_clk.hw, DVFS_CON_ID); 5252 - ret = clk_notifier_register(notifier_clk, &g12a_cpu_clk_mux_nb); 5249 + ret = devm_clk_notifier_register(dev, notifier_clk, 5250 + &g12a_cpu_clk_mux_nb); 5253 5251 if (ret) { 5254 5252 dev_err(dev, "failed to register the cpub_clk notifier\n"); 5255 5253 return ret; ··· 5258 5254 5259 5255 /* Setup clock notifier for sys_pll */ 5260 5256 notifier_clk = devm_clk_hw_get_clk(dev, &g12a_sys_pll.hw, DVFS_CON_ID); 5261 - ret = clk_notifier_register(notifier_clk, 5262 - &g12b_cpub_clk_sys_pll_nb_data.nb); 5257 + ret = devm_clk_notifier_register(dev, notifier_clk, 5258 + &g12b_cpub_clk_sys_pll_nb_data.nb); 5263 5259 if (ret) { 5264 5260 dev_err(dev, "failed to register the sys_pll notifier\n"); 5265 5261 return ret; ··· 5281 5277 5282 5278 /* Setup clock notifier for cpu_clk mux */ 5283 5279 notifier_clk = devm_clk_hw_get_clk(dev, &g12a_cpu_clk.hw, DVFS_CON_ID); 5284 - ret = clk_notifier_register(notifier_clk, &g12a_cpu_clk_mux_nb); 5280 + ret = devm_clk_notifier_register(dev, notifier_clk, 5281 + &g12a_cpu_clk_mux_nb); 5285 5282 if (ret) { 5286 5283 dev_err(dev, "failed to register the cpu_clk notifier\n"); 5287 5284 return ret; ··· 5290 5285 5291 5286 /* Setup clock notifier for sys_pll */ 5292 5287 notifier_clk = devm_clk_hw_get_clk(dev, &g12a_sys_pll.hw, DVFS_CON_ID); 5293 - ret = clk_notifier_register(notifier_clk, &g12a_sys_pll_nb_data.nb); 5288 + ret = devm_clk_notifier_register(dev, notifier_clk, 5289 + &g12a_sys_pll_nb_data.nb); 5294 5290 if (ret) { 5295 5291 dev_err(dev, "failed to register the sys_pll notifier\n"); 5296 5292 return ret;
+9 -1
include/linux/clk.h
··· 117 117 * 118 118 * Returns 0 on success, -EERROR otherwise 119 119 */ 120 - int devm_clk_notifier_register(struct device *dev, struct clk *clk, struct notifier_block *nb); 120 + int devm_clk_notifier_register(struct device *dev, struct clk *clk, 121 + struct notifier_block *nb); 121 122 122 123 /** 123 124 * clk_get_accuracy - obtain the clock accuracy in ppb (parts per billion) ··· 193 192 194 193 static inline int clk_notifier_unregister(struct clk *clk, 195 194 struct notifier_block *nb) 195 + { 196 + return -ENOTSUPP; 197 + } 198 + 199 + static inline int devm_clk_notifier_register(struct device *dev, 200 + struct clk *clk, 201 + struct notifier_block *nb) 196 202 { 197 203 return -ENOTSUPP; 198 204 }