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

Merge branch 'pm-devfreq'

* pm-devfreq:
PM / devfreq: create_freezable_workqueue() doesn't return an ERR_PTR
PM / devfreq: Remove duplicate header file inclusion in exynos5_bus.c
PM / devfreq: Use devm_* APIs in exynos5_bus.c
PM / devfreq: Remove redundant platform_set_drvdata() in exynos5_bus.c
PM / devfreq: Fix incorrect usage of IS_ERR_OR_NULL in exynos5_bus.c

+11 -23
+2 -2
drivers/devfreq/devfreq.c
··· 993 993 } 994 994 995 995 devfreq_wq = create_freezable_workqueue("devfreq_wq"); 996 - if (IS_ERR(devfreq_wq)) { 996 + if (!devfreq_wq) { 997 997 class_destroy(devfreq_class); 998 998 pr_err("%s: couldn't create workqueue\n", __FILE__); 999 - return PTR_ERR(devfreq_wq); 999 + return -ENOMEM; 1000 1000 } 1001 1001 devfreq_class->dev_groups = devfreq_groups; 1002 1002
+9 -21
drivers/devfreq/exynos/exynos5_bus.c
··· 350 350 351 351 err = exynos5250_init_int_tables(data); 352 352 if (err) 353 - goto err_regulator; 353 + return err; 354 354 355 - data->vdd_int = regulator_get(dev, "vdd_int"); 355 + data->vdd_int = devm_regulator_get(dev, "vdd_int"); 356 356 if (IS_ERR(data->vdd_int)) { 357 357 dev_err(dev, "Cannot get the regulator \"vdd_int\"\n"); 358 - err = PTR_ERR(data->vdd_int); 359 - goto err_regulator; 358 + return PTR_ERR(data->vdd_int); 360 359 } 361 360 362 - data->int_clk = clk_get(dev, "int_clk"); 361 + data->int_clk = devm_clk_get(dev, "int_clk"); 363 362 if (IS_ERR(data->int_clk)) { 364 363 dev_err(dev, "Cannot get clock \"int_clk\"\n"); 365 - err = PTR_ERR(data->int_clk); 366 - goto err_clock; 364 + return PTR_ERR(data->int_clk); 367 365 } 368 366 369 367 rcu_read_lock(); ··· 371 373 rcu_read_unlock(); 372 374 dev_err(dev, "Invalid initial frequency %lu kHz.\n", 373 375 exynos5_devfreq_int_profile.initial_freq); 374 - err = PTR_ERR(opp); 375 - goto err_opp_add; 376 + return PTR_ERR(opp); 376 377 } 377 378 initial_freq = dev_pm_opp_get_freq(opp); 378 379 initial_volt = dev_pm_opp_get_voltage(opp); ··· 381 384 err = clk_set_rate(data->int_clk, initial_freq * 1000); 382 385 if (err) { 383 386 dev_err(dev, "Failed to set initial frequency\n"); 384 - goto err_opp_add; 387 + return err; 385 388 } 386 389 387 390 err = exynos5_int_setvolt(data, initial_volt); 388 391 if (err) 389 - goto err_opp_add; 392 + return err; 390 393 391 394 platform_set_drvdata(pdev, data); 392 395 ··· 415 418 416 419 err_devfreq_add: 417 420 devfreq_remove_device(data->devfreq); 418 - platform_set_drvdata(pdev, NULL); 419 - err_opp_add: 420 - clk_put(data->int_clk); 421 - err_clock: 422 - regulator_put(data->vdd_int); 423 - err_regulator: 424 421 return err; 425 422 } 426 423 ··· 425 434 pm_qos_remove_request(&data->int_req); 426 435 unregister_pm_notifier(&data->pm_notifier); 427 436 devfreq_remove_device(data->devfreq); 428 - regulator_put(data->vdd_int); 429 - clk_put(data->int_clk); 430 - platform_set_drvdata(pdev, NULL); 431 437 432 438 return 0; 433 439 } ··· 466 478 467 479 exynos5_devfreq_pdev = 468 480 platform_device_register_simple("exynos5-bus-int", -1, NULL, 0); 469 - if (IS_ERR_OR_NULL(exynos5_devfreq_pdev)) { 481 + if (IS_ERR(exynos5_devfreq_pdev)) { 470 482 ret = PTR_ERR(exynos5_devfreq_pdev); 471 483 goto out1; 472 484 }