Lines Matching full:data

65 	struct bcm203x_data *data = urb->context;  in bcm203x_complete()  local
73 data->state = BCM203X_ERROR; in bcm203x_complete()
77 switch (data->state) { in bcm203x_complete()
79 memcpy(data->buffer, "#", 1); in bcm203x_complete()
82 data->buffer, 1, bcm203x_complete, data); in bcm203x_complete()
84 data->state = BCM203X_SELECT_MEMORY; in bcm203x_complete()
87 schedule_work(&data->work); in bcm203x_complete()
92 data->buffer, 32, bcm203x_complete, data, 1); in bcm203x_complete()
94 data->state = BCM203X_CHECK_MEMORY; in bcm203x_complete()
96 if (usb_submit_urb(data->urb, GFP_ATOMIC) < 0) in bcm203x_complete()
101 if (data->buffer[0] != '#') { in bcm203x_complete()
103 data->state = BCM203X_ERROR; in bcm203x_complete()
107 data->state = BCM203X_LOAD_FIRMWARE; in bcm203x_complete()
110 if (data->fw_sent == data->fw_size) { in bcm203x_complete()
112 data->buffer, 32, bcm203x_complete, data, 1); in bcm203x_complete()
114 data->state = BCM203X_CHECK_FIRMWARE; in bcm203x_complete()
116 len = min_t(uint, data->fw_size - data->fw_sent, 4096); in bcm203x_complete()
119 data->fw_data + data->fw_sent, len, bcm203x_complete, data); in bcm203x_complete()
121 data->fw_sent += len; in bcm203x_complete()
124 if (usb_submit_urb(data->urb, GFP_ATOMIC) < 0) in bcm203x_complete()
129 if (data->buffer[0] != '.') { in bcm203x_complete()
131 data->state = BCM203X_ERROR; in bcm203x_complete()
135 data->state = BCM203X_RESET; in bcm203x_complete()
142 struct bcm203x_data *data = in bcm203x_work() local
145 if (atomic_read(&data->shutdown)) in bcm203x_work()
148 if (usb_submit_urb(data->urb, GFP_KERNEL) < 0) in bcm203x_work()
156 struct bcm203x_data *data; in bcm203x_probe() local
164 data = devm_kzalloc(&intf->dev, sizeof(*data), GFP_KERNEL); in bcm203x_probe()
165 if (!data) in bcm203x_probe()
168 data->udev = udev; in bcm203x_probe()
169 data->state = BCM203X_LOAD_MINIDRV; in bcm203x_probe()
171 data->urb = usb_alloc_urb(0, GFP_KERNEL); in bcm203x_probe()
172 if (!data->urb) in bcm203x_probe()
177 usb_free_urb(data->urb); in bcm203x_probe()
181 BT_DBG("minidrv data %p size %zu", firmware->data, firmware->size); in bcm203x_probe()
185 data->buffer = kmalloc(size, GFP_KERNEL); in bcm203x_probe()
186 if (!data->buffer) { in bcm203x_probe()
189 usb_free_urb(data->urb); in bcm203x_probe()
193 memcpy(data->buffer, firmware->data, firmware->size); in bcm203x_probe()
195 usb_fill_bulk_urb(data->urb, udev, usb_sndbulkpipe(udev, BCM203X_OUT_EP), in bcm203x_probe()
196 data->buffer, firmware->size, bcm203x_complete, data); in bcm203x_probe()
202 usb_free_urb(data->urb); in bcm203x_probe()
203 kfree(data->buffer); in bcm203x_probe()
207 BT_DBG("firmware data %p size %zu", firmware->data, firmware->size); in bcm203x_probe()
209 data->fw_data = kmemdup(firmware->data, firmware->size, GFP_KERNEL); in bcm203x_probe()
210 if (!data->fw_data) { in bcm203x_probe()
213 usb_free_urb(data->urb); in bcm203x_probe()
214 kfree(data->buffer); in bcm203x_probe()
218 data->fw_size = firmware->size; in bcm203x_probe()
219 data->fw_sent = 0; in bcm203x_probe()
223 INIT_WORK(&data->work, bcm203x_work); in bcm203x_probe()
225 usb_set_intfdata(intf, data); in bcm203x_probe()
228 schedule_work(&data->work); in bcm203x_probe()
235 struct bcm203x_data *data = usb_get_intfdata(intf); in bcm203x_disconnect() local
239 atomic_inc(&data->shutdown); in bcm203x_disconnect()
240 cancel_work_sync(&data->work); in bcm203x_disconnect()
242 usb_kill_urb(data->urb); in bcm203x_disconnect()
246 usb_free_urb(data->urb); in bcm203x_disconnect()
247 kfree(data->fw_data); in bcm203x_disconnect()
248 kfree(data->buffer); in bcm203x_disconnect()