Lines Matching defs:info

129 static void dtl1_write_wakeup(struct dtl1_info *info)
131 if (!info) {
136 if (test_bit(XMIT_WAITING, &(info->tx_state))) {
137 set_bit(XMIT_WAKEUP, &(info->tx_state));
141 if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) {
142 set_bit(XMIT_WAKEUP, &(info->tx_state));
147 unsigned int iobase = info->p_dev->resource[0]->start;
151 clear_bit(XMIT_WAKEUP, &(info->tx_state));
153 if (!pcmcia_dev_present(info->p_dev))
156 skb = skb_dequeue(&(info->txq));
164 set_bit(XMIT_WAITING, &(info->tx_state));
168 skb_queue_head(&(info->txq), skb);
171 info->hdev->stat.byte_tx += len;
173 } while (test_bit(XMIT_WAKEUP, &(info->tx_state)));
175 clear_bit(XMIT_SENDING, &(info->tx_state));
179 static void dtl1_control(struct dtl1_info *info, struct sk_buff *skb)
191 if (((info->flowmask & 0x07) == 0) && ((flowmask & 0x07) != 0)) {
192 clear_bit(XMIT_WAITING, &(info->tx_state));
193 dtl1_write_wakeup(info);
196 info->flowmask = flowmask;
202 static void dtl1_receive(struct dtl1_info *info)
208 if (!info) {
213 iobase = info->p_dev->resource[0]->start;
216 info->hdev->stat.byte_rx++;
219 if (info->rx_skb == NULL) {
220 info->rx_skb = bt_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC);
221 if (!info->rx_skb) {
223 info->rx_state = RECV_WAIT_NSH;
224 info->rx_count = NSHL;
229 skb_put_u8(info->rx_skb, inb(iobase + UART_RX));
230 nsh = (struct nsh *)info->rx_skb->data;
232 info->rx_count--;
234 if (info->rx_count == 0) {
236 switch (info->rx_state) {
238 info->rx_state = RECV_WAIT_DATA;
239 info->rx_count = nsh->len + (nsh->len & 0x0001);
242 hci_skb_pkt_type(info->rx_skb) = nsh->type;
246 info->rx_skb->tail--;
247 info->rx_skb->len--;
251 skb_pull(info->rx_skb, NSHL);
253 switch (hci_skb_pkt_type(info->rx_skb)) {
256 dtl1_control(info, info->rx_skb);
262 hci_skb_pkt_type(info->rx_skb) &= 0x0f;
263 hci_recv_frame(info->hdev, info->rx_skb);
268 hci_skb_pkt_type(info->rx_skb));
269 kfree_skb(info->rx_skb);
273 info->rx_state = RECV_WAIT_NSH;
274 info->rx_count = NSHL;
275 info->rx_skb = NULL;
291 struct dtl1_info *info = dev_inst;
298 if (!info || !info->hdev)
302 iobase = info->p_dev->resource[0]->start;
304 spin_lock(&(info->lock));
319 dtl1_receive(info);
324 dtl1_write_wakeup(info);
342 if (info->ri_latch ^ (msr & UART_MSR_RI)) {
343 info->ri_latch = msr & UART_MSR_RI;
344 clear_bit(XMIT_WAITING, &(info->tx_state));
345 dtl1_write_wakeup(info);
349 spin_unlock(&(info->lock));
367 struct dtl1_info *info = hci_get_drvdata(hdev);
370 skb_queue_purge(&(info->txq));
386 struct dtl1_info *info = hci_get_drvdata(hdev);
421 skb_queue_tail(&(info->txq), s);
423 dtl1_write_wakeup(info);
435 static int dtl1_open(struct dtl1_info *info)
438 unsigned int iobase = info->p_dev->resource[0]->start;
441 spin_lock_init(&(info->lock));
443 skb_queue_head_init(&(info->txq));
445 info->rx_state = RECV_WAIT_NSH;
446 info->rx_count = NSHL;
447 info->rx_skb = NULL;
449 set_bit(XMIT_WAITING, &(info->tx_state));
458 info->hdev = hdev;
461 hci_set_drvdata(hdev, info);
462 SET_HCIDEV_DEV(hdev, &info->p_dev->dev);
469 spin_lock_irqsave(&(info->lock), flags);
481 info->ri_latch = inb(info->p_dev->resource[0]->start + UART_MSR)
487 spin_unlock_irqrestore(&(info->lock), flags);
495 info->hdev = NULL;
504 static int dtl1_close(struct dtl1_info *info)
507 unsigned int iobase = info->p_dev->resource[0]->start;
508 struct hci_dev *hdev = info->hdev;
515 spin_lock_irqsave(&(info->lock), flags);
523 spin_unlock_irqrestore(&(info->lock), flags);
533 struct dtl1_info *info;
535 /* Create new info device */
536 info = devm_kzalloc(&link->dev, sizeof(*info), GFP_KERNEL);
537 if (!info)
540 info->p_dev = link;
541 link->priv = info;
551 struct dtl1_info *info = link->priv;
553 dtl1_close(info);
570 struct dtl1_info *info = link->priv;
587 ret = dtl1_open(info);