Lines Matching full:hdp
534 struct stm32_hdp *hdp = pinctrl_dev_get_drvdata(pctldev); in stm32_hdp_pinmux_get_function_name() local
536 return hdp->func_name[selector]; in stm32_hdp_pinmux_get_function_name()
554 struct stm32_hdp *hdp = pinctrl_dev_get_drvdata(pctldev); in stm32_hdp_pinmux_set_mux() local
560 mux = readl_relaxed(hdp->base + HDP_MUX); in stm32_hdp_pinmux_set_mux()
564 writel_relaxed(mux, hdp->base + HDP_MUX); in stm32_hdp_pinmux_set_mux()
565 hdp->mux_conf = mux; in stm32_hdp_pinmux_set_mux()
589 .compatible = "st,stm32mp131-hdp",
593 .compatible = "st,stm32mp151-hdp",
597 .compatible = "st,stm32mp251-hdp",
607 struct stm32_hdp *hdp; in stm32_hdp_probe() local
611 hdp = devm_kzalloc(dev, sizeof(*hdp), GFP_KERNEL); in stm32_hdp_probe()
612 if (!hdp) in stm32_hdp_probe()
614 hdp->dev = dev; in stm32_hdp_probe()
616 platform_set_drvdata(pdev, hdp); in stm32_hdp_probe()
618 hdp->base = devm_platform_ioremap_resource(pdev, 0); in stm32_hdp_probe()
619 if (IS_ERR(hdp->base)) in stm32_hdp_probe()
620 return PTR_ERR(hdp->base); in stm32_hdp_probe()
622 hdp->func_name = of_device_get_match_data(dev); in stm32_hdp_probe()
623 if (!hdp->func_name) in stm32_hdp_probe()
626 hdp->clk = devm_clk_get_enabled(dev, NULL); in stm32_hdp_probe()
627 if (IS_ERR(hdp->clk)) in stm32_hdp_probe()
628 return dev_err_probe(dev, PTR_ERR(hdp->clk), "No HDP clock provided\n"); in stm32_hdp_probe()
630 err = devm_pinctrl_register_and_init(dev, &stm32_hdp_pdesc, hdp, &hdp->pctl_dev); in stm32_hdp_probe()
634 err = pinctrl_enable(hdp->pctl_dev); in stm32_hdp_probe()
638 hdp->gpio_chip.get_direction = stm32_hdp_gpio_get_direction; in stm32_hdp_probe()
639 hdp->gpio_chip.ngpio = ARRAY_SIZE(stm32_hdp_pins); in stm32_hdp_probe()
640 hdp->gpio_chip.can_sleep = true; in stm32_hdp_probe()
641 hdp->gpio_chip.names = stm32_hdp_pins_group; in stm32_hdp_probe()
643 err = bgpio_init(&hdp->gpio_chip, dev, 4, in stm32_hdp_probe()
644 hdp->base + HDP_GPOVAL, in stm32_hdp_probe()
645 hdp->base + HDP_GPOSET, in stm32_hdp_probe()
646 hdp->base + HDP_GPOCLR, in stm32_hdp_probe()
652 err = devm_gpiochip_add_data(dev, &hdp->gpio_chip, hdp); in stm32_hdp_probe()
656 writel_relaxed(HDP_CTRL_ENABLE, hdp->base + HDP_CTRL); in stm32_hdp_probe()
658 version = readl_relaxed(hdp->base + HDP_VERR); in stm32_hdp_probe()
659 dev_dbg(dev, "STM32 HDP version %u.%u initialized\n", version >> 4, version & 0x0f); in stm32_hdp_probe()
666 struct stm32_hdp *hdp = platform_get_drvdata(pdev); in stm32_hdp_remove() local
668 writel_relaxed(HDP_CTRL_DISABLE, hdp->base + HDP_CTRL); in stm32_hdp_remove()
673 struct stm32_hdp *hdp = dev_get_drvdata(dev); in stm32_hdp_suspend() local
675 hdp->gposet_conf = readl_relaxed(hdp->base + HDP_GPOSET); in stm32_hdp_suspend()
679 clk_disable_unprepare(hdp->clk); in stm32_hdp_suspend()
686 struct stm32_hdp *hdp = dev_get_drvdata(dev); in stm32_hdp_resume() local
689 err = clk_prepare_enable(hdp->clk); in stm32_hdp_resume()
695 writel_relaxed(HDP_CTRL_ENABLE, hdp->base + HDP_CTRL); in stm32_hdp_resume()
696 writel_relaxed(hdp->gposet_conf, hdp->base + HDP_GPOSET); in stm32_hdp_resume()
697 writel_relaxed(hdp->mux_conf, hdp->base + HDP_MUX); in stm32_hdp_resume()