Re: [PATCH 2/2] soc: bcm: add PM driver for Broadcom's PMB

From: Rafał Miłecki
Date: Mon Dec 14 2020 - 16:51:02 EST


On 14.12.2020 18:32, Florian Fainelli wrote:
On 12/14/20 4:24 AM, Rafał Miłecki wrote:
On 11.12.2020 23:08, Florian Fainelli wrote:
On 12/11/20 1:59 PM, Rafał Miłecki wrote:
From: Rafał Miłecki <rafal@xxxxxxxxxx>

PMB can be found on BCM4908 and many other chipsets (e.g. BCM63138).
It's needed to power on and off SoC blocks like PCIe, SATA, USB.

Signed-off-by: Rafał Miłecki <rafal@xxxxxxxxxx>

I will do a more thorough review tonight, however do you mind moving the
driver under drives/soc/bcm/bcm63xx? The first SoC that had PMB was
63138 and that one is DSL.

I now realized that bcm63xx's:
* Kconfig is wrapper in: if SOC_BCM63XX
* Makefile is conditional: obj-$(CONFIG_SOC_BCM63XX)

So it means I've to either:
1. Refactor bcm63xx structure
2. Make SOC_BCM63XX selectable on ARCH_BCM4908 and select it

I'm not sure if any of above is a really good idea. Any further thought,
ideas?

Well, I was thinking about thing along those lines below, it's really
about putting drivers that belong to the same SoC family in the same
basket for easier maintenance while submitting patches/pull requests
from my side.

diff --git a/drivers/soc/bcm/Makefile b/drivers/soc/bcm/Makefile
index 7bc90e0bd773..0f0efa28d92b 100644
--- a/drivers/soc/bcm/Makefile
+++ b/drivers/soc/bcm/Makefile
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-2.0-only
obj-$(CONFIG_BCM2835_POWER) += bcm2835-power.o
obj-$(CONFIG_RASPBERRYPI_POWER) += raspberrypi-power.o
-obj-$(CONFIG_SOC_BCM63XX) += bcm63xx/
+obj-y += bcm63xx/
obj-$(CONFIG_SOC_BRCMSTB) += brcmstb/
diff --git a/drivers/soc/bcm/bcm63xx/Kconfig
b/drivers/soc/bcm/bcm63xx/Kconfig
index 16f648a6c70a..76fb61e7377e 100644
--- a/drivers/soc/bcm/bcm63xx/Kconfig
+++ b/drivers/soc/bcm/bcm63xx/Kconfig
@@ -10,3 +10,8 @@ config BCM63XX_POWER
BCM6318, BCM6328, BCM6362 and BCM63268 SoCs.

endif # SOC_BCM63XX
+
+config BCM_PMB_POWER
+ tristate "Broadcom PMB bus power domain driver"
+ depends on BMIPS_GENERIC || ARCH_BCM4908 || COMPILE_TEST
+ default ARCH_BCM4908

Sounds OK to me, thanks for clarifying what approach you're OK with!