Also refresh one patch. Signed-off-by: Daniel Golle <daniel@makrotopia.org> Signed-off-by: Imre Kaloz <kaloz@openwrt.org> SVN-Revision: 45601
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
Register switch connected to srab
 | 
						|
 | 
						|
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
 | 
						|
 | 
						|
--- a/drivers/net/ethernet/broadcom/bgmac.c
 | 
						|
+++ b/drivers/net/ethernet/broadcom/bgmac.c
 | 
						|
@@ -17,6 +17,7 @@
 | 
						|
 #include <linux/phy_fixed.h>
 | 
						|
 #include <linux/interrupt.h>
 | 
						|
 #include <linux/dma-mapping.h>
 | 
						|
+#include <linux/platform_data/b53.h>
 | 
						|
 #include <bcm47xx_nvram.h>
 | 
						|
 
 | 
						|
 static const struct bcma_device_id bgmac_bcma_tbl[] = {
 | 
						|
@@ -1538,6 +1539,17 @@ static void bgmac_mii_unregister(struct
 | 
						|
 	mdiobus_free(mii_bus);
 | 
						|
 }
 | 
						|
 
 | 
						|
+static struct b53_platform_data bgmac_b53_pdata = {
 | 
						|
+};
 | 
						|
+
 | 
						|
+static struct platform_device bgmac_b53_dev = {
 | 
						|
+	.name		= "b53-srab-switch",
 | 
						|
+	.id		= -1,
 | 
						|
+	.dev		= {
 | 
						|
+		.platform_data = &bgmac_b53_pdata,
 | 
						|
+	},
 | 
						|
+};
 | 
						|
+
 | 
						|
 /**************************************************
 | 
						|
  * BCMA bus ops
 | 
						|
  **************************************************/
 | 
						|
@@ -1664,6 +1676,16 @@ static int bgmac_probe(struct bcma_devic
 | 
						|
 	net_dev->hw_features = net_dev->features;
 | 
						|
 	net_dev->vlan_features = net_dev->features;
 | 
						|
 
 | 
						|
+	if ((ci->id == BCMA_CHIP_ID_BCM4707 ||
 | 
						|
+	     ci->id == BCMA_CHIP_ID_BCM53018) &&
 | 
						|
+	    !bgmac_b53_pdata.regs) {
 | 
						|
+		bgmac_b53_pdata.regs = ioremap_nocache(0x18007000, 0x1000);
 | 
						|
+
 | 
						|
+		err = platform_device_register(&bgmac_b53_dev);
 | 
						|
+		if (!err)
 | 
						|
+			bgmac->b53_device = &bgmac_b53_dev;
 | 
						|
+	}
 | 
						|
+
 | 
						|
 	err = register_netdev(bgmac->net_dev);
 | 
						|
 	if (err) {
 | 
						|
 		bgmac_err(bgmac, "Cannot register net device\n");
 | 
						|
@@ -1690,6 +1712,10 @@ static void bgmac_remove(struct bcma_dev
 | 
						|
 {
 | 
						|
 	struct bgmac *bgmac = bcma_get_drvdata(core);
 | 
						|
 
 | 
						|
+	if (bgmac->b53_device)
 | 
						|
+		platform_device_unregister(&bgmac_b53_dev);
 | 
						|
+	bgmac->b53_device = NULL;
 | 
						|
+
 | 
						|
 	unregister_netdev(bgmac->net_dev);
 | 
						|
 	bgmac_mii_unregister(bgmac);
 | 
						|
 	netif_napi_del(&bgmac->napi);
 | 
						|
--- a/drivers/net/ethernet/broadcom/bgmac.h
 | 
						|
+++ b/drivers/net/ethernet/broadcom/bgmac.h
 | 
						|
@@ -462,6 +462,9 @@ struct bgmac {
 | 
						|
 	bool has_robosw;
 | 
						|
 
 | 
						|
 	bool loopback;
 | 
						|
+
 | 
						|
+	/* platform device for associated switch */
 | 
						|
+	struct platform_device *b53_device;
 | 
						|
 };
 | 
						|
 
 | 
						|
 static inline u32 bgmac_read(struct bgmac *bgmac, u16 offset)
 |