Lines Matching refs:pad
167 struct pmic_gpio_pad *pad, unsigned int addr) in pmic_gpio_read() argument
172 ret = regmap_read(state->map, pad->base + addr, &val); in pmic_gpio_read()
182 struct pmic_gpio_pad *pad, unsigned int addr, in pmic_gpio_write() argument
187 ret = regmap_write(state->map, pad->base + addr, val); in pmic_gpio_write()
247 struct pmic_gpio_pad *pad; in pmic_gpio_set_mux() local
251 pad = pctldev->desc->pins[pin].drv_data; in pmic_gpio_set_mux()
253 pad->function = function; in pmic_gpio_set_mux()
256 if (pad->output_enabled) { in pmic_gpio_set_mux()
257 if (pad->input_enabled) in pmic_gpio_set_mux()
264 val |= pad->function << PMIC_GPIO_REG_MODE_FUNCTION_SHIFT; in pmic_gpio_set_mux()
265 val |= pad->out_value & PMIC_GPIO_REG_MODE_VALUE_SHIFT; in pmic_gpio_set_mux()
267 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_MODE_CTL, val); in pmic_gpio_set_mux()
271 val = pad->is_enabled << PMIC_GPIO_REG_MASTER_EN_SHIFT; in pmic_gpio_set_mux()
273 return pmic_gpio_write(state, pad, PMIC_GPIO_REG_EN_CTL, val); in pmic_gpio_set_mux()
287 struct pmic_gpio_pad *pad; in pmic_gpio_config_get() local
290 pad = pctldev->desc->pins[pin].drv_data; in pmic_gpio_config_get()
294 arg = pad->buffer_type == PMIC_GPIO_OUT_BUF_CMOS; in pmic_gpio_config_get()
297 arg = pad->buffer_type == PMIC_GPIO_OUT_BUF_OPEN_DRAIN_NMOS; in pmic_gpio_config_get()
300 arg = pad->buffer_type == PMIC_GPIO_OUT_BUF_OPEN_DRAIN_PMOS; in pmic_gpio_config_get()
303 arg = pad->pullup == PMIC_GPIO_PULL_DOWN; in pmic_gpio_config_get()
306 arg = pad->pullup = PMIC_GPIO_PULL_DISABLE; in pmic_gpio_config_get()
309 arg = pad->pullup == PMIC_GPIO_PULL_UP_30; in pmic_gpio_config_get()
312 arg = !pad->is_enabled; in pmic_gpio_config_get()
315 arg = pad->power_source; in pmic_gpio_config_get()
318 arg = pad->input_enabled; in pmic_gpio_config_get()
321 arg = pad->out_value; in pmic_gpio_config_get()
324 arg = pad->pullup; in pmic_gpio_config_get()
327 arg = pad->strength; in pmic_gpio_config_get()
341 struct pmic_gpio_pad *pad; in pmic_gpio_config_set() local
346 pad = pctldev->desc->pins[pin].drv_data; in pmic_gpio_config_set()
354 pad->buffer_type = PMIC_GPIO_OUT_BUF_CMOS; in pmic_gpio_config_set()
357 if (!pad->have_buffer) in pmic_gpio_config_set()
359 pad->buffer_type = PMIC_GPIO_OUT_BUF_OPEN_DRAIN_NMOS; in pmic_gpio_config_set()
362 if (!pad->have_buffer) in pmic_gpio_config_set()
364 pad->buffer_type = PMIC_GPIO_OUT_BUF_OPEN_DRAIN_PMOS; in pmic_gpio_config_set()
367 pad->pullup = PMIC_GPIO_PULL_DISABLE; in pmic_gpio_config_set()
370 pad->pullup = PMIC_GPIO_PULL_UP_30; in pmic_gpio_config_set()
374 pad->pullup = PMIC_GPIO_PULL_DOWN; in pmic_gpio_config_set()
376 pad->pullup = PMIC_GPIO_PULL_DISABLE; in pmic_gpio_config_set()
379 pad->is_enabled = false; in pmic_gpio_config_set()
382 if (arg > pad->num_sources) in pmic_gpio_config_set()
384 pad->power_source = arg; in pmic_gpio_config_set()
387 pad->input_enabled = arg ? true : false; in pmic_gpio_config_set()
390 pad->output_enabled = true; in pmic_gpio_config_set()
391 pad->out_value = arg; in pmic_gpio_config_set()
396 pad->pullup = arg; in pmic_gpio_config_set()
401 pad->strength = arg; in pmic_gpio_config_set()
408 val = pad->power_source << PMIC_GPIO_REG_VIN_SHIFT; in pmic_gpio_config_set()
410 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_DIG_VIN_CTL, val); in pmic_gpio_config_set()
414 val = pad->pullup << PMIC_GPIO_REG_PULL_SHIFT; in pmic_gpio_config_set()
416 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_DIG_PULL_CTL, val); in pmic_gpio_config_set()
420 val = pad->buffer_type << PMIC_GPIO_REG_OUT_TYPE_SHIFT; in pmic_gpio_config_set()
421 val |= pad->strength << PMIC_GPIO_REG_OUT_STRENGTH_SHIFT; in pmic_gpio_config_set()
423 ret = pmic_gpio_write(state, pad, PMIC_GPIO_REG_DIG_OUT_CTL, val); in pmic_gpio_config_set()
428 if (pad->output_enabled) { in pmic_gpio_config_set()
429 if (pad->input_enabled) in pmic_gpio_config_set()
436 val |= pad->function << PMIC_GPIO_REG_MODE_FUNCTION_SHIFT; in pmic_gpio_config_set()
437 val |= pad->out_value & PMIC_GPIO_REG_MODE_VALUE_SHIFT; in pmic_gpio_config_set()
439 return pmic_gpio_write(state, pad, PMIC_GPIO_REG_MODE_CTL, val); in pmic_gpio_config_set()
446 struct pmic_gpio_pad *pad; in pmic_gpio_config_dbg_show() local
460 pad = pctldev->desc->pins[pin].drv_data; in pmic_gpio_config_dbg_show()
464 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_EN_CTL); in pmic_gpio_config_dbg_show()
470 if (pad->input_enabled) { in pmic_gpio_config_dbg_show()
471 ret = pmic_gpio_read(state, pad, PMIC_MPP_REG_RT_STS); in pmic_gpio_config_dbg_show()
476 pad->out_value = ret; in pmic_gpio_config_dbg_show()
479 seq_printf(s, " %-4s", pad->output_enabled ? "out" : "in"); in pmic_gpio_config_dbg_show()
480 seq_printf(s, " %-7s", pmic_gpio_functions[pad->function]); in pmic_gpio_config_dbg_show()
481 seq_printf(s, " vin-%d", pad->power_source); in pmic_gpio_config_dbg_show()
482 seq_printf(s, " %-27s", biases[pad->pullup]); in pmic_gpio_config_dbg_show()
483 seq_printf(s, " %-10s", buffer_types[pad->buffer_type]); in pmic_gpio_config_dbg_show()
484 seq_printf(s, " %-4s", pad->out_value ? "high" : "low"); in pmic_gpio_config_dbg_show()
485 seq_printf(s, " %-7s", strengths[pad->strength]); in pmic_gpio_config_dbg_show()
520 struct pmic_gpio_pad *pad; in pmic_gpio_get() local
523 pad = state->ctrl->desc->pins[pin].drv_data; in pmic_gpio_get()
525 if (!pad->is_enabled) in pmic_gpio_get()
528 if (pad->input_enabled) { in pmic_gpio_get()
529 ret = pmic_gpio_read(state, pad, PMIC_MPP_REG_RT_STS); in pmic_gpio_get()
533 pad->out_value = ret & PMIC_MPP_REG_RT_STS_VAL_MASK; in pmic_gpio_get()
536 return pad->out_value; in pmic_gpio_get()
565 struct pmic_gpio_pad *pad; in pmic_gpio_to_irq() local
567 pad = state->ctrl->desc->pins[pin].drv_data; in pmic_gpio_to_irq()
569 return pad->irq; in pmic_gpio_to_irq()
596 struct pmic_gpio_pad *pad) in pmic_gpio_populate() argument
600 type = pmic_gpio_read(state, pad, PMIC_GPIO_REG_TYPE); in pmic_gpio_populate()
606 type, pad->base); in pmic_gpio_populate()
610 subtype = pmic_gpio_read(state, pad, PMIC_GPIO_REG_SUBTYPE); in pmic_gpio_populate()
616 pad->have_buffer = true; in pmic_gpio_populate()
618 pad->num_sources = 4; in pmic_gpio_populate()
621 pad->have_buffer = true; in pmic_gpio_populate()
623 pad->num_sources = 8; in pmic_gpio_populate()
630 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_MODE_CTL); in pmic_gpio_populate()
634 pad->out_value = val & PMIC_GPIO_REG_MODE_VALUE_SHIFT; in pmic_gpio_populate()
640 pad->input_enabled = true; in pmic_gpio_populate()
641 pad->output_enabled = false; in pmic_gpio_populate()
644 pad->input_enabled = false; in pmic_gpio_populate()
645 pad->output_enabled = true; in pmic_gpio_populate()
648 pad->input_enabled = true; in pmic_gpio_populate()
649 pad->output_enabled = true; in pmic_gpio_populate()
656 pad->function = val >> PMIC_GPIO_REG_MODE_FUNCTION_SHIFT; in pmic_gpio_populate()
657 pad->function &= PMIC_GPIO_REG_MODE_FUNCTION_MASK; in pmic_gpio_populate()
659 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_DIG_VIN_CTL); in pmic_gpio_populate()
663 pad->power_source = val >> PMIC_GPIO_REG_VIN_SHIFT; in pmic_gpio_populate()
664 pad->power_source &= PMIC_GPIO_REG_VIN_MASK; in pmic_gpio_populate()
666 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_DIG_PULL_CTL); in pmic_gpio_populate()
670 pad->pullup = val >> PMIC_GPIO_REG_PULL_SHIFT; in pmic_gpio_populate()
671 pad->pullup &= PMIC_GPIO_REG_PULL_MASK; in pmic_gpio_populate()
673 val = pmic_gpio_read(state, pad, PMIC_GPIO_REG_DIG_OUT_CTL); in pmic_gpio_populate()
677 pad->strength = val >> PMIC_GPIO_REG_OUT_STRENGTH_SHIFT; in pmic_gpio_populate()
678 pad->strength &= PMIC_GPIO_REG_OUT_STRENGTH_MASK; in pmic_gpio_populate()
680 pad->buffer_type = val >> PMIC_GPIO_REG_OUT_TYPE_SHIFT; in pmic_gpio_populate()
681 pad->buffer_type &= PMIC_GPIO_REG_OUT_TYPE_MASK; in pmic_gpio_populate()
684 pad->is_enabled = true; in pmic_gpio_populate()
693 struct pmic_gpio_pad *pad, *pads; in pmic_gpio_probe() local
746 pad = &pads[i]; in pmic_gpio_probe()
747 pindesc->drv_data = pad; in pmic_gpio_probe()
751 pad->irq = platform_get_irq(pdev, i); in pmic_gpio_probe()
752 if (pad->irq < 0) in pmic_gpio_probe()
753 return pad->irq; in pmic_gpio_probe()
755 pad->base = res[0] + i * PMIC_GPIO_ADDRESS_RANGE; in pmic_gpio_probe()
757 ret = pmic_gpio_populate(state, pad); in pmic_gpio_probe()