Lines Matching +full:no +full:- +full:sdio

10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
24 * rsi_sdio_master_access_msword() - This function sets the AHB master access
25 * MS word in the SDIO slave registers.
29 * Return: status: 0 on success, -1 on failure.
50 return -1; in rsi_sdio_master_access_msword()
65 struct rsi_hw *adapter = common->priv; in rsi_sdio_rx_thread()
66 struct rsi_91x_sdiodev *sdev = adapter->rsi_dev; in rsi_sdio_rx_thread()
71 rsi_wait_event(&sdev->rx_thread.event, EVENT_WAIT_FOREVER); in rsi_sdio_rx_thread()
72 rsi_reset_event(&sdev->rx_thread.event); in rsi_sdio_rx_thread()
75 if (atomic_read(&sdev->rx_thread.thread_done)) in rsi_sdio_rx_thread()
78 skb = skb_dequeue(&sdev->rx_q.head); in rsi_sdio_rx_thread()
81 if (sdev->rx_q.num_rx_pkts > 0) in rsi_sdio_rx_thread()
82 sdev->rx_q.num_rx_pkts--; in rsi_sdio_rx_thread()
83 status = rsi_read_pkt(common, skb->data, skb->len); in rsi_sdio_rx_thread()
94 rsi_dbg(INFO_ZONE, "%s: Terminated SDIO RX thread\n", __func__); in rsi_sdio_rx_thread()
95 skb_queue_purge(&sdev->rx_q.head); in rsi_sdio_rx_thread()
96 atomic_inc(&sdev->rx_thread.thread_done); in rsi_sdio_rx_thread()
97 complete_and_exit(&sdev->rx_thread.completion, 0); in rsi_sdio_rx_thread()
101 * rsi_process_pkt() - This Function reads rx_blocks register and figures out
105 * Return: 0 on success, -1 on failure.
109 struct rsi_hw *adapter = common->priv; in rsi_process_pkt()
111 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_process_pkt()
118 if (dev->rx_q.num_rx_pkts >= RSI_MAX_RX_PKTS) in rsi_process_pkt()
121 num_blks = ((adapter->interrupt_status & 1) | in rsi_process_pkt()
122 ((adapter->interrupt_status >> RECV_NUM_BLOCKS) << 1)); in rsi_process_pkt()
137 if (dev->write_fail == 2) in rsi_process_pkt()
138 rsi_sdio_ack_intr(common->priv, (1 << MSDU_PKT_PENDING)); in rsi_process_pkt()
141 dev->write_fail = 2; in rsi_process_pkt()
142 return -1; in rsi_process_pkt()
149 return -ENOMEM; in rsi_process_pkt()
151 status = rsi_sdio_host_intf_read_pkt(adapter, skb->data, rcv_pkt_len); in rsi_process_pkt()
159 skb_queue_tail(&dev->rx_q.head, skb); in rsi_process_pkt()
160 dev->rx_q.num_rx_pkts++; in rsi_process_pkt()
162 rsi_set_event(&dev->rx_thread.event); in rsi_process_pkt()
168 * rsi_init_sdio_slave_regs() - This function does the actual initialization
172 * Return: status: 0 on success, -1 on failure.
177 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_init_sdio_slave_regs()
182 if (dev->next_read_delay) { in rsi_init_sdio_slave_regs()
183 byte = dev->next_read_delay; in rsi_init_sdio_slave_regs()
192 return -1; in rsi_init_sdio_slave_regs()
196 if (dev->sdio_high_speed_enable) { in rsi_init_sdio_slave_regs()
197 rsi_dbg(INIT_ZONE, "%s: Enabling SDIO High speed\n", __func__); in rsi_init_sdio_slave_regs()
206 "%s: Failed to enable SDIO high speed\n", in rsi_init_sdio_slave_regs()
208 return -1; in rsi_init_sdio_slave_regs()
212 /* This tells SDIO FIFO when to start read to host */ in rsi_init_sdio_slave_regs()
213 rsi_dbg(INIT_ZONE, "%s: Initializing SDIO read start level\n", __func__); in rsi_init_sdio_slave_regs()
223 return -1; in rsi_init_sdio_slave_regs()
227 byte = (128 - 32); in rsi_init_sdio_slave_regs()
236 return -1; in rsi_init_sdio_slave_regs()
247 return -1; in rsi_init_sdio_slave_regs()
254 * rsi_interrupt_handler() - This function read and process SDIO interrupts.
261 struct rsi_common *common = adapter->priv; in rsi_interrupt_handler()
263 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_interrupt_handler()
269 dev->rx_info.sdio_int_counter++; in rsi_interrupt_handler()
272 mutex_lock(&common->rx_lock); in rsi_interrupt_handler()
273 status = rsi_sdio_read_register(common->priv, in rsi_interrupt_handler()
280 mutex_unlock(&common->rx_lock); in rsi_interrupt_handler()
283 adapter->interrupt_status = isr_status; in rsi_interrupt_handler()
286 rsi_set_event(&common->tx_thread.event); in rsi_interrupt_handler()
287 dev->rx_info.sdio_intr_status_zero++; in rsi_interrupt_handler()
288 mutex_unlock(&common->rx_lock); in rsi_interrupt_handler()
307 rsi_sdio_ack_intr(common->priv, in rsi_interrupt_handler()
309 rsi_set_event(&common->tx_thread.event); in rsi_interrupt_handler()
314 dev->buff_status_updated = true; in rsi_interrupt_handler()
321 status = rsi_sdio_read_register(common->priv, in rsi_interrupt_handler()
332 rsi_sdio_ack_intr(common->priv, in rsi_interrupt_handler()
336 common->fsm_state = FSM_CARD_NOT_READY; in rsi_interrupt_handler()
341 dev->rx_info.total_sdio_msdu_pending_intr++; in rsi_interrupt_handler()
348 mutex_unlock(&common->rx_lock); in rsi_interrupt_handler()
353 rsi_sdio_ack_intr(common->priv, isr_status); in rsi_interrupt_handler()
354 dev->rx_info.total_sdio_unknown_intr++; in rsi_interrupt_handler()
361 isr_status ^= BIT(isr_type - 1); in rsi_interrupt_handler()
363 mutex_unlock(&common->rx_lock); in rsi_interrupt_handler()
372 struct rsi_common *common = adapter->priv; in rsi_sdio_check_buffer_status()
374 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_sdio_check_buffer_status()
379 if (!dev->buff_status_updated && counter) { in rsi_sdio_check_buffer_status()
380 counter--; in rsi_sdio_check_buffer_status()
384 dev->buff_status_updated = false; in rsi_sdio_check_buffer_status()
385 status = rsi_sdio_read_register(common->priv, in rsi_sdio_check_buffer_status()
392 return -1; in rsi_sdio_check_buffer_status()
396 if (!dev->rx_info.mgmt_buffer_full) in rsi_sdio_check_buffer_status()
397 dev->rx_info.mgmt_buf_full_counter++; in rsi_sdio_check_buffer_status()
398 dev->rx_info.mgmt_buffer_full = true; in rsi_sdio_check_buffer_status()
400 dev->rx_info.mgmt_buffer_full = false; in rsi_sdio_check_buffer_status()
404 if (!dev->rx_info.buffer_full) in rsi_sdio_check_buffer_status()
405 dev->rx_info.buf_full_counter++; in rsi_sdio_check_buffer_status()
406 dev->rx_info.buffer_full = true; in rsi_sdio_check_buffer_status()
408 dev->rx_info.buffer_full = false; in rsi_sdio_check_buffer_status()
412 if (!dev->rx_info.semi_buffer_full) in rsi_sdio_check_buffer_status()
413 dev->rx_info.buf_semi_full_counter++; in rsi_sdio_check_buffer_status()
414 dev->rx_info.semi_buffer_full = true; in rsi_sdio_check_buffer_status()
416 dev->rx_info.semi_buffer_full = false; in rsi_sdio_check_buffer_status()
419 if (dev->rx_info.mgmt_buffer_full || dev->rx_info.buf_full_counter) in rsi_sdio_check_buffer_status()
425 if ((q_num == MGMT_SOFT_Q) && (dev->rx_info.mgmt_buffer_full)) in rsi_sdio_check_buffer_status()
428 if ((q_num < MGMT_SOFT_Q) && (dev->rx_info.buffer_full)) in rsi_sdio_check_buffer_status()
435 * rsi_sdio_determine_event_timeout() - This Function determines the event
444 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_sdio_determine_event_timeout()
447 if (dev->rx_info.buffer_full) in rsi_sdio_determine_event_timeout()