summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuEe-GUI <[email protected]>2025-12-22 12:58:36 +0800
committerR b b666 <[email protected]>2025-12-22 13:24:41 +0800
commit9370f81ad7dc90f1312e1ea527d8b0f01e682b5c (patch)
treed9da5f1230c8bfdca08d8b15a9bf521c7dff9a2c
parentdd3cee9646a47e571d0ff1d9d169cde95686e9d5 (diff)
[dm][include] fixup loss' header
Signed-off-by: GuEe-GUI <[email protected]>
-rwxr-xr-xcomponents/drivers/include/drivers/backlight.h73
-rwxr-xr-xcomponents/drivers/include/drivers/input.h153
-rwxr-xr-xcomponents/drivers/include/drivers/input_uapi.h67
-rw-r--r--components/drivers/include/rtdevice.h7
4 files changed, 300 insertions, 0 deletions
diff --git a/components/drivers/include/drivers/backlight.h b/components/drivers/include/drivers/backlight.h
new file mode 100755
index 0000000000..00e43c974b
--- /dev/null
+++ b/components/drivers/include/drivers/backlight.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2006-2023, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2023-02-25 GuEe-GUI the first version
+ */
+
+#ifndef __BACKLIGHT_H__
+#define __BACKLIGHT_H__
+
+#include <rthw.h>
+#include <rtdef.h>
+
+struct rt_backlight_ops;
+
+enum rt_backlight_power
+{
+ RT_BACKLIGHT_POWER_UNBLANK,
+ RT_BACKLIGHT_POWER_NORMAL,
+ RT_BACKLIGHT_POWER_SUSPEND,
+ RT_BACKLIGHT_POWER_POWERDOWN,
+
+ RT_BACKLIGHT_POWER_NR,
+};
+
+struct rt_backlight_properties
+{
+ rt_uint32_t brightness;
+ rt_uint32_t max_brightness;
+
+ enum rt_backlight_power power;
+};
+
+struct rt_backlight_device
+{
+ struct rt_device parent;
+
+ struct rt_backlight_properties props;
+
+ const struct rt_backlight_ops *ops;
+
+ struct rt_mutex lock;
+ void *priv;
+};
+
+struct rt_backlight_ops
+{
+ rt_err_t (*update_status)(struct rt_backlight_device *);
+ rt_err_t (*get_brightness)(struct rt_backlight_device *, rt_uint32_t *out_brightness);
+};
+
+rt_err_t rt_backlight_register(struct rt_backlight_device *bl);
+rt_err_t rt_backlight_unregister(struct rt_backlight_device *bl);
+
+rt_err_t rt_backlight_set_power(struct rt_backlight_device *bl, enum rt_backlight_power power);
+rt_err_t rt_backlight_get_power(struct rt_backlight_device *bl, enum rt_backlight_power *out_power);
+rt_err_t rt_backlight_set_brightness(struct rt_backlight_device *bl, rt_uint32_t brightness);
+rt_err_t rt_backlight_get_brightness(struct rt_backlight_device *bl, rt_uint32_t *out_brightness);
+
+rt_inline rt_uint32_t rt_backlight_power_brightness(struct rt_backlight_device *bl)
+{
+ if (bl->props.power != RT_BACKLIGHT_POWER_UNBLANK)
+ {
+ return 0;
+ }
+
+ return bl->props.brightness;
+}
+
+#endif /* __BACKLIGHT_H__ */
diff --git a/components/drivers/include/drivers/input.h b/components/drivers/include/drivers/input.h
new file mode 100755
index 0000000000..848e522153
--- /dev/null
+++ b/components/drivers/include/drivers/input.h
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2006-2022, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-3-08 GuEe-GUI the first version
+ */
+
+#ifndef __INPUT_H__
+#define __INPUT_H__
+
+#include <rtthread.h>
+
+#include <bitmap.h>
+#include <drivers/dev_touch.h>
+#include <dt-bindings/input/event-codes.h>
+
+struct rt_input_poller;
+struct rt_input_absinfo;
+
+struct rt_input_event
+{
+ rt_tick_t tick;
+
+ rt_uint16_t type;
+ rt_uint16_t code;
+ rt_int32_t value;
+};
+
+struct rt_input_device
+{
+ struct rt_device parent;
+
+ RT_BITMAP_DECLARE(cap, EV_CNT);
+ RT_BITMAP_DECLARE(key_map, KEY_CNT);
+ RT_BITMAP_DECLARE(rel_map, REL_CNT);
+ RT_BITMAP_DECLARE(abs_map, ABS_CNT);
+
+ rt_list_t list;
+ rt_list_t handler_nodes;
+ struct rt_spinlock lock;
+
+ rt_err_t (*trigger)(struct rt_input_device *idev,
+ rt_uint16_t type, rt_uint16_t code, rt_int32_t value);
+
+ struct rt_input_poller *poller;
+ struct rt_input_absinfo *absinfo;
+#ifdef RT_INPUT_TOUCHSCREEN
+ void *touch;
+#endif
+#ifdef RT_INPUT_UAPI
+ void *uapi;
+#endif
+};
+
+struct rt_input_handler
+{
+ rt_list_t list;
+ struct rt_input_device *idev;
+
+ rt_bool_t (*identify)(struct rt_input_handler *handler, struct rt_input_device *idev);
+ rt_bool_t (*callback)(struct rt_input_handler *handler, struct rt_input_event *ev);
+
+ void *priv;
+};
+
+struct rt_input_poller
+{
+#define RT_INPUT_POLL_INTERVAL_DEFAULT 17 /* 60fps */
+ rt_uint32_t interval;
+ struct rt_timer timer;
+
+ void (*poll)(struct rt_input_device *idev);
+};
+
+struct rt_input_absinfo
+{
+ rt_int32_t value;
+ rt_int32_t minimum;
+ rt_int32_t maximum;
+ rt_int32_t fuzz;
+ rt_int32_t flat;
+ rt_int32_t resolution;
+};
+
+rt_err_t rt_input_device_register(struct rt_input_device *idev);
+rt_err_t rt_input_device_unregister(struct rt_input_device *idev);
+
+rt_err_t rt_input_set_capability(struct rt_input_device *idev,
+ rt_uint16_t type, rt_uint16_t code);
+
+rt_err_t rt_input_set_absinfo(struct rt_input_device *idev, rt_uint32_t axis,
+ rt_int32_t min, rt_int32_t max, rt_int32_t fuzz, rt_int32_t flat);
+
+rt_err_t rt_input_setup_touch(struct rt_input_device *idev,
+ rt_uint32_t num_slots, struct rt_touch_info *info);
+rt_err_t rt_input_parse_touch_position(struct rt_input_device *idev,
+ rt_uint32_t *out_x, rt_uint32_t *out_y);
+
+rt_err_t rt_input_setup_polling(struct rt_input_device *idev,
+ void (*work)(struct rt_input_device *idev));
+rt_err_t rt_input_set_poll_interval(struct rt_input_device *idev,
+ rt_uint32_t interval_ms);
+
+void rt_input_remove_config(struct rt_input_device *idev);
+
+rt_err_t rt_input_trigger(struct rt_input_device *idev,
+ rt_uint16_t type, rt_uint16_t code, rt_int32_t value);
+
+void rt_input_event(struct rt_input_device *idev,
+ rt_uint16_t type, rt_uint16_t code, rt_int32_t value);
+
+rt_inline void rt_input_report_key(struct rt_input_device *idev,
+ rt_uint16_t code, rt_int32_t value)
+{
+ rt_input_event(idev, EV_KEY, code, !!value);
+}
+
+rt_inline void rt_input_report_rel(struct rt_input_device *idev,
+ rt_uint16_t code, rt_int32_t value)
+{
+ rt_input_event(idev, EV_REL, code, value);
+}
+
+rt_inline void rt_input_report_abs(struct rt_input_device *idev,
+ rt_uint16_t code, rt_int32_t value)
+{
+ rt_input_event(idev, EV_ABS, code, value);
+}
+
+rt_inline void rt_input_report_touch_slot(struct rt_input_device *idev,
+ rt_uint32_t slot)
+{
+ rt_input_event(idev, EV_ABS, ABS_MT_SLOT, slot);
+}
+
+rt_bool_t rt_input_report_touch_inactive(struct rt_input_device *idev,
+ rt_bool_t active);
+
+void rt_input_report_touch_position(struct rt_input_device *idev,
+ rt_uint32_t x, rt_uint32_t y, rt_bool_t multitouch);
+
+rt_inline void rt_input_sync(struct rt_input_device *idev)
+{
+ rt_input_event(idev, EV_SYN, SYN_REPORT, 0);
+}
+
+rt_err_t rt_input_add_handler(struct rt_input_handler *handler);
+rt_err_t rt_input_del_handler(struct rt_input_handler *handler);
+
+#endif /* __INPUT_H__ */
diff --git a/components/drivers/include/drivers/input_uapi.h b/components/drivers/include/drivers/input_uapi.h
new file mode 100755
index 0000000000..0cf5811e92
--- /dev/null
+++ b/components/drivers/include/drivers/input_uapi.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2006-2022, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2022-3-08 GuEe-GUI the first version
+ */
+
+#ifndef __INPUT_UAPI_H__
+#define __INPUT_UAPI_H__
+
+#include <stdint.h>
+#include <sys/time.h>
+#include <sys/ioctl.h>
+
+#include <dt-bindings/input/event-codes.h>
+
+struct input_event
+{
+ struct timeval time;
+ uint16_t type;
+ uint16_t code;
+ int32_t value;
+};
+
+#define EV_VERSION 0x010001
+
+struct input_id
+{
+ uint16_t bustype;
+ uint16_t vendor;
+ uint16_t product;
+ uint16_t version;
+};
+
+struct input_absinfo
+{
+ int32_t value;
+ int32_t minimum;
+ int32_t maximum;
+ int32_t fuzz;
+ int32_t flat;
+ int32_t resolution;
+};
+
+/* Get driver version */
+#define EVIOCGVERSION _IOR('E', 0x01, int)
+/* Get device ID */
+#define EVIOCGID _IOR('E', 0x02, struct input_id)
+
+/* Get device name */
+#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len)
+/* Get device properties */
+#define EVIOCGPROP(len) _IOC(_IOC_READ, 'E', 0x09, len)
+
+/* Get event bits */
+#define EVIOCGBIT(ev, len) _IOC(_IOC_READ, 'E', 0x20 + (ev), len)
+
+/* Get abs value/limits */
+#define EVIOCGABS(abs) _IOR('E', 0x40 + (abs), struct input_absinfo)
+
+/* Grab/Release device */
+#define EVIOCGRAB _IOW('E', 0x90, int)
+
+#endif /* __INPUT_UAPI_H__ */
diff --git a/components/drivers/include/rtdevice.h b/components/drivers/include/rtdevice.h
index c260fa448b..ce7d730793 100644
--- a/components/drivers/include/rtdevice.h
+++ b/components/drivers/include/rtdevice.h
@@ -46,6 +46,13 @@ extern "C" {
#include "drivers/core/power_domain.h"
#include "drivers/platform.h"
+#ifdef RT_USING_GRAPHIC
+#include "drivers/graphic.h"
+#ifdef RT_GRAPHIC_BACKLIGHT
+#include "drivers/backlight.h"
+#endif /* RT_GRAPHIC_BACKLIGHT */
+#endif /* RT_USING_GRAPHIC */
+
#ifdef RT_USING_ATA
#ifdef RT_ATA_AHCI
#include "drivers/ahci.h"