@@ -73,15 +73,6 @@ static void gnss_emul_update_fix_timestamp(const struct device *dev, bool resumi
7373 }
7474}
7575
76- #ifdef CONFIG_PM_DEVICE
77- static void gnss_emul_clear_fix_timestamp (const struct device * dev )
78- {
79- struct gnss_emul_data * data = dev -> data ;
80-
81- data -> fix_timestamp_ms = 0 ;
82- }
83- #endif
84-
8576static void gnss_emul_schedule_work (const struct device * dev )
8677{
8778 struct gnss_emul_data * data = dev -> data ;
@@ -181,42 +172,6 @@ static int gnss_emul_get_enabled_systems(const struct device *dev, gnss_systems_
181172 return 0 ;
182173}
183174
184- #ifdef CONFIG_PM_DEVICE
185- static void gnss_emul_resume (const struct device * dev )
186- {
187- gnss_emul_update_fix_timestamp (dev , true);
188- }
189-
190- static void gnss_emul_suspend (const struct device * dev )
191- {
192- gnss_emul_clear_fix_timestamp (dev );
193- }
194-
195- static int gnss_emul_pm_action (const struct device * dev , enum pm_device_action action )
196- {
197- int ret = 0 ;
198-
199- gnss_emul_lock (dev );
200-
201- switch (action ) {
202- case PM_DEVICE_ACTION_SUSPEND :
203- gnss_emul_suspend (dev );
204- break ;
205-
206- case PM_DEVICE_ACTION_RESUME :
207- gnss_emul_resume (dev );
208- break ;
209-
210- default :
211- ret = - ENOTSUP ;
212- break ;
213- }
214-
215- gnss_emul_unlock (dev );
216- return ret ;
217- }
218- #endif
219-
220175static int gnss_emul_api_set_fix_rate (const struct device * dev , uint32_t fix_interval_ms )
221176{
222177 int ret = - ENODEV ;
@@ -486,27 +441,49 @@ static void gnss_emul_work_handler(struct k_work *work)
486441 gnss_emul_schedule_work (dev );
487442}
488443
489- static void gnss_emul_init_data (const struct device * dev )
444+ static void gnss_emul_resume (const struct device * dev )
490445{
491- struct gnss_emul_data * data = dev -> data ;
446+ gnss_emul_update_fix_timestamp (dev , true);
447+ }
492448
493- data -> dev = dev ;
494- k_sem_init ( & data -> lock , 1 , 1 );
495- k_work_init_delayable ( & data -> data_dwork , gnss_emul_work_handler );
449+ static void gnss_emul_suspend ( const struct device * dev )
450+ {
451+ gnss_emul_clear_data ( dev );
496452}
497453
498- static int gnss_emul_init (const struct device * dev )
454+ static int gnss_emul_pm_action (const struct device * dev , enum pm_device_action action )
499455{
500- gnss_emul_init_data ( dev ) ;
456+ int ret = 0 ;
501457
502- if (pm_device_is_powered (dev )) {
503- gnss_emul_update_fix_timestamp (dev , true);
504- gnss_emul_schedule_work (dev );
505- } else {
506- pm_device_init_off (dev );
458+ gnss_emul_lock (dev );
459+
460+ switch (action ) {
461+ case PM_DEVICE_ACTION_SUSPEND :
462+ gnss_emul_suspend (dev );
463+ break ;
464+
465+ case PM_DEVICE_ACTION_RESUME :
466+ gnss_emul_resume (dev );
467+ break ;
468+
469+ default :
470+ ret = - ENOTSUP ;
471+ break ;
507472 }
508473
509- return pm_device_runtime_enable (dev );
474+ gnss_emul_unlock (dev );
475+ return ret ;
476+ }
477+
478+ static int gnss_emul_init (const struct device * dev )
479+ {
480+ struct gnss_emul_data * data = dev -> data ;
481+
482+ data -> dev = dev ;
483+ k_sem_init (& data -> lock , 1 , 1 );
484+ k_work_init_delayable (& data -> data_dwork , gnss_emul_work_handler );
485+
486+ return pm_device_driver_init (dev , gnss_emul_pm_action );
510487}
511488
512489#define GNSS_EMUL_NAME (inst , name ) _CONCAT(name, inst)
0 commit comments