summaryrefslogtreecommitdiff
path: root/include/uapi/linux
diff options
context:
space:
mode:
authorJing Lin <jinglin@codeaurora.org>2015-09-14 16:31:08 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:51:34 -0700
commite897567177bb5dd5c18b5d65594fa4e5bf974e6f (patch)
tree95f898797e92d4a0a5c15c51dbdb768d8a4eb733 /include/uapi/linux
parentbf4d97091667121ba15f7539db1b43351f7276b1 (diff)
input: maxim_sti: move header to uapi
Move kernel data structures to driver and keep the data structures shared between kernel and user space in the header file. Move the header to uapi to make it accesible to user space. Fix checkpatch errors to replace deprecated functions and hardcoded error return values. Change-Id: Ic3312c11ddda9f02da9807a6243206d582281995 Signed-off-by: Jing Lin <jinglin@codeaurora.org>
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
+