Lines Matching refs:instance
144 static void speedtch_set_swbuff(struct speedtch_instance_data *instance, int state)
146 struct usbatm_data *usbatm = instance->usbatm;
160 static void speedtch_test_sequence(struct speedtch_instance_data *instance)
162 struct usbatm_data *usbatm = instance->usbatm;
164 unsigned char *buf = instance->scratch_buffer;
204 buf[0] = instance->params.ModemMode;
216 instance->params.ModemOption,
222 buf[0] = instance->params.BMaxDSL & 0xff;
223 buf[1] = instance->params.BMaxDSL >> 8;
230 static int speedtch_upload_firmware(struct speedtch_instance_data *instance,
235 struct usbatm_data *usbatm = instance->usbatm;
327 if ((ret = usb_set_interface(usb_dev, INTERFACE_DATA, instance->params.altsetting)) < 0) {
328 usb_err(usbatm, "%s: setting interface to %d failed (%d)!\n", __func__, instance->params.altsetting, ret);
334 speedtch_set_swbuff(instance, 1);
337 speedtch_test_sequence(instance);
382 struct speedtch_instance_data *instance = usbatm->driver_data;
393 if ((ret = speedtch_upload_firmware(instance, fw1, fw2)) < 0)
407 static int speedtch_read_status(struct speedtch_instance_data *instance)
409 struct usbatm_data *usbatm = instance->usbatm;
411 unsigned char *buf = instance->scratch_buffer;
459 static int speedtch_start_synchro(struct speedtch_instance_data *instance)
461 struct usbatm_data *usbatm = instance->usbatm;
463 unsigned char *buf = instance->scratch_buffer;
485 struct speedtch_instance_data *instance =
488 struct usbatm_data *usbatm = instance->usbatm;
490 unsigned char *buf = instance->scratch_buffer;
498 ret = speedtch_read_status(instance);
501 instance->poll_delay = min(2 * instance->poll_delay, MAX_POLL_DELAY);
505 instance->poll_delay = max(instance->poll_delay / 2, MIN_POLL_DELAY);
509 if ((status != instance->last_status) || !status) {
515 if (instance->last_status)
518 ret = speedtch_start_synchro(instance);
556 instance->last_status = status;
562 struct speedtch_instance_data *instance = timer_container_of(instance,
566 schedule_work(&instance->status_check_work);
569 if (instance->poll_delay < MAX_POLL_DELAY)
570 mod_timer(&instance->status_check_timer, jiffies + msecs_to_jiffies(instance->poll_delay));
572 atm_warn(instance->usbatm, "Too many failures - disabling line status polling\n");
577 struct speedtch_instance_data *instance = timer_container_of(instance,
580 struct urb *int_urb = instance->int_urb;
583 atm_dbg(instance->usbatm, "%s entered\n", __func__);
588 schedule_work(&instance->status_check_work);
590 atm_dbg(instance->usbatm, "%s: usb_submit_urb failed with result %d\n", __func__, ret);
591 mod_timer(&instance->resubmit_timer, jiffies + msecs_to_jiffies(RESUBMIT_DELAY));
598 struct speedtch_instance_data *instance = int_urb->context;
599 struct usbatm_data *usbatm = instance->usbatm;
616 if ((count == 6) && !memcmp(up_int, instance->int_data, 6)) {
617 timer_delete(&instance->status_check_timer);
619 } else if ((count == 6) && !memcmp(down_int, instance->int_data, 6)) {
626 printk(" %02x", instance->int_data[i]);
631 int_urb = instance->int_urb;
634 schedule_work(&instance->status_check_work);
644 int_urb = instance->int_urb;
646 mod_timer(&instance->resubmit_timer, jiffies + msecs_to_jiffies(RESUBMIT_DELAY));
652 struct speedtch_instance_data *instance = usbatm->driver_data;
667 ret = speedtch_start_synchro(instance);
670 if (instance->int_urb) {
671 ret = usb_submit_urb(instance->int_urb, GFP_KERNEL);
675 usb_free_urb(instance->int_urb);
676 instance->int_urb = NULL;
681 mod_timer(&instance->status_check_timer, jiffies + msecs_to_jiffies(1000));
688 struct speedtch_instance_data *instance = usbatm->driver_data;
689 struct urb *int_urb = instance->int_urb;
693 timer_delete_sync(&instance->status_check_timer);
699 instance->int_urb = NULL; /* signal shutdown */
702 timer_delete_sync(&instance->resubmit_timer);
705 * can run or be running, but instance->int_urb == NULL means that
709 timer_delete_sync(&instance->resubmit_timer);
712 flush_work(&instance->status_check_work);
769 struct speedtch_instance_data *instance;
806 instance = kzalloc(sizeof(*instance), GFP_KERNEL);
808 if (!instance) {
813 instance->usbatm = usbatm;
816 instance->params.altsetting = altsetting;
817 instance->params.BMaxDSL = BMaxDSL;
818 instance->params.ModemMode = ModemMode;
819 memcpy(instance->params.ModemOption, DEFAULT_MODEM_OPTION, MODEM_OPTION_LENGTH);
820 memcpy(instance->params.ModemOption, ModemOption, num_ModemOption);
823 if (instance->params.altsetting)
824 if ((ret = usb_set_interface(usb_dev, INTERFACE_DATA, instance->params.altsetting)) < 0) {
825 usb_err(usbatm, "%s: setting interface to %2d failed (%d)!\n", __func__, instance->params.altsetting, ret);
826 instance->params.altsetting = 0; /* fall back to default */
829 if (!instance->params.altsetting && use_isoc)
855 if (!use_isoc && !instance->params.altsetting)
861 if (!instance->params.altsetting)
862 instance->params.altsetting = use_isoc ? DEFAULT_ISOC_ALTSETTING : DEFAULT_BULK_ALTSETTING;
866 INIT_WORK(&instance->status_check_work, speedtch_check_status);
867 timer_setup(&instance->status_check_timer, speedtch_status_poll, 0);
868 instance->last_status = 0xff;
869 instance->poll_delay = MIN_POLL_DELAY;
871 timer_setup(&instance->resubmit_timer, speedtch_resubmit_int, 0);
873 instance->int_urb = usb_alloc_urb(0, GFP_KERNEL);
875 if (instance->int_urb)
876 usb_fill_int_urb(instance->int_urb, usb_dev,
878 instance->int_data, sizeof(instance->int_data),
879 speedtch_handle_int, instance, 16);
886 instance->scratch_buffer + OFFSET_7, SIZE_7, 500);
898 usbatm->driver_data = instance;
903 usb_free_urb(instance->int_urb);
904 kfree(instance);
913 struct speedtch_instance_data *instance = usbatm->driver_data;
918 usb_free_urb(instance->int_urb);
919 kfree(instance);