Lines Matching refs:pad

226 			  struct pmic_gpio_pad *pad, unsigned int addr)
231 ret = regmap_read(state->map, pad->base + addr, &val);
241 struct pmic_gpio_pad *pad, unsigned int addr,
246 ret = regmap_write(state->map, pad->base + addr, val);
306 struct pmic_gpio_pad *pad;
315 pad = pctldev->desc->pins[pin].drv_data;
320 if (!pad->lv_mv_type) {
331 pad->function = function;
333 if (pad->analog_pass)
335 else if (pad->output_enabled && pad->input_enabled)
337 else if (pad->output_enabled)
342 if (pad->lv_mv_type) {
343 ret = pmic_gpio_write(state, pad,
348 val = pad->atest - 1;
349 ret = pmic_gpio_write(state, pad,
354 val = pad->out_value
356 val |= pad->function
358 ret = pmic_gpio_write(state, pad,
364 val |= pad->function << PMIC_GPIO_REG_MODE_FUNCTION_SHIFT;
365 val |= pad->out_value & PMIC_GPIO_REG_MODE_VALUE_SHIFT;
367 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_MODE_CTL, val);
372 val = pad->is_enabled << PMIC_GPIO_REG_MASTER_EN_SHIFT;
374 return pmic_gpio_write(state, pad, PMIC_GPIO_REG_EN_CTL, val);
388 struct pmic_gpio_pad *pad;
391 pad = pctldev->desc->pins[pin].drv_data;
395 if (pad->buffer_type != PMIC_GPIO_OUT_BUF_CMOS)
400 if (pad->buffer_type != PMIC_GPIO_OUT_BUF_OPEN_DRAIN_NMOS)
405 if (pad->buffer_type != PMIC_GPIO_OUT_BUF_OPEN_DRAIN_PMOS)
410 if (pad->pullup != PMIC_GPIO_PULL_DOWN)
415 if (pad->pullup != PMIC_GPIO_PULL_DISABLE)
420 if (pad->pullup != PMIC_GPIO_PULL_UP_30)
425 if (pad->is_enabled)
430 arg = pad->power_source;
433 if (!pad->input_enabled)
438 arg = pad->output_enabled;
441 arg = pad->out_value;
444 arg = pad->pullup;
447 switch (pad->strength) {
455 arg = pad->strength;
460 arg = pad->atest;
463 arg = pad->analog_pass;
466 arg = pad->dtest_buffer;
480 struct pmic_gpio_pad *pad;
485 pad = pctldev->desc->pins[pin].drv_data;
487 pad->is_enabled = true;
494 pad->buffer_type = PMIC_GPIO_OUT_BUF_CMOS;
497 if (!pad->have_buffer)
499 pad->buffer_type = PMIC_GPIO_OUT_BUF_OPEN_DRAIN_NMOS;
502 if (!pad->have_buffer)
504 pad->buffer_type = PMIC_GPIO_OUT_BUF_OPEN_DRAIN_PMOS;
507 pad->pullup = PMIC_GPIO_PULL_DISABLE;
510 pad->pullup = PMIC_GPIO_PULL_UP_30;
514 pad->pullup = PMIC_GPIO_PULL_DOWN;
516 pad->pullup = PMIC_GPIO_PULL_DISABLE;
519 pad->is_enabled = false;
522 if (arg >= pad->num_sources)
524 pad->power_source = arg;
527 pad->input_enabled = arg ? true : false;
530 pad->output_enabled = arg ? true : false;
533 pad->output_enabled = true;
534 pad->out_value = arg;
539 pad->pullup = arg;
546 pad->strength = PMIC_GPIO_OUT_STRENGTH_HIGH;
549 pad->strength = PMIC_GPIO_OUT_STRENGTH_LOW;
552 pad->strength = arg;
557 if (!pad->lv_mv_type || arg > 4)
559 pad->atest = arg;
562 if (!pad->lv_mv_type)
564 pad->analog_pass = true;
569 pad->dtest_buffer = arg;
576 val = pad->power_source << PMIC_GPIO_REG_VIN_SHIFT;
578 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_DIG_VIN_CTL, val);
582 val = pad->pullup << PMIC_GPIO_REG_PULL_SHIFT;
584 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_DIG_PULL_CTL, val);
588 val = pad->buffer_type << PMIC_GPIO_REG_OUT_TYPE_SHIFT;
589 val |= pad->strength << PMIC_GPIO_REG_OUT_STRENGTH_SHIFT;
591 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_DIG_OUT_CTL, val);
595 if (pad->dtest_buffer == 0) {
598 if (pad->lv_mv_type) {
599 val = pad->dtest_buffer - 1;
602 val = BIT(pad->dtest_buffer - 1);
605 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_DIG_IN_CTL, val);
609 if (pad->analog_pass)
611 else if (pad->output_enabled && pad->input_enabled)
613 else if (pad->output_enabled)
618 if (pad->lv_mv_type) {
619 ret = pmic_gpio_write(state, pad,
624 val = pad->atest - 1;
625 ret = pmic_gpio_write(state, pad,
630 val = pad->out_value
632 val |= pad->function
634 ret = pmic_gpio_write(state, pad,
640 val |= pad->function << PMIC_GPIO_REG_MODE_FUNCTION_SHIFT;
641 val |= pad->out_value & PMIC_GPIO_REG_MODE_VALUE_SHIFT;
643 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_MODE_CTL, val);
648 val = pad->is_enabled << PMIC_GPIO_REG_MASTER_EN_SHIFT;
650 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_EN_CTL, val);
659 struct pmic_gpio_pad *pad;
673 pad = pctldev->desc->pins[pin].drv_data;
677 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_EN_CTL);
682 if (pad->input_enabled) {
683 ret = pmic_gpio_read(state, pad, PMIC_MPP_REG_RT_STS);
688 pad->out_value = ret;
694 function = pad->function;
695 if (!pad->lv_mv_type &&
696 pad->function >= PMIC_GPIO_FUNC_INDEX_FUNC3)
700 if (pad->analog_pass)
704 pad->output_enabled ? "out" : "in");
705 seq_printf(s, " %-4s", pad->out_value ? "high" : "low");
707 seq_printf(s, " vin-%d", pad->power_source);
708 seq_printf(s, " %-27s", biases[pad->pullup]);
709 seq_printf(s, " %-10s", buffer_types[pad->buffer_type]);
710 seq_printf(s, " %-7s", strengths[pad->strength]);
711 seq_printf(s, " atest-%d", pad->atest);
712 seq_printf(s, " dtest-%d", pad->dtest_buffer);
747 struct pmic_gpio_pad *pad;
750 pad = state->ctrl->desc->pins[pin].drv_data;
752 if (!pad->is_enabled)
755 if (pad->input_enabled) {
756 ret = pmic_gpio_read(state, pad, PMIC_MPP_REG_RT_STS);
760 pad->out_value = ret & PMIC_MPP_REG_RT_STS_VAL_MASK;
763 return !!pad->out_value;
812 struct pmic_gpio_pad *pad)
816 type = pmic_gpio_read(state, pad, PMIC_GPIO_REG_TYPE);
822 type, pad->base);
826 subtype = pmic_gpio_read(state, pad, PMIC_GPIO_REG_SUBTYPE);
832 pad->have_buffer = true;
835 pad->num_sources = 4;
838 pad->have_buffer = true;
841 pad->num_sources = 8;
844 pad->num_sources = 1;
845 pad->have_buffer = true;
846 pad->lv_mv_type = true;
849 pad->num_sources = 2;
850 pad->have_buffer = true;
851 pad->lv_mv_type = true;
854 pad->num_sources = 2;
855 pad->have_buffer = true;
856 pad->lv_mv_type = true;
859 pad->num_sources = 3;
860 pad->have_buffer = true;
861 pad->lv_mv_type = true;
868 if (pad->lv_mv_type) {
869 val = pmic_gpio_read(state, pad,
874 pad->out_value = !!(val & PMIC_GPIO_LV_MV_OUTPUT_INVERT);
875 pad->function = val & PMIC_GPIO_LV_MV_OUTPUT_SOURCE_SEL_MASK;
877 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_MODE_CTL);
883 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_MODE_CTL);
887 pad->out_value = val & PMIC_GPIO_REG_MODE_VALUE_SHIFT;
891 pad->function = val >> PMIC_GPIO_REG_MODE_FUNCTION_SHIFT;
892 pad->function &= PMIC_GPIO_REG_MODE_FUNCTION_MASK;
897 pad->input_enabled = true;
898 pad->output_enabled = false;
901 pad->input_enabled = false;
902 pad->output_enabled = true;
905 pad->input_enabled = true;
906 pad->output_enabled = true;
909 if (!pad->lv_mv_type)
911 pad->analog_pass = true;
918 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_DIG_VIN_CTL);
922 pad->power_source = val >> PMIC_GPIO_REG_VIN_SHIFT;
923 pad->power_source &= PMIC_GPIO_REG_VIN_MASK;
925 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_DIG_PULL_CTL);
929 pad->pullup = val >> PMIC_GPIO_REG_PULL_SHIFT;
930 pad->pullup &= PMIC_GPIO_REG_PULL_MASK;
932 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_DIG_IN_CTL);
936 if (pad->lv_mv_type && (val & PMIC_GPIO_LV_MV_DIG_IN_DTEST_EN))
937 pad->dtest_buffer =
939 else if (!pad->lv_mv_type)
940 pad->dtest_buffer = ffs(val);
942 pad->dtest_buffer = 0;
944 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_DIG_OUT_CTL);
948 pad->strength = val >> PMIC_GPIO_REG_OUT_STRENGTH_SHIFT;
949 pad->strength &= PMIC_GPIO_REG_OUT_STRENGTH_MASK;
951 pad->buffer_type = val >> PMIC_GPIO_REG_OUT_TYPE_SHIFT;
952 pad->buffer_type &= PMIC_GPIO_REG_OUT_TYPE_MASK;
954 if (pad->lv_mv_type) {
955 val = pmic_gpio_read(state, pad,
959 pad->atest = (val & PMIC_GPIO_LV_MV_ANA_MUX_SEL_MASK) + 1;
963 pad->is_enabled = true;
1059 struct pmic_gpio_pad *pad, *pads;
1112 pad = &pads[i];
1113 pindesc->drv_data = pad;
1117 pad->base = reg + i * PMIC_GPIO_ADDRESS_RANGE;
1119 ret = pmic_gpio_populate(state, pad);