Skip to content

Commit

Permalink
net: dsa: b53: Allow SRAB driver to specify platform data
Browse files Browse the repository at this point in the history
For Northstart Plus SoCs, we cannot detect the switch because only the
revision information is provied in the Management page, instead, rely on
Device Tree to tell us the chip id, and pass it down using the
b53_platform_data structure.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Florian Fainelli authored and David S. Miller committed Jul 11, 2016
1 parent fb3bbdb commit fefae69
Showing 1 changed file with 29 additions and 10 deletions.
39 changes: 29 additions & 10 deletions drivers/net/dsa/b53/b53_srab.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/platform_data/b53.h>
#include <linux/of.h>

#include "b53_priv.h"

Expand Down Expand Up @@ -356,12 +357,37 @@ static struct b53_io_ops b53_srab_ops = {
.write64 = b53_srab_write64,
};

static const struct of_device_id b53_srab_of_match[] = {
{ .compatible = "brcm,bcm53010-srab" },
{ .compatible = "brcm,bcm53011-srab" },
{ .compatible = "brcm,bcm53012-srab" },
{ .compatible = "brcm,bcm53018-srab" },
{ .compatible = "brcm,bcm53019-srab" },
{ .compatible = "brcm,bcm5301x-srab" },
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(of, b53_srab_of_match);

static int b53_srab_probe(struct platform_device *pdev)
{
struct b53_platform_data *pdata = pdev->dev.platform_data;
struct device_node *dn = pdev->dev.of_node;
const struct of_device_id *of_id = NULL;
struct b53_srab_priv *priv;
struct b53_device *dev;
struct resource *r;

if (dn)
of_id = of_match_node(b53_srab_of_match, dn);

if (of_id) {
pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
if (!pdata)
return -ENOMEM;

pdata->chip_id = (u32)of_id->data;
}

priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
Expand All @@ -375,6 +401,9 @@ static int b53_srab_probe(struct platform_device *pdev)
if (!dev)
return -ENOMEM;

if (pdata)
dev->pdata = pdata;

platform_set_drvdata(pdev, dev);

return b53_switch_register(dev);
Expand All @@ -390,16 +419,6 @@ static int b53_srab_remove(struct platform_device *pdev)
return 0;
}

static const struct of_device_id b53_srab_of_match[] = {
{ .compatible = "brcm,bcm53010-srab" },
{ .compatible = "brcm,bcm53011-srab" },
{ .compatible = "brcm,bcm53012-srab" },
{ .compatible = "brcm,bcm53018-srab" },
{ .compatible = "brcm,bcm53019-srab" },
{ .compatible = "brcm,bcm5301x-srab" },
{ /* sentinel */ },
};

static struct platform_driver b53_srab_driver = {
.probe = b53_srab_probe,
.remove = b53_srab_remove,
Expand Down

0 comments on commit fefae69

Please sign in to comment.