Lines Matching +full:idma +full:- +full:addr
1 // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2 /*-
6 * Copyright (c) 2005-2007 Matthieu Castet <castet.matthieu@free.fr>
7 * Copyright (c) 2005-2007 Stanislaw Gruszka <stf_xl@wp.pl>
50 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
85 dev_dbg(&(usb_dev)->dev, \
86 "[ueagle-atm dbg] %s: " format, \
93 dev_dbg(&(usb_dev)->dev, \
94 "[ueagle-atm vdbg] " format, ##args); \
104 dev_err(&(usb_dev)->dev , "[UEAGLE-ATM] " format , ##args)
107 dev_warn(&(usb_dev)->dev , "[Ueagle-atm] " format, ##args)
110 dev_info(&(usb_dev)->dev , "[ueagle-atm] " format, ##args)
285 (!((x)->driver_info & PSTFIRM))
287 ((x)->driver_info & 0xf)
290 ((x)->annex & ANNEXB)
292 #define INS_TO_USBDEV(ins) (ins->usb_dev)
299 (GET_STATUS(sc->stats.phy.state) == 2) : \
300 (sc->stats.phy.state == 7))
309 #define FW_DIR "ueagle-atm/"
323 #define FPGA930_FIRMWARE FW_DIR "930-fpga.bin"
572 [0 ... (NB_MODEM - 1)] = FASTEST_ISO_INTF};
593 int _r = wait_event_interruptible_timeout(sc->sync_q, \
596 _r = -ENODEV; \
602 if (sc->usbatm->atm_dev) \
603 sc->usbatm->atm_dev->type = val; \
608 if (sc->usbatm->atm_dev) \
609 atm_dev_signal_change(sc->usbatm->atm_dev, val); \
618 * uea_send_modem_cmd - Send a command for pre-firmware devices.
621 u16 addr, u16 size, const u8 *buff) in uea_send_modem_cmd() argument
623 int ret = -ENOMEM; in uea_send_modem_cmd()
632 USB_RECIP_DEVICE, addr, 0, xfer_buff, in uea_send_modem_cmd()
640 return (ret == size) ? 0 : -EIO; in uea_send_modem_cmd()
658 pfw = fw_entry->data; in uea_upload_pre_firmware()
659 size = fw_entry->size; in uea_upload_pre_firmware()
665 size -= 4; in uea_upload_pre_firmware()
684 size -= len + 3; in uea_upload_pre_firmware()
701 * Tell the modem we finish : de-assert reset in uea_upload_pre_firmware()
706 uea_err(usb, "modem de-assert failed with error %d\n", ret); in uea_upload_pre_firmware()
720 * uea_load_firmware - Load usb firmware for pre-firmware devices.
728 uea_info(usb, "pre-firmware device, uploading firmware\n"); in uea_load_firmware()
748 ret = request_firmware_nowait(THIS_MODULE, 1, fw_name, &usb->dev, in uea_load_firmware()
821 unsigned int sum = p->code - dsp; in check_dsp_e4()
826 if (strcmp("STRATIPHY ANEXA", p->string_header) != 0 && in check_dsp_e4()
827 strcmp("STRATIPHY ANEXB", p->string_header) != 0) in check_dsp_e4()
832 u8 blockno = p->page_number_to_block_index[i]; in check_dsp_e4()
842 blockidx = &p->page_header[blockno++]; in check_dsp_e4()
843 if ((u8 *)(blockidx + 1) - dsp >= len) in check_dsp_e4()
846 if (le16_to_cpu(blockidx->PageNumber) != i) in check_dsp_e4()
849 l = E4_PAGE_BYTES(blockidx->PageSize); in check_dsp_e4()
851 l += le32_to_cpu(blockidx->PageOffset); in check_dsp_e4()
856 } while (blockidx->NotLastBlock); in check_dsp_e4()
863 * send data to the idma pipe
867 int ret = -ENOMEM; in uea_idma_write()
877 ret = usb_bulk_msg(sc->usb_dev, in uea_idma_write()
878 usb_sndbulkpipe(sc->usb_dev, UEA_IDMA_PIPE), in uea_idma_write()
887 return -EIO; in uea_idma_write()
915 ret = request_firmware(&sc->dsp_firm, dsp_name, &sc->usb_dev->dev); in request_dsp()
924 ret = check_dsp_e4(sc->dsp_firm->data, sc->dsp_firm->size); in request_dsp()
926 ret = check_dsp_e1(sc->dsp_firm->data, sc->dsp_firm->size); in request_dsp()
931 release_firmware(sc->dsp_firm); in request_dsp()
932 sc->dsp_firm = NULL; in request_dsp()
933 return -EILSEQ; in request_dsp()
945 u16 pageno = sc->pageno; in uea_load_page_e1()
946 u16 ovl = sc->ovl; in uea_load_page_e1()
957 release_firmware(sc->dsp_firm); in uea_load_page_e1()
958 sc->dsp_firm = NULL; in uea_load_page_e1()
961 if (sc->dsp_firm == NULL && request_dsp(sc) < 0) in uea_load_page_e1()
964 p = sc->dsp_firm->data; in uea_load_page_e1()
977 p = sc->dsp_firm->data + pageoffset; in uea_load_page_e1()
997 bi.wLast = cpu_to_le16((i == blockcount - 1) ? 1 : 0); in uea_load_page_e1()
999 /* send block info through the IDMA pipe */ in uea_load_page_e1()
1003 /* send block data through the IDMA pipe */ in uea_load_page_e1()
1023 struct l1_code *p = (struct l1_code *) sc->dsp_firm->data; in __uea_load_page_e4()
1024 u8 blockno = p->page_number_to_block_index[pageno]; in __uea_load_page_e4()
1035 blockidx = &p->page_header[blockno]; in __uea_load_page_e4()
1036 blocksize = E4_PAGE_BYTES(blockidx->PageSize); in __uea_load_page_e4()
1037 blockoffset = sc->dsp_firm->data + le32_to_cpu( in __uea_load_page_e4()
1038 blockidx->PageOffset); in __uea_load_page_e4()
1041 bi.dwAddress = cpu_to_be32(le32_to_cpu(blockidx->PageAddress)); in __uea_load_page_e4()
1047 le32_to_cpu(blockidx->PageAddress)); in __uea_load_page_e4()
1049 /* send block info through the IDMA pipe */ in __uea_load_page_e4()
1053 /* send block data through the IDMA pipe */ in __uea_load_page_e4()
1058 } while (blockidx->NotLastBlock); in __uea_load_page_e4()
1070 u8 pageno = sc->pageno; in uea_load_page_e4()
1079 release_firmware(sc->dsp_firm); in uea_load_page_e4()
1080 sc->dsp_firm = NULL; in uea_load_page_e4()
1083 if (sc->dsp_firm == NULL && request_dsp(sc) < 0) in uea_load_page_e4()
1086 p = (struct l1_code *) sc->dsp_firm->data; in uea_load_page_e4()
1087 if (pageno >= le16_to_cpu(p->page_header[0].PageNumber)) { in uea_load_page_e4()
1099 "sending Main DSP page %u\n", p->page_header[0].PageNumber); in uea_load_page_e4()
1101 for (i = 0; i < le16_to_cpu(p->page_header[0].PageNumber); i++) { in uea_load_page_e4()
1102 if (E4_IS_BOOT_PAGE(p->page_header[i].PageSize)) in uea_load_page_e4()
1112 bi.dwSize = cpu_to_be32(E4_PAGE_BYTES(p->page_header[0].PageSize)); in uea_load_page_e4()
1113 bi.dwAddress = cpu_to_be32(le32_to_cpu(p->page_header[0].PageAddress)); in uea_load_page_e4()
1115 /* send block info through the IDMA pipe */ in uea_load_page_e4()
1122 BUG_ON(sc->cmv_ack); in wake_up_cmv_ack()
1123 sc->cmv_ack = 1; in wake_up_cmv_ack()
1124 wake_up(&sc->sync_q); in wake_up_cmv_ack()
1129 int ret = uea_wait(sc, sc->cmv_ack , ACK_TIMEOUT); in wait_cmv_ack()
1131 sc->cmv_ack = 0; in wait_cmv_ack()
1139 return (ret == 0) ? -ETIMEDOUT : 0; in wait_cmv_ack()
1148 int ret = -ENOMEM; in uea_request()
1156 ret = usb_control_msg(sc->usb_dev, usb_sndctrlpipe(sc->usb_dev, 0), in uea_request()
1171 return -EIO; in uea_request()
1184 uea_vdbg(INS_TO_USBDEV(sc), "Function : %d-%d, Address : %c%c%c%c, " in uea_cmv_e1()
1193 sc->cmv_dsc.e1.function = function | 0x2; in uea_cmv_e1()
1194 sc->cmv_dsc.e1.idx++; in uea_cmv_e1()
1195 sc->cmv_dsc.e1.address = address; in uea_cmv_e1()
1196 sc->cmv_dsc.e1.offset = offset; in uea_cmv_e1()
1201 cmv.wIndex = cpu_to_le16(sc->cmv_dsc.e1.idx); in uea_cmv_e1()
1224 uea_vdbg(INS_TO_USBDEV(sc), "Function : %d-%d, Group : 0x%04x, " in uea_cmv_e4()
1230 sc->cmv_dsc.e4.function = function | (0x1 << 4); in uea_cmv_e4()
1231 sc->cmv_dsc.e4.offset = offset; in uea_cmv_e4()
1232 sc->cmv_dsc.e4.address = address; in uea_cmv_e4()
1233 sc->cmv_dsc.e4.group = group; in uea_cmv_e4()
1259 *data = sc->data; in uea_read_cmv_e1()
1274 *data = sc->data; in uea_read_cmv_e4()
1275 /* size is in 16-bit word quantities */ in uea_read_cmv_e4()
1277 *(data + 1) = sc->data1; in uea_read_cmv_e4()
1315 * ADI930 don't support it (-EPIPE error). in uea_set_bulk_timeout()
1319 altsetting[sc->modem_index] > 0 || in uea_set_bulk_timeout()
1320 sc->stats.phy.dsrate == dsrate) in uea_set_bulk_timeout()
1334 * return < 0 if an error occurs (-EAGAIN reboot needed)
1342 data = sc->stats.phy.state; in uea_stat_e1()
1344 ret = uea_read_cmv_e1(sc, E1_SA_STAT, 0, &sc->stats.phy.state); in uea_stat_e1()
1348 switch (GET_STATUS(sc->stats.phy.state)) { in uea_stat_e1()
1365 return -EAGAIN; in uea_stat_e1()
1369 "modem in test mode - not supported\n"); in uea_stat_e1()
1370 return -EAGAIN; in uea_stat_e1()
1372 case 7: /* fast-retain ... */ in uea_stat_e1()
1373 uea_info(INS_TO_USBDEV(sc), "modem in fast-retain mode\n"); in uea_stat_e1()
1377 GET_STATUS(sc->stats.phy.state)); in uea_stat_e1()
1378 return -EAGAIN; in uea_stat_e1()
1388 release_firmware(sc->dsp_firm); in uea_stat_e1()
1389 sc->dsp_firm = NULL; in uea_stat_e1()
1398 wake_up(&sc->sync_q); in uea_stat_e1()
1400 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 2, &sc->stats.phy.flags); in uea_stat_e1()
1403 sc->stats.phy.mflags |= sc->stats.phy.flags; in uea_stat_e1()
1408 if (sc->stats.phy.flags) { in uea_stat_e1()
1410 sc->stats.phy.flags); in uea_stat_e1()
1419 sc->stats.phy.dsrate = (data >> 16) * 32; in uea_stat_e1()
1420 sc->stats.phy.usrate = (data & 0xffff) * 32; in uea_stat_e1()
1421 UPDATE_ATM_STAT(link_rate, sc->stats.phy.dsrate * 1000 / 424); in uea_stat_e1()
1426 sc->stats.phy.dsattenuation = (data & 0xff) / 2; in uea_stat_e1()
1431 sc->stats.phy.usattenuation = (data & 0xff) / 2; in uea_stat_e1()
1433 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 25, &sc->stats.phy.dsmargin); in uea_stat_e1()
1437 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 49, &sc->stats.phy.usmargin); in uea_stat_e1()
1441 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 51, &sc->stats.phy.rxflow); in uea_stat_e1()
1445 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 52, &sc->stats.phy.txflow); in uea_stat_e1()
1449 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 54, &sc->stats.phy.dsunc); in uea_stat_e1()
1453 /* only for atu-c */ in uea_stat_e1()
1454 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 58, &sc->stats.phy.usunc); in uea_stat_e1()
1458 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 53, &sc->stats.phy.dscorr); in uea_stat_e1()
1462 /* only for atu-c */ in uea_stat_e1()
1463 ret = uea_read_cmv_e1(sc, E1_SA_DIAG, 57, &sc->stats.phy.uscorr); in uea_stat_e1()
1467 ret = uea_read_cmv_e1(sc, E1_SA_INFO, 8, &sc->stats.phy.vidco); in uea_stat_e1()
1471 ret = uea_read_cmv_e1(sc, E1_SA_INFO, 13, &sc->stats.phy.vidcpe); in uea_stat_e1()
1485 data = sc->stats.phy.state; in uea_stat_e4()
1488 ret = uea_read_cmv_e4(sc, 1, E4_SA_STAT, 0, 0, &sc->stats.phy.state); in uea_stat_e4()
1492 switch (sc->stats.phy.state) { in uea_stat_e4()
1509 return -EAGAIN; in uea_stat_e4()
1514 sc->stats.phy.state); in uea_stat_e4()
1525 release_firmware(sc->dsp_firm); in uea_stat_e4()
1526 sc->dsp_firm = NULL; in uea_stat_e4()
1535 wake_up(&sc->sync_q); in uea_stat_e4()
1539 * we should find the equivalent of eagle3- CMV in uea_stat_e4()
1542 ret = uea_read_cmv_e4(sc, 1, E4_SA_DIAG, 0, 0, &sc->stats.phy.flags); in uea_stat_e4()
1545 sc->stats.phy.mflags |= sc->stats.phy.flags; in uea_stat_e4()
1550 if (sc->stats.phy.flags) { in uea_stat_e4()
1552 sc->stats.phy.flags); in uea_stat_e4()
1553 if (sc->stats.phy.flags & 1) /* delineation LOSS */ in uea_stat_e4()
1554 return -EAGAIN; in uea_stat_e4()
1555 if (sc->stats.phy.flags & 0x4000) /* Reset Flag */ in uea_stat_e4()
1556 return -EAGAIN; in uea_stat_e4()
1565 sc->stats.phy.usrate = data / 1000; in uea_stat_e4()
1572 sc->stats.phy.dsrate = data / 1000; in uea_stat_e4()
1573 UPDATE_ATM_STAT(link_rate, sc->stats.phy.dsrate * 1000 / 424); in uea_stat_e4()
1578 sc->stats.phy.dsattenuation = data / 10; in uea_stat_e4()
1583 sc->stats.phy.usattenuation = data / 10; in uea_stat_e4()
1588 sc->stats.phy.dsmargin = data / 2; in uea_stat_e4()
1593 sc->stats.phy.usmargin = data / 10; in uea_stat_e4()
1605 if (cmv_file[sc->modem_index] == NULL) { in cmvs_file_name()
1616 file = cmv_file[sc->modem_index]; in cmvs_file_name()
1633 ret = request_firmware(fw, cmv_name, &sc->usb_dev->dev); in request_cmvs_old()
1641 data = (u8 *) (*fw)->data; in request_cmvs_old()
1642 size = (*fw)->size; in request_cmvs_old()
1655 return -EILSEQ; in request_cmvs_old()
1667 ret = request_firmware(fw, cmv_name, &sc->usb_dev->dev); in request_cmvs()
1682 size = (*fw)->size; in request_cmvs()
1683 data = (u8 *) (*fw)->data; in request_cmvs()
1697 size -= 4; in request_cmvs()
1703 size -= 4; in request_cmvs()
1716 return -EILSEQ; in request_cmvs()
1726 /* Enter in R-IDLE (cmv) until instructed otherwise */ in uea_send_cmvs_e1()
1732 ret = uea_read_cmv_e1(sc, E1_SA_INFO, 10, &sc->stats.phy.firmid); in uea_send_cmvs_e1()
1735 uea_info(INS_TO_USBDEV(sc), "ATU-R firmware version : %x\n", in uea_send_cmvs_e1()
1736 sc->stats.phy.firmid); in uea_send_cmvs_e1()
1775 /* Enter in R-ACT-REQ */ in uea_send_cmvs_e1()
1777 uea_vdbg(INS_TO_USBDEV(sc), "Entering in R-ACT-REQ state\n"); in uea_send_cmvs_e1()
1792 /* Enter in R-IDLE (cmv) until instructed otherwise */ in uea_send_cmvs_e4()
1799 ret = uea_read_cmv_e4(sc, 2, E4_SA_INFO, 55, 0, &sc->stats.phy.firmid); in uea_send_cmvs_e4()
1802 uea_info(INS_TO_USBDEV(sc), "ATU-R firmware version : %x\n", in uea_send_cmvs_e4()
1803 sc->stats.phy.firmid); in uea_send_cmvs_e4()
1830 /* Enter in R-ACT-REQ */ in uea_send_cmvs_e4()
1832 uea_vdbg(INS_TO_USBDEV(sc), "Entering in R-ACT-REQ state\n"); in uea_send_cmvs_e4()
1841 * - send reset commands through usb control pipe
1842 * - start workqueue for DSP loading
1843 * - send CMV options to modem
1848 u16 zero = 0; /* ;-) */ in uea_start_reset()
1855 sc->booting = 1; in uea_start_reset()
1860 sc->cmv_ack = 0; in uea_start_reset()
1864 memset(&sc->stats, 0, sizeof(struct uea_stats)); in uea_start_reset()
1866 /* tell the modem that we want to boot in IDMA mode */ in uea_start_reset()
1893 sc->cmv_dsc.e4.function = E4_MAKEFUNCTION(E4_ADSLDIRECTIVE, in uea_start_reset()
1896 sc->cmv_dsc.e1.function = E1_MAKEFUNCTION(E1_ADSLDIRECTIVE, in uea_start_reset()
1900 sc->booting = 0; in uea_start_reset()
1903 sc->pageno = 0; in uea_start_reset()
1904 sc->ovl = 0; in uea_start_reset()
1905 schedule_work(&sc->task); in uea_start_reset()
1914 ret = sc->send_cmvs(sc); in uea_start_reset()
1918 sc->reset = 0; in uea_start_reset()
1925 * if the modem don't request reboot (-EAGAIN).
1932 int ret = -EAGAIN; in uea_kthread()
1937 if (ret < 0 || sc->reset) in uea_kthread()
1940 ret = sc->stat(sc); in uea_kthread()
1941 if (ret != -EAGAIN) in uea_kthread()
1960 ret = request_firmware(&fw_entry, fw_name, &sc->usb_dev->dev); in load_XILINX_firmware()
1967 pfw = fw_entry->data; in load_XILINX_firmware()
1968 size = fw_entry->size; in load_XILINX_firmware()
1972 ret = -EILSEQ; in load_XILINX_firmware()
1976 ln = min(size - u, 64); in load_XILINX_firmware()
1993 /* Tell the modem we finish : de-assert reset */ in load_XILINX_firmware()
1995 ret = uea_send_modem_cmd(sc->usb_dev, 0xe, 1, &value); in load_XILINX_firmware()
1997 uea_err(sc->usb_dev, "elsa de-assert failed with error" in load_XILINX_firmware()
2010 struct cmv_dsc_e1 *dsc = &sc->cmv_dsc.e1; in uea_dispatch_cmv_e1()
2011 struct cmv_e1 *cmv = &intr->u.e1.s2.cmv; in uea_dispatch_cmv_e1()
2014 if (le16_to_cpu(cmv->wPreamble) != E1_PREAMBLE) in uea_dispatch_cmv_e1()
2017 if (cmv->bDirection != E1_MODEMTOHOST) in uea_dispatch_cmv_e1()
2023 if (cmv->bFunction != dsc->function) { in uea_dispatch_cmv_e1()
2025 && cmv->bFunction == E1_MAKEFUNCTION(2, 2)) { in uea_dispatch_cmv_e1()
2026 cmv->wIndex = cpu_to_le16(dsc->idx); in uea_dispatch_cmv_e1()
2027 put_unaligned_le32(dsc->address, in uea_dispatch_cmv_e1()
2028 &cmv->dwSymbolicAddress); in uea_dispatch_cmv_e1()
2029 cmv->wOffsetAddress = cpu_to_le16(dsc->offset); in uea_dispatch_cmv_e1()
2034 if (cmv->bFunction == E1_MAKEFUNCTION(E1_ADSLDIRECTIVE, in uea_dispatch_cmv_e1()
2042 if (le16_to_cpu(cmv->wIndex) != dsc->idx || in uea_dispatch_cmv_e1()
2043 get_unaligned_le32(&cmv->dwSymbolicAddress) != dsc->address || in uea_dispatch_cmv_e1()
2044 le16_to_cpu(cmv->wOffsetAddress) != dsc->offset) in uea_dispatch_cmv_e1()
2047 sc->data = get_unaligned_le32(&cmv->dwData); in uea_dispatch_cmv_e1()
2048 sc->data = sc->data << 16 | sc->data >> 16; in uea_dispatch_cmv_e1()
2057 E1_FUNCTION_TYPE(cmv->bFunction), in uea_dispatch_cmv_e1()
2058 E1_FUNCTION_SUBTYPE(cmv->bFunction)); in uea_dispatch_cmv_e1()
2065 le16_to_cpu(cmv->wPreamble), cmv->bDirection); in uea_dispatch_cmv_e1()
2072 struct cmv_dsc_e4 *dsc = &sc->cmv_dsc.e4; in uea_dispatch_cmv_e4()
2073 struct cmv_e4 *cmv = &intr->u.e4.s2.cmv; in uea_dispatch_cmv_e4()
2077 be16_to_cpu(cmv->wGroup), be16_to_cpu(cmv->wFunction), in uea_dispatch_cmv_e4()
2078 be16_to_cpu(cmv->wOffset), be16_to_cpu(cmv->wAddress), in uea_dispatch_cmv_e4()
2079 be32_to_cpu(cmv->dwData[0]), be32_to_cpu(cmv->dwData[1])); in uea_dispatch_cmv_e4()
2081 if (be16_to_cpu(cmv->wFunction) != dsc->function) in uea_dispatch_cmv_e4()
2084 if (be16_to_cpu(cmv->wFunction) == E4_MAKEFUNCTION(E4_ADSLDIRECTIVE, in uea_dispatch_cmv_e4()
2092 if (be16_to_cpu(cmv->wOffset) != dsc->offset || in uea_dispatch_cmv_e4()
2093 be16_to_cpu(cmv->wGroup) != dsc->group || in uea_dispatch_cmv_e4()
2094 be16_to_cpu(cmv->wAddress) != dsc->address) in uea_dispatch_cmv_e4()
2097 sc->data = be32_to_cpu(cmv->dwData[0]); in uea_dispatch_cmv_e4()
2098 sc->data1 = be32_to_cpu(cmv->dwData[1]); in uea_dispatch_cmv_e4()
2106 E4_FUNCTION_TYPE(cmv->wFunction), in uea_dispatch_cmv_e4()
2107 E4_FUNCTION_SUBTYPE(cmv->wFunction)); in uea_dispatch_cmv_e4()
2115 sc->pageno = intr->e1_bSwapPageNo; in uea_schedule_load_page_e1()
2116 sc->ovl = intr->e1_bOvl >> 4 | intr->e1_bOvl << 4; in uea_schedule_load_page_e1()
2117 schedule_work(&sc->task); in uea_schedule_load_page_e1()
2123 sc->pageno = intr->e4_bSwapPageNo; in uea_schedule_load_page_e4()
2124 schedule_work(&sc->task); in uea_schedule_load_page_e4()
2132 struct uea_softc *sc = urb->context; in uea_intr()
2133 struct intr_pkt *intr = urb->transfer_buffer; in uea_intr()
2134 int status = urb->status; in uea_intr()
2144 /* device-to-host interrupt */ in uea_intr()
2145 if (intr->bType != 0x08 || sc->booting) { in uea_intr()
2150 switch (le16_to_cpu(intr->wInterrupt)) { in uea_intr()
2152 sc->schedule_load_page(sc, intr); in uea_intr()
2156 sc->dispatch_cmv(sc, intr); in uea_intr()
2161 le16_to_cpu(intr->wInterrupt)); in uea_intr()
2165 usb_submit_urb(sc->urb_int, GFP_ATOMIC); in uea_intr()
2174 int ret = -ENOMEM; in uea_boot()
2181 sc->dispatch_cmv = uea_dispatch_cmv_e4; in uea_boot()
2182 sc->schedule_load_page = uea_schedule_load_page_e4; in uea_boot()
2183 sc->stat = uea_stat_e4; in uea_boot()
2184 sc->send_cmvs = uea_send_cmvs_e4; in uea_boot()
2185 INIT_WORK(&sc->task, uea_load_page_e4); in uea_boot()
2188 sc->dispatch_cmv = uea_dispatch_cmv_e1; in uea_boot()
2189 sc->schedule_load_page = uea_schedule_load_page_e1; in uea_boot()
2190 sc->stat = uea_stat_e1; in uea_boot()
2191 sc->send_cmvs = uea_send_cmvs_e1; in uea_boot()
2192 INIT_WORK(&sc->task, uea_load_page_e1); in uea_boot()
2195 init_waitqueue_head(&sc->sync_q); in uea_boot()
2200 if (intf->cur_altsetting->desc.bNumEndpoints < 1) { in uea_boot()
2201 ret = -ENODEV; in uea_boot()
2209 sc->urb_int = usb_alloc_urb(0, GFP_KERNEL); in uea_boot()
2210 if (!sc->urb_int) in uea_boot()
2213 usb_fill_int_urb(sc->urb_int, sc->usb_dev, in uea_boot()
2214 usb_rcvintpipe(sc->usb_dev, UEA_INTR_PIPE), in uea_boot()
2216 intf->cur_altsetting->endpoint[0].desc.bInterval); in uea_boot()
2218 ret = usb_submit_urb(sc->urb_int, GFP_KERNEL); in uea_boot()
2228 sc->kthread = kthread_create(uea_kthread, sc, "ueagle-atm"); in uea_boot()
2229 if (IS_ERR(sc->kthread)) { in uea_boot()
2231 ret = PTR_ERR(sc->kthread); in uea_boot()
2239 usb_kill_urb(sc->urb_int); in uea_boot()
2241 usb_free_urb(sc->urb_int); in uea_boot()
2242 sc->urb_int = NULL; in uea_boot()
2256 ret = kthread_stop(sc->kthread); in uea_stop()
2261 usb_kill_urb(sc->urb_int); in uea_stop()
2262 kfree(sc->urb_int->transfer_buffer); in uea_stop()
2263 usb_free_urb(sc->urb_int); in uea_stop()
2266 flush_work(&sc->task); in uea_stop()
2268 release_firmware(sc->dsp_firm); in uea_stop()
2286 return usbatm->driver_data; in dev_to_uea()
2292 int ret = -ENODEV; in stat_status_show()
2299 ret = snprintf(buf, 10, "%08x\n", sc->stats.phy.state); in stat_status_show()
2308 int ret = -ENODEV; in stat_status_store()
2315 sc->reset = 1; in stat_status_store()
2327 int ret = -ENODEV; in stat_human_status_show()
2337 switch (sc->stats.phy.state) { in stat_human_status_show()
2361 modem_state = GET_STATUS(sc->stats.phy.state); in stat_human_status_show()
2390 int ret = -ENODEV; in stat_delin_show()
2400 if (sc->stats.phy.flags & 0x4000) in stat_delin_show()
2402 else if (sc->stats.phy.flags & 0x0001) in stat_delin_show()
2405 if (sc->stats.phy.flags & 0x0C00) in stat_delin_show()
2407 else if (sc->stats.phy.flags & 0x0030) in stat_delin_show()
2424 int ret = -ENODEV; \
2431 ret = snprintf(buf, 10, "%08x\n", sc->stats.phy.name); \
2433 sc->stats.phy.name = 0; \
2464 (sc->usb_dev, sc->usb_dev->descriptor.iSerialNumber, mac_str, in uea_getesi()
2478 struct uea_softc *sc = usbatm->driver_data; in uea_atm_open()
2480 return uea_getesi(sc, atm_dev->esi); in uea_atm_open()
2485 struct uea_softc *sc = usbatm->driver_data; in uea_heavy()
2487 wait_event_interruptible(sc->sync_q, IS_OPERATIONAL(sc)); in uea_heavy()
2501 return -ENODEV; in claim_interface()
2541 int ret, ifnum = intf->altsetting->desc.bInterfaceNumber; in uea_bind()
2548 return -ENODEV; in uea_bind()
2550 usbatm->flags = (sync_wait[modem_index] ? 0 : UDSL_SKIP_HEAVY_INIT); in uea_bind()
2567 return -ENOMEM; in uea_bind()
2569 sc->usb_dev = usb; in uea_bind()
2570 usbatm->driver_data = sc; in uea_bind()
2571 sc->usbatm = usbatm; in uea_bind()
2572 sc->modem_index = (modem_index < NB_MODEM) ? modem_index++ : 0; in uea_bind()
2573 sc->driver_info = id->driver_info; in uea_bind()
2576 if (annex[sc->modem_index] == 1) in uea_bind()
2577 sc->annex = ANNEXA; in uea_bind()
2578 else if (annex[sc->modem_index] == 2) in uea_bind()
2579 sc->annex = ANNEXB; in uea_bind()
2581 else if (sc->driver_info & AUTO_ANNEX_A) in uea_bind()
2582 sc->annex = ANNEXA; in uea_bind()
2583 else if (sc->driver_info & AUTO_ANNEX_B) in uea_bind()
2584 sc->annex = ANNEXB; in uea_bind()
2586 sc->annex = (le16_to_cpu in uea_bind()
2587 (sc->usb_dev->descriptor.bcdDevice) & 0x80) ? ANNEXB : ANNEXA; in uea_bind()
2589 alt = altsetting[sc->modem_index]; in uea_bind()
2596 usbatm->flags |= UDSL_USE_ISOC | UDSL_IGNORE_EILSEQ; in uea_bind()
2603 ret = sysfs_create_group(&intf->dev.kobj, &attr_grp); in uea_bind()
2614 sysfs_remove_group(&intf->dev.kobj, &attr_grp); in uea_bind()
2622 struct uea_softc *sc = usbatm->driver_data; in uea_unbind()
2624 sysfs_remove_group(&intf->dev.kobj, &attr_grp); in uea_unbind()
2630 .driver_name = "ueagle-atm",
2647 le16_to_cpu(usb->descriptor.idVendor), in uea_probe()
2648 le16_to_cpu(usb->descriptor.idProduct), in uea_probe()
2649 le16_to_cpu(usb->descriptor.bcdDevice), in uea_probe()
2660 struct uea_softc *sc = usbatm->driver_data; in uea_probe()
2666 wake_up_process(sc->kthread); in uea_probe()
2675 int ifnum = intf->altsetting->desc.bInterfaceNumber; in uea_disconnect()
2679 * Pre-firmware device has one interface in uea_disconnect()
2681 if (usb->config->desc.bNumInterfaces != 1 && ifnum == 0) { in uea_disconnect()
2770 .name = "ueagle-atm",