2012-07-27 07:02:35

by Matt Chen

[permalink] [raw]
Subject: [rt2x00-users] [PATCH] rt2x00 : fix rt3290 resuming failed.

This patch is going to fix the resuming failed from S3/S4
for rt3290 chip.

Signed-off-by: Chen, Chien-Chia <[email protected]>
CC-by: Kevin Chou <[email protected]>
----
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index e76f03c..ed756f4 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -401,6 +401,14 @@ int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev,
unsigned int i;
u32 reg;

+ int retval;
+
+ if (rt2x00_rt(rt2x00dev, RT3290)) {
+ retval = rt2800_enable_wlan_rt3290(rt2x00dev);
+ if (retval)
+ return -EBUSY;
+ }
+
/*
* If driver doesn't wake up firmware here,
* rt2800_load_firmware will hang forever when interface is up again.
@@ -5152,6 +5160,68 @@ int rt2800_get_survey(struct ieee80211_hw *hw, int idx,
}
EXPORT_SYMBOL_GPL(rt2800_get_survey);

+static int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev)
+{
+ u32 reg;
+ int i, count;
+
+ rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg);
+ if (rt2x00_get_field32(reg, WLAN_EN))
+ return 0;
+
+ rt2x00_set_field32(&reg, WLAN_GPIO_OUT_OE_BIT_ALL, 0xff);
+ rt2x00_set_field32(&reg, FRC_WL_ANT_SET, 1);
+ rt2x00_set_field32(&reg, WLAN_CLK_EN, 0);
+ rt2x00_set_field32(&reg, WLAN_EN, 1);
+ rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
+
+ udelay(REGISTER_BUSY_DELAY);
+
+ count = 0;
+ do {
+ /*
+ * Check PLL_LD & XTAL_RDY.
+ */
+ for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
+ rt2800_register_read(rt2x00dev, CMB_CTRL, &reg);
+ if (rt2x00_get_field32(reg, PLL_LD) &&
+ rt2x00_get_field32(reg, XTAL_RDY))
+ break;
+ udelay(REGISTER_BUSY_DELAY);
+ }
+
+ if (i >= REGISTER_BUSY_COUNT) {
+
+ if (count >= 10)
+ return -EIO;
+
+ rt2800_register_write(rt2x00dev, 0x58, 0x018);
+ udelay(REGISTER_BUSY_DELAY);
+ rt2800_register_write(rt2x00dev, 0x58, 0x418);
+ udelay(REGISTER_BUSY_DELAY);
+ rt2800_register_write(rt2x00dev, 0x58, 0x618);
+ udelay(REGISTER_BUSY_DELAY);
+ count++;
+ } else {
+ count = 0;
+ }
+
+ rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg);
+ rt2x00_set_field32(&reg, PCIE_APP0_CLK_REQ, 0);
+ rt2x00_set_field32(&reg, WLAN_CLK_EN, 1);
+ rt2x00_set_field32(&reg, WLAN_RESET, 1);
+ rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
+ udelay(10);
+ rt2x00_set_field32(&reg, WLAN_RESET, 0);
+ rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
+ udelay(10);
+ rt2800_register_write(rt2x00dev, INT_SOURCE_CSR, 0x7fffffff);
+ } while (count != 0);
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(rt2800_enable_wlan_rt3290);
+
MODULE_AUTHOR(DRV_PROJECT ", Bartlomiej Zolnierkiewicz");
MODULE_VERSION(DRV_VERSION);
MODULE_DESCRIPTION("Ralink RT2800 library");
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.h b/drivers/net/wireless/rt2x00/rt2800lib.h
index 18a0b67..0321fd8 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.h
+++ b/drivers/net/wireless/rt2x00/rt2800lib.h
@@ -209,5 +209,6 @@ int rt2800_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
int rt2800_get_survey(struct ieee80211_hw *hw, int idx,
struct survey_info *survey);
void rt2800_disable_wpdma(struct rt2x00_dev *rt2x00dev);
+int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev);

#endif /* RT2800LIB_H */
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index 235376e..b7a02bf 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -980,66 +980,6 @@ static int rt2800pci_validate_eeprom(struct rt2x00_dev *rt2x00dev)
return rt2800_validate_eeprom(rt2x00dev);
}

