root/drivers/macintosh/ams/ams.h

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

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #include <linux/i2c.h>
   3 #include <linux/input-polldev.h>
   4 #include <linux/kthread.h>
   5 #include <linux/mutex.h>
   6 #include <linux/spinlock.h>
   7 #include <linux/types.h>
   8 #include <linux/of_device.h>
   9 
  10 enum ams_irq {
  11         AMS_IRQ_FREEFALL = 0x01,
  12         AMS_IRQ_SHOCK = 0x02,
  13         AMS_IRQ_GLOBAL = 0x04,
  14         AMS_IRQ_ALL =
  15                 AMS_IRQ_FREEFALL |
  16                 AMS_IRQ_SHOCK |
  17                 AMS_IRQ_GLOBAL,
  18 };
  19 
  20 struct ams {
  21         /* Locks */
  22         spinlock_t irq_lock;
  23         struct mutex lock;
  24 
  25         /* General properties */
  26         struct device_node *of_node;
  27         struct platform_device *of_dev;
  28         char has_device;
  29         char vflag;
  30         u32 orient1;
  31         u32 orient2;
  32 
  33         /* Interrupt worker */
  34         struct work_struct worker;
  35         u8 worker_irqs;
  36 
  37         /* Implementation
  38          *
  39          * Only call these functions with the main lock held.
  40          */
  41         void (*exit)(void);
  42 
  43         void (*get_xyz)(s8 *x, s8 *y, s8 *z);
  44         u8 (*get_vendor)(void);
  45 
  46         void (*clear_irq)(enum ams_irq reg);
  47 
  48 #ifdef CONFIG_SENSORS_AMS_I2C
  49         /* I2C properties */
  50         struct i2c_client *i2c_client;
  51 #endif
  52 
  53         /* Joystick emulation */
  54         struct input_polled_dev *idev;
  55         __u16 bustype;
  56 
  57         /* calibrated null values */
  58         int xcalib, ycalib, zcalib;
  59 };
  60 
  61 extern struct ams ams_info;
  62 
  63 extern void ams_sensors(s8 *x, s8 *y, s8 *z);
  64 extern int ams_sensor_attach(void);
  65 extern void ams_sensor_detach(void);
  66 
  67 extern int ams_pmu_init(struct device_node *np);
  68 extern int ams_i2c_init(struct device_node *np);
  69 
  70 extern int ams_input_init(void);
  71 extern void ams_input_exit(void);

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