diff options
author | Inaky Perez-Gonzalez <inaky@linux.intel.com> | 2009-06-03 04:13:14 -0400 |
---|---|---|
committer | Inaky Perez-Gonzalez <inaky@linux.intel.com> | 2009-06-11 06:30:23 -0400 |
commit | ecddfd5ed73c070413f07a5251c16c10e69f35a2 (patch) | |
tree | 4caaeedf3b8a49441d3656ffdd2ac8e8479991a2 /drivers/net/wimax/i2400m/i2400m.h | |
parent | b4013f91cdda10f3f15530914f3c7f39738b0b50 (diff) |
wimax/i2400m: Allow bus-specific driver to specify retry count
The code that sets up the i2400m (firmware load and general driver
setup after it) includes a couple of retry loops.
The SDIO device sometimes can get in more complicated corners than the
USB one (due to its interaction with other SDIO functions), that
require trying a few more times.
To solve that, without having a failing USB device taking longer to be
considered dead, allow the retry counts to be specified by the
bus-specific driver, which the general driver takes as a parameter.
Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Diffstat (limited to 'drivers/net/wimax/i2400m/i2400m.h')
-rw-r--r-- | drivers/net/wimax/i2400m/i2400m.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/wimax/i2400m/i2400m.h b/drivers/net/wimax/i2400m/i2400m.h index 8dba246e15bf..59cd78315498 100644 --- a/drivers/net/wimax/i2400m/i2400m.h +++ b/drivers/net/wimax/i2400m/i2400m.h | |||
@@ -150,6 +150,7 @@ | |||
150 | enum { | 150 | enum { |
151 | /* Firmware uploading */ | 151 | /* Firmware uploading */ |
152 | I2400M_BOOT_RETRIES = 3, | 152 | I2400M_BOOT_RETRIES = 3, |
153 | I3200_BOOT_RETRIES = 3, | ||
153 | /* Size of the Boot Mode Command buffer */ | 154 | /* Size of the Boot Mode Command buffer */ |
154 | I2400M_BM_CMD_BUF_SIZE = 16 * 1024, | 155 | I2400M_BM_CMD_BUF_SIZE = 16 * 1024, |
155 | I2400M_BM_ACK_BUF_SIZE = 256, | 156 | I2400M_BM_ACK_BUF_SIZE = 256, |
@@ -224,6 +225,17 @@ struct i2400m_roq; | |||
224 | * process, so it cannot rely on common infrastructure being laid | 225 | * process, so it cannot rely on common infrastructure being laid |
225 | * out. | 226 | * out. |
226 | * | 227 | * |
228 | * @bus_bm_retries: [fill] How many times shall a firmware upload / | ||
229 | * device initialization be retried? Different models of the same | ||
230 | * device might need different values, hence it is set by the | ||
231 | * bus-specific driver. Note this value is used in two places, | ||
232 | * i2400m_fw_dnload() and __i2400m_dev_start(); they won't become | ||
233 | * multiplicative (__i2400m_dev_start() calling N times | ||
234 | * i2400m_fw_dnload() and this trying N times to download the | ||
235 | * firmware), as if __i2400m_dev_start() only retries if the | ||
236 | * firmware crashed while initializing the device (not in a | ||
237 | * general case). | ||
238 | * | ||
227 | * @bus_bm_cmd_send: [fill] Function called to send a boot-mode | 239 | * @bus_bm_cmd_send: [fill] Function called to send a boot-mode |
228 | * command. Flags are defined in 'enum i2400m_bm_cmd_flags'. This | 240 | * command. Flags are defined in 'enum i2400m_bm_cmd_flags'. This |
229 | * is synchronous and has to return 0 if ok or < 0 errno code in | 241 | * is synchronous and has to return 0 if ok or < 0 errno code in |
@@ -399,6 +411,8 @@ struct i2400m { | |||
399 | 411 | ||
400 | size_t bus_tx_block_size; | 412 | size_t bus_tx_block_size; |
401 | size_t bus_pl_size_max; | 413 | size_t bus_pl_size_max; |
414 | unsigned bus_bm_retries; | ||
415 | |||
402 | int (*bus_dev_start)(struct i2400m *); | 416 | int (*bus_dev_start)(struct i2400m *); |
403 | void (*bus_dev_stop)(struct i2400m *); | 417 | void (*bus_dev_stop)(struct i2400m *); |
404 | void (*bus_tx_kick)(struct i2400m *); | 418 | void (*bus_tx_kick)(struct i2400m *); |