-static int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev)
-{
- u32 reg;
- int i, count;
-
- rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg);
- if (rt2x00_get_field32(reg, WLAN_EN))
- return 0;
-
- rt2x00_set_field32(&reg, WLAN_GPIO_OUT_OE_BIT_ALL, 0xff);
- rt2x00_set_field32(&reg, FRC_WL_ANT_SET, 1);
- rt2x00_set_field32(&reg, WLAN_CLK_EN, 0);
- rt2x00_set_field32(&reg, WLAN_EN, 1);
- rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
-
- udelay(REGISTER_BUSY_DELAY);
-
- count = 0;
- do {
- /*
- * Check PLL_LD & XTAL_RDY.
- */
- for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
- rt2800_register_read(rt2x00dev, CMB_CTRL, &reg);
- if (rt2x00_get_field32(reg, PLL_LD) &&
- rt2x00_get_field32(reg, XTAL_RDY))
- break;
- udelay(REGISTER_BUSY_DELAY);
- }
-
- if (i >= REGISTER_BUSY_COUNT) {
-
- if (count >= 10)
- return -EIO;
-
- rt2800_register_write(rt2x00dev, 0x58, 0x018);
- udelay(REGISTER_BUSY_DELAY);
- rt2800_register_write(rt2x00dev, 0x58, 0x418);
- udelay(REGISTER_BUSY_DELAY);
- rt2800_register_write(rt2x00dev, 0x58, 0x618);
- udelay(REGISTER_BUSY_DELAY);
- count++;
- } else {
- count = 0;
- }
-
- rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg);
- rt2x00_set_field32(&reg, PCIE_APP0_CLK_REQ, 0);
- rt2x00_set_field32(&reg, WLAN_CLK_EN, 1);
- rt2x00_set_field32(&reg, WLAN_RESET, 1);
- rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
- udelay(10);
- rt2x00_set_field32(&reg, WLAN_RESET, 0);
- rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
- udelay(10);
- rt2800_register_write(rt2x00dev, INT_SOURCE_CSR, 0x7fffffff);
- } while (count != 0);
-
- return 0;
-}
static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev)
{
int retval;


2012-07-30 08:09:26

by Matt Chen

[permalink] [raw]
Subject: Re: [rt2x00-users] [PATCH] rt2x00 : fix rt3290 resuming failed.

Hi

2012/7/30 Stanislaw Gruszka <[email protected]>:
> Hi
>
> On Fri, Jul 27, 2012 at 10:22:44PM +0800, Matt Chen wrote:
>> 2012/7/27 Stanislaw Gruszka <[email protected]>:
>> > On Fri, Jul 27, 2012 at 03:03:54PM +0800, Chen, Chien-Chia wrote:
>> >> This patch is going to fix the resuming failed from S3/S4
>> >> for rt3290 chip.
>> >>
>> >> Signed-off-by: Chen, Chien-Chia <[email protected]>
>> >> CC-by: Kevin Chou <[email protected]>
>> >
>> > Could you please post patches that compile? Also you did not set true
>> Compile ? you mean the *.o files and *.ko ?
>
> Patch does not compile:
>
> drivers/net/wireless/rt2x00/rt2800lib.c:5163: error: static declaration of ?rt2800_enable_wlan_rt3290? follows non-static declaration
> drivers/net/wireless/rt2x00/rt2800lib.h:212: note: previous declaration of ?rt2800_enable_wlan_rt3290? was here
> make[1]: *** [drivers/net/wireless/rt2x00/rt2800lib.o] Error 1
> make: *** [drivers/net/wireless/rt2x00/] Error 2
>
> How did you tested the patch ?
Ah......it must be my direct copy and past, I am working on V2 path, I
am working on building it now, make sure my v2 patch is fine to build.
>> > author of the patch. Additionally, since repost that patch with changes,
>> > you should mark version of the patch and provide information about
>> > changes, like for example here:
>> Hmm....I added the Author: Woody Hung <[email protected]> but
>> don't know why it doesn't show here. :(
>
> So fix that. Post patch to yourself first to see if setting works.
I see. thanks.
> Stanislaw
>



--
Thank you.

2012-07-18 14:29:56

by Matt Chen

[permalink] [raw]
Subject: Re: [rt2x00-users] [PATCH] rt2x00 : fix rt3290 resuming failed.

Hi all,

2012/7/18 Henning Heinold <[email protected]>:
> On Wed, Jul 18, 2012 at 04:40:27PM +0800, Chen, Chien-Chia wrote:
>> This patch is going to fix the resuming failed from S3/S4
>> for rt3290 chip.
>>
>> Signed-off-by: Chen, Chien-Chia <[email protected]>
>>
>> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
>> index e76f03c..1715776 100644
>> --- a/drivers/net/wireless/rt2x00/rt2800lib.c
>> +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
>> @@ -400,6 +400,13 @@ int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev,
>> {
>> unsigned int i;
>> u32 reg;
>> + int retval;
>> +
>> + if (rt2x00_rt(rt2x00dev,RT3290)){
>> + retval = rt2800_enable_wlan_rt3290(rt2x00dev);
>> + if (retval)
>> + return -EBUSY;
>> + }
>>
>> /*
>> * If driver doesn't wake up firmware here,
>> @@ -5152,6 +5159,65 @@ int rt2800_get_survey(struct ieee80211_hw *hw, int idx,
>> }
>> EXPORT_SYMBOL_GPL(rt2800_get_survey);
>>
>> +int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev)
>> +{
>> + u32 reg;
>> + int i, count;
>> +
>> + rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg);
>> + if ((rt2x00_get_field32(reg, WLAN_EN) == 1))
>> + return 0;
>> +
>> + rt2x00_set_field32(&reg, WLAN_GPIO_OUT_OE_BIT_ALL, 0xff);
>> + rt2x00_set_field32(&reg, FRC_WL_ANT_SET, 1);
>> + rt2x00_set_field32(&reg, WLAN_CLK_EN, 0);
>> + rt2x00_set_field32(&reg, WLAN_EN, 1);
>> + rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
>> +
>> + udelay(REGISTER_BUSY_DELAY);
>> + count = 0;
>> + do {
>> + /*
>> + * Check PLL_LD & XTAL_RDY.
>> + */
>> + for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
>> + rt2800_register_read(rt2x00dev, CMB_CTRL, &reg);
>> + if ((rt2x00_get_field32(reg, PLL_LD) == 1) &&
>> + (rt2x00_get_field32(reg, XTAL_RDY) == 1))
>> + break;
>> + udelay(REGISTER_BUSY_DELAY);
>> + }
>> + if (i >= REGISTER_BUSY_COUNT) {
>> + if (count >= 10)
>> + return -EIO;
>> +
>> + rt2800_register_write(rt2x00dev, 0x58, 0x018);
>> + udelay(REGISTER_BUSY_DELAY);
>> + rt2800_register_write(rt2x00dev, 0x58, 0x418);
>> + udelay(REGISTER_BUSY_DELAY);
>> + rt2800_register_write(rt2x00dev, 0x58, 0x618);
>> + udelay(REGISTER_BUSY_DELAY);
>> + count++;
>> + } else {
>> + count = 0;
>> + }
>> +
>> + rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg);
>> + rt2x00_set_field32(&reg, PCIE_APP0_CLK_REQ, 0);
>> + rt2x00_set_field32(&reg, WLAN_CLK_EN, 1);
>> + rt2x00_set_field32(&reg, WLAN_RESET, 1);
>> + rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
>> + udelay(10);
>> + rt2x00_set_field32(&reg, WLAN_RESET, 0);
>> + rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
>> + udelay(10);
>> + rt2800_register_write(rt2x00dev, INT_SOURCE_CSR, 0x7fffffff);
>> + } while (count != 0);
>> +
>> + return 0;
>> +}
>> +EXPORT_SYMBOL_GPL(rt2800_enable_wlan_rt3290);
>> +
>> MODULE_AUTHOR(DRV_PROJECT ", Bartlomiej Zolnierkiewicz");
>> MODULE_VERSION(DRV_VERSION);
>> MODULE_DESCRIPTION("Ralink RT2800 library");
>> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.h b/drivers/net/wireless/rt2x00/rt2800lib.h
>> index 18a0b67..12d6eeb 100644
>> --- a/drivers/net/wireless/rt2x00/rt2800lib.h
>> +++ b/drivers/net/wireless/rt2x00/rt2800lib.h
>> @@ -209,5 +209,5 @@ int rt2800_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
>> int rt2800_get_survey(struct ieee80211_hw *hw, int idx,
>> struct survey_info *survey);
>> void rt2800_disable_wpdma(struct rt2x00_dev *rt2x00dev);
>> -
>> +int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev);
>> #endif /* RT2800LIB_H */
>> diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
>> index 235376e..135c2a2 100644
>> --- a/drivers/net/wireless/rt2x00/rt2800pci.c
>> +++ b/drivers/net/wireless/rt2x00/rt2800pci.c
>> @@ -980,6 +980,7 @@ static int rt2800pci_validate_eeprom(struct rt2x00_dev *rt2x00dev)
>> return rt2800_validate_eeprom(rt2x00dev);
>> }
>>
>> +#if 0
>> static int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev)
>> {
>> u32 reg;
>> @@ -1040,6 +1041,8 @@ static int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev)
>>
>> return 0;
>> }
>> +
>> +#endif
>
> Why do you need the #ifdefs here?
If this is no need anymore here, then I will remove this and submit it again. :)
>> static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev)
>> {
>> int retval;
>>
>
> Bye Henning
>



--
Thank you.

2012-07-18 11:40:26

by Henning Heinold

[permalink] [raw]
Subject: Re: [rt2x00-users] [PATCH] rt2x00 : fix rt3290 resuming failed.

On Wed, Jul 18, 2012 at 04:40:27PM +0800, Chen, Chien-Chia wrote:
> This patch is going to fix the resuming failed from S3/S4
> for rt3290 chip.
>
> Signed-off-by: Chen, Chien-Chia <[email protected]>
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
> index e76f03c..1715776 100644
> --- a/drivers/net/wireless/rt2x00/rt2800lib.c
> +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
> @@ -400,6 +400,13 @@ int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev,
> {
> unsigned int i;
> u32 reg;
> + int retval;
> +
> + if (rt2x00_rt(rt2x00dev,RT3290)){
> + retval = rt2800_enable_wlan_rt3290(rt2x00dev);
> + if (retval)
> + return -EBUSY;
> + }
>
> /*
> * If driver doesn't wake up firmware here,
> @@ -5152,6 +5159,65 @@ int rt2800_get_survey(struct ieee80211_hw *hw, int idx,
> }
> EXPORT_SYMBOL_GPL(rt2800_get_survey);
>
> +int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev)
> +{
> + u32 reg;
> + int i, count;
> +
> + rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg);
> + if ((rt2x00_get_field32(reg, WLAN_EN) == 1))
> + return 0;
> +
> + rt2x00_set_field32(&reg, WLAN_GPIO_OUT_OE_BIT_ALL, 0xff);
> + rt2x00_set_field32(&reg, FRC_WL_ANT_SET, 1);
> + rt2x00_set_field32(&reg, WLAN_CLK_EN, 0);
> + rt2x00_set_field32(&reg, WLAN_EN, 1);
> + rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
> +
> + udelay(REGISTER_BUSY_DELAY);
> + count = 0;
> + do {
> + /*
> + * Check PLL_LD & XTAL_RDY.
> + */
> + for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
> + rt2800_register_read(rt2x00dev, CMB_CTRL, &reg);
> + if ((rt2x00_get_field32(reg, PLL_LD) == 1) &&
> + (rt2x00_get_field32(reg, XTAL_RDY) == 1))
> + break;
> + udelay(REGISTER_BUSY_DELAY);
> + }
> + if (i >= REGISTER_BUSY_COUNT) {
> + if (count >= 10)
> + return -EIO;
> +
> + rt2800_register_write(rt2x00dev, 0x58, 0x018);
> + udelay(REGISTER_BUSY_DELAY);
> + rt2800_register_write(rt2x00dev, 0x58, 0x418);
> + udelay(REGISTER_BUSY_DELAY);
> + rt2800_register_write(rt2x00dev, 0x58, 0x618);
> + udelay(REGISTER_BUSY_DELAY);
> + count++;
> + } else {
> + count = 0;
> + }
> +
> + rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg);
> + rt2x00_set_field32(&reg, PCIE_APP0_CLK_REQ, 0);
> + rt2x00_set_field32(&reg, WLAN_CLK_EN, 1);
> + rt2x00_set_field32(&reg, WLAN_RESET, 1);
> + rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
> + udelay(10);
> + rt2x00_set_field32(&reg, WLAN_RESET, 0);
> + rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
> + udelay(10);
> + rt2800_register_write(rt2x00dev, INT_SOURCE_CSR, 0x7fffffff);
> + } while (count != 0);
> +
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(rt2800_enable_wlan_rt3290);
> +
> MODULE_AUTHOR(DRV_PROJECT ", Bartlomiej Zolnierkiewicz");
> MODULE_VERSION(DRV_VERSION);
> MODULE_DESCRIPTION("Ralink RT2800 library");
> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.h b/drivers/net/wireless/rt2x00/rt2800lib.h
> index 18a0b67..12d6eeb 100644
> --- a/drivers/net/wireless/rt2x00/rt2800lib.h
> +++ b/drivers/net/wireless/rt2x00/rt2800lib.h
> @@ -209,5 +209,5 @@ int rt2800_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
> int rt2800_get_survey(struct ieee80211_hw *hw, int idx,
> struct survey_info *survey);
> void rt2800_disable_wpdma(struct rt2x00_dev *rt2x00dev);
> -
> +int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev);
> #endif /* RT2800LIB_H */
> diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
> index 235376e..135c2a2 100644
> --- a/drivers/net/wireless/rt2x00/rt2800pci.c
> +++ b/drivers/net/wireless/rt2x00/rt2800pci.c
> @@ -980,6 +980,7 @@ static int rt2800pci_validate_eeprom(struct rt2x00_dev *rt2x00dev)
> return rt2800_validate_eeprom(rt2x00dev);
> }
>
> +#if 0
> static int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev)
> {
> u32 reg;
> @@ -1040,6 +1041,8 @@ static int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev)
>
> return 0;
> }
> +
> +#endif

