#include <linux/kernel.h>
#include <linux/rmi.h>
#include <linux/input.h>
#include <linux/slab.h>
#include "rmi_driver.h"
#define RMI_F3A_MAX_GPIO_COUNT …
#define RMI_F3A_MAX_REG_SIZE …
#define RMI_F3A_GPIO_COUNT …
#define RMI_F3A_DATA_REGS_MAX_SIZE …
#define TRACKSTICK_RANGE_START …
#define TRACKSTICK_RANGE_END …
struct f3a_data { … };
static void rmi_f3a_report_button(struct rmi_function *fn,
struct f3a_data *f3a, unsigned int button)
{ … }
static irqreturn_t rmi_f3a_attention(int irq, void *ctx)
{ … }
static int rmi_f3a_config(struct rmi_function *fn)
{ … }
static bool rmi_f3a_is_valid_button(int button, struct f3a_data *f3a,
u8 *query1_regs, u8 *ctrl1_regs)
{ … }
static int rmi_f3a_map_gpios(struct rmi_function *fn, struct f3a_data *f3a,
u8 *query1_regs, u8 *ctrl1_regs)
{ … }
static int rmi_f3a_initialize(struct rmi_function *fn, struct f3a_data *f3a)
{ … }
static int rmi_f3a_probe(struct rmi_function *fn)
{ … }
struct rmi_function_handler rmi_f3a_handler = …;