-
- unsigned char reg = gpio_read_reg(h);
- reg &= ~(1 << shift_dir);
- reg &= ~(1 << shift_val);
- reg |= (pullup << shift_val);
- gpio_write_reg(h, reg);
+ unsigned char reg;
+
+ if (2 > gpio) {
+ reg = gpio_read_reg(h, GPIO_01_RD_CTRL);
+ reg &= ~(gpio_dir_mask(gpio)); /* set input direction */
+ reg &= ~(1 << shift_val); /* reset gpio value */
+ reg |= (pullup << shift_val); /* pullup gpio value */
+ gpio_write_reg(h, GPIO_01_WR_CTRL, reg);
+ } else {
+ reg = gpio_read_reg(h, GPIO_23_DIR_RD_CTRL);
+ reg &= ~(gpio_dir_mask(gpio)); /* set input direction */
+ gpio_write_reg(h, GPIO_23_DIR_WR_CTRL, reg);
+
+ reg = gpio_read_reg(h, GPIO_23_VAL_RD_CTRL);
+ reg &= ~(1 << shift_val); /* reset gpio value */
+ reg |= (pullup << shift_val); /* pullup gpio value */
+ gpio_write_reg(h, GPIO_23_VAL_WR_CTRL, reg);
+ }