Why do you need the #ifdefs here?

> static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev)
> {
> int retval;
>

Bye Henning

2012-07-24 06:24:46

by Matt Chen

[permalink] [raw]
Subject: Re: [rt2x00-users] [PATCH] rt2x00 : fix rt3290 resuming failed.

Hi Kevin,

2012/7/23 Stanislaw Gruszka <[email protected]>:
> Hi
>
> On Mon, Jul 23, 2012 at 03:01:08PM +0800, Matt Chen wrote:
>> >> +
>> >> + rt2800_register_write(rt2x00dev, 0x58, 0x018);
>> >> + udelay(REGISTER_BUSY_DELAY);
>> >> + rt2800_register_write(rt2x00dev, 0x58, 0x418);
>> >> + udelay(REGISTER_BUSY_DELAY);
>> >> + rt2800_register_write(rt2x00dev, 0x58, 0x618);
>> > We really like to know what those black magic numbers mean.
>> I have no idea, Ralink gave it to me for the fixing.
This upper meanning of register value part would need your help for
explanation.
> So perhaps patch should be posted by Ralink developer, who can fix that
> accordingly?
>
> Also it's clear now that you are not the author of the patch. Would be
> good to indicate true author of the patch by adding "From:" and
> "Signed-off-by:" lines.
>
> Thanks
> Stanislaw
>
> _______________________________________________
> users mailing list
> [email protected]
> http://rt2x00.serialmonkey.com/mailman/listinfo/users_rt2x00.serialmonkey.com
>



--
Thank you.

2012-07-23 12:35:38

by Matt Chen

[permalink] [raw]
Subject: Re: [rt2x00-users] [PATCH] rt2x00 : fix rt3290 resuming failed.

Hi

2012/7/23 Stanislaw Gruszka <[email protected]>:
> Hi
>
> On Mon, Jul 23, 2012 at 03:01:08PM +0800, Matt Chen wrote:
>> >> +
>> >> + rt2800_register_write(rt2x00dev, 0x58, 0x018);
>> >> + udelay(REGISTER_BUSY_DELAY);
>> >> + rt2800_register_write(rt2x00dev, 0x58, 0x418);
>> >> + udelay(REGISTER_BUSY_DELAY);
>> >> + rt2800_register_write(rt2x00dev, 0x58, 0x618);
>> > We really like to know what those black magic numbers mean.
>> I have no idea, Ralink gave it to me for the fixing.
>
> So perhaps patch should be posted by Ralink developer, who can fix that
> accordingly?
>
> Also it's clear now that you are not the author of the patch. Would be
> good to indicate true author of the patch by adding "From:" and
> "Signed-off-by:" lines.
No, I am not, just help the Ralink RD to submit this patch. I've
already asked them who is the author of this and will add him/her for
the "From:" and "Signed-off-by" for next submit. :)
> Thanks
> Stanislaw
>
> _______________________________________________
> users mailing list
> [email protected]
> http://rt2x00.serialmonkey.com/mailman/listinfo/users_rt2x00.serialmonkey.com
>



