Lines Matching full:instance

160 static void speedtch_set_swbuff(struct speedtch_instance_data *instance, int state)  in speedtch_set_swbuff()  argument
162 struct usbatm_data *usbatm = instance->usbatm; in speedtch_set_swbuff()
176 static void speedtch_test_sequence(struct speedtch_instance_data *instance) in speedtch_test_sequence() argument
178 struct usbatm_data *usbatm = instance->usbatm; in speedtch_test_sequence()
180 unsigned char *buf = instance->scratch_buffer; in speedtch_test_sequence()
220 buf[0] = instance->params.ModemMode; in speedtch_test_sequence()
232 instance->params.ModemOption, in speedtch_test_sequence()
238 buf[0] = instance->params.BMaxDSL & 0xff; in speedtch_test_sequence()
239 buf[1] = instance->params.BMaxDSL >> 8; in speedtch_test_sequence()
246 static int speedtch_upload_firmware(struct speedtch_instance_data *instance, in speedtch_upload_firmware() argument
251 struct usbatm_data *usbatm = instance->usbatm; in speedtch_upload_firmware()
342 if ((ret = usb_set_interface(usb_dev, INTERFACE_DATA, instance->params.altsetting)) < 0) { in speedtch_upload_firmware()
343 …usb_err(usbatm, "%s: setting interface to %d failed (%d)!\n", __func__, instance->params.altsettin… in speedtch_upload_firmware()
349 speedtch_set_swbuff(instance, 1); in speedtch_upload_firmware()
352 speedtch_test_sequence(instance); in speedtch_upload_firmware()
397 struct speedtch_instance_data *instance = usbatm->driver_data; in speedtch_heavy_init() local
408 if ((ret = speedtch_upload_firmware(instance, fw1, fw2)) < 0) in speedtch_heavy_init()
422 static int speedtch_read_status(struct speedtch_instance_data *instance) in speedtch_read_status() argument
424 struct usbatm_data *usbatm = instance->usbatm; in speedtch_read_status()
426 unsigned char *buf = instance->scratch_buffer; in speedtch_read_status()
474 static int speedtch_start_synchro(struct speedtch_instance_data *instance) in speedtch_start_synchro() argument
476 struct usbatm_data *usbatm = instance->usbatm; in speedtch_start_synchro()
478 unsigned char *buf = instance->scratch_buffer; in speedtch_start_synchro()
500 struct speedtch_instance_data *instance = in speedtch_check_status() local
503 struct usbatm_data *usbatm = instance->usbatm; in speedtch_check_status()
505 unsigned char *buf = instance->scratch_buffer; in speedtch_check_status()
513 ret = speedtch_read_status(instance); in speedtch_check_status()
516 instance->poll_delay = min(2 * instance->poll_delay, MAX_POLL_DELAY); in speedtch_check_status()
520 instance->poll_delay = max(instance->poll_delay / 2, MIN_POLL_DELAY); in speedtch_check_status()
524 if ((status != instance->last_status) || !status) { in speedtch_check_status()
530 if (instance->last_status) in speedtch_check_status()
533 ret = speedtch_start_synchro(instance); in speedtch_check_status()
571 instance->last_status = status; in speedtch_check_status()
577 struct speedtch_instance_data *instance = (void *)data; in speedtch_status_poll() local
579 schedule_work(&instance->status_check_work); in speedtch_status_poll()
582 if (instance->poll_delay < MAX_POLL_DELAY) in speedtch_status_poll()
583 mod_timer(&instance->status_check_timer, jiffies + msecs_to_jiffies(instance->poll_delay)); in speedtch_status_poll()
585 atm_warn(instance->usbatm, "Too many failures - disabling line status polling\n"); in speedtch_status_poll()
590 struct speedtch_instance_data *instance = (void *)data; in speedtch_resubmit_int() local
591 struct urb *int_urb = instance->int_urb; in speedtch_resubmit_int()
594 atm_dbg(instance->usbatm, "%s entered\n", __func__); in speedtch_resubmit_int()
599 schedule_work(&instance->status_check_work); in speedtch_resubmit_int()
601 atm_dbg(instance->usbatm, "%s: usb_submit_urb failed with result %d\n", __func__, ret); in speedtch_resubmit_int()
602 mod_timer(&instance->resubmit_timer, jiffies + msecs_to_jiffies(RESUBMIT_DELAY)); in speedtch_resubmit_int()
609 struct speedtch_instance_data *instance = int_urb->context; in speedtch_handle_int() local
610 struct usbatm_data *usbatm = instance->usbatm; in speedtch_handle_int()
627 if ((count == 6) && !memcmp(up_int, instance->int_data, 6)) { in speedtch_handle_int()
628 del_timer(&instance->status_check_timer); in speedtch_handle_int()
630 } else if ((count == 6) && !memcmp(down_int, instance->int_data, 6)) { in speedtch_handle_int()
637 printk(" %02x", instance->int_data[i]); in speedtch_handle_int()
642 if ((int_urb = instance->int_urb)) { in speedtch_handle_int()
644 schedule_work(&instance->status_check_work); in speedtch_handle_int()
654 if ((int_urb = instance->int_urb)) in speedtch_handle_int()
655 mod_timer(&instance->resubmit_timer, jiffies + msecs_to_jiffies(RESUBMIT_DELAY)); in speedtch_handle_int()
661 struct speedtch_instance_data *instance = usbatm->driver_data; in speedtch_atm_start() local
676 ret = speedtch_start_synchro(instance); in speedtch_atm_start()
679 if (instance->int_urb) { in speedtch_atm_start()
680 ret = usb_submit_urb(instance->int_urb, GFP_KERNEL); in speedtch_atm_start()
684 usb_free_urb(instance->int_urb); in speedtch_atm_start()
685 instance->int_urb = NULL; in speedtch_atm_start()
690 mod_timer(&instance->status_check_timer, jiffies + msecs_to_jiffies(1000)); in speedtch_atm_start()
697 struct speedtch_instance_data *instance = usbatm->driver_data; in speedtch_atm_stop() local
698 struct urb *int_urb = instance->int_urb; in speedtch_atm_stop()
702 del_timer_sync(&instance->status_check_timer); in speedtch_atm_stop()
708 instance->int_urb = NULL; /* signal shutdown */ in speedtch_atm_stop()
711 del_timer_sync(&instance->resubmit_timer); in speedtch_atm_stop()
714 * can run or be running, but instance->int_urb == NULL means that in speedtch_atm_stop()
718 del_timer_sync(&instance->resubmit_timer); in speedtch_atm_stop()
721 flush_work_sync(&instance->status_check_work); in speedtch_atm_stop()
776 struct speedtch_instance_data *instance; in speedtch_bind() local
812 instance = kzalloc(sizeof(*instance), GFP_KERNEL); in speedtch_bind()
814 if (!instance) { in speedtch_bind()
815 usb_err(usbatm, "%s: no memory for instance data!\n", __func__); in speedtch_bind()
820 instance->usbatm = usbatm; in speedtch_bind()
823 instance->params.altsetting = altsetting; in speedtch_bind()
824 instance->params.BMaxDSL = BMaxDSL; in speedtch_bind()
825 instance->params.ModemMode = ModemMode; in speedtch_bind()
826 memcpy(instance->params.ModemOption, DEFAULT_MODEM_OPTION, MODEM_OPTION_LENGTH); in speedtch_bind()
827 memcpy(instance->params.ModemOption, ModemOption, num_ModemOption); in speedtch_bind()
830 if (instance->params.altsetting) in speedtch_bind()
831 if ((ret = usb_set_interface(usb_dev, INTERFACE_DATA, instance->params.altsetting)) < 0) { in speedtch_bind()
832 …usb_err(usbatm, "%s: setting interface to %2d failed (%d)!\n", __func__, instance->params.altsetti… in speedtch_bind()
833 instance->params.altsetting = 0; /* fall back to default */ in speedtch_bind()
836 if (!instance->params.altsetting && use_isoc) in speedtch_bind()
862 if (!use_isoc && !instance->params.altsetting) in speedtch_bind()
868 if (!instance->params.altsetting) in speedtch_bind()
869 instance->params.altsetting = use_isoc ? DEFAULT_ISOC_ALTSETTING : DEFAULT_BULK_ALTSETTING; in speedtch_bind()
873 INIT_WORK(&instance->status_check_work, speedtch_check_status); in speedtch_bind()
874 init_timer(&instance->status_check_timer); in speedtch_bind()
876 instance->status_check_timer.function = speedtch_status_poll; in speedtch_bind()
877 instance->status_check_timer.data = (unsigned long)instance; in speedtch_bind()
878 instance->last_status = 0xff; in speedtch_bind()
879 instance->poll_delay = MIN_POLL_DELAY; in speedtch_bind()
881 init_timer(&instance->resubmit_timer); in speedtch_bind()
882 instance->resubmit_timer.function = speedtch_resubmit_int; in speedtch_bind()
883 instance->resubmit_timer.data = (unsigned long)instance; in speedtch_bind()
885 instance->int_urb = usb_alloc_urb(0, GFP_KERNEL); in speedtch_bind()
887 if (instance->int_urb) in speedtch_bind()
888 usb_fill_int_urb(instance->int_urb, usb_dev, in speedtch_bind()
890 instance->int_data, sizeof(instance->int_data), in speedtch_bind()
891 speedtch_handle_int, instance, 50); in speedtch_bind()
898 instance->scratch_buffer + OFFSET_7, SIZE_7, 500); in speedtch_bind()
910 usbatm->driver_data = instance; in speedtch_bind()
915 usb_free_urb(instance->int_urb); in speedtch_bind()
916 kfree(instance); in speedtch_bind()
925 struct speedtch_instance_data *instance = usbatm->driver_data; in speedtch_unbind() local
930 usb_free_urb(instance->int_urb); in speedtch_unbind()
931 kfree(instance); in speedtch_unbind()