Lines Matching refs:func
60 struct sdio_func *func; member
92 err = sdio_writesb(data->func, REG_TDAT, skb->data, skb->len); in btsdio_tx_packet()
95 sdio_writeb(data->func, 0x01, REG_PC_WRT, NULL); in btsdio_tx_packet()
114 sdio_claim_host(data->func); in btsdio_work()
125 sdio_release_host(data->func); in btsdio_work()
136 err = sdio_readsb(data->func, hdr, REG_RDAT, 4); in btsdio_rx_packet()
155 err = sdio_readsb(data->func, skb->data, REG_RDAT, len - 4); in btsdio_rx_packet()
169 sdio_writeb(data->func, 0x00, REG_PC_RRT, NULL); in btsdio_rx_packet()
174 static void btsdio_interrupt(struct sdio_func *func) in btsdio_interrupt() argument
176 struct btsdio_data *data = sdio_get_drvdata(func); in btsdio_interrupt()
181 intrd = sdio_readb(func, REG_INTRD, NULL); in btsdio_interrupt()
183 sdio_writeb(func, 0x01, REG_CL_INTRD, NULL); in btsdio_interrupt()
187 sdio_writeb(data->func, 0x01, REG_PC_RRT, NULL); in btsdio_interrupt()
199 sdio_claim_host(data->func); in btsdio_open()
201 err = sdio_enable_func(data->func); in btsdio_open()
205 err = sdio_claim_irq(data->func, btsdio_interrupt); in btsdio_open()
207 sdio_disable_func(data->func); in btsdio_open()
211 if (data->func->class == SDIO_CLASS_BT_B) in btsdio_open()
212 sdio_writeb(data->func, 0x00, REG_MD_SET, NULL); in btsdio_open()
214 sdio_writeb(data->func, 0x01, REG_EN_INTRD, NULL); in btsdio_open()
217 sdio_release_host(data->func); in btsdio_open()
228 sdio_claim_host(data->func); in btsdio_close()
230 sdio_writeb(data->func, 0x00, REG_EN_INTRD, NULL); in btsdio_close()
232 sdio_release_irq(data->func); in btsdio_close()
233 sdio_disable_func(data->func); in btsdio_close()
235 sdio_release_host(data->func); in btsdio_close()
281 static int btsdio_probe(struct sdio_func *func, in btsdio_probe() argument
286 struct sdio_func_tuple *tuple = func->tuples; in btsdio_probe()
289 BT_DBG("func %p id %p class 0x%04x", func, id, func->class); in btsdio_probe()
299 if (func->vendor == SDIO_VENDOR_ID_BROADCOM && in btsdio_probe()
300 func->device == SDIO_DEVICE_ID_BROADCOM_43341 && in btsdio_probe()
301 !mmc_card_is_removable(func->card->host)) in btsdio_probe()
304 data = devm_kzalloc(&func->dev, sizeof(*data), GFP_KERNEL); in btsdio_probe()
308 data->func = func; in btsdio_probe()
328 SET_HCIDEV_DEV(hdev, &func->dev); in btsdio_probe()
335 if (func->vendor == 0x0104 && func->device == 0x00c5) in btsdio_probe()
344 sdio_set_drvdata(func, data); in btsdio_probe()
349 static void btsdio_remove(struct sdio_func *func) in btsdio_remove() argument
351 struct btsdio_data *data = sdio_get_drvdata(func); in btsdio_remove()
354 BT_DBG("func %p", func); in btsdio_remove()
361 sdio_set_drvdata(func, NULL); in btsdio_remove()