131a6296333b94964e9a073649840bb34d4603369Bryan Wu/* 231a6296333b94964e9a073649840bb34d4603369Bryan Wu * AD714X CapTouch Programmable Controller driver (bus interfaces) 331a6296333b94964e9a073649840bb34d4603369Bryan Wu * 49eff794b777ac9ca034129a1b637204000c8fb29Michael Hennerich * Copyright 2009-2011 Analog Devices Inc. 531a6296333b94964e9a073649840bb34d4603369Bryan Wu * 631a6296333b94964e9a073649840bb34d4603369Bryan Wu * Licensed under the GPL-2 or later. 731a6296333b94964e9a073649840bb34d4603369Bryan Wu */ 831a6296333b94964e9a073649840bb34d4603369Bryan Wu 931a6296333b94964e9a073649840bb34d4603369Bryan Wu#ifndef _AD714X_H_ 1031a6296333b94964e9a073649840bb34d4603369Bryan Wu#define _AD714X_H_ 1131a6296333b94964e9a073649840bb34d4603369Bryan Wu 1231a6296333b94964e9a073649840bb34d4603369Bryan Wu#include <linux/types.h> 1331a6296333b94964e9a073649840bb34d4603369Bryan Wu 14c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov#define STAGE_NUM 12 15c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov 1631a6296333b94964e9a073649840bb34d4603369Bryan Wustruct device; 17c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhovstruct ad714x_platform_data; 18c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhovstruct ad714x_driver_data; 1931a6296333b94964e9a073649840bb34d4603369Bryan Wustruct ad714x_chip; 2031a6296333b94964e9a073649840bb34d4603369Bryan Wu 219eff794b777ac9ca034129a1b637204000c8fb29Michael Hennerichtypedef int (*ad714x_read_t)(struct ad714x_chip *, unsigned short, unsigned short *, size_t); 22c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhovtypedef int (*ad714x_write_t)(struct ad714x_chip *, unsigned short, unsigned short); 23c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov 24c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhovstruct ad714x_chip { 25c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov unsigned short l_state; 269eff794b777ac9ca034129a1b637204000c8fb29Michael Hennerich unsigned short h_state; 27c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov unsigned short c_state; 28c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov unsigned short adc_reg[STAGE_NUM]; 29c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov unsigned short amb_reg[STAGE_NUM]; 30c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov unsigned short sensor_val[STAGE_NUM]; 31c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov 32c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov struct ad714x_platform_data *hw; 33c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov struct ad714x_driver_data *sw; 34c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov 35c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov int irq; 36c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov struct device *dev; 37c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov ad714x_read_t read; 38c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov ad714x_write_t write; 39c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov 40c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov struct mutex mutex; 41c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov 42c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov unsigned product; 43c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov unsigned version; 44c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov 45c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov __be16 xfer_buf[16] ____cacheline_aligned; 46c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov 47c0409feb86893f5ccf73964c7b2b47ca64bdb014Dmitry Torokhov}; 4831a6296333b94964e9a073649840bb34d4603369Bryan Wu 4931a6296333b94964e9a073649840bb34d4603369Bryan Wuint ad714x_disable(struct ad714x_chip *ad714x); 5031a6296333b94964e9a073649840bb34d4603369Bryan Wuint ad714x_enable(struct ad714x_chip *ad714x); 5131a6296333b94964e9a073649840bb34d4603369Bryan Wustruct ad714x_chip *ad714x_probe(struct device *dev, u16 bus_type, int irq, 5231a6296333b94964e9a073649840bb34d4603369Bryan Wu ad714x_read_t read, ad714x_write_t write); 5331a6296333b94964e9a073649840bb34d4603369Bryan Wuvoid ad714x_remove(struct ad714x_chip *ad714x); 5431a6296333b94964e9a073649840bb34d4603369Bryan Wu 5531a6296333b94964e9a073649840bb34d4603369Bryan Wu#endif 56