• Home
  • Raw
  • Download

Lines Matching full:wilc

35  * For CMD_SINGLE_READ and CMD_INTERNAL_READ, WILC may insert one or
57 static int wilc_spi_reset(struct wilc *wilc);
161 static int wilc_parse_gpios(struct wilc *wilc) in wilc_parse_gpios() argument
163 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_parse_gpios()
164 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_parse_gpios()
186 static void wilc_wlan_power(struct wilc *wilc, bool on) in wilc_wlan_power() argument
188 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_wlan_power()
208 struct wilc *wilc; in wilc_bus_probe() local
215 ret = wilc_cfg80211_init(&wilc, &spi->dev, WILC_HIF_SPI, &wilc_hif_spi); in wilc_bus_probe()
219 spi_set_drvdata(spi, wilc); in wilc_bus_probe()
220 wilc->dev = &spi->dev; in wilc_bus_probe()
221 wilc->bus_data = spi_priv; in wilc_bus_probe()
222 wilc->dev_irq_num = spi->irq; in wilc_bus_probe()
224 ret = wilc_parse_gpios(wilc); in wilc_bus_probe()
228 wilc->rtc_clk = devm_clk_get_optional(&spi->dev, "rtc"); in wilc_bus_probe()
229 if (IS_ERR(wilc->rtc_clk)) { in wilc_bus_probe()
230 ret = PTR_ERR(wilc->rtc_clk); in wilc_bus_probe()
233 clk_prepare_enable(wilc->rtc_clk); in wilc_bus_probe()
238 wilc_netdev_cleanup(wilc); in wilc_bus_probe()
246 struct wilc *wilc = spi_get_drvdata(spi); in wilc_bus_remove() local
247 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_bus_remove()
249 clk_disable_unprepare(wilc->rtc_clk); in wilc_bus_remove()
250 wilc_netdev_cleanup(wilc); in wilc_bus_remove()
278 static int wilc_spi_tx(struct wilc *wilc, u8 *b, u32 len) in wilc_spi_tx() argument
280 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_tx()
321 static int wilc_spi_rx(struct wilc *wilc, u8 *rb, u32 rlen) in wilc_spi_rx() argument
323 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_rx()
363 static int wilc_spi_tx_rx(struct wilc *wilc, u8 *wb, u8 *rb, u32 rlen) in wilc_spi_tx_rx() argument
365 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_tx_rx()
400 static int spi_data_write(struct wilc *wilc, u8 *b, u32 sz) in spi_data_write() argument
402 struct spi_device *spi = to_spi_device(wilc->dev); in spi_data_write()
403 struct wilc_spi *spi_priv = wilc->bus_data; in spi_data_write()
431 if (wilc_spi_tx(wilc, &cmd, 1)) { in spi_data_write()
441 if (wilc_spi_tx(wilc, &b[ix], nbytes)) { in spi_data_write()
455 if (wilc_spi_tx(wilc, crc, 2)) { in spi_data_write()
482 static int wilc_spi_single_read(struct wilc *wilc, u8 cmd, u32 adr, void *b, in wilc_spi_single_read() argument
485 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_single_read()
486 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_spi_single_read()
529 if (wilc_spi_tx_rx(wilc, wb, rb, cmd_len + resp_len)) { in wilc_spi_single_read()
577 static int wilc_spi_write_cmd(struct wilc *wilc, u8 cmd, u32 adr, u32 data, in wilc_spi_write_cmd() argument
580 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_write_cmd()
581 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_spi_write_cmd()
626 if (wilc_spi_tx_rx(wilc, wb, rb, cmd_len + resp_len)) { in wilc_spi_write_cmd()
652 static int wilc_spi_dma_rw(struct wilc *wilc, u8 cmd, u32 adr, u8 *b, u32 sz) in wilc_spi_dma_rw() argument
654 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_dma_rw()
655 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_spi_dma_rw()
703 if (wilc_spi_tx_rx(wilc, wb, rb, cmd_len + resp_len)) { in wilc_spi_dma_rw()
736 if (wilc_spi_rx(wilc, &rsp, 1)) { in wilc_spi_dma_rw()
748 if (wilc_spi_rx(wilc, &b[ix], nbytes)) { in wilc_spi_dma_rw()
758 if (wilc_spi_rx(wilc, crc, 2)) { in wilc_spi_dma_rw()
779 static int wilc_spi_special_cmd(struct wilc *wilc, u8 cmd) in wilc_spi_special_cmd() argument
781 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_special_cmd()
782 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_spi_special_cmd()
812 if (wilc_spi_tx_rx(wilc, wb, rb, cmd_len + resp_len)) { in wilc_spi_special_cmd()
834 static void wilc_spi_reset_cmd_sequence(struct wilc *wl, u8 attempt, u32 addr) in wilc_spi_reset_cmd_sequence()
847 static int wilc_spi_read_reg(struct wilc *wilc, u32 addr, u32 *data) in wilc_spi_read_reg() argument
849 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_read_reg()
862 result = wilc_spi_single_read(wilc, cmd, addr, data, clockless); in wilc_spi_read_reg()
873 wilc_spi_reset_cmd_sequence(wilc, i, addr); in wilc_spi_read_reg()
879 static int wilc_spi_read(struct wilc *wilc, u32 addr, u8 *buf, u32 size) in wilc_spi_read() argument
881 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_read()
889 result = wilc_spi_dma_rw(wilc, CMD_DMA_EXT_READ, addr, in wilc_spi_read()
896 wilc_spi_reset_cmd_sequence(wilc, i, addr); in wilc_spi_read()
902 static int spi_internal_write(struct wilc *wilc, u32 adr, u32 dat) in spi_internal_write() argument
904 struct spi_device *spi = to_spi_device(wilc->dev); in spi_internal_write()
909 result = wilc_spi_write_cmd(wilc, CMD_INTERNAL_WRITE, adr, in spi_internal_write()
915 wilc_spi_reset_cmd_sequence(wilc, i, adr); in spi_internal_write()
921 static int spi_internal_read(struct wilc *wilc, u32 adr, u32 *data) in spi_internal_read() argument
923 struct spi_device *spi = to_spi_device(wilc->dev); in spi_internal_read()
924 struct wilc_spi *spi_priv = wilc->bus_data; in spi_internal_read()
929 result = wilc_spi_single_read(wilc, CMD_INTERNAL_READ, adr, in spi_internal_read()
938 wilc_spi_reset_cmd_sequence(wilc, i, adr); in spi_internal_read()
950 static int wilc_spi_write_reg(struct wilc *wilc, u32 addr, u32 data) in wilc_spi_write_reg() argument
952 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_write_reg()
965 result = wilc_spi_write_cmd(wilc, cmd, addr, data, clockless); in wilc_spi_write_reg()
974 wilc_spi_reset_cmd_sequence(wilc, i, addr); in wilc_spi_write_reg()
979 static int spi_data_rsp(struct wilc *wilc, u8 cmd) in spi_data_rsp() argument
981 struct spi_device *spi = to_spi_device(wilc->dev); in spi_data_rsp()
997 result = wilc_spi_rx(wilc, rsp, sizeof(rsp)); in spi_data_rsp()
1025 static int wilc_spi_write(struct wilc *wilc, u32 addr, u8 *buf, u32 size) in wilc_spi_write() argument
1027 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_write()
1038 result = wilc_spi_dma_rw(wilc, CMD_DMA_EXT_WRITE, addr, in wilc_spi_write()
1043 wilc_spi_reset_cmd_sequence(wilc, i, addr); in wilc_spi_write()
1050 result = spi_data_write(wilc, buf, size); in wilc_spi_write()
1053 wilc_spi_reset_cmd_sequence(wilc, i, addr); in wilc_spi_write()
1060 result = spi_data_rsp(wilc, CMD_DMA_EXT_WRITE); in wilc_spi_write()
1063 wilc_spi_reset_cmd_sequence(wilc, i, addr); in wilc_spi_write()
1077 static int wilc_spi_reset(struct wilc *wilc) in wilc_spi_reset() argument
1079 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_reset()
1080 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_spi_reset()
1083 result = wilc_spi_special_cmd(wilc, CMD_RESET); in wilc_spi_reset()
1090 static bool wilc_spi_is_init(struct wilc *wilc) in wilc_spi_is_init() argument
1092 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_spi_is_init()
1097 static int wilc_spi_deinit(struct wilc *wilc) in wilc_spi_deinit() argument
1099 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_spi_deinit()
1102 wilc_wlan_power(wilc, false); in wilc_spi_deinit()
1106 static int wilc_spi_init(struct wilc *wilc, bool resume) in wilc_spi_init() argument
1108 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_init()
1109 struct wilc_spi *spi_priv = wilc->bus_data; in wilc_spi_init()
1116 ret = wilc_spi_read_reg(wilc, WILC_CHIPID, &chipid); in wilc_spi_init()
1123 wilc_wlan_power(wilc, true); in wilc_spi_init()
1138 ret = spi_internal_read(wilc, WILC_SPI_PROTOCOL_OFFSET, &reg); in wilc_spi_init()
1163 ret = spi_internal_write(wilc, WILC_SPI_PROTOCOL_OFFSET, reg); in wilc_spi_init()
1166 "[wilc spi %d]: Failed internal write reg\n", in wilc_spi_init()
1175 spi_internal_read(wilc, WILC_SPI_PROTOCOL_OFFSET, &reg); in wilc_spi_init()
1182 ret = wilc_spi_read_reg(wilc, WILC_CHIPID, &chipid); in wilc_spi_init()
1193 static int wilc_spi_read_size(struct wilc *wilc, u32 *size) in wilc_spi_read_size() argument
1197 ret = spi_internal_read(wilc, in wilc_spi_read_size()
1204 static int wilc_spi_read_int(struct wilc *wilc, u32 *int_status) in wilc_spi_read_int() argument
1206 return spi_internal_read(wilc, WILC_SPI_INT_STATUS - WILC_SPI_REG_BASE, in wilc_spi_read_int()
1210 static int wilc_spi_clear_int_ext(struct wilc *wilc, u32 val) in wilc_spi_clear_int_ext() argument
1217 ret = spi_internal_write(wilc, in wilc_spi_clear_int_ext()
1223 ret = spi_internal_read(wilc, in wilc_spi_clear_int_ext()
1234 static int wilc_spi_sync_ext(struct wilc *wilc, int nint) in wilc_spi_sync_ext() argument
1236 struct spi_device *spi = to_spi_device(wilc->dev); in wilc_spi_sync_ext()
1248 ret = wilc_spi_read_reg(wilc, WILC_PIN_MUX_0, &reg); in wilc_spi_sync_ext()
1255 ret = wilc_spi_write_reg(wilc, WILC_PIN_MUX_0, reg); in wilc_spi_sync_ext()
1265 ret = wilc_spi_read_reg(wilc, WILC_INTR_ENABLE, &reg); in wilc_spi_sync_ext()
1275 ret = wilc_spi_write_reg(wilc, WILC_INTR_ENABLE, reg); in wilc_spi_sync_ext()
1282 ret = wilc_spi_read_reg(wilc, WILC_INTR2_ENABLE, &reg); in wilc_spi_sync_ext()
1292 ret = wilc_spi_write_reg(wilc, WILC_INTR2_ENABLE, reg); in wilc_spi_sync_ext()