~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/mfd/stmpe.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/linux/mfd/stmpe.h (Version linux-6.11.5) and /include/linux/mfd/stmpe.h (Version linux-3.10.108)


  1 /* SPDX-License-Identifier: GPL-2.0-only */    << 
  2 /*                                                  1 /*
  3  * Copyright (C) ST-Ericsson SA 2010                2  * Copyright (C) ST-Ericsson SA 2010
  4  *                                                  3  *
                                                   >>   4  * License Terms: GNU General Public License, version 2
  5  * Author: Rabin Vincent <rabin.vincent@steric      5  * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
  6  */                                                 6  */
  7                                                     7 
  8 #ifndef __LINUX_MFD_STMPE_H                         8 #ifndef __LINUX_MFD_STMPE_H
  9 #define __LINUX_MFD_STMPE_H                         9 #define __LINUX_MFD_STMPE_H
 10                                                    10 
 11 #include <linux/mutex.h>                           11 #include <linux/mutex.h>
 12                                                    12 
 13 #define STMPE_SAMPLE_TIME(x)    ((x & 0xf) <<  << 
 14 #define STMPE_MOD_12B(x)        ((x & 0x1) <<  << 
 15 #define STMPE_REF_SEL(x)        ((x & 0x1) <<  << 
 16 #define STMPE_ADC_FREQ(x)       (x & 0x3)      << 
 17 #define STMPE_AVE_CTRL(x)       ((x & 0x3) <<  << 
 18 #define STMPE_DET_DELAY(x)      ((x & 0x7) <<  << 
 19 #define STMPE_SETTLING(x)       (x & 0x7)      << 
 20 #define STMPE_FRACTION_Z(x)     (x & 0x7)      << 
 21 #define STMPE_I_DRIVE(x)        (x & 0x1)      << 
 22 #define STMPE_OP_MODE(x)        ((x & 0x7) <<  << 
 23                                                << 
 24 #define STMPE811_REG_ADC_CTRL1  0x20           << 
 25 #define STMPE811_REG_ADC_CTRL2  0x21           << 
 26                                                << 
 27 struct device;                                     13 struct device;
 28 struct regulator;                              << 
 29                                                    14 
 30 enum stmpe_block {                                 15 enum stmpe_block {
 31         STMPE_BLOCK_GPIO        = 1 << 0,          16         STMPE_BLOCK_GPIO        = 1 << 0,
 32         STMPE_BLOCK_KEYPAD      = 1 << 1,          17         STMPE_BLOCK_KEYPAD      = 1 << 1,
 33         STMPE_BLOCK_TOUCHSCREEN = 1 << 2,          18         STMPE_BLOCK_TOUCHSCREEN = 1 << 2,
 34         STMPE_BLOCK_ADC         = 1 << 3,          19         STMPE_BLOCK_ADC         = 1 << 3,
 35         STMPE_BLOCK_PWM         = 1 << 4,          20         STMPE_BLOCK_PWM         = 1 << 4,
 36         STMPE_BLOCK_ROTATOR     = 1 << 5,          21         STMPE_BLOCK_ROTATOR     = 1 << 5,
 37 };                                                 22 };
 38                                                    23 
 39 enum stmpe_partnum {                               24 enum stmpe_partnum {
 40         STMPE610,                                  25         STMPE610,
 41         STMPE801,                                  26         STMPE801,
 42         STMPE811,                                  27         STMPE811,
 43         STMPE1600,                             << 
 44         STMPE1601,                                 28         STMPE1601,
 45         STMPE1801,                                 29         STMPE1801,
 46         STMPE2401,                                 30         STMPE2401,
 47         STMPE2403,                                 31         STMPE2403,
 48         STMPE_NBR_PARTS                            32         STMPE_NBR_PARTS
 49 };                                                 33 };
 50                                                    34 
 51 /*                                                 35 /*
 52  * For registers whose locations differ on var     36  * For registers whose locations differ on variants,  the correct address is
 53  * obtained by indexing stmpe->regs with one o     37  * obtained by indexing stmpe->regs with one of the following.
 54  */                                                38  */
 55 enum {                                             39 enum {
 56         STMPE_IDX_CHIP_ID,                         40         STMPE_IDX_CHIP_ID,
 57         STMPE_IDX_SYS_CTRL,                    << 
 58         STMPE_IDX_SYS_CTRL2,                   << 
 59         STMPE_IDX_ICR_LSB,                         41         STMPE_IDX_ICR_LSB,
 60         STMPE_IDX_IER_LSB,                         42         STMPE_IDX_IER_LSB,
 61         STMPE_IDX_IER_MSB,                     << 
 62         STMPE_IDX_ISR_LSB,                         43         STMPE_IDX_ISR_LSB,
 63         STMPE_IDX_ISR_MSB,                         44         STMPE_IDX_ISR_MSB,
 64         STMPE_IDX_GPMR_LSB,                        45         STMPE_IDX_GPMR_LSB,
 65         STMPE_IDX_GPMR_CSB,                    << 
 66         STMPE_IDX_GPMR_MSB,                    << 
 67         STMPE_IDX_GPSR_LSB,                        46         STMPE_IDX_GPSR_LSB,
 68         STMPE_IDX_GPSR_CSB,                    << 
 69         STMPE_IDX_GPSR_MSB,                    << 
 70         STMPE_IDX_GPCR_LSB,                        47         STMPE_IDX_GPCR_LSB,
 71         STMPE_IDX_GPCR_CSB,                    << 
 72         STMPE_IDX_GPCR_MSB,                    << 
 73         STMPE_IDX_GPDR_LSB,                        48         STMPE_IDX_GPDR_LSB,
 74         STMPE_IDX_GPDR_CSB,                    << 
 75         STMPE_IDX_GPDR_MSB,                    << 
 76         STMPE_IDX_GPEDR_LSB,                   << 
 77         STMPE_IDX_GPEDR_CSB,                   << 
 78         STMPE_IDX_GPEDR_MSB,                       49         STMPE_IDX_GPEDR_MSB,
 79         STMPE_IDX_GPRER_LSB,                       50         STMPE_IDX_GPRER_LSB,
 80         STMPE_IDX_GPRER_CSB,                   << 
 81         STMPE_IDX_GPRER_MSB,                   << 
 82         STMPE_IDX_GPFER_LSB,                       51         STMPE_IDX_GPFER_LSB,
 83         STMPE_IDX_GPFER_CSB,                   << 
 84         STMPE_IDX_GPFER_MSB,                   << 
 85         STMPE_IDX_GPPUR_LSB,                   << 
 86         STMPE_IDX_GPPDR_LSB,                   << 
 87         STMPE_IDX_GPAFR_U_MSB,                     52         STMPE_IDX_GPAFR_U_MSB,
 88         STMPE_IDX_IEGPIOR_LSB,                     53         STMPE_IDX_IEGPIOR_LSB,
 89         STMPE_IDX_IEGPIOR_CSB,                 << 
 90         STMPE_IDX_IEGPIOR_MSB,                 << 
 91         STMPE_IDX_ISGPIOR_LSB,                     54         STMPE_IDX_ISGPIOR_LSB,
 92         STMPE_IDX_ISGPIOR_CSB,                 << 
 93         STMPE_IDX_ISGPIOR_MSB,                     55         STMPE_IDX_ISGPIOR_MSB,
 94         STMPE_IDX_MAX,                             56         STMPE_IDX_MAX,
 95 };                                                 57 };
 96                                                    58 
 97                                                    59 
 98 struct stmpe_variant_info;                         60 struct stmpe_variant_info;
 99 struct stmpe_client_info;                          61 struct stmpe_client_info;
