diff options
-rw-r--r-- | drivers/usb/atm/ueagle-atm.c | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/drivers/usb/atm/ueagle-atm.c b/drivers/usb/atm/ueagle-atm.c index ea7dfe0c8275..b0026ecc6a36 100644 --- a/drivers/usb/atm/ueagle-atm.c +++ b/drivers/usb/atm/ueagle-atm.c | |||
@@ -632,8 +632,7 @@ static int request_dsp(struct uea_softc *sc) | |||
632 | dsp_name = FW_DIR "DSPep.bin"; | 632 | dsp_name = FW_DIR "DSPep.bin"; |
633 | } | 633 | } |
634 | 634 | ||
635 | ret = request_firmware(&sc->dsp_firm, | 635 | ret = request_firmware(&sc->dsp_firm, dsp_name, &sc->usb_dev->dev); |
636 | dsp_name, &sc->usb_dev->dev); | ||
637 | if (ret < 0) { | 636 | if (ret < 0) { |
638 | uea_err(INS_TO_USBDEV(sc), | 637 | uea_err(INS_TO_USBDEV(sc), |
639 | "requesting firmware %s failed with error %d\n", | 638 | "requesting firmware %s failed with error %d\n", |
@@ -748,7 +747,6 @@ static inline int wait_cmv_ack(struct uea_softc *sc) | |||
748 | return ret; | 747 | return ret; |
749 | 748 | ||
750 | return (ret == 0) ? -ETIMEDOUT : 0; | 749 | return (ret == 0) ? -ETIMEDOUT : 0; |
751 | |||
752 | } | 750 | } |
753 | 751 | ||
754 | #define UCDC_SEND_ENCAPSULATED_COMMAND 0x00 | 752 | #define UCDC_SEND_ENCAPSULATED_COMMAND 0x00 |
@@ -1189,8 +1187,7 @@ static int load_XILINX_firmware(struct uea_softc *sc) | |||
1189 | } | 1187 | } |
1190 | } | 1188 | } |
1191 | 1189 | ||
1192 | /* finish to send the fpga | 1190 | /* finish to send the fpga */ |
1193 | */ | ||
1194 | ret = uea_request(sc, 0xe, 1, 0, NULL); | 1191 | ret = uea_request(sc, 0xe, 1, 0, NULL); |
1195 | if (ret < 0) { | 1192 | if (ret < 0) { |
1196 | uea_err(INS_TO_USBDEV(sc), | 1193 | uea_err(INS_TO_USBDEV(sc), |
@@ -1198,9 +1195,7 @@ static int load_XILINX_firmware(struct uea_softc *sc) | |||
1198 | goto err1; | 1195 | goto err1; |
1199 | } | 1196 | } |
1200 | 1197 | ||
1201 | /* | 1198 | /* Tell the modem we finish : de-assert reset */ |
1202 | * Tell the modem we finish : de-assert reset | ||
1203 | */ | ||
1204 | value = 0; | 1199 | value = 0; |
1205 | ret = uea_send_modem_cmd(sc->usb_dev, 0xe, 1, &value); | 1200 | ret = uea_send_modem_cmd(sc->usb_dev, 0xe, 1, &value); |
1206 | if (ret < 0) | 1201 | if (ret < 0) |
@@ -1214,6 +1209,7 @@ err0: | |||
1214 | return ret; | 1209 | return ret; |
1215 | } | 1210 | } |
1216 | 1211 | ||
1212 | /* The modem send us an ack. First with check if it right */ | ||
1217 | static void uea_dispatch_cmv(struct uea_softc *sc, struct cmv* cmv) | 1213 | static void uea_dispatch_cmv(struct uea_softc *sc, struct cmv* cmv) |
1218 | { | 1214 | { |
1219 | uea_enters(INS_TO_USBDEV(sc)); | 1215 | uea_enters(INS_TO_USBDEV(sc)); |
@@ -1273,23 +1269,19 @@ bad1: | |||
1273 | */ | 1269 | */ |
1274 | static void uea_intr(struct urb *urb, struct pt_regs *regs) | 1270 | static void uea_intr(struct urb *urb, struct pt_regs *regs) |
1275 | { | 1271 | { |
1276 | struct uea_softc *sc = (struct uea_softc *)urb->context; | 1272 | struct uea_softc *sc = urb->context; |
1277 | struct intr_pkt *intr; | 1273 | struct intr_pkt *intr = urb->transfer_buffer; |
1278 | uea_enters(INS_TO_USBDEV(sc)); | 1274 | uea_enters(INS_TO_USBDEV(sc)); |
1279 | 1275 | ||
1280 | if (urb->status < 0) { | 1276 | if (unlikely(urb->status < 0)) { |
1281 | uea_err(INS_TO_USBDEV(sc), "uea_intr() failed with %d\n", | 1277 | uea_err(INS_TO_USBDEV(sc), "uea_intr() failed with %d\n", |
1282 | urb->status); | 1278 | urb->status); |
1283 | return; | 1279 | return; |
1284 | } | 1280 | } |
1285 | 1281 | ||
1286 | intr = (struct intr_pkt *) urb->transfer_buffer; | ||
1287 | |||
1288 | /* device-to-host interrupt */ | 1282 | /* device-to-host interrupt */ |
1289 | if (intr->bType != 0x08 || sc->booting) { | 1283 | if (intr->bType != 0x08 || sc->booting) { |
1290 | uea_err(INS_TO_USBDEV(sc), "wrong intr\n"); | 1284 | uea_err(INS_TO_USBDEV(sc), "wrong interrupt\n"); |
1291 | // rebooting ? | ||
1292 | // sc->reset = 1; | ||
1293 | goto resubmit; | 1285 | goto resubmit; |
1294 | } | 1286 | } |
1295 | 1287 | ||
@@ -1305,7 +1297,7 @@ static void uea_intr(struct urb *urb, struct pt_regs *regs) | |||
1305 | break; | 1297 | break; |
1306 | 1298 | ||
1307 | default: | 1299 | default: |
1308 | uea_err(INS_TO_USBDEV(sc), "unknown intr %u\n", | 1300 | uea_err(INS_TO_USBDEV(sc), "unknown interrupt %u\n", |
1309 | le16_to_cpu(intr->wInterrupt)); | 1301 | le16_to_cpu(intr->wInterrupt)); |
1310 | } | 1302 | } |
1311 | 1303 | ||
@@ -1384,7 +1376,7 @@ static void uea_stop(struct uea_softc *sc) | |||
1384 | int ret; | 1376 | int ret; |
1385 | uea_enters(INS_TO_USBDEV(sc)); | 1377 | uea_enters(INS_TO_USBDEV(sc)); |
1386 | ret = kthread_stop(sc->kthread); | 1378 | ret = kthread_stop(sc->kthread); |
1387 | uea_info(INS_TO_USBDEV(sc), "kthread finish with status %d\n", ret); | 1379 | uea_dbg(INS_TO_USBDEV(sc), "kthread finish with status %d\n", ret); |
1388 | 1380 | ||
1389 | /* stop any pending boot process */ | 1381 | /* stop any pending boot process */ |
1390 | flush_scheduled_work(); | 1382 | flush_scheduled_work(); |
@@ -1641,9 +1633,7 @@ static int uea_bind(struct usbatm_data *usbatm, struct usb_interface *intf, | |||
1641 | if (ret < 0) | 1633 | if (ret < 0) |
1642 | return ret; | 1634 | return ret; |
1643 | 1635 | ||
1644 | /* ADI930 has only 2 interfaces and inbound traffic | 1636 | /* ADI930 has only 2 interfaces and inbound traffic is on interface 1 */ |
1645 | * is on interface 1 | ||
1646 | */ | ||
1647 | if (UEA_CHIP_VERSION(id) != ADI930) { | 1637 | if (UEA_CHIP_VERSION(id) != ADI930) { |
1648 | /* interface 2 is for inbound traffic */ | 1638 | /* interface 2 is for inbound traffic */ |
1649 | ret = claim_interface(usb, usbatm, UEA_DS_IFACE_NO); | 1639 | ret = claim_interface(usb, usbatm, UEA_DS_IFACE_NO); |