Lines Matching full:pad
176 struct pmic_mpp_pad *pad, unsigned int addr) in pmic_mpp_read() argument
181 ret = regmap_read(state->map, pad->base + addr, &val); in pmic_mpp_read()
191 struct pmic_mpp_pad *pad, unsigned int addr, in pmic_mpp_write() argument
196 ret = regmap_write(state->map, pad->base + addr, val); in pmic_mpp_write()
254 struct pmic_mpp_pad *pad) in pmic_mpp_write_mode_ctl() argument
261 switch (pad->function) { in pmic_mpp_write_mode_ctl()
263 if (pad->input_enabled && pad->output_enabled) in pmic_mpp_write_mode_ctl()
265 else if (pad->input_enabled) in pmic_mpp_write_mode_ctl()
271 if (pad->input_enabled && pad->output_enabled) in pmic_mpp_write_mode_ctl()
273 else if (pad->input_enabled) in pmic_mpp_write_mode_ctl()
284 if (pad->dtest) in pmic_mpp_write_mode_ctl()
285 sel = PMIC_MPP_SELECTOR_DTEST_FIRST + pad->dtest - 1; in pmic_mpp_write_mode_ctl()
286 else if (pad->paired) in pmic_mpp_write_mode_ctl()
291 en = !!pad->out_value; in pmic_mpp_write_mode_ctl()
297 return pmic_mpp_write(state, pad, PMIC_MPP_REG_MODE_CTL, val); in pmic_mpp_write_mode_ctl()
304 struct pmic_mpp_pad *pad; in pmic_mpp_set_mux() local
308 pad = pctldev->desc->pins[pin].drv_data; in pmic_mpp_set_mux()
310 pad->function = function; in pmic_mpp_set_mux()
312 ret = pmic_mpp_write_mode_ctl(state, pad); in pmic_mpp_set_mux()
316 val = pad->is_enabled << PMIC_MPP_REG_MASTER_EN_SHIFT; in pmic_mpp_set_mux()
318 return pmic_mpp_write(state, pad, PMIC_MPP_REG_EN_CTL, val); in pmic_mpp_set_mux()
332 struct pmic_mpp_pad *pad; in pmic_mpp_config_get() local
335 pad = pctldev->desc->pins[pin].drv_data; in pmic_mpp_config_get()
339 if (pad->pullup != PMIC_MPP_PULL_UP_OPEN) in pmic_mpp_config_get()
344 switch (pad->pullup) { in pmic_mpp_config_get()
359 if (pad->is_enabled) in pmic_mpp_config_get()
364 arg = pad->power_source; in pmic_mpp_config_get()
367 if (!pad->input_enabled) in pmic_mpp_config_get()
372 arg = pad->out_value; in pmic_mpp_config_get()
375 arg = pad->dtest; in pmic_mpp_config_get()
378 arg = pad->amux_input; in pmic_mpp_config_get()
381 if (!pad->paired) in pmic_mpp_config_get()
386 arg = pad->drive_strength; in pmic_mpp_config_get()
389 arg = pad->aout_level; in pmic_mpp_config_get()
404 struct pmic_mpp_pad *pad; in pmic_mpp_config_set() local
409 pad = pctldev->desc->pins[pin].drv_data; in pmic_mpp_config_set()
412 pad->is_enabled = true; in pmic_mpp_config_set()
420 pad->pullup = PMIC_MPP_PULL_UP_OPEN; in pmic_mpp_config_set()
425 pad->pullup = PMIC_MPP_PULL_UP_0P6KOHM; in pmic_mpp_config_set()
428 pad->pullup = PMIC_MPP_PULL_UP_10KOHM; in pmic_mpp_config_set()
431 pad->pullup = PMIC_MPP_PULL_UP_30KOHM; in pmic_mpp_config_set()
438 pad->is_enabled = false; in pmic_mpp_config_set()
441 if (arg >= pad->num_sources) in pmic_mpp_config_set()
443 pad->power_source = arg; in pmic_mpp_config_set()
446 pad->input_enabled = arg ? true : false; in pmic_mpp_config_set()
449 pad->output_enabled = true; in pmic_mpp_config_set()
450 pad->out_value = arg; in pmic_mpp_config_set()
453 pad->dtest = arg; in pmic_mpp_config_set()
456 pad->drive_strength = arg; in pmic_mpp_config_set()
461 pad->amux_input = arg; in pmic_mpp_config_set()
464 pad->aout_level = arg; in pmic_mpp_config_set()
467 pad->paired = !!arg; in pmic_mpp_config_set()
474 val = pad->power_source << PMIC_MPP_REG_VIN_SHIFT; in pmic_mpp_config_set()
476 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_DIG_VIN_CTL, val); in pmic_mpp_config_set()
480 if (pad->has_pullup) { in pmic_mpp_config_set()
481 val = pad->pullup << PMIC_MPP_REG_PULL_SHIFT; in pmic_mpp_config_set()
483 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_DIG_PULL_CTL, in pmic_mpp_config_set()
489 val = pad->amux_input & PMIC_MPP_REG_AIN_ROUTE_MASK; in pmic_mpp_config_set()
491 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_AIN_CTL, val); in pmic_mpp_config_set()
495 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_AOUT_CTL, pad->aout_level); in pmic_mpp_config_set()
499 ret = pmic_mpp_write_mode_ctl(state, pad); in pmic_mpp_config_set()
503 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_SINK_CTL, pad->drive_strength); in pmic_mpp_config_set()
507 val = pad->is_enabled << PMIC_MPP_REG_MASTER_EN_SHIFT; in pmic_mpp_config_set()
509 return pmic_mpp_write(state, pad, PMIC_MPP_REG_EN_CTL, val); in pmic_mpp_config_set()
516 struct pmic_mpp_pad *pad; in pmic_mpp_config_dbg_show() local
523 pad = pctldev->desc->pins[pin].drv_data; in pmic_mpp_config_dbg_show()
527 if (!pad->is_enabled) { in pmic_mpp_config_dbg_show()
531 if (pad->input_enabled) { in pmic_mpp_config_dbg_show()
532 ret = pmic_mpp_read(state, pad, PMIC_MPP_REG_RT_STS); in pmic_mpp_config_dbg_show()
537 pad->out_value = ret; in pmic_mpp_config_dbg_show()
540 seq_printf(s, " %-4s", pad->output_enabled ? "out" : "in"); in pmic_mpp_config_dbg_show()
541 seq_printf(s, " %-7s", pmic_mpp_functions[pad->function]); in pmic_mpp_config_dbg_show()
542 seq_printf(s, " vin-%d", pad->power_source); in pmic_mpp_config_dbg_show()
543 seq_printf(s, " %d", pad->aout_level); in pmic_mpp_config_dbg_show()
544 if (pad->has_pullup) in pmic_mpp_config_dbg_show()
545 seq_printf(s, " %-8s", biases[pad->pullup]); in pmic_mpp_config_dbg_show()
546 seq_printf(s, " %-4s", pad->out_value ? "high" : "low"); in pmic_mpp_config_dbg_show()
547 if (pad->dtest) in pmic_mpp_config_dbg_show()
548 seq_printf(s, " dtest%d", pad->dtest); in pmic_mpp_config_dbg_show()
549 if (pad->paired) in pmic_mpp_config_dbg_show()
585 struct pmic_mpp_pad *pad; in pmic_mpp_get() local
588 pad = state->ctrl->desc->pins[pin].drv_data; in pmic_mpp_get()
590 if (pad->input_enabled) { in pmic_mpp_get()
591 ret = pmic_mpp_read(state, pad, PMIC_MPP_REG_RT_STS); in pmic_mpp_get()
595 pad->out_value = ret & PMIC_MPP_REG_RT_STS_VAL_MASK; in pmic_mpp_get()
598 return !!pad->out_value; in pmic_mpp_get()
647 struct pmic_mpp_pad *pad) in pmic_mpp_populate() argument
652 type = pmic_mpp_read(state, pad, PMIC_MPP_REG_TYPE); in pmic_mpp_populate()
658 type, pad->base); in pmic_mpp_populate()
662 subtype = pmic_mpp_read(state, pad, PMIC_MPP_REG_SUBTYPE); in pmic_mpp_populate()
672 pad->num_sources = 4; in pmic_mpp_populate()
675 pad->num_sources = 8; in pmic_mpp_populate()
679 subtype, pad->base); in pmic_mpp_populate()
683 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_MODE_CTL); in pmic_mpp_populate()
687 pad->out_value = val & PMIC_MPP_REG_MODE_VALUE_MASK; in pmic_mpp_populate()
694 pad->input_enabled = true; in pmic_mpp_populate()
695 pad->output_enabled = false; in pmic_mpp_populate()
696 pad->function = PMIC_MPP_DIGITAL; in pmic_mpp_populate()
699 pad->input_enabled = false; in pmic_mpp_populate()
700 pad->output_enabled = true; in pmic_mpp_populate()
701 pad->function = PMIC_MPP_DIGITAL; in pmic_mpp_populate()
704 pad->input_enabled = true; in pmic_mpp_populate()
705 pad->output_enabled = true; in pmic_mpp_populate()
706 pad->function = PMIC_MPP_DIGITAL; in pmic_mpp_populate()
709 pad->input_enabled = true; in pmic_mpp_populate()
710 pad->output_enabled = true; in pmic_mpp_populate()
711 pad->function = PMIC_MPP_ANALOG; in pmic_mpp_populate()
714 pad->input_enabled = true; in pmic_mpp_populate()
715 pad->output_enabled = false; in pmic_mpp_populate()
716 pad->function = PMIC_MPP_ANALOG; in pmic_mpp_populate()
719 pad->input_enabled = false; in pmic_mpp_populate()
720 pad->output_enabled = true; in pmic_mpp_populate()
721 pad->function = PMIC_MPP_ANALOG; in pmic_mpp_populate()
724 pad->input_enabled = false; in pmic_mpp_populate()
725 pad->output_enabled = true; in pmic_mpp_populate()
726 pad->function = PMIC_MPP_SINK; in pmic_mpp_populate()
737 pad->dtest = sel + 1; in pmic_mpp_populate()
739 pad->paired = true; in pmic_mpp_populate()
741 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_DIG_VIN_CTL); in pmic_mpp_populate()
745 pad->power_source = val >> PMIC_MPP_REG_VIN_SHIFT; in pmic_mpp_populate()
746 pad->power_source &= PMIC_MPP_REG_VIN_MASK; in pmic_mpp_populate()
750 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_DIG_PULL_CTL); in pmic_mpp_populate()
754 pad->pullup = val >> PMIC_MPP_REG_PULL_SHIFT; in pmic_mpp_populate()
755 pad->pullup &= PMIC_MPP_REG_PULL_MASK; in pmic_mpp_populate()
756 pad->has_pullup = true; in pmic_mpp_populate()
759 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_AIN_CTL); in pmic_mpp_populate()
763 pad->amux_input = val >> PMIC_MPP_REG_AIN_ROUTE_SHIFT; in pmic_mpp_populate()
764 pad->amux_input &= PMIC_MPP_REG_AIN_ROUTE_MASK; in pmic_mpp_populate()
766 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_SINK_CTL); in pmic_mpp_populate()
770 pad->drive_strength = val; in pmic_mpp_populate()
772 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_AOUT_CTL); in pmic_mpp_populate()
776 pad->aout_level = val; in pmic_mpp_populate()
778 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_EN_CTL); in pmic_mpp_populate()
782 pad->is_enabled = !!val; in pmic_mpp_populate()
831 struct pmic_mpp_pad *pad, *pads; in pmic_mpp_probe() local
883 pad = &pads[i]; in pmic_mpp_probe()
884 pindesc->drv_data = pad; in pmic_mpp_probe()
888 pad->base = reg + i * PMIC_MPP_ADDRESS_RANGE; in pmic_mpp_probe()
890 ret = pmic_mpp_populate(state, pad); in pmic_mpp_probe()