diff options
author | Eilon Greenstein <eilong@broadcom.com> | 2008-08-13 18:56:59 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-08-13 19:05:32 -0400 |
commit | 17de50b7f71d176375e9d4d67ffce42482e5515f (patch) | |
tree | 199993119c876e9f421cdd714cf13d4fdb534e69 /drivers/net/bnx2x_main.c | |
parent | 8c99e7b0436473593a68e740d1032909bc5335a1 (diff) |
bnx2x: Change GPIO for any port
Change GPIO for any port
The set GPIO function should receive the port index to allow changing
the GPIO of another port. This is needed for the common init phase (one
the first driver is loaded for the chip)
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bnx2x_main.c')
-rw-r--r-- | drivers/net/bnx2x_main.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/net/bnx2x_main.c b/drivers/net/bnx2x_main.c index a37549b5bc1c..85ea799a0539 100644 --- a/drivers/net/bnx2x_main.c +++ b/drivers/net/bnx2x_main.c | |||
@@ -1788,11 +1788,11 @@ static void bnx2x_release_phy_lock(struct bnx2x *bp) | |||
1788 | mutex_unlock(&bp->port.phy_mutex); | 1788 | mutex_unlock(&bp->port.phy_mutex); |
1789 | } | 1789 | } |
1790 | 1790 | ||
1791 | int bnx2x_set_gpio(struct bnx2x *bp, int gpio_num, u32 mode) | 1791 | int bnx2x_set_gpio(struct bnx2x *bp, int gpio_num, u32 mode, u8 port) |
1792 | { | 1792 | { |
1793 | /* The GPIO should be swapped if swap register is set and active */ | 1793 | /* The GPIO should be swapped if swap register is set and active */ |
1794 | int gpio_port = (REG_RD(bp, NIG_REG_PORT_SWAP) && | 1794 | int gpio_port = (REG_RD(bp, NIG_REG_PORT_SWAP) && |
1795 | REG_RD(bp, NIG_REG_STRAP_OVERRIDE)) ^ BP_PORT(bp); | 1795 | REG_RD(bp, NIG_REG_STRAP_OVERRIDE)) ^ port; |
1796 | int gpio_shift = gpio_num + | 1796 | int gpio_shift = gpio_num + |
1797 | (gpio_port ? MISC_REGISTERS_GPIO_PORT_SHIFT : 0); | 1797 | (gpio_port ? MISC_REGISTERS_GPIO_PORT_SHIFT : 0); |
1798 | u32 gpio_mask = (1 << gpio_shift); | 1798 | u32 gpio_mask = (1 << gpio_shift); |
@@ -1824,7 +1824,7 @@ int bnx2x_set_gpio(struct bnx2x *bp, int gpio_num, u32 mode) | |||
1824 | gpio_reg |= (gpio_mask << MISC_REGISTERS_GPIO_SET_POS); | 1824 | gpio_reg |= (gpio_mask << MISC_REGISTERS_GPIO_SET_POS); |
1825 | break; | 1825 | break; |
1826 | 1826 | ||
1827 | case MISC_REGISTERS_GPIO_INPUT_HI_Z : | 1827 | case MISC_REGISTERS_GPIO_INPUT_HI_Z: |
1828 | DP(NETIF_MSG_LINK, "Set GPIO %d (shift %d) -> input\n", | 1828 | DP(NETIF_MSG_LINK, "Set GPIO %d (shift %d) -> input\n", |
1829 | gpio_num, gpio_shift); | 1829 | gpio_num, gpio_shift); |
1830 | /* set FLOAT */ | 1830 | /* set FLOAT */ |
@@ -2553,12 +2553,12 @@ static inline void bnx2x_attn_int_deasserted0(struct bnx2x *bp, u32 attn) | |||
2553 | case SHARED_HW_CFG_BOARD_TYPE_BCM957710A1022G: | 2553 | case SHARED_HW_CFG_BOARD_TYPE_BCM957710A1022G: |
2554 | /* Fan failure attention */ | 2554 | /* Fan failure attention */ |
2555 | 2555 | ||
2556 | /* The PHY reset is controled by GPIO 1 */ | 2556 | /* The PHY reset is controlled by GPIO 1 */ |
2557 | bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1, | 2557 | bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_1, |
2558 | MISC_REGISTERS_GPIO_OUTPUT_LOW); | 2558 | MISC_REGISTERS_GPIO_OUTPUT_LOW, port); |
2559 | /* Low power mode is controled by GPIO 2 */ | 2559 | /* Low power mode is controlled by GPIO 2 */ |
2560 | bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, | 2560 | bnx2x_set_gpio(bp, MISC_REGISTERS_GPIO_2, |
2561 | MISC_REGISTERS_GPIO_OUTPUT_LOW); | 2561 | MISC_REGISTERS_GPIO_OUTPUT_LOW, port); |
2562 | /* mark the failure */ | 2562 | /* mark the failure */ |
2563 | bp->link_params.ext_phy_config &= | 2563 | bp->link_params.ext_phy_config &= |
2564 | ~PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK; | 2564 | ~PORT_HW_CFG_XGXS_EXT_PHY_TYPE_MASK; |