--
Thank you.

2012-07-24 07:31:20

by Kevin Chou (周庭昱)

[permalink] [raw]
Subject: RE: [rt2x00-users] [PATCH] rt2x00 : fix rt3290 resuming failed.

RGVhciBXb29keSwNCg0KQ291bGQgeW91IGhlbHAgdG8gYW5zd2VyIFN0YW5pc2xhdydzIHF1ZXN0
aW9ucz8NClRoYW5rIHlvdS4NCg0KQmVzdCBXaXNoZXMNCg0KS2V2aW4gQ2hvdQ0KTWVkaWFUZWsg
SW5jLg0KVEVMOiA4ODYtMy01NjAwODY4IGV4dDozMTU1NQ0KDQotLS0tLU9yaWdpbmFsIE1lc3Nh
Z2UtLS0tLQ0KRnJvbTogTWF0dCBDaGVuIFttYWlsdG86bWFjaGVuQHN1c2UuY29tXSANClNlbnQ6
IFR1ZXNkYXksIEp1bHkgMjQsIDIwMTIgMjoyNSBQTQ0KVG86IEtldmluIENob3UgKKlQrnisUikN
CkNjOiBTdGFuaXNsYXcgR3J1c3prYTsgbGludXgtd2lyZWxlc3NAdmdlci5rZXJuZWwub3JnOyB1
c2Vyc0BydDJ4MDAuc2VyaWFsbW9ua2V5LmNvbQ0KU3ViamVjdDogUmU6IFtydDJ4MDAtdXNlcnNd
IFtQQVRDSF0gcnQyeDAwIDogZml4IHJ0MzI5MCByZXN1bWluZyBmYWlsZWQuDQoNCkhpIEtldmlu
LA0KDQoyMDEyLzcvMjMgU3RhbmlzbGF3IEdydXN6a2EgPHNncnVzemthQHJlZGhhdC5jb20+Og0K
PiBIaQ0KPg0KPiBPbiBNb24sIEp1bCAyMywgMjAxMiBhdCAwMzowMTowOFBNICswODAwLCBNYXR0
IENoZW4gd3JvdGU6DQo+PiA+PiArDQo+PiA+PiArICAgICAgICAgICAgICAgICAgICAgcnQyODAw
X3JlZ2lzdGVyX3dyaXRlKHJ0MngwMGRldiwgMHg1OCwgMHgwMTgpOw0KPj4gPj4gKyAgICAgICAg
ICAgICAgICAgICAgIHVkZWxheShSRUdJU1RFUl9CVVNZX0RFTEFZKTsNCj4+ID4+ICsgICAgICAg
ICAgICAgICAgICAgICBydDI4MDBfcmVnaXN0ZXJfd3JpdGUocnQyeDAwZGV2LCAweDU4LCAweDQx
OCk7DQo+PiA+PiArICAgICAgICAgICAgICAgICAgICAgdWRlbGF5KFJFR0lTVEVSX0JVU1lfREVM
QVkpOw0KPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIHJ0MjgwMF9yZWdpc3Rlcl93cml0ZShy
dDJ4MDBkZXYsIDB4NTgsIA0KPj4gPj4gKyAweDYxOCk7DQo+PiA+IFdlIHJlYWxseSBsaWtlIHRv
IGtub3cgd2hhdCB0aG9zZSBibGFjayBtYWdpYyBudW1iZXJzIG1lYW4uDQo+PiBJIGhhdmUgbm8g
aWRlYSwgUmFsaW5rIGdhdmUgaXQgdG8gbWUgZm9yIHRoZSBmaXhpbmcuDQpUaGlzIHVwcGVyIG1l
YW5uaW5nIG9mIHJlZ2lzdGVyIHZhbHVlIHBhcnQgd291bGQgbmVlZCB5b3VyIGhlbHAgZm9yIGV4
cGxhbmF0aW9uLg0KPiBTbyBwZXJoYXBzIHBhdGNoIHNob3VsZCBiZSBwb3N0ZWQgYnkgUmFsaW5r
IGRldmVsb3Blciwgd2hvIGNhbiBmaXggDQo+IHRoYXQgYWNjb3JkaW5nbHk/DQo+DQo+IEFsc28g
aXQncyBjbGVhciBub3cgdGhhdCB5b3UgYXJlIG5vdCB0aGUgYXV0aG9yIG9mIHRoZSBwYXRjaC4g
V291bGQgYmUgDQo+IGdvb2QgdG8gaW5kaWNhdGUgdHJ1ZSBhdXRob3Igb2YgdGhlIHBhdGNoIGJ5
IGFkZGluZyAiRnJvbToiIGFuZCANCj4gIlNpZ25lZC1vZmYtYnk6IiBsaW5lcy4NCj4NCj4gVGhh
bmtzDQo+IFN0YW5pc2xhdw0KPg0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXw0KPiB1c2VycyBtYWlsaW5nIGxpc3QNCj4gdXNlcnNAcnQyeDAwLnNlcmlh
bG1vbmtleS5jb20NCj4gaHR0cDovL3J0MngwMC5zZXJpYWxtb25rZXkuY29tL21haWxtYW4vbGlz
dGluZm8vdXNlcnNfcnQyeDAwLnNlcmlhbG1vbg0KPiBrZXkuY29tDQo+DQoNCg0KDQotLQ0KVGhh
bmsgeW91Lg0KCioqKioqKioqKioqKiogRW1haWwgQ29uZmlkZW50aWFsaXR5IE5vdGljZSAqKioq
KioqKioqKioqKioqKioqKg0KVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIGUtbWFp
bCBtZXNzYWdlIChpbmNsdWRpbmcgYW55IA0KYXR0YWNobWVudHMpIG1heSBiZSBjb25maWRlbnRp
YWwsIHByb3ByaWV0YXJ5LCBwcml2aWxlZ2VkLCBvciBvdGhlcndpc2UNCmV4ZW1wdCBmcm9tIGRp
c2Nsb3N1cmUgdW5kZXIgYXBwbGljYWJsZSBsYXdzLiBJdCBpcyBpbnRlbmRlZCB0byBiZSANCmNv
bnZleWVkIG9ubHkgdG8gdGhlIGRlc2lnbmF0ZWQgcmVjaXBpZW50KHMpLiBBbnkgdXNlLCBkaXNz
ZW1pbmF0aW9uLCANCmRpc3RyaWJ1dGlvbiwgcHJpbnRpbmcsIHJldGFpbmluZyBvciBjb3B5aW5n
IG9mIHRoaXMgZS1tYWlsIChpbmNsdWRpbmcgaXRzIA0KYXR0YWNobWVudHMpIGJ5IHVuaW50ZW5k
ZWQgcmVjaXBpZW50KHMpIGlzIHN0cmljdGx5IHByb2hpYml0ZWQgYW5kIG1heSANCmJlIHVubGF3
ZnVsLiBJZiB5b3UgYXJlIG5vdCBhbiBpbnRlbmRlZCByZWNpcGllbnQgb2YgdGhpcyBlLW1haWws
IG9yIGJlbGlldmUgDQp0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgZS1tYWlsIGluIGVycm9y
LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgDQppbW1lZGlhdGVseSAoYnkgcmVwbHlpbmcgdG8g
dGhpcyBlLW1haWwpLCBkZWxldGUgYW55IGFuZCBhbGwgY29waWVzIG9mIA0KdGhpcyBlLW1haWwg
KGluY2x1ZGluZyBhbnkgYXR0YWNobWVudHMpIGZyb20geW91ciBzeXN0ZW0sIGFuZCBkbyBub3QN
CmRpc2Nsb3NlIHRoZSBjb250ZW50IG9mIHRoaXMgZS1tYWlsIHRvIGFueSBvdGhlciBwZXJzb24u
IFRoYW5rIHlvdSE=


