[PATCH] zd1211rw: Reject AL2230S devices

zd1211rw currently detects AL2230S-based devices as AL2230, and hence
programs the RF incorrectly. Transmit silently fails on this
misconfiguration.

After this patch, AL2230S devices are rejected with an error message, to
avoid any confusion with an apparent driver bug.

Signed-off-by: Daniel Drake <dsd@gentoo.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

authored by Daniel Drake and committed by John W. Linville ae6ead46 a21bd69e

+8 -1
+1
drivers/net/wireless/zd1211rw/zd_chip.c
··· 337 chip->patch_cr157 = (value >> 13) & 0x1; 338 chip->patch_6m_band_edge = (value >> 21) & 0x1; 339 chip->new_phy_layout = (value >> 31) & 0x1; 340 chip->link_led = ((value >> 4) & 1) ? LED1 : LED2; 341 chip->supports_tx_led = 1; 342 if (value & (1 << 24)) { /* LED scenario */
··· 337 chip->patch_cr157 = (value >> 13) & 0x1; 338 chip->patch_6m_band_edge = (value >> 21) & 0x1; 339 chip->new_phy_layout = (value >> 31) & 0x1; 340 + chip->al2230s_bit = (value >> 7) & 0x1; 341 chip->link_led = ((value >> 4) & 1) ? LED1 : LED2; 342 chip->supports_tx_led = 1; 343 if (value & (1 << 24)) { /* LED scenario */
+1 -1
drivers/net/wireless/zd1211rw/zd_chip.h
··· 711 u16 link_led; 712 unsigned int pa_type:4, 713 patch_cck_gain:1, patch_cr157:1, patch_6m_band_edge:1, 714 - new_phy_layout:1, 715 is_zd1211b:1, supports_tx_led:1; 716 }; 717
··· 711 u16 link_led; 712 unsigned int pa_type:4, 713 patch_cck_gain:1, patch_cr157:1, patch_6m_band_edge:1, 714 + new_phy_layout:1, al2230s_bit:1, 715 is_zd1211b:1, supports_tx_led:1; 716 }; 717
+6
drivers/net/wireless/zd1211rw/zd_rf_al2230.c
··· 358 { 359 struct zd_chip *chip = zd_rf_to_chip(rf); 360 361 rf->switch_radio_off = al2230_switch_radio_off; 362 if (chip->is_zd1211b) { 363 rf->init_hw = zd1211b_al2230_init_hw;
··· 358 { 359 struct zd_chip *chip = zd_rf_to_chip(rf); 360 361 + if (chip->al2230s_bit) { 362 + dev_err(zd_chip_dev(chip), "AL2230S devices are not yet " 363 + "supported by this driver.\n"); 364 + return -ENODEV; 365 + } 366 + 367 rf->switch_radio_off = al2230_switch_radio_off; 368 if (chip->is_zd1211b) { 369 rf->init_hw = zd1211b_al2230_init_hw;