mirror of
				https://github.com/immortalwrt/immortalwrt.git
				synced 2025-10-30 07:49:55 +08:00 
			
		
		
		
	 8103b79776
			
		
	
	8103b79776
	
	
	
		
			
			https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.114 Removed upstreamed: /target/linux/generic/backport-6.6/540-v6.12-ksmbd-browse-interfaces-list-on-FSCTL_QUERY_INTERFACE_INFO.patch merged upstream with commit: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.114&id=499089376206f3f7f09d6852b3ec92f2674d24bb All other patches automatically rebased. Build system: bcm4908 Build system: bcm53xx Signed-off-by: Zxl hhyccc <zxlhhy@gmail.com> Link: https://github.com/openwrt/openwrt/pull/20434 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 853e80369cfceb2331bf34f251ba11c6602cc67f Mon Sep 17 00:00:00 2001
 | |
| From: Heiner Kallweit <hkallweit1@gmail.com>
 | |
| Date: Thu, 13 Feb 2025 20:15:42 +0100
 | |
| Subject: [PATCH] r8169: add PHY c45 ops for MDIO_MMD_VENDOR2 registers
 | |
| 
 | |
| The integrated PHYs on chip versions from RTL8168g allow to address
 | |
| MDIO_MMD_VEND2 registers. All c22 standard registers are mapped to
 | |
| MDIO_MMD_VEND2 registers. So far the paging mechanism is used to
 | |
| address PHY registers. Add support for c45 ops to address MDIO_MMD_VEND2
 | |
| registers directly, w/o the paging.
 | |
| 
 | |
| Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
 | |
| Reviewed-by: Andrew Lunn <andrew@lunn.ch>
 | |
| Link: https://patch.msgid.link/d6f97eaa-0f13-468f-89cb-75a41087bc4a@gmail.com
 | |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org>
 | |
| ---
 | |
|  drivers/net/ethernet/realtek/r8169_main.c | 32 +++++++++++++++++++++++
 | |
|  1 file changed, 32 insertions(+)
 | |
| 
 | |
| --- a/drivers/net/ethernet/realtek/r8169_main.c
 | |
| +++ b/drivers/net/ethernet/realtek/r8169_main.c
 | |
| @@ -5209,6 +5209,33 @@ static int r8169_mdio_write_reg(struct m
 | |
|  	return 0;
 | |
|  }
 | |
|  
 | |
| +static int r8169_mdio_read_reg_c45(struct mii_bus *mii_bus, int addr,
 | |
| +				   int devnum, int regnum)
 | |
| +{
 | |
| +	struct rtl8169_private *tp = mii_bus->priv;
 | |
| +
 | |
| +	if (addr > 0)
 | |
| +		return -ENODEV;
 | |
| +
 | |
| +	if (devnum == MDIO_MMD_VEND2 && regnum > MDIO_STAT2)
 | |
| +		return r8168_phy_ocp_read(tp, regnum);
 | |
| +
 | |
| +	return 0;
 | |
| +}
 | |
| +
 | |
| +static int r8169_mdio_write_reg_c45(struct mii_bus *mii_bus, int addr,
 | |
| +				    int devnum, int regnum, u16 val)
 | |
| +{
 | |
| +	struct rtl8169_private *tp = mii_bus->priv;
 | |
| +
 | |
| +	if (addr > 0 || devnum != MDIO_MMD_VEND2 || regnum <= MDIO_STAT2)
 | |
| +		return -ENODEV;
 | |
| +
 | |
| +	r8168_phy_ocp_write(tp, regnum, val);
 | |
| +
 | |
| +	return 0;
 | |
| +}
 | |
| +
 | |
|  static int r8169_mdio_register(struct rtl8169_private *tp)
 | |
|  {
 | |
|  	struct pci_dev *pdev = tp->pci_dev;
 | |
| @@ -5239,6 +5266,11 @@ static int r8169_mdio_register(struct rt
 | |
|  	new_bus->read = r8169_mdio_read_reg;
 | |
|  	new_bus->write = r8169_mdio_write_reg;
 | |
|  
 | |
| +	if (tp->mac_version >= RTL_GIGA_MAC_VER_40) {
 | |
| +		new_bus->read_c45 = r8169_mdio_read_reg_c45;
 | |
| +		new_bus->write_c45 = r8169_mdio_write_reg_c45;
 | |
| +	}
 | |
| +
 | |
|  	ret = devm_mdiobus_register(&pdev->dev, new_bus);
 | |
|  	if (ret)
 | |
|  		return ret;
 |