device: organize state and device initializers
Organize in a more logical flow the device state initializer and the device initializer parts. Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
This commit is contained in:
parent
90465fe537
commit
fe2014ae1f
1 changed files with 27 additions and 17 deletions
|
@ -720,6 +720,25 @@ static inline bool device_is_ready(const struct device *dev)
|
||||||
#define Z_DEVICE_EXTRA_HANDLES(...) \
|
#define Z_DEVICE_EXTRA_HANDLES(...) \
|
||||||
FOR_EACH_NONEMPTY_TERM(IDENTITY, (,), __VA_ARGS__)
|
FOR_EACH_NONEMPTY_TERM(IDENTITY, (,), __VA_ARGS__)
|
||||||
|
|
||||||
|
#ifdef CONFIG_PM_DEVICE
|
||||||
|
#define Z_DEVICE_STATE_PM_INIT(node_id, dev_name) \
|
||||||
|
.pm = Z_PM_DEVICE_INIT(Z_DEVICE_STATE_NAME(dev_name).pm, node_id),
|
||||||
|
#else
|
||||||
|
#define Z_DEVICE_STATE_PM_INIT(node_id, dev_name)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Utility macro to define and initialize the device state.
|
||||||
|
|
||||||
|
* @param node_id Devicetree node id of the device.
|
||||||
|
* @param dev_name Device name.
|
||||||
|
*/
|
||||||
|
#define Z_DEVICE_STATE_DEFINE(node_id, dev_name) \
|
||||||
|
static struct device_state Z_DEVICE_STATE_NAME(dev_name) \
|
||||||
|
__attribute__((__section__(".z_devstate"))) = { \
|
||||||
|
Z_DEVICE_STATE_PM_INIT(node_id, dev_name) \
|
||||||
|
};
|
||||||
|
|
||||||
/* If device power management is enabled, this macro defines a pointer to a
|
/* If device power management is enabled, this macro defines a pointer to a
|
||||||
* device in the z_pm_device_slots region. When invoked for each device, this
|
* device in the z_pm_device_slots region. When invoked for each device, this
|
||||||
* will effectively result in a device pointer array with the same size of the
|
* will effectively result in a device pointer array with the same size of the
|
||||||
|
@ -804,6 +823,14 @@ BUILD_ASSERT(sizeof(device_handle_t) == 2, "fix the linker scripts");
|
||||||
(DT_SUPPORTS_DEP_ORDS(node_id)), ()) \
|
(DT_SUPPORTS_DEP_ORDS(node_id)), ()) \
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef CONFIG_PM_DEVICE
|
||||||
|
#define Z_DEVICE_DEFINE_PM_INIT(dev_name, pm_control_fn) \
|
||||||
|
.pm_control = (pm_control_fn), \
|
||||||
|
.pm = &Z_DEVICE_STATE_NAME(dev_name).pm,
|
||||||
|
#else
|
||||||
|
#define Z_DEVICE_DEFINE_PM_INIT(dev_name, pm_control_fn)
|
||||||
|
#endif
|
||||||
|
|
||||||
#define Z_DEVICE_DEFINE_INIT(node_id, dev_name, pm_control_fn) \
|
#define Z_DEVICE_DEFINE_INIT(node_id, dev_name, pm_control_fn) \
|
||||||
.handles = Z_DEVICE_HANDLE_NAME(node_id, dev_name), \
|
.handles = Z_DEVICE_HANDLE_NAME(node_id, dev_name), \
|
||||||
Z_DEVICE_DEFINE_PM_INIT(dev_name, pm_control_fn)
|
Z_DEVICE_DEFINE_PM_INIT(dev_name, pm_control_fn)
|
||||||
|
@ -830,23 +857,6 @@ BUILD_ASSERT(sizeof(device_handle_t) == 2, "fix the linker scripts");
|
||||||
Z_INIT_ENTRY_DEFINE(DEVICE_NAME_GET(dev_name), init_fn, \
|
Z_INIT_ENTRY_DEFINE(DEVICE_NAME_GET(dev_name), init_fn, \
|
||||||
(&DEVICE_NAME_GET(dev_name)), level, prio)
|
(&DEVICE_NAME_GET(dev_name)), level, prio)
|
||||||
|
|
||||||
#ifdef CONFIG_PM_DEVICE
|
|
||||||
#define Z_DEVICE_STATE_PM_INIT(node_id, dev_name) \
|
|
||||||
.pm = Z_PM_DEVICE_INIT(Z_DEVICE_STATE_NAME(dev_name).pm, node_id),
|
|
||||||
#define Z_DEVICE_DEFINE_PM_INIT(dev_name, pm_control_fn) \
|
|
||||||
.pm_control = (pm_control_fn), \
|
|
||||||
.pm = &Z_DEVICE_STATE_NAME(dev_name).pm,
|
|
||||||
#else
|
|
||||||
#define Z_DEVICE_STATE_PM_INIT(node_id, dev_name)
|
|
||||||
#define Z_DEVICE_DEFINE_PM_INIT(dev_name, pm_control_fn)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define Z_DEVICE_STATE_DEFINE(node_id, dev_name) \
|
|
||||||
static struct device_state Z_DEVICE_STATE_NAME(dev_name) \
|
|
||||||
__attribute__((__section__(".z_devstate"))) = { \
|
|
||||||
Z_DEVICE_STATE_PM_INIT(node_id, dev_name) \
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue