diff options
| author | Javier Blanco de Torres (Neurowork) <jblanco@neurowork.net> | 2010-04-12 03:21:13 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-05-20 16:21:38 -0400 |
| commit | 4545f7eea31f3f8486b7b925d67abe2e4e47a75a (patch) | |
| tree | 86112754d4b3e1b1dab1c761429c01526b453aac /drivers/usb | |
| parent | 94a82487e6e57a102636a5326c930619f641038c (diff) | |
USB: ueagle: fix Coding Styles
Fixed coding styles in the ueagle usb driver.
Signed-off-by: Javier Blanco de Torres <jblanco@neurowork.net>
Signed-off-by: Alejandro Sánchez Acosta <asanchez@neurowork.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
| -rw-r--r-- | drivers/usb/atm/ueagle-atm.c | 347 |
1 files changed, 207 insertions, 140 deletions
diff --git a/drivers/usb/atm/ueagle-atm.c b/drivers/usb/atm/ueagle-atm.c index 25f01b536f67..e213d3fa4920 100644 --- a/drivers/usb/atm/ueagle-atm.c +++ b/drivers/usb/atm/ueagle-atm.c | |||
| @@ -94,19 +94,19 @@ | |||
| 94 | } while (0) | 94 | } while (0) |
| 95 | 95 | ||
| 96 | #define uea_enters(usb_dev) \ | 96 | #define uea_enters(usb_dev) \ |
| 97 | uea_vdbg(usb_dev, "entering %s\n", __func__) | 97 | uea_vdbg(usb_dev, "entering %s\n" , __func__) |
| 98 | 98 | ||
| 99 | #define uea_leaves(usb_dev) \ | 99 | #define uea_leaves(usb_dev) \ |
| 100 | uea_vdbg(usb_dev, "leaving %s\n", __func__) | 100 | uea_vdbg(usb_dev, "leaving %s\n" , __func__) |
| 101 | 101 | ||
| 102 | #define uea_err(usb_dev, format,args...) \ | 102 | #define uea_err(usb_dev, format, args...) \ |
| 103 | dev_err(&(usb_dev)->dev ,"[UEAGLE-ATM] " format , ##args) | 103 | dev_err(&(usb_dev)->dev , "[UEAGLE-ATM] " format , ##args) |
| 104 | 104 | ||
| 105 | #define uea_warn(usb_dev, format,args...) \ | 105 | #define uea_warn(usb_dev, format, args...) \ |
| 106 | dev_warn(&(usb_dev)->dev ,"[Ueagle-atm] " format, ##args) | 106 | dev_warn(&(usb_dev)->dev , "[Ueagle-atm] " format, ##args) |
| 107 | 107 | ||
| 108 | #define uea_info(usb_dev, format,args...) \ | 108 | #define uea_info(usb_dev, format, args...) \ |
| 109 | dev_info(&(usb_dev)->dev ,"[ueagle-atm] " format, ##args) | 109 | dev_info(&(usb_dev)->dev , "[ueagle-atm] " format, ##args) |
| 110 | 110 | ||
| 111 | struct intr_pkt; | 111 | struct intr_pkt; |
| 112 | 112 | ||
| @@ -289,7 +289,7 @@ enum { | |||
| 289 | #define IS_ISDN(x) \ | 289 | #define IS_ISDN(x) \ |
| 290 | ((x)->annex & ANNEXB) | 290 | ((x)->annex & ANNEXB) |
| 291 | 291 | ||
| 292 | #define INS_TO_USBDEV(ins) ins->usb_dev | 292 | #define INS_TO_USBDEV(ins) (ins->usb_dev) |
| 293 | 293 | ||
| 294 | #define GET_STATUS(data) \ | 294 | #define GET_STATUS(data) \ |
| 295 | ((data >> 8) & 0xf) | 295 | ((data >> 8) & 0xf) |
| @@ -304,7 +304,7 @@ enum { | |||
| 304 | * The FW_GET_BYTE() macro is provided only for consistency. | 304 | * The FW_GET_BYTE() macro is provided only for consistency. |
| 305 | */ | 305 | */ |
| 306 | 306 | ||
| 307 | #define FW_GET_BYTE(p) *((__u8 *) (p)) | 307 | #define FW_GET_BYTE(p) (*((__u8 *) (p))) |
| 308 | 308 | ||
| 309 | #define FW_DIR "ueagle-atm/" | 309 | #define FW_DIR "ueagle-atm/" |
| 310 | #define UEA_FW_NAME_MAX 30 | 310 | #define UEA_FW_NAME_MAX 30 |
| @@ -315,7 +315,7 @@ enum { | |||
| 315 | 315 | ||
| 316 | #define ACK_TIMEOUT msecs_to_jiffies(3000) | 316 | #define ACK_TIMEOUT msecs_to_jiffies(3000) |
| 317 | 317 | ||
| 318 | #define UEA_INTR_IFACE_NO 0 | 318 | #define UEA_INTR_IFACE_NO 0 |
| 319 | #define UEA_US_IFACE_NO 1 | 319 | #define UEA_US_IFACE_NO 1 |
| 320 | #define UEA_DS_IFACE_NO 2 | 320 | #define UEA_DS_IFACE_NO 2 |
| 321 | 321 | ||
| @@ -326,9 +326,9 @@ enum { | |||
| 326 | #define UEA_INTR_PIPE 0x04 | 326 | #define UEA_INTR_PIPE 0x04 |
| 327 | #define UEA_ISO_DATA_PIPE 0x08 | 327 | #define UEA_ISO_DATA_PIPE 0x08 |
| 328 | 328 | ||
| 329 | #define UEA_E1_SET_BLOCK 0x0001 | 329 | #define UEA_E1_SET_BLOCK 0x0001 |
| 330 | #define UEA_E4_SET_BLOCK 0x002c | 330 | #define UEA_E4_SET_BLOCK 0x002c |
| 331 | #define UEA_SET_MODE 0x0003 | 331 | #define UEA_SET_MODE 0x0003 |
| 332 | #define UEA_SET_2183_DATA 0x0004 | 332 | #define UEA_SET_2183_DATA 0x0004 |
| 333 | #define UEA_SET_TIMEOUT 0x0011 | 333 | #define UEA_SET_TIMEOUT 0x0011 |
| 334 | 334 | ||
| @@ -366,7 +366,7 @@ struct l1_code { | |||
| 366 | u8 string_header[E4_L1_STRING_HEADER]; | 366 | u8 string_header[E4_L1_STRING_HEADER]; |
| 367 | u8 page_number_to_block_index[E4_MAX_PAGE_NUMBER]; | 367 | u8 page_number_to_block_index[E4_MAX_PAGE_NUMBER]; |
| 368 | struct block_index page_header[E4_NO_SWAPPAGE_HEADERS]; | 368 | struct block_index page_header[E4_NO_SWAPPAGE_HEADERS]; |
| 369 | u8 code [0]; | 369 | u8 code[0]; |
| 370 | } __attribute__ ((packed)); | 370 | } __attribute__ ((packed)); |
| 371 | 371 | ||
| 372 | /* structures describing a block within a DSP page */ | 372 | /* structures describing a block within a DSP page */ |
| @@ -428,7 +428,8 @@ struct block_info_e4 { | |||
| 428 | #define E4_MODEMREADY 0x1 | 428 | #define E4_MODEMREADY 0x1 |
| 429 | 429 | ||
| 430 | #define E1_MAKEFUNCTION(t, s) (((t) & 0xf) << 4 | ((s) & 0xf)) | 430 | #define E1_MAKEFUNCTION(t, s) (((t) & 0xf) << 4 | ((s) & 0xf)) |
| 431 | #define E4_MAKEFUNCTION(t, st, s) (((t) & 0xf) << 8 | ((st) & 0xf) << 4 | ((s) & 0xf)) | 431 | #define E4_MAKEFUNCTION(t, st, s) (((t) & 0xf) << 8 | \ |
| 432 | ((st) & 0xf) << 4 | ((s) & 0xf)) | ||
| 432 | 433 | ||
| 433 | #define E1_MAKESA(a, b, c, d) \ | 434 | #define E1_MAKESA(a, b, c, d) \ |
| 434 | (((c) & 0xff) << 24 | \ | 435 | (((c) & 0xff) << 24 | \ |
| @@ -473,7 +474,7 @@ struct cmv_e4 { | |||
| 473 | __be16 wFunction; | 474 | __be16 wFunction; |
| 474 | __be16 wOffset; | 475 | __be16 wOffset; |
| 475 | __be16 wAddress; | 476 | __be16 wAddress; |
| 476 | __be32 dwData [6]; | 477 | __be32 dwData[6]; |
| 477 | } __attribute__ ((packed)); | 478 | } __attribute__ ((packed)); |
| 478 | 479 | ||
| 479 | /* structures representing swap information */ | 480 | /* structures representing swap information */ |
| @@ -534,11 +535,13 @@ struct intr_pkt { | |||
| 534 | 535 | ||
| 535 | static struct usb_driver uea_driver; | 536 | static struct usb_driver uea_driver; |
| 536 | static DEFINE_MUTEX(uea_mutex); | 537 | static DEFINE_MUTEX(uea_mutex); |
| 537 | static const char *chip_name[] = {"ADI930", "Eagle I", "Eagle II", "Eagle III", "Eagle IV"}; | 538 | static const char *chip_name[] = {"ADI930", "Eagle I", "Eagle II", "Eagle III", |
| 539 | "Eagle IV"}; | ||
| 538 | 540 | ||
| 539 | static int modem_index; | 541 | static int modem_index; |
| 540 | static unsigned int debug; | 542 | static unsigned int debug; |
| 541 | static unsigned int altsetting[NB_MODEM] = {[0 ... (NB_MODEM - 1)] = FASTEST_ISO_INTF}; | 543 | static unsigned int altsetting[NB_MODEM] = { |
| 544 | [0 ... (NB_MODEM - 1)] = FASTEST_ISO_INTF}; | ||
| 542 | static int sync_wait[NB_MODEM]; | 545 | static int sync_wait[NB_MODEM]; |
| 543 | static char *cmv_file[NB_MODEM]; | 546 | static char *cmv_file[NB_MODEM]; |
| 544 | static int annex[NB_MODEM]; | 547 | static int annex[NB_MODEM]; |
| @@ -555,7 +558,7 @@ MODULE_PARM_DESC(cmv_file, | |||
| 555 | "file name with configuration and management variables"); | 558 | "file name with configuration and management variables"); |
| 556 | module_param_array(annex, uint, NULL, 0644); | 559 | module_param_array(annex, uint, NULL, 0644); |
| 557 | MODULE_PARM_DESC(annex, | 560 | MODULE_PARM_DESC(annex, |
| 558 | "manually set annex a/b (0=auto, 1=annex a, 2=annex b)"); | 561 | "manually set annex a/b (0=auto, 1=annex a, 2=annex b)"); |
| 559 | 562 | ||
| 560 | #define uea_wait(sc, cond, timeo) \ | 563 | #define uea_wait(sc, cond, timeo) \ |
| 561 | ({ \ | 564 | ({ \ |
| @@ -602,7 +605,8 @@ static int uea_send_modem_cmd(struct usb_device *usb, | |||
| 602 | return (ret == size) ? 0 : -EIO; | 605 | return (ret == size) ? 0 : -EIO; |
| 603 | } | 606 | } |
| 604 | 607 | ||
| 605 | static void uea_upload_pre_firmware(const struct firmware *fw_entry, void *context) | 608 | static void uea_upload_pre_firmware(const struct firmware *fw_entry, |
| 609 | void *context) | ||
| 606 | { | 610 | { |
| 607 | struct usb_device *usb = context; | 611 | struct usb_device *usb = context; |
| 608 | const u8 *pfw; | 612 | const u8 *pfw; |
| @@ -707,7 +711,8 @@ static int uea_load_firmware(struct usb_device *usb, unsigned int ver) | |||
| 707 | } | 711 | } |
| 708 | 712 | ||
| 709 | ret = request_firmware_nowait(THIS_MODULE, 1, fw_name, &usb->dev, | 713 | ret = request_firmware_nowait(THIS_MODULE, 1, fw_name, &usb->dev, |
| 710 | GFP_KERNEL, usb, uea_upload_pre_firmware); | 714 | GFP_KERNEL, usb, |
| 715 | uea_upload_pre_firmware); | ||
| 711 | if (ret) | 716 | if (ret) |
| 712 | uea_err(usb, "firmware %s is not available\n", fw_name); | 717 | uea_err(usb, "firmware %s is not available\n", fw_name); |
| 713 | else | 718 | else |
| @@ -876,7 +881,7 @@ static int request_dsp(struct uea_softc *sc) | |||
| 876 | if (ret < 0) { | 881 | if (ret < 0) { |
| 877 | uea_err(INS_TO_USBDEV(sc), | 882 | uea_err(INS_TO_USBDEV(sc), |
| 878 | "requesting firmware %s failed with error %d\n", | 883 | "requesting firmware %s failed with error %d\n", |
| 879 | dsp_name, ret); | 884 | dsp_name, ret); |
| 880 | return ret; | 885 | return ret; |
| 881 | } | 886 | } |
| 882 | 887 | ||
| @@ -994,14 +999,17 @@ static void __uea_load_page_e4(struct uea_softc *sc, u8 pageno, int boot) | |||
| 994 | 999 | ||
| 995 | blockidx = &p->page_header[blockno]; | 1000 | blockidx = &p->page_header[blockno]; |
| 996 | blocksize = E4_PAGE_BYTES(blockidx->PageSize); | 1001 | blocksize = E4_PAGE_BYTES(blockidx->PageSize); |
| 997 | blockoffset = sc->dsp_firm->data + le32_to_cpu(blockidx->PageOffset); | 1002 | blockoffset = sc->dsp_firm->data + le32_to_cpu( |
| 1003 | blockidx->PageOffset); | ||
| 998 | 1004 | ||
| 999 | bi.dwSize = cpu_to_be32(blocksize); | 1005 | bi.dwSize = cpu_to_be32(blocksize); |
| 1000 | bi.dwAddress = cpu_to_be32(le32_to_cpu(blockidx->PageAddress)); | 1006 | bi.dwAddress = cpu_to_be32(le32_to_cpu(blockidx->PageAddress)); |
| 1001 | 1007 | ||
| 1002 | uea_dbg(INS_TO_USBDEV(sc), | 1008 | uea_dbg(INS_TO_USBDEV(sc), |
| 1003 | "sending block %u for DSP page %u size %u address %x\n", | 1009 | "sending block %u for DSP page " |
| 1004 | blockno, pageno, blocksize, le32_to_cpu(blockidx->PageAddress)); | 1010 | "%u size %u address %x\n", |
| 1011 | blockno, pageno, blocksize, | ||
| 1012 | le32_to_cpu(blockidx->PageAddress)); | ||
| 1005 | 1013 | ||
| 1006 | /* send block info through the IDMA pipe */ | 1014 | /* send block info through the IDMA pipe */ |
| 1007 | if (uea_idma_write(sc, &bi, E4_BLOCK_INFO_SIZE)) | 1015 | if (uea_idma_write(sc, &bi, E4_BLOCK_INFO_SIZE)) |
| @@ -1042,7 +1050,8 @@ static void uea_load_page_e4(struct work_struct *work) | |||
| 1042 | 1050 | ||
| 1043 | p = (struct l1_code *) sc->dsp_firm->data; | 1051 | p = (struct l1_code *) sc->dsp_firm->data; |
| 1044 | if (pageno >= le16_to_cpu(p->page_header[0].PageNumber)) { | 1052 | if (pageno >= le16_to_cpu(p->page_header[0].PageNumber)) { |
| 1045 | uea_err(INS_TO_USBDEV(sc), "invalid DSP page %u requested\n", pageno); | 1053 | uea_err(INS_TO_USBDEV(sc), "invalid DSP " |
| 1054 | "page %u requested\n", pageno); | ||
| 1046 | return; | 1055 | return; |
| 1047 | } | 1056 | } |
| 1048 | 1057 | ||
| @@ -1059,7 +1068,7 @@ static void uea_load_page_e4(struct work_struct *work) | |||
| 1059 | __uea_load_page_e4(sc, i, 1); | 1068 | __uea_load_page_e4(sc, i, 1); |
| 1060 | } | 1069 | } |
| 1061 | 1070 | ||
| 1062 | uea_dbg(INS_TO_USBDEV(sc),"sending start bi\n"); | 1071 | uea_dbg(INS_TO_USBDEV(sc) , "sending start bi\n"); |
| 1063 | 1072 | ||
| 1064 | bi.wHdr = cpu_to_be16(UEA_BIHDR); | 1073 | bi.wHdr = cpu_to_be16(UEA_BIHDR); |
| 1065 | bi.bBootPage = 0; | 1074 | bi.bBootPage = 0; |
| @@ -1139,8 +1148,10 @@ static int uea_cmv_e1(struct uea_softc *sc, | |||
| 1139 | uea_enters(INS_TO_USBDEV(sc)); | 1148 | uea_enters(INS_TO_USBDEV(sc)); |
| 1140 | uea_vdbg(INS_TO_USBDEV(sc), "Function : %d-%d, Address : %c%c%c%c, " | 1149 | uea_vdbg(INS_TO_USBDEV(sc), "Function : %d-%d, Address : %c%c%c%c, " |
| 1141 | "offset : 0x%04x, data : 0x%08x\n", | 1150 | "offset : 0x%04x, data : 0x%08x\n", |
| 1142 | E1_FUNCTION_TYPE(function), E1_FUNCTION_SUBTYPE(function), | 1151 | E1_FUNCTION_TYPE(function), |
| 1143 | E1_GETSA1(address), E1_GETSA2(address), E1_GETSA3(address), | 1152 | E1_FUNCTION_SUBTYPE(function), |
| 1153 | E1_GETSA1(address), E1_GETSA2(address), | ||
| 1154 | E1_GETSA3(address), | ||
| 1144 | E1_GETSA4(address), offset, data); | 1155 | E1_GETSA4(address), offset, data); |
| 1145 | 1156 | ||
| 1146 | /* we send a request, but we expect a reply */ | 1157 | /* we send a request, but we expect a reply */ |
| @@ -1157,7 +1168,8 @@ static int uea_cmv_e1(struct uea_softc *sc, | |||
| 1157 | cmv.wOffsetAddress = cpu_to_le16(offset); | 1168 | cmv.wOffsetAddress = cpu_to_le16(offset); |
| 1158 | put_unaligned_le32(data >> 16 | data << 16, &cmv.dwData); | 1169 | put_unaligned_le32(data >> 16 | data << 16, &cmv.dwData); |
| 1159 | 1170 | ||
| 1160 | ret = uea_request(sc, UEA_E1_SET_BLOCK, UEA_MPTX_START, sizeof(cmv), &cmv); | 1171 | ret = uea_request(sc, UEA_E1_SET_BLOCK, UEA_MPTX_START, |
| 1172 | sizeof(cmv), &cmv); | ||
| 1161 | if (ret < 0) | 1173 | if (ret < 0) |
| 1162 | return ret; | 1174 | return ret; |
| 1163 | ret = wait_cmv_ack(sc); | 1175 | ret = wait_cmv_ack(sc); |
| @@ -1191,7 +1203,8 @@ static int uea_cmv_e4(struct uea_softc *sc, | |||
| 1191 | cmv.wOffset = cpu_to_be16(offset); | 1203 | cmv.wOffset = cpu_to_be16(offset); |
| 1192 | cmv.dwData[0] = cpu_to_be32(data); | 1204 | cmv.dwData[0] = cpu_to_be32(data); |
| 1193 | 1205 | ||
| 1194 | ret = uea_request(sc, UEA_E4_SET_BLOCK, UEA_MPTX_START, sizeof(cmv), &cmv); | 1206 | ret = uea_request(sc, UEA_E4_SET_BLOCK, UEA_MPTX_START, |
| 1207 | sizeof(cmv), &cmv); | ||
| 1195 | if (ret < 0) | 1208 | if (ret < 0) |
| 1196 | return ret; | 1209 | return ret; |
| 1197 | ret = wait_cmv_ack(sc); | 1210 | ret = wait_cmv_ack(sc); |
| @@ -1208,7 +1221,7 @@ static inline int uea_read_cmv_e1(struct uea_softc *sc, | |||
| 1208 | uea_err(INS_TO_USBDEV(sc), | 1221 | uea_err(INS_TO_USBDEV(sc), |
| 1209 | "reading cmv failed with error %d\n", ret); | 1222 | "reading cmv failed with error %d\n", ret); |
| 1210 | else | 1223 | else |
| 1211 | *data = sc->data; | 1224 | *data = sc->data; |
| 1212 | 1225 | ||
| 1213 | return ret; | 1226 | return ret; |
| 1214 | } | 1227 | } |
| @@ -1216,13 +1229,14 @@ static inline int uea_read_cmv_e1(struct uea_softc *sc, | |||
| 1216 | static inline int uea_read_cmv_e4(struct uea_softc *sc, | 1229 | static inline int uea_read_cmv_e4(struct uea_softc *sc, |
| 1217 | u8 size, u16 group, u16 address, u16 offset, u32 *data) | 1230 | u8 size, u16 group, u16 address, u16 offset, u32 *data) |
| 1218 | { | 1231 | { |
| 1219 | int ret = uea_cmv_e4(sc, E4_MAKEFUNCTION(E4_MEMACCESS, E4_REQUESTREAD, size), | 1232 | int ret = uea_cmv_e4(sc, E4_MAKEFUNCTION(E4_MEMACCESS, |
| 1233 | E4_REQUESTREAD, size), | ||
| 1220 | group, address, offset, 0); | 1234 | group, address, offset, 0); |
| 1221 | if (ret < 0) | 1235 | if (ret < 0) |
| 1222 | uea_err(INS_TO_USBDEV(sc), | 1236 | uea_err(INS_TO_USBDEV(sc), |
| 1223 | "reading cmv failed with error %d\n", ret); | 1237 | "reading cmv failed with error %d\n", ret); |
| 1224 | else { | 1238 | else { |
| 1225 | *data = sc->data; | 1239 | *data = sc->data; |
| 1226 | /* size is in 16-bit word quantities */ | 1240 | /* size is in 16-bit word quantities */ |
| 1227 | if (size > 2) | 1241 | if (size > 2) |
| 1228 | *(data + 1) = sc->data1; | 1242 | *(data + 1) = sc->data1; |
| @@ -1245,7 +1259,8 @@ static inline int uea_write_cmv_e1(struct uea_softc *sc, | |||
| 1245 | static inline int uea_write_cmv_e4(struct uea_softc *sc, | 1259 | static inline int uea_write_cmv_e4(struct uea_softc *sc, |
| 1246 | u8 size, u16 group, u16 address, u16 offset, u32 data) | 1260 | u8 size, u16 group, u16 address, u16 offset, u32 data) |
| 1247 | { | 1261 | { |
| 1248 | int ret = uea_cmv_e4(sc, E4_MAKEFUNCTION(E4_MEMACCESS, E4_REQUESTWRITE, size), | 1262 | int ret = uea_cmv_e4(sc, E4_MAKEFUNCTION(E4_MEMACCESS, |
| 1263 | E4_REQUESTWRITE, size), | ||
| 1249 | group, address, offset, data); | 1264 | group, address, offset, data); |
| 1250 | if (ret < 0) | 1265 | if (ret < 0) |
| 1251 | uea_err(INS_TO_USBDEV(sc), | 1266 | uea_err(INS_TO_USBDEV(sc), |
| @@ -1442,27 +1457,29 @@ static int uea_stat_e4(struct uea_softc *sc) | |||
| 1442 | return ret; | 1457 | return ret; |
| 1443 | 1458 | ||
| 1444 | switch (sc->stats.phy.state) { | 1459 | switch (sc->stats.phy.state) { |
| 1445 | case 0x0: /* not yet synchronized */ | 1460 | case 0x0: /* not yet synchronized */ |
| 1446 | case 0x1: | 1461 | case 0x1: |
| 1447 | case 0x3: | 1462 | case 0x3: |
| 1448 | case 0x4: | 1463 | case 0x4: |
| 1449 | uea_dbg(INS_TO_USBDEV(sc), "modem not yet synchronized\n"); | 1464 | uea_dbg(INS_TO_USBDEV(sc), "modem not yet " |
| 1450 | return 0; | 1465 | "synchronized\n"); |
| 1451 | case 0x5: /* initialization */ | 1466 | return 0; |
| 1452 | case 0x6: | 1467 | case 0x5: /* initialization */ |
| 1453 | case 0x9: | 1468 | case 0x6: |
| 1454 | case 0xa: | 1469 | case 0x9: |
| 1455 | uea_dbg(INS_TO_USBDEV(sc), "modem initializing\n"); | 1470 | case 0xa: |
| 1456 | return 0; | 1471 | uea_dbg(INS_TO_USBDEV(sc), "modem initializing\n"); |
| 1457 | case 0x2: /* fail ... */ | 1472 | return 0; |
| 1458 | uea_info(INS_TO_USBDEV(sc), "modem synchronization failed" | 1473 | case 0x2: /* fail ... */ |
| 1459 | " (may be try other cmv/dsp)\n"); | 1474 | uea_info(INS_TO_USBDEV(sc), "modem synchronization " |
| 1460 | return -EAGAIN; | 1475 | "failed (may be try other cmv/dsp)\n"); |
| 1461 | case 0x7: /* operational */ | 1476 | return -EAGAIN; |
| 1462 | break; | 1477 | case 0x7: /* operational */ |
| 1463 | default: | 1478 | break; |
| 1464 | uea_warn(INS_TO_USBDEV(sc), "unknown state: %x\n", sc->stats.phy.state); | 1479 | default: |
| 1465 | return 0; | 1480 | uea_warn(INS_TO_USBDEV(sc), "unknown state: %x\n", |
| 1481 | sc->stats.phy.state); | ||
| 1482 | return 0; | ||
| 1466 | } | 1483 | } |
| 1467 | 1484 | ||
| 1468 | if (data != 7) { | 1485 | if (data != 7) { |
| @@ -1502,9 +1519,9 @@ static int uea_stat_e4(struct uea_softc *sc) | |||
| 1502 | if (sc->stats.phy.flags) { | 1519 | if (sc->stats.phy.flags) { |
| 1503 | uea_dbg(INS_TO_USBDEV(sc), "Stat flag = 0x%x\n", | 1520 | uea_dbg(INS_TO_USBDEV(sc), "Stat flag = 0x%x\n", |
| 1504 | sc->stats.phy.flags); | 1521 | sc->stats.phy.flags); |
| 1505 | if (sc->stats.phy.flags & 1) //delineation LOSS | 1522 | if (sc->stats.phy.flags & 1) /* delineation LOSS */ |
| 1506 | return -EAGAIN; | 1523 | return -EAGAIN; |
| 1507 | if (sc->stats.phy.flags & 0x4000) //Reset Flag | 1524 | if (sc->stats.phy.flags & 0x4000) /* Reset Flag */ |
| 1508 | return -EAGAIN; | 1525 | return -EAGAIN; |
| 1509 | return 0; | 1526 | return 0; |
| 1510 | } | 1527 | } |
| @@ -1618,7 +1635,8 @@ static int request_cmvs(struct uea_softc *sc, | |||
| 1618 | if (ret < 0) { | 1635 | if (ret < 0) { |
| 1619 | /* if caller can handle old version, try to provide it */ | 1636 | /* if caller can handle old version, try to provide it */ |
| 1620 | if (*ver == 1) { | 1637 | if (*ver == 1) { |
| 1621 | uea_warn(INS_TO_USBDEV(sc), "requesting firmware %s failed, " | 1638 | uea_warn(INS_TO_USBDEV(sc), "requesting " |
| 1639 | "firmware %s failed, " | ||
| 1622 | "try to get older cmvs\n", cmv_name); | 1640 | "try to get older cmvs\n", cmv_name); |
| 1623 | return request_cmvs_old(sc, cmvs, fw); | 1641 | return request_cmvs_old(sc, cmvs, fw); |
| 1624 | } | 1642 | } |
| @@ -1632,8 +1650,8 @@ static int request_cmvs(struct uea_softc *sc, | |||
| 1632 | data = (u8 *) (*fw)->data; | 1650 | data = (u8 *) (*fw)->data; |
| 1633 | if (size < 4 || strncmp(data, "cmv2", 4) != 0) { | 1651 | if (size < 4 || strncmp(data, "cmv2", 4) != 0) { |
| 1634 | if (*ver == 1) { | 1652 | if (*ver == 1) { |
| 1635 | uea_warn(INS_TO_USBDEV(sc), "firmware %s is corrupted, " | 1653 | uea_warn(INS_TO_USBDEV(sc), "firmware %s is corrupted," |
| 1636 | "try to get older cmvs\n", cmv_name); | 1654 | " try to get older cmvs\n", cmv_name); |
| 1637 | release_firmware(*fw); | 1655 | release_firmware(*fw); |
| 1638 | return request_cmvs_old(sc, cmvs, fw); | 1656 | return request_cmvs_old(sc, cmvs, fw); |
| 1639 | } | 1657 | } |
| @@ -1670,7 +1688,7 @@ static int uea_send_cmvs_e1(struct uea_softc *sc) | |||
| 1670 | int i, ret, len; | 1688 | int i, ret, len; |
| 1671 | void *cmvs_ptr; | 1689 | void *cmvs_ptr; |
| 1672 | const struct firmware *cmvs_fw; | 1690 | const struct firmware *cmvs_fw; |
| 1673 | int ver = 1; // we can handle v1 cmv firmware version; | 1691 | int ver = 1; /* we can handle v1 cmv firmware version; */ |
| 1674 | 1692 | ||
| 1675 | /* Enter in R-IDLE (cmv) until instructed otherwise */ | 1693 | /* Enter in R-IDLE (cmv) until instructed otherwise */ |
| 1676 | ret = uea_write_cmv_e1(sc, E1_SA_CNTL, 0, 1); | 1694 | ret = uea_write_cmv_e1(sc, E1_SA_CNTL, 0, 1); |
| @@ -1685,7 +1703,7 @@ static int uea_send_cmvs_e1(struct uea_softc *sc) | |||
| 1685 | sc->stats.phy.firmid); | 1703 | sc->stats.phy.firmid); |
| 1686 | 1704 | ||
| 1687 | /* get options */ | 1705 | /* get options */ |
| 1688 | ret = len = request_cmvs(sc, &cmvs_ptr, &cmvs_fw, &ver); | 1706 | ret = len = request_cmvs(sc, &cmvs_ptr, &cmvs_fw, &ver); |
| 1689 | if (ret < 0) | 1707 | if (ret < 0) |
| 1690 | return ret; | 1708 | return ret; |
| 1691 | 1709 | ||
| @@ -1697,9 +1715,10 @@ static int uea_send_cmvs_e1(struct uea_softc *sc) | |||
| 1697 | "please update your firmware\n"); | 1715 | "please update your firmware\n"); |
| 1698 | 1716 | ||
| 1699 | for (i = 0; i < len; i++) { | 1717 | for (i = 0; i < len; i++) { |
| 1700 | ret = uea_write_cmv_e1(sc, get_unaligned_le32(&cmvs_v1[i].address), | 1718 | ret = uea_write_cmv_e1(sc, |
| 1701 | get_unaligned_le16(&cmvs_v1[i].offset), | 1719 | get_unaligned_le32(&cmvs_v1[i].address), |
| 1702 | get_unaligned_le32(&cmvs_v1[i].data)); | 1720 | get_unaligned_le16(&cmvs_v1[i].offset), |
| 1721 | get_unaligned_le32(&cmvs_v1[i].data)); | ||
| 1703 | if (ret < 0) | 1722 | if (ret < 0) |
| 1704 | goto out; | 1723 | goto out; |
| 1705 | } | 1724 | } |
| @@ -1707,9 +1726,10 @@ static int uea_send_cmvs_e1(struct uea_softc *sc) | |||
| 1707 | struct uea_cmvs_v2 *cmvs_v2 = cmvs_ptr; | 1726 | struct uea_cmvs_v2 *cmvs_v2 = cmvs_ptr; |
| 1708 | 1727 | ||
| 1709 | for (i = 0; i < len; i++) { | 1728 | for (i = 0; i < len; i++) { |
| 1710 | ret = uea_write_cmv_e1(sc, get_unaligned_le32(&cmvs_v2[i].address), | 1729 | ret = uea_write_cmv_e1(sc, |
| 1711 | (u16) get_unaligned_le32(&cmvs_v2[i].offset), | 1730 | get_unaligned_le32(&cmvs_v2[i].address), |
| 1712 | get_unaligned_le32(&cmvs_v2[i].data)); | 1731 | (u16) get_unaligned_le32(&cmvs_v2[i].offset), |
| 1732 | get_unaligned_le32(&cmvs_v2[i].data)); | ||
| 1713 | if (ret < 0) | 1733 | if (ret < 0) |
| 1714 | goto out; | 1734 | goto out; |
| 1715 | } | 1735 | } |
| @@ -1722,7 +1742,8 @@ static int uea_send_cmvs_e1(struct uea_softc *sc) | |||
| 1722 | /* Enter in R-ACT-REQ */ | 1742 | /* Enter in R-ACT-REQ */ |
| 1723 | ret = uea_write_cmv_e1(sc, E1_SA_CNTL, 0, 2); | 1743 | ret = uea_write_cmv_e1(sc, E1_SA_CNTL, 0, 2); |
| 1724 | uea_vdbg(INS_TO_USBDEV(sc), "Entering in R-ACT-REQ state\n"); | 1744 | uea_vdbg(INS_TO_USBDEV(sc), "Entering in R-ACT-REQ state\n"); |
| 1725 | uea_info(INS_TO_USBDEV(sc), "modem started, waiting synchronization...\n"); | 1745 | uea_info(INS_TO_USBDEV(sc), "modem started, waiting " |
| 1746 | "synchronization...\n"); | ||
| 1726 | out: | 1747 | out: |
| 1727 | release_firmware(cmvs_fw); | 1748 | release_firmware(cmvs_fw); |
| 1728 | return ret; | 1749 | return ret; |
| @@ -1733,7 +1754,7 @@ static int uea_send_cmvs_e4(struct uea_softc *sc) | |||
| 1733 | int i, ret, len; | 1754 | int i, ret, len; |
| 1734 | void *cmvs_ptr; | 1755 | void *cmvs_ptr; |
| 1735 | const struct firmware *cmvs_fw; | 1756 | const struct firmware *cmvs_fw; |
| 1736 | int ver = 2; // we can only handle v2 cmv firmware version; | 1757 | int ver = 2; /* we can only handle v2 cmv firmware version; */ |
| 1737 | 1758 | ||
| 1738 | /* Enter in R-IDLE (cmv) until instructed otherwise */ | 1759 | /* Enter in R-IDLE (cmv) until instructed otherwise */ |
| 1739 | ret = uea_write_cmv_e4(sc, 1, E4_SA_CNTL, 0, 0, 1); | 1760 | ret = uea_write_cmv_e4(sc, 1, E4_SA_CNTL, 0, 0, 1); |
| @@ -1750,7 +1771,7 @@ static int uea_send_cmvs_e4(struct uea_softc *sc) | |||
| 1750 | 1771 | ||
| 1751 | 1772 | ||
| 1752 | /* get options */ | 1773 | /* get options */ |
| 1753 | ret = len = request_cmvs(sc, &cmvs_ptr, &cmvs_fw, &ver); | 1774 | ret = len = request_cmvs(sc, &cmvs_ptr, &cmvs_fw, &ver); |
| 1754 | if (ret < 0) | 1775 | if (ret < 0) |
| 1755 | return ret; | 1776 | return ret; |
| 1756 | 1777 | ||
| @@ -1760,10 +1781,10 @@ static int uea_send_cmvs_e4(struct uea_softc *sc) | |||
| 1760 | 1781 | ||
| 1761 | for (i = 0; i < len; i++) { | 1782 | for (i = 0; i < len; i++) { |
| 1762 | ret = uea_write_cmv_e4(sc, 1, | 1783 | ret = uea_write_cmv_e4(sc, 1, |
| 1763 | get_unaligned_le32(&cmvs_v2[i].group), | 1784 | get_unaligned_le32(&cmvs_v2[i].group), |
| 1764 | get_unaligned_le32(&cmvs_v2[i].address), | 1785 | get_unaligned_le32(&cmvs_v2[i].address), |
| 1765 | get_unaligned_le32(&cmvs_v2[i].offset), | 1786 | get_unaligned_le32(&cmvs_v2[i].offset), |
| 1766 | get_unaligned_le32(&cmvs_v2[i].data)); | 1787 | get_unaligned_le32(&cmvs_v2[i].data)); |
| 1767 | if (ret < 0) | 1788 | if (ret < 0) |
| 1768 | goto out; | 1789 | goto out; |
| 1769 | } | 1790 | } |
| @@ -1776,7 +1797,8 @@ static int uea_send_cmvs_e4(struct uea_softc *sc) | |||
| 1776 | /* Enter in R-ACT-REQ */ | 1797 | /* Enter in R-ACT-REQ */ |
| 1777 | ret = uea_write_cmv_e4(sc, 1, E4_SA_CNTL, 0, 0, 2); | 1798 | ret = uea_write_cmv_e4(sc, 1, E4_SA_CNTL, 0, 0, 2); |
| 1778 | uea_vdbg(INS_TO_USBDEV(sc), "Entering in R-ACT-REQ state\n"); | 1799 | uea_vdbg(INS_TO_USBDEV(sc), "Entering in R-ACT-REQ state\n"); |
| 1779 | uea_info(INS_TO_USBDEV(sc), "modem started, waiting synchronization...\n"); | 1800 | uea_info(INS_TO_USBDEV(sc), "modem started, waiting " |
| 1801 | "synchronization...\n"); | ||
| 1780 | out: | 1802 | out: |
| 1781 | release_firmware(cmvs_fw); | 1803 | release_firmware(cmvs_fw); |
| 1782 | return ret; | 1804 | return ret; |
| @@ -1812,7 +1834,7 @@ static int uea_start_reset(struct uea_softc *sc) | |||
| 1812 | uea_request(sc, UEA_SET_MODE, UEA_LOOPBACK_ON, 0, NULL); | 1834 | uea_request(sc, UEA_SET_MODE, UEA_LOOPBACK_ON, 0, NULL); |
| 1813 | uea_request(sc, UEA_SET_MODE, UEA_BOOT_IDMA, 0, NULL); | 1835 | uea_request(sc, UEA_SET_MODE, UEA_BOOT_IDMA, 0, NULL); |
| 1814 | 1836 | ||
| 1815 | /* enter reset mode */ | 1837 | /* enter reset mode */ |
| 1816 | uea_request(sc, UEA_SET_MODE, UEA_START_RESET, 0, NULL); | 1838 | uea_request(sc, UEA_SET_MODE, UEA_START_RESET, 0, NULL); |
| 1817 | 1839 | ||
| 1818 | /* original driver use 200ms, but windows driver use 100ms */ | 1840 | /* original driver use 200ms, but windows driver use 100ms */ |
| @@ -1824,7 +1846,7 @@ static int uea_start_reset(struct uea_softc *sc) | |||
| 1824 | uea_request(sc, UEA_SET_MODE, UEA_END_RESET, 0, NULL); | 1846 | uea_request(sc, UEA_SET_MODE, UEA_END_RESET, 0, NULL); |
| 1825 | 1847 | ||
| 1826 | if (UEA_CHIP_VERSION(sc) != EAGLE_IV) { | 1848 | if (UEA_CHIP_VERSION(sc) != EAGLE_IV) { |
| 1827 | /* clear tx and rx mailboxes */ | 1849 | /* clear tx and rx mailboxes */ |
| 1828 | uea_request(sc, UEA_SET_2183_DATA, UEA_MPTX_MAILBOX, 2, &zero); | 1850 | uea_request(sc, UEA_SET_2183_DATA, UEA_MPTX_MAILBOX, 2, &zero); |
| 1829 | uea_request(sc, UEA_SET_2183_DATA, UEA_MPRX_MAILBOX, 2, &zero); | 1851 | uea_request(sc, UEA_SET_2183_DATA, UEA_MPRX_MAILBOX, 2, &zero); |
| 1830 | uea_request(sc, UEA_SET_2183_DATA, UEA_SWAP_MAILBOX, 2, &zero); | 1852 | uea_request(sc, UEA_SET_2183_DATA, UEA_SWAP_MAILBOX, 2, &zero); |
| @@ -1835,9 +1857,11 @@ static int uea_start_reset(struct uea_softc *sc) | |||
| 1835 | return ret; | 1857 | return ret; |
| 1836 | 1858 | ||
| 1837 | if (UEA_CHIP_VERSION(sc) == EAGLE_IV) | 1859 | if (UEA_CHIP_VERSION(sc) == EAGLE_IV) |
| 1838 | sc->cmv_dsc.e4.function = E4_MAKEFUNCTION(E4_ADSLDIRECTIVE, E4_MODEMREADY, 1); | 1860 | sc->cmv_dsc.e4.function = E4_MAKEFUNCTION(E4_ADSLDIRECTIVE, |
| 1861 | E4_MODEMREADY, 1); | ||
| 1839 | else | 1862 | else |
| 1840 | sc->cmv_dsc.e1.function = E1_MAKEFUNCTION(E1_ADSLDIRECTIVE, E1_MODEMREADY); | 1863 | sc->cmv_dsc.e1.function = E1_MAKEFUNCTION(E1_ADSLDIRECTIVE, |
| 1864 | E1_MODEMREADY); | ||
| 1841 | 1865 | ||
| 1842 | /* demask interrupt */ | 1866 | /* demask interrupt */ |
| 1843 | sc->booting = 0; | 1867 | sc->booting = 0; |
| @@ -1937,7 +1961,8 @@ static int load_XILINX_firmware(struct uea_softc *sc) | |||
| 1937 | value = 0; | 1961 | value = 0; |
| 1938 | ret = uea_send_modem_cmd(sc->usb_dev, 0xe, 1, &value); | 1962 | ret = uea_send_modem_cmd(sc->usb_dev, 0xe, 1, &value); |
| 1939 | if (ret < 0) | 1963 | if (ret < 0) |
| 1940 | uea_err(sc->usb_dev, "elsa de-assert failed with error %d\n", ret); | 1964 | uea_err(sc->usb_dev, "elsa de-assert failed with error" |
| 1965 | " %d\n", ret); | ||
| 1941 | 1966 | ||
| 1942 | err1: | 1967 | err1: |
| 1943 | release_firmware(fw_entry); | 1968 | release_firmware(fw_entry); |
| @@ -1966,13 +1991,15 @@ static void uea_dispatch_cmv_e1(struct uea_softc *sc, struct intr_pkt *intr) | |||
| 1966 | if (UEA_CHIP_VERSION(sc) == ADI930 | 1991 | if (UEA_CHIP_VERSION(sc) == ADI930 |
| 1967 | && cmv->bFunction == E1_MAKEFUNCTION(2, 2)) { | 1992 | && cmv->bFunction == E1_MAKEFUNCTION(2, 2)) { |
| 1968 | cmv->wIndex = cpu_to_le16(dsc->idx); | 1993 | cmv->wIndex = cpu_to_le16(dsc->idx); |
| 1969 | put_unaligned_le32(dsc->address, &cmv->dwSymbolicAddress); | 1994 | put_unaligned_le32(dsc->address, |
| 1995 | &cmv->dwSymbolicAddress); | ||
| 1970 | cmv->wOffsetAddress = cpu_to_le16(dsc->offset); | 1996 | cmv->wOffsetAddress = cpu_to_le16(dsc->offset); |
| 1971 | } else | 1997 | } else |
| 1972 | goto bad2; | 1998 | goto bad2; |
| 1973 | } | 1999 | } |
| 1974 | 2000 | ||
| 1975 | if (cmv->bFunction == E1_MAKEFUNCTION(E1_ADSLDIRECTIVE, E1_MODEMREADY)) { | 2001 | if (cmv->bFunction == E1_MAKEFUNCTION(E1_ADSLDIRECTIVE, |
| 2002 | E1_MODEMREADY)) { | ||
| 1976 | wake_up_cmv_ack(sc); | 2003 | wake_up_cmv_ack(sc); |
| 1977 | uea_leaves(INS_TO_USBDEV(sc)); | 2004 | uea_leaves(INS_TO_USBDEV(sc)); |
| 1978 | return; | 2005 | return; |
| @@ -2021,7 +2048,8 @@ static void uea_dispatch_cmv_e4(struct uea_softc *sc, struct intr_pkt *intr) | |||
| 2021 | if (be16_to_cpu(cmv->wFunction) != dsc->function) | 2048 | if (be16_to_cpu(cmv->wFunction) != dsc->function) |
| 2022 | goto bad2; | 2049 | goto bad2; |
| 2023 | 2050 | ||
| 2024 | if (be16_to_cpu(cmv->wFunction) == E4_MAKEFUNCTION(E4_ADSLDIRECTIVE, E4_MODEMREADY, 1)) { | 2051 | if (be16_to_cpu(cmv->wFunction) == E4_MAKEFUNCTION(E4_ADSLDIRECTIVE, |
| 2052 | E4_MODEMREADY, 1)) { | ||
| 2025 | wake_up_cmv_ack(sc); | 2053 | wake_up_cmv_ack(sc); |
| 2026 | uea_leaves(INS_TO_USBDEV(sc)); | 2054 | uea_leaves(INS_TO_USBDEV(sc)); |
| 2027 | return; | 2055 | return; |
| @@ -2048,14 +2076,16 @@ bad2: | |||
| 2048 | return; | 2076 | return; |
| 2049 | } | 2077 | } |
| 2050 | 2078 | ||
| 2051 | static void uea_schedule_load_page_e1(struct uea_softc *sc, struct intr_pkt *intr) | 2079 | static void uea_schedule_load_page_e1(struct uea_softc *sc, |
| 2080 | struct intr_pkt *intr) | ||
| 2052 | { | 2081 | { |
| 2053 | sc->pageno = intr->e1_bSwapPageNo; | 2082 | sc->pageno = intr->e1_bSwapPageNo; |
| 2054 | sc->ovl = intr->e1_bOvl >> 4 | intr->e1_bOvl << 4; | 2083 | sc->ovl = intr->e1_bOvl >> 4 | intr->e1_bOvl << 4; |
| 2055 | queue_work(sc->work_q, &sc->task); | 2084 | queue_work(sc->work_q, &sc->task); |
| 2056 | } | 2085 | } |
| 2057 | 2086 | ||
| 2058 | static void uea_schedule_load_page_e4(struct uea_softc *sc, struct intr_pkt *intr) | 2087 | static void uea_schedule_load_page_e4(struct uea_softc *sc, |
| 2088 | struct intr_pkt *intr) | ||
| 2059 | { | 2089 | { |
| 2060 | sc->pageno = intr->e4_bSwapPageNo; | 2090 | sc->pageno = intr->e4_bSwapPageNo; |
| 2061 | queue_work(sc->work_q, &sc->task); | 2091 | queue_work(sc->work_q, &sc->task); |
| @@ -2263,8 +2293,8 @@ out: | |||
| 2263 | 2293 | ||
| 2264 | static DEVICE_ATTR(stat_status, S_IWUGO | S_IRUGO, read_status, reboot); | 2294 | static DEVICE_ATTR(stat_status, S_IWUGO | S_IRUGO, read_status, reboot); |
| 2265 | 2295 | ||
| 2266 | static ssize_t read_human_status(struct device *dev, struct device_attribute *attr, | 2296 | static ssize_t read_human_status(struct device *dev, |
| 2267 | char *buf) | 2297 | struct device_attribute *attr, char *buf) |
| 2268 | { | 2298 | { |
| 2269 | int ret = -ENODEV; | 2299 | int ret = -ENODEV; |
| 2270 | int modem_state; | 2300 | int modem_state; |
| @@ -2289,7 +2319,7 @@ static ssize_t read_human_status(struct device *dev, struct device_attribute *at | |||
| 2289 | case 0xa: | 2319 | case 0xa: |
| 2290 | modem_state = 1; | 2320 | modem_state = 1; |
| 2291 | break; | 2321 | break; |
| 2292 | case 0x7: /* operational */ | 2322 | case 0x7: /* operational */ |
| 2293 | modem_state = 2; | 2323 | modem_state = 2; |
| 2294 | break; | 2324 | break; |
| 2295 | case 0x2: /* fail ... */ | 2325 | case 0x2: /* fail ... */ |
| @@ -2324,7 +2354,8 @@ out: | |||
| 2324 | return ret; | 2354 | return ret; |
| 2325 | } | 2355 | } |
| 2326 | 2356 | ||
| 2327 | static DEVICE_ATTR(stat_human_status, S_IWUGO | S_IRUGO, read_human_status, NULL); | 2357 | static DEVICE_ATTR(stat_human_status, S_IWUGO | S_IRUGO, |
| 2358 | read_human_status, NULL); | ||
| 2328 | 2359 | ||
| 2329 | static ssize_t read_delin(struct device *dev, struct device_attribute *attr, | 2360 | static ssize_t read_delin(struct device *dev, struct device_attribute *attr, |
| 2330 | char *buf) | 2361 | char *buf) |
| @@ -2358,25 +2389,25 @@ out: | |||
| 2358 | 2389 | ||
| 2359 | static DEVICE_ATTR(stat_delin, S_IWUGO | S_IRUGO, read_delin, NULL); | 2390 | static DEVICE_ATTR(stat_delin, S_IWUGO | S_IRUGO, read_delin, NULL); |
| 2360 | 2391 | ||
| 2361 | #define UEA_ATTR(name, reset) \ | 2392 | #define UEA_ATTR(name, reset) \ |
| 2362 | \ | 2393 | \ |
| 2363 | static ssize_t read_##name(struct device *dev, \ | 2394 | static ssize_t read_##name(struct device *dev, \ |
| 2364 | struct device_attribute *attr, char *buf) \ | 2395 | struct device_attribute *attr, char *buf) \ |
| 2365 | { \ | 2396 | { \ |
| 2366 | int ret = -ENODEV; \ | 2397 | int ret = -ENODEV; \ |
| 2367 | struct uea_softc *sc; \ | 2398 | struct uea_softc *sc; \ |
| 2368 | \ | 2399 | \ |
| 2369 | mutex_lock(&uea_mutex); \ | 2400 | mutex_lock(&uea_mutex); \ |
| 2370 | sc = dev_to_uea(dev); \ | 2401 | sc = dev_to_uea(dev); \ |
| 2371 | if (!sc) \ | 2402 | if (!sc) \ |
| 2372 | goto out; \ | 2403 | goto out; \ |
| 2373 | ret = snprintf(buf, 10, "%08x\n", sc->stats.phy.name); \ | 2404 | ret = snprintf(buf, 10, "%08x\n", sc->stats.phy.name); \ |
| 2374 | if (reset) \ | 2405 | if (reset) \ |
| 2375 | sc->stats.phy.name = 0; \ | 2406 | sc->stats.phy.name = 0; \ |
| 2376 | out: \ | 2407 | out: \ |
| 2377 | mutex_unlock(&uea_mutex); \ | 2408 | mutex_unlock(&uea_mutex); \ |
| 2378 | return ret; \ | 2409 | return ret; \ |
| 2379 | } \ | 2410 | } \ |
| 2380 | \ | 2411 | \ |
| 2381 | static DEVICE_ATTR(stat_##name, S_IRUGO, read_##name, NULL) | 2412 | static DEVICE_ATTR(stat_##name, S_IRUGO, read_##name, NULL) |
| 2382 | 2413 | ||
| @@ -2527,12 +2558,14 @@ static int uea_bind(struct usbatm_data *usbatm, struct usb_interface *intf, | |||
| 2527 | else if (sc->driver_info & AUTO_ANNEX_B) | 2558 | else if (sc->driver_info & AUTO_ANNEX_B) |
| 2528 | sc->annex = ANNEXB; | 2559 | sc->annex = ANNEXB; |
| 2529 | else | 2560 | else |
| 2530 | sc->annex = (le16_to_cpu(sc->usb_dev->descriptor.bcdDevice) & 0x80)?ANNEXB:ANNEXA; | 2561 | sc->annex = (le16_to_cpu |
| 2562 | (sc->usb_dev->descriptor.bcdDevice) & 0x80) ? ANNEXB : ANNEXA; | ||
| 2531 | 2563 | ||
| 2532 | alt = altsetting[sc->modem_index]; | 2564 | alt = altsetting[sc->modem_index]; |
| 2533 | /* ADI930 don't support iso */ | 2565 | /* ADI930 don't support iso */ |
| 2534 | if (UEA_CHIP_VERSION(id) != ADI930 && alt > 0) { | 2566 | if (UEA_CHIP_VERSION(id) != ADI930 && alt > 0) { |
| 2535 | if (alt <= 8 && usb_set_interface(usb, UEA_DS_IFACE_NO, alt) == 0) { | 2567 | if (alt <= 8 && |
| 2568 | usb_set_interface(usb, UEA_DS_IFACE_NO, alt) == 0) { | ||
| 2536 | uea_dbg(usb, "set alternate %u for 2 interface\n", alt); | 2569 | uea_dbg(usb, "set alternate %u for 2 interface\n", alt); |
| 2537 | uea_info(usb, "using iso mode\n"); | 2570 | uea_info(usb, "using iso mode\n"); |
| 2538 | usbatm->flags |= UDSL_USE_ISOC | UDSL_IGNORE_EILSEQ; | 2571 | usbatm->flags |= UDSL_USE_ISOC | UDSL_IGNORE_EILSEQ; |
| @@ -2621,40 +2654,74 @@ static void uea_disconnect(struct usb_interface *intf) | |||
| 2621 | * List of supported VID/PID | 2654 | * List of supported VID/PID |
| 2622 | */ | 2655 | */ |
| 2623 | static const struct usb_device_id uea_ids[] = { | 2656 | static const struct usb_device_id uea_ids[] = { |
| 2624 | {USB_DEVICE(ANALOG_VID, ADI930_PID_PREFIRM), .driver_info = ADI930 | PREFIRM}, | 2657 | {USB_DEVICE(ANALOG_VID, ADI930_PID_PREFIRM), |
| 2625 | {USB_DEVICE(ANALOG_VID, ADI930_PID_PSTFIRM), .driver_info = ADI930 | PSTFIRM}, | 2658 | .driver_info = ADI930 | PREFIRM}, |
| 2626 | {USB_DEVICE(ANALOG_VID, EAGLE_I_PID_PREFIRM), .driver_info = EAGLE_I | PREFIRM}, | 2659 | {USB_DEVICE(ANALOG_VID, ADI930_PID_PSTFIRM), |
| 2627 | {USB_DEVICE(ANALOG_VID, EAGLE_I_PID_PSTFIRM), .driver_info = EAGLE_I | PSTFIRM}, | 2660 | .driver_info = ADI930 | PSTFIRM}, |
| 2628 | {USB_DEVICE(ANALOG_VID, EAGLE_II_PID_PREFIRM), .driver_info = EAGLE_II | PREFIRM}, | 2661 | {USB_DEVICE(ANALOG_VID, EAGLE_I_PID_PREFIRM), |
| 2629 | {USB_DEVICE(ANALOG_VID, EAGLE_II_PID_PSTFIRM), .driver_info = EAGLE_II | PSTFIRM}, | 2662 | .driver_info = EAGLE_I | PREFIRM}, |
| 2630 | {USB_DEVICE(ANALOG_VID, EAGLE_IIC_PID_PREFIRM), .driver_info = EAGLE_II | PREFIRM}, | 2663 | {USB_DEVICE(ANALOG_VID, EAGLE_I_PID_PSTFIRM), |
| 2631 | {USB_DEVICE(ANALOG_VID, EAGLE_IIC_PID_PSTFIRM), .driver_info = EAGLE_II | PSTFIRM}, | 2664 | .driver_info = EAGLE_I | PSTFIRM}, |
| 2632 | {USB_DEVICE(ANALOG_VID, EAGLE_III_PID_PREFIRM), .driver_info = EAGLE_III | PREFIRM}, | 2665 | {USB_DEVICE(ANALOG_VID, EAGLE_II_PID_PREFIRM), |
| 2633 | {USB_DEVICE(ANALOG_VID, EAGLE_III_PID_PSTFIRM), .driver_info = EAGLE_III | PSTFIRM}, | 2666 | .driver_info = EAGLE_II | PREFIRM}, |
| 2634 | {USB_DEVICE(ANALOG_VID, EAGLE_IV_PID_PREFIRM), .driver_info = EAGLE_IV | PREFIRM}, | 2667 | {USB_DEVICE(ANALOG_VID, EAGLE_II_PID_PSTFIRM), |
| 2635 | {USB_DEVICE(ANALOG_VID, EAGLE_IV_PID_PSTFIRM), .driver_info = EAGLE_IV | PSTFIRM}, | 2668 | .driver_info = EAGLE_II | PSTFIRM}, |
| 2636 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_I_A_PID_PREFIRM), .driver_info = EAGLE_I | PREFIRM}, | 2669 | {USB_DEVICE(ANALOG_VID, EAGLE_IIC_PID_PREFIRM), |
| 2637 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_I_A_PID_PSTFIRM), .driver_info = EAGLE_I | PSTFIRM | AUTO_ANNEX_A}, | 2670 | .driver_info = EAGLE_II | PREFIRM}, |
| 2638 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_I_B_PID_PREFIRM), .driver_info = EAGLE_I | PREFIRM}, | 2671 | {USB_DEVICE(ANALOG_VID, EAGLE_IIC_PID_PSTFIRM), |
| 2639 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_I_B_PID_PSTFIRM), .driver_info = EAGLE_I | PSTFIRM | AUTO_ANNEX_B}, | 2672 | .driver_info = EAGLE_II | PSTFIRM}, |
| 2640 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_II_A_PID_PREFIRM), .driver_info = EAGLE_II | PREFIRM}, | 2673 | {USB_DEVICE(ANALOG_VID, EAGLE_III_PID_PREFIRM), |
| 2641 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_II_A_PID_PSTFIRM), .driver_info = EAGLE_II | PSTFIRM | AUTO_ANNEX_A}, | 2674 | .driver_info = EAGLE_III | PREFIRM}, |
| 2642 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_II_B_PID_PREFIRM), .driver_info = EAGLE_II | PREFIRM}, | 2675 | {USB_DEVICE(ANALOG_VID, EAGLE_III_PID_PSTFIRM), |
| 2643 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_II_B_PID_PSTFIRM), .driver_info = EAGLE_II | PSTFIRM | AUTO_ANNEX_B}, | 2676 | .driver_info = EAGLE_III | PSTFIRM}, |
| 2644 | {USB_DEVICE(ELSA_VID, ELSA_PID_PREFIRM), .driver_info = ADI930 | PREFIRM}, | 2677 | {USB_DEVICE(ANALOG_VID, EAGLE_IV_PID_PREFIRM), |
| 2645 | {USB_DEVICE(ELSA_VID, ELSA_PID_PSTFIRM), .driver_info = ADI930 | PSTFIRM}, | 2678 | .driver_info = EAGLE_IV | PREFIRM}, |
| 2646 | {USB_DEVICE(ELSA_VID, ELSA_PID_A_PREFIRM), .driver_info = ADI930 | PREFIRM}, | 2679 | {USB_DEVICE(ANALOG_VID, EAGLE_IV_PID_PSTFIRM), |
| 2647 | {USB_DEVICE(ELSA_VID, ELSA_PID_A_PSTFIRM), .driver_info = ADI930 | PSTFIRM | AUTO_ANNEX_A}, | 2680 | .driver_info = EAGLE_IV | PSTFIRM}, |
| 2648 | {USB_DEVICE(ELSA_VID, ELSA_PID_B_PREFIRM), .driver_info = ADI930 | PREFIRM}, | 2681 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_I_A_PID_PREFIRM), |
| 2649 | {USB_DEVICE(ELSA_VID, ELSA_PID_B_PSTFIRM), .driver_info = ADI930 | PSTFIRM | AUTO_ANNEX_B}, | 2682 | .driver_info = EAGLE_I | PREFIRM}, |
| 2650 | {USB_DEVICE(USR_VID, MILLER_A_PID_PREFIRM), .driver_info = EAGLE_I | PREFIRM}, | 2683 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_I_A_PID_PSTFIRM), |
| 2651 | {USB_DEVICE(USR_VID, MILLER_A_PID_PSTFIRM), .driver_info = EAGLE_I | PSTFIRM | AUTO_ANNEX_A}, | 2684 | .driver_info = EAGLE_I | PSTFIRM | AUTO_ANNEX_A}, |
| 2652 | {USB_DEVICE(USR_VID, MILLER_B_PID_PREFIRM), .driver_info = EAGLE_I | PREFIRM}, | 2685 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_I_B_PID_PREFIRM), |
| 2653 | {USB_DEVICE(USR_VID, MILLER_B_PID_PSTFIRM), .driver_info = EAGLE_I | PSTFIRM | AUTO_ANNEX_B}, | 2686 | .driver_info = EAGLE_I | PREFIRM}, |
| 2654 | {USB_DEVICE(USR_VID, HEINEKEN_A_PID_PREFIRM),.driver_info = EAGLE_I | PREFIRM}, | 2687 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_I_B_PID_PSTFIRM), |
| 2655 | {USB_DEVICE(USR_VID, HEINEKEN_A_PID_PSTFIRM),.driver_info = EAGLE_I | PSTFIRM | AUTO_ANNEX_A}, | 2688 | .driver_info = EAGLE_I | PSTFIRM | AUTO_ANNEX_B}, |
| 2656 | {USB_DEVICE(USR_VID, HEINEKEN_B_PID_PREFIRM),.driver_info = EAGLE_I | PREFIRM}, | 2689 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_II_A_PID_PREFIRM), |
| 2657 | {USB_DEVICE(USR_VID, HEINEKEN_B_PID_PSTFIRM),.driver_info = EAGLE_I | PSTFIRM | AUTO_ANNEX_B}, | 2690 | .driver_info = EAGLE_II | PREFIRM}, |
| 2691 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_II_A_PID_PSTFIRM), | ||
| 2692 | .driver_info = EAGLE_II | PSTFIRM | AUTO_ANNEX_A}, | ||
| 2693 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_II_B_PID_PREFIRM), | ||
| 2694 | .driver_info = EAGLE_II | PREFIRM}, | ||
| 2695 | {USB_DEVICE(DEVOLO_VID, DEVOLO_EAGLE_II_B_PID_PSTFIRM), | ||
| 2696 | .driver_info = EAGLE_II | PSTFIRM | AUTO_ANNEX_B}, | ||
| 2697 | {USB_DEVICE(ELSA_VID, ELSA_PID_PREFIRM), | ||
| 2698 | .driver_info = ADI930 | PREFIRM}, | ||
| 2699 | {USB_DEVICE(ELSA_VID, ELSA_PID_PSTFIRM), | ||
| 2700 | .driver_info = ADI930 | PSTFIRM}, | ||
| 2701 | {USB_DEVICE(ELSA_VID, ELSA_PID_A_PREFIRM), | ||
| 2702 | .driver_info = ADI930 | PREFIRM}, | ||
| 2703 | {USB_DEVICE(ELSA_VID, ELSA_PID_A_PSTFIRM), | ||
| 2704 | .driver_info = ADI930 | PSTFIRM | AUTO_ANNEX_A}, | ||
| 2705 | {USB_DEVICE(ELSA_VID, ELSA_PID_B_PREFIRM), | ||
| 2706 | .driver_info = ADI930 | PREFIRM}, | ||
| 2707 | {USB_DEVICE(ELSA_VID, ELSA_PID_B_PSTFIRM), | ||
| 2708 | .driver_info = ADI930 | PSTFIRM | AUTO_ANNEX_B}, | ||
| 2709 | {USB_DEVICE(USR_VID, MILLER_A_PID_PREFIRM), | ||
| 2710 | .driver_info = EAGLE_I | PREFIRM}, | ||
| 2711 | {USB_DEVICE(USR_VID, MILLER_A_PID_PSTFIRM), | ||
| 2712 | .driver_info = EAGLE_I | PSTFIRM | AUTO_ANNEX_A}, | ||
| 2713 | {USB_DEVICE(USR_VID, MILLER_B_PID_PREFIRM), | ||
| 2714 | .driver_info = EAGLE_I | PREFIRM}, | ||
| 2715 | {USB_DEVICE(USR_VID, MILLER_B_PID_PSTFIRM), | ||
| 2716 | .driver_info = EAGLE_I | PSTFIRM | AUTO_ANNEX_B}, | ||
| 2717 | {USB_DEVICE(USR_VID, HEINEKEN_A_PID_PREFIRM), | ||
| 2718 | .driver_info = EAGLE_I | PREFIRM}, | ||
| 2719 | {USB_DEVICE(USR_VID, HEINEKEN_A_PID_PSTFIRM), | ||
| 2720 | .driver_info = EAGLE_I | PSTFIRM | AUTO_ANNEX_A}, | ||
| 2721 | {USB_DEVICE(USR_VID, HEINEKEN_B_PID_PREFIRM), | ||
| 2722 | .driver_info = EAGLE_I | PREFIRM}, | ||
| 2723 | {USB_DEVICE(USR_VID, HEINEKEN_B_PID_PSTFIRM), | ||
| 2724 | .driver_info = EAGLE_I | PSTFIRM | AUTO_ANNEX_B}, | ||
| 2658 | {} | 2725 | {} |
| 2659 | }; | 2726 | }; |
| 2660 | 2727 | ||
