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;
648 struct pmic_mpp_pad *pad)
653 type = pmic_mpp_read(state, pad, PMIC_MPP_REG_TYPE);
659 type, pad->base);
663 subtype = pmic_mpp_read(state, pad, PMIC_MPP_REG_SUBTYPE);
673 pad->num_sources = 4;
676 pad->num_sources = 8;
680 subtype, pad->base);
684 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_MODE_CTL);
688 pad->out_value = val & PMIC_MPP_REG_MODE_VALUE_MASK;
695 pad->input_enabled = true;
696 pad->output_enabled = false;
697 pad->function = PMIC_MPP_DIGITAL;
700 pad->input_enabled = false;
701 pad->output_enabled = true;
702 pad->function = PMIC_MPP_DIGITAL;
705 pad->input_enabled = true;
706 pad->output_enabled = true;
707 pad->function = PMIC_MPP_DIGITAL;
710 pad->input_enabled = true;
711 pad->output_enabled = true;
712 pad->function = PMIC_MPP_ANALOG;
715 pad->input_enabled = true;
716 pad->output_enabled = false;
717 pad->function = PMIC_MPP_ANALOG;
720 pad->input_enabled = false;
721 pad->output_enabled = true;
722 pad->function = PMIC_MPP_ANALOG;
725 pad->input_enabled = false;
726 pad->output_enabled = true;
727 pad->function = PMIC_MPP_SINK;
738 pad->dtest = sel + 1;
740 pad->paired = true;
742 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_DIG_VIN_CTL);
746 pad->power_source = val >> PMIC_MPP_REG_VIN_SHIFT;
747 pad->power_source &= PMIC_MPP_REG_VIN_MASK;
751 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_DIG_PULL_CTL);
755 pad->pullup = val >> PMIC_MPP_REG_PULL_SHIFT;
756 pad->pullup &= PMIC_MPP_REG_PULL_MASK;
757 pad->has_pullup = true;
760 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_AIN_CTL);
764 pad->amux_input = val >> PMIC_MPP_REG_AIN_ROUTE_SHIFT;
765 pad->amux_input &= PMIC_MPP_REG_AIN_ROUTE_MASK;
767 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_SINK_CTL);
771 pad->drive_strength = val;
773 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_AOUT_CTL);
777 pad->aout_level = val;
779 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_EN_CTL);
783 pad->is_enabled = !!val;
859 struct pmic_mpp_pad *pad, *pads;
911 pad = &pads[i];
912 pindesc->drv_data = pad;
916 pad->base = reg + i * PMIC_MPP_ADDRESS_RANGE;
918 ret = pmic_mpp_populate(state, pad);