1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * include/linux/input/ad714x.h 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * AD714x is very flexible, it can be used as buttons, scrollwheel, 6*4882a593Smuzhiyun * slider, touchpad at the same time. That depends on the boards. 7*4882a593Smuzhiyun * The platform_data for the device's "struct device" holds this 8*4882a593Smuzhiyun * information. 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * Copyright 2009-2011 Analog Devices Inc. 11*4882a593Smuzhiyun */ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #ifndef __LINUX_INPUT_AD714X_H__ 14*4882a593Smuzhiyun #define __LINUX_INPUT_AD714X_H__ 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #define STAGE_NUM 12 17*4882a593Smuzhiyun #define STAGE_CFGREG_NUM 8 18*4882a593Smuzhiyun #define SYS_CFGREG_NUM 8 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun /* board information which need be initialized in arch/mach... */ 21*4882a593Smuzhiyun struct ad714x_slider_plat { 22*4882a593Smuzhiyun int start_stage; 23*4882a593Smuzhiyun int end_stage; 24*4882a593Smuzhiyun int max_coord; 25*4882a593Smuzhiyun }; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun struct ad714x_wheel_plat { 28*4882a593Smuzhiyun int start_stage; 29*4882a593Smuzhiyun int end_stage; 30*4882a593Smuzhiyun int max_coord; 31*4882a593Smuzhiyun }; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun struct ad714x_touchpad_plat { 34*4882a593Smuzhiyun int x_start_stage; 35*4882a593Smuzhiyun int x_end_stage; 36*4882a593Smuzhiyun int x_max_coord; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun int y_start_stage; 39*4882a593Smuzhiyun int y_end_stage; 40*4882a593Smuzhiyun int y_max_coord; 41*4882a593Smuzhiyun }; 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun struct ad714x_button_plat { 44*4882a593Smuzhiyun int keycode; 45*4882a593Smuzhiyun unsigned short l_mask; 46*4882a593Smuzhiyun unsigned short h_mask; 47*4882a593Smuzhiyun }; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun struct ad714x_platform_data { 50*4882a593Smuzhiyun int slider_num; 51*4882a593Smuzhiyun int wheel_num; 52*4882a593Smuzhiyun int touchpad_num; 53*4882a593Smuzhiyun int button_num; 54*4882a593Smuzhiyun struct ad714x_slider_plat *slider; 55*4882a593Smuzhiyun struct ad714x_wheel_plat *wheel; 56*4882a593Smuzhiyun struct ad714x_touchpad_plat *touchpad; 57*4882a593Smuzhiyun struct ad714x_button_plat *button; 58*4882a593Smuzhiyun unsigned short stage_cfg_reg[STAGE_NUM][STAGE_CFGREG_NUM]; 59*4882a593Smuzhiyun unsigned short sys_cfg_reg[SYS_CFGREG_NUM]; 60*4882a593Smuzhiyun unsigned long irqflags; 61*4882a593Smuzhiyun }; 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun #endif 64