@@ -90,19 +90,18 @@ static int acpi_tad_set_real_time(struct device *dev, struct acpi_tad_rt *rt)
9090 args [0 ].buffer .pointer = (u8 * )rt ;
9191 args [0 ].buffer .length = sizeof (* rt );
9292
93- pm_runtime_get_sync (dev );
93+ ACQUIRE (pm_runtime_active_try , pm )(dev );
94+ if (ACQUIRE_ERR (pm_runtime_active_try , & pm ))
95+ return - ENXIO ;
9496
9597 status = acpi_evaluate_integer (handle , "_SRT" , & arg_list , & retval );
96-
97- pm_runtime_put_sync (dev );
98-
9998 if (ACPI_FAILURE (status ) || retval )
10099 return - EIO ;
101100
102101 return 0 ;
103102}
104103
105- static int acpi_tad_get_real_time (struct device * dev , struct acpi_tad_rt * rt )
104+ static int acpi_tad_evaluate_grt (struct device * dev , struct acpi_tad_rt * rt )
106105{
107106 acpi_handle handle = ACPI_HANDLE (dev );
108107 struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER };
@@ -111,12 +110,7 @@ static int acpi_tad_get_real_time(struct device *dev, struct acpi_tad_rt *rt)
111110 acpi_status status ;
112111 int ret = - EIO ;
113112
114- pm_runtime_get_sync (dev );
115-
116113 status = acpi_evaluate_object (handle , "_GRT" , NULL , & output );
117-
118- pm_runtime_put_sync (dev );
119-
120114 if (ACPI_FAILURE (status ))
121115 goto out_free ;
122116
@@ -139,6 +133,21 @@ static int acpi_tad_get_real_time(struct device *dev, struct acpi_tad_rt *rt)
139133 return ret ;
140134}
141135
136+ static int acpi_tad_get_real_time (struct device * dev , struct acpi_tad_rt * rt )
137+ {
138+ int ret ;
139+
140+ ACQUIRE (pm_runtime_active_try , pm )(dev );
141+ if (ACQUIRE_ERR (pm_runtime_active_try , & pm ))
142+ return - ENXIO ;
143+
144+ ret = acpi_tad_evaluate_grt (dev , rt );
145+ if (ret )
146+ return ret ;
147+
148+ return 0 ;
149+ }
150+
142151static char * acpi_tad_rt_next_field (char * s , int * val )
143152{
144153 char * p ;
@@ -266,12 +275,11 @@ static int acpi_tad_wake_set(struct device *dev, char *method, u32 timer_id,
266275 args [0 ].integer .value = timer_id ;
267276 args [1 ].integer .value = value ;
268277
269- pm_runtime_get_sync (dev );
278+ ACQUIRE (pm_runtime_active_try , pm )(dev );
279+ if (ACQUIRE_ERR (pm_runtime_active_try , & pm ))
280+ return - ENXIO ;
270281
271282 status = acpi_evaluate_integer (handle , method , & arg_list , & retval );
272-
273- pm_runtime_put_sync (dev );
274-
275283 if (ACPI_FAILURE (status ) || retval )
276284 return - EIO ;
277285
@@ -314,12 +322,11 @@ static ssize_t acpi_tad_wake_read(struct device *dev, char *buf, char *method,
314322
315323 args [0 ].integer .value = timer_id ;
316324
317- pm_runtime_get_sync (dev );
325+ ACQUIRE (pm_runtime_active_try , pm )(dev );
326+ if (ACQUIRE_ERR (pm_runtime_active_try , & pm ))
327+ return - ENXIO ;
318328
319329 status = acpi_evaluate_integer (handle , method , & arg_list , & retval );
320-
321- pm_runtime_put_sync (dev );
322-
323330 if (ACPI_FAILURE (status ))
324331 return - EIO ;
325332
@@ -370,12 +377,11 @@ static int acpi_tad_clear_status(struct device *dev, u32 timer_id)
370377
371378 args [0 ].integer .value = timer_id ;
372379
373- pm_runtime_get_sync (dev );
380+ ACQUIRE (pm_runtime_active_try , pm )(dev );
381+ if (ACQUIRE_ERR (pm_runtime_active_try , & pm ))
382+ return - ENXIO ;
374383
375384 status = acpi_evaluate_integer (handle , "_CWS" , & arg_list , & retval );
376-
377- pm_runtime_put_sync (dev );
378-
379385 if (ACPI_FAILURE (status ) || retval )
380386 return - EIO ;
381387
@@ -411,12 +417,11 @@ static ssize_t acpi_tad_status_read(struct device *dev, char *buf, u32 timer_id)
411417
412418 args [0 ].integer .value = timer_id ;
413419
414- pm_runtime_get_sync (dev );
420+ ACQUIRE (pm_runtime_active_try , pm )(dev );
421+ if (ACQUIRE_ERR (pm_runtime_active_try , & pm ))
422+ return - ENXIO ;
415423
416424 status = acpi_evaluate_integer (handle , "_GWS" , & arg_list , & retval );
417-
418- pm_runtime_put_sync (dev );
419-
420425 if (ACPI_FAILURE (status ))
421426 return - EIO ;
422427
@@ -571,16 +576,15 @@ static void acpi_tad_remove(struct platform_device *pdev)
571576
572577 sysfs_remove_group (& dev -> kobj , & acpi_tad_attr_group );
573578
574- pm_runtime_get_noresume ( dev );
575-
576- acpi_tad_disable_timer (dev , ACPI_TAD_AC_TIMER );
577- acpi_tad_clear_status ( dev , ACPI_TAD_AC_TIMER );
578- if ( dd -> capabilities & ACPI_TAD_DC_WAKE ) {
579- acpi_tad_disable_timer (dev , ACPI_TAD_DC_TIMER );
580- acpi_tad_clear_status ( dev , ACPI_TAD_DC_TIMER );
579+ scoped_guard ( pm_runtime_noresume , dev ) {
580+ acpi_tad_disable_timer ( dev , ACPI_TAD_AC_TIMER );
581+ acpi_tad_clear_status (dev , ACPI_TAD_AC_TIMER );
582+ if ( dd -> capabilities & ACPI_TAD_DC_WAKE ) {
583+ acpi_tad_disable_timer ( dev , ACPI_TAD_DC_TIMER );
584+ acpi_tad_clear_status (dev , ACPI_TAD_DC_TIMER );
585+ }
581586 }
582587
583- pm_runtime_put_noidle (dev );
584588 pm_runtime_suspend (dev );
585589 pm_runtime_disable (dev );
586590 acpi_remove_cmos_rtc_space_handler (handle );
0 commit comments