Add Power Management support for BCM2712
Subsystems (3)
cover Add Power Management support for BCM2712
Hi all,
This patchset adds support for the BCM2712 Power Management (PM) block, which is necessary to power the domain of the V3D graphic block.
The implementation is done in two steps:
- Patch 1: Adds the SoC identifier to distinguish between hardware variants.
- Patch 2: Adds the specific PM support for the BCM2712.
Many thanks,
Andrea
Phil Elwell (2):
mfd: bcm2835-pm: Introduce SoC-specific type identifier
mfd: bcm2835-pm: Add BCM2712 PM device support
drivers/mfd/bcm2835-pm.c | 9 +++++---- include/linux/mfd/bcm2835-pm.h | 7 +++++++ 2 files changed, 12 insertions(+), 4 deletions(-)
Signature · 1 line
2.35.3
PATCH 1/2 mfd: bcm2835-pm: Introduce SoC-specific type identifier
From: Phil Elwell <[email protected]>
Power management blocks across the BCM2835 family share a common base but require variant-specific handling. For instance, the BCM2712 lacks ASB register space, yet it manages the power domain for the V3D graphics block.
Add a hardware type identifier to the driver's private data. This allows the driver to distinguish between SoC models and implement custom quirks or features as needed.
--- drivers/mfd/bcm2835-pm.c | 7 ++++--- include/linux/mfd/bcm2835-pm.h | 7 +++++++ 2 files changed, 11 insertions(+), 3 deletions(-)
drivers/mfd/bcm2835-pm.c +4 -3
@@ -81,6 +81,7 @@ static int bcm2835_pm_probe(struct platform_device *pdev)platform_set_drvdata (pdev, pm); pm->dev = dev; + pm->soc = (uintptr_t )device_get_match_data (dev); ret =bcm2835_pm_get_pdata (pdev, pm);if (ret)
@@ -106,9 +107,9 @@ static int bcm2835_pm_probe(struct platform_device *pdev)static const struct of_device_id bcm2835_pm_of_match[] = { { .compatible ="brcm,bcm2835-pm-wdt" , }, - { .compatible ="brcm,bcm2835-pm" , }, - { .compatible ="brcm,bcm2711-pm" , }, - { .compatible ="brcm,bcm2712-pm" , }, + { .compatible ="brcm,bcm2835-pm" , .data = (void *)BCM2835_PM_SOC_BCM2835 }, + { .compatible ="brcm,bcm2711-pm" , .data = (void *)BCM2835_PM_SOC_BCM2711 }, + { .compatible ="brcm,bcm2712-pm" , .data = (void *)BCM2835_PM_SOC_BCM2712 }, {}, };MODULE_DEVICE_TABLE (of, bcm2835_pm_of_match);
include/linux/mfd/bcm2835-pm.h +7 -0
@@ -5,11 +5,18 @@#include <linux/regmap.h> +enum bcm2835_soc { +BCM2835_PM_SOC_BCM2835 , +BCM2835_PM_SOC_BCM2711 , +BCM2835_PM_SOC_BCM2712 , +}; +struct bcm2835_pm {struct device *dev;void __iomem *base;void __iomem *asb;void __iomem *rpivid_asb; +enum bcm2835_soc soc; };#endif /* BCM2835_MFD_PM_H */
Signature · 1 line
2.35.3
Re: [PATCH 1/2] mfd: bcm2835-pm: Introduce SoC-specific type identifier
Quoted 7 lines · Andrea della Porta
From: Phil Elwell <[email protected]>
Power management blocks across the BCM2835 family share a common base but require variant-specific handling. For instance, the BCM2712 lacks ASB register space, yet it manages the power domain for the V3D graphics block.
Quoted 8 lines
Add a hardware type identifier to the driver's private data. This allows the driver to distinguish between SoC models and implement custom quirks or features as needed.
Signed-off-by Phil Elwell <[email protected]>Co-developed-by Stanimir Varbanov <[email protected]>Signed-off-by Stanimir Varbanov <[email protected]>Signed-off-by Andrea della Porta <[email protected]>
Signature · 1 line
Florian
PATCH 2/2 mfd: bcm2835-pm: Add BCM2712 PM device support
In reply to Andrea della PortaFrom: Phil Elwell <[email protected]>
The BCM2712 SoC includes a power management block that serves as the power domain for the V3D graphics block. Unlike other PM blocks in the BCM2835 family, it does not feature an ASB register space.
Conditionally register the PM device depending on the SoC variant.
--- drivers/mfd/bcm2835-pm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/mfd/bcm2835-pm.c +1 -1
@@ -98,7 +98,7 @@ static int bcm2835_pm_probe(struct platform_device *pdev)* bcm2835-pm binding as the key for whether we can reference * the full PM register range and support power domains. */ -if (pm->asb) +if (pm->asb || pm->soc ==BCM2835_PM_SOC_BCM2712 )return devm_mfd_add_devices (dev,-1 , bcm2835_power_devs,ARRAY_SIZE (bcm2835_power_devs),NULL ,0 ,NULL );
Signature · 1 line
2.35.3
Re: [PATCH 2/2] mfd: bcm2835-pm: Add BCM2712 PM device support
Quoted 6 lines · Andrea della Porta
From: Phil Elwell <[email protected]>
The BCM2712 SoC includes a power management block that serves as the power domain for the V3D graphics block. Unlike other PM blocks in the BCM2835 family, it does not feature an ASB register space.
Quoted 6 lines
Conditionally register the PM device depending on the SoC variant.
Signed-off-by Phil Elwell <[email protected]>Co-developed-by Stanimir Varbanov <[email protected]>Signed-off-by Stanimir Varbanov <[email protected]>Signed-off-by Andrea della Porta <[email protected]>
Signature · 1 line
Florian
Quoted 9 lines · Andrea della Porta
This patchset adds support for the BCM2712 Power Management (PM) block, which is necessary to power the domain of the V3D graphic block.
The implementation is done in two steps:
- Patch 1: Adds the SoC identifier to distinguish between hardware variants.
- Patch 2: Adds the specific PM support for the BCM2712.[...]
Applied, thanks!
[1/2] mfd: bcm2835-pm: Introduce SoC-specific type identifier
commit: a1c5073dac90aa5cbf187697401d9b3eff2bc269
[2/2] mfd: bcm2835-pm: Add BCM2712 PM device support
commit: 5849d8afe131012bfefaee34dde87fe5c82ddce0--
Lee Jones [李琼斯]