wimax/i2400m: Make boot retries a BUS-specific parameter
authorDirk Brandewie <dirk.j.brandewie@intel.com>
Thu, 13 Aug 2009 20:48:29 +0000 (13:48 -0700)
committerInaky Perez-Gonzalez <inaky@linux.intel.com>
Mon, 19 Oct 2009 06:55:40 +0000 (15:55 +0900)
In i2400m-based devices, the driver's bootloader will retry to load
the firmware when things go wrong. The driver currently has a constant
(I2400M_BOOT_RETRIES) which governs the max number of tries.

However, different SKUs of the same hardware may admit or require
different numbers of retries due to it's particulars, so it is made a
BUS specific parameter and different values are assigned for 5x50
devices versus the 3200 ones.

Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
Signed-off-by: Cindy H Kao <cindy.h.kao@intel.com>
Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
drivers/net/wimax/i2400m/fw.c
drivers/net/wimax/i2400m/i2400m-sdio.h
drivers/net/wimax/i2400m/i2400m-usb.h
drivers/net/wimax/i2400m/i2400m.h
drivers/net/wimax/i2400m/sdio.c
drivers/net/wimax/i2400m/usb.c

index e81750e54452b5d7b4384fb20c15fcead8e17332..55bd69e913b97ff6a3bf458361d71463548bbc38 100644 (file)
@@ -602,7 +602,7 @@ int i2400m_bootrom_init(struct i2400m *i2400m, enum i2400m_bri flags)
        struct device *dev = i2400m_dev(i2400m);
        struct i2400m_bootrom_header *cmd;
        struct i2400m_bootrom_header ack;
-       int count = I2400M_BOOT_RETRIES;
+       int count = i2400m->bus_bm_retries;
        int ack_timeout_cnt = 1;
 
        BUILD_BUG_ON(sizeof(*cmd) != sizeof(i2400m_NBOOT_BARKER));
index 9c4e3189f7b5c48feb4cf4ac564141febe6b18c0..66884eb59b265c81175809a8f0ddaf7780c6f518 100644 (file)
@@ -67,6 +67,7 @@
 
 /* Host-Device interface for SDIO */
 enum {
+       I2400M_SDIO_BOOT_RETRIES = 3,
        I2400MS_BLK_SIZE = 256,
        I2400MS_PL_SIZE_MAX = 0x3E00,
 
index 6f76558b170fd197479c6b6a487e13ce3512cff7..79c37534c200e79cdbba5dd9d0298408a22cecdb 100644 (file)
@@ -137,6 +137,7 @@ static inline int edc_inc(struct edc *edc, u16 max_err, u16 timeframe)
 
 /* Host-Device interface for USB */
 enum {
+       I2400M_USB_BOOT_RETRIES = 3,
        I2400MU_MAX_NOTIFICATION_LEN = 256,
        I2400MU_BLK_SIZE = 16,
        I2400MU_PL_SIZE_MAX = 0x3EFF,
index a6e59f1c881dcc1dd90f2da32d5d236986229d23..73b4e6a15135dccd51f54a7ef2177aa1d9e2f493 100644 (file)
 
 /* Misc constants */
 enum {
-       /* Firmware uploading */
-       I2400M_BOOT_RETRIES = 3,
-       I3200_BOOT_RETRIES = 3,
        /* Size of the Boot Mode Command buffer */
        I2400M_BM_CMD_BUF_SIZE = 16 * 1024,
        I2400M_BM_ACK_BUF_SIZE = 256,
index a68232aa29151ae174fa6170a739d8ae944cb068..1429608164b081be45c34d3f66838f6da924411f 100644 (file)
@@ -430,7 +430,7 @@ int i2400ms_probe(struct sdio_func *func,
        i2400m->bus_reset = i2400ms_bus_reset;
        /* The iwmc3200-wimax sometimes requires the driver to try
         * hard when we paint it into a corner. */
-       i2400m->bus_bm_retries = I3200_BOOT_RETRIES;
+       i2400m->bus_bm_retries = I2400M_SDIO_BOOT_RETRIES;
        i2400m->bus_bm_cmd_send = i2400ms_bus_bm_cmd_send;
        i2400m->bus_bm_wait_for_ack = i2400ms_bus_bm_wait_for_ack;
        i2400m->bus_fw_names = i2400ms_bus_fw_names;
index 49d7554ad7071fd14219864989376e86cccab598..8f7b16a6bf3c2b2381b9dcf34ac623bf55f41fc6 100644 (file)
@@ -406,7 +406,7 @@ int i2400mu_probe(struct usb_interface *iface,
        i2400m->bus_dev_stop = i2400mu_bus_dev_stop;
        i2400m->bus_tx_kick = i2400mu_bus_tx_kick;
        i2400m->bus_reset = i2400mu_bus_reset;
-       i2400m->bus_bm_retries = I2400M_BOOT_RETRIES;
+       i2400m->bus_bm_retries = I2400M_USB_BOOT_RETRIES;
        i2400m->bus_bm_cmd_send = i2400mu_bus_bm_cmd_send;
        i2400m->bus_bm_wait_for_ack = i2400mu_bus_bm_wait_for_ack;
        i2400m->bus_fw_names = i2400mu_bus_fw_names;