aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--app/src/kscan_sideband_behaviors.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/app/src/kscan_sideband_behaviors.c b/app/src/kscan_sideband_behaviors.c
index 9f38e0fbcf..eab7f04302 100644
--- a/app/src/kscan_sideband_behaviors.c
+++ b/app/src/kscan_sideband_behaviors.c
@@ -168,16 +168,11 @@ static int ksbb_init(const struct device *dev) {
return -ENODEV;
}
- if (config->auto_enable) {
-#if !IS_ENABLED(CONFIG_PM_DEVICE)
- kscan_config(config->kscan, &ksbb_inner_kscan_callback);
- kscan_enable_callback(config->kscan);
-#else
- ksbb_pm_action(dev, PM_DEVICE_ACTION_RESUME);
- } else {
+#if IS_ENABLED(CONFIG_PM_DEVICE)
+ if (!config->auto_enable) {
pm_device_init_suspended(dev);
-#endif
}
+#endif
return 0;
}
@@ -196,6 +191,16 @@ static const struct kscan_driver_api ksbb_api = {
}
#define KSBB_INST(n) \
+ COND_CODE_1(DT_INST_PROP_OR(n, auto_enable, false), (static int ksbb_auto_enable_##n(void) { \
+ const struct device *dev = DEVICE_DT_GET(DT_DRV_INST(n)); \
+ COND_CODE_1(IS_ENABLED(CONFIG_PM_DEVICE), \
+ (ksbb_pm_action(dev, PM_DEVICE_ACTION_RESUME);), \
+ (const struct ksbb_config *config = dev->config; \
+ kscan_config(config->kscan, &ksbb_inner_kscan_callback); \
+ kscan_enable_callback(config->kscan);)) \
+ return 0; \
+ } SYS_INIT(ksbb_auto_enable_##n, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY);), \
+ ()) \
static struct ksbb_entry entries_##n[] = { \
DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP(n, ENTRY, (, ))}; \
const struct ksbb_config ksbb_config_##n = { \