Lines Matching refs:smsdev

96 	struct smssdio_device *smsdev;  in smssdio_sendrequest()  local
98 smsdev = context; in smssdio_sendrequest()
100 sdio_claim_host(smsdev->func); in smssdio_sendrequest()
103 while (size >= smsdev->func->cur_blksize) { in smssdio_sendrequest()
104 ret = sdio_memcpy_toio(smsdev->func, SMSSDIO_DATA, in smssdio_sendrequest()
105 buffer, smsdev->func->cur_blksize); in smssdio_sendrequest()
109 buffer += smsdev->func->cur_blksize; in smssdio_sendrequest()
110 size -= smsdev->func->cur_blksize; in smssdio_sendrequest()
114 ret = sdio_memcpy_toio(smsdev->func, SMSSDIO_DATA, in smssdio_sendrequest()
119 sdio_release_host(smsdev->func); in smssdio_sendrequest()
132 struct smssdio_device *smsdev; in smssdio_interrupt() local
137 smsdev = sdio_get_drvdata(func); in smssdio_interrupt()
149 if (smsdev->split_cb == NULL) { in smssdio_interrupt()
150 cb = smscore_getbuffer(smsdev->coredev); in smssdio_interrupt()
156 ret = sdio_memcpy_fromio(smsdev->func, in smssdio_interrupt()
168 smsdev->split_cb = cb; in smssdio_interrupt()
172 if (hdr->msg_length > smsdev->func->cur_blksize) in smssdio_interrupt()
173 size = hdr->msg_length - smsdev->func->cur_blksize; in smssdio_interrupt()
177 cb = smsdev->split_cb; in smssdio_interrupt()
182 smsdev->split_cb = NULL; in smssdio_interrupt()
191 BUG_ON(smsdev->func->cur_blksize != SMSSDIO_BLOCK_SIZE); in smssdio_interrupt()
196 ret = sdio_memcpy_fromio(smsdev->func, in smssdio_interrupt()
201 smscore_putbuffer(smsdev->coredev, cb); in smssdio_interrupt()
215 ret = sdio_memcpy_fromio(smsdev->func, in smssdio_interrupt()
217 smsdev->func->cur_blksize); in smssdio_interrupt()
219 smscore_putbuffer(smsdev->coredev, cb); in smssdio_interrupt()
225 buffer += smsdev->func->cur_blksize; in smssdio_interrupt()
226 if (size > smsdev->func->cur_blksize) in smssdio_interrupt()
227 size -= smsdev->func->cur_blksize; in smssdio_interrupt()
238 smscore_onresponse(smsdev->coredev, cb); in smssdio_interrupt()
247 struct smssdio_device *smsdev; in smssdio_probe() local
252 smsdev = kzalloc(sizeof(struct smssdio_device), GFP_KERNEL); in smssdio_probe()
253 if (!smsdev) in smssdio_probe()
256 smsdev->func = func; in smssdio_probe()
263 params.context = smsdev; in smssdio_probe()
282 ret = smscore_register_device(&params, &smsdev->coredev, NULL); in smssdio_probe()
286 smscore_set_board_id(smsdev->coredev, board_id); in smssdio_probe()
302 sdio_set_drvdata(func, smsdev); in smssdio_probe()
306 ret = smscore_start_device(smsdev->coredev); in smssdio_probe()
319 smscore_unregister_device(smsdev->coredev); in smssdio_probe()
321 kfree(smsdev); in smssdio_probe()
328 struct smssdio_device *smsdev; in smssdio_remove() local
330 smsdev = sdio_get_drvdata(func); in smssdio_remove()
333 if (smsdev->split_cb) in smssdio_remove()
334 smscore_putbuffer(smsdev->coredev, smsdev->split_cb); in smssdio_remove()
336 smscore_unregister_device(smsdev->coredev); in smssdio_remove()
343 kfree(smsdev); in smssdio_remove()