Lines Matching refs:wilc

63 static int wilc_sdio_cmd52(struct wilc *wilc, struct sdio_cmd52 *cmd)
65 struct sdio_func *func = container_of(wilc->dev, struct sdio_func, dev);
92 static int wilc_sdio_cmd53(struct wilc *wilc, struct sdio_cmd53 *cmd)
94 struct sdio_func *func = container_of(wilc->dev, struct sdio_func, dev);
96 struct wilc_sdio *sdio_priv = wilc->bus_data;
138 struct wilc *wilc;
152 ret = wilc_cfg80211_init(&wilc, &func->dev, WILC_HIF_SDIO,
162 wilc->dev_irq_num = irq_num;
167 sdio_set_drvdata(func, wilc);
168 wilc->bus_data = sdio_priv;
169 wilc->dev = &func->dev;
171 wilc->rtc_clk = devm_clk_get_optional(&func->card->dev, "rtc");
172 if (IS_ERR(wilc->rtc_clk)) {
173 ret = PTR_ERR(wilc->rtc_clk);
176 clk_prepare_enable(wilc->rtc_clk);
182 irq_dispose_mapping(wilc->dev_irq_num);
183 wilc_netdev_cleanup(wilc);
192 struct wilc *wilc = sdio_get_drvdata(func);
193 struct wilc_sdio *sdio_priv = wilc->bus_data;
195 clk_disable_unprepare(wilc->rtc_clk);
196 wilc_netdev_cleanup(wilc);
201 static int wilc_sdio_reset(struct wilc *wilc)
205 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
212 ret = wilc_sdio_cmd52(wilc, &cmd);
220 static bool wilc_sdio_is_init(struct wilc *wilc)
222 struct wilc_sdio *sdio_priv = wilc->bus_data;
230 struct wilc *wilc = sdio_get_drvdata(func);
234 chip_wakeup(wilc);
236 if (!IS_ERR(wilc->rtc_clk))
237 clk_disable_unprepare(wilc->rtc_clk);
239 if (wilc->suspend_event) {
240 host_sleep_notify(wilc);
241 chip_allow_sleep(wilc);
244 ret = wilc_sdio_reset(wilc);
254 static int wilc_sdio_enable_interrupt(struct wilc *dev)
270 static void wilc_sdio_disable_interrupt(struct wilc *dev)
288 static int wilc_sdio_set_func0_csa_address(struct wilc *wilc, u32 adr)
290 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
302 ret = wilc_sdio_cmd52(wilc, &cmd);
311 ret = wilc_sdio_cmd52(wilc, &cmd);
320 ret = wilc_sdio_cmd52(wilc, &cmd);
330 static int wilc_sdio_set_block_size(struct wilc *wilc, u8 func_num,
333 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
342 ret = wilc_sdio_cmd52(wilc, &cmd);
351 ret = wilc_sdio_cmd52(wilc, &cmd);
366 static int wilc_sdio_write_reg(struct wilc *wilc, u32 addr, u32 data)
368 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
369 struct wilc_sdio *sdio_priv = wilc->bus_data;
382 ret = wilc_sdio_cmd52(wilc, &cmd);
392 ret = wilc_sdio_set_func0_csa_address(wilc, addr);
405 ret = wilc_sdio_cmd53(wilc, &cmd);
414 static int wilc_sdio_write(struct wilc *wilc, u32 addr, u8 *buf, u32 size)
416 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
417 struct wilc_sdio *sdio_priv = wilc->bus_data;
449 ret = wilc_sdio_set_func0_csa_address(wilc, addr);
453 ret = wilc_sdio_cmd53(wilc, &cmd);
473 ret = wilc_sdio_set_func0_csa_address(wilc, addr);
477 ret = wilc_sdio_cmd53(wilc, &cmd);
488 static int wilc_sdio_read_reg(struct wilc *wilc, u32 addr, u32 *data)
490 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
491 struct wilc_sdio *sdio_priv = wilc->bus_data;
501 ret = wilc_sdio_cmd52(wilc, &cmd);
511 ret = wilc_sdio_set_func0_csa_address(wilc, addr);
525 ret = wilc_sdio_cmd53(wilc, &cmd);
537 static int wilc_sdio_read(struct wilc *wilc, u32 addr, u8 *buf, u32 size)
539 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
540 struct wilc_sdio *sdio_priv = wilc->bus_data;
572 ret = wilc_sdio_set_func0_csa_address(wilc, addr);
576 ret = wilc_sdio_cmd53(wilc, &cmd);
596 ret = wilc_sdio_set_func0_csa_address(wilc, addr);
600 ret = wilc_sdio_cmd53(wilc, &cmd);
617 static int wilc_sdio_deinit(struct wilc *wilc)
619 struct wilc_sdio *sdio_priv = wilc->bus_data;
625 static int wilc_sdio_init(struct wilc *wilc, bool resume)
627 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
628 struct wilc_sdio *sdio_priv = wilc->bus_data;
641 ret = wilc_sdio_cmd52(wilc, &cmd);
650 ret = wilc_sdio_set_block_size(wilc, 0, WILC_SDIO_BLOCK_SIZE);
665 ret = wilc_sdio_cmd52(wilc, &cmd);
682 ret = wilc_sdio_cmd52(wilc, &cmd);
700 ret = wilc_sdio_set_block_size(wilc, 1, WILC_SDIO_BLOCK_SIZE);
714 ret = wilc_sdio_cmd52(wilc, &cmd);
724 ret = wilc_sdio_read_reg(wilc, WILC_CHIPID, &chipid);
736 static int wilc_sdio_read_size(struct wilc *wilc, u32 *size)
749 wilc_sdio_cmd52(wilc, &cmd);
754 wilc_sdio_cmd52(wilc, &cmd);
761 static int wilc_sdio_read_int(struct wilc *wilc, u32 *int_status)
763 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
764 struct wilc_sdio *sdio_priv = wilc->bus_data;
769 wilc_sdio_read_size(wilc, &tmp);
784 wilc_sdio_cmd52(wilc, &cmd);
797 static int wilc_sdio_clear_int_ext(struct wilc *wilc, u32 val)
799 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
800 struct wilc_sdio *sdio_priv = wilc->bus_data;
825 ret = wilc_sdio_cmd52(wilc, &cmd);
836 static int wilc_sdio_sync_ext(struct wilc *wilc, int nint)
838 struct sdio_func *func = dev_to_sdio_func(wilc->dev);
839 struct wilc_sdio *sdio_priv = wilc->bus_data;
850 if (wilc_sdio_read_reg(wilc, WILC_MISC, &reg)) {
856 if (wilc_sdio_write_reg(wilc, WILC_MISC, reg)) {
868 ret = wilc_sdio_read_reg(wilc, WILC_PIN_MUX_0, &reg);
875 ret = wilc_sdio_write_reg(wilc, WILC_PIN_MUX_0, reg);
885 ret = wilc_sdio_read_reg(wilc, WILC_INTR_ENABLE, &reg);
894 ret = wilc_sdio_write_reg(wilc, WILC_INTR_ENABLE, reg);
901 ret = wilc_sdio_read_reg(wilc, WILC_INTR2_ENABLE, &reg);
912 ret = wilc_sdio_write_reg(wilc, WILC_INTR2_ENABLE, reg);
947 struct wilc *wilc = sdio_get_drvdata(func);
951 chip_wakeup(wilc);
952 wilc_sdio_init(wilc, true);
954 if (wilc->suspend_event)
955 host_wakeup_notify(wilc);
957 chip_allow_sleep(wilc);