diff options
author | Yaniv Rosner <yanivr@broadcom.com> | 2011-01-30 23:22:46 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-01-31 16:22:44 -0500 |
commit | 1bef68e3f5d25e17adc5232dc0ad7c0ea0188374 (patch) | |
tree | cc60004b8681e56f19ba199f8a50a102c7da42d2 /drivers/net/bnx2x | |
parent | c87bca1eaa493779392378b69fe646644580942a (diff) |
bnx2x: Add CMS functionality for 848x3
Add CMS(Common Mode Sense) functionality for 848x3 as this reduces power consumption and allows a better 10G link stability
Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bnx2x')
-rw-r--r-- | drivers/net/bnx2x/bnx2x_hsi.h | 6 | ||||
-rw-r--r-- | drivers/net/bnx2x/bnx2x_link.c | 17 |
2 files changed, 22 insertions, 1 deletions
diff --git a/drivers/net/bnx2x/bnx2x_hsi.h b/drivers/net/bnx2x/bnx2x_hsi.h index 7c35f4ee3858..51d69db23a71 100644 --- a/drivers/net/bnx2x/bnx2x_hsi.h +++ b/drivers/net/bnx2x/bnx2x_hsi.h | |||
@@ -330,6 +330,12 @@ struct port_hw_cfg { /* port 0: 0x12c port 1: 0x2bc */ | |||
330 | #define PORT_HW_CFG_ENABLE_BAM_ON_KR_DISABLED 0x00000000 | 330 | #define PORT_HW_CFG_ENABLE_BAM_ON_KR_DISABLED 0x00000000 |
331 | #define PORT_HW_CFG_ENABLE_BAM_ON_KR_ENABLED 0x00100000 | 331 | #define PORT_HW_CFG_ENABLE_BAM_ON_KR_ENABLED 0x00100000 |
332 | 332 | ||
333 | /* Enable Common Mode Sense */ | ||
334 | #define PORT_HW_CFG_ENABLE_CMS_MASK 0x00200000 | ||
335 | #define PORT_HW_CFG_ENABLE_CMS_SHIFT 21 | ||
336 | #define PORT_HW_CFG_ENABLE_CMS_DISABLED 0x00000000 | ||
337 | #define PORT_HW_CFG_ENABLE_CMS_ENABLED 0x00200000 | ||
338 | |||
333 | u32 speed_capability_mask2; /* 0x28C */ | 339 | u32 speed_capability_mask2; /* 0x28C */ |
334 | #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_MASK 0x0000FFFF | 340 | #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_MASK 0x0000FFFF |
335 | #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_SHIFT 0 | 341 | #define PORT_HW_CFG_SPEED_CAPABILITY2_D3_SHIFT 0 |
diff --git a/drivers/net/bnx2x/bnx2x_link.c b/drivers/net/bnx2x/bnx2x_link.c index 7d3e7e2c75c6..4a1b5ee976b3 100644 --- a/drivers/net/bnx2x/bnx2x_link.c +++ b/drivers/net/bnx2x/bnx2x_link.c | |||
@@ -6257,7 +6257,7 @@ static u8 bnx2x_848x3_config_init(struct bnx2x_phy *phy, | |||
6257 | u8 port, initialize = 1; | 6257 | u8 port, initialize = 1; |
6258 | u16 val, adj; | 6258 | u16 val, adj; |
6259 | u16 temp; | 6259 | u16 temp; |
6260 | u32 actual_phy_selection; | 6260 | u32 actual_phy_selection, cms_enable; |
6261 | u8 rc = 0; | 6261 | u8 rc = 0; |
6262 | 6262 | ||
6263 | /* This is just for MDIO_CTL_REG_84823_MEDIA register. */ | 6263 | /* This is just for MDIO_CTL_REG_84823_MEDIA register. */ |
@@ -6329,6 +6329,21 @@ static u8 bnx2x_848x3_config_init(struct bnx2x_phy *phy, | |||
6329 | rc = bnx2x_848xx_cmn_config_init(phy, params, vars); | 6329 | rc = bnx2x_848xx_cmn_config_init(phy, params, vars); |
6330 | else | 6330 | else |
6331 | bnx2x_save_848xx_spirom_version(phy, params); | 6331 | bnx2x_save_848xx_spirom_version(phy, params); |
6332 | cms_enable = REG_RD(bp, params->shmem_base + | ||
6333 | offsetof(struct shmem_region, | ||
6334 | dev_info.port_hw_config[params->port].default_cfg)) & | ||
6335 | PORT_HW_CFG_ENABLE_CMS_MASK; | ||
6336 | |||
6337 | bnx2x_cl45_read(bp, phy, MDIO_CTL_DEVAD, | ||
6338 | MDIO_CTL_REG_84823_USER_CTRL_REG, &val); | ||
6339 | if (cms_enable) | ||
6340 | val |= MDIO_CTL_REG_84823_USER_CTRL_CMS; | ||
6341 | else | ||
6342 | val &= ~MDIO_CTL_REG_84823_USER_CTRL_CMS; | ||
6343 | bnx2x_cl45_write(bp, phy, MDIO_CTL_DEVAD, | ||
6344 | MDIO_CTL_REG_84823_USER_CTRL_REG, val); | ||
6345 | |||
6346 | |||
6332 | return rc; | 6347 | return rc; |
6333 | } | 6348 | } |
6334 | 6349 | ||