Lines Matching refs:pin

57  * struct pm8xxx_pin_data - dynamic configuration for a pin
61 * @mode: operating mode for the pin (input/output)
68 * @disable: pin disabled / configured as tristate
70 * @inverted: pin logic is inverted
126 struct pm8xxx_pin_data *pin, int bank)
131 ret = regmap_write(pctrl->regmap, pin->reg, val);
137 ret = regmap_read(pctrl->regmap, pin->reg, &val);
147 struct pm8xxx_pin_data *pin,
156 ret = regmap_write(pctrl->regmap, pin->reg, val);
226 struct pm8xxx_pin_data *pin = pctrl->desc.pins[group].drv_data;
229 pin->function = function;
230 val = pin->function << 1;
232 pm8xxx_write_bank(pctrl, pin, 4, val);
249 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
255 if (pin->bias != PM8XXX_GPIO_BIAS_NP)
260 if (pin->bias != PM8XXX_GPIO_BIAS_PD)
265 if (pin->bias > PM8XXX_GPIO_BIAS_PU_1P5_30)
270 arg = pin->pull_up_strength;
273 if (!pin->disable)
278 if (pin->mode != PM8XXX_GPIO_MODE_INPUT)
283 if (pin->mode & PM8XXX_GPIO_MODE_OUTPUT)
284 arg = pin->output_value;
289 arg = pin->power_source;
292 arg = pin->output_strength;
295 if (pin->open_drain)
300 if (!pin->open_drain)
319 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
332 pin->bias = PM8XXX_GPIO_BIAS_NP;
334 pin->disable = 0;
338 pin->bias = PM8XXX_GPIO_BIAS_PD;
340 pin->disable = 0;
348 pin->pull_up_strength = arg;
351 pin->bias = pin->pull_up_strength;
353 pin->disable = 0;
357 pin->disable = 1;
361 pin->mode = PM8XXX_GPIO_MODE_INPUT;
365 pin->mode = PM8XXX_GPIO_MODE_OUTPUT;
366 pin->output_value = !!arg;
370 pin->power_source = arg;
378 pin->output_strength = arg;
382 pin->open_drain = 0;
386 pin->open_drain = 1;
398 val = pin->power_source << 1;
400 pm8xxx_write_bank(pctrl, pin, 0, val);
404 val = pin->mode << 2;
405 val |= pin->open_drain << 1;
406 val |= pin->output_value;
407 pm8xxx_write_bank(pctrl, pin, 1, val);
411 val = pin->bias << 1;
412 pm8xxx_write_bank(pctrl, pin, 2, val);
416 val = pin->output_strength << 2;
417 val |= pin->disable;
418 pm8xxx_write_bank(pctrl, pin, 3, val);
422 val = pin->function << 1;
423 pm8xxx_write_bank(pctrl, pin, 4, val);
428 if (!pin->inverted)
430 pm8xxx_write_bank(pctrl, pin, 5, val);
454 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
457 pin->mode = PM8XXX_GPIO_MODE_INPUT;
458 val = pin->mode << 2;
460 pm8xxx_write_bank(pctrl, pin, 1, val);
470 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
473 pin->mode = PM8XXX_GPIO_MODE_OUTPUT;
474 pin->output_value = !!value;
476 val = pin->mode << 2;
477 val |= pin->open_drain << 1;
478 val |= pin->output_value;
480 pm8xxx_write_bank(pctrl, pin, 1, val);
488 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
492 if (pin->mode == PM8XXX_GPIO_MODE_OUTPUT)
493 return pin->output_value;
510 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
513 pin->output_value = !!value;
515 val = pin->mode << 2;
516 val |= pin->open_drain << 1;
517 val |= pin->output_value;
519 pm8xxx_write_bank(pctrl, pin, 1, val);
546 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
563 if (pin->disable) {
566 seq_printf(s, " %-4s", modes[pin->mode]);
567 seq_printf(s, " %-7s", pm8xxx_gpio_functions[pin->function]);
568 seq_printf(s, " VIN%d", pin->power_source);
569 seq_printf(s, " %-27s", biases[pin->bias]);
570 seq_printf(s, " %-10s", buffer_types[pin->open_drain]);
571 seq_printf(s, " %-4s", pin->output_value ? "high" : "low");
572 seq_printf(s, " %-7s", strengths[pin->output_strength]);
573 if (pin->inverted)
604 struct pm8xxx_pin_data *pin)
608 val = pm8xxx_read_bank(pctrl, pin, 0);
612 pin->power_source = (val >> 1) & 0x7;
614 val = pm8xxx_read_bank(pctrl, pin, 1);
618 pin->mode = (val >> 2) & 0x3;
619 pin->open_drain = !!(val & BIT(1));
620 pin->output_value = val & BIT(0);
622 val = pm8xxx_read_bank(pctrl, pin, 2);
626 pin->bias = (val >> 1) & 0x7;
627 if (pin->bias <= PM8XXX_GPIO_BIAS_PU_1P5_30)
628 pin->pull_up_strength = pin->bias;
630 pin->pull_up_strength = PM8XXX_GPIO_BIAS_PU_30;
632 val = pm8xxx_read_bank(pctrl, pin, 3);
636 pin->output_strength = (val >> 2) & 0x3;
637 pin->disable = val & BIT(0);
639 val = pm8xxx_read_bank(pctrl, pin, 4);
643 pin->function = (val >> 1) & 0x7;
645 val = pm8xxx_read_bank(pctrl, pin, 5);
649 pin->inverted = !(val & BIT(3));
810 * If it is present, it takes care of adding the pin ranges
821 dev_err(pctrl->dev, "failed to add pin range\n");