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

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

commit 9f6666b75bb59ff7b1ca29585265860d8db0f065
Author: wangjianyu3 <wangjian...@xiaomi.com>
AuthorDate: Sun Jul 6 00:29:25 2025 +0800

    driver/touchscreen: add custom open/close
    
    Add custom open/close for lower to init/deinit device.
    
    Signed-off-by: wangjianyu3 <wangjian...@xiaomi.com>
---
 drivers/input/touchscreen_upper.c | 11 +++++++++++
 include/nuttx/input/touchscreen.h | 30 ++++++++++++++++++++++++++++++
 2 files changed, 41 insertions(+)

diff --git a/drivers/input/touchscreen_upper.c 
b/drivers/input/touchscreen_upper.c
index 12f7d1f5ff..9afcfcc82f 100644
--- a/drivers/input/touchscreen_upper.c
+++ b/drivers/input/touchscreen_upper.c
@@ -149,6 +149,11 @@ static int touch_open(FAR struct file *filep)
 
   filep->f_priv = openpriv;
   nxmutex_unlock(&upper->lock);
+  if (lower->open)
+    {
+      return lower->open(lower);
+    }
+
   return ret;
 }
 
@@ -161,6 +166,7 @@ static int touch_close(FAR struct file *filep)
   FAR struct touch_openpriv_s  *openpriv = filep->f_priv;
   FAR struct inode             *inode    = filep->f_inode;
   FAR struct touch_upperhalf_s *upper    = inode->i_private;
+  FAR struct touch_lowerhalf_s *lower    = upper->lower;
   int ret;
 
   ret = nxmutex_lock(&upper->lock);
@@ -181,6 +187,11 @@ static int touch_close(FAR struct file *filep)
   kmm_free(openpriv);
 
   nxmutex_unlock(&upper->lock);
+  if (lower->close)
+    {
+      return lower->close(lower);
+    }
+
   return ret;
 }
 
diff --git a/include/nuttx/input/touchscreen.h 
b/include/nuttx/input/touchscreen.h
index 26a39d68db..0f4190e323 100644
--- a/include/nuttx/input/touchscreen.h
+++ b/include/nuttx/input/touchscreen.h
@@ -273,6 +273,36 @@ struct touch_lowerhalf_s
 
   CODE ssize_t (*write)(FAR struct touch_lowerhalf_s *lower,
                         FAR const char *buffer, size_t buflen);
+
+  /**************************************************************************
+   * Name: open
+   *
+   * Description:
+   *   Users can use this interface to implement custom open().
+   *
+   * Arguments:
+   *   lower   - The instance of lower half of touchscreen device.
+   *
+   * Return Value:
+   *   Zero(OK) on success; a negated errno value on failure.
+   **************************************************************************/
+
+  CODE int (*open)(FAR struct touch_lowerhalf_s *lower);
+
+  /**************************************************************************
+   * Name: close
+   *
+   * Description:
+   *   Users can use this interface to implement custom close().
+   *
+   * Arguments:
+   *   lower   - The instance of lower half of touchscreen device.
+   *
+   * Return Value:
+   *   Zero(OK) on success; a negated errno value on failure.
+   **************************************************************************/
+
+  CODE int (*close)(FAR struct touch_lowerhalf_s *lower);
 };
 
 /****************************************************************************

Reply via email to