xref: /openbmc/linux/include/linux/input/ad714x.h (revision 3532cb0c)
131a62963SBryan Wu /*
231a62963SBryan Wu  * include/linux/input/ad714x.h
331a62963SBryan Wu  *
431a62963SBryan Wu  * AD714x is very flexible, it can be used as buttons, scrollwheel,
531a62963SBryan Wu  * slider, touchpad at the same time. That depends on the boards.
631a62963SBryan Wu  * The platform_data for the device's "struct device" holds this
731a62963SBryan Wu  * information.
831a62963SBryan Wu  *
93532cb0cSMichael Hennerich  * Copyright 2009-2011 Analog Devices Inc.
1031a62963SBryan Wu  *
1131a62963SBryan Wu  * Licensed under the GPL-2 or later.
1231a62963SBryan Wu  */
1331a62963SBryan Wu 
1431a62963SBryan Wu #ifndef __LINUX_INPUT_AD714X_H__
1531a62963SBryan Wu #define __LINUX_INPUT_AD714X_H__
1631a62963SBryan Wu 
1731a62963SBryan Wu #define STAGE_NUM              12
1831a62963SBryan Wu #define STAGE_CFGREG_NUM       8
1931a62963SBryan Wu #define SYS_CFGREG_NUM         8
2031a62963SBryan Wu 
2131a62963SBryan Wu /* board information which need be initialized in arch/mach... */
2231a62963SBryan Wu struct ad714x_slider_plat {
2331a62963SBryan Wu 	int start_stage;
2431a62963SBryan Wu 	int end_stage;
2531a62963SBryan Wu 	int max_coord;
2631a62963SBryan Wu };
2731a62963SBryan Wu 
2831a62963SBryan Wu struct ad714x_wheel_plat {
2931a62963SBryan Wu 	int start_stage;
3031a62963SBryan Wu 	int end_stage;
3131a62963SBryan Wu 	int max_coord;
3231a62963SBryan Wu };
3331a62963SBryan Wu 
3431a62963SBryan Wu struct ad714x_touchpad_plat {
3531a62963SBryan Wu 	int x_start_stage;
3631a62963SBryan Wu 	int x_end_stage;
3731a62963SBryan Wu 	int x_max_coord;
3831a62963SBryan Wu 
3931a62963SBryan Wu 	int y_start_stage;
4031a62963SBryan Wu 	int y_end_stage;
4131a62963SBryan Wu 	int y_max_coord;
4231a62963SBryan Wu };
4331a62963SBryan Wu 
4431a62963SBryan Wu struct ad714x_button_plat {
4531a62963SBryan Wu 	int keycode;
4631a62963SBryan Wu 	unsigned short l_mask;
4731a62963SBryan Wu 	unsigned short h_mask;
4831a62963SBryan Wu };
4931a62963SBryan Wu 
5031a62963SBryan Wu struct ad714x_platform_data {
5131a62963SBryan Wu 	int slider_num;
5231a62963SBryan Wu 	int wheel_num;
5331a62963SBryan Wu 	int touchpad_num;
5431a62963SBryan Wu 	int button_num;
5531a62963SBryan Wu 	struct ad714x_slider_plat *slider;
5631a62963SBryan Wu 	struct ad714x_wheel_plat *wheel;
5731a62963SBryan Wu 	struct ad714x_touchpad_plat *touchpad;
5831a62963SBryan Wu 	struct ad714x_button_plat *button;
5931a62963SBryan Wu 	unsigned short stage_cfg_reg[STAGE_NUM][STAGE_CFGREG_NUM];
6031a62963SBryan Wu 	unsigned short sys_cfg_reg[SYS_CFGREG_NUM];
613532cb0cSMichael Hennerich 	unsigned long irqflags;
6231a62963SBryan Wu };
6331a62963SBryan Wu 
6431a62963SBryan Wu #endif
65