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

opp: Add more resource-managed variants of dev_pm_opp_of_add_table()

Add resource-managed variants of dev_pm_opp_of_add_table_indexed() and
dev_pm_opp_of_add_table_noclk(), allowing drivers to remove boilerplate
code.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
[ Viresh: Added underscore to devm_of_add_table_indexed() ]
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

authored by

Dmitry Osipenko and committed by
Viresh Kumar
e69709f6 3734b9f2

+51 -7
+39 -7
drivers/opp/of.c
··· 1081 1081 dev_pm_opp_of_remove_table(data); 1082 1082 } 1083 1083 1084 + static int _devm_of_add_table_indexed(struct device *dev, int index, bool getclk) 1085 + { 1086 + int ret; 1087 + 1088 + ret = _of_add_table_indexed(dev, index, getclk); 1089 + if (ret) 1090 + return ret; 1091 + 1092 + return devm_add_action_or_reset(dev, devm_pm_opp_of_table_release, dev); 1093 + } 1094 + 1084 1095 /** 1085 1096 * devm_pm_opp_of_add_table() - Initialize opp table from device tree 1086 1097 * @dev: device pointer used to lookup OPP table. ··· 1113 1102 */ 1114 1103 int devm_pm_opp_of_add_table(struct device *dev) 1115 1104 { 1116 - int ret; 1117 - 1118 - ret = dev_pm_opp_of_add_table(dev); 1119 - if (ret) 1120 - return ret; 1121 - 1122 - return devm_add_action_or_reset(dev, devm_pm_opp_of_table_release, dev); 1105 + return _devm_of_add_table_indexed(dev, 0, true); 1123 1106 } 1124 1107 EXPORT_SYMBOL_GPL(devm_pm_opp_of_add_table); 1125 1108 ··· 1157 1152 EXPORT_SYMBOL_GPL(dev_pm_opp_of_add_table_indexed); 1158 1153 1159 1154 /** 1155 + * devm_pm_opp_of_add_table_indexed() - Initialize indexed opp table from device tree 1156 + * @dev: device pointer used to lookup OPP table. 1157 + * @index: Index number. 1158 + * 1159 + * This is a resource-managed variant of dev_pm_opp_of_add_table_indexed(). 1160 + */ 1161 + int devm_pm_opp_of_add_table_indexed(struct device *dev, int index) 1162 + { 1163 + return _devm_of_add_table_indexed(dev, index, true); 1164 + } 1165 + EXPORT_SYMBOL_GPL(devm_pm_opp_of_add_table_indexed); 1166 + 1167 + /** 1160 1168 * dev_pm_opp_of_add_table_noclk() - Initialize indexed opp table from device 1161 1169 * tree without getting clk for device. 1162 1170 * @dev: device pointer used to lookup OPP table. ··· 1186 1168 return _of_add_table_indexed(dev, index, false); 1187 1169 } 1188 1170 EXPORT_SYMBOL_GPL(dev_pm_opp_of_add_table_noclk); 1171 + 1172 + /** 1173 + * devm_pm_opp_of_add_table_noclk() - Initialize indexed opp table from device 1174 + * tree without getting clk for device. 1175 + * @dev: device pointer used to lookup OPP table. 1176 + * @index: Index number. 1177 + * 1178 + * This is a resource-managed variant of dev_pm_opp_of_add_table_noclk(). 1179 + */ 1180 + int devm_pm_opp_of_add_table_noclk(struct device *dev, int index) 1181 + { 1182 + return _devm_of_add_table_indexed(dev, index, false); 1183 + } 1184 + EXPORT_SYMBOL_GPL(devm_pm_opp_of_add_table_noclk); 1189 1185 1190 1186 /* CPU device specific helpers */ 1191 1187
+12
include/linux/pm_opp.h
··· 439 439 #if defined(CONFIG_PM_OPP) && defined(CONFIG_OF) 440 440 int dev_pm_opp_of_add_table(struct device *dev); 441 441 int dev_pm_opp_of_add_table_indexed(struct device *dev, int index); 442 + int devm_pm_opp_of_add_table_indexed(struct device *dev, int index); 442 443 int dev_pm_opp_of_add_table_noclk(struct device *dev, int index); 444 + int devm_pm_opp_of_add_table_noclk(struct device *dev, int index); 443 445 void dev_pm_opp_of_remove_table(struct device *dev); 444 446 int devm_pm_opp_of_add_table(struct device *dev); 445 447 int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask); ··· 467 465 return -EOPNOTSUPP; 468 466 } 469 467 468 + static inline int devm_pm_opp_of_add_table_indexed(struct device *dev, int index) 469 + { 470 + return -EOPNOTSUPP; 471 + } 472 + 470 473 static inline int dev_pm_opp_of_add_table_noclk(struct device *dev, int index) 474 + { 475 + return -EOPNOTSUPP; 476 + } 477 + 478 + static inline int devm_pm_opp_of_add_table_noclk(struct device *dev, int index) 471 479 { 472 480 return -EOPNOTSUPP; 473 481 }