Lines Matching refs:client_data

242 #define cl_data_to_dev(client_data) ishtp_device((client_data)->cl_device)  argument
254 static int get_firmware_variant(struct ishtp_cl_data *client_data, in get_firmware_variant() argument
259 struct device *devc = ishtp_get_pci_device(client_data->cl_device); in get_firmware_variant()
282 static int loader_cl_send(struct ishtp_cl_data *client_data, in loader_cl_send() argument
288 struct ishtp_cl *loader_ishtp_cl = client_data->loader_ishtp_cl; in loader_cl_send()
290 dev_dbg(cl_data_to_dev(client_data), in loader_cl_send()
298 client_data->response.data = in_msg; in loader_cl_send()
299 client_data->response.max_size = in_size; in loader_cl_send()
300 client_data->response.error = 0; in loader_cl_send()
301 client_data->response.received = false; in loader_cl_send()
305 dev_err(cl_data_to_dev(client_data), in loader_cl_send()
310 wait_event_interruptible_timeout(client_data->response.wait_queue, in loader_cl_send()
311 client_data->response.received, in loader_cl_send()
313 if (!client_data->response.received) { in loader_cl_send()
314 dev_err(cl_data_to_dev(client_data), in loader_cl_send()
320 if (client_data->response.error < 0) in loader_cl_send()
321 return client_data->response.error; in loader_cl_send()
323 return client_data->response.size; in loader_cl_send()
339 struct ishtp_cl_data *client_data = in process_recv() local
343 if (!client_data->response.data) { in process_recv()
344 dev_err(cl_data_to_dev(client_data), in process_recv()
346 client_data->response.error = -EINVAL; in process_recv()
350 if (client_data->response.received) { in process_recv()
351 dev_err(cl_data_to_dev(client_data), in process_recv()
353 client_data->response.error = -EINVAL; in process_recv()
361 dev_warn(cl_data_to_dev(client_data), in process_recv()
363 client_data->response.error = -EBADMSG; in process_recv()
368 dev_err(cl_data_to_dev(client_data), in process_recv()
371 client_data->response.error = -EMSGSIZE; in process_recv()
377 dev_dbg(cl_data_to_dev(client_data), in process_recv()
387 dev_err(cl_data_to_dev(client_data), in process_recv()
390 client_data->response.error = -EPROTO; in process_recv()
394 if (data_len > client_data->response.max_size) { in process_recv()
395 dev_err(cl_data_to_dev(client_data), in process_recv()
397 data_len, client_data->response.max_size); in process_recv()
398 client_data->response.error = -EMSGSIZE; in process_recv()
404 dev_err(cl_data_to_dev(client_data), in process_recv()
406 client_data->response.error = -EIO; in process_recv()
411 dev_err(cl_data_to_dev(client_data), in process_recv()
414 client_data->response.error = -EIO; in process_recv()
419 client_data->response.size = data_len; in process_recv()
425 memcpy(client_data->response.data, in process_recv()
429 client_data->response.received = true; in process_recv()
437 wake_up_interruptible(&client_data->response.wait_queue); in process_recv()
469 static int ish_query_loader_prop(struct ishtp_cl_data *client_data, in ish_query_loader_prop() argument
480 rv = loader_cl_send(client_data, in ish_query_loader_prop()
486 client_data->flag_retry = true; in ish_query_loader_prop()
493 dev_err(cl_data_to_dev(client_data), in ish_query_loader_prop()
496 client_data->flag_retry = true; in ish_query_loader_prop()
505 dev_dbg(cl_data_to_dev(client_data), in ish_query_loader_prop()
514 dev_dbg(cl_data_to_dev(client_data), in ish_query_loader_prop()
523 dev_err(cl_data_to_dev(client_data), in ish_query_loader_prop()
533 dev_err(cl_data_to_dev(client_data), in ish_query_loader_prop()
553 static int ish_fw_xfer_ishtp(struct ishtp_cl_data *client_data, in ish_fw_xfer_ishtp() argument
566 client_data->flag_retry = true; in ish_fw_xfer_ishtp()
590 dev_dbg(cl_data_to_dev(client_data), in ish_fw_xfer_ishtp()
596 rv = loader_cl_send(client_data, in ish_fw_xfer_ishtp()
602 client_data->flag_retry = true; in ish_fw_xfer_ishtp()
633 static int ish_fw_xfer_direct_dma(struct ishtp_cl_data *client_data, in ish_fw_xfer_direct_dma() argument
643 struct device *devc = ishtp_get_pci_device(client_data->cl_device); in ish_fw_xfer_direct_dma()
665 client_data->flag_retry = true; in ish_fw_xfer_direct_dma()
672 dev_err(cl_data_to_dev(client_data), "DMA map failed\n"); in ish_fw_xfer_direct_dma()
673 client_data->flag_retry = true; in ish_fw_xfer_direct_dma()
707 dev_dbg(cl_data_to_dev(client_data), in ish_fw_xfer_direct_dma()
714 rv = loader_cl_send(client_data, in ish_fw_xfer_direct_dma()
720 client_data->flag_retry = true; in ish_fw_xfer_direct_dma()
748 static int ish_fw_start(struct ishtp_cl_data *client_data) in ish_fw_start() argument
755 return loader_cl_send(client_data, in ish_fw_start()
770 static int load_fw_from_host(struct ishtp_cl_data *client_data) in load_fw_from_host() argument
777 struct ishtp_cl *loader_ishtp_cl = client_data->loader_ishtp_cl; in load_fw_from_host()
779 client_data->flag_retry = false; in load_fw_from_host()
783 client_data->flag_retry = true; in load_fw_from_host()
789 rv = get_firmware_variant(client_data, filename); in load_fw_from_host()
793 rv = request_firmware(&fw, filename, cl_data_to_dev(client_data)); in load_fw_from_host()
799 rv = ish_query_loader_prop(client_data, fw, &fw_info); in load_fw_from_host()
807 rv = ish_fw_xfer_direct_dma(client_data, fw, fw_info); in load_fw_from_host()
809 rv = ish_fw_xfer_ishtp(client_data, fw); in load_fw_from_host()
811 dev_err(cl_data_to_dev(client_data), in load_fw_from_host()
820 rv = ish_fw_start(client_data); in load_fw_from_host()
825 dev_info(cl_data_to_dev(client_data), "ISH firmware %s loaded\n", in load_fw_from_host()
836 if (client_data->flag_retry && in load_fw_from_host()
837 client_data->retry_count++ < MAX_LOAD_ATTEMPTS) { in load_fw_from_host()
838 dev_warn(cl_data_to_dev(client_data), in load_fw_from_host()
843 dev_err(cl_data_to_dev(client_data), in load_fw_from_host()
851 struct ishtp_cl_data *client_data; in load_fw_from_host_handler() local
853 client_data = container_of(work, struct ishtp_cl_data, in load_fw_from_host_handler()
855 load_fw_from_host(client_data); in load_fw_from_host_handler()
869 struct ishtp_cl_data *client_data = in loader_init() local
872 dev_dbg(cl_data_to_dev(client_data), "reset flag: %d\n", reset); in loader_init()
876 dev_err(cl_data_to_dev(client_data), "ishtp_cl_link failed\n"); in loader_init()
888 dev_err(cl_data_to_dev(client_data), in loader_init()
900 dev_err(cl_data_to_dev(client_data), "Client connect fail\n"); in loader_init()
904 dev_dbg(cl_data_to_dev(client_data), "Client connected\n"); in loader_init()
906 ishtp_register_event_cb(client_data->cl_device, loader_cl_event_cb); in loader_init()
929 struct ishtp_cl_data *client_data; in reset_handler() local
933 client_data = container_of(work, struct ishtp_cl_data, in reset_handler()
936 loader_ishtp_cl = client_data->loader_ishtp_cl; in reset_handler()
937 cl_device = client_data->cl_device; in reset_handler()
949 ishtp_set_client_data(loader_ishtp_cl, client_data); in reset_handler()
950 client_data->loader_ishtp_cl = loader_ishtp_cl; in reset_handler()
951 client_data->cl_device = cl_device; in reset_handler()
960 load_fw_from_host(client_data); in reset_handler()
974 struct ishtp_cl_data *client_data; in loader_ishtp_cl_probe() local
977 client_data = devm_kzalloc(ishtp_device(cl_device), in loader_ishtp_cl_probe()
978 sizeof(*client_data), in loader_ishtp_cl_probe()
980 if (!client_data) in loader_ishtp_cl_probe()
988 ishtp_set_client_data(loader_ishtp_cl, client_data); in loader_ishtp_cl_probe()
989 client_data->loader_ishtp_cl = loader_ishtp_cl; in loader_ishtp_cl_probe()
990 client_data->cl_device = cl_device; in loader_ishtp_cl_probe()
992 init_waitqueue_head(&client_data->response.wait_queue); in loader_ishtp_cl_probe()
994 INIT_WORK(&client_data->work_ishtp_reset, in loader_ishtp_cl_probe()
996 INIT_WORK(&client_data->work_fw_load, in loader_ishtp_cl_probe()
1006 client_data->retry_count = 0; in loader_ishtp_cl_probe()
1009 schedule_work(&client_data->work_fw_load); in loader_ishtp_cl_probe()
1024 struct ishtp_cl_data *client_data; in loader_ishtp_cl_remove() local
1027 client_data = ishtp_get_client_data(loader_ishtp_cl); in loader_ishtp_cl_remove()
1035 cancel_work_sync(&client_data->work_fw_load); in loader_ishtp_cl_remove()
1036 cancel_work_sync(&client_data->work_ishtp_reset); in loader_ishtp_cl_remove()
1051 struct ishtp_cl_data *client_data; in loader_ishtp_cl_reset() local
1054 client_data = ishtp_get_client_data(loader_ishtp_cl); in loader_ishtp_cl_reset()
1056 schedule_work(&client_data->work_ishtp_reset); in loader_ishtp_cl_reset()