Lines Matching refs:hw
210 result = request_irq(adapter->hw.hw_res.irq, fjes_intr, in fjes_request_irq()
223 struct fjes_hw *hw = &adapter->hw; in fjes_free_irq() local
228 fjes_hw_set_irqmask(hw, REG_ICTL_MASK_ALL, true); in fjes_free_irq()
231 free_irq(adapter->hw.hw_res.irq, adapter); in fjes_free_irq()
251 struct fjes_hw *hw = &adapter->hw; in fjes_open() local
261 hw->txrx_stop_req_bit = 0; in fjes_open()
262 hw->epstop_req_bit = 0; in fjes_open()
266 fjes_hw_capture_interrupt_status(hw); in fjes_open()
272 fjes_hw_set_irqmask(hw, REG_ICTL_MASK_ALL, false); in fjes_open()
292 struct fjes_hw *hw = &adapter->hw; in fjes_close() local
298 fjes_hw_raise_epstop(hw); in fjes_close()
302 for (epidx = 0; epidx < hw->max_epid; epidx++) { in fjes_close()
303 if (epidx == hw->my_epid) in fjes_close()
306 adapter->hw.ep_shm_info[epidx].tx.info->v1i.rx_status &= in fjes_close()
318 cancel_work_sync(&hw->update_zone_task); in fjes_close()
319 cancel_work_sync(&hw->epstop_task); in fjes_close()
321 fjes_hw_wait_epstop(hw); in fjes_close()
332 struct fjes_hw *hw = &adapter->hw; in fjes_setup_resources() local
336 mutex_lock(&hw->hw_info.lock); in fjes_setup_resources()
337 result = fjes_hw_request_info(hw); in fjes_setup_resources()
340 for (epidx = 0; epidx < hw->max_epid; epidx++) { in fjes_setup_resources()
341 hw->ep_shm_info[epidx].es_status = in fjes_setup_resources()
342 hw->hw_info.res_buf->info.info[epidx].es_status; in fjes_setup_resources()
343 hw->ep_shm_info[epidx].zone = in fjes_setup_resources()
344 hw->hw_info.res_buf->info.info[epidx].zone; in fjes_setup_resources()
352 mutex_unlock(&hw->hw_info.lock); in fjes_setup_resources()
355 mutex_unlock(&hw->hw_info.lock); in fjes_setup_resources()
357 for (epidx = 0; epidx < (hw->max_epid); epidx++) { in fjes_setup_resources()
358 if ((epidx != hw->my_epid) && in fjes_setup_resources()
359 (hw->ep_shm_info[epidx].es_status == in fjes_setup_resources()
361 fjes_hw_raise_interrupt(hw, epidx, in fjes_setup_resources()
366 msleep(FJES_OPEN_ZONE_UPDATE_WAIT * hw->max_epid); in fjes_setup_resources()
368 for (epidx = 0; epidx < (hw->max_epid); epidx++) { in fjes_setup_resources()
369 if (epidx == hw->my_epid) in fjes_setup_resources()
372 buf_pair = &hw->ep_shm_info[epidx]; in fjes_setup_resources()
377 if (fjes_hw_epid_is_same_zone(hw, epidx)) { in fjes_setup_resources()
378 mutex_lock(&hw->hw_info.lock); in fjes_setup_resources()
380 fjes_hw_register_buff_addr(hw, epidx, buf_pair); in fjes_setup_resources()
381 mutex_unlock(&hw->hw_info.lock); in fjes_setup_resources()
403 struct fjes_hw *hw = &adapter->hw; in fjes_free_resources() local
408 for (epidx = 0; epidx < hw->max_epid; epidx++) { in fjes_free_resources()
409 if (epidx == hw->my_epid) in fjes_free_resources()
412 mutex_lock(&hw->hw_info.lock); in fjes_free_resources()
413 result = fjes_hw_unregister_buff_addr(hw, epidx); in fjes_free_resources()
414 mutex_unlock(&hw->hw_info.lock); in fjes_free_resources()
419 buf_pair = &hw->ep_shm_info[epidx]; in fjes_free_resources()
424 clear_bit(epidx, &hw->txrx_stop_req_bit); in fjes_free_resources()
428 result = fjes_hw_reset(hw); in fjes_free_resources()
435 hw->hw_info.buffer_share_bit = 0; in fjes_free_resources()
439 param.req_len = hw->hw_info.req_buf_size; in fjes_free_resources()
440 param.req_start = __pa(hw->hw_info.req_buf); in fjes_free_resources()
441 param.res_len = hw->hw_info.res_buf_size; in fjes_free_resources()
442 param.res_start = __pa(hw->hw_info.res_buf); in fjes_free_resources()
443 param.share_start = __pa(hw->hw_info.share->ep_status); in fjes_free_resources()
445 fjes_hw_init_command_registers(hw, ¶m); in fjes_free_resources()
454 struct fjes_hw *hw = &adapter->hw; in fjes_tx_stall_task() local
467 my_epid = hw->my_epid; in fjes_tx_stall_task()
468 max_epid = hw->max_epid; in fjes_tx_stall_task()
477 pstatus = fjes_hw_get_partner_ep_status(hw, epid); in fjes_tx_stall_task()
482 info = adapter->hw.ep_shm_info[epid].tx.info; in fjes_tx_stall_task()
517 struct fjes_hw *hw = &adapter->hw; in fjes_raise_intr_rxdata_task() local
521 my_epid = hw->my_epid; in fjes_raise_intr_rxdata_task()
522 max_epid = hw->max_epid; in fjes_raise_intr_rxdata_task()
525 hw->ep_shm_info[epid].tx_status_work = 0; in fjes_raise_intr_rxdata_task()
531 pstatus = fjes_hw_get_partner_ep_status(hw, epid); in fjes_raise_intr_rxdata_task()
533 hw->ep_shm_info[epid].tx_status_work = in fjes_raise_intr_rxdata_task()
534 hw->ep_shm_info[epid].tx.info->v1i.tx_status; in fjes_raise_intr_rxdata_task()
536 if (hw->ep_shm_info[epid].tx_status_work == in fjes_raise_intr_rxdata_task()
538 hw->ep_shm_info[epid].tx.info->v1i.tx_status = in fjes_raise_intr_rxdata_task()
548 pstatus = fjes_hw_get_partner_ep_status(hw, epid); in fjes_raise_intr_rxdata_task()
549 if ((hw->ep_shm_info[epid].tx_status_work == in fjes_raise_intr_rxdata_task()
552 !(hw->ep_shm_info[epid].rx.info->v1i.rx_status)) { in fjes_raise_intr_rxdata_task()
553 fjes_hw_raise_interrupt(hw, epid, in fjes_raise_intr_rxdata_task()
566 retval = fjes_hw_epbuf_tx_pkt_send(&adapter->hw.ep_shm_info[dest].tx, in fjes_tx_send()
571 adapter->hw.ep_shm_info[dest].tx.info->v1i.tx_status = in fjes_tx_send()
585 struct fjes_hw *hw = &adapter->hw; in fjes_xmit_frame() local
604 my_epid = hw->my_epid; in fjes_xmit_frame()
613 max_epid = hw->max_epid; in fjes_xmit_frame()
622 (dest_epid < hw->max_epid)) { in fjes_xmit_frame()
630 hw->ep_shm_info[my_epid].net_stats.tx_packets += 1; in fjes_xmit_frame()
632 hw->ep_shm_info[my_epid].net_stats.tx_bytes += len; in fjes_xmit_frame()
640 hw->ep_shm_info[my_epid].net_stats.tx_packets += 1; in fjes_xmit_frame()
642 hw->ep_shm_info[my_epid].net_stats.tx_bytes += len; in fjes_xmit_frame()
649 pstatus = fjes_hw_get_partner_ep_status(hw, dest_epid); in fjes_xmit_frame()
653 &adapter->hw.ep_shm_info[dest_epid].rx, 0)) { in fjes_xmit_frame()
656 hw->ep_shm_info[my_epid].net_stats in fjes_xmit_frame()
661 &adapter->hw.ep_shm_info[dest_epid].rx, in fjes_xmit_frame()
664 hw->ep_shm_info[my_epid].net_stats.tx_dropped += 1; in fjes_xmit_frame()
666 hw->ep_shm_info[my_epid].net_stats.tx_errors += 1; in fjes_xmit_frame()
671 &adapter->hw.ep_shm_info[dest_epid].rx, in fjes_xmit_frame()
697 hw->ep_shm_info[my_epid].net_stats in fjes_xmit_frame()
700 hw->ep_shm_info[my_epid].net_stats in fjes_xmit_frame()
717 hw->ep_shm_info[my_epid].net_stats in fjes_xmit_frame()
720 hw->ep_shm_info[my_epid].net_stats in fjes_xmit_frame()
734 hw->ep_shm_info[my_epid].net_stats.tx_packets += 1; in fjes_xmit_frame()
736 hw->ep_shm_info[my_epid].net_stats.tx_bytes += len; in fjes_xmit_frame()
794 for (epid = 0; epid < adapter->hw.max_epid; epid++) { in fjes_vlan_rx_add_vid()
795 if (epid == adapter->hw.my_epid) in fjes_vlan_rx_add_vid()
799 &adapter->hw.ep_shm_info[epid].tx, vid)) in fjes_vlan_rx_add_vid()
801 &adapter->hw.ep_shm_info[epid].tx, vid); in fjes_vlan_rx_add_vid()
813 for (epid = 0; epid < adapter->hw.max_epid; epid++) { in fjes_vlan_rx_kill_vid()
814 if (epid == adapter->hw.my_epid) in fjes_vlan_rx_kill_vid()
817 fjes_hw_del_vlan_id(&adapter->hw.ep_shm_info[epid].tx, vid); in fjes_vlan_rx_kill_vid()
826 struct fjes_hw *hw = &adapter->hw; in fjes_txrx_stop_req_irq() local
829 status = fjes_hw_get_partner_ep_status(hw, src_epid); in fjes_txrx_stop_req_irq()
836 if (src_epid < hw->my_epid) { in fjes_txrx_stop_req_irq()
837 hw->ep_shm_info[src_epid].tx.info->v1i.rx_status |= in fjes_txrx_stop_req_irq()
840 clear_bit(src_epid, &hw->txrx_stop_req_bit); in fjes_txrx_stop_req_irq()
849 if (hw->ep_shm_info[src_epid].rx.info->v1i.rx_status & in fjes_txrx_stop_req_irq()
851 set_bit(src_epid, &hw->epstop_req_bit); in fjes_txrx_stop_req_irq()
852 if (!work_pending(&hw->epstop_task)) in fjes_txrx_stop_req_irq()
854 &hw->epstop_task); in fjes_txrx_stop_req_irq()
862 struct fjes_hw *hw = &adapter->hw; in fjes_stop_req_irq() local
865 set_bit(src_epid, &hw->hw_info.buffer_unshare_reserve_bit); in fjes_stop_req_irq()
867 status = fjes_hw_get_partner_ep_status(hw, src_epid); in fjes_stop_req_irq()
870 hw->ep_shm_info[src_epid].tx.info->v1i.rx_status |= in fjes_stop_req_irq()
872 clear_bit(src_epid, &hw->txrx_stop_req_bit); in fjes_stop_req_irq()
883 set_bit(src_epid, &hw->epstop_req_bit); in fjes_stop_req_irq()
885 if (!work_pending(&hw->epstop_task)) in fjes_stop_req_irq()
886 queue_work(adapter->control_wq, &hw->epstop_task); in fjes_stop_req_irq()
894 struct fjes_hw *hw = &adapter->hw; in fjes_update_zone_irq() local
896 if (!work_pending(&hw->update_zone_task)) in fjes_update_zone_irq()
897 queue_work(adapter->control_wq, &hw->update_zone_task); in fjes_update_zone_irq()
903 struct fjes_hw *hw = &adapter->hw; in fjes_intr() local
907 icr = fjes_hw_capture_interrupt_status(hw); in fjes_intr()
920 fjes_hw_set_irqmask(hw, in fjes_intr()
937 struct fjes_hw *hw = &adapter->hw; in fjes_rxframe_search_exist() local
942 max_epid = hw->max_epid; in fjes_rxframe_search_exist()
947 if (cur_epid == hw->my_epid) in fjes_rxframe_search_exist()
950 pstatus = fjes_hw_get_partner_ep_status(hw, cur_epid); in fjes_rxframe_search_exist()
953 &hw->ep_shm_info[cur_epid].rx)) in fjes_rxframe_search_exist()
971 &adapter->hw.ep_shm_info[*cur_epid].rx, psize); in fjes_rxframe_get()
978 fjes_hw_epbuf_rx_curpkt_drop(&adapter->hw.ep_shm_info[cur_epid].rx); in fjes_rxframe_release()
983 struct fjes_hw *hw = &adapter->hw; in fjes_rx_irq() local
985 fjes_hw_set_irqmask(hw, REG_ICTL_MASK_RX_DATA, true); in fjes_rx_irq()
996 struct fjes_hw *hw = &adapter->hw; in fjes_poll() local
1004 for (epidx = 0; epidx < hw->max_epid; epidx++) { in fjes_poll()
1005 if (epidx == hw->my_epid) in fjes_poll()
1008 adapter->hw.ep_shm_info[epidx].tx.info->v1i.rx_status |= in fjes_poll()
1013 prefetch(&adapter->hw); in fjes_poll()
1020 hw->ep_shm_info[cur_epid].net_stats in fjes_poll()
1023 hw->ep_shm_info[cur_epid].net_stats in fjes_poll()
1036 hw->ep_shm_info[cur_epid].net_stats in fjes_poll()
1039 hw->ep_shm_info[cur_epid].net_stats in fjes_poll()
1045 hw->ep_shm_info[cur_epid].net_stats in fjes_poll()
1068 for (epidx = 0; epidx < hw->max_epid; epidx++) { in fjes_poll()
1069 if (epidx == hw->my_epid) in fjes_poll()
1071 adapter->hw.ep_shm_info[epidx] in fjes_poll()
1076 fjes_hw_set_irqmask(hw, REG_ICTL_MASK_RX_DATA, false); in fjes_poll()
1089 struct fjes_hw *hw; in fjes_probe() local
1106 hw = &adapter->hw; in fjes_probe()
1107 hw->back = adapter; in fjes_probe()
1131 hw->hw_res.start = res->start; in fjes_probe()
1132 hw->hw_res.size = res->end - res->start + 1; in fjes_probe()
1133 hw->hw_res.irq = platform_get_irq(plat_dev, 0); in fjes_probe()
1134 err = fjes_hw_init(&adapter->hw); in fjes_probe()
1144 netdev->dev_addr[5] = hw->my_epid; /* EPID */ in fjes_probe()
1155 fjes_hw_exit(&adapter->hw); in fjes_probe()
1167 struct fjes_hw *hw = &adapter->hw; in fjes_remove() local
1180 fjes_hw_exit(hw); in fjes_remove()
1217 fjes_intr(adapter->hw.hw_res.irq, adapter); in fjes_irq_watch_task()
1237 struct fjes_hw *hw = &adapter->hw; in fjes_watch_unshare_task() local
1247 my_epid = hw->my_epid; in fjes_watch_unshare_task()
1248 max_epid = hw->max_epid; in fjes_watch_unshare_task()
1253 while ((unshare_watch_bitmask || hw->txrx_stop_req_bit) && in fjes_watch_unshare_task()
1255 for (epidx = 0; epidx < hw->max_epid; epidx++) { in fjes_watch_unshare_task()
1256 if (epidx == hw->my_epid) in fjes_watch_unshare_task()
1259 is_shared = fjes_hw_epid_is_shared(hw->hw_info.share, in fjes_watch_unshare_task()
1262 stop_req = test_bit(epidx, &hw->txrx_stop_req_bit); in fjes_watch_unshare_task()
1264 stop_req_done = hw->ep_shm_info[epidx].rx.info->v1i.rx_status & in fjes_watch_unshare_task()
1270 &hw->hw_info.buffer_unshare_reserve_bit); in fjes_watch_unshare_task()
1277 mutex_lock(&hw->hw_info.lock); in fjes_watch_unshare_task()
1278 ret = fjes_hw_unregister_buff_addr(hw, epidx); in fjes_watch_unshare_task()
1293 mutex_unlock(&hw->hw_info.lock); in fjes_watch_unshare_task()
1295 fjes_hw_setup_epbuf(&hw->ep_shm_info[epidx].tx, in fjes_watch_unshare_task()
1298 clear_bit(epidx, &hw->txrx_stop_req_bit); in fjes_watch_unshare_task()
1301 &hw->hw_info.buffer_unshare_reserve_bit); in fjes_watch_unshare_task()
1308 if (hw->hw_info.buffer_unshare_reserve_bit) { in fjes_watch_unshare_task()
1309 for (epidx = 0; epidx < hw->max_epid; epidx++) { in fjes_watch_unshare_task()
1310 if (epidx == hw->my_epid) in fjes_watch_unshare_task()
1314 &hw->hw_info.buffer_unshare_reserve_bit)) { in fjes_watch_unshare_task()
1315 mutex_lock(&hw->hw_info.lock); in fjes_watch_unshare_task()
1317 ret = fjes_hw_unregister_buff_addr(hw, epidx); in fjes_watch_unshare_task()
1332 mutex_unlock(&hw->hw_info.lock); in fjes_watch_unshare_task()
1335 &hw->ep_shm_info[epidx].tx, in fjes_watch_unshare_task()
1338 clear_bit(epidx, &hw->txrx_stop_req_bit); in fjes_watch_unshare_task()
1340 clear_bit(epidx, &hw->hw_info.buffer_unshare_reserve_bit); in fjes_watch_unshare_task()
1344 hw->ep_shm_info[epidx].tx.info->v1i.rx_status &= in fjes_watch_unshare_task()