Lines Matching full:wilc

60 static int wilc_sdio_cmd52(struct wilc *wilc, struct sdio_cmd52 *cmd)  in wilc_sdio_cmd52()  argument
62 struct sdio_func *func = container_of(wilc->dev, struct sdio_func, dev); in wilc_sdio_cmd52()
89 static int wilc_sdio_cmd53(struct wilc *wilc, struct sdio_cmd53 *cmd) in wilc_sdio_cmd53() argument
91 struct sdio_func *func = container_of(wilc->dev, struct sdio_func, dev); in wilc_sdio_cmd53()
122 struct wilc *wilc; in wilc_sdio_probe() local
130 ret = wilc_cfg80211_init(&wilc, &func->dev, WILC_HIF_SDIO, in wilc_sdio_probe()
142 wilc->dev_irq_num = irq_num; in wilc_sdio_probe()
147 sdio_set_drvdata(func, wilc); in wilc_sdio_probe()
148 wilc->bus_data = sdio_priv; in wilc_sdio_probe()
149 wilc->dev = &func->dev; in wilc_sdio_probe()
151 wilc->rtc_clk = devm_clk_get(&func->card->dev, "rtc"); in wilc_sdio_probe()
152 if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER) { in wilc_sdio_probe()
155 } else if (!IS_ERR(wilc->rtc_clk)) in wilc_sdio_probe()
156 clk_prepare_enable(wilc->rtc_clk); in wilc_sdio_probe()
164 struct wilc *wilc = sdio_get_drvdata(func); in wilc_sdio_remove() local
166 if (!IS_ERR(wilc->rtc_clk)) in wilc_sdio_remove()
167 clk_disable_unprepare(wilc->rtc_clk); in wilc_sdio_remove()
169 wilc_netdev_cleanup(wilc); in wilc_sdio_remove()
172 static int wilc_sdio_reset(struct wilc *wilc) in wilc_sdio_reset() argument
176 struct sdio_func *func = dev_to_sdio_func(wilc->dev); in wilc_sdio_reset()
183 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_reset()
194 struct wilc *wilc = sdio_get_drvdata(func); in wilc_sdio_suspend() local
198 chip_wakeup(wilc); in wilc_sdio_suspend()
200 if (!IS_ERR(wilc->rtc_clk)) in wilc_sdio_suspend()
201 clk_disable_unprepare(wilc->rtc_clk); in wilc_sdio_suspend()
203 if (wilc->suspend_event) { in wilc_sdio_suspend()
204 host_sleep_notify(wilc); in wilc_sdio_suspend()
205 chip_allow_sleep(wilc); in wilc_sdio_suspend()
208 ret = wilc_sdio_reset(wilc); in wilc_sdio_suspend()
218 static int wilc_sdio_enable_interrupt(struct wilc *dev) in wilc_sdio_enable_interrupt()
234 static void wilc_sdio_disable_interrupt(struct wilc *dev) in wilc_sdio_disable_interrupt()
252 static int wilc_sdio_set_func0_csa_address(struct wilc *wilc, u32 adr) in wilc_sdio_set_func0_csa_address() argument
254 struct sdio_func *func = dev_to_sdio_func(wilc->dev); in wilc_sdio_set_func0_csa_address()
266 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_set_func0_csa_address()
275 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_set_func0_csa_address()
284 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_set_func0_csa_address()
294 static int wilc_sdio_set_block_size(struct wilc *wilc, u8 func_num, in wilc_sdio_set_block_size() argument
297 struct sdio_func *func = dev_to_sdio_func(wilc->dev); in wilc_sdio_set_block_size()
306 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_set_block_size()
315 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_set_block_size()
330 static int wilc_sdio_write_reg(struct wilc *wilc, u32 addr, u32 data) in wilc_sdio_write_reg() argument
332 struct sdio_func *func = dev_to_sdio_func(wilc->dev); in wilc_sdio_write_reg()
333 struct wilc_sdio *sdio_priv = wilc->bus_data; in wilc_sdio_write_reg()
346 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_write_reg()
356 ret = wilc_sdio_set_func0_csa_address(wilc, addr); in wilc_sdio_write_reg()
368 ret = wilc_sdio_cmd53(wilc, &cmd); in wilc_sdio_write_reg()
377 static int wilc_sdio_write(struct wilc *wilc, u32 addr, u8 *buf, u32 size) in wilc_sdio_write() argument
379 struct sdio_func *func = dev_to_sdio_func(wilc->dev); in wilc_sdio_write()
380 struct wilc_sdio *sdio_priv = wilc->bus_data; in wilc_sdio_write()
411 ret = wilc_sdio_set_func0_csa_address(wilc, addr); in wilc_sdio_write()
415 ret = wilc_sdio_cmd53(wilc, &cmd); in wilc_sdio_write()
435 ret = wilc_sdio_set_func0_csa_address(wilc, addr); in wilc_sdio_write()
439 ret = wilc_sdio_cmd53(wilc, &cmd); in wilc_sdio_write()
450 static int wilc_sdio_read_reg(struct wilc *wilc, u32 addr, u32 *data) in wilc_sdio_read_reg() argument
452 struct sdio_func *func = dev_to_sdio_func(wilc->dev); in wilc_sdio_read_reg()
453 struct wilc_sdio *sdio_priv = wilc->bus_data; in wilc_sdio_read_reg()
463 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_read_reg()
473 ret = wilc_sdio_set_func0_csa_address(wilc, addr); in wilc_sdio_read_reg()
486 ret = wilc_sdio_cmd53(wilc, &cmd); in wilc_sdio_read_reg()
498 static int wilc_sdio_read(struct wilc *wilc, u32 addr, u8 *buf, u32 size) in wilc_sdio_read() argument
500 struct sdio_func *func = dev_to_sdio_func(wilc->dev); in wilc_sdio_read()
501 struct wilc_sdio *sdio_priv = wilc->bus_data; in wilc_sdio_read()
532 ret = wilc_sdio_set_func0_csa_address(wilc, addr); in wilc_sdio_read()
536 ret = wilc_sdio_cmd53(wilc, &cmd); in wilc_sdio_read()
556 ret = wilc_sdio_set_func0_csa_address(wilc, addr); in wilc_sdio_read()
560 ret = wilc_sdio_cmd53(wilc, &cmd); in wilc_sdio_read()
577 static int wilc_sdio_deinit(struct wilc *wilc) in wilc_sdio_deinit() argument
582 static int wilc_sdio_init(struct wilc *wilc, bool resume) in wilc_sdio_init() argument
584 struct sdio_func *func = dev_to_sdio_func(wilc->dev); in wilc_sdio_init()
585 struct wilc_sdio *sdio_priv = wilc->bus_data; in wilc_sdio_init()
598 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_init()
607 ret = wilc_sdio_set_block_size(wilc, 0, WILC_SDIO_BLOCK_SIZE); in wilc_sdio_init()
622 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_init()
639 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_init()
657 ret = wilc_sdio_set_block_size(wilc, 1, WILC_SDIO_BLOCK_SIZE); in wilc_sdio_init()
671 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_init()
683 ret = wilc_sdio_read_reg(wilc, WILC_CHIPID, &chipid); in wilc_sdio_init()
701 static int wilc_sdio_read_size(struct wilc *wilc, u32 *size) in wilc_sdio_read_size() argument
714 wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_read_size()
719 wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_read_size()
726 static int wilc_sdio_read_int(struct wilc *wilc, u32 *int_status) in wilc_sdio_read_int() argument
728 struct sdio_func *func = dev_to_sdio_func(wilc->dev); in wilc_sdio_read_int()
729 struct wilc_sdio *sdio_priv = wilc->bus_data; in wilc_sdio_read_int()
734 wilc_sdio_read_size(wilc, &tmp); in wilc_sdio_read_int()
749 wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_read_int()
762 static int wilc_sdio_clear_int_ext(struct wilc *wilc, u32 val) in wilc_sdio_clear_int_ext() argument
764 struct sdio_func *func = dev_to_sdio_func(wilc->dev); in wilc_sdio_clear_int_ext()
765 struct wilc_sdio *sdio_priv = wilc->bus_data; in wilc_sdio_clear_int_ext()
793 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_clear_int_ext()
823 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_clear_int_ext()
863 ret = wilc_sdio_cmd52(wilc, &cmd); in wilc_sdio_clear_int_ext()
874 static int wilc_sdio_sync_ext(struct wilc *wilc, int nint) in wilc_sdio_sync_ext() argument
876 struct sdio_func *func = dev_to_sdio_func(wilc->dev); in wilc_sdio_sync_ext()
877 struct wilc_sdio *sdio_priv = wilc->bus_data; in wilc_sdio_sync_ext()
888 if (wilc_sdio_read_reg(wilc, WILC_MISC, &reg)) { in wilc_sdio_sync_ext()
894 if (wilc_sdio_write_reg(wilc, WILC_MISC, reg)) { in wilc_sdio_sync_ext()
906 ret = wilc_sdio_read_reg(wilc, WILC_PIN_MUX_0, &reg); in wilc_sdio_sync_ext()
913 ret = wilc_sdio_write_reg(wilc, WILC_PIN_MUX_0, reg); in wilc_sdio_sync_ext()
923 ret = wilc_sdio_read_reg(wilc, WILC_INTR_ENABLE, &reg); in wilc_sdio_sync_ext()
932 ret = wilc_sdio_write_reg(wilc, WILC_INTR_ENABLE, reg); in wilc_sdio_sync_ext()
939 ret = wilc_sdio_read_reg(wilc, WILC_INTR2_ENABLE, &reg); in wilc_sdio_sync_ext()
950 ret = wilc_sdio_read_reg(wilc, WILC_INTR2_ENABLE, &reg); in wilc_sdio_sync_ext()
983 struct wilc *wilc = sdio_get_drvdata(func); in wilc_sdio_resume() local
987 chip_wakeup(wilc); in wilc_sdio_resume()
988 wilc_sdio_init(wilc, true); in wilc_sdio_resume()
990 if (wilc->suspend_event) in wilc_sdio_resume()
991 host_wakeup_notify(wilc); in wilc_sdio_resume()
993 chip_allow_sleep(wilc); in wilc_sdio_resume()