[PATCH net-next 5/8] net: dsa: b53: mmap: Add register layout for bcm63268

Kyle Hendry posted 8 patches 6 months, 3 weeks ago
There is a newer version of this series
[PATCH net-next 5/8] net: dsa: b53: mmap: Add register layout for bcm63268
Posted by Kyle Hendry 6 months, 3 weeks ago
Add a structure to describe the ephy control register
and add register info for bcm63268.

Signed-off-by: Kyle Hendry <kylehendrydev@gmail.com>
---
 drivers/net/dsa/b53/b53_mmap.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
index 09631792049c..35bf39ab2771 100644
--- a/drivers/net/dsa/b53/b53_mmap.c
+++ b/drivers/net/dsa/b53/b53_mmap.c
@@ -27,9 +27,26 @@
 
 #include "b53_priv.h"
 
+struct b53_phy_info {
+	u32 ephy_enable_mask;
+	u32 ephy_port_mask;
+	u32 ephy_bias_bit;
+	const u32 *ephy_offset;
+};
+
 struct b53_mmap_priv {
 	void __iomem *regs;
 	struct regmap *gpio_ctrl;
+	const struct b53_phy_info *phy_info;
+};
+
+static const u32 bcm63268_ephy_offsets[] = {4, 9, 14};
+
+static const struct b53_phy_info bcm63268_ephy_info = {
+	.ephy_enable_mask = GENMASK(4, 0),
+	.ephy_port_mask = GENMASK((ARRAY_SIZE(bcm63268_ephy_offsets) - 1), 0),
+	.ephy_bias_bit = 24,
+	.ephy_offset = bcm63268_ephy_offsets,
 };
 
 static int b53_mmap_read8(struct b53_device *dev, u8 page, u8 reg, u8 *val)
@@ -316,6 +333,10 @@ static int b53_mmap_probe(struct platform_device *pdev)
 	priv->regs = pdata->regs;
 
 	priv->gpio_ctrl = syscon_regmap_lookup_by_phandle(np, "brcm,gpio-ctrl");
+	if (!IS_ERR(priv->gpio_ctrl)) {
+		if (pdata->chip_id == BCM63268_DEVICE_ID)
+			priv->phy_info = &bcm63268_ephy_info;
+	}
 
 	dev = b53_switch_alloc(&pdev->dev, &b53_mmap_ops, priv);
 	if (!dev)
-- 
2.43.0
Re: [PATCH net-next 5/8] net: dsa: b53: mmap: Add register layout for bcm63268
Posted by Florian Fainelli 6 months, 3 weeks ago
On 7/15/25 17:29, Kyle Hendry wrote:
> Add a structure to describe the ephy control register
> and add register info for bcm63268.
> 
> Signed-off-by: Kyle Hendry <kylehendrydev@gmail.com>
> ---
>   drivers/net/dsa/b53/b53_mmap.c | 21 +++++++++++++++++++++
>   1 file changed, 21 insertions(+)
> 
> diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
> index 09631792049c..35bf39ab2771 100644
> --- a/drivers/net/dsa/b53/b53_mmap.c
> +++ b/drivers/net/dsa/b53/b53_mmap.c
> @@ -27,9 +27,26 @@
>   
>   #include "b53_priv.h"
>   
> +struct b53_phy_info {
> +	u32 ephy_enable_mask;
> +	u32 ephy_port_mask;
> +	u32 ephy_bias_bit;
> +	const u32 *ephy_offset;
> +};
> +
>   struct b53_mmap_priv {
>   	void __iomem *regs;
>   	struct regmap *gpio_ctrl;
> +	const struct b53_phy_info *phy_info;
> +};
> +
> +static const u32 bcm63268_ephy_offsets[] = {4, 9, 14};
> +
> +static const struct b53_phy_info bcm63268_ephy_info = {
> +	.ephy_enable_mask = GENMASK(4, 0),
> +	.ephy_port_mask = GENMASK((ARRAY_SIZE(bcm63268_ephy_offsets) - 1), 0),
> +	.ephy_bias_bit = 24,
> +	.ephy_offset = bcm63268_ephy_offsets,
>   };
>   
>   static int b53_mmap_read8(struct b53_device *dev, u8 page, u8 reg, u8 *val)
> @@ -316,6 +333,10 @@ static int b53_mmap_probe(struct platform_device *pdev)
>   	priv->regs = pdata->regs;
>   
>   	priv->gpio_ctrl = syscon_regmap_lookup_by_phandle(np, "brcm,gpio-ctrl");
> +	if (!IS_ERR(priv->gpio_ctrl)) {

This check IMHO belongs in patch #2, even though it only starts being 
useful now. Up to you, and depending upon other comments.
-- 
Florian