Lines Matching full:bus
19 #include "bus.h"
55 struct wfx_sdio_priv *bus = priv; in wfx_sdio_copy_from_io() local
65 sdio_addr |= (bus->buf_id_rx + 1) << 7; in wfx_sdio_copy_from_io()
66 ret = sdio_memcpy_fromio(bus->func, dst, sdio_addr, count); in wfx_sdio_copy_from_io()
68 bus->buf_id_rx = (bus->buf_id_rx + 1) % 4; in wfx_sdio_copy_from_io()
75 struct wfx_sdio_priv *bus = priv; in wfx_sdio_copy_to_io() local
85 sdio_addr |= bus->buf_id_tx << 7; in wfx_sdio_copy_to_io()
87 ret = sdio_memcpy_toio(bus->func, sdio_addr, (void *)src, count); in wfx_sdio_copy_to_io()
89 bus->buf_id_tx = (bus->buf_id_tx + 1) % 32; in wfx_sdio_copy_to_io()
96 struct wfx_sdio_priv *bus = priv; in wfx_sdio_lock() local
98 sdio_claim_host(bus->func); in wfx_sdio_lock()
103 struct wfx_sdio_priv *bus = priv; in wfx_sdio_unlock() local
105 sdio_release_host(bus->func); in wfx_sdio_unlock()
110 struct wfx_sdio_priv *bus = sdio_get_drvdata(func); in wfx_sdio_irq_handler() local
112 wfx_bh_request_rx(bus->core); in wfx_sdio_irq_handler()
117 struct wfx_sdio_priv *bus = priv; in wfx_sdio_irq_handler_ext() local
119 sdio_claim_host(bus->func); in wfx_sdio_irq_handler_ext()
120 wfx_bh_request_rx(bus->core); in wfx_sdio_irq_handler_ext()
121 sdio_release_host(bus->func); in wfx_sdio_irq_handler_ext()
127 struct wfx_sdio_priv *bus = priv; in wfx_sdio_irq_subscribe() local
132 if (!bus->of_irq) { in wfx_sdio_irq_subscribe()
133 sdio_claim_host(bus->func); in wfx_sdio_irq_subscribe()
134 ret = sdio_claim_irq(bus->func, wfx_sdio_irq_handler); in wfx_sdio_irq_subscribe()
135 sdio_release_host(bus->func); in wfx_sdio_irq_subscribe()
139 flags = irq_get_trigger_type(bus->of_irq); in wfx_sdio_irq_subscribe()
143 ret = devm_request_threaded_irq(&bus->func->dev, bus->of_irq, NULL, in wfx_sdio_irq_subscribe()
144 wfx_sdio_irq_handler_ext, flags, "wfx", bus); in wfx_sdio_irq_subscribe()
147 sdio_claim_host(bus->func); in wfx_sdio_irq_subscribe()
148 cccr = sdio_f0_readb(bus->func, SDIO_CCCR_IENx, NULL); in wfx_sdio_irq_subscribe()
150 cccr |= BIT(bus->func->num); in wfx_sdio_irq_subscribe()
151 sdio_f0_writeb(bus->func, cccr, SDIO_CCCR_IENx, NULL); in wfx_sdio_irq_subscribe()
152 sdio_release_host(bus->func); in wfx_sdio_irq_subscribe()
158 struct wfx_sdio_priv *bus = priv; in wfx_sdio_irq_unsubscribe() local
161 if (bus->of_irq) in wfx_sdio_irq_unsubscribe()
162 devm_free_irq(&bus->func->dev, bus->of_irq, bus); in wfx_sdio_irq_unsubscribe()
163 sdio_claim_host(bus->func); in wfx_sdio_irq_unsubscribe()
164 ret = sdio_release_irq(bus->func); in wfx_sdio_irq_unsubscribe()
165 sdio_release_host(bus->func); in wfx_sdio_irq_unsubscribe()
171 struct wfx_sdio_priv *bus = priv; in wfx_sdio_align_size() local
173 return sdio_align_size(bus->func, size); in wfx_sdio_align_size()
178 struct wfx_sdio_priv *bus = priv; in wfx_sdio_set_wakeup() local
180 device_set_wakeup_enable(&bus->func->dev, enabled); in wfx_sdio_set_wakeup()
206 struct wfx_sdio_priv *bus = sdio_get_drvdata(func); in wfx_sdio_suspend() local
212 flush_work(&bus->core->hif.bh); in wfx_sdio_suspend()
216 if (bus->of_irq) { in wfx_sdio_suspend()
217 ret = enable_irq_wake(bus->of_irq); in wfx_sdio_suspend()
231 struct wfx_sdio_priv *bus = sdio_get_drvdata(func); in wfx_sdio_resume() local
235 if (bus->of_irq) in wfx_sdio_resume()
236 return disable_irq_wake(bus->of_irq); in wfx_sdio_resume()
246 struct wfx_sdio_priv *bus; in wfx_sdio_probe() local
260 bus = devm_kzalloc(&func->dev, sizeof(*bus), GFP_KERNEL); in wfx_sdio_probe()
261 if (!bus) in wfx_sdio_probe()
264 bus->func = func; in wfx_sdio_probe()
265 bus->of_irq = irq_of_parse_and_map(np, 0); in wfx_sdio_probe()
266 sdio_set_drvdata(func, bus); in wfx_sdio_probe()
276 bus->core = wfx_init_common(&func->dev, pdata, &wfx_sdio_hwbus_ops, bus); in wfx_sdio_probe()
277 if (!bus->core) { in wfx_sdio_probe()
282 ret = wfx_probe(bus->core); in wfx_sdio_probe()
300 struct wfx_sdio_priv *bus = sdio_get_drvdata(func); in wfx_sdio_remove() local
302 wfx_release(bus->core); in wfx_sdio_remove()