Lines Matching full:data
81 struct bcm203x_data *data = urb->context; in bcm203x_complete() local
89 data->state = BCM203X_ERROR; in bcm203x_complete()
93 switch (data->state) { in bcm203x_complete()
95 memcpy(data->buffer, "#", 1); in bcm203x_complete()
98 data->buffer, 1, bcm203x_complete, data); in bcm203x_complete()
100 data->state = BCM203X_SELECT_MEMORY; in bcm203x_complete()
103 schedule_work(&data->work); in bcm203x_complete()
108 data->buffer, 32, bcm203x_complete, data, 1); in bcm203x_complete()
110 data->state = BCM203X_CHECK_MEMORY; in bcm203x_complete()
112 if (usb_submit_urb(data->urb, GFP_ATOMIC) < 0) in bcm203x_complete()
117 if (data->buffer[0] != '#') { in bcm203x_complete()
119 data->state = BCM203X_ERROR; in bcm203x_complete()
123 data->state = BCM203X_LOAD_FIRMWARE; in bcm203x_complete()
126 if (data->fw_sent == data->fw_size) { in bcm203x_complete()
128 data->buffer, 32, bcm203x_complete, data, 1); in bcm203x_complete()
130 data->state = BCM203X_CHECK_FIRMWARE; in bcm203x_complete()
132 len = min_t(uint, data->fw_size - data->fw_sent, 4096); in bcm203x_complete()
135 data->fw_data + data->fw_sent, len, bcm203x_complete, data); in bcm203x_complete()
137 data->fw_sent += len; in bcm203x_complete()
140 if (usb_submit_urb(data->urb, GFP_ATOMIC) < 0) in bcm203x_complete()
145 if (data->buffer[0] != '.') { in bcm203x_complete()
147 data->state = BCM203X_ERROR; in bcm203x_complete()
151 data->state = BCM203X_RESET; in bcm203x_complete()
158 struct bcm203x_data *data = in bcm203x_work() local
161 if (atomic_read(&data->shutdown)) in bcm203x_work()
164 if (usb_submit_urb(data->urb, GFP_KERNEL) < 0) in bcm203x_work()
172 struct bcm203x_data *data; in bcm203x_probe() local
180 data = kzalloc(sizeof(*data), GFP_KERNEL); in bcm203x_probe()
181 if (!data) { in bcm203x_probe()
182 BT_ERR("Can't allocate memory for data structure"); in bcm203x_probe()
186 data->udev = udev; in bcm203x_probe()
187 data->state = BCM203X_LOAD_MINIDRV; in bcm203x_probe()
189 data->urb = usb_alloc_urb(0, GFP_KERNEL); in bcm203x_probe()
190 if (!data->urb) { in bcm203x_probe()
192 kfree(data); in bcm203x_probe()
198 usb_free_urb(data->urb); in bcm203x_probe()
199 kfree(data); in bcm203x_probe()
203 BT_DBG("minidrv data %p size %zu", firmware->data, firmware->size); in bcm203x_probe()
207 data->buffer = kmalloc(size, GFP_KERNEL); in bcm203x_probe()
208 if (!data->buffer) { in bcm203x_probe()
211 usb_free_urb(data->urb); in bcm203x_probe()
212 kfree(data); in bcm203x_probe()
216 memcpy(data->buffer, firmware->data, firmware->size); in bcm203x_probe()
218 usb_fill_bulk_urb(data->urb, udev, usb_sndbulkpipe(udev, BCM203X_OUT_EP), in bcm203x_probe()
219 data->buffer, firmware->size, bcm203x_complete, data); in bcm203x_probe()
225 usb_free_urb(data->urb); in bcm203x_probe()
226 kfree(data->buffer); in bcm203x_probe()
227 kfree(data); in bcm203x_probe()
231 BT_DBG("firmware data %p size %zu", firmware->data, firmware->size); in bcm203x_probe()
233 data->fw_data = kmemdup(firmware->data, firmware->size, GFP_KERNEL); in bcm203x_probe()
234 if (!data->fw_data) { in bcm203x_probe()
237 usb_free_urb(data->urb); in bcm203x_probe()
238 kfree(data->buffer); in bcm203x_probe()
239 kfree(data); in bcm203x_probe()
243 data->fw_size = firmware->size; in bcm203x_probe()
244 data->fw_sent = 0; in bcm203x_probe()
248 INIT_WORK(&data->work, bcm203x_work); in bcm203x_probe()
250 usb_set_intfdata(intf, data); in bcm203x_probe()
253 schedule_work(&data->work); in bcm203x_probe()
260 struct bcm203x_data *data = usb_get_intfdata(intf); in bcm203x_disconnect() local
264 atomic_inc(&data->shutdown); in bcm203x_disconnect()
265 cancel_work_sync(&data->work); in bcm203x_disconnect()
267 usb_kill_urb(data->urb); in bcm203x_disconnect()
271 usb_free_urb(data->urb); in bcm203x_disconnect()
272 kfree(data->fw_data); in bcm203x_disconnect()
273 kfree(data->buffer); in bcm203x_disconnect()
274 kfree(data); in bcm203x_disconnect()