• Home
  • Raw
  • Download

Lines Matching full:instance

193 static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm,
211 struct cxacru_data *instance = to_usbatm_driver_data(\
214 if (instance == NULL) \
217 return cxacru_sysfs_showattr_##_type(instance->card_info[_value], buf); \
306 struct cxacru_data *instance = to_usbatm_driver_data( in mac_address_show() local
309 if (instance == NULL || instance->usbatm->atm_dev == NULL) in mac_address_show()
313 instance->usbatm->atm_dev->esi); in mac_address_show()
320 struct cxacru_data *instance = to_usbatm_driver_data( in adsl_state_show() local
324 if (instance == NULL) in adsl_state_show()
327 value = instance->card_info[CXINF_LINE_STARTABLE]; in adsl_state_show()
336 struct cxacru_data *instance = to_usbatm_driver_data( in adsl_state_store() local
351 if (instance == NULL) in adsl_state_store()
354 if (mutex_lock_interruptible(&instance->adsl_state_serialize)) in adsl_state_store()
358 ret = cxacru_cm(instance, CM_REQUEST_CHIP_ADSL_LINE_STOP, NULL, 0, NULL, 0); in adsl_state_store()
360 atm_err(instance->usbatm, "change adsl state:" in adsl_state_store()
378 ret = cxacru_cm(instance, CM_REQUEST_CHIP_ADSL_LINE_START, NULL, 0, NULL, 0); in adsl_state_store()
380 atm_err(instance->usbatm, "change adsl state:" in adsl_state_store()
401 mutex_lock(&instance->poll_state_serialize); in adsl_state_store()
402 switch (instance->poll_state) { in adsl_state_store()
405 instance->poll_state = CXPOLL_POLLING; in adsl_state_store()
410 instance->poll_state = CXPOLL_POLLING; in adsl_state_store()
417 mutex_unlock(&instance->poll_state_serialize); in adsl_state_store()
419 mutex_lock(&instance->poll_state_serialize); in adsl_state_store()
421 if (instance->poll_state == CXPOLL_POLLING) in adsl_state_store()
422 instance->poll_state = CXPOLL_STOPPING; in adsl_state_store()
423 mutex_unlock(&instance->poll_state_serialize); in adsl_state_store()
426 mutex_unlock(&instance->adsl_state_serialize); in adsl_state_store()
429 cxacru_poll_status(&instance->poll_work.work); in adsl_state_store()
439 struct cxacru_data *instance = to_usbatm_driver_data( in adsl_config_store() local
448 if (instance == NULL) in adsl_config_store()
482 ret = cxacru_cm(instance, CM_REQUEST_CARD_DATA_SET, in adsl_config_store()
485 atm_err(instance->usbatm, in adsl_config_store()
494 atm_info(instance->usbatm, "config%s\n", log); in adsl_config_store()
578 static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm, in cxacru_cm() argument
584 u8 *wbuf = instance->snd_buf; in cxacru_cm()
585 u8 *rbuf = instance->rcv_buf; in cxacru_cm()
591 usb_err(instance->usbatm, "requested transfer size too large (%d, %d)\n", in cxacru_cm()
597 mutex_lock(&instance->cm_serialize); in cxacru_cm()
600 init_completion(&instance->rcv_done); in cxacru_cm()
601 ret = usb_submit_urb(instance->rcv_urb, GFP_KERNEL); in cxacru_cm()
604 usb_err(instance->usbatm, "submit of read urb for cm %#x failed (%d)\n", in cxacru_cm()
617 instance->snd_urb->transfer_buffer_length = wbuflen; in cxacru_cm()
618 init_completion(&instance->snd_done); in cxacru_cm()
619 ret = usb_submit_urb(instance->snd_urb, GFP_KERNEL); in cxacru_cm()
622 usb_err(instance->usbatm, "submit of write urb for cm %#x failed (%d)\n", in cxacru_cm()
627 ret = cxacru_start_wait_urb(instance->snd_urb, &instance->snd_done, NULL); in cxacru_cm()
630 usb_err(instance->usbatm, "send of cm %#x failed (%d)\n", cm, ret); in cxacru_cm()
634 ret = cxacru_start_wait_urb(instance->rcv_urb, &instance->rcv_done, &actlen); in cxacru_cm()
637 usb_err(instance->usbatm, "receive of cm %#x failed (%d)\n", cm, ret); in cxacru_cm()
642 usb_err(instance->usbatm, "invalid response length to cm %#x: %d\n", in cxacru_cm()
652 usb_err(instance->usbatm, "wrong cm %#x in response to cm %#x\n", in cxacru_cm()
659 usb_err(instance->usbatm, "response to cm %#x failed: %#x\n", in cxacru_cm()
671 usb_dbg(instance->usbatm, "cm %#x\n", cm); in cxacru_cm()
673 mutex_unlock(&instance->cm_serialize); in cxacru_cm()
678 static int cxacru_cm_get_array(struct cxacru_data *instance, enum cxacru_cm_request cm, in cxacru_cm_get_array() argument
692 ret = cxacru_cm(instance, cm, NULL, 0, (u8 *) buf, buflen); in cxacru_cm_get_array()
703 usb_err(instance->usbatm, "invalid data length from cm %#x: %d\n", in cxacru_cm_get_array()
712 usb_err(instance->usbatm, "wrong index %#x in response to cm %#x\n", in cxacru_cm_get_array()
728 static int cxacru_card_status(struct cxacru_data *instance) in cxacru_card_status() argument
730 int ret = cxacru_cm(instance, CM_REQUEST_CARD_GET_STATUS, NULL, 0, NULL, 0); in cxacru_card_status()
733 usb_dbg(instance->usbatm, "cxacru_adsl_start: CARD_GET_STATUS returned %d\n", ret); in cxacru_card_status()
753 struct cxacru_data *instance = usbatm_instance->driver_data; in cxacru_atm_start() local
761 ret = cxacru_cm(instance, CM_REQUEST_CARD_GET_MAC_ADDRESS, NULL, 0, in cxacru_atm_start()
776 mutex_lock(&instance->adsl_state_serialize); in cxacru_atm_start()
777 ret = cxacru_cm(instance, CM_REQUEST_CHIP_ADSL_LINE_START, NULL, 0, NULL, 0); in cxacru_atm_start()
782 mutex_lock(&instance->poll_state_serialize); in cxacru_atm_start()
783 switch (instance->poll_state) { in cxacru_atm_start()
786 instance->poll_state = CXPOLL_POLLING; in cxacru_atm_start()
791 instance->poll_state = CXPOLL_POLLING; in cxacru_atm_start()
798 mutex_unlock(&instance->poll_state_serialize); in cxacru_atm_start()
799 mutex_unlock(&instance->adsl_state_serialize); in cxacru_atm_start()
805 cxacru_poll_status(&instance->poll_work.work); in cxacru_atm_start()
816 struct cxacru_data *instance = in cxacru_poll_status() local
819 struct usbatm_data *usbatm = instance->usbatm; in cxacru_poll_status()
824 ret = cxacru_cm_get_array(instance, CM_REQUEST_CARD_INFO_GET, buf, CXINF_MAX); in cxacru_poll_status()
829 mutex_lock(&instance->poll_state_serialize); in cxacru_poll_status()
830 if (instance->poll_state != CXPOLL_SHUTDOWN) { in cxacru_poll_status()
831 instance->poll_state = CXPOLL_STOPPED; in cxacru_poll_status()
837 mutex_unlock(&instance->poll_state_serialize); in cxacru_poll_status()
841 memcpy(instance->card_info, buf, sizeof(instance->card_info)); in cxacru_poll_status()
843 if (instance->adsl_status != buf[CXINF_LINE_STARTABLE]) { in cxacru_poll_status()
844 instance->adsl_status = buf[CXINF_LINE_STARTABLE]; in cxacru_poll_status()
846 switch (instance->adsl_status) { in cxacru_poll_status()
856 atm_printk(KERN_INFO, usbatm, "Unknown adsl status %02x\n", instance->adsl_status); in cxacru_poll_status()
861 if (instance->line_status == buf[CXINF_LINE_STATUS]) in cxacru_poll_status()
864 instance->line_status = buf[CXINF_LINE_STATUS]; in cxacru_poll_status()
865 switch (instance->line_status) { in cxacru_poll_status()
911 atm_info(usbatm, "Unknown line state %02x\n", instance->line_status); in cxacru_poll_status()
916 mutex_lock(&instance->poll_state_serialize); in cxacru_poll_status()
917 if (instance->poll_state == CXPOLL_STOPPING && in cxacru_poll_status()
918 instance->adsl_status == 1 && /* stopped */ in cxacru_poll_status()
919 instance->line_status == 0) /* down */ in cxacru_poll_status()
920 instance->poll_state = CXPOLL_STOPPED; in cxacru_poll_status()
922 if (instance->poll_state == CXPOLL_STOPPED) in cxacru_poll_status()
924 mutex_unlock(&instance->poll_state_serialize); in cxacru_poll_status()
927 schedule_delayed_work(&instance->poll_work, in cxacru_poll_status()
979 static void cxacru_upload_firmware(struct cxacru_data *instance, in cxacru_upload_firmware() argument
984 struct usbatm_data *usbatm = instance->usbatm; in cxacru_upload_firmware()
993 val = cpu_to_le32(instance->modem_type->pll_f_clk); in cxacru_upload_firmware()
1001 val = cpu_to_le32(instance->modem_type->pll_b_clk); in cxacru_upload_firmware()
1025 if (instance->modem_type->boot_rom_patch) { in cxacru_upload_firmware()
1042 if (instance->modem_type->boot_rom_patch) { in cxacru_upload_firmware()
1061 ret = cxacru_cm(instance, CM_REQUEST_CARD_GET_STATUS, NULL, 0, NULL, 0); in cxacru_upload_firmware()
1068 static int cxacru_find_firmware(struct cxacru_data *instance, in cxacru_find_firmware() argument
1071 struct usbatm_data *usbatm = instance->usbatm; in cxacru_find_firmware()
1092 struct cxacru_data *instance = usbatm_instance->driver_data; in cxacru_heavy_init() local
1093 int ret = cxacru_find_firmware(instance, "fw", &fw); in cxacru_heavy_init()
1100 if (instance->modem_type->boot_rom_patch) { in cxacru_heavy_init()
1101 ret = cxacru_find_firmware(instance, "bp", &bp); in cxacru_heavy_init()
1109 cxacru_upload_firmware(instance, fw, bp); in cxacru_heavy_init()
1111 if (instance->modem_type->boot_rom_patch) in cxacru_heavy_init()
1115 ret = cxacru_card_status(instance); in cxacru_heavy_init()
1127 struct cxacru_data *instance; in cxacru_bind() local
1132 /* instance init */ in cxacru_bind()
1133 instance = kzalloc(sizeof(*instance), GFP_KERNEL); in cxacru_bind()
1134 if (!instance) in cxacru_bind()
1137 instance->usbatm = usbatm_instance; in cxacru_bind()
1138 instance->modem_type = (struct cxacru_modem_type *) id->driver_info; in cxacru_bind()
1140 mutex_init(&instance->poll_state_serialize); in cxacru_bind()
1141 instance->poll_state = CXPOLL_STOPPED; in cxacru_bind()
1142 instance->line_status = -1; in cxacru_bind()
1143 instance->adsl_status = -1; in cxacru_bind()
1145 mutex_init(&instance->adsl_state_serialize); in cxacru_bind()
1147 instance->rcv_buf = (u8 *) __get_free_page(GFP_KERNEL); in cxacru_bind()
1148 if (!instance->rcv_buf) { in cxacru_bind()
1153 instance->snd_buf = (u8 *) __get_free_page(GFP_KERNEL); in cxacru_bind()
1154 if (!instance->snd_buf) { in cxacru_bind()
1159 instance->rcv_urb = usb_alloc_urb(0, GFP_KERNEL); in cxacru_bind()
1160 if (!instance->rcv_urb) { in cxacru_bind()
1164 instance->snd_urb = usb_alloc_urb(0, GFP_KERNEL); in cxacru_bind()
1165 if (!instance->snd_urb) { in cxacru_bind()
1178 usb_fill_int_urb(instance->rcv_urb, in cxacru_bind()
1180 instance->rcv_buf, PAGE_SIZE, in cxacru_bind()
1181 cxacru_blocking_completion, &instance->rcv_done, 1); in cxacru_bind()
1183 usb_fill_int_urb(instance->snd_urb, in cxacru_bind()
1185 instance->snd_buf, PAGE_SIZE, in cxacru_bind()
1186 cxacru_blocking_completion, &instance->snd_done, 4); in cxacru_bind()
1188 usb_fill_bulk_urb(instance->rcv_urb, in cxacru_bind()
1190 instance->rcv_buf, PAGE_SIZE, in cxacru_bind()
1191 cxacru_blocking_completion, &instance->rcv_done); in cxacru_bind()
1193 usb_fill_bulk_urb(instance->snd_urb, in cxacru_bind()
1195 instance->snd_buf, PAGE_SIZE, in cxacru_bind()
1196 cxacru_blocking_completion, &instance->snd_done); in cxacru_bind()
1199 mutex_init(&instance->cm_serialize); in cxacru_bind()
1201 INIT_DELAYED_WORK(&instance->poll_work, cxacru_poll_status); in cxacru_bind()
1203 usbatm_instance->driver_data = instance; in cxacru_bind()
1205 usbatm_instance->flags = (cxacru_card_status(instance) ? 0 : UDSL_SKIP_HEAVY_INIT); in cxacru_bind()
1210 free_page((unsigned long) instance->snd_buf); in cxacru_bind()
1211 free_page((unsigned long) instance->rcv_buf); in cxacru_bind()
1212 usb_free_urb(instance->snd_urb); in cxacru_bind()
1213 usb_free_urb(instance->rcv_urb); in cxacru_bind()
1214 kfree(instance); in cxacru_bind()
1222 struct cxacru_data *instance = usbatm_instance->driver_data; in cxacru_unbind() local
1227 if (!instance) { in cxacru_unbind()
1228 usb_dbg(usbatm_instance, "cxacru_unbind: NULL instance!\n"); in cxacru_unbind()
1232 mutex_lock(&instance->poll_state_serialize); in cxacru_unbind()
1233 BUG_ON(instance->poll_state == CXPOLL_SHUTDOWN); in cxacru_unbind()
1237 if (instance->poll_state == CXPOLL_STOPPED) in cxacru_unbind()
1241 instance->poll_state = CXPOLL_SHUTDOWN; in cxacru_unbind()
1242 mutex_unlock(&instance->poll_state_serialize); in cxacru_unbind()
1245 cancel_delayed_work_sync(&instance->poll_work); in cxacru_unbind()
1247 usb_kill_urb(instance->snd_urb); in cxacru_unbind()
1248 usb_kill_urb(instance->rcv_urb); in cxacru_unbind()
1249 usb_free_urb(instance->snd_urb); in cxacru_unbind()
1250 usb_free_urb(instance->rcv_urb); in cxacru_unbind()
1252 free_page((unsigned long) instance->snd_buf); in cxacru_unbind()
1253 free_page((unsigned long) instance->rcv_buf); in cxacru_unbind()
1255 kfree(instance); in cxacru_unbind()