Lines Matching refs:data

64 static int btsdio_tx_packet(struct btsdio_data *data, struct sk_buff *skb)
68 BT_DBG("%s", data->hdev->name);
72 skb->data[0] = (skb->len & 0x0000ff);
73 skb->data[1] = (skb->len & 0x00ff00) >> 8;
74 skb->data[2] = (skb->len & 0xff0000) >> 16;
75 skb->data[3] = hci_skb_pkt_type(skb);
77 err = sdio_writesb(data->func, REG_TDAT, skb->data, skb->len);
80 sdio_writeb(data->func, 0x01, REG_PC_WRT, NULL);
84 data->hdev->stat.byte_tx += skb->len;
93 struct btsdio_data *data = container_of(work, struct btsdio_data, work);
97 BT_DBG("%s", data->hdev->name);
99 sdio_claim_host(data->func);
101 while ((skb = skb_dequeue(&data->txq))) {
102 err = btsdio_tx_packet(data, skb);
104 data->hdev->stat.err_tx++;
105 skb_queue_head(&data->txq, skb);
110 sdio_release_host(data->func);
113 static int btsdio_rx_packet(struct btsdio_data *data)
119 BT_DBG("%s", data->hdev->name);
121 err = sdio_readsb(data->func, hdr, REG_RDAT, 4);
140 err = sdio_readsb(data->func, skb->data, REG_RDAT, len - 4);
146 data->hdev->stat.byte_rx += len;
154 err = hci_recv_frame(data->hdev, skb);
163 sdio_writeb(data->func, 0x00, REG_PC_RRT, NULL);
170 struct btsdio_data *data = sdio_get_drvdata(func);
173 BT_DBG("%s", data->hdev->name);
179 if (btsdio_rx_packet(data) < 0) {
180 data->hdev->stat.err_rx++;
181 sdio_writeb(data->func, 0x01, REG_PC_RRT, NULL);
188 struct btsdio_data *data = hci_get_drvdata(hdev);
193 sdio_claim_host(data->func);
195 err = sdio_enable_func(data->func);
199 err = sdio_claim_irq(data->func, btsdio_interrupt);
201 sdio_disable_func(data->func);
205 if (data->func->class == SDIO_CLASS_BT_B)
206 sdio_writeb(data->func, 0x00, REG_MD_SET, NULL);
208 sdio_writeb(data->func, 0x01, REG_EN_INTRD, NULL);
211 sdio_release_host(data->func);
218 struct btsdio_data *data = hci_get_drvdata(hdev);
222 sdio_claim_host(data->func);
224 sdio_writeb(data->func, 0x00, REG_EN_INTRD, NULL);
226 sdio_release_irq(data->func);
227 sdio_disable_func(data->func);
229 sdio_release_host(data->func);
236 struct btsdio_data *data = hci_get_drvdata(hdev);
240 skb_queue_purge(&data->txq);
247 struct btsdio_data *data = hci_get_drvdata(hdev);
268 skb_queue_tail(&data->txq, skb);
270 schedule_work(&data->work);
278 struct btsdio_data *data;
305 data = devm_kzalloc(&func->dev, sizeof(*data), GFP_KERNEL);
306 if (!data)
309 data->func = func;
311 INIT_WORK(&data->work, btsdio_work);
313 skb_queue_head_init(&data->txq);
320 hci_set_drvdata(hdev, data);
327 data->hdev = hdev;
345 sdio_set_drvdata(func, data);
352 struct btsdio_data *data = sdio_get_drvdata(func);
357 if (!data)
360 cancel_work_sync(&data->work);
361 hdev = data->hdev;