ITE drivers/kscan: support tests/driver/kscan/kscan_api
Add kscan0 to support tests/driver/kscan/kscan_api.
When running the tests code on it8xxx2_evb, it shows fatal
error: IRQ is enabled. We find that once polling_task() is
created and executed, the KSI interrupt will be enabled and
before we call irq_connect_dynamic(), so we switch both
function sequence.
Signed-off-by: Ruibin Chang <Ruibin.Chang@ite.com.tw>
diff --git a/boards/riscv/it8xxx2_evb/it8xxx2_evb.dts b/boards/riscv/it8xxx2_evb/it8xxx2_evb.dts
index 326cbc0..c60f4c5 100644
--- a/boards/riscv/it8xxx2_evb/it8xxx2_evb.dts
+++ b/boards/riscv/it8xxx2_evb/it8xxx2_evb.dts
@@ -30,6 +30,7 @@
aliases {
led0 = &led0;
+ kscan0 = &kscan0;
};
leds {
diff --git a/drivers/kscan/kscan_ite_it8xxx2.c b/drivers/kscan/kscan_ite_it8xxx2.c
index ddd8329..1fc025a 100644
--- a/drivers/kscan/kscan_ite_it8xxx2.c
+++ b/drivers/kscan/kscan_ite_it8xxx2.c
@@ -492,6 +492,10 @@
/* Enable keyboard scan loop */
atomic_set(&data->enable_scan, 1);
+ irq_connect_dynamic(DT_INST_IRQN(0), 0,
+ (void (*)(const void *))keyboard_raw_interrupt,
+ (const void *)dev, 0);
+
/* Create keyboard scan task */
k_thread_create(&data->thread, data->thread_stack,
TASK_STACK_SIZE,
@@ -499,10 +503,6 @@
(void *)dev, NULL, NULL,
K_PRIO_COOP(4), 0, K_NO_WAIT);
- irq_connect_dynamic(DT_INST_IRQN(0), 0,
- (void (*)(const void *))keyboard_raw_interrupt,
- (const void *)dev, 0);
-
return 0;
}