1*5ef5f3c2SLevente Révész============================================ 2*5ef5f3c2SLevente RévészPCA953x I²C GPIO expander compatibility list 3*5ef5f3c2SLevente Révész============================================ 4*5ef5f3c2SLevente Révész 5*5ef5f3c2SLevente Révész:Author: Levente Révész <levente.revesz@eilabs.com> 6*5ef5f3c2SLevente Révész 7*5ef5f3c2SLevente RévészI went through all the datasheets and created this note listing 8*5ef5f3c2SLevente Révészchip functions and register layouts. 9*5ef5f3c2SLevente Révész 10*5ef5f3c2SLevente RévészOverview of chips 11*5ef5f3c2SLevente Révész================= 12*5ef5f3c2SLevente Révész 13*5ef5f3c2SLevente RévészChips with the basic 4 registers 14*5ef5f3c2SLevente Révész-------------------------------- 15*5ef5f3c2SLevente Révész 16*5ef5f3c2SLevente RévészThese chips have 4 register banks: input, output, invert and direction. 17*5ef5f3c2SLevente RévészEach of these banks contains (lines/8) registers, one for each GPIO port. 18*5ef5f3c2SLevente Révész 19*5ef5f3c2SLevente RévészBanks offset is always a power of 2: 20*5ef5f3c2SLevente Révész 21*5ef5f3c2SLevente Révész- 4 lines -> bank offset is 1 22*5ef5f3c2SLevente Révész- 8 lines -> bank offset is 1 23*5ef5f3c2SLevente Révész- 16 lines -> bank offset is 2 24*5ef5f3c2SLevente Révész- 24 lines -> bank offset is 4 25*5ef5f3c2SLevente Révész- 32 lines -> bank offset is 4 26*5ef5f3c2SLevente Révész- 40 lines -> bank offset is 8 27*5ef5f3c2SLevente Révész 28*5ef5f3c2SLevente RévészFor example, register layout of GPIO expander with 24 lines: 29*5ef5f3c2SLevente Révész 30*5ef5f3c2SLevente Révész+------+-----------------+--------+ 31*5ef5f3c2SLevente Révész| addr | function | bank | 32*5ef5f3c2SLevente Révész+======+=================+========+ 33*5ef5f3c2SLevente Révész| 00 | input port0 | | 34*5ef5f3c2SLevente Révész+------+-----------------+ | 35*5ef5f3c2SLevente Révész| 01 | input port1 | bank 0 | 36*5ef5f3c2SLevente Révész+------+-----------------+ | 37*5ef5f3c2SLevente Révész| 02 | input port2 | | 38*5ef5f3c2SLevente Révész+------+-----------------+--------+ 39*5ef5f3c2SLevente Révész| 03 | n/a | | 40*5ef5f3c2SLevente Révész+------+-----------------+--------+ 41*5ef5f3c2SLevente Révész| 04 | output port0 | | 42*5ef5f3c2SLevente Révész+------+-----------------+ | 43*5ef5f3c2SLevente Révész| 05 | output port1 | bank 1 | 44*5ef5f3c2SLevente Révész+------+-----------------+ | 45*5ef5f3c2SLevente Révész| 06 | output port2 | | 46*5ef5f3c2SLevente Révész+------+-----------------+--------+ 47*5ef5f3c2SLevente Révész| 07 | n/a | | 48*5ef5f3c2SLevente Révész+------+-----------------+--------+ 49*5ef5f3c2SLevente Révész| 08 | invert port0 | | 50*5ef5f3c2SLevente Révész+------+-----------------+ | 51*5ef5f3c2SLevente Révész| 09 | invert port1 | bank 2 | 52*5ef5f3c2SLevente Révész+------+-----------------+ | 53*5ef5f3c2SLevente Révész| 0A | invert port2 | | 54*5ef5f3c2SLevente Révész+------+-----------------+--------+ 55*5ef5f3c2SLevente Révész| 0B | n/a | | 56*5ef5f3c2SLevente Révész+------+-----------------+--------+ 57*5ef5f3c2SLevente Révész| 0C | direction port0 | | 58*5ef5f3c2SLevente Révész+------+-----------------+ | 59*5ef5f3c2SLevente Révész| 0D | direction port1 | bank 3 | 60*5ef5f3c2SLevente Révész+------+-----------------+ | 61*5ef5f3c2SLevente Révész| 0E | direction port2 | | 62*5ef5f3c2SLevente Révész+------+-----------------+--------+ 63*5ef5f3c2SLevente Révész| 0F | n/a | | 64*5ef5f3c2SLevente Révész+------+-----------------+--------+ 65*5ef5f3c2SLevente Révész 66*5ef5f3c2SLevente Révész.. note:: 67*5ef5f3c2SLevente Révész This is followed by all supported chips, except by pcal6534. 68*5ef5f3c2SLevente Révész 69*5ef5f3c2SLevente RévészThe table below shows the offsets for each of the compatible chips: 70*5ef5f3c2SLevente Révész 71*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= 72*5ef5f3c2SLevente Révészcompatible lines interrupt input output invert direction 73*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= 74*5ef5f3c2SLevente Révészpca9536 4 no 00 01 02 03 75*5ef5f3c2SLevente Révészpca9537 4 yes 00 01 02 03 76*5ef5f3c2SLevente Révészpca6408 8 yes 00 01 02 03 77*5ef5f3c2SLevente Révésztca6408 8 yes 00 01 02 03 78*5ef5f3c2SLevente Révészpca9534 8 yes 00 01 02 03 79*5ef5f3c2SLevente Révészpca9538 8 yes 00 01 02 03 80*5ef5f3c2SLevente Révészpca9554 8 yes 00 01 02 03 81*5ef5f3c2SLevente Révésztca9554 8 yes 00 01 02 03 82*5ef5f3c2SLevente Révészpca9556 8 no 00 01 02 03 83*5ef5f3c2SLevente Révészpca9557 8 no 00 01 02 03 84*5ef5f3c2SLevente Révészpca6107 8 yes 00 01 02 03 85*5ef5f3c2SLevente Révészpca6416 16 yes 00 02 04 06 86*5ef5f3c2SLevente Révésztca6416 16 yes 00 02 04 06 87*5ef5f3c2SLevente Révészpca9535 16 yes 00 02 04 06 88*5ef5f3c2SLevente Révészpca9539 16 yes 00 02 04 06 89*5ef5f3c2SLevente Révésztca9539 16 yes 00 02 04 06 90*5ef5f3c2SLevente Révészpca9555 16 yes 00 02 04 06 91*5ef5f3c2SLevente Révészmax7318 16 yes 00 02 04 06 92*5ef5f3c2SLevente Révésztca6424 24 yes 00 04 08 0C 93*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= 94*5ef5f3c2SLevente Révész 95*5ef5f3c2SLevente RévészChips with additional timeout_en register 96*5ef5f3c2SLevente Révész----------------------------------------- 97*5ef5f3c2SLevente Révész 98*5ef5f3c2SLevente RévészThese Maxim chips have a bus timeout function which can be enabled in 99*5ef5f3c2SLevente Révészthe timeout_en register. This is present in only two chips. Defaults to 100*5ef5f3c2SLevente Révésztimeout disabled. 101*5ef5f3c2SLevente Révész 102*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= ========== 103*5ef5f3c2SLevente Révészcompatible lines interrupt input output invert direction timeout_en 104*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= ========== 105*5ef5f3c2SLevente Révészmax7310 8 no 00 01 02 03 04 106*5ef5f3c2SLevente Révészmax7312 16 yes 00 02 04 06 08 107*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= ========== 108*5ef5f3c2SLevente Révész 109*5ef5f3c2SLevente RévészChips with additional int_mask register 110*5ef5f3c2SLevente Révész--------------------------------------- 111*5ef5f3c2SLevente Révész 112*5ef5f3c2SLevente RévészThese chips have an interrupt mask register in addition to the 4 basic 113*5ef5f3c2SLevente Révészregisters. The interrupt masks default to all interrupts disabled. To 114*5ef5f3c2SLevente Révészuse interrupts with these chips, the driver has to set the int_mask 115*5ef5f3c2SLevente Révészregister. 116*5ef5f3c2SLevente Révész 117*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= ======== 118*5ef5f3c2SLevente Révészcompatible lines interrupt input output invert direction int_mask 119*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= ======== 120*5ef5f3c2SLevente Révészpca9505 40 yes 00 08 10 18 20 121*5ef5f3c2SLevente Révészpca9506 40 yes 00 08 10 18 20 122*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= ======== 123*5ef5f3c2SLevente Révész 124*5ef5f3c2SLevente RévészChips with additional int_mask and out_conf registers 125*5ef5f3c2SLevente Révész----------------------------------------------------- 126*5ef5f3c2SLevente Révész 127*5ef5f3c2SLevente RévészThis chip has an interrupt mask register, and an output port 128*5ef5f3c2SLevente Révészconfiguration register, which can select between push-pull and 129*5ef5f3c2SLevente Révészopen-drain modes. Each bit controls two lines. Both of these registers 130*5ef5f3c2SLevente Révészare present in PCAL chips as well, albeit the out_conf works 131*5ef5f3c2SLevente Révészdifferently. 132*5ef5f3c2SLevente Révész 133*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= ======== ======== 134*5ef5f3c2SLevente Révészcompatible lines interrupt input output invert direction int_mask out_conf 135*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= ======== ======== 136*5ef5f3c2SLevente Révészpca9698 40 yes 00 08 10 18 20 28 137*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= ======== ======== 138*5ef5f3c2SLevente Révész 139*5ef5f3c2SLevente Révészpca9698 also has a "master output" register for setting all outputs per 140*5ef5f3c2SLevente Révészport to the same value simultaneously, and a chip specific mode register 141*5ef5f3c2SLevente Révészfor various additional chip settings. 142*5ef5f3c2SLevente Révész 143*5ef5f3c2SLevente Révész========== ============= ==== 144*5ef5f3c2SLevente Révészcompatible master_output mode 145*5ef5f3c2SLevente Révész========== ============= ==== 146*5ef5f3c2SLevente Révészpca9698 29 2A 147*5ef5f3c2SLevente Révész========== ============= ==== 148*5ef5f3c2SLevente Révész 149*5ef5f3c2SLevente RévészChips with LED blink and intensity control 150*5ef5f3c2SLevente Révész------------------------------------------ 151*5ef5f3c2SLevente Révész 152*5ef5f3c2SLevente RévészThese Maxim chips have no invert register. 153*5ef5f3c2SLevente Révész 154*5ef5f3c2SLevente RévészThey have two sets of output registers (output0 and output1). An internal 155*5ef5f3c2SLevente Révésztimer alternates the effective output between the values set in these 156*5ef5f3c2SLevente Révészregisters, if blink mode is enabled in the blink register. The 157*5ef5f3c2SLevente Révészmaster_intensity register and the intensity registers together define 158*5ef5f3c2SLevente Révészthe PWM intensity value for each pair of outputs. 159*5ef5f3c2SLevente Révész 160*5ef5f3c2SLevente RévészThese chips can be used as simple GPIO expanders if the driver handles the 161*5ef5f3c2SLevente Révészinput, output0 and direction registers. 162*5ef5f3c2SLevente Révész 163*5ef5f3c2SLevente Révész========== ===== ========= ===== ======= ========= ======= ================ ===== ========= 164*5ef5f3c2SLevente Révészcompatible lines interrupt input output0 direction output1 master_intensity blink intensity 165*5ef5f3c2SLevente Révész========== ===== ========= ===== ======= ========= ======= ================ ===== ========= 166*5ef5f3c2SLevente Révészmax7315 8 yes 00 01 03 09 0E 0F 10 167*5ef5f3c2SLevente Révészmax7313 16 yes 00 02 06 0A 0E 0F 10 168*5ef5f3c2SLevente Révész========== ===== ========= ===== ======= ========= ======= ================ ===== ========= 169*5ef5f3c2SLevente Révész 170*5ef5f3c2SLevente RévészBasic PCAL chips 171*5ef5f3c2SLevente Révész---------------- 172*5ef5f3c2SLevente Révész 173*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= 174*5ef5f3c2SLevente Révészcompatible lines interrupt input output invert direction 175*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= 176*5ef5f3c2SLevente Révészpcal6408 8 yes 00 01 02 03 177*5ef5f3c2SLevente Révészpcal9554b 8 yes 00 01 02 03 178*5ef5f3c2SLevente Révészpcal6416 16 yes 00 02 04 06 179*5ef5f3c2SLevente Révészpcal9535 16 yes 00 02 04 06 180*5ef5f3c2SLevente Révészpcal9555a 16 yes 00 02 04 06 181*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= 182*5ef5f3c2SLevente Révész 183*5ef5f3c2SLevente RévészThese chips have several additional features: 184*5ef5f3c2SLevente Révész 185*5ef5f3c2SLevente Révész 1. output drive strength setting (out_strength) 186*5ef5f3c2SLevente Révész 2. input latch (in_latch) 187*5ef5f3c2SLevente Révész 3. pull-up/pull-down (pull_in, pull_sel) 188*5ef5f3c2SLevente Révész 4. push-pull/open-drain outputs (out_conf) 189*5ef5f3c2SLevente Révész 5. interrupt mask and interrupt status (int_mask, int_status) 190*5ef5f3c2SLevente Révész 191*5ef5f3c2SLevente Révész========== ============ ======== ======= ======== ======== ========== ======== 192*5ef5f3c2SLevente Révészcompatible out_strength in_latch pull_en pull_sel int_mask int_status out_conf 193*5ef5f3c2SLevente Révész========== ============ ======== ======= ======== ======== ========== ======== 194*5ef5f3c2SLevente Révészpcal6408 40 42 43 44 45 46 4F 195*5ef5f3c2SLevente Révészpcal9554b 40 42 43 44 45 46 4F 196*5ef5f3c2SLevente Révészpcal6416 40 44 46 48 4A 4C 4F 197*5ef5f3c2SLevente Révészpcal9535 40 44 46 48 4A 4C 4F 198*5ef5f3c2SLevente Révészpcal9555a 40 44 46 48 4A 4C 4F 199*5ef5f3c2SLevente Révész========== ============ ======== ======= ======== ======== ========== ======== 200*5ef5f3c2SLevente Révész 201*5ef5f3c2SLevente RévészCurrently the driver has support for the input latch, pull-up/pull-down 202*5ef5f3c2SLevente Révészand uses int_mask and int_status for interrupts. 203*5ef5f3c2SLevente Révész 204*5ef5f3c2SLevente RévészPCAL chips with extended interrupt and output configuration functions 205*5ef5f3c2SLevente Révész--------------------------------------------------------------------- 206*5ef5f3c2SLevente Révész 207*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= 208*5ef5f3c2SLevente Révészcompatible lines interrupt input output invert direction 209*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= 210*5ef5f3c2SLevente Révészpcal6524 24 yes 00 04 08 0C 211*5ef5f3c2SLevente Révészpcal6534 34 yes 00 05 0A 0F 212*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= 213*5ef5f3c2SLevente Révész 214*5ef5f3c2SLevente RévészThese chips have the full PCAL register set, plus the following functions: 215*5ef5f3c2SLevente Révész 216*5ef5f3c2SLevente Révész 1. interrupt event selection: level, rising, falling, any edge 217*5ef5f3c2SLevente Révész 2. clear interrupt status per line 218*5ef5f3c2SLevente Révész 3. read input without clearing interrupt status 219*5ef5f3c2SLevente Révész 4. individual output config (push-pull/open-drain) per output line 220*5ef5f3c2SLevente Révész 5. debounce inputs 221*5ef5f3c2SLevente Révész 222*5ef5f3c2SLevente Révész========== ============ ======== ======= ======== ======== ========== ======== 223*5ef5f3c2SLevente Révészcompatible out_strength in_latch pull_en pull_sel int_mask int_status out_conf 224*5ef5f3c2SLevente Révész========== ============ ======== ======= ======== ======== ========== ======== 225*5ef5f3c2SLevente Révészpcal6524 40 48 4C 50 54 58 5C 226*5ef5f3c2SLevente Révészpcal6534 30 3A 3F 44 49 4E 53 227*5ef5f3c2SLevente Révész========== ============ ======== ======= ======== ======== ========== ======== 228*5ef5f3c2SLevente Révész 229*5ef5f3c2SLevente Révész========== ======== ========= ============ ============== ======== ============== 230*5ef5f3c2SLevente Révészcompatible int_edge int_clear input_status indiv_out_conf debounce debounce_count 231*5ef5f3c2SLevente Révész========== ======== ========= ============ ============== ======== ============== 232*5ef5f3c2SLevente Révészpcal6524 60 68 6C 70 74 76 233*5ef5f3c2SLevente Révészpcal6534 54 5E 63 68 6D 6F 234*5ef5f3c2SLevente Révész========== ======== ========= ============ ============== ======== ============== 235*5ef5f3c2SLevente Révész 236*5ef5f3c2SLevente RévészAs can be seen in the table above, pcal6534 does not follow the usual 237*5ef5f3c2SLevente Révészbank spacing rule. Its banks are closely packed instead. 238*5ef5f3c2SLevente Révész 239*5ef5f3c2SLevente RévészPCA957X chips with a completely different register layout 240*5ef5f3c2SLevente Révész--------------------------------------------------------- 241*5ef5f3c2SLevente Révész 242*5ef5f3c2SLevente RévészThese chips have the basic 4 registers, but at unusual addresses. 243*5ef5f3c2SLevente Révész 244*5ef5f3c2SLevente RévészAdditionally, they have: 245*5ef5f3c2SLevente Révész 246*5ef5f3c2SLevente Révész 1. pull-up/pull-down (pull_sel) 247*5ef5f3c2SLevente Révész 2. a global pull enable, defaults to disabled (config) 248*5ef5f3c2SLevente Révész 3. interrupt mask, interrupt status (int_mask, int_status) 249*5ef5f3c2SLevente Révész 250*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ======== ========= ====== ======== ========== 251*5ef5f3c2SLevente Révészcompatible lines interrupt input invert config pull_sel direction output int_mask int_status 252*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ======== ========= ====== ======== ========== 253*5ef5f3c2SLevente Révészpca9574 8 yes 00 01 02 03 04 05 06 07 254*5ef5f3c2SLevente Révészpca9575 16 yes 00 02 04 06 08 0A 0C 0E 255*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ======== ========= ====== ======== ========== 256*5ef5f3c2SLevente Révész 257*5ef5f3c2SLevente RévészCurrently the driver supports none of the advanced features. 258*5ef5f3c2SLevente Révész 259*5ef5f3c2SLevente RévészXRA1202 260*5ef5f3c2SLevente Révész------- 261*5ef5f3c2SLevente Révész 262*5ef5f3c2SLevente RévészBasic 4 registers, plus advanced features: 263*5ef5f3c2SLevente Révész 264*5ef5f3c2SLevente Révész 1. interrupt mask, defaults to interrupts disabled 265*5ef5f3c2SLevente Révész 2. interrupt status 266*5ef5f3c2SLevente Révész 3. interrupt event selection, level, rising, falling, any edge 267*5ef5f3c2SLevente Révész (int_mask, rising_mask, falling_mask) 268*5ef5f3c2SLevente Révész 4. pull-up (no pull-down) 269*5ef5f3c2SLevente Révész 5. tri-state 270*5ef5f3c2SLevente Révész 6. debounce 271*5ef5f3c2SLevente Révész 272*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= ========= 273*5ef5f3c2SLevente Révészcompatible lines interrupt input output invert direction pullup_en 274*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= ========= 275*5ef5f3c2SLevente Révészxra1202 8 yes 00 01 02 03 04 276*5ef5f3c2SLevente Révész========== ===== ========= ===== ====== ====== ========= ========= 277*5ef5f3c2SLevente Révész 278*5ef5f3c2SLevente Révész========== ======== ======== ========== =========== ============ ======== 279*5ef5f3c2SLevente Révészcompatible int_mask tristate int_status rising_mask falling_mask debounce 280*5ef5f3c2SLevente Révész========== ======== ======== ========== =========== ============ ======== 281*5ef5f3c2SLevente Révészxra1202 05 06 07 08 09 0A 282*5ef5f3c2SLevente Révész========== ======== ======== ========== =========== ============ ======== 283*5ef5f3c2SLevente Révész 284*5ef5f3c2SLevente RévészOverview of functions 285*5ef5f3c2SLevente Révész===================== 286*5ef5f3c2SLevente Révész 287*5ef5f3c2SLevente RévészThis section lists chip functions that are supported by the driver 288*5ef5f3c2SLevente Révészalready, or are at least common in multiple chips. 289*5ef5f3c2SLevente Révész 290*5ef5f3c2SLevente RévészInput, Output, Invert, Direction 291*5ef5f3c2SLevente Révész-------------------------------- 292*5ef5f3c2SLevente Révész 293*5ef5f3c2SLevente RévészThe basic 4 GPIO functions are present in all but one chip category, i.e. 294*5ef5f3c2SLevente Révész`Chips with LED blink and intensity control`_ are missing the invert 295*5ef5f3c2SLevente Révészregister. 296*5ef5f3c2SLevente Révész 297*5ef5f3c2SLevente Révész3 different layouts are used for these registers: 298*5ef5f3c2SLevente Révész 299*5ef5f3c2SLevente Révész 1. banks 0, 1, 2, 3 with bank offsets of 2^n 300*5ef5f3c2SLevente Révész - all other chips 301*5ef5f3c2SLevente Révész 302*5ef5f3c2SLevente Révész 2. banks 0, 1, 2, 3 with closely packed banks 303*5ef5f3c2SLevente Révész - pcal6534 304*5ef5f3c2SLevente Révész 305*5ef5f3c2SLevente Révész 3. banks 0, 5, 1, 4 with bank offsets of 2^n 306*5ef5f3c2SLevente Révész - pca9574 307*5ef5f3c2SLevente Révész - pca9575 308*5ef5f3c2SLevente Révész 309*5ef5f3c2SLevente RévészInterrupts 310*5ef5f3c2SLevente Révész---------- 311*5ef5f3c2SLevente Révész 312*5ef5f3c2SLevente RévészOnly an interrupt mask register 313*5ef5f3c2SLevente Révész~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 314*5ef5f3c2SLevente RévészThe same layout is used for all of these: 315*5ef5f3c2SLevente Révész 316*5ef5f3c2SLevente Révész 1. bank 5 with bank offsets of 2^n 317*5ef5f3c2SLevente Révész - pca9505 318*5ef5f3c2SLevente Révész - pca9506 319*5ef5f3c2SLevente Révész - pca9698 320*5ef5f3c2SLevente Révész 321*5ef5f3c2SLevente RévészInterrupt mask and interrupt status registers 322*5ef5f3c2SLevente Révész~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 323*5ef5f3c2SLevente RévészThese work the same way in all of the chips: mask and status have 324*5ef5f3c2SLevente Révészone bit per line, 1 in the mask means interrupt enabled. 325*5ef5f3c2SLevente Révész 326*5ef5f3c2SLevente RévészLayouts: 327*5ef5f3c2SLevente Révész 328*5ef5f3c2SLevente Révész 1. base offset 0x40, bank 5 and bank 6, bank offsets of 2^n 329*5ef5f3c2SLevente Révész - pcal6408 330*5ef5f3c2SLevente Révész - pcal6416 331*5ef5f3c2SLevente Révész - pcal9535 332*5ef5f3c2SLevente Révész - pcal9554b 333*5ef5f3c2SLevente Révész - pcal9555a 334*5ef5f3c2SLevente Révész - pcal6524 335*5ef5f3c2SLevente Révész 336*5ef5f3c2SLevente Révész 2. base offset 0x30, bank 5 and 6, closely packed banks 337*5ef5f3c2SLevente Révész - pcal6534 338*5ef5f3c2SLevente Révész 339*5ef5f3c2SLevente Révész 3. bank 6 and 7, bank offsets of 2^n 340*5ef5f3c2SLevente Révész - pca9574 341*5ef5f3c2SLevente Révész - pca9575 342*5ef5f3c2SLevente Révész 343*5ef5f3c2SLevente Révész 4. bank 5 and 7, bank offsets of 2^n 344*5ef5f3c2SLevente Révész - xra1202 345*5ef5f3c2SLevente Révész 346*5ef5f3c2SLevente RévészInterrupt on specific edges 347*5ef5f3c2SLevente Révész~~~~~~~~~~~~~~~~~~~~~~~~~~~ 348*5ef5f3c2SLevente Révész`PCAL chips with extended interrupt and output configuration functions`_ 349*5ef5f3c2SLevente Révészhave an int_edge register. This contains 2 bits per line, one of 4 events 350*5ef5f3c2SLevente Révészcan be selected for each line: 351*5ef5f3c2SLevente Révész 352*5ef5f3c2SLevente Révész 0: level, 1: rising edge, 2: falling edge, 3: any edge 353*5ef5f3c2SLevente Révész 354*5ef5f3c2SLevente RévészLayouts: 355*5ef5f3c2SLevente Révész 356*5ef5f3c2SLevente Révész 1. base offset 0x40, bank 7, bank offsets of 2^n 357*5ef5f3c2SLevente Révész 358*5ef5f3c2SLevente Révész - pcal6524 359*5ef5f3c2SLevente Révész 360*5ef5f3c2SLevente Révész 2. base offset 0x30, bank 7 + offset 0x01, closely packed banks 361*5ef5f3c2SLevente Révész (out_conf is 1 byte, not (lines/8) bytes, hence the 0x01 offset) 362*5ef5f3c2SLevente Révész 363*5ef5f3c2SLevente Révész - pcal6534 364*5ef5f3c2SLevente Révész 365*5ef5f3c2SLevente Révész`XRA1202`_ chips have a different mechanism for the same thing: they have 366*5ef5f3c2SLevente Révésza rising mask and a falling mask, with one bit per line. 367*5ef5f3c2SLevente Révész 368*5ef5f3c2SLevente RévészLayout: 369*5ef5f3c2SLevente Révész 370*5ef5f3c2SLevente Révész 1. bank 5, bank offsets of 2^n 371*5ef5f3c2SLevente Révész 372*5ef5f3c2SLevente RévészInput latch 373*5ef5f3c2SLevente Révész----------- 374*5ef5f3c2SLevente Révész 375*5ef5f3c2SLevente RévészOnly `Basic PCAL chips`_ and 376*5ef5f3c2SLevente Révész`PCAL chips with extended interrupt and output configuration functions`_ 377*5ef5f3c2SLevente Révészhave this function. When the latch is enabled, the interrupt is not cleared 378*5ef5f3c2SLevente Révészuntil the input port is read. When the latch is disabled, the interrupt 379*5ef5f3c2SLevente Révészis cleared even if the input register is not read, if the input pin returns 380*5ef5f3c2SLevente Révészto the logic value it had before generating the interrupt. Defaults to latch 381*5ef5f3c2SLevente Révészdisabled. 382*5ef5f3c2SLevente Révész 383*5ef5f3c2SLevente RévészCurrently the driver enables the latch for each line with interrupt 384*5ef5f3c2SLevente Révészenabled. 385*5ef5f3c2SLevente Révész 386*5ef5f3c2SLevente Révész 1. base offset 0x40, bank 2, bank offsets of 2^n 387*5ef5f3c2SLevente Révész - pcal6408 388*5ef5f3c2SLevente Révész - pcal6416 389*5ef5f3c2SLevente Révész - pcal9535 390*5ef5f3c2SLevente Révész - pcal9554b 391*5ef5f3c2SLevente Révész - pcal9555a 392*5ef5f3c2SLevente Révész - pcal6524 393*5ef5f3c2SLevente Révész 394*5ef5f3c2SLevente Révész 2. base offset 0x30, bank 2, closely packed banks 395*5ef5f3c2SLevente Révész - pcal6534 396*5ef5f3c2SLevente Révész 397*5ef5f3c2SLevente RévészPull-up and pull-down 398*5ef5f3c2SLevente Révész--------------------- 399*5ef5f3c2SLevente Révész 400*5ef5f3c2SLevente Révész`Basic PCAL chips`_ and 401*5ef5f3c2SLevente Révész`PCAL chips with extended interrupt and output configuration functions`_ 402*5ef5f3c2SLevente Révészuse the same mechanism: their pull_en register enables the pull-up or pull-down 403*5ef5f3c2SLevente Révészfunction, and their pull_sel register chooses the direction. They all use one 404*5ef5f3c2SLevente Révészbit per line. 405*5ef5f3c2SLevente Révész 406*5ef5f3c2SLevente Révész 0: pull-down, 1: pull-up 407*5ef5f3c2SLevente Révész 408*5ef5f3c2SLevente RévészLayouts: 409*5ef5f3c2SLevente Révész 410*5ef5f3c2SLevente Révész 1. base offset 0x40, bank 3 (en) and 4 (sel), bank offsets of 2^n 411*5ef5f3c2SLevente Révész - pcal6408 412*5ef5f3c2SLevente Révész - pcal6416 413*5ef5f3c2SLevente Révész - pcal9535 414*5ef5f3c2SLevente Révész - pcal9554b 415*5ef5f3c2SLevente Révész - pcal9555a 416*5ef5f3c2SLevente Révész - pcal6524 417*5ef5f3c2SLevente Révész 418*5ef5f3c2SLevente Révész 2. base offset 0x30, bank 3 (en) and 4 (sel), closely packed banks 419*5ef5f3c2SLevente Révész - pcal6534 420*5ef5f3c2SLevente Révész 421*5ef5f3c2SLevente Révész`PCA957X chips with a completely different register layout`_ have a pull_sel 422*5ef5f3c2SLevente Révészregister with one bit per line, and a global pull_en bit in their config 423*5ef5f3c2SLevente Révészregister. 424*5ef5f3c2SLevente Révész 425*5ef5f3c2SLevente RévészLayout: 426*5ef5f3c2SLevente Révész 427*5ef5f3c2SLevente Révész 1. bank 2 (config), bank 3 (sel), bank offsets of 2^n 428*5ef5f3c2SLevente Révész - pca9574 429*5ef5f3c2SLevente Révész - pca9575 430*5ef5f3c2SLevente Révész 431*5ef5f3c2SLevente Révész`XRA1202`_ chips can only pull-up. They have a pullup_en register. 432*5ef5f3c2SLevente Révész 433*5ef5f3c2SLevente RévészLayout: 434*5ef5f3c2SLevente Révész 435*5ef5f3c2SLevente Révész 1. bank 4, bank offsets of 2^n 436*5ef5f3c2SLevente Révész - xra1202 437*5ef5f3c2SLevente Révész 438*5ef5f3c2SLevente RévészPush-pull and open-drain 439*5ef5f3c2SLevente Révész------------------------ 440*5ef5f3c2SLevente Révész 441*5ef5f3c2SLevente Révész`Chips with additional int_mask and out_conf registers`_ have this function, 442*5ef5f3c2SLevente Révészbut only for select IO ports. Register has 1 bit per 2 lines. In pca9698, 443*5ef5f3c2SLevente Révészonly port0 and port1 have this function. 444*5ef5f3c2SLevente Révész 445*5ef5f3c2SLevente Révész 0: open-drain, 1: push-pull 446*5ef5f3c2SLevente Révész 447*5ef5f3c2SLevente RévészLayout: 448*5ef5f3c2SLevente Révész 449*5ef5f3c2SLevente Révész 1. base offset 5*bankoffset 450*5ef5f3c2SLevente Révész - pca9698 451*5ef5f3c2SLevente Révész 452*5ef5f3c2SLevente Révész`Basic PCAL chips`_ have 1 bit per port in one single out_conf register. 453*5ef5f3c2SLevente RévészOnly whole ports can be configured. 454*5ef5f3c2SLevente Révész 455*5ef5f3c2SLevente Révész 0: push-pull, 1: open-drain 456*5ef5f3c2SLevente Révész 457*5ef5f3c2SLevente RévészLayout: 458*5ef5f3c2SLevente Révész 459*5ef5f3c2SLevente Révész 1. base offset 0x4F 460*5ef5f3c2SLevente Révész - pcal6408 461*5ef5f3c2SLevente Révész - pcal6416 462*5ef5f3c2SLevente Révész - pcal9535 463*5ef5f3c2SLevente Révész - pcal9554b 464*5ef5f3c2SLevente Révész - pcal9555a 465*5ef5f3c2SLevente Révész 466*5ef5f3c2SLevente Révész`PCAL chips with extended interrupt and output configuration functions`_ 467*5ef5f3c2SLevente Révészcan set this for each line individually. They have the same per-port out_conf 468*5ef5f3c2SLevente Révészregister as `Basic PCAL chips`_, but they also have an indiv_out_conf register 469*5ef5f3c2SLevente Révészwith one bit per line, which inverts the effect of the port-wise setting. 470*5ef5f3c2SLevente Révész 471*5ef5f3c2SLevente Révész 0: push-pull, 1: open-drain 472*5ef5f3c2SLevente Révész 473*5ef5f3c2SLevente RévészLayouts: 474*5ef5f3c2SLevente Révész 475*5ef5f3c2SLevente Révész 1. base offset 0x40 + 7*bankoffset (out_conf), 476*5ef5f3c2SLevente Révész base offset 0x60, bank 4 (indiv_out_conf) with bank offset of 2^n 477*5ef5f3c2SLevente Révész 478*5ef5f3c2SLevente Révész - pcal6524 479*5ef5f3c2SLevente Révész 480*5ef5f3c2SLevente Révész 2. base offset 0x30 + 7*banksize (out_conf), 481*5ef5f3c2SLevente Révész base offset 0x54, bank 4 (indiv_out_conf), closely packed banks 482*5ef5f3c2SLevente Révész 483*5ef5f3c2SLevente Révész - pcal6534 484*5ef5f3c2SLevente Révész 485*5ef5f3c2SLevente RévészThis function is currently not supported by the driver. 486*5ef5f3c2SLevente Révész 487*5ef5f3c2SLevente RévészOutput drive strength 488*5ef5f3c2SLevente Révész--------------------- 489*5ef5f3c2SLevente Révész 490*5ef5f3c2SLevente RévészOnly PCAL chips have this function. 2 bits per line. 491*5ef5f3c2SLevente Révész 492*5ef5f3c2SLevente Révész==== ============== 493*5ef5f3c2SLevente Révészbits drive strength 494*5ef5f3c2SLevente Révész==== ============== 495*5ef5f3c2SLevente Révész 00 0.25x 496*5ef5f3c2SLevente Révész 01 0.50x 497*5ef5f3c2SLevente Révész 10 0.75x 498*5ef5f3c2SLevente Révész 11 1.00x 499*5ef5f3c2SLevente Révész==== ============== 500*5ef5f3c2SLevente Révész 501*5ef5f3c2SLevente Révész 1. base offset 0x40, bank 0 and 1, bank offsets of 2^n 502*5ef5f3c2SLevente Révész - pcal6408 503*5ef5f3c2SLevente Révész - pcal6416 504*5ef5f3c2SLevente Révész - pcal9535 505*5ef5f3c2SLevente Révész - pcal9554b 506*5ef5f3c2SLevente Révész - pcal9555a 507*5ef5f3c2SLevente Révész - pcal6524 508*5ef5f3c2SLevente Révész 509*5ef5f3c2SLevente Révész 2. base offset 0x30, bank 0 and 1, closely packed banks 510*5ef5f3c2SLevente Révész - pcal6534 511*5ef5f3c2SLevente Révész 512*5ef5f3c2SLevente RévészCurrently not supported by the driver. 513*5ef5f3c2SLevente Révész 514*5ef5f3c2SLevente RévészDatasheets 515*5ef5f3c2SLevente Révész========== 516*5ef5f3c2SLevente Révész 517*5ef5f3c2SLevente Révész- MAX7310: https://datasheets.maximintegrated.com/en/ds/MAX7310.pdf 518*5ef5f3c2SLevente Révész- MAX7312: https://datasheets.maximintegrated.com/en/ds/MAX7312.pdf 519*5ef5f3c2SLevente Révész- MAX7313: https://datasheets.maximintegrated.com/en/ds/MAX7313.pdf 520*5ef5f3c2SLevente Révész- MAX7315: https://datasheets.maximintegrated.com/en/ds/MAX7315.pdf 521*5ef5f3c2SLevente Révész- MAX7318: https://datasheets.maximintegrated.com/en/ds/MAX7318.pdf 522*5ef5f3c2SLevente Révész- PCA6107: https://pdf1.alldatasheet.com/datasheet-pdf/view/161780/TI/PCA6107.html 523*5ef5f3c2SLevente Révész- PCA6408A: https://www.nxp.com/docs/en/data-sheet/PCA6408A.pdf 524*5ef5f3c2SLevente Révész- PCA6416A: https://www.nxp.com/docs/en/data-sheet/PCA6416A.pdf 525*5ef5f3c2SLevente Révész- PCA9505: https://www.nxp.com/docs/en/data-sheet/PCA9505_9506.pdf 526*5ef5f3c2SLevente Révész- PCA9505: https://www.nxp.com/docs/en/data-sheet/PCA9505_9506.pdf 527*5ef5f3c2SLevente Révész- PCA9534: https://www.nxp.com/docs/en/data-sheet/PCA9534.pdf 528*5ef5f3c2SLevente Révész- PCA9535: https://www.nxp.com/docs/en/data-sheet/PCA9535_PCA9535C.pdf 529*5ef5f3c2SLevente Révész- PCA9536: https://www.nxp.com/docs/en/data-sheet/PCA9536.pdf 530*5ef5f3c2SLevente Révész- PCA9537: https://www.nxp.com/docs/en/data-sheet/PCA9537.pdf 531*5ef5f3c2SLevente Révész- PCA9538: https://www.nxp.com/docs/en/data-sheet/PCA9538.pdf 532*5ef5f3c2SLevente Révész- PCA9539: https://www.nxp.com/docs/en/data-sheet/PCA9539_PCA9539R.pdf 533*5ef5f3c2SLevente Révész- PCA9554: https://www.nxp.com/docs/en/data-sheet/PCA9554_9554A.pdf 534*5ef5f3c2SLevente Révész- PCA9555: https://www.nxp.com/docs/en/data-sheet/PCA9555.pdf 535*5ef5f3c2SLevente Révész- PCA9556: https://www.nxp.com/docs/en/data-sheet/PCA9556.pdf 536*5ef5f3c2SLevente Révész- PCA9557: https://www.nxp.com/docs/en/data-sheet/PCA9557.pdf 537*5ef5f3c2SLevente Révész- PCA9574: https://www.nxp.com/docs/en/data-sheet/PCA9574.pdf 538*5ef5f3c2SLevente Révész- PCA9575: https://www.nxp.com/docs/en/data-sheet/PCA9575.pdf 539*5ef5f3c2SLevente Révész- PCA9698: https://www.nxp.com/docs/en/data-sheet/PCA9698.pdf 540*5ef5f3c2SLevente Révész- PCAL6408A: https://www.nxp.com/docs/en/data-sheet/PCAL6408A.pdf 541*5ef5f3c2SLevente Révész- PCAL6416A: https://www.nxp.com/docs/en/data-sheet/PCAL6416A.pdf 542*5ef5f3c2SLevente Révész- PCAL6524: https://www.nxp.com/docs/en/data-sheet/PCAL6524.pdf 543*5ef5f3c2SLevente Révész- PCAL6534: https://www.nxp.com/docs/en/data-sheet/PCAL6534.pdf 544*5ef5f3c2SLevente Révész- PCAL9535A: https://www.nxp.com/docs/en/data-sheet/PCAL9535A.pdf 545*5ef5f3c2SLevente Révész- PCAL9554B: https://www.nxp.com/docs/en/data-sheet/PCAL9554B_PCAL9554C.pdf 546*5ef5f3c2SLevente Révész- PCAL9555A: https://www.nxp.com/docs/en/data-sheet/PCAL9555A.pdf 547*5ef5f3c2SLevente Révész- TCA6408A: https://www.ti.com/lit/gpn/tca6408a 548*5ef5f3c2SLevente Révész- TCA6416: https://www.ti.com/lit/gpn/tca6416 549*5ef5f3c2SLevente Révész- TCA6424: https://www.ti.com/lit/gpn/tca6424 550*5ef5f3c2SLevente Révész- TCA9539: https://www.ti.com/lit/gpn/tca9539 551*5ef5f3c2SLevente Révész- TCA9554: https://www.ti.com/lit/gpn/tca9554 552*5ef5f3c2SLevente Révész- XRA1202: https://assets.maxlinear.com/web/documents/xra1202_1202p_101_042213.pdf 553