Lines Matching refs:state

504 static inline void tb10x_pinctrl_set_config(struct tb10x_pinctrl *state,  in tb10x_pinctrl_set_config()  argument
509 if (state->ports[port].count) in tb10x_pinctrl_set_config()
512 state->ports[port].mode = mode; in tb10x_pinctrl_set_config()
514 pcfg = ioread32(state->base) & ~(PCFG_PORT_MASK(port)); in tb10x_pinctrl_set_config()
516 iowrite32(pcfg, state->base); in tb10x_pinctrl_set_config()
520 struct tb10x_pinctrl *state, in tb10x_pinctrl_get_config() argument
523 return (ioread32(state->base) & PCFG_PORT_MASK(port)) in tb10x_pinctrl_get_config()
529 struct tb10x_pinctrl *state = pinctrl_dev_get_drvdata(pctl); in tb10x_get_groups_count() local
530 return state->pinfuncgrpcnt; in tb10x_get_groups_count()
535 struct tb10x_pinctrl *state = pinctrl_dev_get_drvdata(pctl); in tb10x_get_group_name() local
536 return state->pingroups[n].name; in tb10x_get_group_name()
543 struct tb10x_pinctrl *state = pinctrl_dev_get_drvdata(pctl); in tb10x_get_group_pins() local
545 *pins = state->pingroups[n].pins; in tb10x_get_group_pins()
546 *num_pins = state->pingroups[n].pincnt; in tb10x_get_group_pins()
590 struct tb10x_pinctrl *state = pinctrl_dev_get_drvdata(pctl); in tb10x_get_functions_count() local
591 return state->pinfuncnt; in tb10x_get_functions_count()
597 struct tb10x_pinctrl *state = pinctrl_dev_get_drvdata(pctl); in tb10x_get_function_name() local
598 return state->pinfuncs[n].name; in tb10x_get_function_name()
605 struct tb10x_pinctrl *state = pinctrl_dev_get_drvdata(pctl); in tb10x_get_function_groups() local
607 *groups = &state->pinfuncs[n].group; in tb10x_get_function_groups()
617 struct tb10x_pinctrl *state = pinctrl_dev_get_drvdata(pctl); in tb10x_gpio_request_enable() local
622 mutex_lock(&state->mutex); in tb10x_gpio_request_enable()
630 for (i = 0; i < state->pinfuncgrpcnt; i++) { in tb10x_gpio_request_enable()
631 const struct tb10x_pinfuncgrp *pfg = &state->pingroups[i]; in tb10x_gpio_request_enable()
651 } else if (state->ports[port].count in tb10x_gpio_request_enable()
652 && (state->ports[port].mode == mode)) { in tb10x_gpio_request_enable()
657 mutex_unlock(&state->mutex); in tb10x_gpio_request_enable()
671 set_bit(pin, state->gpios); in tb10x_gpio_request_enable()
680 tb10x_pinctrl_set_config(state, muxport, muxmode); in tb10x_gpio_request_enable()
682 mutex_unlock(&state->mutex); in tb10x_gpio_request_enable()
691 struct tb10x_pinctrl *state = pinctrl_dev_get_drvdata(pctl); in tb10x_gpio_disable_free() local
693 mutex_lock(&state->mutex); in tb10x_gpio_disable_free()
695 clear_bit(pin, state->gpios); in tb10x_gpio_disable_free()
697 mutex_unlock(&state->mutex); in tb10x_gpio_disable_free()
703 struct tb10x_pinctrl *state = pinctrl_dev_get_drvdata(pctl); in tb10x_pctl_set_mux() local
704 const struct tb10x_pinfuncgrp *grp = &state->pingroups[group_selector]; in tb10x_pctl_set_mux()
710 mutex_lock(&state->mutex); in tb10x_pctl_set_mux()
716 if (state->ports[grp->port].count in tb10x_pctl_set_mux()
717 && (state->ports[grp->port].mode != grp->mode)) { in tb10x_pctl_set_mux()
718 mutex_unlock(&state->mutex); in tb10x_pctl_set_mux()
727 if (test_bit(grp->pins[i], state->gpios)) { in tb10x_pctl_set_mux()
728 mutex_unlock(&state->mutex); in tb10x_pctl_set_mux()
732 tb10x_pinctrl_set_config(state, grp->port, grp->mode); in tb10x_pctl_set_mux()
734 state->ports[grp->port].count++; in tb10x_pctl_set_mux()
736 mutex_unlock(&state->mutex); in tb10x_pctl_set_mux()
766 struct tb10x_pinctrl *state; in tb10x_pinctrl_probe() local
774 state = devm_kzalloc(dev, sizeof(struct tb10x_pinctrl) + in tb10x_pinctrl_probe()
778 if (!state) in tb10x_pinctrl_probe()
781 platform_set_drvdata(pdev, state); in tb10x_pinctrl_probe()
782 state->pinfuncs = (struct tb10x_of_pinfunc *)(state + 1); in tb10x_pinctrl_probe()
783 mutex_init(&state->mutex); in tb10x_pinctrl_probe()
786 state->base = devm_ioremap_resource(dev, mem); in tb10x_pinctrl_probe()
787 if (IS_ERR(state->base)) { in tb10x_pinctrl_probe()
788 ret = PTR_ERR(state->base); in tb10x_pinctrl_probe()
792 state->pingroups = tb10x_pingroups; in tb10x_pinctrl_probe()
793 state->pinfuncgrpcnt = ARRAY_SIZE(tb10x_pingroups); in tb10x_pinctrl_probe()
796 state->ports[i].mode = tb10x_pinctrl_get_config(state, i); in tb10x_pinctrl_probe()
803 state->pinfuncs[state->pinfuncnt].name = child->name; in tb10x_pinctrl_probe()
804 state->pinfuncs[state->pinfuncnt].group = name; in tb10x_pinctrl_probe()
805 state->pinfuncnt++; in tb10x_pinctrl_probe()
809 state->pctl = pinctrl_register(&tb10x_pindesc, dev, state); in tb10x_pinctrl_probe()
810 if (!state->pctl) { in tb10x_pinctrl_probe()
819 mutex_destroy(&state->mutex); in tb10x_pinctrl_probe()
825 struct tb10x_pinctrl *state = platform_get_drvdata(pdev); in tb10x_pinctrl_remove() local
827 pinctrl_unregister(state->pctl); in tb10x_pinctrl_remove()
828 mutex_destroy(&state->mutex); in tb10x_pinctrl_remove()