You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by pk...@apache.org on 2022/03/21 07:03:22 UTC

[incubator-nuttx] 05/07: input/keyboard: Make each instance could have a different buffer size

This is an automated email from the ASF dual-hosted git repository.

pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 7ea14aa8f8ee66ab95fd3b30177ae9d33ce6de78
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sun Mar 20 00:06:52 2022 +0800

    input/keyboard: Make each instance could have a different buffer size
    
    just like what is done for touch screen driver
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 drivers/input/Kconfig          | 18 ++++++++----------
 drivers/input/keyboard_upper.c |  6 ++++--
 drivers/input/uinput.c         |  4 +++-
 include/nuttx/input/keyboard.h |  2 +-
 4 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/drivers/input/Kconfig b/drivers/input/Kconfig
index 3f794ff..c04351f 100644
--- a/drivers/input/Kconfig
+++ b/drivers/input/Kconfig
@@ -40,16 +40,6 @@ config INPUT_KEYBOARD
 	select MM_CIRCBUF
 	default n
 
-if INPUT_KEYBOARD
-
-config INPUT_KEYBOARD_BUFFSIZE
-	int "Number keyboard data buffer"
-	default 64
-	---help---
-		Maximum number of keyboard data buffer
-
-endif # INPUT_KEYBOARD
-
 config INPUT_UINPUT
 	bool
 	default n
@@ -100,6 +90,14 @@ config UINPUT_KEYBOARD
 	---help---
 		Enable support virtual input keyboard device driver
 
+if UINPUT_KEYBOARD
+
+config UINPUT_KEYBOARD_BUFNUMBER
+	int "Number keyboard data buffer"
+	default 8
+
+endif
+
 config INPUT_MAX11802
 	bool "MAX11802 touchscreen controller"
 	default n
diff --git a/drivers/input/keyboard_upper.c b/drivers/input/keyboard_upper.c
index 5b69ee0..2ff5d2b 100644
--- a/drivers/input/keyboard_upper.c
+++ b/drivers/input/keyboard_upper.c
@@ -60,6 +60,7 @@ struct keyboard_upperhalf_s
   struct list_node head;    /* Head of list */
   FAR struct keyboard_lowerhalf_s
                   *lower;   /* A pointer of lower half instance */
+  uint8_t          nums;    /* Number of buffer */
 };
 
 /****************************************************************************
@@ -148,7 +149,7 @@ static int keyboard_open(FAR struct file *filep)
 
   /* Initializes the buffer for each open file */
 
-  ret = circbuf_init(&opriv->circ, NULL, CONFIG_INPUT_KEYBOARD_BUFFSIZE);
+  ret = circbuf_init(&opriv->circ, NULL, upper->nums);
   if (ret < 0)
     {
       kmm_free(opriv);
@@ -342,7 +343,7 @@ static ssize_t keyboard_write(FAR struct file *filep,
  ****************************************************************************/
 
 int keyboard_register(FAR struct keyboard_lowerhalf_s *lower,
-                      FAR const char *path)
+                      FAR const char *path, uint8_t nums)
 {
   FAR struct keyboard_upperhalf_s *upper;
   int ret;
@@ -362,6 +363,7 @@ int keyboard_register(FAR struct keyboard_lowerhalf_s *lower,
     }
 
   upper->lower = lower;
+  upper->nums  = nums;
   lower->priv  = upper;
   list_initialize(&upper->head);
   nxsem_init(&upper->exclsem, 0, 1);
diff --git a/drivers/input/uinput.c b/drivers/input/uinput.c
index 7596fd4..d298a1a 100644
--- a/drivers/input/uinput.c
+++ b/drivers/input/uinput.c
@@ -588,7 +588,9 @@ int uinput_keyboard_initialize(void)
 
   /* Regiest Touchscreen device */
 
-  ret = keyboard_register(&ukbd_lower->lower, "/dev/" UINPUT_NAME_KEYBOARD);
+  ret = keyboard_register(&ukbd_lower->lower,
+                          "/dev/" UINPUT_NAME_KEYBOARD,
+                          CONFIG_UINPUT_KEYBOARD_BUFNUMBER);
   if (ret < 0)
     {
       kmm_free(ukbd_lower);
diff --git a/include/nuttx/input/keyboard.h b/include/nuttx/input/keyboard.h
index 3b1c51f..27df59d 100644
--- a/include/nuttx/input/keyboard.h
+++ b/include/nuttx/input/keyboard.h
@@ -80,7 +80,7 @@ void keyboard_event(FAR struct keyboard_lowerhalf_s *lower, uint32_t keycode,
  ****************************************************************************/
 
 int keyboard_register(FAR struct keyboard_lowerhalf_s *lower,
-                      FAR const char *path);
+                      FAR const char *path, uint8_t nums);
 
 /****************************************************************************
  * Name: keyboard_register