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

TOMOYO Linux Cross Reference
Linux/include/linux/mfd/tc3589x.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 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-only */
  2 /*
  3  * Copyright (C) ST-Ericsson SA 2010
  4  */
  5 
  6 #ifndef __LINUX_MFD_TC3589x_H
  7 #define __LINUX_MFD_TC3589x_H
  8 
  9 struct device;
 10 
 11 enum tx3589x_block {
 12         TC3589x_BLOCK_GPIO        = 1 << 0,
 13         TC3589x_BLOCK_KEYPAD      = 1 << 1,
 14 };
 15 
 16 #define TC3589x_RSTCTRL_IRQRST  (1 << 4)
 17 #define TC3589x_RSTCTRL_TIMRST  (1 << 3)
 18 #define TC3589x_RSTCTRL_ROTRST  (1 << 2)
 19 #define TC3589x_RSTCTRL_KBDRST  (1 << 1)
 20 #define TC3589x_RSTCTRL_GPIRST  (1 << 0)
 21 
 22 #define TC3589x_DKBDMSK_ELINT   (1 << 1)
 23 #define TC3589x_DKBDMSK_EINT    (1 << 0)
 24 
 25 /* Keyboard Configuration Registers */
 26 #define TC3589x_KBDSETTLE_REG   0x01
 27 #define TC3589x_KBDBOUNCE       0x02
 28 #define TC3589x_KBDSIZE         0x03
 29 #define TC3589x_KBCFG_LSB       0x04
 30 #define TC3589x_KBCFG_MSB       0x05
 31 #define TC3589x_KBDIC           0x08
 32 #define TC3589x_KBDMSK          0x09
 33 #define TC3589x_EVTCODE_FIFO    0x10
 34 #define TC3589x_KBDMFS          0x8F
 35 
 36 #define TC3589x_IRQST           0x91
 37 
 38 #define TC3589x_MANFCODE_MAGIC  0x03
 39 #define TC3589x_MANFCODE        0x80
 40 #define TC3589x_VERSION         0x81
 41 #define TC3589x_IOCFG           0xA7
 42 
 43 #define TC3589x_CLKMODE         0x88
 44 #define TC3589x_CLKCFG          0x89
 45 #define TC3589x_CLKEN           0x8A
 46 
 47 #define TC3589x_RSTCTRL         0x82
 48 #define TC3589x_EXTRSTN         0x83
 49 #define TC3589x_RSTINTCLR       0x84
 50 
 51 /* Pull up/down configuration registers */
 52 #define TC3589x_IOCFG           0xA7
 53 #define TC3589x_IOPULLCFG0_LSB  0xAA
 54 #define TC3589x_IOPULLCFG0_MSB  0xAB
 55 #define TC3589x_IOPULLCFG1_LSB  0xAC
 56 #define TC3589x_IOPULLCFG1_MSB  0xAD
 57 #define TC3589x_IOPULLCFG2_LSB  0xAE
 58 
 59 #define TC3589x_GPIOIS0         0xC9
 60 #define TC3589x_GPIOIS1         0xCA
 61 #define TC3589x_GPIOIS2         0xCB
 62 #define TC3589x_GPIOIBE0        0xCC
 63 #define TC3589x_GPIOIBE1        0xCD
 64 #define TC3589x_GPIOIBE2        0xCE
 65 #define TC3589x_GPIOIEV0        0xCF
 66 #define TC3589x_GPIOIEV1        0xD0
 67 #define TC3589x_GPIOIEV2        0xD1
 68 #define TC3589x_GPIOIE0         0xD2
 69 #define TC3589x_GPIOIE1         0xD3
 70 #define TC3589x_GPIOIE2         0xD4
 71 #define TC3589x_GPIORIS0        0xD6
 72 #define TC3589x_GPIORIS1        0xD7
 73 #define TC3589x_GPIORIS2        0xD8
 74 #define TC3589x_GPIOMIS0        0xD9
 75 #define TC3589x_GPIOMIS1        0xDA
 76 #define TC3589x_GPIOMIS2        0xDB
 77 #define TC3589x_GPIOIC0         0xDC
 78 #define TC3589x_GPIOIC1         0xDD
 79 #define TC3589x_GPIOIC2         0xDE
 80 
 81 #define TC3589x_GPIODATA0       0xC0
 82 #define TC3589x_GPIOMASK0       0xc1
 83 #define TC3589x_GPIODATA1       0xC2
 84 #define TC3589x_GPIOMASK1       0xc3
 85 #define TC3589x_GPIODATA2       0xC4
 86 #define TC3589x_GPIOMASK2       0xC5
 87 
 88 #define TC3589x_GPIODIR0        0xC6
 89 #define TC3589x_GPIODIR1        0xC7
 90 #define TC3589x_GPIODIR2        0xC8
 91 
 92 #define TC3589x_GPIOSYNC0       0xE6
 93 #define TC3589x_GPIOSYNC1       0xE7
 94 #define TC3589x_GPIOSYNC2       0xE8
 95 
 96 #define TC3589x_GPIOWAKE0       0xE9
 97 #define TC3589x_GPIOWAKE1       0xEA
 98 #define TC3589x_GPIOWAKE2       0xEB
 99 
100 #define TC3589x_GPIOODM0        0xE0
101 #define TC3589x_GPIOODE0        0xE1
102 #define TC3589x_GPIOODM1        0xE2
103 #define TC3589x_GPIOODE1        0xE3
104 #define TC3589x_GPIOODM2        0xE4
105 #define TC3589x_GPIOODE2        0xE5
106 
107 #define TC3589x_DIRECT0         0xEC
108 #define TC3589x_DKBDMSK         0xF3
109 
110 #define TC3589x_INT_GPIIRQ      0
111 #define TC3589x_INT_TI0IRQ      1
112 #define TC3589x_INT_TI1IRQ      2
113 #define TC3589x_INT_TI2IRQ      3
114 #define TC3589x_INT_ROTIRQ      5
115 #define TC3589x_INT_KBDIRQ      6
116 #define TC3589x_INT_PORIRQ      7
117 
118 #define TC3589x_NR_INTERNAL_IRQS        8
119 
120 struct tc3589x {
121         struct mutex lock;
122         struct device *dev;
123         struct i2c_client *i2c;
124         struct irq_domain *domain;
125 
126         int irq_base;
127         int num_gpio;
128         struct tc3589x_platform_data *pdata;
129 };
130 
131 extern int tc3589x_reg_write(struct tc3589x *tc3589x, u8 reg, u8 data);
132 extern int tc3589x_reg_read(struct tc3589x *tc3589x, u8 reg);
133 extern int tc3589x_block_read(struct tc3589x *tc3589x, u8 reg, u8 length,
134                               u8 *values);
135 extern int tc3589x_block_write(struct tc3589x *tc3589x, u8 reg, u8 length,
136                                const u8 *values);
137 extern int tc3589x_set_bits(struct tc3589x *tc3589x, u8 reg, u8 mask, u8 val);
138 
139 /*
140  * Keypad related platform specific constants
141  * These values may be modified for fine tuning
142  */
143 #define TC_KPD_ROWS             0x8
144 #define TC_KPD_COLUMNS          0x8
145 #define TC_KPD_DEBOUNCE_PERIOD  0xA3
146 #define TC_KPD_SETTLE_TIME      0xA3
147 
148 
149 /**
150  * struct tc3589x_platform_data - TC3589x platform data
151  * @block: bitmask of blocks to enable (use TC3589x_BLOCK_*)
152  */
153 struct tc3589x_platform_data {
154         unsigned int block;
155 };
156 
157 #endif
158 

~ [ 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