Lines Matching defs:pin
18 * For each pin controller there are 4 different register ranges that
20 * 1) pin muxing
64 * meson_get_bank() - find the bank containing a given pin
67 * @pin: the pin number
72 static int meson_get_bank(struct meson_pinctrl *pc, unsigned int pin,
78 if (pin >= pc->data->banks[i].first &&
79 pin <= pc->data->banks[i].last) {
89 * meson_calc_reg_and_bit() - calculate register and bit for a pin
91 * @bank: the bank containing the pin
92 * @pin: the pin number
98 unsigned int pin,
104 *bit = (desc->bit + pin - bank->first) * meson_bit_strides[reg_type];
181 unsigned int pin,
189 ret = meson_get_bank(pc, pin, &bank);
193 meson_calc_reg_and_bit(bank, pin, reg_type, ®, &bit);
199 unsigned int pin,
206 ret = meson_get_bank(pc, pin, &bank);
210 meson_calc_reg_and_bit(bank, pin, reg_type, ®, &bit);
219 unsigned int pin,
222 return meson_pinconf_set_gpio_bit(pc, pin, MESON_REG_DIR, !out);
226 unsigned int pin)
228 int ret = meson_pinconf_get_gpio_bit(pc, pin, MESON_REG_DIR);
237 unsigned int pin,
240 return meson_pinconf_set_gpio_bit(pc, pin, MESON_REG_OUT, high);
244 unsigned int pin)
246 return meson_pinconf_get_gpio_bit(pc, pin, MESON_REG_OUT);
250 unsigned int pin,
255 ret = meson_pinconf_set_output(pc, pin, true);
259 return meson_pinconf_set_drive(pc, pin, high);
263 unsigned int pin)
269 ret = meson_get_bank(pc, pin, &bank);
273 meson_calc_reg_and_bit(bank, pin, MESON_REG_PULLEN, ®, &bit);
281 static int meson_pinconf_enable_bias(struct meson_pinctrl *pc, unsigned int pin,
288 ret = meson_get_bank(pc, pin, &bank);
292 meson_calc_reg_and_bit(bank, pin, MESON_REG_PULL, ®, &bit);
300 meson_calc_reg_and_bit(bank, pin, MESON_REG_PULLEN, ®, &bit);
309 unsigned int pin,
321 ret = meson_get_bank(pc, pin, &bank);
325 meson_calc_reg_and_bit(bank, pin, MESON_REG_DS, ®, &bit);
337 "pin %u: invalid drive-strength : %d , default to 4mA\n",
338 pin, drive_strength_ua);
349 static int meson_pinconf_set(struct pinctrl_dev *pcdev, unsigned int pin,
373 ret = meson_pinconf_disable_bias(pc, pin);
376 ret = meson_pinconf_enable_bias(pc, pin, true);
379 ret = meson_pinconf_enable_bias(pc, pin, false);
382 ret = meson_pinconf_set_drive_strength(pc, pin, arg);
385 ret = meson_pinconf_set_output(pc, pin, arg);
388 ret = meson_pinconf_set_output_drive(pc, pin, arg);
401 static int meson_pinconf_get_pull(struct meson_pinctrl *pc, unsigned int pin)
407 ret = meson_get_bank(pc, pin, &bank);
411 meson_calc_reg_and_bit(bank, pin, MESON_REG_PULLEN, ®, &bit);
420 meson_calc_reg_and_bit(bank, pin, MESON_REG_PULL, ®, &bit);
436 unsigned int pin,
447 ret = meson_get_bank(pc, pin, &bank);
451 meson_calc_reg_and_bit(bank, pin, MESON_REG_DS, ®, &bit);
477 static int meson_pinconf_get(struct pinctrl_dev *pcdev, unsigned int pin,
489 if (meson_pinconf_get_pull(pc, pin) == param)
495 ret = meson_pinconf_get_drive_strength(pc, pin, &arg);
500 ret = meson_pinconf_get_output(pc, pin);
506 ret = meson_pinconf_get_output(pc, pin);
510 ret = meson_pinconf_get_drive(pc, pin);
522 dev_dbg(pc->dev, "pinconf for pin %u is %lu\n", pin, *config);