diff options
author | Dirk Brandewie <dirk.j.brandewie@intel.com> | 2009-08-12 14:29:46 -0400 |
---|---|---|
committer | Inaky Perez-Gonzalez <inaky@linux.intel.com> | 2009-10-19 02:55:59 -0400 |
commit | 7329012e673231dee9a21567cfb9881f5ea462ba (patch) | |
tree | 676f665bf8ca7f52923ed388db109ad2807c305c | |
parent | f8fc3295570115267ce1ce901f362d13d194aefc (diff) |
wimax/i6x50: add Intel WiFi/WiMAX Link 6050 Series support
Add support for the WiMAX device in the Intel WiFi/WiMAX Link 6050
Series; this involves:
- adding the device ID to bind to and an endpoint mapping for the
driver to use.
- at probe() time, some things are set depending on the device id:
+ the list of firmware names to try
+ mapping of endpoints
Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
-rw-r--r-- | drivers/net/wimax/i2400m/fw.c | 3 | ||||
-rw-r--r-- | drivers/net/wimax/i2400m/i2400m-usb.h | 3 | ||||
-rw-r--r-- | drivers/net/wimax/i2400m/usb.c | 26 | ||||
-rw-r--r-- | include/linux/wimax/i2400m.h | 1 |
4 files changed, 26 insertions, 7 deletions
diff --git a/drivers/net/wimax/i2400m/fw.c b/drivers/net/wimax/i2400m/fw.c index 84a39c30c3d3..5719f4a4080f 100644 --- a/drivers/net/wimax/i2400m/fw.c +++ b/drivers/net/wimax/i2400m/fw.c | |||
@@ -277,6 +277,9 @@ int i2400m_barker_db_known_barkers(void) | |||
277 | result = i2400m_barker_db_add(I2400M_SBOOT_BARKER); | 277 | result = i2400m_barker_db_add(I2400M_SBOOT_BARKER); |
278 | if (result < 0) | 278 | if (result < 0) |
279 | goto error_add; | 279 | goto error_add; |
280 | result = i2400m_barker_db_add(I2400M_SBOOT_BARKER_6050); | ||
281 | if (result < 0) | ||
282 | goto error_add; | ||
280 | error_add: | 283 | error_add: |
281 | return result; | 284 | return result; |
282 | } | 285 | } |
diff --git a/drivers/net/wimax/i2400m/i2400m-usb.h b/drivers/net/wimax/i2400m/i2400m-usb.h index f73a067e0668..5cc0f279417e 100644 --- a/drivers/net/wimax/i2400m/i2400m-usb.h +++ b/drivers/net/wimax/i2400m/i2400m-usb.h | |||
@@ -148,6 +148,9 @@ enum { | |||
148 | I2400MU_MAX_NOTIFICATION_LEN = 256, | 148 | I2400MU_MAX_NOTIFICATION_LEN = 256, |
149 | I2400MU_BLK_SIZE = 16, | 149 | I2400MU_BLK_SIZE = 16, |
150 | I2400MU_PL_SIZE_MAX = 0x3EFF, | 150 | I2400MU_PL_SIZE_MAX = 0x3EFF, |
151 | |||
152 | /* Device IDs */ | ||
153 | USB_DEVICE_ID_I6050 = 0x0186, | ||
151 | }; | 154 | }; |
152 | 155 | ||
153 | 156 | ||
diff --git a/drivers/net/wimax/i2400m/usb.c b/drivers/net/wimax/i2400m/usb.c index 063422290a43..77d08d928274 100644 --- a/drivers/net/wimax/i2400m/usb.c +++ b/drivers/net/wimax/i2400m/usb.c | |||
@@ -80,11 +80,16 @@ MODULE_PARM_DESC(debug, | |||
80 | "initial debug value to set."); | 80 | "initial debug value to set."); |
81 | 81 | ||
82 | /* Our firmware file name */ | 82 | /* Our firmware file name */ |
83 | static const char *i2400mu_bus_fw_names[] = { | 83 | static const char *i2400mu_bus_fw_names_5x50[] = { |
84 | #define I2400MU_FW_FILE_NAME_v1_4 "i2400m-fw-usb-1.4.sbcf" | 84 | #define I2400MU_FW_FILE_NAME_v1_4 "i2400m-fw-usb-1.4.sbcf" |
85 | I2400MU_FW_FILE_NAME_v1_4, | 85 | I2400MU_FW_FILE_NAME_v1_4, |
86 | #define I2400MU_FW_FILE_NAME_v1_3 "i2400m-fw-usb-1.3.sbcf" | 86 | NULL, |
87 | I2400MU_FW_FILE_NAME_v1_3, | 87 | }; |
88 | |||
89 | |||
90 | static const char *i2400mu_bus_fw_names_6050[] = { | ||
91 | #define I6050U_FW_FILE_NAME_v1_5 "i6050-fw-usb-1.5.sbcf" | ||
92 | I6050U_FW_FILE_NAME_v1_5, | ||
88 | NULL, | 93 | NULL, |
89 | }; | 94 | }; |
90 | 95 | ||
@@ -418,10 +423,16 @@ int i2400mu_probe(struct usb_interface *iface, | |||
418 | i2400m->bus_bm_retries = I2400M_USB_BOOT_RETRIES; | 423 | i2400m->bus_bm_retries = I2400M_USB_BOOT_RETRIES; |
419 | i2400m->bus_bm_cmd_send = i2400mu_bus_bm_cmd_send; | 424 | i2400m->bus_bm_cmd_send = i2400mu_bus_bm_cmd_send; |
420 | i2400m->bus_bm_wait_for_ack = i2400mu_bus_bm_wait_for_ack; | 425 | i2400m->bus_bm_wait_for_ack = i2400mu_bus_bm_wait_for_ack; |
421 | i2400m->bus_fw_names = i2400mu_bus_fw_names; | ||
422 | i2400m->bus_bm_mac_addr_impaired = 0; | 426 | i2400m->bus_bm_mac_addr_impaired = 0; |
423 | 427 | ||
424 | { | 428 | if (id->idProduct == USB_DEVICE_ID_I6050) { |
429 | i2400m->bus_fw_names = i2400mu_bus_fw_names_6050; | ||
430 | i2400mu->endpoint_cfg.bulk_out = 0; | ||
431 | i2400mu->endpoint_cfg.notification = 3; | ||
432 | i2400mu->endpoint_cfg.reset_cold = 2; | ||
433 | i2400mu->endpoint_cfg.bulk_in = 1; | ||
434 | } else { | ||
435 | i2400m->bus_fw_names = i2400mu_bus_fw_names_5x50; | ||
425 | i2400mu->endpoint_cfg.bulk_out = 0; | 436 | i2400mu->endpoint_cfg.bulk_out = 0; |
426 | i2400mu->endpoint_cfg.notification = 1; | 437 | i2400mu->endpoint_cfg.notification = 1; |
427 | i2400mu->endpoint_cfg.reset_cold = 2; | 438 | i2400mu->endpoint_cfg.reset_cold = 2; |
@@ -614,6 +625,7 @@ out: | |||
614 | 625 | ||
615 | static | 626 | static |
616 | struct usb_device_id i2400mu_id_table[] = { | 627 | struct usb_device_id i2400mu_id_table[] = { |
628 | { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050) }, | ||
617 | { USB_DEVICE(0x8086, 0x0181) }, | 629 | { USB_DEVICE(0x8086, 0x0181) }, |
618 | { USB_DEVICE(0x8086, 0x1403) }, | 630 | { USB_DEVICE(0x8086, 0x1403) }, |
619 | { USB_DEVICE(0x8086, 0x1405) }, | 631 | { USB_DEVICE(0x8086, 0x1405) }, |
@@ -656,7 +668,7 @@ void __exit i2400mu_driver_exit(void) | |||
656 | module_exit(i2400mu_driver_exit); | 668 | module_exit(i2400mu_driver_exit); |
657 | 669 | ||
658 | MODULE_AUTHOR("Intel Corporation <linux-wimax@intel.com>"); | 670 | MODULE_AUTHOR("Intel Corporation <linux-wimax@intel.com>"); |
659 | MODULE_DESCRIPTION("Intel 2400M WiMAX networking for USB"); | 671 | MODULE_DESCRIPTION("Driver for USB based Intel Wireless WiMAX Connection 2400M " |
672 | "(5x50 & 6050)"); | ||
660 | MODULE_LICENSE("GPL"); | 673 | MODULE_LICENSE("GPL"); |
661 | MODULE_FIRMWARE(I2400MU_FW_FILE_NAME_v1_4); | 674 | MODULE_FIRMWARE(I2400MU_FW_FILE_NAME_v1_4); |
662 | MODULE_FIRMWARE(I2400MU_FW_FILE_NAME_v1_3); | ||
diff --git a/include/linux/wimax/i2400m.h b/include/linux/wimax/i2400m.h index fd5af05083cb..62d356153565 100644 --- a/include/linux/wimax/i2400m.h +++ b/include/linux/wimax/i2400m.h | |||
@@ -266,6 +266,7 @@ enum { | |||
266 | I2400M_WARM_RESET_BARKER = 0x50f750f7, | 266 | I2400M_WARM_RESET_BARKER = 0x50f750f7, |
267 | I2400M_NBOOT_BARKER = 0xdeadbeef, | 267 | I2400M_NBOOT_BARKER = 0xdeadbeef, |
268 | I2400M_SBOOT_BARKER = 0x0ff1c1a1, | 268 | I2400M_SBOOT_BARKER = 0x0ff1c1a1, |
269 | I2400M_SBOOT_BARKER_6050 = 0x80000001, | ||
269 | I2400M_ACK_BARKER = 0xfeedbabe, | 270 | I2400M_ACK_BARKER = 0xfeedbabe, |
270 | I2400M_D2H_MSG_BARKER = 0xbeefbabe, | 271 | I2400M_D2H_MSG_BARKER = 0xbeefbabe, |
271 | }; | 272 | }; |