19d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich/* 23f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich * Analog Devices ADP5589/ADP5585 I/O Expander and QWERTY Keypad Controller 39d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich * 49d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich * Copyright 2010-2011 Analog Devices Inc. 59d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich * 69d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich * Licensed under the GPL-2. 79d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich */ 89d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 99d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#ifndef _ADP5589_H 109d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define _ADP5589_H 119d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 123f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich/* 133f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich * ADP5589 specific GPI and Keymap defines 143f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich */ 159d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 169d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_KEYMAPSIZE 88 179d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 189d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_ROW0 97 199d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_ROW1 98 209d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_ROW2 99 219d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_ROW3 100 229d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_ROW4 101 239d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_ROW5 102 249d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_ROW6 103 259d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_ROW7 104 269d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL0 105 279d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL1 106 289d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL2 107 299d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL3 108 309d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL4 109 319d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL5 110 329d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL6 111 339d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL7 112 349d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL8 113 359d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL9 114 369d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL10 115 379d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define GPI_LOGIC1 116 389d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define GPI_LOGIC2 117 399d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 409d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_ROW_BASE ADP5589_GPI_PIN_ROW0 419d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_ROW_END ADP5589_GPI_PIN_ROW7 429d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL_BASE ADP5589_GPI_PIN_COL0 439d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_COL_END ADP5589_GPI_PIN_COL10 449d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 459d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_BASE ADP5589_GPI_PIN_ROW_BASE 469d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPI_PIN_END ADP5589_GPI_PIN_COL_END 479d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 489d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_GPIMAPSIZE_MAX (ADP5589_GPI_PIN_END - ADP5589_GPI_PIN_BASE + 1) 499d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 503f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich/* 513f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich * ADP5585 specific GPI and Keymap defines 523f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich */ 533f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich 543f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_KEYMAPSIZE 30 553f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich 563f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_ROW0 37 573f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_ROW1 38 583f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_ROW2 39 593f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_ROW3 40 603f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_ROW4 41 613f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_ROW5 42 623f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_COL0 43 633f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_COL1 44 643f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_COL2 45 653f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_COL3 46 663f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_COL4 47 673f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define GPI_LOGIC 48 683f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich 693f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_ROW_BASE ADP5585_GPI_PIN_ROW0 703f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_ROW_END ADP5585_GPI_PIN_ROW5 713f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_COL_BASE ADP5585_GPI_PIN_COL0 723f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_COL_END ADP5585_GPI_PIN_COL4 733f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich 743f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_BASE ADP5585_GPI_PIN_ROW_BASE 753f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPI_PIN_END ADP5585_GPI_PIN_COL_END 763f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich 773f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_GPIMAPSIZE_MAX (ADP5585_GPI_PIN_END - ADP5585_GPI_PIN_BASE + 1) 783f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich 799d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerichstruct adp5589_gpi_map { 809d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned short pin; 819d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned short sw_evt; 829d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich}; 839d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 849d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich/* scan_cycle_time */ 859d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_SCAN_CYCLE_10ms 0 869d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_SCAN_CYCLE_20ms 1 879d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_SCAN_CYCLE_30ms 2 889d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define ADP5589_SCAN_CYCLE_40ms 3 899d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 909d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich/* RESET_CFG */ 919d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_PULSE_WIDTH_500us 0 929d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_PULSE_WIDTH_1ms 1 939d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_PULSE_WIDTH_2ms 2 949d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_PULSE_WIDTH_10ms 3 959d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 969d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_TRIG_TIME_0ms (0 << 2) 979d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_TRIG_TIME_1000ms (1 << 2) 989d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_TRIG_TIME_1500ms (2 << 2) 999d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_TRIG_TIME_2000ms (3 << 2) 1009d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_TRIG_TIME_2500ms (4 << 2) 1019d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_TRIG_TIME_3000ms (5 << 2) 1029d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_TRIG_TIME_3500ms (6 << 2) 1039d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_TRIG_TIME_4000ms (7 << 2) 1049d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 1059d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET_PASSTHRU_EN (1 << 5) 1069d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET1_POL_HIGH (1 << 6) 1079d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET1_POL_LOW (0 << 6) 1089d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET2_POL_HIGH (1 << 7) 1099d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#define RESET2_POL_LOW (0 << 7) 1109d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 1113f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich/* ADP5589 Mask Bits: 1129d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich * C C C C C C C C C C C | R R R R R R R R 1139d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich * 1 9 8 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 1149d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich * 0 1159d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich * ---------------- BIT ------------------ 1169d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich * 1 1 1 1 1 1 1 1 1 0 0 | 0 0 0 0 0 0 0 0 1179d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich * 8 7 6 5 4 3 2 1 0 9 8 | 7 6 5 4 3 2 1 0 1189d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich */ 1199d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 1203f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP_ROW(x) (1 << (x)) 1213f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP_COL(x) (1 << (x + 8)) 1223f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5589_ROW_MASK 0xFF 1233f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5589_COL_MASK 0xFF 1243f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5589_COL_SHIFT 8 1253f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5589_MAX_ROW_NUM 7 1263f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5589_MAX_COL_NUM 10 1273f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich 1283f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich/* ADP5585 Mask Bits: 1293f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich * C C C C C | R R R R R R 1303f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich * 4 3 2 1 0 | 5 4 3 2 1 0 1313f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich * 1323f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich * ---- BIT -- ----------- 1333f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich * 1 0 0 0 0 | 0 0 0 0 0 0 1343f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich * 0 9 8 7 6 | 5 4 3 2 1 0 1353f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich */ 1363f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich 1373f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_ROW_MASK 0x3F 1383f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_COL_MASK 0x1F 1393f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_ROW_SHIFT 0 1403f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_COL_SHIFT 6 1413f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_MAX_ROW_NUM 5 1423f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_MAX_COL_NUM 4 1433f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich 1443f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_ROW(x) (1 << ((x) & ADP5585_ROW_MASK)) 1453f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich#define ADP5585_COL(x) (1 << (((x) & ADP5585_COL_MASK) + ADP5585_COL_SHIFT)) 1463f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich 1473f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich/* Put one of these structures in i2c_board_info platform_data */ 1489d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 1499d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerichstruct adp5589_kpad_platform_data { 1509d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned keypad_en_mask; /* Keypad (Rows/Columns) enable mask */ 1519d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich const unsigned short *keymap; /* Pointer to keymap */ 1529d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned short keymapsize; /* Keymap size */ 1539d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich bool repeat; /* Enable key repeat */ 1543f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich bool en_keylock; /* Enable key lock feature (ADP5589 only)*/ 1553f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich unsigned char unlock_key1; /* Unlock Key 1 (ADP5589 only) */ 1563f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich unsigned char unlock_key2; /* Unlock Key 2 (ADP5589 only) */ 1573f48e7354358519e5b93f7f755ec270b3f8eafa0Michael Hennerich unsigned char unlock_timer; /* Time in seconds [0..7] between the two unlock keys 0=disable (ADP5589 only) */ 1589d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned char scan_cycle_time; /* Time between consecutive scan cycles */ 1599d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned char reset_cfg; /* Reset config */ 1609d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned short reset1_key_1; /* Reset Key 1 */ 1619d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned short reset1_key_2; /* Reset Key 2 */ 1629d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned short reset1_key_3; /* Reset Key 3 */ 1639d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned short reset2_key_1; /* Reset Key 1 */ 1649d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned short reset2_key_2; /* Reset Key 2 */ 1659d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned debounce_dis_mask; /* Disable debounce mask */ 1669d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned pull_dis_mask; /* Disable all pull resistors mask */ 1679d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned pullup_en_100k; /* Pull-Up 100k Enable Mask */ 1689d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned pullup_en_300k; /* Pull-Up 300k Enable Mask */ 1699d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned pulldown_en_300k; /* Pull-Down 300k Enable Mask */ 1709d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich const struct adp5589_gpi_map *gpimap; 1719d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich unsigned short gpimapsize; 1729d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich const struct adp5589_gpio_platform_data *gpio_data; 1739d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich}; 1749d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 1759d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerichstruct i2c_client; /* forward declaration */ 1769d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 1779d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerichstruct adp5589_gpio_platform_data { 1789d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich int gpio_start; /* GPIO Chip base # */ 1799d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich int (*setup)(struct i2c_client *client, 1809d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich int gpio, unsigned ngpio, 1819d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich void *context); 1829d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich int (*teardown)(struct i2c_client *client, 1839d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich int gpio, unsigned ngpio, 1849d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich void *context); 1859d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich void *context; 1869d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich}; 1879d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich 1889d2e173644bb5c42ff1b280fbdda3f195a7cf1f7Michael Hennerich#endif 189