forked from mirrors/linux
		
	net: dsa: qca8k: Enable delay for RGMII_ID mode
RGMII_ID specifies that we should have internal delay, so resurrect the
delay addition routine but under the RGMII_ID mode.
Fixes: 40269aa9f40a ("net: dsa: qca8k: disable delay for RGMII mode")
Tested-by: Michal Vokáč <michal.vokac@ysoft.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
			
			
This commit is contained in:
		
							parent
							
								
									5770117186
								
							
						
					
					
						commit
						a968b5e9d5
					
				
					 2 changed files with 13 additions and 0 deletions
				
			
		|  | @ -443,6 +443,18 @@ qca8k_set_pad_ctrl(struct qca8k_priv *priv, int port, int mode) | |||
| 		val = QCA8K_PORT_PAD_RGMII_EN; | ||||
| 		qca8k_write(priv, reg, val); | ||||
| 		break; | ||||
| 	case PHY_INTERFACE_MODE_RGMII_ID: | ||||
| 		/* RGMII_ID needs internal delay. This is enabled through
 | ||||
| 		 * PORT5_PAD_CTRL for all ports, rather than individual port | ||||
| 		 * registers | ||||
| 		 */ | ||||
| 		qca8k_write(priv, reg, | ||||
| 			    QCA8K_PORT_PAD_RGMII_EN | | ||||
| 			    QCA8K_PORT_PAD_RGMII_TX_DELAY(QCA8K_MAX_DELAY) | | ||||
| 			    QCA8K_PORT_PAD_RGMII_RX_DELAY(QCA8K_MAX_DELAY)); | ||||
| 		qca8k_write(priv, QCA8K_REG_PORT5_PAD_CTRL, | ||||
| 			    QCA8K_PORT_PAD_RGMII_RX_DELAY_EN); | ||||
| 		break; | ||||
| 	case PHY_INTERFACE_MODE_SGMII: | ||||
| 		qca8k_write(priv, reg, QCA8K_PORT_PAD_SGMII_EN); | ||||
| 		break; | ||||
|  |  | |||
|  | @ -40,6 +40,7 @@ | |||
| 						((0x8 + (x & 0x3)) << 22) | ||||
| #define   QCA8K_PORT_PAD_RGMII_RX_DELAY(x)		\ | ||||
| 						((0x10 + (x & 0x3)) << 20) | ||||
| #define   QCA8K_MAX_DELAY				3 | ||||
| #define   QCA8K_PORT_PAD_RGMII_RX_DELAY_EN		BIT(24) | ||||
| #define   QCA8K_PORT_PAD_SGMII_EN			BIT(7) | ||||
| #define QCA8K_REG_MODULE_EN				0x030 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Vinod Koul
						Vinod Koul