Lines Matching defs:info

178 static void bt3c_write_wakeup(struct bt3c_info *info)
180 if (!info) {
185 if (test_and_set_bit(XMIT_SENDING, &(info->tx_state)))
189 unsigned int iobase = info->p_dev->resource[0]->start;
193 if (!pcmcia_dev_present(info->p_dev))
196 skb = skb_dequeue(&(info->txq));
198 clear_bit(XMIT_SENDING, &(info->tx_state));
210 info->hdev->stat.byte_tx += len;
216 static void bt3c_receive(struct bt3c_info *info)
221 if (!info) {
226 iobase = info->p_dev->resource[0]->start;
233 info->hdev->stat.byte_rx++;
236 if (!info->rx_skb) {
237 info->rx_state = RECV_WAIT_PACKET_TYPE;
238 info->rx_count = 0;
239 info->rx_skb = bt_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC);
240 if (!info->rx_skb) {
247 if (info->rx_state == RECV_WAIT_PACKET_TYPE) {
249 hci_skb_pkt_type(info->rx_skb) = inb(iobase + DATA_L);
252 switch (hci_skb_pkt_type(info->rx_skb)) {
255 info->rx_state = RECV_WAIT_EVENT_HEADER;
256 info->rx_count = HCI_EVENT_HDR_SIZE;
260 info->rx_state = RECV_WAIT_ACL_HEADER;
261 info->rx_count = HCI_ACL_HDR_SIZE;
265 info->rx_state = RECV_WAIT_SCO_HEADER;
266 info->rx_count = HCI_SCO_HDR_SIZE;
272 hci_skb_pkt_type(info->rx_skb));
273 info->hdev->stat.err_rx++;
275 kfree_skb(info->rx_skb);
276 info->rx_skb = NULL;
285 skb_put_u8(info->rx_skb, x);
287 info->rx_count--;
289 if (info->rx_count == 0) {
296 switch (info->rx_state) {
299 eh = hci_event_hdr(info->rx_skb);
300 info->rx_state = RECV_WAIT_DATA;
301 info->rx_count = eh->plen;
305 ah = hci_acl_hdr(info->rx_skb);
307 info->rx_state = RECV_WAIT_DATA;
308 info->rx_count = dlen;
312 sh = hci_sco_hdr(info->rx_skb);
313 info->rx_state = RECV_WAIT_DATA;
314 info->rx_count = sh->dlen;
318 hci_recv_frame(info->hdev, info->rx_skb);
319 info->rx_skb = NULL;
336 struct bt3c_info *info = dev_inst;
341 if (!info || !info->hdev)
345 iobase = info->p_dev->resource[0]->start;
347 spin_lock(&(info->lock));
358 bt_dev_info(info->hdev, "Antenna %s",
362 bt3c_receive(info);
364 clear_bit(XMIT_SENDING, &(info->tx_state));
365 bt3c_write_wakeup(info);
375 spin_unlock(&(info->lock));
387 struct bt3c_info *info = hci_get_drvdata(hdev);
390 skb_queue_purge(&(info->txq));
412 struct bt3c_info *info = hci_get_drvdata(hdev);
429 skb_queue_tail(&(info->txq), skb);
431 spin_lock_irqsave(&(info->lock), flags);
433 bt3c_write_wakeup(info);
435 spin_unlock_irqrestore(&(info->lock), flags);
445 static int bt3c_load_firmware(struct bt3c_info *info,
455 iobase = info->p_dev->resource[0]->start;
538 static int bt3c_open(struct bt3c_info *info)
544 spin_lock_init(&(info->lock));
546 skb_queue_head_init(&(info->txq));
548 info->rx_state = RECV_WAIT_PACKET_TYPE;
549 info->rx_count = 0;
550 info->rx_skb = NULL;
559 info->hdev = hdev;
562 hci_set_drvdata(hdev, info);
563 SET_HCIDEV_DEV(hdev, &info->p_dev->dev);
571 err = request_firmware(&firmware, "BT3CPCC.bin", &info->p_dev->dev);
577 err = bt3c_load_firmware(info, firmware->data, firmware->size);
599 info->hdev = NULL;
605 static int bt3c_close(struct bt3c_info *info)
607 struct hci_dev *hdev = info->hdev;
622 struct bt3c_info *info;
624 /* Create new info device */
625 info = devm_kzalloc(&link->dev, sizeof(*info), GFP_KERNEL);
626 if (!info)
629 info->p_dev = link;
630 link->priv = info;
685 struct bt3c_info *info = link->priv;
715 if (bt3c_open(info) != 0)
728 struct bt3c_info *info = link->priv;
730 bt3c_close(info);