Lines Matching refs:pin

59  * struct pm8xxx_pin_data - dynamic configuration for a pin
63 * @mode: operating mode for the pin (input/output)
70 * @disable: pin disabled / configured as tristate
72 * @inverted: pin logic is inverted
128 struct pm8xxx_pin_data *pin, int bank)
133 ret = regmap_write(pctrl->regmap, pin->reg, val);
139 ret = regmap_read(pctrl->regmap, pin->reg, &val);
149 struct pm8xxx_pin_data *pin,
158 ret = regmap_write(pctrl->regmap, pin->reg, val);
228 struct pm8xxx_pin_data *pin = pctrl->desc.pins[group].drv_data;
231 pin->function = function;
232 val = pin->function << 1;
234 pm8xxx_write_bank(pctrl, pin, 4, val);
251 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
257 if (pin->bias != PM8XXX_GPIO_BIAS_NP)
262 if (pin->bias != PM8XXX_GPIO_BIAS_PD)
267 if (pin->bias > PM8XXX_GPIO_BIAS_PU_1P5_30)
272 arg = pin->pull_up_strength;
275 if (!pin->disable)
280 if (pin->mode != PM8XXX_GPIO_MODE_INPUT)
285 if (pin->mode & PM8XXX_GPIO_MODE_OUTPUT)
286 arg = pin->output_value;
291 arg = pin->power_source;
294 arg = pin->output_strength;
297 if (pin->open_drain)
302 if (!pin->open_drain)
321 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
334 pin->bias = PM8XXX_GPIO_BIAS_NP;
336 pin->disable = 0;
340 pin->bias = PM8XXX_GPIO_BIAS_PD;
342 pin->disable = 0;
350 pin->pull_up_strength = arg;
353 pin->bias = pin->pull_up_strength;
355 pin->disable = 0;
359 pin->disable = 1;
363 pin->mode = PM8XXX_GPIO_MODE_INPUT;
367 pin->mode = PM8XXX_GPIO_MODE_OUTPUT;
368 pin->output_value = !!arg;
372 pin->power_source = arg;
380 pin->output_strength = arg;
384 pin->open_drain = 0;
388 pin->open_drain = 1;
400 val = pin->power_source << 1;
402 pm8xxx_write_bank(pctrl, pin, 0, val);
406 val = pin->mode << 2;
407 val |= pin->open_drain << 1;
408 val |= pin->output_value;
409 pm8xxx_write_bank(pctrl, pin, 1, val);
413 val = pin->bias << 1;
414 pm8xxx_write_bank(pctrl, pin, 2, val);
418 val = pin->output_strength << 2;
419 val |= pin->disable;
420 pm8xxx_write_bank(pctrl, pin, 3, val);
424 val = pin->function << 1;
425 pm8xxx_write_bank(pctrl, pin, 4, val);
430 if (!pin->inverted)
432 pm8xxx_write_bank(pctrl, pin, 5, val);
456 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
459 pin->mode = PM8XXX_GPIO_MODE_INPUT;
460 val = pin->mode << 2;
462 pm8xxx_write_bank(pctrl, pin, 1, val);
472 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
475 pin->mode = PM8XXX_GPIO_MODE_OUTPUT;
476 pin->output_value = !!value;
478 val = pin->mode << 2;
479 val |= pin->open_drain << 1;
480 val |= pin->output_value;
482 pm8xxx_write_bank(pctrl, pin, 1, val);
490 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
494 if (pin->mode == PM8XXX_GPIO_MODE_OUTPUT)
495 return pin->output_value;
512 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
515 pin->output_value = !!value;
517 val = pin->mode << 2;
518 val |= pin->open_drain << 1;
519 val |= pin->output_value;
521 pm8xxx_write_bank(pctrl, pin, 1, val);
547 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
564 if (pin->disable) {
567 seq_printf(s, " %-4s", modes[pin->mode]);
568 seq_printf(s, " %-7s", pm8xxx_gpio_functions[pin->function]);
569 seq_printf(s, " VIN%d", pin->power_source);
570 seq_printf(s, " %-27s", biases[pin->bias]);
571 seq_printf(s, " %-10s", buffer_types[pin->open_drain]);
572 seq_printf(s, " %-4s", pin->output_value ? "high" : "low");
573 seq_printf(s, " %-7s", strengths[pin->output_strength]);
574 if (pin->inverted)
605 struct pm8xxx_pin_data *pin)
609 val = pm8xxx_read_bank(pctrl, pin, 0);
613 pin->power_source = (val >> 1) & 0x7;
615 val = pm8xxx_read_bank(pctrl, pin, 1);
619 pin->mode = (val >> 2) & 0x3;
620 pin->open_drain = !!(val & BIT(1));
621 pin->output_value = val & BIT(0);
623 val = pm8xxx_read_bank(pctrl, pin, 2);
627 pin->bias = (val >> 1) & 0x7;
628 if (pin->bias <= PM8XXX_GPIO_BIAS_PU_1P5_30)
629 pin->pull_up_strength = pin->bias;
631 pin->pull_up_strength = PM8XXX_GPIO_BIAS_PU_30;
633 val = pm8xxx_read_bank(pctrl, pin, 3);
637 pin->output_strength = (val >> 2) & 0x3;
638 pin->disable = val & BIT(0);
640 val = pm8xxx_read_bank(pctrl, pin, 4);
644 pin->function = (val >> 1) & 0x7;
646 val = pm8xxx_read_bank(pctrl, pin, 5);
650 pin->inverted = !(val & BIT(3));
828 * If it is present, it takes care of adding the pin ranges
839 dev_err(pctrl->dev, "failed to add pin range\n");