cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ams.h (1421B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#include <linux/i2c.h>
      3#include <linux/input.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
     10enum 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
     20struct 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_dev *idev;
     55	__u16 bustype;
     56
     57	/* calibrated null values */
     58	int xcalib, ycalib, zcalib;
     59};
     60
     61extern struct ams ams_info;
     62
     63extern void ams_sensors(s8 *x, s8 *y, s8 *z);
     64extern int ams_sensor_attach(void);
     65extern void ams_sensor_detach(void);
     66
     67extern int ams_pmu_init(struct device_node *np);
     68extern int ams_i2c_init(struct device_node *np);
     69
     70extern int ams_input_init(void);
     71extern void ams_input_exit(void);