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

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'pm-6.1-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull power management fixes from Rafael Wysocki:
"These fix some issues and clean up code in ARM cpufreq drivers.

Specifics:

- Fix module loading in the Tegra124 cpufreq driver (Jon Hunter)

- Fix memory leak and update to read-only region in the qcom cpufreq
driver (Fabien Parent)

- Miscellaneous minor cleanups to cpufreq drivers (Fabien Parent,
Yang Yingliang)"

* tag 'pm-6.1-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
cpufreq: sun50i: Switch to use dev_err_probe() helper
cpufreq: qcom-nvmem: Switch to use dev_err_probe() helper
cpufreq: imx6q: Switch to use dev_err_probe() helper
cpufreq: dt: Switch to use dev_err_probe() helper
cpufreq: qcom: remove unused parameter in function definition
cpufreq: qcom: fix writes in read-only memory region
cpufreq: qcom: fix memory leak in error path
cpufreq: tegra194: Fix module loading

+20 -25
+2 -4
drivers/cpufreq/cpufreq-dt.c
··· 222 222 if (reg_name[0]) { 223 223 priv->opp_token = dev_pm_opp_set_regulators(cpu_dev, reg_name); 224 224 if (priv->opp_token < 0) { 225 - ret = priv->opp_token; 226 - if (ret != -EPROBE_DEFER) 227 - dev_err(cpu_dev, "failed to set regulators: %d\n", 228 - ret); 225 + ret = dev_err_probe(cpu_dev, priv->opp_token, 226 + "failed to set regulators\n"); 229 227 goto free_cpumask; 230 228 } 231 229 }
+1 -3
drivers/cpufreq/imx6q-cpufreq.c
··· 396 396 ret = imx6q_opp_check_speed_grading(cpu_dev); 397 397 } 398 398 if (ret) { 399 - if (ret != -EPROBE_DEFER) 400 - dev_err(cpu_dev, "failed to read ocotp: %d\n", 401 - ret); 399 + dev_err_probe(cpu_dev, ret, "failed to read ocotp\n"); 402 400 goto out_free_opp; 403 401 } 404 402
+13 -12
drivers/cpufreq/qcom-cpufreq-nvmem.c
··· 64 64 65 65 static void get_krait_bin_format_a(struct device *cpu_dev, 66 66 int *speed, int *pvs, int *pvs_ver, 67 - struct nvmem_cell *pvs_nvmem, u8 *buf) 67 + u8 *buf) 68 68 { 69 69 u32 pte_efuse; 70 70 ··· 95 95 96 96 static void get_krait_bin_format_b(struct device *cpu_dev, 97 97 int *speed, int *pvs, int *pvs_ver, 98 - struct nvmem_cell *pvs_nvmem, u8 *buf) 98 + u8 *buf) 99 99 { 100 100 u32 pte_efuse, redundant_sel; 101 101 ··· 213 213 int speed = 0, pvs = 0, pvs_ver = 0; 214 214 u8 *speedbin; 215 215 size_t len; 216 + int ret = 0; 216 217 217 218 speedbin = nvmem_cell_read(speedbin_nvmem, &len); 218 219 ··· 223 222 switch (len) { 224 223 case 4: 225 224 get_krait_bin_format_a(cpu_dev, &speed, &pvs, &pvs_ver, 226 - speedbin_nvmem, speedbin); 225 + speedbin); 227 226 break; 228 227 case 8: 229 228 get_krait_bin_format_b(cpu_dev, &speed, &pvs, &pvs_ver, 230 - speedbin_nvmem, speedbin); 229 + speedbin); 231 230 break; 232 231 default: 233 232 dev_err(cpu_dev, "Unable to read nvmem data. Defaulting to 0!\n"); 234 - return -ENODEV; 233 + ret = -ENODEV; 234 + goto len_error; 235 235 } 236 236 237 237 snprintf(*pvs_name, sizeof("speedXX-pvsXX-vXX"), "speed%d-pvs%d-v%d", ··· 240 238 241 239 drv->versions = (1 << speed); 242 240 241 + len_error: 243 242 kfree(speedbin); 244 - return 0; 243 + return ret; 245 244 } 246 245 247 246 static const struct qcom_cpufreq_match_data match_data_kryo = { ··· 265 262 struct nvmem_cell *speedbin_nvmem; 266 263 struct device_node *np; 267 264 struct device *cpu_dev; 268 - char *pvs_name = "speedXX-pvsXX-vXX"; 265 + char pvs_name_buffer[] = "speedXX-pvsXX-vXX"; 266 + char *pvs_name = pvs_name_buffer; 269 267 unsigned cpu; 270 268 const struct of_device_id *match; 271 269 int ret; ··· 299 295 if (drv->data->get_version) { 300 296 speedbin_nvmem = of_nvmem_cell_get(np, NULL); 301 297 if (IS_ERR(speedbin_nvmem)) { 302 - if (PTR_ERR(speedbin_nvmem) != -EPROBE_DEFER) 303 - dev_err(cpu_dev, 304 - "Could not get nvmem cell: %ld\n", 305 - PTR_ERR(speedbin_nvmem)); 306 - ret = PTR_ERR(speedbin_nvmem); 298 + ret = dev_err_probe(cpu_dev, PTR_ERR(speedbin_nvmem), 299 + "Could not get nvmem cell\n"); 307 300 goto free_drv; 308 301 } 309 302
+3 -6
drivers/cpufreq/sun50i-cpufreq-nvmem.c
··· 56 56 57 57 speedbin_nvmem = of_nvmem_cell_get(np, NULL); 58 58 of_node_put(np); 59 - if (IS_ERR(speedbin_nvmem)) { 60 - if (PTR_ERR(speedbin_nvmem) != -EPROBE_DEFER) 61 - pr_err("Could not get nvmem cell: %ld\n", 62 - PTR_ERR(speedbin_nvmem)); 63 - return PTR_ERR(speedbin_nvmem); 64 - } 59 + if (IS_ERR(speedbin_nvmem)) 60 + return dev_err_probe(cpu_dev, PTR_ERR(speedbin_nvmem), 61 + "Could not get nvmem cell\n"); 65 62 66 63 speedbin = nvmem_cell_read(speedbin_nvmem, &len); 67 64 nvmem_cell_put(speedbin_nvmem);
+1
drivers/cpufreq/tegra194-cpufreq.c
··· 589 589 { .compatible = "nvidia,tegra239-ccplex-cluster", .data = &tegra239_cpufreq_soc }, 590 590 { /* sentinel */ } 591 591 }; 592 + MODULE_DEVICE_TABLE(of, tegra194_cpufreq_of_match); 592 593 593 594 static struct platform_driver tegra194_ccplex_driver = { 594 595 .driver = {