Lines Matching refs: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 = devm_kzalloc(&intf->dev, sizeof(*data), GFP_KERNEL); in bcm203x_probe()
181 if (!data) in bcm203x_probe()
184 data->udev = udev; in bcm203x_probe()
185 data->state = BCM203X_LOAD_MINIDRV; in bcm203x_probe()
187 data->urb = usb_alloc_urb(0, GFP_KERNEL); in bcm203x_probe()
188 if (!data->urb) in bcm203x_probe()
193 usb_free_urb(data->urb); in bcm203x_probe()
197 BT_DBG("minidrv data %p size %zu", firmware->data, firmware->size); in bcm203x_probe()
201 data->buffer = kmalloc(size, GFP_KERNEL); in bcm203x_probe()
202 if (!data->buffer) { in bcm203x_probe()
205 usb_free_urb(data->urb); in bcm203x_probe()
209 memcpy(data->buffer, firmware->data, firmware->size); in bcm203x_probe()
211 usb_fill_bulk_urb(data->urb, udev, usb_sndbulkpipe(udev, BCM203X_OUT_EP), in bcm203x_probe()
212 data->buffer, firmware->size, bcm203x_complete, data); in bcm203x_probe()
218 usb_free_urb(data->urb); in bcm203x_probe()
219 kfree(data->buffer); in bcm203x_probe()
223 BT_DBG("firmware data %p size %zu", firmware->data, firmware->size); in bcm203x_probe()
225 data->fw_data = kmemdup(firmware->data, firmware->size, GFP_KERNEL); in bcm203x_probe()
226 if (!data->fw_data) { in bcm203x_probe()
229 usb_free_urb(data->urb); in bcm203x_probe()
230 kfree(data->buffer); in bcm203x_probe()
234 data->fw_size = firmware->size; in bcm203x_probe()
235 data->fw_sent = 0; in bcm203x_probe()
239 INIT_WORK(&data->work, bcm203x_work); in bcm203x_probe()
241 usb_set_intfdata(intf, data); in bcm203x_probe()
244 schedule_work(&data->work); in bcm203x_probe()
251 struct bcm203x_data *data = usb_get_intfdata(intf); in bcm203x_disconnect() local
255 atomic_inc(&data->shutdown); in bcm203x_disconnect()
256 cancel_work_sync(&data->work); in bcm203x_disconnect()
258 usb_kill_urb(data->urb); in bcm203x_disconnect()
262 usb_free_urb(data->urb); in bcm203x_disconnect()
263 kfree(data->fw_data); in bcm203x_disconnect()
264 kfree(data->buffer); in bcm203x_disconnect()