root/drivers/input/rmi4/rmi_driver.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. rmi_f03_overwrite_button
  2. rmi_f03_commit_buttons
  3. rmi_f34_create_sysfs
  4. rmi_f34_remove_sysfs

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Copyright (c) 2011-2016 Synaptics Incorporated
   4  * Copyright (c) 2011 Unixphere
   5  */
   6 
   7 #ifndef _RMI_DRIVER_H
   8 #define _RMI_DRIVER_H
   9 
  10 #include <linux/ctype.h>
  11 #include <linux/hrtimer.h>
  12 #include <linux/ktime.h>
  13 #include <linux/input.h>
  14 #include "rmi_bus.h"
  15 
  16 #define SYNAPTICS_INPUT_DEVICE_NAME "Synaptics RMI4 Touch Sensor"
  17 #define SYNAPTICS_VENDOR_ID 0x06cb
  18 
  19 #define GROUP(_attrs) { \
  20         .attrs = _attrs,  \
  21 }
  22 
  23 #define PDT_PROPERTIES_LOCATION 0x00EF
  24 #define BSR_LOCATION 0x00FE
  25 
  26 #define RMI_PDT_PROPS_HAS_BSR 0x02
  27 
  28 #define NAME_BUFFER_SIZE 256
  29 
  30 #define RMI_PDT_ENTRY_SIZE 6
  31 #define RMI_PDT_FUNCTION_VERSION_MASK   0x60
  32 #define RMI_PDT_INT_SOURCE_COUNT_MASK   0x07
  33 
  34 #define PDT_START_SCAN_LOCATION 0x00e9
  35 #define PDT_END_SCAN_LOCATION   0x0005
  36 #define RMI4_END_OF_PDT(id) ((id) == 0x00 || (id) == 0xff)
  37 
  38 struct pdt_entry {
  39         u16 page_start;
  40         u8 query_base_addr;
  41         u8 command_base_addr;
  42         u8 control_base_addr;
  43         u8 data_base_addr;
  44         u8 interrupt_source_count;
  45         u8 function_version;
  46         u8 function_number;
  47 };
  48 
  49 #define RMI_REG_DESC_PRESENSE_BITS      (32 * BITS_PER_BYTE)
  50 #define RMI_REG_DESC_SUBPACKET_BITS     (37 * BITS_PER_BYTE)
  51 
  52 /* describes a single packet register */
  53 struct rmi_register_desc_item {
  54         u16 reg;
  55         unsigned long reg_size;
  56         u8 num_subpackets;
  57         unsigned long subpacket_map[BITS_TO_LONGS(
  58                                 RMI_REG_DESC_SUBPACKET_BITS)];
  59 };
  60 
  61 /*
  62  * describes the packet registers for a particular type
  63  * (ie query, control, data)
  64  */
  65 struct rmi_register_descriptor {
  66         unsigned long struct_size;
  67         unsigned long presense_map[BITS_TO_LONGS(RMI_REG_DESC_PRESENSE_BITS)];
  68         u8 num_registers;
  69         struct rmi_register_desc_item *registers;
  70 };
  71 
  72 int rmi_read_register_desc(struct rmi_device *d, u16 addr,
  73                                 struct rmi_register_descriptor *rdesc);
  74 const struct rmi_register_desc_item *rmi_get_register_desc_item(
  75                                 struct rmi_register_descriptor *rdesc, u16 reg);
  76 
  77 /*
  78  * Calculate the total size of all of the registers described in the
  79  * descriptor.
  80  */
  81 size_t rmi_register_desc_calc_size(struct rmi_register_descriptor *rdesc);
  82 int rmi_register_desc_calc_reg_offset(
  83                         struct rmi_register_descriptor *rdesc, u16 reg);
  84 bool rmi_register_desc_has_subpacket(const struct rmi_register_desc_item *item,
  85                         u8 subpacket);
  86 
  87 bool rmi_is_physical_driver(struct device_driver *);
  88 int rmi_register_physical_driver(void);
  89 void rmi_unregister_physical_driver(void);
  90 void rmi_free_function_list(struct rmi_device *rmi_dev);
  91 struct rmi_function *rmi_find_function(struct rmi_device *rmi_dev, u8 number);
  92 int rmi_enable_sensor(struct rmi_device *rmi_dev);
  93 int rmi_scan_pdt(struct rmi_device *rmi_dev, void *ctx,
  94                  int (*callback)(struct rmi_device *rmi_dev, void *ctx,
  95                  const struct pdt_entry *entry));
  96 int rmi_probe_interrupts(struct rmi_driver_data *data);
  97 void rmi_enable_irq(struct rmi_device *rmi_dev, bool clear_wake);
  98 void rmi_disable_irq(struct rmi_device *rmi_dev, bool enable_wake);
  99 int rmi_init_functions(struct rmi_driver_data *data);
 100 int rmi_initial_reset(struct rmi_device *rmi_dev, void *ctx,
 101                       const struct pdt_entry *pdt);
 102 
 103 const char *rmi_f01_get_product_ID(struct rmi_function *fn);
 104 
 105 #ifdef CONFIG_RMI4_F03
 106 int rmi_f03_overwrite_button(struct rmi_function *fn, unsigned int button,
 107                              int value);
 108 void rmi_f03_commit_buttons(struct rmi_function *fn);
 109 #else
 110 static inline int rmi_f03_overwrite_button(struct rmi_function *fn,
 111                                            unsigned int button, int value)
 112 {
 113         return 0;
 114 }
 115 static inline void rmi_f03_commit_buttons(struct rmi_function *fn) {}
 116 #endif
 117 
 118 #ifdef CONFIG_RMI4_F34
 119 int rmi_f34_create_sysfs(struct rmi_device *rmi_dev);
 120 void rmi_f34_remove_sysfs(struct rmi_device *rmi_dev);
 121 #else
 122 static inline int rmi_f34_create_sysfs(struct rmi_device *rmi_dev)
 123 {
 124         return 0;
 125 }
 126 
 127 static inline void rmi_f34_remove_sysfs(struct rmi_device *rmi_dev)
 128 {
 129 }
 130 #endif /* CONFIG_RMI_F34 */
 131 
 132 extern struct rmi_function_handler rmi_f01_handler;
 133 extern struct rmi_function_handler rmi_f03_handler;
 134 extern struct rmi_function_handler rmi_f11_handler;
 135 extern struct rmi_function_handler rmi_f12_handler;
 136 extern struct rmi_function_handler rmi_f30_handler;
 137 extern struct rmi_function_handler rmi_f34_handler;
 138 extern struct rmi_function_handler rmi_f54_handler;
 139 extern struct rmi_function_handler rmi_f55_handler;
 140 #endif

/* [<][>][^][v][top][bottom][index][help] */