Skip to contentSkip to conversation

net: cpsw: Support for am335x chip MACIDs

PATCH Superseded Markus Pargmann 5 participants 20 messages Aug 16, 2014 – Aug 19, 2014

Subsystems (3)

v3 of 6 Superseded Latest is v6 →

lore
Share & tools
lore
#0 lore raw

v3 cover net: cpsw: Support for am335x chip MACIDs

Hi,

This series adds support to the cpsw driver to read the MACIDs of the am335x chip and use them as fallback. These addresses are only used if there are no mac addresses in the devicetree, for example set by a bootloader.

In v3 I removed the previously seperate driver and included the changes into the main cpsw driver. I now check for a am33xx machine to not make this operation when running on davinci.

Patches 1-4 are some minor fixes for the cpsw driver. Patch 5 adds the readout support.
Patches 6 and 7 are for am33xx.dtsi to actually enable this feature.

Best regards,

Markus Pargmann

Markus Pargmann (7):
DT doc: net: cpsw mac-address is optional
net: cpsw: Add missing return value
net: cpsw: header, Add missing include
net: cpsw: Replace pr_err by dev_err
net: cpsw: Add am33xx MACID readout
am33xx: define syscon control module device node
arm: dts: am33xx, Add syscon phandle to cpsw node

 Documentation/devicetree/bindings/net/cpsw.txt |  6 +++-
 arch/arm/boot/dts/am33xx.dtsi                  |  6 ++++
 drivers/net/ethernet/ti/Kconfig                |  2 ++
 drivers/net/ethernet/ti/Makefile               |  1 +
 drivers/net/ethernet/ti/cpsw.c                 | 49 ++++++++++++++++++++++++--
 drivers/net/ethernet/ti/cpsw.h                 |  1 +
 6 files changed, 61 insertions(+), 4 deletions(-)
Signature · 1 line
2.0.1
#1 lore raw

PATCH v3 1/7 DT doc: net: cpsw mac-address is optional

mac-address is an optional property. If no mac-address is set, a random mac-address will be generated.

---
 Documentation/devicetree/bindings/net/cpsw.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Documentation/devicetree/bindings/net/cpsw.txt +1 -1
index ae2b8b7f9c38..107caf174a0e 100644
@@ -29,10 +29,10 @@ Slave Properties:
 Required properties:
 - phy_id		: Specifies slave phy id
 - phy-mode		: See ethernet.txt file in the same directory
-- mac-address		: See ethernet.txt file in the same directory
 
 Optional properties:
 - dual_emac_res_vlan	: Specifies VID to be used to segregate the ports
+- mac-address		: See ethernet.txt file in the same directory
 
 Note: "ti,hwmods" field is used to fetch the base address and irq
 resources from TI, omap hwmod data base during device registration.
Signature · 1 line
2.0.1
#2 lore raw

PATCH v3 2/7 net: cpsw: Add missing return value

In reply to Markus Pargmann

ret is set 0 at this point, so jumping to that error label would result in a return value of 0. Set ret to -ENOMEM to return a proper error value.

---
 drivers/net/ethernet/ti/cpsw.c | 1 +
 1 file changed, 1 insertion(+)
drivers/net/ethernet/ti/cpsw.c +1 -0
index ff380dac6629..43b2777f8e04 100644
@@ -2043,6 +2043,7 @@ static int cpsw_probe(struct platform_device *pdev)
 	priv->irq_enabled = true;
 	if (!priv->cpts) {
 		dev_err(&pdev->dev, "error allocating cpts\n");
+		ret = -ENOMEM;
 		goto clean_ndev_ret;
 	}
 
Signature · 1 line
2.0.1
#3 lore raw

PATCH v3 3/7 net: cpsw: header, Add missing include

In reply to Markus Pargmann

"MII_BUS_ID_SIZE" is defined in linux/phy.h which is not included in the cpsw.h file.

---
 drivers/net/ethernet/ti/cpsw.h | 1 +
 1 file changed, 1 insertion(+)
