Lines Matching refs:wilc
61 static int wilc_sdio_cmd52(struct wilc *wilc, struct sdio_cmd52 *cmd)
63 struct sdio_func *func = container_of(wilc->dev, struct sdio_func, dev);
90 static int wilc_sdio_cmd53(struct wilc *wilc, struct sdio_cmd53 *cmd)
92 struct sdio_func *func = container_of(wilc->dev, struct sdio_func, dev);
123 struct wilc *wilc;
131 ret = wilc_cfg80211_init(&wilc, &func->dev, WILC_HIF_SDIO,
143 wilc->dev_irq_num = irq_num;
148 sdio_set_drvdata(func, wilc);
149 wilc->bus_data = sdio_priv;
150 wilc->dev = &func->dev;
152 wilc->rtc_clk = devm_clk_get(&func->card->dev, "rtc");
153 if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER) {
156 } else if (!IS_ERR(wilc->rtc_clk))
157 clk_prepare_enable(wilc->rtc_clk);
165 struct wilc *wilc = sdio_get_drvdata(func);
167 if (!IS_ERR(wilc->rtc_clk))
168 clk_disable_unprepare(wilc->rtc_clk);
170 wilc_netdev_cleanup(wilc);
173 static int wilc_sdio_reset(struct wilc *wilc)
177 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
184 ret = wilc_sdio_cmd52(wilc, &cmd);
195 struct wilc *wilc = sdio_get_drvdata(func);
199 chip_wakeup(wilc);
201 if (!IS_ERR(wilc->rtc_clk))
202 clk_disable_unprepare(wilc->rtc_clk);
204 if (wilc->suspend_event) {
205 host_sleep_notify(wilc);
206 chip_allow_sleep(wilc);
209 ret = wilc_sdio_reset(wilc);
219 static int wilc_sdio_enable_interrupt(struct wilc *dev)
235 static void wilc_sdio_disable_interrupt(struct wilc *dev)
253 static int wilc_sdio_set_func0_csa_address(struct wilc *wilc, u32 adr)
255 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
267 ret = wilc_sdio_cmd52(wilc, &cmd);
276 ret = wilc_sdio_cmd52(wilc, &cmd);
285 ret = wilc_sdio_cmd52(wilc, &cmd);
295 static int wilc_sdio_set_block_size(struct wilc *wilc, u8 func_num,
298 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
307 ret = wilc_sdio_cmd52(wilc, &cmd);
316 ret = wilc_sdio_cmd52(wilc, &cmd);
331 static int wilc_sdio_write_reg(struct wilc *wilc, u32 addr, u32 data)
333 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
334 struct wilc_sdio *sdio_priv = wilc->bus_data;
347 ret = wilc_sdio_cmd52(wilc, &cmd);
357 ret = wilc_sdio_set_func0_csa_address(wilc, addr);
369 ret = wilc_sdio_cmd53(wilc, &cmd);
378 static int wilc_sdio_write(struct wilc *wilc, u32 addr, u8 *buf, u32 size)
380 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
381 struct wilc_sdio *sdio_priv = wilc->bus_data;
412 ret = wilc_sdio_set_func0_csa_address(wilc, addr);
416 ret = wilc_sdio_cmd53(wilc, &cmd);
436 ret = wilc_sdio_set_func0_csa_address(wilc, addr);
440 ret = wilc_sdio_cmd53(wilc, &cmd);
451 static int wilc_sdio_read_reg(struct wilc *wilc, u32 addr, u32 *data)
453 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
454 struct wilc_sdio *sdio_priv = wilc->bus_data;
464 ret = wilc_sdio_cmd52(wilc, &cmd);
474 ret = wilc_sdio_set_func0_csa_address(wilc, addr);
487 ret = wilc_sdio_cmd53(wilc, &cmd);
499 static int wilc_sdio_read(struct wilc *wilc, u32 addr, u8 *buf, u32 size)
501 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
502 struct wilc_sdio *sdio_priv = wilc->bus_data;
533 ret = wilc_sdio_set_func0_csa_address(wilc, addr);
537 ret = wilc_sdio_cmd53(wilc, &cmd);
557 ret = wilc_sdio_set_func0_csa_address(wilc, addr);
561 ret = wilc_sdio_cmd53(wilc, &cmd);
578 static int wilc_sdio_deinit(struct wilc *wilc)
583 static int wilc_sdio_init(struct wilc *wilc, bool resume)
585 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
586 struct wilc_sdio *sdio_priv = wilc->bus_data;
599 ret = wilc_sdio_cmd52(wilc, &cmd);
608 ret = wilc_sdio_set_block_size(wilc, 0, WILC_SDIO_BLOCK_SIZE);
623 ret = wilc_sdio_cmd52(wilc, &cmd);
640 ret = wilc_sdio_cmd52(wilc, &cmd);
658 ret = wilc_sdio_set_block_size(wilc, 1, WILC_SDIO_BLOCK_SIZE);
672 ret = wilc_sdio_cmd52(wilc, &cmd);
684 ret = wilc_sdio_read_reg(wilc, WILC_CHIPID, &chipid);
702 static int wilc_sdio_read_size(struct wilc *wilc, u32 *size)
715 wilc_sdio_cmd52(wilc, &cmd);
720 wilc_sdio_cmd52(wilc, &cmd);
727 static int wilc_sdio_read_int(struct wilc *wilc, u32 *int_status)
729 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
730 struct wilc_sdio *sdio_priv = wilc->bus_data;
735 wilc_sdio_read_size(wilc, &tmp);
750 wilc_sdio_cmd52(wilc, &cmd);
763 static int wilc_sdio_clear_int_ext(struct wilc *wilc, u32 val)
765 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
766 struct wilc_sdio *sdio_priv = wilc->bus_data;
794 ret = wilc_sdio_cmd52(wilc, &cmd);
824 ret = wilc_sdio_cmd52(wilc, &cmd);
864 ret = wilc_sdio_cmd52(wilc, &cmd);
875 static int wilc_sdio_sync_ext(struct wilc *wilc, int nint)
877 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
878 struct wilc_sdio *sdio_priv = wilc->bus_data;
889 if (wilc_sdio_read_reg(wilc, WILC_MISC, ®)) {
895 if (wilc_sdio_write_reg(wilc, WILC_MISC, reg)) {
907 ret = wilc_sdio_read_reg(wilc, WILC_PIN_MUX_0, ®);
914 ret = wilc_sdio_write_reg(wilc, WILC_PIN_MUX_0, reg);
924 ret = wilc_sdio_read_reg(wilc, WILC_INTR_ENABLE, ®);
933 ret = wilc_sdio_write_reg(wilc, WILC_INTR_ENABLE, reg);
940 ret = wilc_sdio_read_reg(wilc, WILC_INTR2_ENABLE, ®);
951 ret = wilc_sdio_write_reg(wilc, WILC_INTR2_ENABLE, reg);
984 struct wilc *wilc = sdio_get_drvdata(func);
988 chip_wakeup(wilc);
989 wilc_sdio_init(wilc, true);
991 if (wilc->suspend_event)
992 host_wakeup_notify(wilc);
994 chip_allow_sleep(wilc);