Lines Matching refs:pctrl
127 static inline void __iomem *spacemit_pin_to_reg(struct spacemit_pinctrl *pctrl, in spacemit_pin_to_reg() argument
130 return pctrl->regs + spacemit_pin_to_offset(pin); in spacemit_pin_to_reg()
143 static const struct spacemit_pin *spacemit_get_pin(struct spacemit_pinctrl *pctrl, in spacemit_get_pin() argument
146 const struct spacemit_pin *pdata = pctrl->data->data; in spacemit_get_pin()
149 for (i = 0; i < pctrl->data->npins; i++) { in spacemit_get_pin()
174 struct spacemit_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); in spacemit_pctrl_dbg_show() local
175 const struct spacemit_pin *spin = spacemit_get_pin(pctrl, pin); in spacemit_pctrl_dbg_show()
183 reg = spacemit_pin_to_reg(pctrl, pin); in spacemit_pctrl_dbg_show()
270 struct spacemit_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); in spacemit_pctrl_check_power() local
271 struct device *dev = pctrl->dev; in spacemit_pctrl_check_power()
302 struct spacemit_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); in spacemit_pctrl_dt_node_to_map() local
303 struct device *dev = pctrl->dev; in spacemit_pctrl_dt_node_to_map()
324 guard(mutex)(&pctrl->mutex); in spacemit_pctrl_dt_node_to_map()
362 pinmuxs[i].pin = spacemit_get_pin(pctrl, pins[i]); in spacemit_pctrl_dt_node_to_map()
423 struct spacemit_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); in spacemit_pmx_set_mux() local
439 reg = spacemit_pin_to_reg(pctrl, spin->pin); in spacemit_pmx_set_mux()
442 guard(raw_spinlock_irqsave)(&pctrl->lock); in spacemit_pmx_set_mux()
454 struct spacemit_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); in spacemit_request_gpio() local
455 const struct spacemit_pin *spin = spacemit_get_pin(pctrl, pin); in spacemit_request_gpio()
458 reg = spacemit_pin_to_reg(pctrl, pin); in spacemit_request_gpio()
459 guard(raw_spinlock_irqsave)(&pctrl->lock); in spacemit_request_gpio()
477 struct spacemit_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); in spacemit_pinconf_get() local
484 value = readl(spacemit_pin_to_reg(pctrl, pin)); in spacemit_pinconf_get()
605 static int spacemit_pin_set_config(struct spacemit_pinctrl *pctrl, in spacemit_pin_set_config() argument
608 const struct spacemit_pin *spin = spacemit_get_pin(pctrl, pin); in spacemit_pin_set_config()
615 reg = spacemit_pin_to_reg(pctrl, spin->pin); in spacemit_pin_set_config()
617 guard(raw_spinlock_irqsave)(&pctrl->lock); in spacemit_pin_set_config()
628 struct spacemit_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); in spacemit_pinconf_set() local
629 const struct spacemit_pin *spin = spacemit_get_pin(pctrl, pin); in spacemit_pinconf_set()
635 return spacemit_pin_set_config(pctrl, pin, value); in spacemit_pinconf_set()
643 struct spacemit_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); in spacemit_pinconf_group_set() local
653 spin = spacemit_get_pin(pctrl, group->grp.pins[0]); in spacemit_pinconf_group_set()
658 spacemit_pin_set_config(pctrl, group->grp.pins[i], value); in spacemit_pinconf_group_set()
687 struct spacemit_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); in spacemit_pinconf_dbg_show() local
688 const struct spacemit_pin *spin = spacemit_get_pin(pctrl, pin); in spacemit_pinconf_dbg_show()
690 void __iomem *reg = spacemit_pin_to_reg(pctrl, pin); in spacemit_pinconf_dbg_show()
724 struct spacemit_pinctrl *pctrl; in spacemit_pinctrl_probe() local
736 pctrl = devm_kzalloc(dev, sizeof(*pctrl), GFP_KERNEL); in spacemit_pinctrl_probe()
737 if (!pctrl) in spacemit_pinctrl_probe()
740 pctrl->regs = devm_platform_ioremap_resource(pdev, 0); in spacemit_pinctrl_probe()
741 if (IS_ERR(pctrl->regs)) in spacemit_pinctrl_probe()
742 return PTR_ERR(pctrl->regs); in spacemit_pinctrl_probe()
752 pctrl->pdesc.name = dev_name(dev); in spacemit_pinctrl_probe()
753 pctrl->pdesc.pins = pctrl_data->pins; in spacemit_pinctrl_probe()
754 pctrl->pdesc.npins = pctrl_data->npins; in spacemit_pinctrl_probe()
755 pctrl->pdesc.pctlops = &spacemit_pctrl_ops; in spacemit_pinctrl_probe()
756 pctrl->pdesc.pmxops = &spacemit_pmx_ops; in spacemit_pinctrl_probe()
757 pctrl->pdesc.confops = &spacemit_pinconf_ops; in spacemit_pinctrl_probe()
758 pctrl->pdesc.owner = THIS_MODULE; in spacemit_pinctrl_probe()
760 pctrl->data = pctrl_data; in spacemit_pinctrl_probe()
761 pctrl->dev = dev; in spacemit_pinctrl_probe()
762 raw_spin_lock_init(&pctrl->lock); in spacemit_pinctrl_probe()
764 ret = devm_mutex_init(dev, &pctrl->mutex); in spacemit_pinctrl_probe()
768 platform_set_drvdata(pdev, pctrl); in spacemit_pinctrl_probe()
770 ret = devm_pinctrl_register_and_init(dev, &pctrl->pdesc, in spacemit_pinctrl_probe()
771 pctrl, &pctrl->pctl_dev); in spacemit_pinctrl_probe()
776 return pinctrl_enable(pctrl->pctl_dev); in spacemit_pinctrl_probe()