From: Markus Pargmann <mpa@pengutronix.de>
To: Tony Lindgren <tony@atomide.com>
Cc: "David S. Miller" <davem@davemloft.net>,
"Benoît Cousson" <bcousson@baylibre.com>,
"Wolfram Sang" <wsa@the-dreams.de>,
"Steven Rostedt" <rostedt@goodmis.org>,
"Mugunthan V N" <mugunthanvnm@ti.com>,
linux-omap@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de
Subject: Re: [PATCH v5 5/7] net: cpsw: Add am33xx MACID readout
Date: Tue, 26 Aug 2014 07:55:09 +0200 [thread overview]
Message-ID: <20140826055509.GB21770@pengutronix.de> (raw)
In-Reply-To: <20140825160118.GG17254@atomide.com>
[-- Attachment #1: Type: text/plain, Size: 3607 bytes --]
Hi,
On Mon, Aug 25, 2014 at 09:01:19AM -0700, Tony Lindgren wrote:
> > diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
> > index 0bc2c2a2c236..7c94a0fb24bc 100644
> > --- a/drivers/net/ethernet/ti/cpsw.c
> > +++ b/drivers/net/ethernet/ti/cpsw.c
> > @@ -33,6 +33,8 @@
> > #include <linux/of_net.h>
> > #include <linux/of_device.h>
> > #include <linux/if_vlan.h>
> > +#include <linux/mfd/syscon.h>
> > +#include <linux/regmap.h>
> >
> > #include <linux/pinctrl/consumer.h>
> >
> > @@ -1816,6 +1818,39 @@ static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv,
> > slave->port_vlan = data->dual_emac_res_vlan;
> > }
> >
> > +#define AM33XX_CTRL_MAC_LO_REG(id) (0x630 + 0x8 * id)
> > +#define AM33XX_CTRL_MAC_HI_REG(id) (0x630 + 0x8 * id + 0x4)
> > +
> > +static int cpsw_am33xx_cm_get_macid(struct device *dev, int slave,
> > + u8 *mac_addr)
> > +{
> > + u32 macid_lo;
> > + u32 macid_hi;
> > + struct regmap *syscon;
> > +
> > + if (!of_machine_is_compatible("ti,am33xx"))
> > + return 0;
> > +
> > + syscon = syscon_regmap_lookup_by_phandle(dev->of_node, "syscon");
> > + if (IS_ERR(syscon)) {
> > + if (PTR_ERR(syscon) == -ENODEV)
> > + return 0;
> > + return PTR_ERR(syscon);
> > + }
> > +
> > + regmap_read(syscon, AM33XX_CTRL_MAC_LO_REG(slave), &macid_lo);
> > + regmap_read(syscon, AM33XX_CTRL_MAC_HI_REG(slave), &macid_hi);
> > +
> > + mac_addr[5] = (macid_lo >> 8) & 0xff;
> > + mac_addr[4] = macid_lo & 0xff;
> > + mac_addr[3] = (macid_hi >> 24) & 0xff;
> > + mac_addr[2] = (macid_hi >> 16) & 0xff;
> > + mac_addr[1] = (macid_hi >> 8) & 0xff;
> > + mac_addr[0] = macid_hi & 0xff;
> > +
> > + return 0;
> > +}
>
> I think this only works for the first instance of the cpsw?
This works for both cpsw slaves on am335x. It does not work for multiple
cpsw drivers. But we don't have them on am335x. For other platforms this
function may be used in case they have the same register layout.
>
> Can the other instances of cpsw use this too and just increment
> some value in it?
>
> > static int cpsw_probe_dt(struct cpsw_platform_data *data,
> > struct platform_device *pdev)
> > {
> > @@ -1928,8 +1963,14 @@ static int cpsw_probe_dt(struct cpsw_platform_data *data,
> > PHY_ID_FMT, mdio->name, phyid);
> >
> > mac_addr = of_get_mac_address(slave_node);
> > - if (mac_addr)
> > + if (mac_addr) {
> > memcpy(slave_data->mac_addr, mac_addr, ETH_ALEN);
> > + } else {
> > + ret = cpsw_am33xx_cm_get_macid(&pdev->dev, i,
> > + slave_data->mac_addr);
> > + if (ret)
> > + return ret;
> > + }
> >
> > slave_data->phy_if = of_get_phy_mode(slave_node);
> > if (slave_data->phy_if < 0) {
>
> The cpsw_am33xx_cm_get_macid() should only get called based on the
> compatible flag to avoid random register access on other SoCs.
>
> So how about add the of_machine_is_compatible("ti,am33xx")
> check here instead and skip calling cpsw_am33xx_cm_get_macid()
> otherwise?
>
> That allows adding support for other omaps as we already have
> ti,am4372-cpsw and people have pointed out issues with dra7xx
> already.
Okay, I will move the machine check here instead.
Thanks,
Markus
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
next prev parent reply other threads:[~2014-08-26 5:55 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-25 6:23 [PATCH v5 0/7] net: cpsw: Support for am335x chip MACIDs Markus Pargmann
2014-08-25 6:23 ` [PATCH v5 1/7] DT doc: net: cpsw mac-address is optional Markus Pargmann
2014-08-25 6:23 ` [PATCH v5 2/7] net: cpsw: Add missing return value Markus Pargmann
2014-08-25 6:23 ` [PATCH v5 3/7] net: cpsw: header, Add missing include Markus Pargmann
2014-08-25 6:23 ` [PATCH v5 4/7] net: cpsw: Replace pr_err by dev_err Markus Pargmann
2014-08-25 6:23 ` [PATCH v5 5/7] net: cpsw: Add am33xx MACID readout Markus Pargmann
2014-08-25 16:01 ` Tony Lindgren
2014-08-26 5:55 ` Markus Pargmann [this message]
2014-08-25 6:23 ` [PATCH v5 6/7] am33xx: define syscon control module device node Markus Pargmann
2014-08-25 16:01 ` Tony Lindgren
2014-08-25 6:23 ` [PATCH v5 7/7] arm: dts: am33xx, Add syscon phandle to cpsw node Markus Pargmann
2014-08-25 16:02 ` Tony Lindgren
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=20140826055509.GB21770@pengutronix.de \
--to=mpa@pengutronix.de \
--cc=bcousson@baylibre.com \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=mugunthanvnm@ti.com \
--cc=rostedt@goodmis.org \
--cc=tony@atomide.com \
--cc=wsa@the-dreams.de \
/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).