Lines Matching full:wilc

32  * For CMD_SINGLE_READ and CMD_INTERNAL_READ, WILC may insert one or
150 struct wilc *wilc; in wilc_bus_probe() local
157 ret = wilc_cfg80211_init(&wilc, &spi->dev, WILC_HIF_SPI, &wilc_hif_spi); in wilc_bus_probe()
161 spi_set_drvdata(spi, wilc); in wilc_bus_probe()
162 wilc->dev = &spi->dev; in wilc_bus_probe()
163 wilc->bus_data = spi_priv; in wilc_bus_probe()
164 wilc->dev_irq_num = spi->irq; in wilc_bus_probe()
166 wilc->rtc_clk = devm_clk_get_optional(&spi->dev, "rtc"); in wilc_bus_probe()
167 if (IS_ERR(wilc->rtc_clk)) { in wilc_bus_probe()
168 ret = PTR_ERR(wilc->rtc_clk); in wilc_bus_probe()
171 clk_prepare_enable(wilc->rtc_clk); in wilc_bus_probe()
176 wilc_netdev_cleanup(wilc); in wilc_bus_probe()
184 struct wilc *wilc = spi_get_drvdata(spi); in wilc_bus_remove() local
186 clk_disable_unprepare(wilc->rtc_clk); in wilc_bus_remove()
187 wilc_netdev_cleanup(wilc); in wilc_bus_remove()
209 static int wilc_spi_tx(struct wilc *wilc, u8 *b, u32 len) in wilc_spi_tx() argument
211 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_tx()
253 static int wilc_spi_rx(struct wilc *wilc, u8 *rb, u32 rlen) in wilc_spi_rx() argument
255 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_rx()
296 static int wilc_spi_tx_rx(struct wilc *wilc, u8 *wb, u8 *rb, u32 rlen) in wilc_spi_tx_rx() argument
298 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_tx_rx()
334 static int spi_data_write(struct wilc *wilc, u8 *b, u32 sz) in spi_data_write() argument
336 struct spi_device *spi = to_spi_device(wilc->dev); in spi_data_write()
337 struct wilc_spi *spi_priv = wilc->bus_data; in spi_data_write()
365 if (wilc_spi_tx(wilc, &cmd, 1)) { in spi_data_write()
375 if (wilc_spi_tx(wilc, &b[ix], nbytes)) { in spi_data_write()
389 if (wilc_spi_tx(wilc, crc, 2)) { in spi_data_write()
416 static int wilc_spi_single_read(struct wilc *wilc, u8 cmd, u32 adr, void *b, in wilc_spi_single_read() argument
419 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_single_read()
420 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_spi_single_read()
463 if (wilc_spi_tx_rx(wilc, wb, rb, cmd_len + resp_len)) { in wilc_spi_single_read()
511 static int wilc_spi_write_cmd(struct wilc *wilc, u8 cmd, u32 adr, u32 data, in wilc_spi_write_cmd() argument
514 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_write_cmd()
515 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_spi_write_cmd()
560 if (wilc_spi_tx_rx(wilc, wb, rb, cmd_len + resp_len)) { in wilc_spi_write_cmd()
582 static int wilc_spi_dma_rw(struct wilc *wilc, u8 cmd, u32 adr, u8 *b, u32 sz) in wilc_spi_dma_rw() argument
584 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_dma_rw()
585 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_spi_dma_rw()
633 if (wilc_spi_tx_rx(wilc, wb, rb, cmd_len + resp_len)) { in wilc_spi_dma_rw()
669 if (wilc_spi_rx(wilc, &rsp, 1)) { in wilc_spi_dma_rw()
681 if (wilc_spi_rx(wilc, &b[ix], nbytes)) { in wilc_spi_dma_rw()
691 if (wilc_spi_rx(wilc, crc, 2)) { in wilc_spi_dma_rw()
712 static int wilc_spi_read_reg(struct wilc *wilc, u32 addr, u32 *data) in wilc_spi_read_reg() argument
714 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_read_reg()
725 result = wilc_spi_single_read(wilc, cmd, addr, data, clockless); in wilc_spi_read_reg()
736 static int wilc_spi_read(struct wilc *wilc, u32 addr, u8 *buf, u32 size) in wilc_spi_read() argument
738 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_read()
744 result = wilc_spi_dma_rw(wilc, CMD_DMA_EXT_READ, addr, buf, size); in wilc_spi_read()
753 static int spi_internal_write(struct wilc *wilc, u32 adr, u32 dat) in spi_internal_write() argument
755 struct spi_device *spi = to_spi_device(wilc->dev); in spi_internal_write()
758 result = wilc_spi_write_cmd(wilc, CMD_INTERNAL_WRITE, adr, dat, 0); in spi_internal_write()
767 static int spi_internal_read(struct wilc *wilc, u32 adr, u32 *data) in spi_internal_read() argument
769 struct spi_device *spi = to_spi_device(wilc->dev); in spi_internal_read()
770 struct wilc_spi *spi_priv = wilc->bus_data; in spi_internal_read()
773 result = wilc_spi_single_read(wilc, CMD_INTERNAL_READ, adr, data, 0); in spi_internal_read()
791 static int wilc_spi_write_reg(struct wilc *wilc, u32 addr, u32 data) in wilc_spi_write_reg() argument
793 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_write_reg()
804 result = wilc_spi_write_cmd(wilc, cmd, addr, data, clockless); in wilc_spi_write_reg()
813 static int spi_data_rsp(struct wilc *wilc, u8 cmd) in spi_data_rsp() argument
815 struct spi_device *spi = to_spi_device(wilc->dev); in spi_data_rsp()
831 result = wilc_spi_rx(wilc, rsp, sizeof(rsp)); in spi_data_rsp()
859 static int wilc_spi_write(struct wilc *wilc, u32 addr, u8 *buf, u32 size) in wilc_spi_write() argument
861 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_write()
870 result = wilc_spi_dma_rw(wilc, CMD_DMA_EXT_WRITE, addr, NULL, size); in wilc_spi_write()
880 result = spi_data_write(wilc, buf, size); in wilc_spi_write()
889 return spi_data_rsp(wilc, CMD_DMA_EXT_WRITE); in wilc_spi_write()
898 static int wilc_spi_deinit(struct wilc *wilc) in wilc_spi_deinit() argument
906 static int wilc_spi_init(struct wilc *wilc, bool resume) in wilc_spi_init() argument
908 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_init()
909 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_spi_init()
916 ret = wilc_spi_read_reg(wilc, WILC_CHIPID, &chipid); in wilc_spi_init()
936 ret = spi_internal_read(wilc, WILC_SPI_PROTOCOL_OFFSET, &reg); in wilc_spi_init()
961 ret = spi_internal_write(wilc, WILC_SPI_PROTOCOL_OFFSET, reg); in wilc_spi_init()
964 "[wilc spi %d]: Failed internal write reg\n", in wilc_spi_init()
973 spi_internal_read(wilc, WILC_SPI_PROTOCOL_OFFSET, &reg); in wilc_spi_init()
980 ret = wilc_spi_read_reg(wilc, WILC_CHIPID, &chipid); in wilc_spi_init()
991 static int wilc_spi_read_size(struct wilc *wilc, u32 *size) in wilc_spi_read_size() argument
995 ret = spi_internal_read(wilc, in wilc_spi_read_size()
1002 static int wilc_spi_read_int(struct wilc *wilc, u32 *int_status) in wilc_spi_read_int() argument
1004 return spi_internal_read(wilc, WILC_SPI_INT_STATUS - WILC_SPI_REG_BASE, in wilc_spi_read_int()
1008 static int wilc_spi_clear_int_ext(struct wilc *wilc, u32 val) in wilc_spi_clear_int_ext() argument
1015 ret = spi_internal_write(wilc, in wilc_spi_clear_int_ext()
1021 ret = spi_internal_read(wilc, in wilc_spi_clear_int_ext()
1032 static int wilc_spi_sync_ext(struct wilc *wilc, int nint) in wilc_spi_sync_ext() argument
1034 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_sync_ext()
1046 ret = wilc_spi_read_reg(wilc, WILC_PIN_MUX_0, &reg); in wilc_spi_sync_ext()
1053 ret = wilc_spi_write_reg(wilc, WILC_PIN_MUX_0, reg); in wilc_spi_sync_ext()
1063 ret = wilc_spi_read_reg(wilc, WILC_INTR_ENABLE, &reg); in wilc_spi_sync_ext()
1073 ret = wilc_spi_write_reg(wilc, WILC_INTR_ENABLE, reg); in wilc_spi_sync_ext()
1080 ret = wilc_spi_read_reg(wilc, WILC_INTR2_ENABLE, &reg); in wilc_spi_sync_ext()
1090 ret = wilc_spi_read_reg(wilc, WILC_INTR2_ENABLE, &reg); in wilc_spi_sync_ext()