mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	* properly format/comment all patches * merge debloat patches * merge Kconfig patches * merge swconfig patches * merge hotplug patches * drop 200-fix_localversion.patch - upstream * drop 222-arm_zimage_none.patch - unused * drop 252-mv_cesa_depends.patch - no longer required * drop 410-mtd-move-forward-declaration-of-struct-mtd_info.patch - unused * drop 661-fq_codel_keep_dropped_stats.patch - outdated * drop 702-phy_add_aneg_done_function.patch - upstream * drop 840-rtc7301.patch - unused * drop 841-rtc_pt7c4338.patch - upstream * drop 921-use_preinit_as_init.patch - unused * drop spio-gpio-old and gpio-mmc - unused Signed-off-by: John Crispin <john@phrozen.org>
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
 | |
| Date: Fri, 27 Jan 2017 14:07:01 +0100
 | |
| Subject: [PATCH] net: phy: broadcom: add support for BCM54210E
 | |
| MIME-Version: 1.0
 | |
| Content-Type: text/plain; charset=UTF-8
 | |
| Content-Transfer-Encoding: 8bit
 | |
| 
 | |
| It's Broadcom PHY simply described as single-port
 | |
| RGMII 10/100/1000BASE-T PHY. It requires disabling delay skew and GTXCLK
 | |
| bits.
 | |
| 
 | |
| Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
 | |
| Signed-off-by: David S. Miller <davem@davemloft.net>
 | |
| ---
 | |
| 
 | |
| --- a/drivers/net/phy/broadcom.c
 | |
| +++ b/drivers/net/phy/broadcom.c
 | |
| @@ -30,6 +30,22 @@ MODULE_DESCRIPTION("Broadcom PHY driver"
 | |
|  MODULE_AUTHOR("Maciej W. Rozycki");
 | |
|  MODULE_LICENSE("GPL");
 | |
|  
 | |
| +static int bcm54210e_config_init(struct phy_device *phydev)
 | |
| +{
 | |
| +	int val;
 | |
| +
 | |
| +	val = bcm54xx_auxctl_read(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC);
 | |
| +	val &= ~MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN;
 | |
| +	val |= MII_BCM54XX_AUXCTL_MISC_WREN;
 | |
| +	bcm54xx_auxctl_write(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC, val);
 | |
| +
 | |
| +	val = bcm_phy_read_shadow(phydev, BCM54810_SHD_CLK_CTL);
 | |
| +	val &= ~BCM54810_SHD_CLK_CTL_GTXCLK_EN;
 | |
| +	bcm_phy_write_shadow(phydev, BCM54810_SHD_CLK_CTL, val);
 | |
| +
 | |
| +	return 0;
 | |
| +}
 | |
| +
 | |
|  static int bcm54810_config(struct phy_device *phydev)
 | |
|  {
 | |
|  	int rc, val;
 | |
| @@ -230,7 +246,11 @@ static int bcm54xx_config_init(struct ph
 | |
|  	    (phydev->dev_flags & PHY_BRCM_AUTO_PWRDWN_ENABLE))
 | |
|  		bcm54xx_adjust_rxrefclk(phydev);
 | |
|  
 | |
| -	if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54810) {
 | |
| +	if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54210E) {
 | |
| +		err = bcm54210e_config_init(phydev);
 | |
| +		if (err)
 | |
| +			return err;
 | |
| +	} else if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54810) {
 | |
|  		err = bcm54810_config(phydev);
 | |
|  		if (err)
 | |
|  			return err;
 | |
| @@ -544,6 +564,17 @@ static struct phy_driver broadcom_driver
 | |
|  	.ack_interrupt	= bcm_phy_ack_intr,
 | |
|  	.config_intr	= bcm_phy_config_intr,
 | |
|  }, {
 | |
| +	.phy_id		= PHY_ID_BCM54210E,
 | |
| +	.phy_id_mask	= 0xfffffff0,
 | |
| +	.name		= "Broadcom BCM54210E",
 | |
| +	.features	= PHY_GBIT_FEATURES,
 | |
| +	.flags		= PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
 | |
| +	.config_init	= bcm54xx_config_init,
 | |
| +	.config_aneg	= genphy_config_aneg,
 | |
| +	.read_status	= genphy_read_status,
 | |
| +	.ack_interrupt	= bcm_phy_ack_intr,
 | |
| +	.config_intr	= bcm_phy_config_intr,
 | |
| +}, {
 | |
|  	.phy_id		= PHY_ID_BCM5461,
 | |
|  	.phy_id_mask	= 0xfffffff0,
 | |
|  	.name		= "Broadcom BCM5461",
 | |
| @@ -694,6 +725,7 @@ module_phy_driver(broadcom_drivers);
 | |
|  static struct mdio_device_id __maybe_unused broadcom_tbl[] = {
 | |
|  	{ PHY_ID_BCM5411, 0xfffffff0 },
 | |
|  	{ PHY_ID_BCM5421, 0xfffffff0 },
 | |
| +	{ PHY_ID_BCM54210E, 0xfffffff0 },
 | |
|  	{ PHY_ID_BCM5461, 0xfffffff0 },
 | |
|  	{ PHY_ID_BCM54612E, 0xfffffff0 },
 | |
|  	{ PHY_ID_BCM54616S, 0xfffffff0 },
 | |
| --- a/include/linux/brcmphy.h
 | |
| +++ b/include/linux/brcmphy.h
 | |
| @@ -17,6 +17,7 @@
 | |
|  #define PHY_ID_BCM5482			0x0143bcb0
 | |
|  #define PHY_ID_BCM5411			0x00206070
 | |
|  #define PHY_ID_BCM5421			0x002060e0
 | |
| +#define PHY_ID_BCM54210E		0x600d84a0
 | |
|  #define PHY_ID_BCM5464			0x002060b0
 | |
|  #define PHY_ID_BCM5461			0x002060c0
 | |
|  #define PHY_ID_BCM54612E		0x03625e60
 |