@@ -2338,7 +2338,7 @@ EXPORT_SYMBOL_GPL(genpd_dev_pm_attach);
2338
2338
struct device * genpd_dev_pm_attach_by_id (struct device * dev ,
2339
2339
unsigned int index )
2340
2340
{
2341
- struct device * genpd_dev ;
2341
+ struct device * virt_dev ;
2342
2342
int num_domains ;
2343
2343
int ret ;
2344
2344
@@ -2352,31 +2352,31 @@ struct device *genpd_dev_pm_attach_by_id(struct device *dev,
2352
2352
return NULL ;
2353
2353
2354
2354
/* Allocate and register device on the genpd bus. */
2355
- genpd_dev = kzalloc (sizeof (* genpd_dev ), GFP_KERNEL );
2356
- if (!genpd_dev )
2355
+ virt_dev = kzalloc (sizeof (* virt_dev ), GFP_KERNEL );
2356
+ if (!virt_dev )
2357
2357
return ERR_PTR (- ENOMEM );
2358
2358
2359
- dev_set_name (genpd_dev , "genpd:%u:%s" , index , dev_name (dev ));
2360
- genpd_dev -> bus = & genpd_bus_type ;
2361
- genpd_dev -> release = genpd_release_dev ;
2359
+ dev_set_name (virt_dev , "genpd:%u:%s" , index , dev_name (dev ));
2360
+ virt_dev -> bus = & genpd_bus_type ;
2361
+ virt_dev -> release = genpd_release_dev ;
2362
2362
2363
- ret = device_register (genpd_dev );
2363
+ ret = device_register (virt_dev );
2364
2364
if (ret ) {
2365
- kfree (genpd_dev );
2365
+ kfree (virt_dev );
2366
2366
return ERR_PTR (ret );
2367
2367
}
2368
2368
2369
2369
/* Try to attach the device to the PM domain at the specified index. */
2370
- ret = __genpd_dev_pm_attach (genpd_dev , dev -> of_node , index , false);
2370
+ ret = __genpd_dev_pm_attach (virt_dev , dev -> of_node , index , false);
2371
2371
if (ret < 1 ) {
2372
- device_unregister (genpd_dev );
2372
+ device_unregister (virt_dev );
2373
2373
return ret ? ERR_PTR (ret ) : NULL ;
2374
2374
}
2375
2375
2376
- pm_runtime_enable (genpd_dev );
2377
- genpd_queue_power_off_work (dev_to_genpd (genpd_dev ));
2376
+ pm_runtime_enable (virt_dev );
2377
+ genpd_queue_power_off_work (dev_to_genpd (virt_dev ));
2378
2378
2379
- return genpd_dev ;
2379
+ return virt_dev ;
2380
2380
}
2381
2381
EXPORT_SYMBOL_GPL (genpd_dev_pm_attach_by_id );
2382
2382
@@ -2521,52 +2521,36 @@ int of_genpd_parse_idle_states(struct device_node *dn,
2521
2521
EXPORT_SYMBOL_GPL (of_genpd_parse_idle_states );
2522
2522
2523
2523
/**
2524
- * of_genpd_opp_to_performance_state- Gets performance state of device's
2525
- * power domain corresponding to a DT node's "required-opps" property.
2524
+ * pm_genpd_opp_to_performance_state - Gets performance state of the genpd from its OPP node.
2526
2525
*
2527
- * @dev: Device for which the performance-state needs to be found.
2528
- * @np: DT node where the "required-opps" property is present. This can be
2529
- * the device node itself (if it doesn't have an OPP table) or a node
2530
- * within the OPP table of a device (if device has an OPP table).
2526
+ * @genpd_dev: Genpd's device for which the performance-state needs to be found.
2527
+ * @opp: struct dev_pm_opp of the OPP for which we need to find performance
2528
+ * state.
2531
2529
*
2532
- * Returns performance state corresponding to the "required-opps" property of
2533
- * a DT node. This calls platform specific genpd->opp_to_performance_state()
2534
- * callback to translate power domain OPP to performance state.
2530
+ * Returns performance state encoded in the OPP of the genpd. This calls
2531
+ * platform specific genpd->opp_to_performance_state() callback to translate
2532
+ * power domain OPP to performance state.
2535
2533
*
2536
2534
* Returns performance state on success and 0 on failure.
2537
2535
*/
2538
- unsigned int of_genpd_opp_to_performance_state (struct device * dev ,
2539
- struct device_node * np )
2536
+ unsigned int pm_genpd_opp_to_performance_state (struct device * genpd_dev ,
2537
+ struct dev_pm_opp * opp )
2540
2538
{
2541
- struct generic_pm_domain * genpd ;
2542
- struct dev_pm_opp * opp ;
2543
- int state = 0 ;
2539
+ struct generic_pm_domain * genpd = NULL ;
2540
+ int state ;
2544
2541
2545
- genpd = dev_to_genpd (dev );
2546
- if (IS_ERR (genpd ))
2547
- return 0 ;
2542
+ genpd = container_of (genpd_dev , struct generic_pm_domain , dev );
2548
2543
2549
- if (unlikely (!genpd -> set_performance_state ))
2544
+ if (unlikely (!genpd -> opp_to_performance_state ))
2550
2545
return 0 ;
2551
2546
2552
2547
genpd_lock (genpd );
2553
-
2554
- opp = of_dev_pm_opp_find_required_opp (& genpd -> dev , np );
2555
- if (IS_ERR (opp )) {
2556
- dev_err (dev , "Failed to find required OPP: %ld\n" ,
2557
- PTR_ERR (opp ));
2558
- goto unlock ;
2559
- }
2560
-
2561
2548
state = genpd -> opp_to_performance_state (genpd , opp );
2562
- dev_pm_opp_put (opp );
2563
-
2564
- unlock :
2565
2549
genpd_unlock (genpd );
2566
2550
2567
2551
return state ;
2568
2552
}
2569
- EXPORT_SYMBOL_GPL (of_genpd_opp_to_performance_state );
2553
+ EXPORT_SYMBOL_GPL (pm_genpd_opp_to_performance_state );
2570
2554
2571
2555
static int __init genpd_bus_init (void )
2572
2556
{
0 commit comments