[PATCH v4 6/8] reset: starfive: Add syscon reset driver support
Changhuang Liang <[email protected]> Sat, 8 Aug 2026 18:50:52 -0700
| Newsgroups | org.kernel.vger.linux-clk,org.infradead.lists.linux-riscv,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Add syscon reset driver for JHB100 SoC. Signed-off-by: Changhuang Liang <[email protected]> --- drivers/reset/starfive/Kconfig | 9 +++ drivers/reset/starfive/Makefile | 1 + .../starfive/reset-starfive-jhb100-syscon.c | 62 +++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 drivers/reset/starfive/reset-starfive-jhb100-syscon.c diff --git a/drivers/reset/starfive/Kconfig b/drivers/reset/starfive/Kconfig index ce00495be6ad..d96cfb59f51c 100644 --- a/drivers/reset/starfive/Kconfig +++ b/drivers/reset/starfive/Kconfig @@ -28,3 +28,12 @@ config RESET_STARFIVE_JHB100 default ARCH_STARFIVE help This enables the reset controller driver for the StarFive JHB100 SoC. + +config RESET_STARFIVE_JHB100_SYSCON + tristate "StarFive JHB100 SYSCON Reset Driver" + depends on ARCH_STARFIVE || COMPILE_TEST + select RESET_STARFIVE_COMMON + default m if ARCH_STARFIVE + help + This enables the SYSCON reset controller driver for the StarFive + JHB100 SoC. diff --git a/drivers/reset/starfive/Makefile b/drivers/reset/starfive/Makefile index 217002302a9f..d5033d723167 100644 --- a/drivers/reset/starfive/Makefile +++ b/drivers/reset/starfive/Makefile @@ -4,3 +4,4 @@ obj-$(CONFIG_RESET_STARFIVE_COMMON) += reset-starfive-common.o obj-$(CONFIG_RESET_STARFIVE_JH7100) += reset-starfive-jh7100.o obj-$(CONFIG_RESET_STARFIVE_JH7110) += reset-starfive-jh7110.o obj-$(CONFIG_RESET_STARFIVE_JHB100) += reset-starfive-jhb100.o +obj-$(CONFIG_RESET_STARFIVE_JHB100_SYSCON) += reset-starfive-jhb100-syscon.o diff --git a/drivers/reset/starfive/reset-starfive-jhb100-syscon.c b/drivers/reset/starfive/reset-starfive-jhb100-syscon.c new file mode 100644 index 000000000000..55d84e6ad2a8 --- /dev/null +++ b/drivers/reset/starfive/reset-starfive-jhb100-syscon.c @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * SYSCON Reset driver for the StarFive JHB100 SoC + * + * Copyright (C) 2025 StarFive Technology Co., Ltd. + */ + +#include <dt-bindings/reset/starfive,jhb100-crg.h> +#include <linux/of.h> +#include <linux/platform_device.h> +#include <soc/starfive/reset-starfive-common.h> + +#include "reset-starfive-common.h" + +static const struct starfive_reset_info jhb100_pcierp_info = { + .nr_resets = (JHB100_PCIERP_SYSCONRST_PE2RST_OUT + 1), + .assert_offset = 0x14c, + .status_offset = 0x14c, + .discontiguous = false, + .active_low = true, +}; + +static int jhb100_syscon_reset_probe(struct platform_device *pdev) +{ + struct starfive_reset_info *info; + void __iomem *base; + + base = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(base)) + return PTR_ERR(base); + + info = (struct starfive_reset_info *)of_device_get_match_data(&pdev->dev); + if (!info) + return -ENODEV; + + return reset_starfive_register_with_info(&pdev->dev, pdev->dev.of_node, + base + info->assert_offset, + base + info->status_offset, + NULL, info, THIS_MODULE); +} + +static const struct of_device_id jhb100_syscon_reset_dt_ids[] = { + { + .compatible = "starfive,jhb100-pcierp-syscon", + .data = &jhb100_pcierp_info, + }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, jhb100_syscon_reset_dt_ids); + +static struct platform_driver jhb100_syscon_reset_driver = { + .probe = jhb100_syscon_reset_probe, + .driver = { + .name = "jhb100-syscon-reset", + .of_match_table = jhb100_syscon_reset_dt_ids, + }, +}; +module_platform_driver(jhb100_syscon_reset_driver); + +MODULE_AUTHOR("Changhuang Liang <[email protected]>"); +MODULE_DESCRIPTION("StarFive JHB100 SYSCON reset driver"); +MODULE_LICENSE("GPL"); -- 2.25.1