2012-07-30 07:34:39

by Stanislaw Gruszka

[permalink] [raw]
Subject: Re: [rt2x00-users] [PATCH] rt2x00 : fix rt3290 resuming failed.

Hi

On Fri, Jul 27, 2012 at 10:22:44PM +0800, Matt Chen wrote:
> 2012/7/27 Stanislaw Gruszka <[email protected]>:
> > On Fri, Jul 27, 2012 at 03:03:54PM +0800, Chen, Chien-Chia wrote:
> >> This patch is going to fix the resuming failed from S3/S4
> >> for rt3290 chip.
> >>
> >> Signed-off-by: Chen, Chien-Chia <[email protected]>
> >> CC-by: Kevin Chou <[email protected]>
> >
> > Could you please post patches that compile? Also you did not set true
> Compile ? you mean the *.o files and *.ko ?

Patch does not compile:

drivers/net/wireless/rt2x00/rt2800lib.c:5163: error: static declaration of ‘rt2800_enable_wlan_rt3290’ follows non-static declaration
drivers/net/wireless/rt2x00/rt2800lib.h:212: note: previous declaration of ‘rt2800_enable_wlan_rt3290’ was here
make[1]: *** [drivers/net/wireless/rt2x00/rt2800lib.o] Error 1
make: *** [drivers/net/wireless/rt2x00/] Error 2

