18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * AD714X CapTouch Programmable Controller driver (bus interfaces)
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright 2009-2011 Analog Devices Inc.
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#ifndef _AD714X_H_
98c2ecf20Sopenharmony_ci#define _AD714X_H_
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#include <linux/types.h>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci#define STAGE_NUM              12
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_cistruct device;
168c2ecf20Sopenharmony_cistruct ad714x_platform_data;
178c2ecf20Sopenharmony_cistruct ad714x_driver_data;
188c2ecf20Sopenharmony_cistruct ad714x_chip;
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_citypedef int (*ad714x_read_t)(struct ad714x_chip *, unsigned short, unsigned short *, size_t);
218c2ecf20Sopenharmony_citypedef int (*ad714x_write_t)(struct ad714x_chip *, unsigned short, unsigned short);
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_cistruct ad714x_chip {
248c2ecf20Sopenharmony_ci	unsigned short l_state;
258c2ecf20Sopenharmony_ci	unsigned short h_state;
268c2ecf20Sopenharmony_ci	unsigned short c_state;
278c2ecf20Sopenharmony_ci	unsigned short adc_reg[STAGE_NUM];
288c2ecf20Sopenharmony_ci	unsigned short amb_reg[STAGE_NUM];
298c2ecf20Sopenharmony_ci	unsigned short sensor_val[STAGE_NUM];
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci	struct ad714x_platform_data *hw;
328c2ecf20Sopenharmony_ci	struct ad714x_driver_data *sw;
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci	int irq;
358c2ecf20Sopenharmony_ci	struct device *dev;
368c2ecf20Sopenharmony_ci	ad714x_read_t read;
378c2ecf20Sopenharmony_ci	ad714x_write_t write;
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci	struct mutex mutex;
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci	unsigned product;
428c2ecf20Sopenharmony_ci	unsigned version;
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci	__be16 xfer_buf[16] ____cacheline_aligned;
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci};
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ciint ad714x_disable(struct ad714x_chip *ad714x);
498c2ecf20Sopenharmony_ciint ad714x_enable(struct ad714x_chip *ad714x);
508c2ecf20Sopenharmony_cistruct ad714x_chip *ad714x_probe(struct device *dev, u16 bus_type, int irq,
518c2ecf20Sopenharmony_ci				 ad714x_read_t read, ad714x_write_t write);
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci#endif
54