Lines Matching full:pad
227 struct pmic_gpio_pad *pad, unsigned int addr)
232 ret = regmap_read(state->map, pad->base + addr, &val);
242 struct pmic_gpio_pad *pad, unsigned int addr,
247 ret = regmap_write(state->map, pad->base + addr, val);
307 struct pmic_gpio_pad *pad;
316 pad = pctldev->desc->pins[pin].drv_data;
321 if (!pad->lv_mv_type) {
332 pad->function = function;
334 if (pad->analog_pass)
336 else if (pad->output_enabled && pad->input_enabled)
338 else if (pad->output_enabled)
343 if (pad->lv_mv_type) {
344 ret = pmic_gpio_write(state, pad,
349 val = pad->atest - 1;
350 ret = pmic_gpio_write(state, pad,
355 val = pad->out_value
357 val |= pad->function
359 ret = pmic_gpio_write(state, pad,
365 val |= pad->function << PMIC_GPIO_REG_MODE_FUNCTION_SHIFT;
366 val |= pad->out_value & PMIC_GPIO_REG_MODE_VALUE_SHIFT;
368 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_MODE_CTL, val);
373 val = pad->is_enabled << PMIC_GPIO_REG_MASTER_EN_SHIFT;
375 return pmic_gpio_write(state, pad, PMIC_GPIO_REG_EN_CTL, val);
389 struct pmic_gpio_pad *pad;
392 pad = pctldev->desc->pins[pin].drv_data;
396 if (pad->buffer_type != PMIC_GPIO_OUT_BUF_CMOS)
401 if (pad->buffer_type != PMIC_GPIO_OUT_BUF_OPEN_DRAIN_NMOS)
406 if (pad->buffer_type != PMIC_GPIO_OUT_BUF_OPEN_DRAIN_PMOS)
411 if (pad->pullup != PMIC_GPIO_PULL_DOWN)
416 if (pad->pullup != PMIC_GPIO_PULL_DISABLE)
421 if (pad->pullup != PMIC_GPIO_PULL_UP_30)
426 if (pad->is_enabled)
431 arg = pad->power_source;
434 if (!pad->input_enabled)
439 arg = pad->output_enabled;
442 arg = pad->out_value;
445 arg = pad->pullup;
448 switch (pad->strength) {
456 arg = pad->strength;
461 arg = pad->atest;
464 arg = pad->analog_pass;
467 arg = pad->dtest_buffer;
481 struct pmic_gpio_pad *pad;
486 pad = pctldev->desc->pins[pin].drv_data;
488 pad->is_enabled = true;
495 pad->buffer_type = PMIC_GPIO_OUT_BUF_CMOS;
498 if (!pad->have_buffer)
500 pad->buffer_type = PMIC_GPIO_OUT_BUF_OPEN_DRAIN_NMOS;
503 if (!pad->have_buffer)
505 pad->buffer_type = PMIC_GPIO_OUT_BUF_OPEN_DRAIN_PMOS;
508 pad->pullup = PMIC_GPIO_PULL_DISABLE;
511 pad->pullup = PMIC_GPIO_PULL_UP_30;
515 pad->pullup = PMIC_GPIO_PULL_DOWN;
517 pad->pullup = PMIC_GPIO_PULL_DISABLE;
520 pad->is_enabled = false;
523 if (arg >= pad->num_sources)
525 pad->power_source = arg;
528 pad->input_enabled = arg ? true : false;
531 pad->output_enabled = arg ? true : false;
534 pad->output_enabled = true;
535 pad->out_value = arg;
540 pad->pullup = arg;
547 pad->strength = PMIC_GPIO_OUT_STRENGTH_HIGH;
550 pad->strength = PMIC_GPIO_OUT_STRENGTH_LOW;
553 pad->strength = arg;
558 if (!pad->lv_mv_type || arg > 4)
560 pad->atest = arg;
563 if (!pad->lv_mv_type)
565 pad->analog_pass = true;
570 pad->dtest_buffer = arg;
577 val = pad->power_source << PMIC_GPIO_REG_VIN_SHIFT;
579 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_DIG_VIN_CTL, val);
583 val = pad->pullup << PMIC_GPIO_REG_PULL_SHIFT;
585 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_DIG_PULL_CTL, val);
589 val = pad->buffer_type << PMIC_GPIO_REG_OUT_TYPE_SHIFT;
590 val |= pad->strength << PMIC_GPIO_REG_OUT_STRENGTH_SHIFT;
592 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_DIG_OUT_CTL, val);
596 if (pad->dtest_buffer == 0) {
599 if (pad->lv_mv_type) {
600 val = pad->dtest_buffer - 1;
603 val = BIT(pad->dtest_buffer - 1);
606 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_DIG_IN_CTL, val);
610 if (pad->analog_pass)
612 else if (pad->output_enabled && pad->input_enabled)
614 else if (pad->output_enabled)
619 if (pad->lv_mv_type) {
620 ret = pmic_gpio_write(state, pad,
625 val = pad->atest - 1;
626 ret = pmic_gpio_write(state, pad,
631 val = pad->out_value
633 val |= pad->function
635 ret = pmic_gpio_write(state, pad,
641 val |= pad->function << PMIC_GPIO_REG_MODE_FUNCTION_SHIFT;
642 val |= pad->out_value & PMIC_GPIO_REG_MODE_VALUE_SHIFT;
644 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_MODE_CTL, val);
649 val = pad->is_enabled << PMIC_GPIO_REG_MASTER_EN_SHIFT;
651 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_EN_CTL, val);
660 struct pmic_gpio_pad *pad;
674 pad = pctldev->desc->pins[pin].drv_data;
678 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_EN_CTL);
683 if (pad->input_enabled) {
684 ret = pmic_gpio_read(state, pad, PMIC_MPP_REG_RT_STS);
689 pad->out_value = ret;
695 function = pad->function;
696 if (!pad->lv_mv_type &&
697 pad->function >= PMIC_GPIO_FUNC_INDEX_FUNC3)
701 if (pad->analog_pass)
705 pad->output_enabled ? "out" : "in");
706 seq_printf(s, " %-4s", str_high_low(pad->out_value));
708 seq_printf(s, " vin-%d", pad->power_source);
709 seq_printf(s, " %-27s", biases[pad->pullup]);
710 seq_printf(s, " %-10s", buffer_types[pad->buffer_type]);
711 seq_printf(s, " %-7s", strengths[pad->strength]);
712 seq_printf(s, " atest-%d", pad->atest);
713 seq_printf(s, " dtest-%d", pad->dtest_buffer);
748 struct pmic_gpio_pad *pad;
751 pad = state->ctrl->desc->pins[pin].drv_data;
753 if (!pad->is_enabled)
756 if (pad->input_enabled) {
757 ret = pmic_gpio_read(state, pad, PMIC_MPP_REG_RT_STS);
761 pad->out_value = ret & PMIC_MPP_REG_RT_STS_VAL_MASK;
764 return !!pad->out_value;
813 struct pmic_gpio_pad *pad)
817 type = pmic_gpio_read(state, pad, PMIC_GPIO_REG_TYPE);
823 type, pad->base);
827 subtype = pmic_gpio_read(state, pad, PMIC_GPIO_REG_SUBTYPE);
833 pad->have_buffer = true;
836 pad->num_sources = 4;
839 pad->have_buffer = true;
842 pad->num_sources = 8;
845 pad->num_sources = 1;
846 pad->have_buffer = true;
847 pad->lv_mv_type = true;
850 pad->num_sources = 2;
851 pad->have_buffer = true;
852 pad->lv_mv_type = true;
855 pad->num_sources = 2;
856 pad->have_buffer = true;
857 pad->lv_mv_type = true;
860 pad->num_sources = 3;
861 pad->have_buffer = true;
862 pad->lv_mv_type = true;
869 if (pad->lv_mv_type) {
870 val = pmic_gpio_read(state, pad,
875 pad->out_value = !!(val & PMIC_GPIO_LV_MV_OUTPUT_INVERT);
876 pad->function = val & PMIC_GPIO_LV_MV_OUTPUT_SOURCE_SEL_MASK;
878 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_MODE_CTL);
884 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_MODE_CTL);
888 pad->out_value = val & PMIC_GPIO_REG_MODE_VALUE_SHIFT;
892 pad->function = val >> PMIC_GPIO_REG_MODE_FUNCTION_SHIFT;
893 pad->function &= PMIC_GPIO_REG_MODE_FUNCTION_MASK;
898 pad->input_enabled = true;
899 pad->output_enabled = false;
902 pad->input_enabled = false;
903 pad->output_enabled = true;
906 pad->input_enabled = true;
907 pad->output_enabled = true;
910 if (!pad->lv_mv_type)
912 pad->analog_pass = true;
919 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_DIG_VIN_CTL);
923 pad->power_source = val >> PMIC_GPIO_REG_VIN_SHIFT;
924 pad->power_source &= PMIC_GPIO_REG_VIN_MASK;
926 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_DIG_PULL_CTL);
930 pad->pullup = val >> PMIC_GPIO_REG_PULL_SHIFT;
931 pad->pullup &= PMIC_GPIO_REG_PULL_MASK;
933 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_DIG_IN_CTL);
937 if (pad->lv_mv_type && (val & PMIC_GPIO_LV_MV_DIG_IN_DTEST_EN))
938 pad->dtest_buffer =
940 else if (!pad->lv_mv_type)
941 pad->dtest_buffer = ffs(val);
943 pad->dtest_buffer = 0;
945 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_DIG_OUT_CTL);
949 pad->strength = val >> PMIC_GPIO_REG_OUT_STRENGTH_SHIFT;
950 pad->strength &= PMIC_GPIO_REG_OUT_STRENGTH_MASK;
952 pad->buffer_type = val >> PMIC_GPIO_REG_OUT_TYPE_SHIFT;
953 pad->buffer_type &= PMIC_GPIO_REG_OUT_TYPE_MASK;
955 if (pad->lv_mv_type) {
956 val = pmic_gpio_read(state, pad,
960 pad->atest = (val & PMIC_GPIO_LV_MV_ANA_MUX_SEL_MASK) + 1;
964 pad->is_enabled = true;
1060 struct pmic_gpio_pad *pad, *pads;
1113 pad = &pads[i];
1114 pindesc->drv_data = pad;
1118 pad->base = reg + i * PMIC_GPIO_ADDRESS_RANGE;
1120 ret = pmic_gpio_populate(state, pad);