1/* 2 * Copyright 2013 Texas Instruments, Inc. 3 * Author: Dan Murphy <dmurphy@ti.com> 4 * 5 * Derived work from the pca953x.c driver 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License as 9 * published by the Free Software Foundation; either version 2 of 10 * the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 20 * MA 02111-1307 USA 21 */ 22 23#ifndef __TCA642X_H_ 24#define __TCA642X_H_ 25 26#ifdef CONFIG_CMD_TCA642X 27enum { 28 TCA642X_CMD_INFO, 29 TCA642X_CMD_DEVICE, 30 TCA642X_CMD_OUTPUT, 31 TCA642X_CMD_INPUT, 32 TCA642X_CMD_INVERT, 33}; 34#endif 35 36#define TCA642X_OUT_LOW 0 37#define TCA642X_OUT_HIGH 1 38#define TCA642X_POL_NORMAL 0 39#define TCA642X_POL_INVERT 1 40#define TCA642X_DIR_OUT 0 41#define TCA642X_DIR_IN 1 42 43/* Default to an address that hopefully won't corrupt other i2c devices */ 44#ifndef CFG_SYS_I2C_TCA642X_ADDR 45#define CFG_SYS_I2C_TCA642X_ADDR (~0) 46#endif 47 48/* Default to an address that hopefully won't corrupt other i2c devices */ 49#ifndef CFG_SYS_I2C_TCA642X_BUS_NUM 50#define CFG_SYS_I2C_TCA642X_BUS_NUM (0) 51#endif 52 53struct tca642x_bank_info { 54 uint8_t input_reg; 55 uint8_t output_reg; 56 uint8_t polarity_reg; 57 uint8_t configuration_reg; 58}; 59 60int tca642x_set_val(uchar chip, uint8_t gpio_bank, 61 uint8_t reg_bit, uint8_t data); 62int tca642x_set_pol(uchar chip, uint8_t gpio_bank, 63 uint8_t reg_bit, uint8_t data); 64int tca642x_set_dir(uchar chip, uint8_t gpio_bank, 65 uint8_t reg_bit, uint8_t data); 66int tca642x_get_val(uchar chip, uint8_t gpio_bank); 67int tca642x_set_inital_state(uchar chip, struct tca642x_bank_info init_data[]); 68 69#endif /* __TCA642X_H_ */ 70