Lines Matching refs:phy

113 static int st21nfca_hci_platform_init(struct st21nfca_i2c_phy *phy)  in st21nfca_hci_platform_init()  argument
121 r = i2c_master_send(phy->i2c_dev, reboot_cmd, in st21nfca_hci_platform_init()
133 r = i2c_master_recv(phy->i2c_dev, tmp, in st21nfca_hci_platform_init()
154 struct st21nfca_i2c_phy *phy = phy_id; in st21nfca_hci_i2c_enable() local
156 gpio_set_value(phy->gpio_ena, 1); in st21nfca_hci_i2c_enable()
157 phy->powered = 1; in st21nfca_hci_i2c_enable()
158 phy->run_mode = ST21NFCA_HCI_MODE; in st21nfca_hci_i2c_enable()
167 struct st21nfca_i2c_phy *phy = phy_id; in st21nfca_hci_i2c_disable() local
170 gpio_set_value(phy->gpio_ena, 0); in st21nfca_hci_i2c_disable()
172 phy->powered = 0; in st21nfca_hci_i2c_disable()
206 struct st21nfca_i2c_phy *phy = phy_id; in st21nfca_hci_i2c_write() local
207 struct i2c_client *client = phy->i2c_dev; in st21nfca_hci_i2c_write()
213 if (phy->hard_fault != 0) in st21nfca_hci_i2c_write()
214 return phy->hard_fault; in st21nfca_hci_i2c_write()
252 mutex_lock(&phy->phy_lock); in st21nfca_hci_i2c_write()
258 mutex_unlock(&phy->phy_lock); in st21nfca_hci_i2c_write()
369 static int st21nfca_hci_i2c_read(struct st21nfca_i2c_phy *phy, in st21nfca_hci_i2c_read() argument
375 struct i2c_client *client = phy->i2c_dev; in st21nfca_hci_i2c_read()
377 if (phy->current_read_len < ARRAY_SIZE(len_seq)) { in st21nfca_hci_i2c_read()
378 len = len_seq[phy->current_read_len]; in st21nfca_hci_i2c_read()
386 mutex_lock(&phy->phy_lock); in st21nfca_hci_i2c_read()
392 mutex_unlock(&phy->phy_lock); in st21nfca_hci_i2c_read()
395 phy->current_read_len = 0; in st21nfca_hci_i2c_read()
403 if (!phy->current_read_len && !IS_START_OF_FRAME(buf)) { in st21nfca_hci_i2c_read()
405 phy->current_read_len = 0; in st21nfca_hci_i2c_read()
407 } else if (phy->current_read_len && IS_START_OF_FRAME(buf)) { in st21nfca_hci_i2c_read()
414 phy->current_read_len = 0; in st21nfca_hci_i2c_read()
420 phy->current_read_len = 0; in st21nfca_hci_i2c_read()
423 phy->current_read_len++; in st21nfca_hci_i2c_read()
445 struct st21nfca_i2c_phy *phy = phy_id; in st21nfca_hci_irq_thread_fn() local
450 if (!phy || irq != phy->i2c_dev->irq) { in st21nfca_hci_irq_thread_fn()
455 client = phy->i2c_dev; in st21nfca_hci_irq_thread_fn()
458 if (phy->hard_fault != 0) in st21nfca_hci_irq_thread_fn()
461 r = st21nfca_hci_i2c_read(phy, phy->pending_skb); in st21nfca_hci_irq_thread_fn()
463 phy->hard_fault = r; in st21nfca_hci_irq_thread_fn()
465 nfc_hci_recv_frame(phy->hdev, NULL); in st21nfca_hci_irq_thread_fn()
470 } else if (r == -EBADMSG && phy->crc_trials < ARRAY_SIZE(wait_tab)) { in st21nfca_hci_irq_thread_fn()
480 msleep(wait_tab[phy->crc_trials]); in st21nfca_hci_irq_thread_fn()
481 phy->crc_trials++; in st21nfca_hci_irq_thread_fn()
482 phy->current_read_len = 0; in st21nfca_hci_irq_thread_fn()
483 kfree_skb(phy->pending_skb); in st21nfca_hci_irq_thread_fn()
490 nfc_hci_recv_frame(phy->hdev, phy->pending_skb); in st21nfca_hci_irq_thread_fn()
491 phy->crc_trials = 0; in st21nfca_hci_irq_thread_fn()
493 kfree_skb(phy->pending_skb); in st21nfca_hci_irq_thread_fn()
496 phy->pending_skb = alloc_skb(ST21NFCA_HCI_LLC_MAX_SIZE * 2, GFP_KERNEL); in st21nfca_hci_irq_thread_fn()
497 if (phy->pending_skb == NULL) { in st21nfca_hci_irq_thread_fn()
498 phy->hard_fault = -ENOMEM; in st21nfca_hci_irq_thread_fn()
499 nfc_hci_recv_frame(phy->hdev, NULL); in st21nfca_hci_irq_thread_fn()
514 struct st21nfca_i2c_phy *phy = i2c_get_clientdata(client); in st21nfca_hci_i2c_of_request_resources() local
538 phy->gpio_ena = gpio; in st21nfca_hci_i2c_of_request_resources()
540 phy->irq_polarity = irq_get_trigger_type(client->irq); in st21nfca_hci_i2c_of_request_resources()
542 phy->se_status.is_ese_present = in st21nfca_hci_i2c_of_request_resources()
544 phy->se_status.is_uicc_present = in st21nfca_hci_i2c_of_request_resources()
559 struct st21nfca_i2c_phy *phy = i2c_get_clientdata(client); in st21nfca_hci_i2c_request_resources() local
569 phy->gpio_ena = pdata->gpio_ena; in st21nfca_hci_i2c_request_resources()
570 phy->irq_polarity = pdata->irq_polarity; in st21nfca_hci_i2c_request_resources()
572 if (phy->gpio_ena > 0) { in st21nfca_hci_i2c_request_resources()
573 r = devm_gpio_request_one(&client->dev, phy->gpio_ena, in st21nfca_hci_i2c_request_resources()
581 phy->se_status.is_ese_present = pdata->is_ese_present; in st21nfca_hci_i2c_request_resources()
582 phy->se_status.is_uicc_present = pdata->is_uicc_present; in st21nfca_hci_i2c_request_resources()
590 struct st21nfca_i2c_phy *phy; in st21nfca_hci_i2c_probe() local
602 phy = devm_kzalloc(&client->dev, sizeof(struct st21nfca_i2c_phy), in st21nfca_hci_i2c_probe()
604 if (!phy) in st21nfca_hci_i2c_probe()
607 phy->i2c_dev = client; in st21nfca_hci_i2c_probe()
608 phy->pending_skb = alloc_skb(ST21NFCA_HCI_LLC_MAX_SIZE * 2, GFP_KERNEL); in st21nfca_hci_i2c_probe()
609 if (phy->pending_skb == NULL) in st21nfca_hci_i2c_probe()
612 phy->current_read_len = 0; in st21nfca_hci_i2c_probe()
613 phy->crc_trials = 0; in st21nfca_hci_i2c_probe()
614 mutex_init(&phy->phy_lock); in st21nfca_hci_i2c_probe()
615 i2c_set_clientdata(client, phy); in st21nfca_hci_i2c_probe()
635 r = st21nfca_hci_platform_init(phy); in st21nfca_hci_i2c_probe()
643 phy->irq_polarity | IRQF_ONESHOT, in st21nfca_hci_i2c_probe()
644 ST21NFCA_HCI_DRIVER_NAME, phy); in st21nfca_hci_i2c_probe()
650 return st21nfca_hci_probe(phy, &i2c_phy_ops, LLC_SHDLC_NAME, in st21nfca_hci_i2c_probe()
654 &phy->hdev, in st21nfca_hci_i2c_probe()
655 &phy->se_status); in st21nfca_hci_i2c_probe()
660 struct st21nfca_i2c_phy *phy = i2c_get_clientdata(client); in st21nfca_hci_i2c_remove() local
664 st21nfca_hci_remove(phy->hdev); in st21nfca_hci_i2c_remove()
666 if (phy->powered) in st21nfca_hci_i2c_remove()
667 st21nfca_hci_i2c_disable(phy); in st21nfca_hci_i2c_remove()