Lines Matching refs:pin
76 static int meson_get_bank(struct meson_domain *domain, unsigned int pin, in meson_get_bank() argument
82 if (pin >= domain->data->banks[i].first && in meson_get_bank()
83 pin <= domain->data->banks[i].last) { in meson_get_bank()
102 static int meson_get_domain_and_bank(struct meson_pinctrl *pc, unsigned int pin, in meson_get_domain_and_bank() argument
111 if (pin >= d->data->pin_base && in meson_get_domain_and_bank()
112 pin < d->data->pin_base + d->data->num_pins) { in meson_get_domain_and_bank()
114 return meson_get_bank(d, pin, bank); in meson_get_domain_and_bank()
130 static void meson_calc_reg_and_bit(struct meson_bank *bank, unsigned int pin, in meson_calc_reg_and_bit() argument
137 *bit = desc->bit + pin - bank->first; in meson_calc_reg_and_bit()
193 unsigned int pin, int sel_group) in meson_pmx_disable_other_groups() argument
205 if (group->pins[j] == pin) { in meson_pmx_disable_other_groups()
289 static int meson_pinconf_set(struct pinctrl_dev *pcdev, unsigned int pin, in meson_pinconf_set() argument
300 ret = meson_get_domain_and_bank(pc, pin, &domain, &bank); in meson_pinconf_set()
310 dev_dbg(pc->dev, "pin %u: disable bias\n", pin); in meson_pinconf_set()
312 meson_calc_reg_and_bit(bank, pin, REG_PULL, ®, &bit); in meson_pinconf_set()
319 dev_dbg(pc->dev, "pin %u: enable pull-up\n", pin); in meson_pinconf_set()
321 meson_calc_reg_and_bit(bank, pin, REG_PULLEN, in meson_pinconf_set()
328 meson_calc_reg_and_bit(bank, pin, REG_PULL, ®, &bit); in meson_pinconf_set()
335 dev_dbg(pc->dev, "pin %u: enable pull-down\n", pin); in meson_pinconf_set()
337 meson_calc_reg_and_bit(bank, pin, REG_PULLEN, in meson_pinconf_set()
344 meson_calc_reg_and_bit(bank, pin, REG_PULL, ®, &bit); in meson_pinconf_set()
358 static int meson_pinconf_get_pull(struct meson_pinctrl *pc, unsigned int pin) in meson_pinconf_get_pull() argument
365 ret = meson_get_domain_and_bank(pc, pin, &domain, &bank); in meson_pinconf_get_pull()
369 meson_calc_reg_and_bit(bank, pin, REG_PULLEN, ®, &bit); in meson_pinconf_get_pull()
378 meson_calc_reg_and_bit(bank, pin, REG_PULL, ®, &bit); in meson_pinconf_get_pull()
393 static int meson_pinconf_get(struct pinctrl_dev *pcdev, unsigned int pin, in meson_pinconf_get() argument
404 if (meson_pinconf_get_pull(pc, pin) == param) in meson_pinconf_get()
414 dev_dbg(pc->dev, "pinconf for pin %u is %lu\n", pin, *config); in meson_pinconf_get()
471 unsigned int reg, bit, pin; in meson_gpio_direction_input() local
475 pin = domain->data->pin_base + gpio; in meson_gpio_direction_input()
476 ret = meson_get_bank(domain, pin, &bank); in meson_gpio_direction_input()
480 meson_calc_reg_and_bit(bank, pin, REG_DIR, ®, &bit); in meson_gpio_direction_input()
489 unsigned int reg, bit, pin; in meson_gpio_direction_output() local
493 pin = domain->data->pin_base + gpio; in meson_gpio_direction_output()
494 ret = meson_get_bank(domain, pin, &bank); in meson_gpio_direction_output()
498 meson_calc_reg_and_bit(bank, pin, REG_DIR, ®, &bit); in meson_gpio_direction_output()
503 meson_calc_reg_and_bit(bank, pin, REG_OUT, ®, &bit); in meson_gpio_direction_output()
511 unsigned int reg, bit, pin; in meson_gpio_set() local
515 pin = domain->data->pin_base + gpio; in meson_gpio_set()
516 ret = meson_get_bank(domain, pin, &bank); in meson_gpio_set()
520 meson_calc_reg_and_bit(bank, pin, REG_OUT, ®, &bit); in meson_gpio_set()
528 unsigned int reg, bit, val, pin; in meson_gpio_get() local
532 pin = domain->data->pin_base + gpio; in meson_gpio_get()
533 ret = meson_get_bank(domain, pin, &bank); in meson_gpio_get()
537 meson_calc_reg_and_bit(bank, pin, REG_IN, ®, &bit); in meson_gpio_get()