Lines Matching refs:kim_gdata

70 static void validate_firmware_response(struct kim_data_s *kim_gdata)  in validate_firmware_response()  argument
72 struct sk_buff *skb = kim_gdata->rx_skb; in validate_firmware_response()
83 memcpy(kim_gdata->resp_buffer, in validate_firmware_response()
84 kim_gdata->rx_skb->data, in validate_firmware_response()
85 kim_gdata->rx_skb->len); in validate_firmware_response()
86 complete_all(&kim_gdata->kim_rcvd); in validate_firmware_response()
87 kim_gdata->rx_state = ST_W4_PACKET_TYPE; in validate_firmware_response()
88 kim_gdata->rx_skb = NULL; in validate_firmware_response()
89 kim_gdata->rx_count = 0; in validate_firmware_response()
97 complete_all(&kim_gdata->kim_rcvd); in validate_firmware_response()
104 static inline int kim_check_data_len(struct kim_data_s *kim_gdata, int len) in kim_check_data_len() argument
106 register int room = skb_tailroom(kim_gdata->rx_skb); in kim_check_data_len()
111 validate_firmware_response(kim_gdata); in kim_check_data_len()
118 kfree_skb(kim_gdata->rx_skb); in kim_check_data_len()
123 kim_gdata->rx_state = ST_W4_DATA; in kim_check_data_len()
124 kim_gdata->rx_count = len; in kim_check_data_len()
130 kim_gdata->rx_state = ST_W4_PACKET_TYPE; in kim_check_data_len()
131 kim_gdata->rx_skb = NULL; in kim_check_data_len()
132 kim_gdata->rx_count = 0; in kim_check_data_len()
143 static void kim_int_recv(struct kim_data_s *kim_gdata, in kim_int_recv() argument
159 if (kim_gdata->rx_count) { in kim_int_recv()
160 len = min_t(unsigned int, kim_gdata->rx_count, count); in kim_int_recv()
161 memcpy(skb_put(kim_gdata->rx_skb, len), ptr, len); in kim_int_recv()
162 kim_gdata->rx_count -= len; in kim_int_recv()
166 if (kim_gdata->rx_count) in kim_int_recv()
170 switch (kim_gdata->rx_state) { in kim_int_recv()
174 validate_firmware_response(kim_gdata); in kim_int_recv()
175 kim_gdata->rx_state = ST_W4_PACKET_TYPE; in kim_int_recv()
176 kim_gdata->rx_skb = NULL; in kim_int_recv()
181 (unsigned char *)&kim_gdata->rx_skb->data[1]; in kim_int_recv()
183 kim_check_data_len(kim_gdata, *plen); in kim_int_recv()
190 kim_gdata->rx_state = ST_W4_HEADER; in kim_int_recv()
191 kim_gdata->rx_count = 2; in kim_int_recv()
202 kim_gdata->rx_skb = in kim_int_recv()
204 if (!kim_gdata->rx_skb) { in kim_int_recv()
206 kim_gdata->rx_state = ST_W4_PACKET_TYPE; in kim_int_recv()
207 kim_gdata->rx_count = 0; in kim_int_recv()
210 skb_reserve(kim_gdata->rx_skb, 8); in kim_int_recv()
211 kim_gdata->rx_skb->cb[0] = 4; in kim_int_recv()
212 kim_gdata->rx_skb->cb[1] = 0; in kim_int_recv()
218 static long read_local_version(struct kim_data_s *kim_gdata, char *bts_scr_name) in read_local_version() argument
226 reinit_completion(&kim_gdata->kim_rcvd); in read_local_version()
227 if (4 != st_int_write(kim_gdata->core_data, read_ver_cmd, 4)) { in read_local_version()
233 &kim_gdata->kim_rcvd, msecs_to_jiffies(CMD_RESP_TIME)); in read_local_version()
238 reinit_completion(&kim_gdata->kim_rcvd); in read_local_version()
244 MAKEWORD(kim_gdata->resp_buffer[12], in read_local_version()
245 kim_gdata->resp_buffer[13]); in read_local_version()
257 kim_gdata->version.full = version; in read_local_version()
258 kim_gdata->version.chip = chip; in read_local_version()
259 kim_gdata->version.maj_ver = maj_ver; in read_local_version()
260 kim_gdata->version.min_ver = min_ver; in read_local_version()
291 static long download_firmware(struct kim_data_s *kim_gdata) in download_firmware() argument
302 err = read_local_version(kim_gdata, bts_scr_name); in download_firmware()
308 request_firmware(&kim_gdata->fw_entry, bts_scr_name, in download_firmware()
309 &kim_gdata->kim_pdev->dev); in download_firmware()
310 if (unlikely((err != 0) || (kim_gdata->fw_entry->data == NULL) || in download_firmware()
311 (kim_gdata->fw_entry->size == 0))) { in download_firmware()
316 ptr = (void *)kim_gdata->fw_entry->data; in download_firmware()
317 len = kim_gdata->fw_entry->size; in download_firmware()
351 st_get_uart_wr_room(kim_gdata->core_data); in download_firmware()
355 release_firmware(kim_gdata->fw_entry); in download_firmware()
366 release_firmware(kim_gdata->fw_entry); in download_firmware()
372 reinit_completion(&kim_gdata->kim_rcvd); in download_firmware()
379 err = st_int_write(kim_gdata->core_data, in download_firmware()
383 release_firmware(kim_gdata->fw_entry); in download_firmware()
394 release_firmware(kim_gdata->fw_entry); in download_firmware()
401 &kim_gdata->kim_rcvd, in download_firmware()
406 release_firmware(kim_gdata->fw_entry); in download_firmware()
409 reinit_completion(&kim_gdata->kim_rcvd); in download_firmware()
425 release_firmware(kim_gdata->fw_entry); in download_firmware()
439 struct kim_data_s *kim_gdata = st_gdata->kim_data; in st_kim_recv() local
444 kim_int_recv(kim_gdata, data, count); in st_kim_recv()
453 struct kim_data_s *kim_gdata = (struct kim_data_s *)kim_data; in st_kim_complete() local
454 complete(&kim_gdata->ldisc_installed); in st_kim_complete()
469 struct kim_data_s *kim_gdata = (struct kim_data_s *)kim_data; in st_kim_start() local
472 if (kim_gdata->kim_pdev->dev.of_node) { in st_kim_start()
476 pdata = kim_gdata->kim_pdev->dev.platform_data; in st_kim_start()
482 pdata->chip_enable(kim_gdata); in st_kim_start()
485 gpio_set_value(kim_gdata->nshutdown, GPIO_LOW); in st_kim_start()
487 gpio_set_value(kim_gdata->nshutdown, GPIO_HIGH); in st_kim_start()
490 reinit_completion(&kim_gdata->ldisc_installed); in st_kim_start()
492 kim_gdata->ldisc_install = 1; in st_kim_start()
494 sysfs_notify(&kim_gdata->kim_pdev->dev.kobj, in st_kim_start()
498 &kim_gdata->ldisc_installed, msecs_to_jiffies(LDISC_TIME)); in st_kim_start()
503 err = st_kim_stop(kim_gdata); in st_kim_start()
508 err = download_firmware(kim_gdata); in st_kim_start()
513 err = st_kim_stop(kim_gdata); in st_kim_start()
536 struct kim_data_s *kim_gdata = (struct kim_data_s *)kim_data; in st_kim_stop() local
538 struct tty_struct *tty = kim_gdata->core_data->tty; in st_kim_stop()
540 reinit_completion(&kim_gdata->ldisc_installed); in st_kim_stop()
542 if (kim_gdata->kim_pdev->dev.of_node) { in st_kim_stop()
546 pdata = kim_gdata->kim_pdev->dev.platform_data; in st_kim_stop()
557 kim_gdata->ldisc_install = 0; in st_kim_stop()
558 sysfs_notify(&kim_gdata->kim_pdev->dev.kobj, NULL, "install"); in st_kim_stop()
562 &kim_gdata->ldisc_installed, msecs_to_jiffies(LDISC_TIME)); in st_kim_stop()
569 gpio_set_value(kim_gdata->nshutdown, GPIO_LOW); in st_kim_stop()
571 gpio_set_value(kim_gdata->nshutdown, GPIO_HIGH); in st_kim_stop()
573 gpio_set_value(kim_gdata->nshutdown, GPIO_LOW); in st_kim_stop()
577 pdata->chip_disable(kim_gdata); in st_kim_stop()
587 struct kim_data_s *kim_gdata = (struct kim_data_s *)s->private; in show_version() local
588 seq_printf(s, "%04X %d.%d.%d\n", kim_gdata->version.full, in show_version()
589 kim_gdata->version.chip, kim_gdata->version.maj_ver, in show_version()
590 kim_gdata->version.min_ver); in show_version()
596 struct kim_data_s *kim_gdata = (struct kim_data_s *)s->private; in show_list() local
597 kim_st_list_protocols(kim_gdata->core_data, s); in show_list()
694 struct kim_data_s *kim_gdata; in st_kim_ref() local
699 kim_gdata = platform_get_drvdata(pdev); in st_kim_ref()
700 if (!kim_gdata) in st_kim_ref()
703 *core_data = kim_gdata->core_data; in st_kim_ref()
773 struct kim_data_s *kim_gdata; in kim_probe() local
795 kim_gdata = kzalloc(sizeof(struct kim_data_s), GFP_ATOMIC); in kim_probe()
796 if (!kim_gdata) { in kim_probe()
800 platform_set_drvdata(pdev, kim_gdata); in kim_probe()
802 err = st_core_init(&kim_gdata->core_data); in kim_probe()
809 kim_gdata->core_data->kim_data = kim_gdata; in kim_probe()
812 kim_gdata->nshutdown = pdata->nshutdown_gpio; in kim_probe()
813 err = gpio_request(kim_gdata->nshutdown, "kim"); in kim_probe()
815 pr_err(" gpio %d request failed ", kim_gdata->nshutdown); in kim_probe()
820 err = gpio_direction_output(kim_gdata->nshutdown, 0); in kim_probe()
822 pr_err(" unable to configure gpio %d", kim_gdata->nshutdown); in kim_probe()
827 kim_gdata->kim_pdev = pdev; in kim_probe()
828 init_completion(&kim_gdata->kim_rcvd); in kim_probe()
829 init_completion(&kim_gdata->ldisc_installed); in kim_probe()
838 strncpy(kim_gdata->dev_name, pdata->dev_name, UART_DEV_NAME_LEN); in kim_probe()
839 kim_gdata->flow_cntrl = pdata->flow_cntrl; in kim_probe()
840 kim_gdata->baud_rate = pdata->baud_rate; in kim_probe()
850 kim_gdata, &version_debugfs_fops); in kim_probe()
852 kim_gdata, &list_debugfs_fops); in kim_probe()
856 st_core_exit(kim_gdata->core_data); in kim_probe()
859 kfree(kim_gdata); in kim_probe()
868 struct kim_data_s *kim_gdata; in kim_remove() local
877 kim_gdata = platform_get_drvdata(pdev); in kim_remove()
889 kim_gdata->kim_pdev = NULL; in kim_remove()
890 st_core_exit(kim_gdata->core_data); in kim_remove()
892 kfree(kim_gdata); in kim_remove()
893 kim_gdata = NULL; in kim_remove()