kernel: use upstream fixes for bgmac and BCM4709(4)
Signed-off-by: Rafał Miłecki <zajec5@gmail.com> SVN-Revision: 49167
This commit is contained in:
		@@ -1,28 +0,0 @@
 | 
				
			|||||||
From: Felix Fietkau <nbd@openwrt.org>
 | 
					 | 
				
			||||||
Date: Mon, 13 Apr 2015 15:56:26 +0200
 | 
					 | 
				
			||||||
Subject: [PATCH] bgmac: reset all 4 GMAC cores on init
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
On a BCM4709 based device, I found that GMAC cores may be enabled at
 | 
					 | 
				
			||||||
probe time, but only become usable after a full reset.
 | 
					 | 
				
			||||||
Disable cores before re-enabling them to ensure that they are properly
 | 
					 | 
				
			||||||
reset.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
 | 
					 | 
				
			||||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
 | 
					 | 
				
			||||||
@@ -1623,8 +1623,11 @@ static int bgmac_probe(struct bcma_devic
 | 
					 | 
				
			||||||
 			ns_core = bcma_find_core_unit(core->bus,
 | 
					 | 
				
			||||||
 						      BCMA_CORE_MAC_GBIT,
 | 
					 | 
				
			||||||
 						      ns_gmac);
 | 
					 | 
				
			||||||
-			if (ns_core && !bcma_core_is_enabled(ns_core))
 | 
					 | 
				
			||||||
-				bcma_core_enable(ns_core, 0);
 | 
					 | 
				
			||||||
+			if (!ns_core)
 | 
					 | 
				
			||||||
+				continue;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+			bcma_core_disable(ns_core, 0);
 | 
					 | 
				
			||||||
+			bcma_core_enable(ns_core, 0);
 | 
					 | 
				
			||||||
 		}
 | 
					 | 
				
			||||||
 	}
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					From b4dfd8e92956b396d3438212bc9a0be6267b8b34 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
 | 
					From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
 | 
				
			||||||
 | 
					Date: Tue, 12 Apr 2016 13:30:45 +0200
 | 
				
			||||||
 | 
					Subject: [PATCH] bgmac: reset & enable Ethernet core before using it
 | 
				
			||||||
 | 
					MIME-Version: 1.0
 | 
				
			||||||
 | 
					Content-Type: text/plain; charset=UTF-8
 | 
				
			||||||
 | 
					Content-Transfer-Encoding: 8bit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This fixes Ethernet on D-Link DIR-885L with BCM47094 SoC. Felix reported
 | 
				
			||||||
 | 
					similar fix was needed for his BCM4709 device (Buffalo WXR-1900DHP?).
 | 
				
			||||||
 | 
					I tested this for regressions on BCM4706, BCM4708A0 and BCM47081A0.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Cc: Felix Fietkau <nbd@openwrt.org>
 | 
				
			||||||
 | 
					Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 | 
				
			||||||
 | 
					Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--- a/drivers/net/ethernet/broadcom/bgmac.c
 | 
				
			||||||
 | 
					+++ b/drivers/net/ethernet/broadcom/bgmac.c
 | 
				
			||||||
 | 
					@@ -1564,6 +1564,11 @@ static int bgmac_probe(struct bcma_devic
 | 
				
			||||||
 | 
					 		dev_warn(&core->dev, "Using random MAC: %pM\n", mac);
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+	/* This (reset &) enable is not preset in specs or reference driver but
 | 
				
			||||||
 | 
					+	 * Broadcom does it in arch PCI code when enabling fake PCI device.
 | 
				
			||||||
 | 
					+	 */
 | 
				
			||||||
 | 
					+	bcma_core_enable(core, 0);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	/* Allocation and references */
 | 
				
			||||||
 | 
					 	net_dev = alloc_etherdev(sizeof(*bgmac));
 | 
				
			||||||
 | 
					 	if (!net_dev)
 | 
				
			||||||
@@ -1,10 +1,20 @@
 | 
				
			|||||||
 | 
					From c02bc350f9dbce7d637c394a6e1c4d29dc5b28b2 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
From: Felix Fietkau <nbd@openwrt.org>
 | 
					From: Felix Fietkau <nbd@openwrt.org>
 | 
				
			||||||
Date: Mon, 13 Apr 2015 15:54:04 +0200
 | 
					Date: Tue, 12 Apr 2016 18:27:29 +0200
 | 
				
			||||||
Subject: [PATCH] bgmac: fix MAC soft-reset bit for corerev > 4
 | 
					Subject: [PATCH] bgmac: fix MAC soft-reset bit for corerev > 4
 | 
				
			||||||
 | 
					MIME-Version: 1.0
 | 
				
			||||||
 | 
					Content-Type: text/plain; charset=UTF-8
 | 
				
			||||||
 | 
					Content-Transfer-Encoding: 8bit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Only core revisions older than 4 use BGMAC_CMDCFG_SR_REV0
 | 
					Only core revisions older than 4 use BGMAC_CMDCFG_SR_REV0. This mainly
 | 
				
			||||||
 | 
					fixes support for BCM4708A0KF SoCs with Ethernet core rev 5 (it means
 | 
				
			||||||
 | 
					only some devices as most of BCM4708A0KF-s got core rev 4).
 | 
				
			||||||
 | 
					This was tested for regressions on BCM47094 which doesn't seem to care
 | 
				
			||||||
 | 
					which bit gets used.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
					Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
				
			||||||
 | 
					Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 | 
				
			||||||
 | 
					Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
--- a/drivers/net/ethernet/broadcom/bgmac.h
 | 
					--- a/drivers/net/ethernet/broadcom/bgmac.h
 | 
				
			||||||
@@ -1,28 +0,0 @@
 | 
				
			|||||||
From: Felix Fietkau <nbd@openwrt.org>
 | 
					 | 
				
			||||||
Date: Mon, 13 Apr 2015 15:56:26 +0200
 | 
					 | 
				
			||||||
Subject: [PATCH] bgmac: reset all 4 GMAC cores on init
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
On a BCM4709 based device, I found that GMAC cores may be enabled at
 | 
					 | 
				
			||||||
probe time, but only become usable after a full reset.
 | 
					 | 
				
			||||||
Disable cores before re-enabling them to ensure that they are properly
 | 
					 | 
				
			||||||
reset.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
 | 
					 | 
				
			||||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
 | 
					 | 
				
			||||||
@@ -1645,8 +1645,11 @@ static int bgmac_probe(struct bcma_devic
 | 
					 | 
				
			||||||
 			ns_core = bcma_find_core_unit(core->bus,
 | 
					 | 
				
			||||||
 						      BCMA_CORE_MAC_GBIT,
 | 
					 | 
				
			||||||
 						      ns_gmac);
 | 
					 | 
				
			||||||
-			if (ns_core && !bcma_core_is_enabled(ns_core))
 | 
					 | 
				
			||||||
-				bcma_core_enable(ns_core, 0);
 | 
					 | 
				
			||||||
+			if (!ns_core)
 | 
					 | 
				
			||||||
+				continue;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+			bcma_core_disable(ns_core, 0);
 | 
					 | 
				
			||||||
+			bcma_core_enable(ns_core, 0);
 | 
					 | 
				
			||||||
 		}
 | 
					 | 
				
			||||||
 	}
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					From b4dfd8e92956b396d3438212bc9a0be6267b8b34 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
 | 
					From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
 | 
				
			||||||
 | 
					Date: Tue, 12 Apr 2016 13:30:45 +0200
 | 
				
			||||||
 | 
					Subject: [PATCH] bgmac: reset & enable Ethernet core before using it
 | 
				
			||||||
 | 
					MIME-Version: 1.0
 | 
				
			||||||
 | 
					Content-Type: text/plain; charset=UTF-8
 | 
				
			||||||
 | 
					Content-Transfer-Encoding: 8bit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This fixes Ethernet on D-Link DIR-885L with BCM47094 SoC. Felix reported
 | 
				
			||||||
 | 
					similar fix was needed for his BCM4709 device (Buffalo WXR-1900DHP?).
 | 
				
			||||||
 | 
					I tested this for regressions on BCM4706, BCM4708A0 and BCM47081A0.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Cc: Felix Fietkau <nbd@openwrt.org>
 | 
				
			||||||
 | 
					Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 | 
				
			||||||
 | 
					Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--- a/drivers/net/ethernet/broadcom/bgmac.c
 | 
				
			||||||
 | 
					+++ b/drivers/net/ethernet/broadcom/bgmac.c
 | 
				
			||||||
 | 
					@@ -1578,6 +1578,11 @@ static int bgmac_probe(struct bcma_devic
 | 
				
			||||||
 | 
					 		dev_warn(&core->dev, "Using random MAC: %pM\n", mac);
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+	/* This (reset &) enable is not preset in specs or reference driver but
 | 
				
			||||||
 | 
					+	 * Broadcom does it in arch PCI code when enabling fake PCI device.
 | 
				
			||||||
 | 
					+	 */
 | 
				
			||||||
 | 
					+	bcma_core_enable(core, 0);
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	/* Allocation and references */
 | 
				
			||||||
 | 
					 	net_dev = alloc_etherdev(sizeof(*bgmac));
 | 
				
			||||||
 | 
					 	if (!net_dev)
 | 
				
			||||||
@@ -1,10 +1,20 @@
 | 
				
			|||||||
 | 
					From c02bc350f9dbce7d637c394a6e1c4d29dc5b28b2 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
From: Felix Fietkau <nbd@openwrt.org>
 | 
					From: Felix Fietkau <nbd@openwrt.org>
 | 
				
			||||||
Date: Mon, 13 Apr 2015 15:54:04 +0200
 | 
					Date: Tue, 12 Apr 2016 18:27:29 +0200
 | 
				
			||||||
Subject: [PATCH] bgmac: fix MAC soft-reset bit for corerev > 4
 | 
					Subject: [PATCH] bgmac: fix MAC soft-reset bit for corerev > 4
 | 
				
			||||||
 | 
					MIME-Version: 1.0
 | 
				
			||||||
 | 
					Content-Type: text/plain; charset=UTF-8
 | 
				
			||||||
 | 
					Content-Transfer-Encoding: 8bit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Only core revisions older than 4 use BGMAC_CMDCFG_SR_REV0
 | 
					Only core revisions older than 4 use BGMAC_CMDCFG_SR_REV0. This mainly
 | 
				
			||||||
 | 
					fixes support for BCM4708A0KF SoCs with Ethernet core rev 5 (it means
 | 
				
			||||||
 | 
					only some devices as most of BCM4708A0KF-s got core rev 4).
 | 
				
			||||||
 | 
					This was tested for regressions on BCM47094 which doesn't seem to care
 | 
				
			||||||
 | 
					which bit gets used.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
					Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
				
			||||||
 | 
					Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 | 
				
			||||||
 | 
					Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
--- a/drivers/net/ethernet/broadcom/bgmac.h
 | 
					--- a/drivers/net/ethernet/broadcom/bgmac.h
 | 
				
			||||||
		Reference in New Issue
	
	Block a user