Dear All, I sincerely appreciate all of you to review my patches. This experience has benefited me a great deal. Thank you so much! John Li -----Original Message----- From: Ivo Van Doorn [mailto:ivdoorn@xxxxxxxxx] Sent: Saturday, February 18, 2012 8:25 PM To: John Li Cc: users@xxxxxxxxxxxxxxxxxxxxxxx; linux-wireless@xxxxxxxxxxxxxxx; John Linville; Chen-Yang Li (黎振陽) Subject: Re: [PATCH] rt2x00:Add RT5372 chipset support 2012/2/17 John Li <john.li.mediatek@xxxxxxxxx>: > From: John Li <chen-yang.li@xxxxxxxxxxxx> > > Signed-off-by: John Li <chen-yang.li@xxxxxxxxxxxx> Acked-by: Ivo van Doorn <IvDoorn@xxxxxxxxx> > --- > drivers/net/wireless/rt2x00/rt2800.h | 1 + > drivers/net/wireless/rt2x00/rt2800lib.c | 153 > ++++++++++++++++++++++++++----- > drivers/net/wireless/rt2x00/rt2800pci.c | 3 +- > drivers/net/wireless/rt2x00/rt2800usb.c | 14 +++ > drivers/net/wireless/rt2x00/rt2x00.h | 1 + > 5 files changed, 147 insertions(+), 25 deletions(-) > > diff --git a/drivers/net/wireless/rt2x00/rt2800.h > b/drivers/net/wireless/rt2x00/rt2800.h > index 2571a2f..56b78c8 100644 > --- a/drivers/net/wireless/rt2x00/rt2800.h > +++ b/drivers/net/wireless/rt2x00/rt2800.h > @@ -68,6 +68,7 @@ > #define RF3322 0x000c > #define RF3053 0x000d > #define RF5370 0x5370 > +#define RF5372 0x5372 > #define RF5390 0x5390 > > /* > diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c > b/drivers/net/wireless/rt2x00/rt2800lib.c > index 22a1a8f..90d7a36 100644 > --- a/drivers/net/wireless/rt2x00/rt2800lib.c > +++ b/drivers/net/wireless/rt2x00/rt2800lib.c > @@ -402,7 +402,8 @@ int rt2800_load_firmware(struct rt2x00_dev > *rt2x00dev, > > if (rt2x00_is_pci(rt2x00dev)) { > if (rt2x00_rt(rt2x00dev, RT3572) || > - rt2x00_rt(rt2x00dev, RT5390)) { > + rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) { > rt2800_register_read(rt2x00dev, AUX_CTRL, > ®); > rt2x00_set_field32(®, > AUX_CTRL_FORCE_PCIE_CLK, 1); > rt2x00_set_field32(®, AUX_CTRL_WAKE_PCIE_EN, > 1); @@ -1906,7 +1907,8 @@ static void > rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, > r55_nonbt_rev[idx]); > rt2800_rfcsr_write(rt2x00dev, 59, > r59_nonbt_rev[idx]); > - } else if (rt2x00_rt(rt2x00dev, RT5390)) { > + } else if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, > + RT5392)) { > static const char r59_non_bt[] = {0x8f, > 0x8f, > 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, > 0x8d, > 0x8a, 0x88, 0x88, 0x87, 0x87, > 0x86}; @@ -1956,6 +1958,7 @@ static void rt2800_config_channel(struct > rt2x00_dev *rt2x00dev, > rt2800_config_channel_rf3052(rt2x00dev, conf, rf, > info); > break; > case RF5370: > + case RF5372: > case RF5390: > rt2800_config_channel_rf53xx(rt2x00dev, conf, rf, > info); > break; > @@ -1972,7 +1975,8 @@ static void rt2800_config_channel(struct > rt2x00_dev *rt2x00dev, > rt2800_bbp_write(rt2x00dev, 86, 0); > > if (rf->channel <= 14) { > - if (!rt2x00_rt(rt2x00dev, RT5390)) { > + if (!rt2x00_rt(rt2x00dev, RT5390) && > + !rt2x00_rt(rt2x00dev, RT5392)) { > if (test_bit(CAPABILITY_EXTERNAL_LNA_BG, > &rt2x00dev->cap_flags)) { > rt2800_bbp_write(rt2x00dev, 82, 0x62); > @@ -2502,7 +2506,8 @@ static u8 rt2800_get_default_vgc(struct > rt2x00_dev *rt2x00dev) > rt2x00_rt(rt2x00dev, RT3071) || > rt2x00_rt(rt2x00dev, RT3090) || > rt2x00_rt(rt2x00dev, RT3390) || > - rt2x00_rt(rt2x00dev, RT5390)) > + rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) > return 0x1c + (2 * rt2x00dev->lna_gain); > else > return 0x2e + rt2x00dev->lna_gain; @@ -2637,7 > +2642,8 @@ static int rt2800_init_registers(struct rt2x00_dev > *rt2x00dev) > } else if (rt2x00_rt(rt2x00dev, RT3572)) { > rt2800_register_write(rt2x00dev, TX_SW_CFG0, > 0x00000400); > rt2800_register_write(rt2x00dev, TX_SW_CFG1, > 0x00080606); > - } else if (rt2x00_rt(rt2x00dev, RT5390)) { > + } else if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) { > rt2800_register_write(rt2x00dev, TX_SW_CFG0, > 0x00000404); > rt2800_register_write(rt2x00dev, TX_SW_CFG1, > 0x00080606); > rt2800_register_write(rt2x00dev, TX_SW_CFG2, > 0x00000000); @@ -3013,7 +3019,8 @@ static int rt2800_init_bbp(struct > rt2x00_dev *rt2x00dev) > rt2800_wait_bbp_ready(rt2x00dev))) > return -EACCES; > > - if (rt2x00_rt(rt2x00dev, RT5390)) { > + if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) { > rt2800_bbp_read(rt2x00dev, 4, &value); > rt2x00_set_field8(&value, BBP4_MAC_IF_CTRL, 1); > rt2800_bbp_write(rt2x00dev, 4, value); @@ -3021,19 > +3028,22 @@ static int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) > > if (rt2800_is_305x_soc(rt2x00dev) || > rt2x00_rt(rt2x00dev, RT3572) || > - rt2x00_rt(rt2x00dev, RT5390)) > + rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) > rt2800_bbp_write(rt2x00dev, 31, 0x08); > > rt2800_bbp_write(rt2x00dev, 65, 0x2c); > rt2800_bbp_write(rt2x00dev, 66, 0x38); > > - if (rt2x00_rt(rt2x00dev, RT5390)) > + if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) > rt2800_bbp_write(rt2x00dev, 68, 0x0b); > > if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860C)) { > rt2800_bbp_write(rt2x00dev, 69, 0x16); > rt2800_bbp_write(rt2x00dev, 73, 0x12); > - } else if (rt2x00_rt(rt2x00dev, RT5390)) { > + } else if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) { > rt2800_bbp_write(rt2x00dev, 69, 0x12); > rt2800_bbp_write(rt2x00dev, 73, 0x13); > rt2800_bbp_write(rt2x00dev, 75, 0x46); @@ -3051,7 > +3061,8 @@ static int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) > rt2x00_rt(rt2x00dev, RT3090) || > rt2x00_rt(rt2x00dev, RT3390) || > rt2x00_rt(rt2x00dev, RT3572) || > - rt2x00_rt(rt2x00dev, RT5390)) { > + rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) { > rt2800_bbp_write(rt2x00dev, 79, 0x13); > rt2800_bbp_write(rt2x00dev, 80, 0x05); > rt2800_bbp_write(rt2x00dev, 81, 0x33); @@ -3063,64 > +3074,88 @@ static int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) > } > > rt2800_bbp_write(rt2x00dev, 82, 0x62); > - if (rt2x00_rt(rt2x00dev, RT5390)) > + if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) > rt2800_bbp_write(rt2x00dev, 83, 0x7a); > else > rt2800_bbp_write(rt2x00dev, 83, 0x6a); > > if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860D)) > rt2800_bbp_write(rt2x00dev, 84, 0x19); > - else if (rt2x00_rt(rt2x00dev, RT5390)) > + else if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) > rt2800_bbp_write(rt2x00dev, 84, 0x9a); > else > rt2800_bbp_write(rt2x00dev, 84, 0x99); > > - if (rt2x00_rt(rt2x00dev, RT5390)) > + if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) > rt2800_bbp_write(rt2x00dev, 86, 0x38); > else > rt2800_bbp_write(rt2x00dev, 86, 0x00); > > + if (rt2x00_rt(rt2x00dev, RT5392)) > + rt2800_bbp_write(rt2x00dev, 88, 0x90); > + > rt2800_bbp_write(rt2x00dev, 91, 0x04); > > - if (rt2x00_rt(rt2x00dev, RT5390)) > + if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) > rt2800_bbp_write(rt2x00dev, 92, 0x02); > else > rt2800_bbp_write(rt2x00dev, 92, 0x00); > > + if (rt2x00_rt(rt2x00dev, RT5392)) { > + rt2800_bbp_write(rt2x00dev, 95, 0x9a); > + rt2800_bbp_write(rt2x00dev, 98, 0x12); > + } > + > if (rt2x00_rt_rev_gte(rt2x00dev, RT3070, REV_RT3070F) || > rt2x00_rt_rev_gte(rt2x00dev, RT3071, REV_RT3071E) || > rt2x00_rt_rev_gte(rt2x00dev, RT3090, REV_RT3090E) || > rt2x00_rt_rev_gte(rt2x00dev, RT3390, REV_RT3390E) || > rt2x00_rt(rt2x00dev, RT3572) || > rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392) || > rt2800_is_305x_soc(rt2x00dev)) > rt2800_bbp_write(rt2x00dev, 103, 0xc0); > else > rt2800_bbp_write(rt2x00dev, 103, 0x00); > > - if (rt2x00_rt(rt2x00dev, RT5390)) > + if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) > rt2800_bbp_write(rt2x00dev, 104, 0x92); > > if (rt2800_is_305x_soc(rt2x00dev)) > rt2800_bbp_write(rt2x00dev, 105, 0x01); > - else if (rt2x00_rt(rt2x00dev, RT5390)) > + else if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) > rt2800_bbp_write(rt2x00dev, 105, 0x3c); > else > rt2800_bbp_write(rt2x00dev, 105, 0x05); > > if (rt2x00_rt(rt2x00dev, RT5390)) > rt2800_bbp_write(rt2x00dev, 106, 0x03); > + else if (rt2x00_rt(rt2x00dev, RT5392)) > + rt2800_bbp_write(rt2x00dev, 106, 0x12); > else > rt2800_bbp_write(rt2x00dev, 106, 0x35); > > - if (rt2x00_rt(rt2x00dev, RT5390)) > + if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) > rt2800_bbp_write(rt2x00dev, 128, 0x12); > > + if (rt2x00_rt(rt2x00dev, RT5392)) { > + rt2800_bbp_write(rt2x00dev, 134, 0xd0); > + rt2800_bbp_write(rt2x00dev, 135, 0xf6); > + } > + > if (rt2x00_rt(rt2x00dev, RT3071) || > rt2x00_rt(rt2x00dev, RT3090) || > rt2x00_rt(rt2x00dev, RT3390) || > rt2x00_rt(rt2x00dev, RT3572) || > - rt2x00_rt(rt2x00dev, RT5390)) { > + rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) { > rt2800_bbp_read(rt2x00dev, 138, &value); > > rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, > &eeprom); @@ -3132,7 +3167,8 @@ static int rt2800_init_bbp(struct > rt2x00_dev *rt2x00dev) > rt2800_bbp_write(rt2x00dev, 138, value); > } > > - if (rt2x00_rt(rt2x00dev, RT5390)) { > + if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) { > int ant, div_mode; > > rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, > &eeprom); @@ -3258,13 +3294,15 @@ static int rt2800_init_rfcsr(struct > rt2x00_dev *rt2x00dev) > !rt2x00_rt(rt2x00dev, RT3390) && > !rt2x00_rt(rt2x00dev, RT3572) && > !rt2x00_rt(rt2x00dev, RT5390) && > + !rt2x00_rt(rt2x00dev, RT5392) && > !rt2800_is_305x_soc(rt2x00dev)) > return 0; > > /* > * Init RF calibration. > */ > - if (rt2x00_rt(rt2x00dev, RT5390)) { > + if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) { > rt2800_rfcsr_read(rt2x00dev, 2, &rfcsr); > rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_EN, 1); > rt2800_rfcsr_write(rt2x00dev, 2, rfcsr); @@ -3482,6 > +3520,66 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) > rt2800_rfcsr_write(rt2x00dev, 61, 0xdd); > rt2800_rfcsr_write(rt2x00dev, 62, 0x00); > rt2800_rfcsr_write(rt2x00dev, 63, 0x00); > + } else if (rt2x00_rt(rt2x00dev, RT5392)) { > + rt2800_rfcsr_write(rt2x00dev, 1, 0x17); > + rt2800_rfcsr_write(rt2x00dev, 2, 0x80); > + rt2800_rfcsr_write(rt2x00dev, 3, 0x88); > + rt2800_rfcsr_write(rt2x00dev, 5, 0x10); > + rt2800_rfcsr_write(rt2x00dev, 6, 0xe0); > + rt2800_rfcsr_write(rt2x00dev, 7, 0x00); > + rt2800_rfcsr_write(rt2x00dev, 10, 0x53); > + rt2800_rfcsr_write(rt2x00dev, 11, 0x4a); > + rt2800_rfcsr_write(rt2x00dev, 12, 0x46); > + rt2800_rfcsr_write(rt2x00dev, 13, 0x9f); > + rt2800_rfcsr_write(rt2x00dev, 14, 0x00); > + rt2800_rfcsr_write(rt2x00dev, 15, 0x00); > + rt2800_rfcsr_write(rt2x00dev, 16, 0x00); > + rt2800_rfcsr_write(rt2x00dev, 18, 0x03); > + rt2800_rfcsr_write(rt2x00dev, 19, 0x4d); > + rt2800_rfcsr_write(rt2x00dev, 20, 0x00); > + rt2800_rfcsr_write(rt2x00dev, 21, 0x8d); > + rt2800_rfcsr_write(rt2x00dev, 22, 0x20); > + rt2800_rfcsr_write(rt2x00dev, 23, 0x0b); > + rt2800_rfcsr_write(rt2x00dev, 24, 0x44); > + rt2800_rfcsr_write(rt2x00dev, 25, 0x80); > + rt2800_rfcsr_write(rt2x00dev, 26, 0x82); > + rt2800_rfcsr_write(rt2x00dev, 27, 0x09); > + rt2800_rfcsr_write(rt2x00dev, 28, 0x00); > + rt2800_rfcsr_write(rt2x00dev, 29, 0x10); > + rt2800_rfcsr_write(rt2x00dev, 30, 0x10); > + rt2800_rfcsr_write(rt2x00dev, 31, 0x80); > + rt2800_rfcsr_write(rt2x00dev, 32, 0x20); > + rt2800_rfcsr_write(rt2x00dev, 33, 0xC0); > + rt2800_rfcsr_write(rt2x00dev, 34, 0x07); > + rt2800_rfcsr_write(rt2x00dev, 35, 0x12); > + rt2800_rfcsr_write(rt2x00dev, 36, 0x00); > + rt2800_rfcsr_write(rt2x00dev, 37, 0x08); > + rt2800_rfcsr_write(rt2x00dev, 38, 0x89); > + rt2800_rfcsr_write(rt2x00dev, 39, 0x1b); > + rt2800_rfcsr_write(rt2x00dev, 40, 0x0f); > + rt2800_rfcsr_write(rt2x00dev, 41, 0xbb); > + rt2800_rfcsr_write(rt2x00dev, 42, 0xd5); > + rt2800_rfcsr_write(rt2x00dev, 43, 0x9b); > + rt2800_rfcsr_write(rt2x00dev, 44, 0x0e); > + rt2800_rfcsr_write(rt2x00dev, 45, 0xa2); > + rt2800_rfcsr_write(rt2x00dev, 46, 0x73); > + rt2800_rfcsr_write(rt2x00dev, 47, 0x0c); > + rt2800_rfcsr_write(rt2x00dev, 48, 0x10); > + rt2800_rfcsr_write(rt2x00dev, 49, 0x94); > + rt2800_rfcsr_write(rt2x00dev, 50, 0x94); > + rt2800_rfcsr_write(rt2x00dev, 51, 0x3a); > + rt2800_rfcsr_write(rt2x00dev, 52, 0x48); > + rt2800_rfcsr_write(rt2x00dev, 53, 0x44); > + rt2800_rfcsr_write(rt2x00dev, 54, 0x38); > + rt2800_rfcsr_write(rt2x00dev, 55, 0x43); > + rt2800_rfcsr_write(rt2x00dev, 56, 0xa1); > + rt2800_rfcsr_write(rt2x00dev, 57, 0x00); > + rt2800_rfcsr_write(rt2x00dev, 58, 0x39); > + rt2800_rfcsr_write(rt2x00dev, 59, 0x07); > + rt2800_rfcsr_write(rt2x00dev, 60, 0x45); > + rt2800_rfcsr_write(rt2x00dev, 61, 0x91); > + rt2800_rfcsr_write(rt2x00dev, 62, 0x39); > + rt2800_rfcsr_write(rt2x00dev, 63, 0x07); > } > > if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F)) { @@ > -3549,7 +3647,8 @@ static int rt2800_init_rfcsr(struct rt2x00_dev > *rt2x00dev) > rt2800_init_rx_filter(rt2x00dev, true, 0x27, > 0x15); > } > > - if (!rt2x00_rt(rt2x00dev, RT5390)) { > + if (!rt2x00_rt(rt2x00dev, RT5390) && > + !rt2x00_rt(rt2x00dev, RT5392)) { > /* > * Set back to initial state > */ > @@ -3577,7 +3676,8 @@ static int rt2800_init_rfcsr(struct rt2x00_dev > *rt2x00dev) > rt2x00_set_field32(®, OPT_14_CSR_BIT0, 1); > rt2800_register_write(rt2x00dev, OPT_14_CSR, reg); > > - if (!rt2x00_rt(rt2x00dev, RT5390)) { > + if (!rt2x00_rt(rt2x00dev, RT5390) && > + !rt2x00_rt(rt2x00dev, RT5392)) { > rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr); > rt2x00_set_field8(&rfcsr, RFCSR17_TX_LO1_EN, 0); > if (rt2x00_rt(rt2x00dev, RT3070) || @@ -3645,7 +3745,8 > @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) > rt2800_rfcsr_write(rt2x00dev, 27, rfcsr); > } > > - if (rt2x00_rt(rt2x00dev, RT5390)) { > + if (rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392)) { > rt2800_rfcsr_read(rt2x00dev, 38, &rfcsr); > rt2x00_set_field8(&rfcsr, RFCSR38_RX_LO1_EN, 0); > rt2800_rfcsr_write(rt2x00dev, 38, rfcsr); @@ -3929,7 > +4030,8 @@ int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) > * RT53xx: defined in "EEPROM_CHIP_ID" field > */ > rt2800_register_read(rt2x00dev, MAC_CSR0, ®); > - if (rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT5390) > + if (rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT5390 || > + rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT5392) > rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &value); > else > value = rt2x00_get_field16(eeprom, > EEPROM_NIC_CONF0_RF_TYPE); @@ -3947,6 +4049,7 @@ int > rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) > case RT3390: > case RT3572: > case RT5390: > + case RT5392: > break; > default: > ERROR(rt2x00dev, "Invalid RT chipset detected.\n"); @@ > -3965,6 +4068,7 @@ int rt2800_init_eeprom(struct rt2x00_dev > *rt2x00dev) > case RF3052: > case RF3320: > case RF5370: > + case RF5372: > case RF5390: > break; > default: > @@ -4271,6 +4375,7 @@ int rt2800_probe_hw_mode(struct rt2x00_dev > *rt2x00dev) > rt2x00_rf(rt2x00dev, RF3022) || > rt2x00_rf(rt2x00dev, RF3320) || > rt2x00_rf(rt2x00dev, RF5370) || > + rt2x00_rf(rt2x00dev, RF5372) || > rt2x00_rf(rt2x00dev, RF5390)) { > spec->num_channels = 14; > spec->channels = rf_vals_3x; diff --git > a/drivers/net/wireless/rt2x00/rt2800pci.c > b/drivers/net/wireless/rt2x00/rt2800pci.c > index 837b460..bf0f83c 100644 > --- a/drivers/net/wireless/rt2x00/rt2800pci.c > +++ b/drivers/net/wireless/rt2x00/rt2800pci.c > @@ -480,7 +480,8 @@ static int rt2800pci_init_registers(struct > rt2x00_dev *rt2x00dev) > > if (rt2x00_is_pcie(rt2x00dev) && > (rt2x00_rt(rt2x00dev, RT3572) || > - rt2x00_rt(rt2x00dev, RT5390))) { > + rt2x00_rt(rt2x00dev, RT5390) || > + rt2x00_rt(rt2x00dev, RT5392))) { > rt2x00pci_register_read(rt2x00dev, AUX_CTRL, ®); > rt2x00_set_field32(®, AUX_CTRL_FORCE_PCIE_CLK, 1); > rt2x00_set_field32(®, AUX_CTRL_WAKE_PCIE_EN, 1); > diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c > b/drivers/net/wireless/rt2x00/rt2800usb.c > index 7f21005..6565113 100644 > --- a/drivers/net/wireless/rt2x00/rt2800usb.c > +++ b/drivers/net/wireless/rt2x00/rt2800usb.c > @@ -1101,12 +1101,26 @@ static struct usb_device_id > rt2800usb_device_table[] = { > { USB_DEVICE(0x5a57, 0x0284) }, > #endif > #ifdef CONFIG_RT2800USB_RT53XX > + /* Alpha */ > + { USB_DEVICE(0x2001, 0x3c15) }, > + { USB_DEVICE(0x2001, 0x3c19) }, > + /* Arcadyan */ > + { USB_DEVICE(0x043e, 0x7a12) }, > /* Azurewave */ > { USB_DEVICE(0x13d3, 0x3329) }, > { USB_DEVICE(0x13d3, 0x3365) }, > + /* LG innotek */ > + { USB_DEVICE(0x043e, 0x7a22) }, > + /* Panasonic */ > + { USB_DEVICE(0x04da, 0x1801) }, > + { USB_DEVICE(0x04da, 0x1800) }, > + /* Philips */ > + { USB_DEVICE(0x0471, 0x2104) }, > /* Ralink */ > { USB_DEVICE(0x148f, 0x5370) }, > { USB_DEVICE(0x148f, 0x5372) }, > + /* Unknown */ > + { USB_DEVICE(0x04da, 0x23f6) }, > #endif > #ifdef CONFIG_RT2800USB_UNKNOWN > /* > diff --git a/drivers/net/wireless/rt2x00/rt2x00.h > b/drivers/net/wireless/rt2x00/rt2x00.h > index b03b22c..bf743cd 100644 > --- a/drivers/net/wireless/rt2x00/rt2x00.h > +++ b/drivers/net/wireless/rt2x00/rt2x00.h > @@ -192,6 +192,7 @@ struct rt2x00_chip { > #define RT3593 0x3593 > #define RT3883 0x3883 /* WSOC */ > #define RT5390 0x5390 /* 2.4GHz */ > +#define RT5392 0x5392 /* 2.4GHz */ > > u16 rf; > u16 rev; > -- > 1.7.6.5 > > -- > To unsubscribe from this list: send the line "unsubscribe > linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html ************* Email Confidentiality Notice ******************** The information contained in this e-mail message (including any attachments) may be confidential, proprietary, privileged, or otherwise exempt from disclosure under applicable laws. It is intended to be conveyed only to the designated recipient(s). Any use, dissemination, distribution, printing, retaining or copying of this e-mail (including its attachments) by unintended recipient(s) is strictly prohibited and may be unlawful. If you are not an intended recipient of this e-mail, or believe that you have received this e-mail in error, please notify the sender immediately (by replying to this e-mail), delete any and all copies of this e-mail (including any attachments) from your system, and do not disclose the content of this e-mail to any other person. Thank you!��.n��������+%������w��{.n�����{���zW����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f