How did you tested the patch ?

> > author of the patch. Additionally, since repost that patch with changes,
> > you should mark version of the patch and provide information about
> > changes, like for example here:
> Hmm....I added the Author: Woody Hung <[email protected]> but
> don't know why it doesn't show here. :(

So fix that. Post patch to yourself first to see if setting works.

Stanislaw

2012-07-27 14:22:54

by Matt Chen

[permalink] [raw]
Subject: Re: [rt2x00-users] [PATCH] rt2x00 : fix rt3290 resuming failed.

Hi Stanislaw,

2012/7/27 Stanislaw Gruszka <[email protected]>:
> On Fri, Jul 27, 2012 at 03:03:54PM +0800, Chen, Chien-Chia wrote:
>> This patch is going to fix the resuming failed from S3/S4
>> for rt3290 chip.
>>
>> Signed-off-by: Chen, Chien-Chia <[email protected]>
>> CC-by: Kevin Chou <[email protected]>
>
> Could you please post patches that compile? Also you did not set true
Compile ? you mean the *.o files and *.ko ?
> author of the patch. Additionally, since repost that patch with changes,
> you should mark version of the patch and provide information about
> changes, like for example here:
Hmm....I added the Author: Woody Hung <[email protected]> but
don't know why it doesn't show here. :(

> http://marc.info/?l=linux-wireless&m=134338186523059&w=2
It makes sense to me. I will repost it and mark version of the patch.
> Still patch does not include registers/values names, but if providing
> such information is not possible, we will accept that.
Thanks, Ralink doesn't intend to give me the registers/values names.
> Thanks
> Stanislaw
>
>



--
Thank you.

2012-07-27 10:28:50

by Stanislaw Gruszka

[permalink] [raw]
Subject: Re: [rt2x00-users] [PATCH] rt2x00 : fix rt3290 resuming failed.

On Fri, Jul 27, 2012 at 03:03:54PM +0800, Chen, Chien-Chia wrote:
> This patch is going to fix the resuming failed from S3/S4
> for rt3290 chip.
>
> Signed-off-by: Chen, Chien-Chia <[email protected]>
> CC-by: Kevin Chou <[email protected]>

Could you please post patches that compile? Also you did not set true
author of the patch. Additionally, since repost that patch with changes,
you should mark version of the patch and provide information about
changes, like for example here:
http://marc.info/?l=linux-wireless&m=134338186523059&w=2

Still patch does not include registers/values names, but if providing
such information is not possible, we will accept that.

Thanks
Stanislaw