| @@ -64,7 +64,7 @@ static struct platform_device *cpufreq_dt_pdev, *cpufreq_pdev; · 63 unmodified lines |
| 64 | | 64 | |
| 65 | static void get_krait_bin_format_a(struct device *cpu_dev, | 65 | static void get_krait_bin_format_a(struct device *cpu_dev, |
| 66 | int *speed, int *pvs, int *pvs_ver, | 66 | int *speed, int *pvs, int *pvs_ver, |
| 67 | struct nvmem_cell *pvs_nvmem, u8 *buf) | 67 | u8 *buf) |
| 68 | { | 68 | { |
| 69 | u32 pte_efuse; | 69 | u32 pte_efuse; |
| 70 | | 70 | |
| @@ -95,7 +95,7 @@ static void get_krait_bin_format_a(struct device *cpu_dev, · 24 unmodified lines |
| 95 | | 95 | |
| 96 | static void get_krait_bin_format_b(struct device *cpu_dev, | 96 | static void get_krait_bin_format_b(struct device *cpu_dev, |
| 97 | int *speed, int *pvs, int *pvs_ver, | 97 | int *speed, int *pvs, int *pvs_ver, |
| 98 | struct nvmem_cell *pvs_nvmem, u8 *buf) | 98 | u8 *buf) |
| 99 | { | 99 | { |
| 100 | u32 pte_efuse, redundant_sel; | 100 | u32 pte_efuse, redundant_sel; |
| 101 | | 101 | |
| @@ -213,6 +213,7 @@ static int qcom_cpufreq_krait_name_version(struct device *cpu_dev, · 111 unmodified lines |
| 213 | int speed = 0, pvs = 0, pvs_ver = 0; | 213 | int speed = 0, pvs = 0, pvs_ver = 0; |
| 214 | u8 *speedbin; | 214 | u8 *speedbin; |
| 215 | size_t len; | 215 | size_t len; |
| | 216 | int ret = 0; |
| 216 | | 217 | |
| 217 | speedbin = nvmem_cell_read(speedbin_nvmem, &len); | 218 | speedbin = nvmem_cell_read(speedbin_nvmem, &len); |
| 218 | | 219 | |
| @@ -222,15 +223,16 @@ static int qcom_cpufreq_krait_name_version(struct device *cpu_dev, · 3 unmodified lines |
| 222 | switch (len) { | 223 | switch (len) { |
| 223 | case 4: | 224 | case 4: |
| 224 | get_krait_bin_format_a(cpu_dev, &speed, &pvs, &pvs_ver, | 225 | get_krait_bin_format_a(cpu_dev, &speed, &pvs, &pvs_ver, |
| 225 | speedbin_nvmem, speedbin); | 226 | speedbin); |
| 226 | break; | 227 | break; |
| 227 | case 8: | 228 | case 8: |
| 228 | get_krait_bin_format_b(cpu_dev, &speed, &pvs, &pvs_ver, | 229 | get_krait_bin_format_b(cpu_dev, &speed, &pvs, &pvs_ver, |
| 229 | speedbin_nvmem, speedbin); | 230 | speedbin); |
| 230 | break; | 231 | break; |
| 231 | default: | 232 | default: |
| 232 | dev_err(cpu_dev, "Unable to read nvmem data. Defaulting to 0!\n"); | 233 | dev_err(cpu_dev, "Unable to read nvmem data. Defaulting to 0!\n"); |
| 233 | return -ENODEV; | 234 | ret = -ENODEV; |
| | 235 | goto len_error; |
| 234 | } | 236 | } |
| 235 | | 237 | |
| 236 | snprintf(*pvs_name, sizeof("speedXX-pvsXX-vXX"), "speed%d-pvs%d-v%d", | 238 | snprintf(*pvs_name, sizeof("speedXX-pvsXX-vXX"), "speed%d-pvs%d-v%d", |
| @@ -238,8 +240,9 @@ static int qcom_cpufreq_krait_name_version(struct device *cpu_dev, · 1 unmodified line |
| 238 | | 240 | |
| 239 | drv->versions = (1 << speed); | 241 | drv->versions = (1 << speed); |
| 240 | | 242 | |
| | 243 | len_error: |
| 241 | kfree(speedbin); | 244 | kfree(speedbin); |
| 242 | return 0; | 245 | return ret; |
| 243 | } | 246 | } |
| 244 | | 247 | |
| 245 | static const struct qcom_cpufreq_match_data match_data_kryo = { | 248 | static const struct qcom_cpufreq_match_data match_data_kryo = { |
| @@ -262,7 +265,8 @@ static int qcom_cpufreq_probe(struct platform_device *pdev) · 16 unmodified lines |
| 262 | struct nvmem_cell *speedbin_nvmem; | 265 | struct nvmem_cell *speedbin_nvmem; |
| 263 | struct device_node *np; | 266 | struct device_node *np; |
| 264 | struct device *cpu_dev; | 267 | struct device *cpu_dev; |
| 265 | char *pvs_name = "speedXX-pvsXX-vXX"; | 268 | char pvs_name_buffer[] = "speedXX-pvsXX-vXX"; |
| | 269 | char *pvs_name = pvs_name_buffer; |
| 266 | unsigned cpu; | 270 | unsigned cpu; |
| 267 | const struct of_device_id *match; | 271 | const struct of_device_id *match; |
| 268 | int ret; | 272 | int ret; |
| @@ -295,11 +299,8 @@ static int qcom_cpufreq_probe(struct platform_device *pdev) · 26 unmodified lines |
| 295 | if (drv->data->get_version) { | 299 | if (drv->data->get_version) { |
| 296 | speedbin_nvmem = of_nvmem_cell_get(np, NULL); | 300 | speedbin_nvmem = of_nvmem_cell_get(np, NULL); |
| 297 | if (IS_ERR(speedbin_nvmem)) { | 301 | if (IS_ERR(speedbin_nvmem)) { |
| 298 | if (PTR_ERR(speedbin_nvmem) != -EPROBE_DEFER) | 302 | ret = dev_err_probe(cpu_dev, PTR_ERR(speedbin_nvmem), |
| 299 | dev_err(cpu_dev, | 303 | "Could not get nvmem cell\n"); |
| 300 | "Could not get nvmem cell: %ld\n", | | |
| 301 | PTR_ERR(speedbin_nvmem)); | | |
| 302 | ret = PTR_ERR(speedbin_nvmem); | | |
| 303 | goto free_drv; | 304 | goto free_drv; |
| 304 | } | 305 | } |
| 305 | | 306 | |