/* * Set output value of IO pins in 'reg_bit' to corresponding value in 'data' * 0 = low, 1 = high */ int tca642x_set_val(uchar chip, uint8_t gpio_bank, uint8_t reg_bit, uint8_t data) { uint8_t out_reg = tca642x_regs[gpio_bank].output_reg; return tca642x_reg_write(chip, out_reg, reg_bit, data); }
/* * Set read polarity of IO pins in 'reg_bit' to corresponding value in 'data' * 0 = read pin value, 1 = read inverted pin value */ int tca642x_set_pol(uchar chip, uint8_t gpio_bank, uint8_t reg_bit, uint8_t data) { uint8_t pol_reg = tca642x_regs[gpio_bank].polarity_reg; return tca642x_reg_write(chip, pol_reg, reg_bit, data); }
/* * Set direction of IO pins in 'reg_bit' to corresponding value in 'data' * 0 = output, 1 = input */ int tca642x_set_dir(uchar chip, uint8_t gpio_bank, uint8_t reg_bit, uint8_t data) { uint8_t config_reg = tca642x_regs[gpio_bank].configuration_reg; return tca642x_reg_write(chip, config_reg, reg_bit, data); }
/* * Set the inital register states for the tca642x gpio expander */ int tca642x_set_inital_state(uchar chip, struct tca642x_bank_info init_data[]) { int i, ret; uint8_t config_reg; uint8_t polarity_reg; uint8_t output_reg; for (i = 0; i < 3; i++) { config_reg = tca642x_regs[i].configuration_reg; ret = tca642x_reg_write(chip, config_reg, 0xff, init_data[i].configuration_reg); polarity_reg = tca642x_regs[i].polarity_reg; ret = tca642x_reg_write(chip, polarity_reg, 0xff, init_data[i].polarity_reg); output_reg = tca642x_regs[i].output_reg; ret = tca642x_reg_write(chip, output_reg, 0xff, init_data[i].output_reg); } return ret; }