Lines Matching refs:offset
267 static int rk805_gpio_get(struct gpio_chip *chip, unsigned int offset)
272 if (!pci->pin_cfg[offset].val_msk) {
273 dev_dbg(pci->dev, "getting gpio%d value is not support\n", offset);
277 ret = regmap_read(pci->rk808->regmap, pci->pin_cfg[offset].reg, &val);
279 dev_err(pci->dev, "get gpio%d value failed\n", offset);
283 return !!(val & pci->pin_cfg[offset].val_msk);
286 static void rk805_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
290 if (!pci->pin_cfg[offset].val_msk) {
293 ret = regmap_update_bits(pci->rk808->regmap, pci->pin_cfg[offset].reg, pci->pin_cfg[offset].val_msk,
294 value ? pci->pin_cfg[offset].val_msk : 0);
296 dev_err(pci->dev, "set gpio%d value %d failed\n", offset, value);
300 static int rk805_gpio_direction_input(struct gpio_chip *chip, unsigned int offset)
302 return pinctrl_gpio_direction_input(chip->base + offset);
305 static int rk805_gpio_direction_output(struct gpio_chip *chip, unsigned int offset, int value)
307 rk805_gpio_set(chip, offset, value);
308 return pinctrl_gpio_direction_output(chip->base + offset);
311 static int rk805_gpio_get_direction(struct gpio_chip *chip, unsigned int offset)
318 if (!pci->pin_cfg[offset].dir_msk) {
322 ret = regmap_read(pci->rk808->regmap, pci->pin_cfg[offset].reg, &val);
324 dev_err(pci->dev, "get gpio%d direction failed\n", offset);
328 if (val & pci->pin_cfg[offset].dir_msk) {
436 static int _rk805_pinctrl_set_mux(struct pinctrl_dev *pctldev, unsigned int offset, int mux)
441 if (!pci->pin_cfg[offset].fun_msk) {
446 ret = regmap_update_bits(pci->rk808->regmap, pci->pin_cfg[offset].reg, pci->pin_cfg[offset].fun_msk,
447 pci->pin_cfg[offset].fun_msk);
449 dev_err(pci->dev, "set gpio%d GPIO failed\n", offset);
453 ret = regmap_update_bits(pci->rk808->regmap, pci->pin_cfg[offset].reg, pci->pin_cfg[offset].fun_msk, 0);
455 dev_err(pci->dev, "set gpio%d TS failed\n", offset);
466 static int _rk817_pinctrl_set_mux(struct pinctrl_dev *pctldev, unsigned int offset, int mux)
471 if (!pci->pin_cfg[offset].fun_msk) {
475 mux <<= ffs(pci->pin_cfg[offset].fun_msk) - 1;
476 ret = regmap_update_bits(pci->rk808->regmap, pci->pin_cfg[offset].reg, pci->pin_cfg[offset].fun_msk, mux);
478 dev_err(pci->dev, "set gpio%d func%d failed\n", offset, mux);
488 int offset = group;
493 return _rk805_pinctrl_set_mux(pctldev, offset, mux);
497 return _rk817_pinctrl_set_mux(pctldev, offset, mux);
505 unsigned int offset, bool input)
511 if (!pci->pin_cfg[offset].dir_msk) {
515 ret = regmap_update_bits(pci->rk808->regmap, pci->pin_cfg[offset].reg, pci->pin_cfg[offset].dir_msk,
516 input ? 0 : pci->pin_cfg[offset].dir_msk);
518 dev_err(pci->dev, "set gpio%d direction failed\n", offset);
526 unsigned int offset)
534 return _rk805_pinctrl_set_mux(pctldev, offset, RK805_PINMUX_GPIO);