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
200 sdio_claim_host(data->func); in btsdio_open()
202 err = sdio_enable_func(data->func); in btsdio_open()
208 err = sdio_claim_irq(data->func, btsdio_interrupt); in btsdio_open()
210 sdio_disable_func(data->func); in btsdio_open()
215 if (data->func->class == SDIO_CLASS_BT_B) in btsdio_open()
216 sdio_writeb(data->func, 0x00, REG_MD_SET, NULL); in btsdio_open()
218 sdio_writeb(data->func, 0x01, REG_EN_INTRD, NULL); in btsdio_open()
221 sdio_release_host(data->func); in btsdio_open()
228 struct btsdio_data *data = hci_get_drvdata(hdev); in btsdio_close() local
235 sdio_claim_host(data->func); in btsdio_close()
237 sdio_writeb(data->func, 0x00, REG_EN_INTRD, NULL); in btsdio_close()
239 sdio_release_irq(data->func); in btsdio_close()
240 sdio_disable_func(data->func); in btsdio_close()
242 sdio_release_host(data->func); in btsdio_close()
249 struct btsdio_data *data = hci_get_drvdata(hdev); in btsdio_flush() local
253 skb_queue_purge(&data->txq); in btsdio_flush()
260 struct btsdio_data *data = hci_get_drvdata(hdev); in btsdio_send_frame() local
284 skb_queue_tail(&data->txq, skb); in btsdio_send_frame()
286 schedule_work(&data->work); in btsdio_send_frame()
294 struct btsdio_data *data; in btsdio_probe() local
306 data = devm_kzalloc(&func->dev, sizeof(*data), GFP_KERNEL); in btsdio_probe()
307 if (!data) in btsdio_probe()
310 data->func = func; in btsdio_probe()
312 INIT_WORK(&data->work, btsdio_work); in btsdio_probe()
314 skb_queue_head_init(&data->txq); in btsdio_probe()
321 hci_set_drvdata(hdev, data); in btsdio_probe()
328 data->hdev = hdev; in btsdio_probe()
346 sdio_set_drvdata(func, data); in btsdio_probe()
353 struct btsdio_data *data = sdio_get_drvdata(func); in btsdio_remove() local
358 if (!data) in btsdio_remove()
361 hdev = data->hdev; in btsdio_remove()