device: improve device data initialization
The Z_DEVICE_STATE_DEFINE macro was conditioned by CONFIG_PM_DEVICE. This is a problem if one day we have other conditional fields in the device state field that need to be initialized. The approach has been changed to have an always existing initializer for the PM field, that is a no-op if device PM is not enabled. Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
This commit is contained in:
parent
a89cc157af
commit
90465fe537
2 changed files with 13 additions and 13 deletions
|
@ -831,22 +831,22 @@ BUILD_ASSERT(sizeof(device_handle_t) == 2, "fix the linker scripts");
|
|||
(&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"))) = { \
|
||||
.pm = Z_PM_DEVICE_INIT(Z_DEVICE_STATE_NAME(dev_name), node_id) \
|
||||
Z_DEVICE_STATE_PM_INIT(node_id, dev_name) \
|
||||
};
|
||||
|
||||
#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_DEFINE(node_id, dev_name) \
|
||||
__pinned_bss \
|
||||
static struct device_state Z_DEVICE_STATE_NAME(dev_name);
|
||||
#define Z_DEVICE_DEFINE_PM_INIT(dev_name, pm_control_fn)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -126,8 +126,8 @@ struct pm_device {
|
|||
#define Z_PM_DEVICE_INIT(obj, node_id) \
|
||||
{ \
|
||||
.usage = 0U, \
|
||||
.lock = Z_MUTEX_INITIALIZER(obj.pm.lock), \
|
||||
.condvar = Z_CONDVAR_INITIALIZER(obj.pm.condvar), \
|
||||
.lock = Z_MUTEX_INITIALIZER(obj.lock), \
|
||||
.condvar = Z_CONDVAR_INITIALIZER(obj.condvar), \
|
||||
.state = PM_DEVICE_STATE_ACTIVE, \
|
||||
.flags = ATOMIC_INIT(COND_CODE_1( \
|
||||
DT_NODE_EXISTS(node_id), \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue