Lines Matching full:info

161 	struct bluecard_info *info = timer_container_of(info, t, timer);
162 unsigned int iobase = info->p_dev->resource[0]->start;
164 if (test_bit(CARD_ACTIVITY, &(info->hw_state))) {
166 clear_bit(CARD_ACTIVITY, &(info->hw_state));
167 mod_timer(&(info->timer), jiffies + HZ / 10);
175 static void bluecard_enable_activity_led(struct bluecard_info *info)
177 unsigned int iobase = info->p_dev->resource[0]->start;
180 if (timer_pending(&(info->timer)))
183 set_bit(CARD_ACTIVITY, &(info->hw_state));
185 if (test_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state))) {
194 mod_timer(&(info->timer), jiffies + HZ / 10);
217 static void bluecard_write_wakeup(struct bluecard_info *info)
219 if (!info) {
224 if (!test_bit(XMIT_SENDING_READY, &(info->tx_state)))
227 if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
228 set_bit(XMIT_WAKEUP, &(info->tx_state));
233 unsigned int iobase = info->p_dev->resource[0]->start;
240 clear_bit(XMIT_WAKEUP, &(info->tx_state));
242 if (!pcmcia_dev_present(info->p_dev))
245 if (test_bit(XMIT_BUFFER_NUMBER, &(info->tx_state))) {
246 if (!test_bit(XMIT_BUF_TWO_READY, &(info->tx_state)))
252 if (!test_bit(XMIT_BUF_ONE_READY, &(info->tx_state)))
259 skb = skb_dequeue(&(info->txq));
265 info->ctrl_reg |= REG_CONTROL_RTS;
266 outb(info->ctrl_reg, iobase + REG_CONTROL);
270 bluecard_enable_activity_led(info);
279 clear_bit(ready_bit, &(info->tx_state));
307 info->ctrl_reg &= ~0x03;
308 info->ctrl_reg |= baud_reg;
309 outb(info->ctrl_reg, iobase + REG_CONTROL);
312 info->ctrl_reg &= ~REG_CONTROL_RTS;
313 outb(info->ctrl_reg, iobase + REG_CONTROL);
323 skb_queue_head(&(info->txq), skb);
326 info->hdev->stat.byte_tx += len;
329 change_bit(XMIT_BUFFER_NUMBER, &(info->tx_state));
331 } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
333 clear_bit(XMIT_SENDING, &(info->tx_state));
365 static void bluecard_receive(struct bluecard_info *info,
372 if (!info) {
377 iobase = info->p_dev->resource[0]->start;
379 if (test_bit(XMIT_SENDING_READY, &(info->tx_state)))
380 bluecard_enable_activity_led(info);
387 if (!info->rx_skb) {
388 info->rx_state = RECV_WAIT_PACKET_TYPE;
389 info->rx_count = 0;
390 info->rx_skb = bt_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC);
391 if (!info->rx_skb) {
397 if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
399 hci_skb_pkt_type(info->rx_skb) = buf[i];
401 switch (hci_skb_pkt_type(info->rx_skb)) {
406 set_bit(XMIT_BUF_ONE_READY, &(info->tx_state));
407 set_bit(XMIT_BUF_TWO_READY, &(info->tx_state));
408 set_bit(XMIT_SENDING_READY, &(info->tx_state));
409 bluecard_write_wakeup(info);
412 kfree_skb(info->rx_skb);
413 info->rx_skb = NULL;
417 info->rx_state = RECV_WAIT_EVENT_HEADER;
418 info->rx_count = HCI_EVENT_HDR_SIZE;
422 info->rx_state = RECV_WAIT_ACL_HEADER;
423 info->rx_count = HCI_ACL_HDR_SIZE;
427 info->rx_state = RECV_WAIT_SCO_HEADER;
428 info->rx_count = HCI_SCO_HDR_SIZE;
434 hci_skb_pkt_type(info->rx_skb));
435 info->hdev->stat.err_rx++;
437 kfree_skb(info->rx_skb);
438 info->rx_skb = NULL;
445 skb_put_u8(info->rx_skb, buf[i]);
446 info->rx_count--;
448 if (info->rx_count == 0) {
455 switch (info->rx_state) {
458 eh = hci_event_hdr(info->rx_skb);
459 info->rx_state = RECV_WAIT_DATA;
460 info->rx_count = eh->plen;
464 ah = hci_acl_hdr(info->rx_skb);
466 info->rx_state = RECV_WAIT_DATA;
467 info->rx_count = dlen;
471 sh = hci_sco_hdr(info->rx_skb);
472 info->rx_state = RECV_WAIT_DATA;
473 info->rx_count = sh->dlen;
477 hci_recv_frame(info->hdev, info->rx_skb);
478 info->rx_skb = NULL;
490 info->hdev->stat.byte_rx += len;
496 struct bluecard_info *info = dev_inst;
500 if (!info || !info->hdev)
504 if (!test_bit(CARD_READY, &(info->hw_state)))
507 iobase = info->p_dev->resource[0]->start;
509 spin_lock(&(info->lock));
512 info->ctrl_reg &= ~REG_CONTROL_INTERRUPT;
513 outb(info->ctrl_reg, iobase + REG_CONTROL);
520 bluecard_receive(info, 0x00);
526 bluecard_receive(info, 0x10);
532 set_bit(XMIT_BUF_ONE_READY, &(info->tx_state));
534 bluecard_write_wakeup(info);
538 set_bit(XMIT_BUF_TWO_READY, &(info->tx_state));
540 bluecard_write_wakeup(info);
546 info->ctrl_reg |= REG_CONTROL_INTERRUPT;
547 outb(info->ctrl_reg, iobase + REG_CONTROL);
549 spin_unlock(&(info->lock));
561 struct bluecard_info *info = hci_get_drvdata(hdev);
595 skb_queue_tail(&(info->txq), skb);
597 bluecard_write_wakeup(info);
609 struct bluecard_info *info = hci_get_drvdata(hdev);
612 skb_queue_purge(&(info->txq));
620 struct bluecard_info *info = hci_get_drvdata(hdev);
621 unsigned int iobase = info->p_dev->resource[0]->start;
623 if (test_bit(CARD_HAS_PCCARD_ID, &(info->hw_state)))
635 struct bluecard_info *info = hci_get_drvdata(hdev);
636 unsigned int iobase = info->p_dev->resource[0]->start;
641 timer_delete_sync(&(info->timer));
652 struct bluecard_info *info = hci_get_drvdata(hdev);
668 skb_queue_tail(&(info->txq), skb);
670 bluecard_write_wakeup(info);
680 static int bluecard_open(struct bluecard_info *info)
682 unsigned int iobase = info->p_dev->resource[0]->start;
686 spin_lock_init(&(info->lock));
688 timer_setup(&info->timer, bluecard_activity_led_timeout, 0);
690 skb_queue_head_init(&(info->txq));
692 info->rx_state = RECV_WAIT_PACKET_TYPE;
693 info->rx_count = 0;
694 info->rx_skb = NULL;
703 info->hdev = hdev;
706 hci_set_drvdata(hdev, info);
707 SET_HCIDEV_DEV(hdev, &info->p_dev->dev);
717 set_bit(CARD_HAS_PCCARD_ID, &(info->hw_state));
720 set_bit(CARD_HAS_POWER_LED, &(info->hw_state));
723 set_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state));
726 info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET;
727 outb(info->ctrl_reg, iobase + REG_CONTROL);
739 info->ctrl_reg = REG_CONTROL_BT_ON | REG_CONTROL_BT_RES_PU;
740 outb(info->ctrl_reg, iobase + REG_CONTROL);
744 info->ctrl_reg |= REG_CONTROL_INTERRUPT;
745 outb(info->ctrl_reg, iobase + REG_CONTROL);
749 info->ctrl_reg |= REG_CONTROL_RTS;
750 outb(info->ctrl_reg, iobase + REG_CONTROL);
753 info->ctrl_reg |= 0x03;
754 outb(info->ctrl_reg, iobase + REG_CONTROL);
757 info->ctrl_reg &= ~REG_CONTROL_RTS;
758 outb(info->ctrl_reg, iobase + REG_CONTROL);
760 set_bit(XMIT_BUF_ONE_READY, &(info->tx_state));
761 set_bit(XMIT_BUF_TWO_READY, &(info->tx_state));
762 set_bit(XMIT_SENDING_READY, &(info->tx_state));
770 set_bit(CARD_READY, &(info->hw_state));
773 skb_queue_purge(&(info->txq));
784 info->hdev = NULL;
793 static int bluecard_close(struct bluecard_info *info)
795 unsigned int iobase = info->p_dev->resource[0]->start;
796 struct hci_dev *hdev = info->hdev;
803 clear_bit(CARD_READY, &(info->hw_state));
806 info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET;
807 outb(info->ctrl_reg, iobase + REG_CONTROL);
820 struct bluecard_info *info;
822 /* Create new info device */
823 info = devm_kzalloc(&link->dev, sizeof(*info), GFP_KERNEL);
824 if (!info)
827 info->p_dev = link;
828 link->priv = info;
844 struct bluecard_info *info = link->priv;
871 if (bluecard_open(info) != 0)
884 struct bluecard_info *info = link->priv;
886 bluecard_close(info);
888 timer_delete_sync(&(info->timer));