drivers/net/ethernet/ti/cpsw.h +1 -0
index 574f49da693f..1b710674630c 100644
@@ -15,6 +15,7 @@
 #define __CPSW_H__
 
 #include <linux/if_ether.h>
+#include <linux/phy.h>
 
 struct cpsw_slave_data {
 	char		phy_id[MII_BUS_ID_SIZE];
Signature · 1 line
2.0.1
#4 lore raw

PATCH v3 4/7 net: cpsw: Replace pr_err by dev_err

In reply to Markus Pargmann

Use dev_err instead of pr_err.

---
 drivers/net/ethernet/ti/cpsw.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/ethernet/ti/cpsw.c +1 -1
index 43b2777f8e04..b52df53441b0 100644
@@ -1901,7 +1901,7 @@ static int cpsw_probe_dt(struct cpsw_platform_data *data,
 		mdio = of_find_device_by_node(mdio_node);
 		of_node_put(mdio_node);
 		if (!mdio) {
-			pr_err("Missing mdio platform device\n");
+			dev_err(&pdev->dev, "Missing mdio platform device\n");
 			return -EINVAL;
 		}
 		snprintf(slave_data->phy_id, sizeof(slave_data->phy_id),
Signature · 1 line
2.0.1
#5 lore raw

PATCH v3 5/7 net: cpsw: Add am33xx MACID readout

In reply to Markus Pargmann

This patch adds a function to get the MACIDs from the am33xx SoC control module registers which hold unique vendor MACIDs. This is only used if of_get_mac_address() fails to get a valid mac address.

---
 Documentation/devicetree/bindings/net/cpsw.txt |  4 +++
 drivers/net/ethernet/ti/Kconfig                |  2 ++
 drivers/net/ethernet/ti/Makefile               |  1 +
 drivers/net/ethernet/ti/cpsw.c                 | 46 ++++++++++++++++++++++++--
 4 files changed, 51 insertions(+), 2 deletions(-)
Documentation/devicetree/bindings/net/cpsw.txt +4 -0
index 107caf174a0e..33fe8462edf4 100644
@@ -24,6 +24,8 @@ Optional properties:
 - ti,hwmods		: Must be "cpgmac0"
 - no_bd_ram		: Must be 0 or 1
 - dual_emac		: Specifies Switch to act as Dual EMAC
+- syscon		: Phandle to the system control device node, which is
+			  the control module device of the am33x
 
 Slave Properties:
 Required properties:
@@ -57,6 +59,7 @@ Examples:
 		active_slave = <0>;
 		cpts_clock_mult = <0x80000000>;
 		cpts_clock_shift = <29>;
+		syscon = <&cm>;
 		cpsw_emac0: slave at 0 {
 			phy_id = <&davinci_mdio>, <0>;
 			phy-mode = "rgmii-txid";
@@ -85,6 +88,7 @@ Examples:
 		active_slave = <0>;
 		cpts_clock_mult = <0x80000000>;
 		cpts_clock_shift = <29>;
+		syscon = <&cm>;
 		cpsw_emac0: slave at 0 {
 			phy_id = <&davinci_mdio>, <0>;
 			phy-mode = "rgmii-txid";
drivers/net/ethernet/ti/Kconfig +2 -0
index 53150c25a96b..afaf0196ffd2 100644
@@ -62,6 +62,8 @@ config TI_CPSW
 	select TI_DAVINCI_CPDMA
 	select TI_DAVINCI_MDIO
 	select TI_CPSW_PHY_SEL
+	select MFD_SYSCON
+	select REGMAP
 	---help---
 	  This driver supports TI's CPSW Ethernet Switch.
 
drivers/net/ethernet/ti/Makefile +1 -0
index 9cfaab8152be..5a31c2b322ee 100644
@@ -8,5 +8,6 @@ obj-$(CONFIG_TI_DAVINCI_EMAC) += davinci_emac.o
 obj-$(CONFIG_TI_DAVINCI_MDIO) += davinci_mdio.o
 obj-$(CONFIG_TI_DAVINCI_CPDMA) += davinci_cpdma.o
 obj-$(CONFIG_TI_CPSW_PHY_SEL) += cpsw-phy-sel.o
+obj-$(CONFIG_TI_CPSW_CTRL_MACID) += cpsw-ctrl-macid.o
 obj-$(CONFIG_TI_CPSW) += ti_cpsw.o
 ti_cpsw-y := cpsw_ale.o cpsw.o cpts.o
drivers/net/ethernet/ti/cpsw.c +44 -2

64 lines not on this page · raw message

Signature · 1 line
2.0.1
#6 lore raw

PATCH v3 5/7 net: cpsw: Add am33xx MACID readout

drivers/net/ethernet/ti/Makefile obj-$(CONFIG_TI_DAVINCI_EMAC) += davinci_emac.o · line 13

Quoted 12 lines
drivers/net/ethernet/ti/Makefile +1 -0
index 9cfaab8152be..5a31c2b322ee 100644
@@ -8,5 +8,6 @@ obj-$(CONFIG_TI_DAVINCI_EMAC) += davinci_emac.o
 obj-$(CONFIG_TI_DAVINCI_MDIO) += davinci_mdio.o
 obj-$(CONFIG_TI_DAVINCI_CPDMA) += davinci_cpdma.o
 obj-$(CONFIG_TI_CPSW_PHY_SEL) += cpsw-phy-sel.o
+obj-$(CONFIG_TI_CPSW_CTRL_MACID) += cpsw-ctrl-macid.o
 obj-$(CONFIG_TI_CPSW) += ti_cpsw.o
 ti_cpsw-y := cpsw_ale.o cpsw.o cpts.o

Leftover from your last series?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140816/928038f0/attachment.sig>

#7 lore raw

PATCH v3 5/7 net: cpsw: Add am33xx MACID readout

Hi,

Quoted 14 lines · Wolfram Sang

drivers/net/ethernet/ti/Makefile obj-$(CONFIG_TI_DAVINCI_EMAC) += davinci_emac.o · line 13

Quoted 12 lines
drivers/net/ethernet/ti/Makefile +1 -0
index 9cfaab8152be..5a31c2b322ee 100644
@@ -8,5 +8,6 @@ obj-$(CONFIG_TI_DAVINCI_EMAC) += davinci_emac.o
 obj-$(CONFIG_TI_DAVINCI_MDIO) += davinci_mdio.o
 obj-$(CONFIG_TI_DAVINCI_CPDMA) += davinci_cpdma.o
 obj-$(CONFIG_TI_CPSW_PHY_SEL) += cpsw-phy-sel.o
+obj-$(CONFIG_TI_CPSW_CTRL_MACID) += cpsw-ctrl-macid.o
 obj-$(CONFIG_TI_CPSW) += ti_cpsw.o
 ti_cpsw-y := cpsw_ale.o cpsw.o cpts.o

Leftover from your last series?

Yes thanks, will remove it for the next version.

Best regards,

Markus

Signature · 11 lines
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 |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140818/0fcc2d8b/attachment.sig>
#8 lore raw

PATCH v3 5/7 net: cpsw: Add am33xx MACID readout

In reply to Markus Pargmann

drivers/net/ethernet/ti/cpsw.c static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv, · line 1829

Quoted 7 lines
drivers/net/ethernet/ti/cpsw.c +6 -0
+	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;

That looks twisted, but I assume that you tested it is correct.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140816/7124d40a/attachment.sig>

#9 lore raw

PATCH v3 5/7 net: cpsw: Add am33xx MACID readout

Quoted 9 lines · Wolfram Sang

drivers/net/ethernet/ti/cpsw.c static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv, · line 1829

Quoted 7 lines
drivers/net/ethernet/ti/cpsw.c +6 -0
+	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;

That looks twisted, but I assume that you tested it is correct.

The registers are twisted that way.

Best regards,

Markus

Signature · 11 lines
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 |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140818/8d653ce7/attachment.sig>
#10 lore raw

PATCH v3 5/7 net: cpsw: Add am33xx MACID readout

In reply to Markus Pargmann

drivers/net/ethernet/ti/cpsw.c static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv, · line 1830

Quoted 7 lines · Markus Pargmann
drivers/net/ethernet/ti/cpsw.c +7 -0
+	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;
+

This will fail incase of DRA74x and DRA72x platforms, please check for u-boot src for parsing logic as TRM is not out yet. Below is the actual code for DRA7 platforms for MAC address parsing

mac_addr[0] = (mac_hi & 0xFF0000) >> 16;
mac_addr[1] = (mac_hi & 0xFF00) >> 8;
mac_addr[2] = mac_hi & 0xFF;
mac_addr[3] = (mac_lo & 0xFF0000) >> 16;
mac_addr[4] = (mac_lo & 0xFF00) >> 8;
mac_addr[5] = mac_lo & 0xFF;

Regards
Mugunthan V N

#11 lore raw

PATCH v3 5/7 net: cpsw: Add am33xx MACID readout

Quoted 12 lines · On Mon, 18 Aug 2014 23:54:26 +0530 Mugunthan V N <[email protected]> wrote:

drivers/net/ethernet/ti/cpsw.c static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv, · line 1830

Quoted 7 lines · Markus Pargmann
drivers/net/ethernet/ti/cpsw.c +7 -0
+	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;
+

This will fail incase of DRA74x and DRA72x platforms, please check for u-boot src for parsing logic as TRM is not out yet. Below is the actual code for DRA7 platforms for MAC address parsing

Quoted 7 lines

mac_addr[0] = (mac_hi & 0xFF0000) >> 16;
mac_addr[1] = (mac_hi & 0xFF00) >> 8;
mac_addr[2] = mac_hi & 0xFF;
mac_addr[3] = (mac_lo & 0xFF0000) >> 16;
mac_addr[4] = (mac_lo & 0xFF00) >> 8;
mac_addr[5] = mac_lo & 0xFF;

But this fails with my beaglebone white.

I tested Markus's patches and it came up with the same ethaddr that U-Boot had.

Quoted 1 line

From U-Boot:

ethaddr=d4:94:a1:8b:ec:78

With Markus's changes:

eth0 Link encap:Ethernet HWaddr D4:94:A1:8B:EC:78

But when I changed the code to match what you wrote, I got this:

eth0 Link encap:Ethernet HWaddr CE:5A:8B:0E:44:45

but it also gave me:

cpsw 4a100000.ethernet: Random MACID = ce:5a:8b:0e:44:45

which means it failed the valid mac test.

Here's how I implemented your change:

#if 1
        mac_addr[0] = (macid_hi & 0xFF0000) >> 16;
        mac_addr[1] = (macid_hi & 0xFF00) >> 8;
        mac_addr[2] = macid_hi & 0xFF;
        mac_addr[3] = (macid_lo & 0xFF0000) >> 16;
        mac_addr[4] = (macid_lo & 0xFF00) >> 8;
        mac_addr[5] = macid_lo & 0xFF;
#else   
        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;

#endif

Just to be consistent, I updated the code as this too:

        mac_addr[0] = (macid_hi >> 16) & 0xFF;
        mac_addr[1] = (macid_hi >> 8) & 0xFF;
        mac_addr[2] = macid_hi & 0xFF;
        mac_addr[3] = (macid_lo >> 16) & 0xFF;
        mac_addr[4] = (macid_lo >> 8) & 0xFF;
        mac_addr[5] = macid_lo & 0xFF;

With the same affect.

Thus, for this patchset, as is:

-- Steve

#12 lore raw

PATCH v3 5/7 net: cpsw: Add am33xx MACID readout

Quoted 73 lines · Steven Rostedt
Quoted 12 lines · On Mon, 18 Aug 2014 23:54:26 +0530 Mugunthan V N <[email protected]> wrote:

drivers/net/ethernet/ti/cpsw.c static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv, · line 1830

Quoted 7 lines · Markus Pargmann
drivers/net/ethernet/ti/cpsw.c +7 -0
+	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;
+

This will fail incase of DRA74x and DRA72x platforms, please check for u-boot src for parsing logic as TRM is not out yet. Below is the actual code for DRA7 platforms for MAC address parsing

Quoted 7 lines

mac_addr[0] = (mac_hi & 0xFF0000) >> 16;
mac_addr[1] = (mac_hi & 0xFF00) >> 8;
mac_addr[2] = mac_hi & 0xFF;
mac_addr[3] = (mac_lo & 0xFF0000) >> 16;
mac_addr[4] = (mac_lo & 0xFF00) >> 8;
mac_addr[5] = mac_lo & 0xFF;

But this fails with my beaglebone white.

I tested Markus's patches and it came up with the same ethaddr that U-Boot had.

From U-Boot:

ethaddr=d4:94:a1:8b:ec:78

With Markus's changes:

eth0 Link encap:Ethernet HWaddr D4:94:A1:8B:EC:78

But when I changed the code to match what you wrote, I got this:

eth0 Link encap:Ethernet HWaddr CE:5A:8B:0E:44:45

but it also gave me:

cpsw 4a100000.ethernet: Random MACID = ce:5a:8b:0e:44:45

which means it failed the valid mac test.

Here's how I implemented your change:

#if 1
        mac_addr[0] = (macid_hi & 0xFF0000) >> 16;
        mac_addr[1] = (macid_hi & 0xFF00) >> 8;
        mac_addr[2] = macid_hi & 0xFF;
        mac_addr[3] = (macid_lo & 0xFF0000) >> 16;
        mac_addr[4] = (macid_lo & 0xFF00) >> 8;
        mac_addr[5] = macid_lo & 0xFF;
#else   
        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;

#endif

Just to be consistent, I updated the code as this too:

        mac_addr[0] = (macid_hi >> 16) & 0xFF;
        mac_addr[1] = (macid_hi >> 8) & 0xFF;
        mac_addr[2] = macid_hi & 0xFF;
        mac_addr[3] = (macid_lo >> 16) & 0xFF;
        mac_addr[4] = (macid_lo >> 8) & 0xFF;
        mac_addr[5] = macid_lo & 0xFF;
Quoted 5 lines

With the same affect.

Thus, for this patchset, as is:

This will fail for DRA7xx not in AM33xx

Regards
Mugunthan V N

#13 lore raw

PATCH v3 5/7 net: cpsw: Add am33xx MACID readout

Quoted 1 line · On Tue, 19 Aug 2014 01:28:09 +0530 Mugunthan V N <[email protected]> wrote:

This will fail for DRA7xx not in AM33xx

OK, is there a way to test the difference?

-- Steve

#14 lore raw

PATCH v3 5/7 net: cpsw: Add am33xx MACID readout

In reply to Mugunthan V N

Hello Mugunthan,

Quoted 7 lines · Mugunthan V N
Quoted 4 lines

Thus, for this patchset, as is:

This will fail for DRA7xx not in AM33xx

cpsw_am33xx_cm_get_macid() checks for of_machine_is_compatible("ti,am33xx") and returns 0 if the machine is not an am33xx. cpsw_probe_dt() only propagates the return value if is not 0 so this patch does not change the semantics for other SoCs besides am33xx.

If the driver already fails for DRA7xx that certainly is not this patch's fault. Of course it would be nice to add support for DRA7xx as well but I think that could be a follow-up patch and shouldn't be a blocker to merge this change if is useful for users.

Quoted 3 lines

Regards
Mugunthan V N
--

Best regards,
Javier

#15 lore raw

PATCH v3 5/7 net: cpsw: Add am33xx MACID readout

Hi,

Quoted 8 lines · Javier Martinez Canillas

Hello Mugunthan,

Quoted 5 lines · Mugunthan V N
Quoted 4 lines

Thus, for this patchset, as is:

Quoted 8 lines
Quoted 2 lines

This will fail for DRA7xx not in AM33xx

cpsw_am33xx_cm_get_macid() checks for of_machine_is_compatible("ti,am33xx") and returns 0 if the machine is not an am33xx. cpsw_probe_dt() only propagates the return value if is not 0 so this patch does not change the semantics for other SoCs besides am33xx.

Yes, this patch is only about the am33xx. I don't have the DRA7xx hardware so I am not able to test on that hardware. Mugunthan, perhaps you can supply some followup patches for DRA7xx.

Best regards,

Markus

Signature · 11 lines
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 |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140819/ce9402ff/attachment-0001.sig>
#16 lore raw

PATCH v3 5/7 net: cpsw: Add am33xx MACID readout

Quoted 11 lines · Markus Pargmann

Hi,

Quoted 8 lines · Javier Martinez Canillas

Hello Mugunthan,

Quoted 5 lines · Mugunthan V N
Quoted 3 lines

Thus, for this patchset, as is:

This will fail for DRA7xx not in AM33xx

Quoted 10 lines
Quoted 5 lines

cpsw_am33xx_cm_get_macid() checks for of_machine_is_compatible("ti,am33xx") and returns 0 if the machine is not an am33xx. cpsw_probe_dt() only propagates the return value if is not 0 so this patch does not change the semantics for other SoCs besides am33xx.

Yes, this patch is only about the am33xx. I don't have the DRA7xx hardware so I am not able to test on that hardware. Mugunthan, perhaps you can supply some followup patches for DRA7xx.

I will check on this thursday and update.

Regards
Mugunthan V N

#17 lore raw

PATCH v3 6/7 am33xx: define syscon control module device node

In reply to Markus Pargmann
---
 arch/arm/boot/dts/am33xx.dtsi | 5 +++++
 1 file changed, 5 insertions(+)
arch/arm/boot/dts/am33xx.dtsi +5 -0
index 4a4e02d0ce9e..cb1113bcc290 100644
@@ -132,6 +132,11 @@
 			};
 		};
 
+		cm: syscon at 44e10000 {
+			compatible = "ti,am33xx-controlmodule", "syscon";
+			reg = <0x44e10000 0x800>;
+		};
+
 		intc: interrupt-controller at 48200000 {
 			compatible = "ti,omap2-intc";
 			interrupt-controller;
Signature · 1 line
2.0.1
#18 lore raw

PATCH v3 7/7 arm: dts: am33xx, Add syscon phandle to cpsw node

In reply to Markus Pargmann

There are 2 MACIDs stored in the control module of the am33xx. These are read by the cpsw driver if no valid MACID was found in the devicetree.

---
 arch/arm/boot/dts/am33xx.dtsi | 1 +
 1 file changed, 1 insertion(+)
arch/arm/boot/dts/am33xx.dtsi +1 -0
index cb1113bcc290..5e9bfb3b9f1d 100644
@@ -692,6 +692,7 @@
 			 */
 			interrupts = <40 41 42 43>;
 			ranges;
+			syscon = <&cm>;
 			status = "disabled";
 
 			davinci_mdio: mdio at 4a101000 {
Signature · 1 line
2.0.1
#19 lore raw

v3 cover net: cpsw: Support for am335x chip MACIDs

In reply to Markus Pargmann
Quoted 6 lines · Markus Pargmann

Hi,

This series adds support to the cpsw driver to read the MACIDs of the am335x chip and use them as fallback. These addresses are only used if there are no mac addresses in the devicetree, for example set by a bootloader.

Quoted 7 lines

In v3 I removed the previously seperate driver and included the changes into the main cpsw driver. I now check for a am33xx machine to not make this operation when running on davinci.

Patches 1-4 are some minor fixes for the cpsw driver. Patch 5 adds the readout support.
Patches 6 and 7 are for am33xx.dtsi to actually enable this feature.

Minor comments, but in general, looks good to me:

Tests on real HW need to wait another 9 days...

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140816/91783b38/attachment-0001.sig>