From: Krzysztof Kozlowski <krzk@kernel.org>
To: Gatien Chevallier <gatien.chevallier@foss.st.com>,
alexandre.torgue@foss.st.com, robh+dt@kernel.org,
Oleksii_Moisieiev@epam.com, linus.walleij@linaro.org,
gregkh@linuxfoundation.org
Cc: linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, loic.pallardy@st.com,
devicetree@vger.kernel.org, mark.rutland@arm.com, arnd@arndb.de
Subject: Re: [RFC PATCH 5/7] bus: stm32_sys_bus: add support for STM32MP15 and STM32MP13 system bus
Date: Thu, 22 Dec 2022 11:28:51 +0100 [thread overview]
Message-ID: <ed8aa4d3-9570-eb72-a7d4-3b690adc3a6d@kernel.org> (raw)
In-Reply-To: <20221221173055.11719-6-gatien.chevallier@foss.st.com>
On 21/12/2022 18:30, Gatien Chevallier wrote:
> This driver is checking the access rights of the different
> peripherals connected to the system bus. If access is denied,
> the associated device tree node is skipped so the platform bus
> does not probe it.
>
> Signed-off-by: Loic PALLARDY <loic.pallardy@st.com>
> Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com>
> ---
> MAINTAINERS | 6 ++
> drivers/bus/Kconfig | 9 ++
> drivers/bus/Makefile | 1 +
> drivers/bus/stm32_sys_bus.c | 180 ++++++++++++++++++++++++++++++++++++
> 4 files changed, 196 insertions(+)
> create mode 100644 drivers/bus/stm32_sys_bus.c
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 886d3f69ee64..768a8272233e 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -19522,6 +19522,12 @@ L: linux-spi@vger.kernel.org
> S: Maintained
> F: drivers/spi/spi-stm32.c
>
> +ST STM32 SYS BUS DRIVER
> +M: Gatien Chevallier <gatien.chevallier@foss.st.com>
> +S: Maintained
> +F: Documentation/devicetree/bindings/bus/st,sys-bus.yaml
> +F: drivers/bus/stm32_sys_bus.c
> +
> ST STPDDC60 DRIVER
> M: Daniel Nilsson <daniel.nilsson@flex.com>
> L: linux-hwmon@vger.kernel.org
> diff --git a/drivers/bus/Kconfig b/drivers/bus/Kconfig
> index 7bfe998f3514..638bf5839cb0 100644
> --- a/drivers/bus/Kconfig
> +++ b/drivers/bus/Kconfig
> @@ -163,6 +163,15 @@ config QCOM_SSC_BLOCK_BUS
> i2c/spi/uart controllers, a hexagon core, and a clock controller
> which provides clocks for the above.
>
> +config STM32_SYS_BUS
> + bool "STM32 System bus controller"
> + depends on ARCH_STM32
|| COMPILE_TEST
> + default MACH_STM32MP157 || MACH_STM32MP13
> + help
> + Say y to enable device access right verification before device probing.
> + If access not granted, device won't be probed and an error message will
> + provide the reason.
(...)
> +
> +static int stm32_sys_bus_probe(struct platform_device *pdev)
> +{
> + struct sys_bus_data *pdata;
> + struct resource *res;
> + void __iomem *mmio;
> + struct stm32_sys_bus_match_data *mdata;
> + struct device_node *np = pdev->dev.of_node;
> +
> + pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
> + if (!pdata)
> + return -ENOMEM;
> +
> + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> + mmio = devm_ioremap_resource(&pdev->dev, res);
Use helper for these two.
> + if (IS_ERR(mmio))
> + return PTR_ERR(mmio);
> +
> + pdata->sys_bus_base = mmio;
> +
> + mdata = (struct stm32_sys_bus_match_data *)of_device_get_match_data(&pdev->dev);
Why do you need the cast?
> + if (!mdata)
Can you explain the case when this can actually happen? If it can, you
have bug in ID table.
> + return -EINVAL;
> +
> + pdata->pconf = mdata;
> + pdata->dev = &pdev->dev;
> +
> + platform_set_drvdata(pdev, pdata);
> +
> + stm32_sys_bus_populate(pdata);
> +
> + /* Populate all available nodes */
> + return of_platform_populate(np, NULL, NULL, &pdev->dev);
> +}
> +
> +static const struct stm32_sys_bus_match_data stm32mp15_sys_bus_data = {
> + .max_entries = STM32MP15_ETZPC_ENTRIES,
> + .sys_bus_get_access = stm32_etzpc_get_access,
> +};
> +
> +static const struct stm32_sys_bus_match_data stm32mp13_sys_bus_data = {
> + .max_entries = STM32MP13_ETZPC_ENTRIES,
> + .sys_bus_get_access = stm32_etzpc_get_access,
It's the same as previous, drop.
> +};
> +
> +static const struct of_device_id stm32_sys_bus_of_match[] = {
> + { .compatible = "st,stm32mp15-sys-bus", .data = &stm32mp15_sys_bus_data },
> + { .compatible = "st,stm32mp13-sys-bus", .data = &stm32mp13_sys_bus_data },
> + {}
> +};
> +MODULE_DEVICE_TABLE(of, stm32_sys_bus_of_match);
> +
> +static struct platform_driver stm32_sys_bus_driver = {
> + .probe = stm32_sys_bus_probe,
> + .driver = {
> + .name = "stm32-sys-bus",
> + .of_match_table = stm32_sys_bus_of_match,
> + },
> +};
> +
> +static int __init stm32_sys_bus_init(void)
> +{
> + return platform_driver_register(&stm32_sys_bus_driver);
> +}
> +arch_initcall(stm32_sys_bus_init);
> +
Best regards,
Krzysztof
next prev parent reply other threads:[~2022-12-22 10:29 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-21 17:30 [RFC PATCH 0/7] Introduce STM32 system bus Gatien Chevallier
2022-12-21 17:30 ` [RFC PATCH 1/7] dt-bindings: Document common device controller bindings Gatien Chevallier
2022-12-22 10:22 ` Krzysztof Kozlowski
2022-12-22 13:01 ` Gatien CHEVALLIER
2022-12-22 13:51 ` Krzysztof Kozlowski
2022-12-21 17:30 ` [RFC PATCH 2/7] dt-bindings: bus: add STM32 System Bus Gatien Chevallier
2022-12-21 20:09 ` Rob Herring
2022-12-22 10:24 ` Krzysztof Kozlowski
2022-12-22 13:39 ` Gatien CHEVALLIER
2022-12-22 13:55 ` Krzysztof Kozlowski
2022-12-21 17:30 ` [RFC PATCH 3/7] dt-bindings: bus: add STM32MP15 ETZPC firewall bus bindings Gatien Chevallier
2022-12-22 10:26 ` Krzysztof Kozlowski
2022-12-22 13:51 ` Gatien CHEVALLIER
2022-12-22 13:57 ` Krzysztof Kozlowski
2023-01-04 13:43 ` Gatien CHEVALLIER
2023-01-05 21:53 ` Krzysztof Kozlowski
2023-01-09 11:54 ` Gatien CHEVALLIER
2023-01-11 12:32 ` Krzysztof Kozlowski
2023-01-16 14:06 ` Gatien CHEVALLIER
2022-12-21 17:30 ` [RFC PATCH 4/7] dt-bindings: bus: add STM32MP13 " Gatien Chevallier
2022-12-22 10:26 ` Krzysztof Kozlowski
2022-12-22 13:53 ` Gatien CHEVALLIER
2022-12-21 17:30 ` [RFC PATCH 5/7] bus: stm32_sys_bus: add support for STM32MP15 and STM32MP13 system bus Gatien Chevallier
2022-12-22 10:28 ` Krzysztof Kozlowski [this message]
2022-12-22 14:30 ` Gatien CHEVALLIER
2022-12-22 15:19 ` Krzysztof Kozlowski
2022-12-21 17:30 ` [RFC PATCH 6/7] ARM: dts: stm32: add ETZPC as a system bus for STM32MP15x boards Gatien Chevallier
2022-12-22 10:30 ` Krzysztof Kozlowski
2022-12-22 14:42 ` Gatien CHEVALLIER
2022-12-22 15:21 ` Krzysztof Kozlowski
2022-12-22 15:57 ` Gatien CHEVALLIER
2022-12-22 16:00 ` Krzysztof Kozlowski
2022-12-21 17:30 ` [RFC PATCH 7/7] ARM: dts: stm32: add ETZPC as a system bus for STM32MP13x boards Gatien Chevallier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ed8aa4d3-9570-eb72-a7d4-3b690adc3a6d@kernel.org \
--to=krzk@kernel.org \
--cc=Oleksii_Moisieiev@epam.com \
--cc=alexandre.torgue@foss.st.com \
--cc=arnd@arndb.de \
--cc=devicetree@vger.kernel.org \
--cc=gatien.chevallier@foss.st.com \
--cc=gregkh@linuxfoundation.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=loic.pallardy@st.com \
--cc=mark.rutland@arm.com \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).