100 struct stmpe_platform_data;                    << 
101                                                    62 
102 /**                                                63 /**
103  * struct stmpe - STMPE MFD structure              64  * struct stmpe - STMPE MFD structure
104  * @vcc: optional VCC regulator                << 
105  * @vio: optional VIO regulator                << 
106  * @lock: lock protecting I/O operations           65  * @lock: lock protecting I/O operations
107  * @irq_lock: IRQ bus lock                         66  * @irq_lock: IRQ bus lock
108  * @dev: device, mostly for dev_dbg()              67  * @dev: device, mostly for dev_dbg()
109  * @irq_domain: IRQ domain                         68  * @irq_domain: IRQ domain
110  * @client: client - i2c or spi                    69  * @client: client - i2c or spi
111  * @ci: client specific information                70  * @ci: client specific information
112  * @partnum: part number                           71  * @partnum: part number
113  * @variant: the detected STMPE model number       72  * @variant: the detected STMPE model number
114  * @regs: list of addresses of registers which     73  * @regs: list of addresses of registers which are at different addresses on
115  *        different variants.  Indexed by one      74  *        different variants.  Indexed by one of STMPE_IDX_*.
116  * @irq: irq number for stmpe                      75  * @irq: irq number for stmpe
                                                   >>  76  * @irq_base: starting IRQ number for internal IRQs
117  * @num_gpios: number of gpios, differs for va     77  * @num_gpios: number of gpios, differs for variants
118  * @ier: cache of IER registers for bus_lock       78  * @ier: cache of IER registers for bus_lock
119  * @oldier: cache of IER registers for bus_loc     79  * @oldier: cache of IER registers for bus_lock
120  * @pdata: platform data                           80  * @pdata: platform data
121  */                                                81  */
122 struct stmpe {                                     82 struct stmpe {
123         struct regulator *vcc;                 << 
124         struct regulator *vio;                 << 
125         struct mutex lock;                         83         struct mutex lock;
126         struct mutex irq_lock;                     84         struct mutex irq_lock;
127         struct device *dev;                        85         struct device *dev;
128         struct irq_domain *domain;                 86         struct irq_domain *domain;
129         void *client;                              87         void *client;
130         struct stmpe_client_info *ci;              88         struct stmpe_client_info *ci;
131         enum stmpe_partnum partnum;                89         enum stmpe_partnum partnum;
132         struct stmpe_variant_info *variant;        90         struct stmpe_variant_info *variant;
133         const u8 *regs;                            91         const u8 *regs;
134                                                    92 
135         int irq;                                   93         int irq;
                                                   >>  94         int irq_base;
136         int num_gpios;                             95         int num_gpios;
137         u8 ier[2];                                 96         u8 ier[2];
138         u8 oldier[2];                              97         u8 oldier[2];
139         struct stmpe_platform_data *pdata;         98         struct stmpe_platform_data *pdata;
140                                                << 
141         /* For devices that use an ADC */      << 
142         u8 sample_time;                        << 
143         u8 mod_12b;                            << 
144         u8 ref_sel;                            << 
145         u8 adc_freq;                           << 
146 };                                                 99 };
147                                                   100 
148 extern int stmpe_reg_write(struct stmpe *stmpe    101 extern int stmpe_reg_write(struct stmpe *stmpe, u8 reg, u8 data);
149 extern int stmpe_reg_read(struct stmpe *stmpe,    102 extern int stmpe_reg_read(struct stmpe *stmpe, u8 reg);
150 extern int stmpe_block_read(struct stmpe *stmp    103 extern int stmpe_block_read(struct stmpe *stmpe, u8 reg, u8 length,
151                             u8 *values);          104                             u8 *values);
152 extern int stmpe_block_write(struct stmpe *stm    105 extern int stmpe_block_write(struct stmpe *stmpe, u8 reg, u8 length,
153                              const u8 *values)    106                              const u8 *values);
154 extern int stmpe_set_bits(struct stmpe *stmpe,    107 extern int stmpe_set_bits(struct stmpe *stmpe, u8 reg, u8 mask, u8 val);
155 extern int stmpe_set_altfunc(struct stmpe *stm    108 extern int stmpe_set_altfunc(struct stmpe *stmpe, u32 pins,
156                              enum stmpe_block     109                              enum stmpe_block block);
157 extern int stmpe_enable(struct stmpe *stmpe, u    110 extern int stmpe_enable(struct stmpe *stmpe, unsigned int blocks);
158 extern int stmpe_disable(struct stmpe *stmpe,     111 extern int stmpe_disable(struct stmpe *stmpe, unsigned int blocks);
159 extern int stmpe811_adc_common_init(struct stm !! 112 
                                                   >> 113 struct matrix_keymap_data;
                                                   >> 114 
                                                   >> 115 /**
                                                   >> 116  * struct stmpe_keypad_platform_data - STMPE keypad platform data
                                                   >> 117  * @keymap_data: key map table and size
                                                   >> 118  * @debounce_ms: debounce interval, in ms.  Maximum is
                                                   >> 119  *               %STMPE_KEYPAD_MAX_DEBOUNCE.
                                                   >> 120  * @scan_count: number of key scanning cycles to confirm key data.
                                                   >> 121  *              Maximum is %STMPE_KEYPAD_MAX_SCAN_COUNT.
                                                   >> 122  * @no_autorepeat: disable key autorepeat
                                                   >> 123  */
                                                   >> 124 struct stmpe_keypad_platform_data {
                                                   >> 125         const struct matrix_keymap_data *keymap_data;
                                                   >> 126         unsigned int debounce_ms;
                                                   >> 127         unsigned int scan_count;
                                                   >> 128         bool no_autorepeat;
                                                   >> 129 };
160                                                   130 
161 #define STMPE_GPIO_NOREQ_811_TOUCH      (0xf0)    131 #define STMPE_GPIO_NOREQ_811_TOUCH      (0xf0)
                                                   >> 132 
                                                   >> 133 /**
                                                   >> 134  * struct stmpe_gpio_platform_data - STMPE GPIO platform data
                                                   >> 135  * @gpio_base: first gpio number assigned.  A maximum of
                                                   >> 136  *             %STMPE_NR_GPIOS GPIOs will be allocated.
                                                   >> 137  * @norequest_mask: bitmask specifying which GPIOs should _not_ be
                                                   >> 138  *                  requestable due to different usage (e.g. touch, keypad)
                                                   >> 139  *                  STMPE_GPIO_NOREQ_* macros can be used here.
                                                   >> 140  * @setup: board specific setup callback.
                                                   >> 141  * @remove: board specific remove callback
                                                   >> 142  */
                                                   >> 143 struct stmpe_gpio_platform_data {
                                                   >> 144         int gpio_base;
                                                   >> 145         unsigned norequest_mask;
                                                   >> 146         void (*setup)(struct stmpe *stmpe, unsigned gpio_base);
                                                   >> 147         void (*remove)(struct stmpe *stmpe, unsigned gpio_base);
                                                   >> 148 };
                                                   >> 149 
                                                   >> 150 /**
                                                   >> 151  * struct stmpe_ts_platform_data - stmpe811 touch screen controller platform
                                                   >> 152  * data
                                                   >> 153  * @sample_time: ADC converstion time in number of clock.
                                                   >> 154  * (0 -> 36 clocks, 1 -> 44 clocks, 2 -> 56 clocks, 3 -> 64 clocks,
                                                   >> 155  * 4 -> 80 clocks, 5 -> 96 clocks, 6 -> 144 clocks),
                                                   >> 156  * recommended is 4.
                                                   >> 157  * @mod_12b: ADC Bit mode (0 -> 10bit ADC, 1 -> 12bit ADC)
                                                   >> 158  * @ref_sel: ADC reference source
                                                   >> 159  * (0 -> internal reference, 1 -> external reference)
                                                   >> 160  * @adc_freq: ADC Clock speed
                                                   >> 161  * (0 -> 1.625 MHz, 1 -> 3.25 MHz, 2 || 3 -> 6.5 MHz)
                                                   >> 162  * @ave_ctrl: Sample average control
                                                   >> 163  * (0 -> 1 sample, 1 -> 2 samples, 2 -> 4 samples, 3 -> 8 samples)
                                                   >> 164  * @touch_det_delay: Touch detect interrupt delay
                                                   >> 165  * (0 -> 10 us, 1 -> 50 us, 2 -> 100 us, 3 -> 500 us,
                                                   >> 166  * 4-> 1 ms, 5 -> 5 ms, 6 -> 10 ms, 7 -> 50 ms)
                                                   >> 167  * recommended is 3
                                                   >> 168  * @settling: Panel driver settling time
                                                   >> 169  * (0 -> 10 us, 1 -> 100 us, 2 -> 500 us, 3 -> 1 ms,
                                                   >> 170  * 4 -> 5 ms, 5 -> 10 ms, 6 for 50 ms, 7 -> 100 ms)
                                                   >> 171  * recommended is 2
                                                   >> 172  * @fraction_z: Length of the fractional part in z
                                                   >> 173  * (fraction_z ([0..7]) = Count of the fractional part)
                                                   >> 174  * recommended is 7
                                                   >> 175  * @i_drive: current limit value of the touchscreen drivers
                                                   >> 176  * (0 -> 20 mA typical 35 mA max, 1 -> 50 mA typical 80 mA max)
                                                   >> 177  *
                                                   >> 178  * */
                                                   >> 179 struct stmpe_ts_platform_data {
                                                   >> 180        u8 sample_time;
                                                   >> 181        u8 mod_12b;
                                                   >> 182        u8 ref_sel;
                                                   >> 183        u8 adc_freq;
                                                   >> 184        u8 ave_ctrl;
                                                   >> 185        u8 touch_det_delay;
                                                   >> 186        u8 settling;
                                                   >> 187        u8 fraction_z;
                                                   >> 188        u8 i_drive;
                                                   >> 189 };
                                                   >> 190 
                                                   >> 191 /**
                                                   >> 192  * struct stmpe_platform_data - STMPE platform data
                                                   >> 193  * @id: device id to distinguish between multiple STMPEs on the same board
                                                   >> 194  * @blocks: bitmask of blocks to enable (use STMPE_BLOCK_*)
                                                   >> 195  * @irq_trigger: IRQ trigger to use for the interrupt to the host
                                                   >> 196  * @autosleep: bool to enable/disable stmpe autosleep
                                                   >> 197  * @autosleep_timeout: inactivity timeout in milliseconds for autosleep
                                                   >> 198  * @irq_base: base IRQ number.  %STMPE_NR_IRQS irqs will be used, or
                                                   >> 199  *            %STMPE_NR_INTERNAL_IRQS if the GPIO driver is not used.
                                                   >> 200  * @irq_over_gpio: true if gpio is used to get irq
                                                   >> 201  * @irq_gpio: gpio number over which irq will be requested (significant only if
                                                   >> 202  *            irq_over_gpio is true)
                                                   >> 203  * @gpio: GPIO-specific platform data
                                                   >> 204  * @keypad: keypad-specific platform data
                                                   >> 205  * @ts: touchscreen-specific platform data
                                                   >> 206  */
                                                   >> 207 struct stmpe_platform_data {
                                                   >> 208         int id;
                                                   >> 209         unsigned int blocks;
                                                   >> 210         int irq_base;
                                                   >> 211         unsigned int irq_trigger;
                                                   >> 212         bool autosleep;
                                                   >> 213         bool irq_over_gpio;
                                                   >> 214         int irq_gpio;
                                                   >> 215         int autosleep_timeout;
                                                   >> 216 
                                                   >> 217         struct stmpe_gpio_platform_data *gpio;
                                                   >> 218         struct stmpe_keypad_platform_data *keypad;
                                                   >> 219         struct stmpe_ts_platform_data *ts;
                                                   >> 220 };
                                                   >> 221 
                                                   >> 222 #define STMPE_NR_INTERNAL_IRQS  9
                                                   >> 223 #define STMPE_INT_GPIO(x)       (STMPE_NR_INTERNAL_IRQS + (x))
                                                   >> 224 
                                                   >> 225 #define STMPE_NR_GPIOS          24
                                                   >> 226 #define STMPE_NR_IRQS           STMPE_INT_GPIO(STMPE_NR_GPIOS)
162                                                   227 
163 #endif                                            228 #endif
164                                                   229 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php