@ -383,16 +383,26 @@ static void qca955x_set_speed_xmii(int speed)
iounmap ( base ) ;
}
static void qca955x_set_speed_sgmii ( int speed )
static void qca955x_set_speed_sgmii ( int id , int speed )
{
void __iomem * base ;
u32 val = ath79_get_eth_pll ( 1 , speed ) ;
u32 val = ath79_get_eth_pll ( id , speed ) ;
base = ioremap_nocache ( AR71XX_PLL_BASE , AR71XX_PLL_SIZE ) ;
__raw_writel ( val , base + QCA955X_PLL_ETH_SGMII_CONTROL_REG ) ;
iounmap ( base ) ;
}
static void qca9556_set_speed_sgmii ( int speed )
{
qca955x_set_speed_sgmii ( 0 , speed ) ;
}
static void qca9558_set_speed_sgmii ( int speed )
{
qca955x_set_speed_sgmii ( 1 , speed ) ;
}
static void qca956x_set_speed_sgmii ( int speed )
{
void __iomem * base ;
@ -1028,10 +1038,14 @@ void __init ath79_register_eth(unsigned int id)
pdata - > reset_bit = QCA955X_RESET_GE0_MAC |
QCA955X_RESET_GE0_MDIO ;
pdata - > set_speed = qca955x_set_speed_xmii ;
/* QCA9556 only has SGMII interface */
if ( ath79_soc = = ATH79_SOC_QCA9556 )
pdata - > set_speed = qca9556_set_speed_sgmii ;
} else {
pdata - > reset_bit = QCA955X_RESET_GE1_MAC |
QCA955X_RESET_GE1_MDIO ;
pdata - > set_speed = qca955x_set_speed_sgmii ;
pdata - > set_speed = qca9558 _set_speed_sgmii ;
}
pdata - > has_gbit = 1 ;