summaryrefslogtreecommitdiff
path: root/include/uapi/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/Kbuild1
-rw-r--r--include/uapi/linux/maxim_sti.h330
2 files changed, 331 insertions, 0 deletions
diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
index 1edbc56bfa3f..671e98bf2496 100644
--- a/include/uapi/linux/Kbuild
+++ b/include/uapi/linux/Kbuild
@@ -258,6 +258,7 @@ header-y += magic.h
header-y += major.h
header-y += map_to_7segment.h
header-y += matroxfb.h
+header-y += maxim_sti.h
header-y += mdio.h
header-y += mdss_rotator.h
header-y += media.h
diff --git a/include/uapi/linux/maxim_sti.h b/include/uapi/linux/maxim_sti.h
new file mode 100644
index 000000000000..77ae564d1548
--- /dev/null
+++ b/include/uapi/linux/maxim_sti.h
@@ -0,0 +1,330 @@
+/* drivers/input/touchscreen/maxim_sti.c
+ *
+ * Maxim SmartTouch Imager Touchscreen Driver
+ *
+ * Copyright (c)2013 Maxim Integrated Products, Inc.
+ * Copyright (C) 2013, NVIDIA Corporation. All Rights Reserved.
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __MAXIM_STI_H__
+#define __MAXIM_STI_H__
+
+#ifndef __KERNEL__
+#include <stdlib.h>
+#include "genetlink.h"
+#endif
+
+#define XSTR(s) STR(s)
+#define STR(s) #s
+
+#define DRV_VER_MAJOR 1
+#define DRV_VER_MINOR 1
+
+#define DRIVER_VERSION_STR XSTR(DRV_VER_MAJOR) "." XSTR(DRV_VER_MINOR)
+#define DRIVER_VERSION_NUM ((DRV_VER_MAJOR << 8) | DRV_VER_MINOR)
+
+#define DRIVER_VERSION DRIVER_VERSION_STR
+#define DRIVER_RELEASE "April 29, 2015"
+#define DRIVER_PROTOCOL 0x0102
+
+/****************************************************************************\
+* Netlink: common kernel/user space macros *
+\****************************************************************************/
+
+#define NL_BUF_SIZE 30720
+
+#define NL_ATTR_FIRST(nptr) \
+ ((struct nlattr *)((void *)nptr + NLMSG_HDRLEN + GENL_HDRLEN))
+#define NL_ATTR_LAST(nptr) \
+ ((struct nlattr *)((void *)nptr + \
+ NLMSG_ALIGN(((struct nlmsghdr *)nptr)->nlmsg_len)))
+#define NL_SIZE(nptr) NLMSG_ALIGN(((struct nlmsghdr *)nptr)->nlmsg_len)
+#define NL_TYPE(nptr) (((struct nlmsghdr *)nptr)->nlmsg_type)
+#define NL_SEQ(nptr) (((struct nlmsghdr *)nptr)->nlmsg_seq)
+#define NL_OK(nptr) (NL_TYPE(nptr) >= NLMSG_MIN_TYPE)
+#define NL_ATTR_VAL(aptr, type) ((type *)((void *)aptr + NLA_HDRLEN))
+#define NL_ATTR_NEXT(aptr) \
+ ((struct nlattr *)((void *)aptr + \
+ NLA_ALIGN(((struct nlattr *)aptr)->nla_len)))
+#define GENL_CMP(name1, name2) strncmp(name1, name2, GENL_NAMSIZ)
+#define GENL_COPY(name1, name2) strlcpy(name1, name2, GENL_NAMSIZ)
+#define GENL_CHK(name) (strlen(name) > (GENL_NAMSIZ - 1))
+#define MSG_TYPE(nptr) NL_ATTR_FIRST(nptr)->nla_type
+#define MSG_PAYLOAD(nptr) NL_ATTR_VAL(NL_ATTR_FIRST(nptr), void)
+
+/****************************************************************************\
+* Netlink: common kernel/user space inline functions *
+\****************************************************************************/
+
+static inline void
+nl_msg_init(void *buf, __u16 family_id, __u32 sequence, __u8 dst)
+{
+ struct nlmsghdr *nlh = (struct nlmsghdr *)buf;
+ struct genlmsghdr *genl = (struct genlmsghdr *)(buf + NLMSG_HDRLEN);
+
+ memset(buf, 0, NLMSG_HDRLEN + GENL_HDRLEN);
+ nlh->nlmsg_type = family_id;
+ nlh->nlmsg_flags = NLM_F_REQUEST;
+ nlh->nlmsg_seq = sequence;
+ nlh->nlmsg_len = NLMSG_HDRLEN + GENL_HDRLEN;
+ genl->cmd = dst;
+}
+
+static inline void
+*nl_alloc_attr(void *buf, __u16 type, __u16 len)
+{
+ struct nlmsghdr *nlh = (struct nlmsghdr *)buf;
+ struct nlattr *attr = NL_ATTR_LAST(nlh);
+
+ if ((NL_SIZE(buf) + NLMSG_ALIGN(NLA_HDRLEN + len)) > NL_BUF_SIZE)
+ return NULL;
+
+ attr->nla_type = type;
+ attr->nla_len = NLA_HDRLEN + len;
+ nlh->nlmsg_len += NLMSG_ALIGN(attr->nla_len);
+ return NL_ATTR_VAL(attr, void);
+}
+
+static inline int
+nl_add_attr(void *buf, __u16 type, void *ptr, __u16 len)
+{
+ void *a_ptr;
+
+ a_ptr = nl_alloc_attr(buf, type, len);
+ if (a_ptr == NULL)
+ return -EPERM;
+ memcpy(a_ptr, ptr, len);
+ return 0;
+}
+
+/****************************************************************************\
+* Netlink: multicast groups enum and name strings *
+\****************************************************************************/
+
+enum {
+ MC_DRIVER,
+ MC_FUSION,
+ MC_EVENT_BROADCAST,
+ MC_GROUPS,
+};
+
+#define MC_DRIVER_NAME "driver"
+#define MC_FUSION_NAME "fusion"
+#define MC_EVENT_BROADCAST_NAME "event_broadcast"
+
+#define NL_FAMILY_VERSION 1
+
+#define TF_FAMILY_NAME "touch_fusion"
+
+/****************************************************************************\
+* Netlink: common parameter and message definitions *
+\****************************************************************************/
+
+enum {
+ DR_STATE_BASIC,
+ DR_STATE_ACTIVE,
+ DR_STATE_SUSPEND,
+ DR_STATE_RESUME,
+ DR_STATE_FAULT,
+};
+
+enum {
+ DR_INPUT_FINGER,
+ DR_INPUT_STYLUS,
+ DR_INPUT_ERASER,
+};
+
+enum {
+ DR_IRQ_FALLING_EDGE,
+ DR_IRQ_RISING_EDGE,
+};
+
+enum {
+ DR_ADD_MC_GROUP,
+ DR_ECHO_REQUEST,
+ DR_CHIP_READ,
+ DR_CHIP_WRITE,
+ DR_CHIP_RESET,
+ DR_GET_IRQLINE,
+ DR_DELAY,
+ DR_CHIP_ACCESS_METHOD,
+ DR_CONFIG_IRQ,
+ DR_CONFIG_INPUT,
+ DR_CONFIG_WATCHDOG,
+ DR_DECONFIG,
+ DR_INPUT,
+ DR_RESUME_ACK,
+ DR_LEGACY_FWDL,
+ DR_LEGACY_ACCELERATION,
+ DR_HANDSHAKE,
+ DR_CONFIG_FW,
+ DR_IDLE,
+ DR_SYSFS_ACK,
+ DR_TF_STATUS,
+};
+
+struct __attribute__ ((__packed__)) dr_add_mc_group {
+ __u8 number;
+ char name[GENL_NAMSIZ];
+};
+
+struct __attribute__ ((__packed__)) dr_echo_request {
+ __u32 cookie;
+};
+
+struct __attribute__ ((__packed__)) dr_chip_read {
+ __u16 address;
+ __u16 length;
+};
+
+struct __attribute__ ((__packed__)) dr_chip_write {
+ __u16 address;
+ __u16 length;
+ __u8 data[0];
+};
+
+struct __attribute__ ((__packed__)) dr_chip_reset {
+ __u8 state;
+};
+
+struct __attribute__ ((__packed__)) dr_delay {
+ __u32 period;
+};
+
+struct __attribute__ ((__packed__)) dr_chip_access_method {
+ __u8 method;
+};
+
+#define MAX_IRQ_PARAMS 37
+struct __attribute__ ((__packed__)) dr_config_irq {
+ __u8 irq_method;
+ __u8 irq_edge;
+ __u8 irq_params;
+ __u16 irq_param[MAX_IRQ_PARAMS];
+};
+
+struct __attribute__ ((__packed__)) dr_config_input {
+ __u16 x_range;
+ __u16 y_range;
+};
+
+struct __attribute__ ((__packed__)) dr_config_watchdog {
+ __u32 pid;
+};
+
+struct __attribute__ ((__packed__)) dr_input_event {
+ __u8 id;
+ __u8 tool_type;
+ __u16 x;
+ __u16 y;
+ __u8 z;
+};
+
+#define MAX_INPUT_EVENTS 10
+struct __attribute__ ((__packed__)) dr_input {
+ struct dr_input_event event[MAX_INPUT_EVENTS];
+ __u8 events;
+};
+
+struct __attribute__ ((__packed__)) dr_legacy_acceleration {
+ __u8 enable;
+};
+
+struct __attribute__ ((__packed__)) dr_handshake {
+ __u16 tf_ver;
+ __u16 chip_id;
+};
+
+#define DR_SYSFS_UPDATE_NONE 0x0000
+#define DR_SYSFS_UPDATE_BIT_GLOVE 0
+#define DR_SYSFS_UPDATE_BIT_CHARGER 1
+#define DR_SYSFS_UPDATE_BIT_LCD_FPS 2
+
+#define DR_SYSFS_ACK_GLOVE 0x5A5A5A5A
+#define DR_SYSFS_ACK_CHARGER 0xA5A5A5A5
+#define DR_SYSFS_ACK_LCD_FPS 0xC3C3C3C3
+
+enum {
+ DR_NO_CHARGER,
+ DR_WIRED_CHARGER,
+ DR_WIRELESS_CHARGER,
+};
+
+struct __attribute__ ((__packed__)) dr_sysfs_ack {
+ __u32 type;
+};
+
+struct __attribute__ ((__packed__)) dr_config_fw {
+ __u16 fw_ver;
+ __u16 fw_protocol;
+};
+
+struct __attribute__ ((__packed__)) dr_idle {
+ __u8 idle;
+};
+
+#define TF_STATUS_DEFAULT_LOADED (1 << 0)
+#define TF_STATUS_BUSY (1 << 1)
+
+struct __attribute__ ((__packed__)) dr_tf_status {
+ __u32 tf_status;
+};
+
+enum {
+ FU_ECHO_RESPONSE,
+ FU_CHIP_READ_RESULT,
+ FU_IRQLINE_STATUS,
+ FU_ASYNC_DATA,
+ FU_RESUME,
+ FU_HANDSHAKE_RESPONSE,
+ FU_SYSFS_INFO,
+};
+
+struct __attribute__ ((__packed__)) fu_echo_response {
+ __u32 cookie;
+ __u8 driver_state;
+};
+
+struct __attribute__ ((__packed__)) fu_chip_read_result {
+ __u16 address;
+ __u16 length;
+ __u8 data[0];
+};
+
+struct __attribute__ ((__packed__)) fu_irqline_status {
+ __u8 status;
+};
+
+struct __attribute__ ((__packed__)) fu_async_data {
+ __u16 address;
+ __u16 length;
+ __u16 status;
+ __u8 data[0];
+};
+
+struct __attribute__ ((__packed__)) fu_handshake_response {
+ __u16 driver_ver;
+ __u16 panel_id;
+ __u16 driver_protocol;
+};
+
+struct __attribute__ ((__packed__)) fu_sysfs_info {
+ __u8 type;
+ __u16 glove_value;
+ __u16 charger_value;
+ __u16 lcd_fps_value;
+};
+
+#endif
+