Lines Matching refs:edge_serial
224 static void process_rcvd_data(struct edgeport_serial *edge_serial,
226 static void process_rcvd_status(struct edgeport_serial *edge_serial,
245 static void send_more_port_data(struct edgeport_serial *edge_serial,
254 static void get_manufacturing_desc(struct edgeport_serial *edge_serial);
255 static void get_boot_desc(struct edgeport_serial *edge_serial);
256 static void load_application_firmware(struct edgeport_serial *edge_serial);
275 static void update_edgeport_E2PROM(struct edgeport_serial *edge_serial) in update_edgeport_E2PROM() argument
277 struct device *dev = &edge_serial->serial->dev->dev; in update_edgeport_E2PROM()
289 switch (edge_serial->product_info.iDownloadFile) { in update_edgeport_E2PROM()
301 &edge_serial->serial->dev->dev); in update_edgeport_E2PROM()
314 BootCurVer = (edge_serial->boot_descriptor.MajorVersion << 24) + in update_edgeport_E2PROM()
315 (edge_serial->boot_descriptor.MinorVersion << 16) + in update_edgeport_E2PROM()
316 le16_to_cpu(edge_serial->boot_descriptor.BuildNumber); in update_edgeport_E2PROM()
323 edge_serial->boot_descriptor.MajorVersion, in update_edgeport_E2PROM()
324 edge_serial->boot_descriptor.MinorVersion, in update_edgeport_E2PROM()
325 le16_to_cpu(edge_serial->boot_descriptor.BuildNumber)); in update_edgeport_E2PROM()
330 edge_serial->boot_descriptor.MajorVersion, in update_edgeport_E2PROM()
331 edge_serial->boot_descriptor.MinorVersion, in update_edgeport_E2PROM()
332 le16_to_cpu(edge_serial->boot_descriptor.BuildNumber), in update_edgeport_E2PROM()
340 response = rom_write(edge_serial->serial, in update_edgeport_E2PROM()
346 dev_err(&edge_serial->serial->dev->dev, in update_edgeport_E2PROM()
392 static void dump_product_info(struct edgeport_serial *edge_serial, in dump_product_info() argument
395 struct device *dev = &edge_serial->serial->dev->dev; in dump_product_info()
427 static void get_product_info(struct edgeport_serial *edge_serial) in get_product_info() argument
429 struct edgeport_product_info *product_info = &edge_serial->product_info; in get_product_info()
433 …product_info->ProductId = (__u16)(le16_to_cpu(edge_serial->serial->dev->descriptor.idProduct) & ~I… in get_product_info()
434 product_info->NumPorts = edge_serial->manuf_descriptor.NumPorts; in get_product_info()
437 product_info->RomSize = edge_serial->manuf_descriptor.RomSize; in get_product_info()
438 product_info->RamSize = edge_serial->manuf_descriptor.RamSize; in get_product_info()
439 product_info->CpuRev = edge_serial->manuf_descriptor.CpuRev; in get_product_info()
440 product_info->BoardRev = edge_serial->manuf_descriptor.BoardRev; in get_product_info()
443 edge_serial->boot_descriptor.MajorVersion; in get_product_info()
445 edge_serial->boot_descriptor.MinorVersion; in get_product_info()
447 edge_serial->boot_descriptor.BuildNumber; in get_product_info()
450 edge_serial->manuf_descriptor.DescDate, in get_product_info()
451 sizeof(edge_serial->manuf_descriptor.DescDate)); in get_product_info()
454 if (le16_to_cpu(edge_serial->serial->dev->descriptor.idProduct) in get_product_info()
487 dump_product_info(edge_serial, product_info); in get_product_info()
557 struct edgeport_serial *edge_serial = urb->context; in edge_interrupt_callback() local
585 dev = &edge_serial->serial->dev->dev; in edge_interrupt_callback()
594 spin_lock(&edge_serial->es_lock); in edge_interrupt_callback()
595 edge_serial->rxBytesAvail += bytes_avail; in edge_interrupt_callback()
599 edge_serial->rxBytesAvail, in edge_interrupt_callback()
600 edge_serial->read_in_progress); in edge_interrupt_callback()
602 if (edge_serial->rxBytesAvail > 0 && in edge_interrupt_callback()
603 !edge_serial->read_in_progress) { in edge_interrupt_callback()
605 edge_serial->read_in_progress = true; in edge_interrupt_callback()
609 result = usb_submit_urb(edge_serial->read_urb, GFP_ATOMIC); in edge_interrupt_callback()
614 edge_serial->read_in_progress = false; in edge_interrupt_callback()
617 spin_unlock(&edge_serial->es_lock); in edge_interrupt_callback()
624 (portNumber < edge_serial->serial->num_ports)) { in edge_interrupt_callback()
627 port = edge_serial->serial->port[portNumber]; in edge_interrupt_callback()
642 send_more_port_data(edge_serial, in edge_interrupt_callback()
667 struct edgeport_serial *edge_serial = urb->context; in edge_bulk_in_callback() local
677 edge_serial->read_in_progress = false; in edge_bulk_in_callback()
683 edge_serial->read_in_progress = false; in edge_bulk_in_callback()
687 dev = &edge_serial->serial->dev->dev; in edge_bulk_in_callback()
692 spin_lock(&edge_serial->es_lock); in edge_bulk_in_callback()
695 edge_serial->rxBytesAvail -= raw_data_length; in edge_bulk_in_callback()
698 raw_data_length, edge_serial->rxBytesAvail); in edge_bulk_in_callback()
700 process_rcvd_data(edge_serial, data, urb->actual_length); in edge_bulk_in_callback()
703 if (edge_serial->rxBytesAvail > 0) { in edge_bulk_in_callback()
705 retval = usb_submit_urb(edge_serial->read_urb, GFP_ATOMIC); in edge_bulk_in_callback()
710 edge_serial->read_in_progress = false; in edge_bulk_in_callback()
713 edge_serial->read_in_progress = false; in edge_bulk_in_callback()
716 spin_unlock(&edge_serial->es_lock); in edge_bulk_in_callback()
801 struct edgeport_serial *edge_serial; in edge_open() local
810 edge_serial = usb_get_serial_data(serial); in edge_open()
811 if (edge_serial == NULL) in edge_open()
813 if (edge_serial->interrupt_in_buffer == NULL) { in edge_open()
817 edge_serial->interrupt_in_buffer = in edge_open()
819 edge_serial->interrupt_in_endpoint = in edge_open()
821 edge_serial->interrupt_read_urb = port0->interrupt_in_urb; in edge_open()
822 edge_serial->bulk_in_buffer = port0->bulk_in_buffer; in edge_open()
823 edge_serial->bulk_in_endpoint = in edge_open()
825 edge_serial->read_urb = port0->read_urb; in edge_open()
826 edge_serial->bulk_out_endpoint = in edge_open()
830 usb_fill_int_urb(edge_serial->interrupt_read_urb, in edge_open()
835 edge_serial->interrupt_read_urb->transfer_buffer_length, in edge_open()
836 edge_interrupt_callback, edge_serial, in edge_open()
837 edge_serial->interrupt_read_urb->interval); in edge_open()
840 usb_fill_bulk_urb(edge_serial->read_urb, serial->dev, in edge_open()
844 edge_serial->read_urb->transfer_buffer_length, in edge_open()
845 edge_bulk_in_callback, edge_serial); in edge_open()
846 edge_serial->read_in_progress = false; in edge_open()
851 response = usb_submit_urb(edge_serial->interrupt_read_urb, in edge_open()
1035 struct edgeport_serial *edge_serial; in edge_close() local
1039 edge_serial = usb_get_serial_data(port->serial); in edge_close()
1041 if (edge_serial == NULL || edge_port == NULL) in edge_close()
1049 if ((!edge_serial->is_epic) || in edge_close()
1050 ((edge_serial->is_epic) && in edge_close()
1051 (edge_serial->epic_descriptor.Supports.IOSPChase))) { in edge_close()
1064 if ((!edge_serial->is_epic) || in edge_close()
1065 ((edge_serial->is_epic) && in edge_close()
1066 (edge_serial->epic_descriptor.Supports.IOSPClose))) { in edge_close()
1194 static void send_more_port_data(struct edgeport_serial *edge_serial, in send_more_port_data() argument
1273 usb_fill_bulk_urb(urb, edge_serial->serial->dev, in send_more_port_data()
1274 usb_sndbulkpipe(edge_serial->serial->dev, in send_more_port_data()
1275 edge_serial->bulk_out_endpoint), in send_more_port_data()
1612 struct edgeport_serial *edge_serial = usb_get_serial_data(port->serial); in edge_break() local
1615 if ((!edge_serial->is_epic) || in edge_break()
1616 ((edge_serial->is_epic) && in edge_break()
1617 (edge_serial->epic_descriptor.Supports.IOSPChase))) { in edge_break()
1631 if ((!edge_serial->is_epic) || in edge_break()
1632 ((edge_serial->is_epic) && in edge_break()
1633 (edge_serial->epic_descriptor.Supports.IOSPSetClrBreak))) { in edge_break()
1654 static void process_rcvd_data(struct edgeport_serial *edge_serial, in process_rcvd_data() argument
1657 struct device *dev = &edge_serial->serial->dev->dev; in process_rcvd_data()
1673 switch (edge_serial->rxState) { in process_rcvd_data()
1675 edge_serial->rxHeader1 = *buffer; in process_rcvd_data()
1680 edge_serial->rxState = EXPECT_HDR2; in process_rcvd_data()
1685 edge_serial->rxHeader2 = *buffer; in process_rcvd_data()
1690 edge_serial->rxHeader1, edge_serial->rxHeader2); in process_rcvd_data()
1694 if (IS_CMD_STAT_HDR(edge_serial->rxHeader1)) { in process_rcvd_data()
1699 edge_serial->rxPort = in process_rcvd_data()
1700 IOSP_GET_HDR_PORT(edge_serial->rxHeader1); in process_rcvd_data()
1701 edge_serial->rxStatusCode = in process_rcvd_data()
1703 edge_serial->rxHeader1); in process_rcvd_data()
1706 edge_serial->rxStatusCode)) { in process_rcvd_data()
1711 edge_serial->rxStatusParam in process_rcvd_data()
1712 = edge_serial->rxHeader2; in process_rcvd_data()
1713 edge_serial->rxState = EXPECT_HDR3; in process_rcvd_data()
1718 process_rcvd_status(edge_serial, in process_rcvd_data()
1719 edge_serial->rxHeader2, 0); in process_rcvd_data()
1720 edge_serial->rxState = EXPECT_HDR1; in process_rcvd_data()
1723 edge_serial->rxPort = in process_rcvd_data()
1724 IOSP_GET_HDR_PORT(edge_serial->rxHeader1); in process_rcvd_data()
1725 edge_serial->rxBytesRemaining = in process_rcvd_data()
1727 edge_serial->rxHeader1, in process_rcvd_data()
1728 edge_serial->rxHeader2); in process_rcvd_data()
1731 edge_serial->rxPort, in process_rcvd_data()
1732 edge_serial->rxBytesRemaining); in process_rcvd_data()
1740 edge_serial->rxState = EXPECT_DATA; in process_rcvd_data()
1746 if (bufferLength < edge_serial->rxBytesRemaining) { in process_rcvd_data()
1749 edge_serial->rxState = EXPECT_DATA; in process_rcvd_data()
1752 rxLen = edge_serial->rxBytesRemaining; in process_rcvd_data()
1754 edge_serial->rxState = EXPECT_HDR1; in process_rcvd_data()
1758 edge_serial->rxBytesRemaining -= rxLen; in process_rcvd_data()
1763 port = edge_serial->serial->port[ in process_rcvd_data()
1764 edge_serial->rxPort]; in process_rcvd_data()
1769 edge_serial->rxPort); in process_rcvd_data()
1779 edge_serial->rxHeader3 = *buffer; in process_rcvd_data()
1785 process_rcvd_status(edge_serial, in process_rcvd_data()
1786 edge_serial->rxStatusParam, in process_rcvd_data()
1787 edge_serial->rxHeader3); in process_rcvd_data()
1788 edge_serial->rxState = EXPECT_HDR1; in process_rcvd_data()
1800 static void process_rcvd_status(struct edgeport_serial *edge_serial, in process_rcvd_status() argument
1807 __u8 code = edge_serial->rxStatusCode; in process_rcvd_status()
1810 port = edge_serial->serial->port[edge_serial->rxPort]; in process_rcvd_status()
1813 dev_err(&edge_serial->serial->dev->dev, in process_rcvd_status()
1815 __func__, edge_serial->rxPort); in process_rcvd_status()
1826 __func__, edge_serial->rxPort, byte3); in process_rcvd_status()
1842 __func__, edge_serial->rxPort, byte3); in process_rcvd_status()
1852 __func__, edge_serial->rxPort, byte2, edge_port->txCredits); in process_rcvd_status()
1882 __func__, edge_serial->rxPort, byte2); in process_rcvd_status()
1888 __func__, edge_serial->rxPort, byte2, byte3); in process_rcvd_status()
1901 __func__, edge_serial->rxPort, byte2); in process_rcvd_status()
2177 struct edgeport_serial *edge_serial = in write_cmd_usb() local
2194 usb_fill_bulk_urb(urb, edge_serial->serial->dev, in write_cmd_usb()
2195 usb_sndbulkpipe(edge_serial->serial->dev, in write_cmd_usb()
2196 edge_serial->bulk_out_endpoint), in write_cmd_usb()
2233 struct edgeport_serial *edge_serial = in send_cmd_write_baud_rate() local
2243 if (edge_serial->is_epic && in send_cmd_write_baud_rate()
2244 !edge_serial->epic_descriptor.Supports.IOSPSetBaudRate) { in send_cmd_write_baud_rate()
2327 struct edgeport_serial *edge_serial = in send_cmd_write_uart_register() local
2338 if (edge_serial->is_epic && in send_cmd_write_uart_register()
2339 !edge_serial->epic_descriptor.Supports.IOSPWriteMCR && in send_cmd_write_uart_register()
2345 if (edge_serial->is_epic && in send_cmd_write_uart_register()
2346 !edge_serial->epic_descriptor.Supports.IOSPWriteLCR && in send_cmd_write_uart_register()
2383 struct edgeport_serial *edge_serial = in change_port_settings() local
2468 if ((!edge_serial->is_epic) || in change_port_settings()
2469 ((edge_serial->is_epic) && in change_port_settings()
2470 (edge_serial->epic_descriptor.Supports.IOSPSetXChar))) { in change_port_settings()
2497 if ((!edge_serial->is_epic) || in change_port_settings()
2498 ((edge_serial->is_epic) && in change_port_settings()
2499 (edge_serial->epic_descriptor.Supports.IOSPSetRxFlow))) in change_port_settings()
2501 if ((!edge_serial->is_epic) || in change_port_settings()
2502 ((edge_serial->is_epic) && in change_port_settings()
2503 (edge_serial->epic_descriptor.Supports.IOSPSetTxFlow))) in change_port_settings()
2575 static void get_manufacturing_desc(struct edgeport_serial *edge_serial) in get_manufacturing_desc() argument
2577 struct device *dev = &edge_serial->serial->dev->dev; in get_manufacturing_desc()
2582 response = rom_read(edge_serial->serial, in get_manufacturing_desc()
2586 (__u8 *)(&edge_serial->manuf_descriptor)); in get_manufacturing_desc()
2594 edge_serial->manuf_descriptor.RomSize); in get_manufacturing_desc()
2596 edge_serial->manuf_descriptor.RamSize); in get_manufacturing_desc()
2598 edge_serial->manuf_descriptor.CpuRev); in get_manufacturing_desc()
2600 edge_serial->manuf_descriptor.BoardRev); in get_manufacturing_desc()
2602 edge_serial->manuf_descriptor.NumPorts); in get_manufacturing_desc()
2604 edge_serial->manuf_descriptor.DescDate[0], in get_manufacturing_desc()
2605 edge_serial->manuf_descriptor.DescDate[1], in get_manufacturing_desc()
2606 edge_serial->manuf_descriptor.DescDate[2]+1900); in get_manufacturing_desc()
2608 edge_serial->manuf_descriptor.SerialNumber, in get_manufacturing_desc()
2609 edge_serial->manuf_descriptor.SerNumLength/2); in get_manufacturing_desc()
2612 edge_serial->manuf_descriptor.AssemblyNumber, in get_manufacturing_desc()
2613 edge_serial->manuf_descriptor.AssemblyNumLength/2); in get_manufacturing_desc()
2616 edge_serial->manuf_descriptor.OemAssyNumber, in get_manufacturing_desc()
2617 edge_serial->manuf_descriptor.OemAssyNumLength/2); in get_manufacturing_desc()
2620 edge_serial->manuf_descriptor.UartType); in get_manufacturing_desc()
2622 edge_serial->manuf_descriptor.IonPid); in get_manufacturing_desc()
2624 edge_serial->manuf_descriptor.IonConfig); in get_manufacturing_desc()
2634 static void get_boot_desc(struct edgeport_serial *edge_serial) in get_boot_desc() argument
2636 struct device *dev = &edge_serial->serial->dev->dev; in get_boot_desc()
2641 response = rom_read(edge_serial->serial, in get_boot_desc()
2645 (__u8 *)(&edge_serial->boot_descriptor)); in get_boot_desc()
2652 le16_to_cpu(edge_serial->boot_descriptor.BootCodeLength)); in get_boot_desc()
2654 edge_serial->boot_descriptor.MajorVersion); in get_boot_desc()
2656 edge_serial->boot_descriptor.MinorVersion); in get_boot_desc()
2658 le16_to_cpu(edge_serial->boot_descriptor.BuildNumber)); in get_boot_desc()
2660 le16_to_cpu(edge_serial->boot_descriptor.Capabilities)); in get_boot_desc()
2662 edge_serial->boot_descriptor.UConfig0); in get_boot_desc()
2664 edge_serial->boot_descriptor.UConfig1); in get_boot_desc()
2673 static void load_application_firmware(struct edgeport_serial *edge_serial) in load_application_firmware() argument
2675 struct device *dev = &edge_serial->serial->dev->dev; in load_application_firmware()
2684 switch (edge_serial->product_info.iDownloadFile) { in load_application_firmware()
2704 &edge_serial->serial->dev->dev); in load_application_firmware()
2716 edge_serial->product_info.FirmwareMajorVersion = rec->data[0]; in load_application_firmware()
2717 edge_serial->product_info.FirmwareMinorVersion = rec->data[1]; in load_application_firmware()
2718 edge_serial->product_info.FirmwareBuildNumber = cpu_to_le16(build); in load_application_firmware()
2723 response = sram_write(edge_serial->serial, in load_application_firmware()
2729 dev_err(&edge_serial->serial->dev->dev, in load_application_firmware()
2738 response = usb_control_msg (edge_serial->serial->dev, in load_application_firmware()
2739 usb_sndctrlpipe(edge_serial->serial->dev, 0), in load_application_firmware()
2752 struct edgeport_serial *edge_serial; in edge_startup() local
2767 edge_serial = kzalloc(sizeof(struct edgeport_serial), GFP_KERNEL); in edge_startup()
2768 if (!edge_serial) in edge_startup()
2771 spin_lock_init(&edge_serial->es_lock); in edge_startup()
2772 edge_serial->serial = serial; in edge_startup()
2773 usb_set_serial_data(serial, edge_serial); in edge_startup()
2777 &edge_serial->name[0], MAX_NAME_LEN+1); in edge_startup()
2780 edge_serial->name[i++] = ' '; in edge_startup()
2782 &edge_serial->name[i], MAX_NAME_LEN+2 - i); in edge_startup()
2784 dev_info(&serial->dev->dev, "%s detected\n", edge_serial->name); in edge_startup()
2787 if (get_epic_descriptor(edge_serial) <= 0) { in edge_startup()
2789 memcpy(&edge_serial->epic_descriptor.Supports, descriptor, in edge_startup()
2793 get_manufacturing_desc(edge_serial); in edge_startup()
2796 get_boot_desc(edge_serial); in edge_startup()
2798 get_product_info(edge_serial); in edge_startup()
2803 if ((!edge_serial->is_epic) && in edge_startup()
2804 (edge_serial->product_info.NumPorts != serial->num_ports)) { in edge_startup()
2807 edge_serial->product_info.NumPorts, in edge_startup()
2814 if (!edge_serial->is_epic) { in edge_startup()
2816 load_application_firmware(edge_serial); in edge_startup()
2821 update_edgeport_E2PROM(edge_serial); in edge_startup()
2830 edge_serial->product_info.FirmwareMajorVersion, in edge_startup()
2831 edge_serial->product_info.FirmwareMinorVersion, in edge_startup()
2832 le16_to_cpu(edge_serial->product_info.FirmwareBuildNumber)); in edge_startup()
2839 if (edge_serial->is_epic) { in edge_startup()
2857 edge_serial->interrupt_read_urb = in edge_startup()
2859 if (!edge_serial->interrupt_read_urb) { in edge_startup()
2864 edge_serial->interrupt_in_buffer = in edge_startup()
2866 if (!edge_serial->interrupt_in_buffer) { in edge_startup()
2870 edge_serial->interrupt_in_endpoint = in edge_startup()
2875 edge_serial->interrupt_read_urb, in edge_startup()
2879 edge_serial->interrupt_in_buffer, in edge_startup()
2882 edge_serial, in edge_startup()
2894 edge_serial->read_urb = in edge_startup()
2896 if (!edge_serial->read_urb) { in edge_startup()
2901 edge_serial->bulk_in_buffer = in edge_startup()
2903 if (!edge_serial->bulk_in_buffer) { in edge_startup()
2907 edge_serial->bulk_in_endpoint = in edge_startup()
2911 usb_fill_bulk_urb(edge_serial->read_urb, dev, in edge_startup()
2914 edge_serial->bulk_in_buffer, in edge_startup()
2917 edge_serial); in edge_startup()
2925 edge_serial->bulk_out_endpoint = in edge_startup()
2938 usb_free_urb(edge_serial->interrupt_read_urb); in edge_startup()
2939 kfree(edge_serial->interrupt_in_buffer); in edge_startup()
2941 usb_free_urb(edge_serial->read_urb); in edge_startup()
2942 kfree(edge_serial->bulk_in_buffer); in edge_startup()
2944 kfree(edge_serial); in edge_startup()
2951 response = usb_submit_urb(edge_serial->interrupt_read_urb, in edge_startup()
2967 struct edgeport_serial *edge_serial = usb_get_serial_data(serial); in edge_disconnect() local
2969 if (edge_serial->is_epic) { in edge_disconnect()
2970 usb_kill_urb(edge_serial->interrupt_read_urb); in edge_disconnect()
2971 usb_kill_urb(edge_serial->read_urb); in edge_disconnect()
2982 struct edgeport_serial *edge_serial = usb_get_serial_data(serial); in edge_release() local
2984 if (edge_serial->is_epic) { in edge_release()
2985 usb_kill_urb(edge_serial->interrupt_read_urb); in edge_release()
2986 usb_free_urb(edge_serial->interrupt_read_urb); in edge_release()
2987 kfree(edge_serial->interrupt_in_buffer); in edge_release()
2989 usb_kill_urb(edge_serial->read_urb); in edge_release()
2990 usb_free_urb(edge_serial->read_urb); in edge_release()
2991 kfree(edge_serial->bulk_in_buffer); in edge_release()
2994 kfree(edge_serial); in edge_release()