drivers: regulator: update to new delayable work API
Replace legacy API with new API. Note that this driver uses the schedule, not reschedule, API, since triggers for delay never overlap. Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
This commit is contained in:
parent
d1affd9118
commit
571f9dbbd9
1 changed files with 9 additions and 10 deletions
|
@ -39,7 +39,7 @@ struct driver_data_onoff {
|
||||||
const struct device *dev;
|
const struct device *dev;
|
||||||
struct onoff_manager mgr;
|
struct onoff_manager mgr;
|
||||||
#ifdef CONFIG_MULTITHREADING
|
#ifdef CONFIG_MULTITHREADING
|
||||||
struct k_delayed_work delayed_work;
|
struct k_work_delayable dwork;
|
||||||
#endif /* CONFIG_MULTITHREADING */
|
#endif /* CONFIG_MULTITHREADING */
|
||||||
onoff_notify_fn notify;
|
onoff_notify_fn notify;
|
||||||
enum work_task task;
|
enum work_task task;
|
||||||
|
@ -114,8 +114,7 @@ static void finalize_transition(struct driver_data_onoff *data,
|
||||||
__ASSERT_NO_MSG(data->task == WORK_TASK_UNDEFINED);
|
__ASSERT_NO_MSG(data->task == WORK_TASK_UNDEFINED);
|
||||||
data->task = WORK_TASK_DELAY;
|
data->task = WORK_TASK_DELAY;
|
||||||
data->notify = notify;
|
data->notify = notify;
|
||||||
rc = k_delayed_work_submit(&data->delayed_work,
|
rc = k_work_schedule(&data->dwork, K_USEC(delay_us));
|
||||||
K_USEC(delay_us));
|
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -136,11 +135,11 @@ static void finalize_transition(struct driver_data_onoff *data,
|
||||||
*/
|
*/
|
||||||
static void onoff_worker(struct k_work *work)
|
static void onoff_worker(struct k_work *work)
|
||||||
{
|
{
|
||||||
struct k_delayed_work *delayed_work
|
struct k_work_delayable *dwork
|
||||||
= CONTAINER_OF(work, struct k_delayed_work, work);
|
= k_work_delayable_from_work(work);
|
||||||
struct driver_data_onoff *data
|
struct driver_data_onoff *data
|
||||||
= CONTAINER_OF(delayed_work, struct driver_data_onoff,
|
= CONTAINER_OF(dwork, struct driver_data_onoff,
|
||||||
delayed_work);
|
dwork);
|
||||||
onoff_notify_fn notify = data->notify;
|
onoff_notify_fn notify = data->notify;
|
||||||
const struct driver_config *cfg = data->dev->config;
|
const struct driver_config *cfg = data->dev->config;
|
||||||
uint32_t delay_us = 0;
|
uint32_t delay_us = 0;
|
||||||
|
@ -190,7 +189,7 @@ static void start(struct onoff_manager *mgr,
|
||||||
__ASSERT_NO_MSG(data->task == WORK_TASK_UNDEFINED);
|
__ASSERT_NO_MSG(data->task == WORK_TASK_UNDEFINED);
|
||||||
data->task = WORK_TASK_ENABLE;
|
data->task = WORK_TASK_ENABLE;
|
||||||
data->notify = notify;
|
data->notify = notify;
|
||||||
k_delayed_work_submit(&data->delayed_work, K_NO_WAIT);
|
k_work_schedule(&data->dwork, K_NO_WAIT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_MULTITHREADING */
|
#endif /* CONFIG_MULTITHREADING */
|
||||||
|
@ -228,7 +227,7 @@ static void stop(struct onoff_manager *mgr,
|
||||||
__ASSERT_NO_MSG(data->task == WORK_TASK_UNDEFINED);
|
__ASSERT_NO_MSG(data->task == WORK_TASK_UNDEFINED);
|
||||||
data->task = WORK_TASK_DISABLE;
|
data->task = WORK_TASK_DISABLE;
|
||||||
data->notify = notify;
|
data->notify = notify;
|
||||||
k_delayed_work_submit(&data->delayed_work, K_NO_WAIT);
|
k_work_schedule(&data->dwork, K_NO_WAIT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_MULTITHREADING */
|
#endif /* CONFIG_MULTITHREADING */
|
||||||
|
@ -271,7 +270,7 @@ static int regulator_fixed_init_onoff(const struct device *dev)
|
||||||
__ASSERT_NO_MSG(rc == 0);
|
__ASSERT_NO_MSG(rc == 0);
|
||||||
|
|
||||||
#ifdef CONFIG_MULTITHREADING
|
#ifdef CONFIG_MULTITHREADING
|
||||||
k_delayed_work_init(&data->delayed_work, onoff_worker);
|
k_work_init_delayable(&data->dwork, onoff_worker);
|
||||||
#endif /* CONFIG_MULTITHREADING */
|
#endif /* CONFIG_MULTITHREADING */
|
||||||
|
|
||||||
rc = common_init(dev, &data->gpio);
|
rc = common_init(dev, &data->gpio);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue