Lines Matching refs:data

78 static int btsdio_tx_packet(struct btsdio_data *data, struct sk_buff *skb)  in btsdio_tx_packet()  argument
82 BT_DBG("%s", data->hdev->name); in btsdio_tx_packet()
86 skb->data[0] = (skb->len & 0x0000ff); in btsdio_tx_packet()
87 skb->data[1] = (skb->len & 0x00ff00) >> 8; in btsdio_tx_packet()
88 skb->data[2] = (skb->len & 0xff0000) >> 16; in btsdio_tx_packet()
89 skb->data[3] = bt_cb(skb)->pkt_type; in btsdio_tx_packet()
91 err = sdio_writesb(data->func, REG_TDAT, skb->data, skb->len); in btsdio_tx_packet()
94 sdio_writeb(data->func, 0x01, REG_PC_WRT, NULL); in btsdio_tx_packet()
98 data->hdev->stat.byte_tx += skb->len; in btsdio_tx_packet()
107 struct btsdio_data *data = container_of(work, struct btsdio_data, work); in btsdio_work() local
111 BT_DBG("%s", data->hdev->name); in btsdio_work()
113 sdio_claim_host(data->func); in btsdio_work()
115 while ((skb = skb_dequeue(&data->txq))) { in btsdio_work()
116 err = btsdio_tx_packet(data, skb); in btsdio_work()
118 data->hdev->stat.err_tx++; in btsdio_work()
119 skb_queue_head(&data->txq, skb); in btsdio_work()
124 sdio_release_host(data->func); in btsdio_work()
127 static int btsdio_rx_packet(struct btsdio_data *data) in btsdio_rx_packet() argument
133 BT_DBG("%s", data->hdev->name); in btsdio_rx_packet()
135 err = sdio_readsb(data->func, hdr, REG_RDAT, 4); in btsdio_rx_packet()
153 err = sdio_readsb(data->func, skb->data, REG_RDAT, len - 4); in btsdio_rx_packet()
159 data->hdev->stat.byte_rx += len; in btsdio_rx_packet()
163 err = hci_recv_frame(data->hdev, skb); in btsdio_rx_packet()
167 sdio_writeb(data->func, 0x00, REG_PC_RRT, NULL); in btsdio_rx_packet()
174 struct btsdio_data *data = sdio_get_drvdata(func); in btsdio_interrupt() local
177 BT_DBG("%s", data->hdev->name); in btsdio_interrupt()
183 if (btsdio_rx_packet(data) < 0) { in btsdio_interrupt()
184 data->hdev->stat.err_rx++; in btsdio_interrupt()
185 sdio_writeb(data->func, 0x01, REG_PC_RRT, NULL); in btsdio_interrupt()
192 struct btsdio_data *data = hci_get_drvdata(hdev); in btsdio_open() local
197 sdio_claim_host(data->func); in btsdio_open()
199 err = sdio_enable_func(data->func); in btsdio_open()
203 err = sdio_claim_irq(data->func, btsdio_interrupt); in btsdio_open()
205 sdio_disable_func(data->func); in btsdio_open()
209 if (data->func->class == SDIO_CLASS_BT_B) in btsdio_open()
210 sdio_writeb(data->func, 0x00, REG_MD_SET, NULL); in btsdio_open()
212 sdio_writeb(data->func, 0x01, REG_EN_INTRD, NULL); in btsdio_open()
215 sdio_release_host(data->func); in btsdio_open()
222 struct btsdio_data *data = hci_get_drvdata(hdev); in btsdio_close() local
226 sdio_claim_host(data->func); in btsdio_close()
228 sdio_writeb(data->func, 0x00, REG_EN_INTRD, NULL); in btsdio_close()
230 sdio_release_irq(data->func); in btsdio_close()
231 sdio_disable_func(data->func); in btsdio_close()
233 sdio_release_host(data->func); in btsdio_close()
240 struct btsdio_data *data = hci_get_drvdata(hdev); in btsdio_flush() local
244 skb_queue_purge(&data->txq); in btsdio_flush()
251 struct btsdio_data *data = hci_get_drvdata(hdev); in btsdio_send_frame() local
272 skb_queue_tail(&data->txq, skb); in btsdio_send_frame()
274 schedule_work(&data->work); in btsdio_send_frame()
282 struct btsdio_data *data; in btsdio_probe() local
294 data = devm_kzalloc(&func->dev, sizeof(*data), GFP_KERNEL); in btsdio_probe()
295 if (!data) in btsdio_probe()
298 data->func = func; in btsdio_probe()
300 INIT_WORK(&data->work, btsdio_work); in btsdio_probe()
302 skb_queue_head_init(&data->txq); in btsdio_probe()
309 hci_set_drvdata(hdev, data); in btsdio_probe()
316 data->hdev = hdev; in btsdio_probe()
334 sdio_set_drvdata(func, data); in btsdio_probe()
341 struct btsdio_data *data = sdio_get_drvdata(func); in btsdio_remove() local
346 if (!data) in btsdio_remove()
349 hdev = data->hdev; in btsdio_remove()