Re: [PATCH 8/24] RT2x00: Fix *_set_state() functions
>From Ivo van Doorn <[EMAIL PROTECTED]> Fix problems with waking up the device at initialization time. The debug message should be more descriptive of the problem, when the device fails to wake up. Signed-off-by: Ivo van Doorn <[EMAIL PROTECTED]> diff -rU3 wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2400pci.c wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt2400pci.c --- wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 2006-07-23 18:16:35.0 +0200 +++ wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 2006-07-23 18:34:06.0 +0200 @@ -857,7 +857,9 @@ msleep(10); } - NOTICE("Device failed to %s.\n" , put_to_sleep ? "suspend" : "resume"); + NOTICE("Device failed to enter state %d, " + "current device state: bbp %d and rf %d.\n", + state, bbp_state, rf_state); return -EBUSY; } diff -rU3 wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2500pci.c wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt2500pci.c --- wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 2006-07-23 18:16:41.0 +0200 +++ wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 2006-07-23 18:34:14.0 +0200 @@ -930,7 +930,9 @@ msleep(10); } - NOTICE("Device failed to %s.\n" , put_to_sleep ? "suspend" : "resume"); + NOTICE("Device failed to enter state %d, " + "current device state: bbp %d and rf %d.\n", + state, bbp_state, rf_state); return -EBUSY; } diff -rU3 wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2500usb.c wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt2500usb.c --- wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2500usb.c 2006-07-23 18:15:52.0 +0200 +++ wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt2500usb.c 2006-07-23 18:36:12.0 +0200 @@ -731,6 +731,7 @@ enum dev_state state) { u16 reg; + u16 reg2; unsigned int i; char put_to_sleep; char bbp_state; @@ -739,11 +740,12 @@ put_to_sleep = (state != STATE_AWAKE); rt2x00_register_read(rt2x00dev, MAC_CSR17, ®); - rt2x00_set_field16_nb(®, MAC_CSR17_SET_STATE, 1); rt2x00_set_field16_nb(®, MAC_CSR17_BBP_DESIRE_STATE, state); rt2x00_set_field16_nb(®, MAC_CSR17_RF_DESIRE_STATE, state); rt2x00_set_field16_nb(®, MAC_CSR17_PUT_TO_SLEEP, put_to_sleep); rt2x00_register_write(rt2x00dev, MAC_CSR17, reg); + rt2x00_set_field16_nb(®, MAC_CSR17_SET_STATE, 1); + rt2x00_register_write(rt2x00dev, MAC_CSR17, reg); /* * Device is not guarenteed to be in the requested state yet. @@ -751,16 +753,20 @@ * device has entered the correct state. */ for (i = 0; i < REGISTER_BUSY_COUNT; i++) { - rt2x00_register_read(rt2x00dev, MAC_CSR17, ®); - bbp_state = rt2x00_get_field16_nb( - reg, MAC_CSR17_BBP_CURR_STATE); - rf_state = rt2x00_get_field16_nb(reg, MAC_CSR17_RF_CURR_STATE); + rt2x00_register_read(rt2x00dev, MAC_CSR17, ®2); + bbp_state = rt2x00_get_field16_nb(reg2, + MAC_CSR17_BBP_CURR_STATE); + rf_state = rt2x00_get_field16_nb(reg2, + MAC_CSR17_RF_CURR_STATE); if (bbp_state == state && rf_state == state) return 0; + rt2x00_register_write(rt2x00dev, MAC_CSR17, reg); msleep(10); } - NOTICE("Device failed to %s.\n" , put_to_sleep ? "suspend" : "resume"); + NOTICE("Device failed to enter state %d, " + "current device state: bbp %d and rf %d.\n", + state, bbp_state, rf_state); return -EBUSY; } diff -rU3 wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt61pci.c wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt61pci.c --- wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt61pci.c 2006-07-23 18:16:51.0 +0200 +++ wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt61pci.c 2006-07-23 19:22:41.0 +0200 @@ -1169,19 +1169,33 @@ u32 reg; unsigned int i; char put_to_sleep; + char current_state; put_to_sleep = (state != STATE_AWAKE); - if (!put_to_sleep) - rt2x00_mcu_request(rt2x00dev, MCU_WAKEUP, 0xff, 0x00, 0x00); - rt2x00_register_read(rt2x00dev, MAC_CSR12, ®); rt2x00_set_field32(®, MAC_CSR12_FORCE_WAKEUP, !put_to_sleep); rt2x00_set_field32(®, MAC_CSR12_PUT_TO_SLEEP, put_to_sleep); rt2x00_register_write(rt2x00dev, MAC_CSR12, reg); - if (put_to_sleep) + if (put_to_sleep) { + rt2x00_register_write(rt2x00dev, + SOFT_RESET_CSR, cpu_to_le32(0x0005)); + rt2x00_regi
[PATCH 8/24] RT2x00: Fix *_set_state() functions
>From Ivo van Doorn <[EMAIL PROTECTED]> Fix problems with waking up the device at initialization time. The debug message should be more descriptive of the problem, when the device fails to wake up. Signed-off-by: Ivo van Doorn <[EMAIL PROTECTED]> --- diff -rU3 wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2400pci.c wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt2400pci.c --- wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 2006-07-23 18:16:35.0 +0200 +++ wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt2400pci.c 2006-07-23 18:34:06.0 +0200 @@ -857,7 +857,9 @@ msleep(10); } - NOTICE("Device failed to %s.\n" , put_to_sleep ? "suspend" : "resume"); + NOTICE("Device failed to enter state %d, " + "current device state: bbp %d and rf %d.\n", + state, bbp_state, rf_state); return -EBUSY; } diff -rU3 wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2500pci.c wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt2500pci.c --- wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 2006-07-23 18:16:41.0 +0200 +++ wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt2500pci.c 2006-07-23 18:34:14.0 +0200 @@ -930,7 +930,9 @@ msleep(10); } - NOTICE("Device failed to %s.\n" , put_to_sleep ? "suspend" : "resume"); + NOTICE("Device failed to enter state %d, " + "current device state: bbp %d and rf %d.\n", + state, bbp_state, rf_state); return -EBUSY; } diff -rU3 wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2500usb.c wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt2500usb.c --- wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt2500usb.c 2006-07-23 18:15:52.0 +0200 +++ wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt2500usb.c 2006-07-23 18:36:12.0 +0200 @@ -731,6 +731,7 @@ enum dev_state state) { u16 reg; + u16 reg2; unsigned int i; char put_to_sleep; char bbp_state; @@ -739,11 +740,12 @@ put_to_sleep = (state != STATE_AWAKE); rt2x00_register_read(rt2x00dev, MAC_CSR17, ®); - rt2x00_set_field16_nb(®, MAC_CSR17_SET_STATE, 1); rt2x00_set_field16_nb(®, MAC_CSR17_BBP_DESIRE_STATE, state); rt2x00_set_field16_nb(®, MAC_CSR17_RF_DESIRE_STATE, state); rt2x00_set_field16_nb(®, MAC_CSR17_PUT_TO_SLEEP, put_to_sleep); rt2x00_register_write(rt2x00dev, MAC_CSR17, reg); + rt2x00_set_field16_nb(®, MAC_CSR17_SET_STATE, 1); + rt2x00_register_write(rt2x00dev, MAC_CSR17, reg); /* * Device is not guarenteed to be in the requested state yet. @@ -751,16 +753,20 @@ * device has entered the correct state. */ for (i = 0; i < REGISTER_BUSY_COUNT; i++) { - rt2x00_register_read(rt2x00dev, MAC_CSR17, ®); - bbp_state = rt2x00_get_field16_nb( - reg, MAC_CSR17_BBP_CURR_STATE); - rf_state = rt2x00_get_field16_nb(reg, MAC_CSR17_RF_CURR_STATE); + rt2x00_register_read(rt2x00dev, MAC_CSR17, ®2); + bbp_state = rt2x00_get_field16_nb(reg2, + MAC_CSR17_BBP_CURR_STATE); + rf_state = rt2x00_get_field16_nb(reg2, + MAC_CSR17_RF_CURR_STATE); if (bbp_state == state && rf_state == state) return 0; + rt2x00_register_write(rt2x00dev, MAC_CSR17, reg); msleep(10); } - NOTICE("Device failed to %s.\n" , put_to_sleep ? "suspend" : "resume"); + NOTICE("Device failed to enter state %d, " + "current device state: bbp %d and rf %d.\n", + state, bbp_state, rf_state); return -EBUSY; } diff -rU3 wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt61pci.c wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt61pci.c --- wireless-dev-rts/drivers/net/wireless/d80211/rt2x00/rt61pci.c 2006-07-23 18:16:51.0 +0200 +++ wireless-dev-state/drivers/net/wireless/d80211/rt2x00/rt61pci.c 2006-07-23 19:22:41.0 +0200 @@ -1169,19 +1169,33 @@ u32 reg; unsigned int i; char put_to_sleep; + char current_state; put_to_sleep = (state != STATE_AWAKE); - if (!put_to_sleep) - rt2x00_mcu_request(rt2x00dev, MCU_WAKEUP, 0xff, 0x00, 0x00); - rt2x00_register_read(rt2x00dev, MAC_CSR12, ®); rt2x00_set_field32(®, MAC_CSR12_FORCE_WAKEUP, !put_to_sleep); rt2x00_set_field32(®, MAC_CSR12_PUT_TO_SLEEP, put_to_sleep); rt2x00_register_write(rt2x00dev, MAC_CSR12, reg); - if (put_to_sleep) + if (put_to_sleep) { + rt2x00_register_write(rt2x00dev, + SOFT_RESET_CSR, cpu_to_le32(0x0005)); + r