Commit 06920861 authored by Adam Wujek's avatar Adam Wujek 💬

userspace/wrsw_hal: change assignment of left port's LED

From now, turn left LED on when link is up. Depending on the configured
function LED will have the following color:
--orange for port configured as non-wr
--green for slave
--yellow for master and other cases (like wrong configuration)
Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
parent a374bd52
......@@ -411,13 +411,13 @@ void shw_sfp_gpio_init(void)
for (i = 0; i < 18; i++) {
shw_sfp_set_led_synced(i, 1);
shw_udelay(7000);
shw_sfp_set_led_link(i, 1);
shw_sfp_set_generic(i, 1, SFP_LED_WRMODE_MASTER);
shw_udelay(7000);
}
for (i = 0; i < 18; i++) {
shw_sfp_set_led_synced(i, 0);
shw_udelay(7000);
shw_sfp_set_led_link(i, 0);
shw_sfp_set_generic(i, 0, SFP_LED_WRMODE_MASTER);
shw_udelay(7000);
}
......@@ -457,9 +457,9 @@ void shw_sfp_gpio_set(int num, uint8_t state)
else
curr &= 0xf0;
if (state & SFP_LED_LINK)
if (state & SFP_LED_WRMODE1)
curr |= SFP_LED_LINK_MASK(top);
if (state & SFP_LED_WRMODE)
if (state & SFP_LED_WRMODE2)
curr |= SFP_LED_WRMODE_MASK(top);
if (state & SFP_LED_SYNCED)
curr |= SFP_LED_SYNCED_MASK(top);
......@@ -500,9 +500,9 @@ uint8_t shw_sfp_gpio_get(int num)
i2c_transfer(bus, addr, 0, 1, &curr);
if (curr & SFP_LED_LINK_MASK(top))
out |= SFP_LED_LINK;
out |= SFP_LED_WRMODE1;
if (curr & SFP_LED_WRMODE_MASK(top))
out |= SFP_LED_WRMODE;
out |= SFP_LED_WRMODE2;
if (curr & SFP_LED_SYNCED_MASK(top))
out |= SFP_LED_SYNCED;
if (curr & SFP_TX_DISABLE_MASK(top))
......
#ifndef __LIBWR_SHW_SFPLIB_H
#define __LIBWR_SHW_SFPLIB_H
#define SFP_LED_LINK (1 << 0)
#define SFP_LED_WRMODE (1 << 1)
/* note each led contains green and orange part */
#define SFP_LED_WRMODE_SLAVE (1) /* green */
#define SFP_LED_WRMODE_NON_WR (2) /* orange */
#define SFP_LED_WRMODE_MASTER (3) /* yellow */
#define SFP_LED_WRMODE_OFF (3) /* to off entire WRMODE LED */
#define SFP_LED_WRMODE1 (1 << 0)
#define SFP_LED_WRMODE2 (1 << 1)
#define SFP_LED_SYNCED (1 << 2)
#define SFP_TX_DISABLE (1 << 3)
#define shw_sfp_set_led_link(num, status) \
shw_sfp_set_generic(num, status, SFP_LED_LINK)
#define shw_sfp_set_led_wrmode(num, status) \
shw_sfp_set_generic(num, status, SFP_LED_WRMODE)
#define shw_sfp_set_led_synced(num, status) \
shw_sfp_set_generic(num, status, SFP_LED_SYNCED)
......
......@@ -327,7 +327,8 @@ static int hal_port_link_down(struct hal_port_state * p, int link_up)
rts_set_mode(RTS_MODE_GM_FREERUNNING);
}
shw_sfp_set_led_link(p->hw_index, 0);
/* turn off link/wrmode LEDs */
shw_sfp_set_generic(p->hw_index, 0, SFP_LED_WRMODE_OFF);
p->state = HAL_PORT_STATE_LINK_DOWN;
hal_port_reset_state(p);
......@@ -380,8 +381,17 @@ static void hal_port_fsm(struct hal_port_state * p)
p->tx_cal_pending = 0;
p->rx_cal_pending = 0;
shw_sfp_set_led_link(p->hw_index, 1);
/* set link/wrmode LEDs */
if (p->mode == HEXP_PORT_MODE_WR_SLAVE) {/* slave */
shw_sfp_set_generic(p->hw_index, 1,
SFP_LED_WRMODE_SLAVE);
} else if (p->mode == HEXP_PORT_MODE_NON_WR) {/* non-wr */
shw_sfp_set_generic(p->hw_index, 1,
SFP_LED_WRMODE_NON_WR);
} else { /* master or other */
shw_sfp_set_generic(p->hw_index, 1,
SFP_LED_WRMODE_MASTER);
}
pr_info("%s: link up\n", p->name);
p->state = HAL_PORT_STATE_UP;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment