Lines Matching refs:pad
177 struct pmic_mpp_pad *pad, unsigned int addr)
182 ret = regmap_read(state->map, pad->base + addr, &val);
192 struct pmic_mpp_pad *pad, unsigned int addr,
197 ret = regmap_write(state->map, pad->base + addr, val);
255 struct pmic_mpp_pad *pad)
262 switch (pad->function) {
264 if (pad->input_enabled && pad->output_enabled)
266 else if (pad->input_enabled)
272 if (pad->input_enabled && pad->output_enabled)
274 else if (pad->input_enabled)
285 if (pad->dtest)
286 sel = PMIC_MPP_SELECTOR_DTEST_FIRST + pad->dtest - 1;
287 else if (pad->paired)
292 en = !!pad->out_value;
298 return pmic_mpp_write(state, pad, PMIC_MPP_REG_MODE_CTL, val);
305 struct pmic_mpp_pad *pad;
309 pad = pctldev->desc->pins[pin].drv_data;
311 pad->function = function;
313 ret = pmic_mpp_write_mode_ctl(state, pad);
317 val = pad->is_enabled << PMIC_MPP_REG_MASTER_EN_SHIFT;
319 return pmic_mpp_write(state, pad, PMIC_MPP_REG_EN_CTL, val);
333 struct pmic_mpp_pad *pad;
336 pad = pctldev->desc->pins[pin].drv_data;
340 if (pad->pullup != PMIC_MPP_PULL_UP_OPEN)
345 switch (pad->pullup) {
360 if (pad->is_enabled)
365 arg = pad->power_source;
368 if (!pad->input_enabled)
373 arg = pad->out_value;
376 arg = pad->dtest;
379 arg = pad->amux_input;
382 if (!pad->paired)
387 arg = pad->drive_strength;
390 arg = pad->aout_level;
405 struct pmic_mpp_pad *pad;
410 pad = pctldev->desc->pins[pin].drv_data;
413 pad->is_enabled = true;
421 pad->pullup = PMIC_MPP_PULL_UP_OPEN;
426 pad->pullup = PMIC_MPP_PULL_UP_0P6KOHM;
429 pad->pullup = PMIC_MPP_PULL_UP_10KOHM;
432 pad->pullup = PMIC_MPP_PULL_UP_30KOHM;
439 pad->is_enabled = false;
442 if (arg >= pad->num_sources)
444 pad->power_source = arg;
447 pad->input_enabled = arg ? true : false;
450 pad->output_enabled = true;
451 pad->out_value = arg;
454 pad->dtest = arg;
457 pad->drive_strength = arg;
462 pad->amux_input = arg;
465 pad->aout_level = arg;
468 pad->paired = !!arg;
475 val = pad->power_source << PMIC_MPP_REG_VIN_SHIFT;
477 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_DIG_VIN_CTL, val);
481 if (pad->has_pullup) {
482 val = pad->pullup << PMIC_MPP_REG_PULL_SHIFT;
484 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_DIG_PULL_CTL,
490 val = pad->amux_input & PMIC_MPP_REG_AIN_ROUTE_MASK;
492 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_AIN_CTL, val);
496 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_AOUT_CTL, pad->aout_level);
500 ret = pmic_mpp_write_mode_ctl(state, pad);
504 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_SINK_CTL, pad->drive_strength);
508 val = pad->is_enabled << PMIC_MPP_REG_MASTER_EN_SHIFT;
510 return pmic_mpp_write(state, pad, PMIC_MPP_REG_EN_CTL, val);
517 struct pmic_mpp_pad *pad;
524 pad = pctldev->desc->pins[pin].drv_data;
528 if (!pad->is_enabled) {
532 if (pad->input_enabled) {
533 ret = pmic_mpp_read(state, pad, PMIC_MPP_REG_RT_STS);
538 pad->out_value = ret;
541 seq_printf(s, " %-4s", pad->output_enabled ? "out" : "in");
542 seq_printf(s, " %-7s", pmic_mpp_functions[pad->function]);
543 seq_printf(s, " vin-%d", pad->power_source);
544 seq_printf(s, " %d", pad->aout_level);
545 if (pad->has_pullup)
546 seq_printf(s, " %-8s", biases[pad->pullup]);
547 seq_printf(s, " %-4s", pad->out_value ? "high" : "low");
548 if (pad->dtest)
549 seq_printf(s, " dtest%d", pad->dtest);
550 if (pad->paired)
586 struct pmic_mpp_pad *pad;
589 pad = state->ctrl->desc->pins[pin].drv_data;
591 if (pad->input_enabled) {
592 ret = pmic_mpp_read(state, pad, PMIC_MPP_REG_RT_STS);
596 pad->out_value = ret & PMIC_MPP_REG_RT_STS_VAL_MASK;
599 return !!pad->out_value;
628 struct pmic_mpp_pad *pad;
630 pad = state->ctrl->desc->pins[pin].drv_data;
632 return pad->irq;
659 struct pmic_mpp_pad *pad)
664 type = pmic_mpp_read(state, pad, PMIC_MPP_REG_TYPE);
670 type, pad->base);
674 subtype = pmic_mpp_read(state, pad, PMIC_MPP_REG_SUBTYPE);
684 pad->num_sources = 4;
687 pad->num_sources = 8;
691 subtype, pad->base);
695 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_MODE_CTL);
699 pad->out_value = val & PMIC_MPP_REG_MODE_VALUE_MASK;
706 pad->input_enabled = true;
707 pad->output_enabled = false;
708 pad->function = PMIC_MPP_DIGITAL;
711 pad->input_enabled = false;
712 pad->output_enabled = true;
713 pad->function = PMIC_MPP_DIGITAL;
716 pad->input_enabled = true;
717 pad->output_enabled = true;
718 pad->function = PMIC_MPP_DIGITAL;
721 pad->input_enabled = true;
722 pad->output_enabled = true;
723 pad->function = PMIC_MPP_ANALOG;
726 pad->input_enabled = true;
727 pad->output_enabled = false;
728 pad->function = PMIC_MPP_ANALOG;
731 pad->input_enabled = false;
732 pad->output_enabled = true;
733 pad->function = PMIC_MPP_ANALOG;
736 pad->input_enabled = false;
737 pad->output_enabled = true;
738 pad->function = PMIC_MPP_SINK;
749 pad->dtest = sel + 1;
751 pad->paired = true;
753 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_DIG_VIN_CTL);
757 pad->power_source = val >> PMIC_MPP_REG_VIN_SHIFT;
758 pad->power_source &= PMIC_MPP_REG_VIN_MASK;
762 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_DIG_PULL_CTL);
766 pad->pullup = val >> PMIC_MPP_REG_PULL_SHIFT;
767 pad->pullup &= PMIC_MPP_REG_PULL_MASK;
768 pad->has_pullup = true;
771 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_AIN_CTL);
775 pad->amux_input = val >> PMIC_MPP_REG_AIN_ROUTE_SHIFT;
776 pad->amux_input &= PMIC_MPP_REG_AIN_ROUTE_MASK;
778 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_SINK_CTL);
782 pad->drive_strength = val;
784 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_AOUT_CTL);
788 pad->aout_level = val;
790 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_EN_CTL);
794 pad->is_enabled = !!val;
804 struct pmic_mpp_pad *pad, *pads;
859 pad = &pads[i];
860 pindesc->drv_data = pad;
864 pad->irq = platform_get_irq(pdev, i);
865 if (pad->irq < 0)
866 return pad->irq;
868 pad->base = reg + i * PMIC_MPP_ADDRESS_RANGE;
870 ret = pmic_mpp_populate(state, pad);