Lines Matching refs:pad

159 			 struct pmic_mpp_pad *pad, unsigned int addr)  in pmic_mpp_read()  argument
164 ret = regmap_read(state->map, pad->base + addr, &val); in pmic_mpp_read()
174 struct pmic_mpp_pad *pad, unsigned int addr, in pmic_mpp_write() argument
179 ret = regmap_write(state->map, pad->base + addr, val); in pmic_mpp_write()
347 struct pmic_mpp_pad *pad; in pmic_mpp_set_mux() local
351 pad = pctldev->desc->pins[pin].drv_data; in pmic_mpp_set_mux()
353 pad->function = function; in pmic_mpp_set_mux()
355 if (!pad->analog_mode) { in pmic_mpp_set_mux()
357 if (pad->output_enabled) { in pmic_mpp_set_mux()
358 if (pad->input_enabled) in pmic_mpp_set_mux()
365 if (pad->output_enabled) { in pmic_mpp_set_mux()
366 if (pad->input_enabled) in pmic_mpp_set_mux()
374 val |= pad->function << PMIC_MPP_REG_MODE_FUNCTION_SHIFT; in pmic_mpp_set_mux()
375 val |= pad->out_value & PMIC_MPP_REG_MODE_VALUE_MASK; in pmic_mpp_set_mux()
377 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_MODE_CTL, val); in pmic_mpp_set_mux()
381 val = pad->is_enabled << PMIC_MPP_REG_MASTER_EN_SHIFT; in pmic_mpp_set_mux()
383 return pmic_mpp_write(state, pad, PMIC_MPP_REG_EN_CTL, val); in pmic_mpp_set_mux()
397 struct pmic_mpp_pad *pad; in pmic_mpp_config_get() local
400 pad = pctldev->desc->pins[pin].drv_data; in pmic_mpp_config_get()
404 arg = pad->pullup == PMIC_MPP_PULL_UP_OPEN; in pmic_mpp_config_get()
407 switch (pad->pullup) { in pmic_mpp_config_get()
425 arg = !pad->is_enabled; in pmic_mpp_config_get()
428 arg = pad->power_source; in pmic_mpp_config_get()
431 arg = pad->input_enabled; in pmic_mpp_config_get()
434 arg = pad->out_value; in pmic_mpp_config_get()
437 arg = pad->amux_input; in pmic_mpp_config_get()
440 arg = pad->analog_mode; in pmic_mpp_config_get()
455 struct pmic_mpp_pad *pad; in pmic_mpp_config_set() local
460 pad = pctldev->desc->pins[pin].drv_data; in pmic_mpp_config_set()
468 pad->pullup = PMIC_MPP_PULL_UP_OPEN; in pmic_mpp_config_set()
473 pad->pullup = PMIC_MPP_PULL_UP_0P6KOHM; in pmic_mpp_config_set()
476 pad->pullup = PMIC_MPP_PULL_UP_10KOHM; in pmic_mpp_config_set()
479 pad->pullup = PMIC_MPP_PULL_UP_30KOHM; in pmic_mpp_config_set()
486 pad->is_enabled = false; in pmic_mpp_config_set()
489 if (arg >= pad->num_sources) in pmic_mpp_config_set()
491 pad->power_source = arg; in pmic_mpp_config_set()
494 pad->input_enabled = arg ? true : false; in pmic_mpp_config_set()
497 pad->output_enabled = true; in pmic_mpp_config_set()
498 pad->out_value = arg; in pmic_mpp_config_set()
503 pad->amux_input = arg; in pmic_mpp_config_set()
506 pad->analog_mode = true; in pmic_mpp_config_set()
513 val = pad->power_source << PMIC_MPP_REG_VIN_SHIFT; in pmic_mpp_config_set()
515 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_DIG_VIN_CTL, val); in pmic_mpp_config_set()
519 val = pad->pullup << PMIC_MPP_REG_PULL_SHIFT; in pmic_mpp_config_set()
521 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_DIG_PULL_CTL, val); in pmic_mpp_config_set()
525 val = pad->amux_input & PMIC_MPP_REG_AIN_ROUTE_MASK; in pmic_mpp_config_set()
527 ret = pmic_mpp_write(state, pad, PMIC_MPP_REG_AIN_CTL, val); in pmic_mpp_config_set()
531 if (!pad->analog_mode) { in pmic_mpp_config_set()
533 if (pad->output_enabled) { in pmic_mpp_config_set()
534 if (pad->input_enabled) in pmic_mpp_config_set()
541 if (pad->output_enabled) { in pmic_mpp_config_set()
542 if (pad->input_enabled) in pmic_mpp_config_set()
550 val |= pad->function << PMIC_MPP_REG_MODE_FUNCTION_SHIFT; in pmic_mpp_config_set()
551 val |= pad->out_value & PMIC_MPP_REG_MODE_VALUE_MASK; in pmic_mpp_config_set()
553 return pmic_mpp_write(state, pad, PMIC_MPP_REG_MODE_CTL, val); in pmic_mpp_config_set()
560 struct pmic_mpp_pad *pad; in pmic_mpp_config_dbg_show() local
568 pad = pctldev->desc->pins[pin].drv_data; in pmic_mpp_config_dbg_show()
572 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_EN_CTL); in pmic_mpp_config_dbg_show()
578 if (pad->input_enabled) { in pmic_mpp_config_dbg_show()
579 ret = pmic_mpp_read(state, pad, PMIC_MPP_REG_RT_STS); in pmic_mpp_config_dbg_show()
584 pad->out_value = ret; in pmic_mpp_config_dbg_show()
587 seq_printf(s, " %-4s", pad->output_enabled ? "out" : "in"); in pmic_mpp_config_dbg_show()
588 seq_printf(s, " %-4s", pad->analog_mode ? "ana" : "dig"); in pmic_mpp_config_dbg_show()
589 seq_printf(s, " %-7s", pmic_mpp_functions[pad->function]); in pmic_mpp_config_dbg_show()
590 seq_printf(s, " vin-%d", pad->power_source); in pmic_mpp_config_dbg_show()
591 seq_printf(s, " %-8s", biases[pad->pullup]); in pmic_mpp_config_dbg_show()
592 seq_printf(s, " %-4s", pad->out_value ? "high" : "low"); in pmic_mpp_config_dbg_show()
626 struct pmic_mpp_pad *pad; in pmic_mpp_get() local
629 pad = state->ctrl->desc->pins[pin].drv_data; in pmic_mpp_get()
631 if (pad->input_enabled) { in pmic_mpp_get()
632 ret = pmic_mpp_read(state, pad, PMIC_MPP_REG_RT_STS); in pmic_mpp_get()
636 pad->out_value = ret & PMIC_MPP_REG_RT_STS_VAL_MASK; in pmic_mpp_get()
639 return pad->out_value; in pmic_mpp_get()
678 struct pmic_mpp_pad *pad; in pmic_mpp_to_irq() local
680 pad = state->ctrl->desc->pins[pin].drv_data; in pmic_mpp_to_irq()
682 return pad->irq; in pmic_mpp_to_irq()
709 struct pmic_mpp_pad *pad) in pmic_mpp_populate() argument
713 type = pmic_mpp_read(state, pad, PMIC_MPP_REG_TYPE); in pmic_mpp_populate()
719 type, pad->base); in pmic_mpp_populate()
723 subtype = pmic_mpp_read(state, pad, PMIC_MPP_REG_SUBTYPE); in pmic_mpp_populate()
733 pad->num_sources = 4; in pmic_mpp_populate()
736 pad->num_sources = 8; in pmic_mpp_populate()
740 subtype, pad->base); in pmic_mpp_populate()
744 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_MODE_CTL); in pmic_mpp_populate()
748 pad->out_value = val & PMIC_MPP_REG_MODE_VALUE_MASK; in pmic_mpp_populate()
755 pad->input_enabled = true; in pmic_mpp_populate()
756 pad->output_enabled = false; in pmic_mpp_populate()
757 pad->analog_mode = false; in pmic_mpp_populate()
760 pad->input_enabled = false; in pmic_mpp_populate()
761 pad->output_enabled = true; in pmic_mpp_populate()
762 pad->analog_mode = false; in pmic_mpp_populate()
765 pad->input_enabled = true; in pmic_mpp_populate()
766 pad->output_enabled = true; in pmic_mpp_populate()
767 pad->analog_mode = false; in pmic_mpp_populate()
770 pad->input_enabled = true; in pmic_mpp_populate()
771 pad->output_enabled = true; in pmic_mpp_populate()
772 pad->analog_mode = true; in pmic_mpp_populate()
775 pad->input_enabled = true; in pmic_mpp_populate()
776 pad->output_enabled = false; in pmic_mpp_populate()
777 pad->analog_mode = true; in pmic_mpp_populate()
780 pad->input_enabled = false; in pmic_mpp_populate()
781 pad->output_enabled = true; in pmic_mpp_populate()
782 pad->analog_mode = true; in pmic_mpp_populate()
789 pad->function = val >> PMIC_MPP_REG_MODE_FUNCTION_SHIFT; in pmic_mpp_populate()
790 pad->function &= PMIC_MPP_REG_MODE_FUNCTION_MASK; in pmic_mpp_populate()
792 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_DIG_VIN_CTL); in pmic_mpp_populate()
796 pad->power_source = val >> PMIC_MPP_REG_VIN_SHIFT; in pmic_mpp_populate()
797 pad->power_source &= PMIC_MPP_REG_VIN_MASK; in pmic_mpp_populate()
799 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_DIG_PULL_CTL); in pmic_mpp_populate()
803 pad->pullup = val >> PMIC_MPP_REG_PULL_SHIFT; in pmic_mpp_populate()
804 pad->pullup &= PMIC_MPP_REG_PULL_MASK; in pmic_mpp_populate()
806 val = pmic_mpp_read(state, pad, PMIC_MPP_REG_AIN_CTL); in pmic_mpp_populate()
810 pad->amux_input = val >> PMIC_MPP_REG_AIN_ROUTE_SHIFT; in pmic_mpp_populate()
811 pad->amux_input &= PMIC_MPP_REG_AIN_ROUTE_MASK; in pmic_mpp_populate()
814 pad->is_enabled = true; in pmic_mpp_populate()
823 struct pmic_mpp_pad *pad, *pads; in pmic_mpp_probe() local
870 pad = &pads[i]; in pmic_mpp_probe()
871 pindesc->drv_data = pad; in pmic_mpp_probe()
875 pad->irq = platform_get_irq(pdev, i); in pmic_mpp_probe()
876 if (pad->irq < 0) in pmic_mpp_probe()
877 return pad->irq; in pmic_mpp_probe()
879 pad->base = res[0] + i * PMIC_MPP_ADDRESS_RANGE; in pmic_mpp_probe()
881 ret = pmic_mpp_populate(state, pad); in pmic_mpp_probe()