mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.9 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
 | |
| @@ -16,6 +16,7 @@
 | |
|  #include <linux/phy.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[] = {
 | |
| @@ -1405,6 +1406,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
 | |
|   **************************************************/
 | |
| @@ -1524,6 +1536,16 @@ static int bgmac_probe(struct bcma_devic
 | |
|  		goto err_dma_free;
 | |
|  	}
 | |
|  
 | |
| +	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");
 | |
| @@ -1550,6 +1572,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
 | |
| @@ -457,6 +457,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)
 |