Commit c3fe667f authored by Wolfram Sang's avatar Wolfram Sang Committed by Greg Kroah-Hartman

staging: ks7010: remove custom firmware loader

FW_LOADER works fine, no need for a open coded fallback.
Signed-off-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 021873f6
...@@ -3,6 +3,7 @@ config KS7010 ...@@ -3,6 +3,7 @@ config KS7010
depends on MMC && WIRELESS depends on MMC && WIRELESS
select WIRELESS_EXT select WIRELESS_EXT
select WEXT_PRIV select WEXT_PRIV
select FW_LOADER
help help
This is a driver for KeyStream KS7010 based SDIO WIFI cards. It is This is a driver for KeyStream KS7010 based SDIO WIFI cards. It is
found on at least later Spectec SDW-821 (FCC-ID "S2Y-WLAN-11G-K" only, found on at least later Spectec SDW-821 (FCC-ID "S2Y-WLAN-11G-K" only,
......
...@@ -169,11 +169,7 @@ int rate_set_configuration(ks_wlan_private *priv, char *value) ...@@ -169,11 +169,7 @@ int rate_set_configuration(ks_wlan_private *priv, char *value)
return rc; return rc;
} }
#ifndef NO_FIRMWARE_CLASS
#include <linux/firmware.h> #include <linux/firmware.h>
#else
#define MAX_CONFIG_FILE_SIZE (1024*10)
#endif
int ks_wlan_read_config_file(ks_wlan_private *priv) int ks_wlan_read_config_file(ks_wlan_private *priv)
{ {
struct { struct {
...@@ -206,18 +202,9 @@ int ks_wlan_read_config_file(ks_wlan_private *priv) ...@@ -206,18 +202,9 @@ int ks_wlan_read_config_file(ks_wlan_private *priv)
{0,"",""}, {0,"",""},
}; };
#ifndef NO_FIRMWARE_CLASS
const struct firmware *fw_entry; const struct firmware *fw_entry;
struct device *dev = NULL; struct device *dev = NULL;
int retval; int retval;
#else
struct file *srcf;
int nr_read ;
int retval;
char *cfg_buf=NULL;
int orgfsuid, orgfsgid;
mm_segment_t orgfs;
#endif
char cfg_file[]=CFG_FILE; char cfg_file[]=CFG_FILE;
char *cur_p, *end_p; char *cur_p, *end_p;
char wk_buff[256], *wk_p; char wk_buff[256], *wk_p;
...@@ -267,7 +254,6 @@ int ks_wlan_read_config_file(ks_wlan_private *priv) ...@@ -267,7 +254,6 @@ int ks_wlan_read_config_file(ks_wlan_private *priv)
priv->reg.tx_rate = TX_RATE_FULL_AUTO; priv->reg.tx_rate = TX_RATE_FULL_AUTO;
priv->reg.rate_set.size = 12; priv->reg.rate_set.size = 12;
#ifndef NO_FIRMWARE_CLASS
dev = &priv->ks_wlan_hw.sdio_card->func->dev; dev = &priv->ks_wlan_hw.sdio_card->func->dev;
if((retval = request_firmware(&fw_entry, cfg_file, dev)) !=0 ){ if((retval = request_firmware(&fw_entry, cfg_file, dev)) !=0 ){
DPRINTK(1, "error request_firmware() file=%s ret=%d\n", cfg_file, retval); DPRINTK(1, "error request_firmware() file=%s ret=%d\n", cfg_file, retval);
...@@ -277,46 +263,6 @@ int ks_wlan_read_config_file(ks_wlan_private *priv) ...@@ -277,46 +263,6 @@ int ks_wlan_read_config_file(ks_wlan_private *priv)
DPRINTK(4, "success request_firmware() file=%s size=%d\n", cfg_file, fw_entry->size); DPRINTK(4, "success request_firmware() file=%s size=%d\n", cfg_file, fw_entry->size);
cur_p = fw_entry->data; cur_p = fw_entry->data;
end_p = cur_p + fw_entry->size; end_p = cur_p + fw_entry->size;
#else
orgfsuid=current->fsuid;
orgfsgid=current->fsgid;
orgfs=get_fs();
set_fs(KERNEL_DS);
srcf = filp_open(cfg_file, O_RDONLY, 0);
if (IS_ERR(srcf)) {
printk(KERN_ERR "error %ld opening %s\n", -PTR_ERR(srcf),cfg_file);
goto no_config_file;
}
if (!(srcf->f_op && srcf->f_op->read)) {
printk(KERN_ERR "%s does not have a read method\n", cfg_file);
goto no_config_file;
}
cfg_buf = (char *)kzalloc(MAX_CONFIG_FILE_SIZE, GFP_ATOMIC);
if (!cfg_buf) {
printk(KERN_ERR "%s does not read : out of memory \n", cfg_file);
goto no_config_file;
}
nr_read = srcf->f_op->read(srcf, (unsigned char *)cfg_buf, MAX_CONFIG_FILE_SIZE, &srcf->f_pos);
DPRINTK(1, "read retval=%d file=%s\n", nr_read, priv->reg.cfg_file);
retval=filp_close(srcf ,NULL);
if (retval)
DPRINTK(1, "error %d closing %s\n", -retval,priv->reg.cfg_file);
if (nr_read < 1) {
printk(KERN_ERR "%s does not read : file is empty num=%d\n", cfg_file, nr_read);
goto no_config_file;
}else if(nr_read > MAX_CONFIG_FILE_SIZE){
printk(KERN_ERR "%s does not read : file is too big \n", cfg_file);
goto no_config_file;
}
cur_p = cfg_buf;
end_p = cur_p + nr_read;
#endif
*end_p = '\0'; *end_p = '\0';
while (cur_p < end_p) { while (cur_p < end_p) {
...@@ -524,15 +470,7 @@ int ks_wlan_read_config_file(ks_wlan_private *priv) ...@@ -524,15 +470,7 @@ int ks_wlan_read_config_file(ks_wlan_private *priv)
} }
} }
#ifndef NO_FIRMWARE_CLASS
release_firmware(fw_entry); release_firmware(fw_entry);
#else
no_config_file:
kfree(cfg_buf);
set_fs(orgfs);
current->fsuid=orgfsuid;
current->fsgid=orgfsgid;
#endif
DPRINTK(3,"\n operation_mode = %d\n channel = %d\n ssid = %s\n tx_rate = %d\n \ DPRINTK(3,"\n operation_mode = %d\n channel = %d\n ssid = %s\n tx_rate = %d\n \
preamble = %d\n powermgt = %d\n scan_type = %d\n beacon_lost_count = %d\n rts = %d\n \ preamble = %d\n powermgt = %d\n scan_type = %d\n beacon_lost_count = %d\n rts = %d\n \
......
...@@ -56,10 +56,6 @@ static int ks7010_sdio_read( ks_wlan_private *priv, unsigned int address, ...@@ -56,10 +56,6 @@ static int ks7010_sdio_read( ks_wlan_private *priv, unsigned int address,
unsigned char *buffer, int length ); unsigned char *buffer, int length );
static int ks7010_sdio_write( ks_wlan_private *priv, unsigned int address, static int ks7010_sdio_write( ks_wlan_private *priv, unsigned int address,
unsigned char *buffer, int length ); unsigned char *buffer, int length );
#ifdef NO_FIRMWARE_CLASS
static char *romfile = ROM_FILE;
module_param(romfile, charp, S_IRUGO);
#endif
/* macro */ /* macro */
#define inc_txqhead(priv) \ #define inc_txqhead(priv) \
...@@ -723,23 +719,15 @@ static int ks7010_sdio_data_compare(ks_wlan_private *priv, u32 address, ...@@ -723,23 +719,15 @@ static int ks7010_sdio_data_compare(ks_wlan_private *priv, u32 address,
if(read_buf) kfree(read_buf); if(read_buf) kfree(read_buf);
return rc; return rc;
} }
#ifndef NO_FIRMWARE_CLASS
#include <linux/firmware.h> #include <linux/firmware.h>
#endif
static int ks79xx_upload_firmware(ks_wlan_private *priv, struct ks_sdio_card *card) static int ks79xx_upload_firmware(ks_wlan_private *priv, struct ks_sdio_card *card)
{ {
unsigned int size, offset, n = 0; unsigned int size, offset, n = 0;
unsigned char *rom_buf; unsigned char *rom_buf;
unsigned char rw_data =0; unsigned char rw_data =0;
int retval, rc=0; int retval, rc=0;
#ifndef NO_FIRMWARE_CLASS
int length; int length;
const struct firmware *fw_entry = NULL; const struct firmware *fw_entry = NULL;
#else
int orgfsuid, orgfsgid;
struct file *srcf;
mm_segment_t orgfs;
#endif
rom_buf = NULL; rom_buf = NULL;
...@@ -758,38 +746,16 @@ static int ks79xx_upload_firmware(ks_wlan_private *priv, struct ks_sdio_card *ca ...@@ -758,38 +746,16 @@ static int ks79xx_upload_firmware(ks_wlan_private *priv, struct ks_sdio_card *ca
goto error_out0; goto error_out0;
} }
#ifndef NO_FIRMWARE_CLASS
if(request_firmware(&fw_entry, priv->reg.rom_file, &priv->ks_wlan_hw.sdio_card->func->dev)!=0){ if(request_firmware(&fw_entry, priv->reg.rom_file, &priv->ks_wlan_hw.sdio_card->func->dev)!=0){
DPRINTK(1,"error request_firmware() file=%s\n", priv->reg.rom_file); DPRINTK(1,"error request_firmware() file=%s\n", priv->reg.rom_file);
return 1; return 1;
} }
DPRINTK(4,"success request_firmware() file=%s size=%d\n", priv->reg.rom_file, fw_entry->size); DPRINTK(4,"success request_firmware() file=%s size=%d\n", priv->reg.rom_file, fw_entry->size);
length = fw_entry->size; length = fw_entry->size;
#else
orgfsuid=current->fsuid;
orgfsgid=current->fsgid;
current->fsuid=current->fsgid=0;
orgfs=get_fs();
set_fs(KERNEL_DS);
srcf = filp_open(romfile, O_RDONLY, 0);
if (IS_ERR(srcf)) {
DPRINTK(1, "error %ld opening %s\n", -PTR_ERR(srcf),romfile);
rc = 1;
goto error_out1;
}
if (!(srcf->f_op && srcf->f_op->read)) {
DPRINTK(1, "%s does not have a read method\n", romfile);
rc = 2;
goto error_out2;
}
#endif
/* Load Program */ /* Load Program */
n = 0; n = 0;
do { do {
#ifndef NO_FIRMWARE_CLASS
if(length >= ROM_BUFF_SIZE){ if(length >= ROM_BUFF_SIZE){
size = ROM_BUFF_SIZE; size = ROM_BUFF_SIZE;
length = length - ROM_BUFF_SIZE; length = length - ROM_BUFF_SIZE;
...@@ -801,16 +767,6 @@ static int ks79xx_upload_firmware(ks_wlan_private *priv, struct ks_sdio_card *ca ...@@ -801,16 +767,6 @@ static int ks79xx_upload_firmware(ks_wlan_private *priv, struct ks_sdio_card *ca
DPRINTK(4, "size = %d\n",size); DPRINTK(4, "size = %d\n",size);
if(size == 0) break; if(size == 0) break;
memcpy(rom_buf,fw_entry->data+n,size); memcpy(rom_buf,fw_entry->data+n,size);
#else
/* The object must have a read method */
size = srcf->f_op->read(srcf, rom_buf, ROM_BUFF_SIZE, &srcf->f_pos);
if (size < 0) {
DPRINTK(1, "Read %s error %d\n", priv->reg.rom_file, -retval);
rc = 5;
goto error_out2;
}
else if (size == 0) break;
#endif
/* Update write index */ /* Update write index */
offset = n; offset = n;
retval = ks7010_sdio_update_index(priv, KS7010_IRAM_ADDRESS+offset); retval = ks7010_sdio_update_index(priv, KS7010_IRAM_ADDRESS+offset);
...@@ -852,20 +808,8 @@ static int ks79xx_upload_firmware(ks_wlan_private *priv, struct ks_sdio_card *ca ...@@ -852,20 +808,8 @@ static int ks79xx_upload_firmware(ks_wlan_private *priv, struct ks_sdio_card *ca
rc = 0; rc = 0;
#ifdef NO_FIRMWARE_CLASS
error_out2:
retval=filp_close(srcf ,NULL);
if (retval)
DPRINTK(1, "error %d closing %s\n", -retval,priv->reg.rom_file);
error_out1:
set_fs(orgfs);
current->fsuid=orgfsuid;
current->fsgid=orgfsgid;
#else
error_out1: error_out1:
release_firmware(fw_entry); release_firmware(fw_entry);
#endif
error_out0: error_out0:
sdio_release_host(card->func); sdio_release_host(card->func);
if(rom_buf) if(rom_buf)
......
...@@ -153,13 +153,8 @@ struct rx_device{ ...@@ -153,13 +153,8 @@ struct rx_device{
unsigned int qtail; /* rx buffer queue last pointer */ unsigned int qtail; /* rx buffer queue last pointer */
spinlock_t rx_dev_lock; spinlock_t rx_dev_lock;
}; };
#ifndef NO_FIRMWARE_CLASS
#define ROM_FILE "ks7010sd.rom" #define ROM_FILE "ks7010sd.rom"
#define CFG_FILE "ks79xx.cfg" #define CFG_FILE "ks79xx.cfg"
#else
#define ROM_FILE "/lib/firmware/ks7010sd.rom"
#define CFG_FILE "/lib/firmware/ks79xx.cfg"
#endif
#define KS_WLAN_DRIVER_VERSION_INFO "ks7010 sdio linux 007" #define KS_WLAN_DRIVER_VERSION_INFO "ks7010 sdio linux 007"
#endif /* _KS7010_SDIO_H */ #endif /* _KS7010_SDIO_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment