Skip to content

Commit 9bc84b9

Browse files
JordanYatesjhedberg
authored andcommitted
gnss: gnss_emul: init with pm_device_driver_init
Remove the custom initialisation logic that attempts to duplicate `pm_device_driver_init`. Signed-off-by: Jordan Yates <[email protected]>
1 parent 711c8ce commit 9bc84b9

File tree

2 files changed

+37
-58
lines changed

2 files changed

+37
-58
lines changed

drivers/gnss/gnss_emul.c

Lines changed: 35 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
8576
static 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-
220175
static 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)

dts/bindings/gnss/zephyr,gnss-emul.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@
44
description: Zephyr emulated GNSS device
55

66
compatible: "zephyr,gnss-emul"
7+
8+
include: base.yaml

0 commit comments

Comments
 (0)