On 64 bit platform MAX_SCHEDULE_TIMEOUT is 64 bits, so sparse throws
a warning on the check in the blink code. Just recode to a simpler version.
Signed-off-by: Stephen Hemminger <[EMAIL PROTECTED]>
--- pro-2.6.orig/drivers/net/sky2.c
+++ pro-2.6/drivers/net/sky2.c
@@ -2606,15 +2606,9 @@ static int sky2_phys_id(struct net_devic
struct sky2_hw *hw = sky2->hw;
unsigned port = sky2->port;
u16 ledctrl, ledover = 0;
- long ms;
- int interrupted;
+ unsigned i;
int onoff = 1;
- if (!data || data > (u32) (MAX_SCHEDULE_TIMEOUT / HZ))
- ms = jiffies_to_msecs(MAX_SCHEDULE_TIMEOUT);
- else
- ms = data * 1000;
-
/* save initial values */
down(&sky2->phy_sema);
if (hw->chip_id == CHIP_ID_YUKON_XL) {
@@ -2626,20 +2620,20 @@ static int sky2_phys_id(struct net_devic
ledctrl = gm_phy_read(hw, port, PHY_MARV_LED_CTRL);
ledover = gm_phy_read(hw, port, PHY_MARV_LED_OVER);
}
+ up(&sky2->phy_sema);
- interrupted = 0;
- while (!interrupted && ms > 0) {
+ for (i = 0; i < data * 2; i++) {
+ down(&sky2->phy_sema);
sky2_led(hw, port, onoff);
- onoff = !onoff;
-
up(&sky2->phy_sema);
- interrupted = msleep_interruptible(250);
- down(&sky2->phy_sema);
+ onoff = !onoff;
- ms -= 250;
+ if (msleep_interruptible(500))
+ break;
}
/* resume regularly scheduled programming */
+ down(&sky2->phy_sema);
if (hw->chip_id == CHIP_ID_YUKON_XL) {
u16 pg = gm_phy_read(hw, port, PHY_MARV_EXT_ADR);
gm_phy_write(hw, port, PHY_MARV_EXT_ADR, 3);
--
Stephen Hemminger <[EMAIL PROTECTED]>
OSDL http://developer.osdl.org/~shemminger
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html