Lines Matching full:data
66 struct bcm203x_data *data = urb->context; in bcm203x_complete() local
74 data->state = BCM203X_ERROR; in bcm203x_complete()
78 switch (data->state) { in bcm203x_complete()
80 memcpy(data->buffer, "#", 1); in bcm203x_complete()
83 data->buffer, 1, bcm203x_complete, data); in bcm203x_complete()
85 data->state = BCM203X_SELECT_MEMORY; in bcm203x_complete()
88 schedule_work(&data->work); in bcm203x_complete()
93 data->buffer, 32, bcm203x_complete, data, 1); in bcm203x_complete()
95 data->state = BCM203X_CHECK_MEMORY; in bcm203x_complete()
97 if (usb_submit_urb(data->urb, GFP_ATOMIC) < 0) in bcm203x_complete()
102 if (data->buffer[0] != '#') { in bcm203x_complete()
104 data->state = BCM203X_ERROR; in bcm203x_complete()
108 data->state = BCM203X_LOAD_FIRMWARE; in bcm203x_complete()
111 if (data->fw_sent == data->fw_size) { in bcm203x_complete()
113 data->buffer, 32, bcm203x_complete, data, 1); in bcm203x_complete()
115 data->state = BCM203X_CHECK_FIRMWARE; in bcm203x_complete()
117 len = min_t(uint, data->fw_size - data->fw_sent, 4096); in bcm203x_complete()
120 data->fw_data + data->fw_sent, len, bcm203x_complete, data); in bcm203x_complete()
122 data->fw_sent += len; in bcm203x_complete()
125 if (usb_submit_urb(data->urb, GFP_ATOMIC) < 0) in bcm203x_complete()
130 if (data->buffer[0] != '.') { in bcm203x_complete()
132 data->state = BCM203X_ERROR; in bcm203x_complete()
136 data->state = BCM203X_RESET; in bcm203x_complete()
143 struct bcm203x_data *data = in bcm203x_work() local
146 if (atomic_read(&data->shutdown)) in bcm203x_work()
149 if (usb_submit_urb(data->urb, GFP_KERNEL) < 0) in bcm203x_work()
157 struct bcm203x_data *data; in bcm203x_probe() local
165 data = devm_kzalloc(&intf->dev, sizeof(*data), GFP_KERNEL); in bcm203x_probe()
166 if (!data) in bcm203x_probe()
169 data->udev = udev; in bcm203x_probe()
170 data->state = BCM203X_LOAD_MINIDRV; in bcm203x_probe()
172 data->urb = usb_alloc_urb(0, GFP_KERNEL); in bcm203x_probe()
173 if (!data->urb) in bcm203x_probe()
178 usb_free_urb(data->urb); in bcm203x_probe()
182 BT_DBG("minidrv data %p size %zu", firmware->data, firmware->size); in bcm203x_probe()
186 data->buffer = kmalloc(size, GFP_KERNEL); in bcm203x_probe()
187 if (!data->buffer) { in bcm203x_probe()
190 usb_free_urb(data->urb); in bcm203x_probe()
194 memcpy(data->buffer, firmware->data, firmware->size); in bcm203x_probe()
196 usb_fill_bulk_urb(data->urb, udev, usb_sndbulkpipe(udev, BCM203X_OUT_EP), in bcm203x_probe()
197 data->buffer, firmware->size, bcm203x_complete, data); in bcm203x_probe()
203 usb_free_urb(data->urb); in bcm203x_probe()
204 kfree(data->buffer); in bcm203x_probe()
208 BT_DBG("firmware data %p size %zu", firmware->data, firmware->size); in bcm203x_probe()
210 data->fw_data = kmemdup(firmware->data, firmware->size, GFP_KERNEL); in bcm203x_probe()
211 if (!data->fw_data) { in bcm203x_probe()
214 usb_free_urb(data->urb); in bcm203x_probe()
215 kfree(data->buffer); in bcm203x_probe()
219 data->fw_size = firmware->size; in bcm203x_probe()
220 data->fw_sent = 0; in bcm203x_probe()
224 INIT_WORK(&data->work, bcm203x_work); in bcm203x_probe()
226 usb_set_intfdata(intf, data); in bcm203x_probe()
229 schedule_work(&data->work); in bcm203x_probe()
236 struct bcm203x_data *data = usb_get_intfdata(intf); in bcm203x_disconnect() local
240 atomic_inc(&data->shutdown); in bcm203x_disconnect()
241 cancel_work_sync(&data->work); in bcm203x_disconnect()
243 usb_kill_urb(data->urb); in bcm203x_disconnect()
247 usb_free_urb(data->urb); in bcm203x_disconnect()
248 kfree(data->fw_data); in bcm203x_disconnect()
249 kfree(data->buffer); in bcm203x_disconnect()