• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/qlge/

Lines Matching defs:qdev

3 int ql_unpause_mpi_risc(struct ql_adapter *qdev)
8 tmp = ql_read32(qdev, CSR);
12 ql_write32(qdev, CSR, CSR_CMD_CLR_PAUSE);
16 int ql_pause_mpi_risc(struct ql_adapter *qdev)
22 ql_write32(qdev, CSR, CSR_CMD_SET_PAUSE);
24 tmp = ql_read32(qdev, CSR);
33 int ql_hard_reset_mpi_risc(struct ql_adapter *qdev)
39 ql_write32(qdev, CSR, CSR_CMD_SET_RST);
41 tmp = ql_read32(qdev, CSR);
43 ql_write32(qdev, CSR, CSR_CMD_CLR_RST);
52 int ql_read_mpi_reg(struct ql_adapter *qdev, u32 reg, u32 *data)
56 status = ql_wait_reg_rdy(qdev, PROC_ADDR, PROC_ADDR_RDY, PROC_ADDR_ERR);
60 ql_write32(qdev, PROC_ADDR, reg | PROC_ADDR_R);
62 status = ql_wait_reg_rdy(qdev, PROC_ADDR, PROC_ADDR_RDY, PROC_ADDR_ERR);
66 *data = ql_read32(qdev, PROC_DATA);
71 int ql_write_mpi_reg(struct ql_adapter *qdev, u32 reg, u32 data)
75 status = ql_wait_reg_rdy(qdev, PROC_ADDR, PROC_ADDR_RDY, PROC_ADDR_ERR);
79 ql_write32(qdev, PROC_DATA, data);
81 ql_write32(qdev, PROC_ADDR, reg);
83 status = ql_wait_reg_rdy(qdev, PROC_ADDR, PROC_ADDR_RDY, PROC_ADDR_ERR);
90 int ql_soft_reset_mpi_risc(struct ql_adapter *qdev)
93 status = ql_write_mpi_reg(qdev, 0x00001010, 1);
102 int ql_own_firmware(struct ql_adapter *qdev)
110 if (qdev->func < qdev->alt_func)
118 temp = ql_read32(qdev, STS);
119 if (!(temp & (1 << (8 + qdev->alt_func))))
126 static int ql_get_mb_sts(struct ql_adapter *qdev, struct mbox_params *mbcp)
130 status = ql_sem_spinlock(qdev, SEM_PROC_REG_MASK);
135 ql_read_mpi_reg(qdev, qdev->mailbox_out + i,
138 netif_err(qdev, drv, qdev->ndev, "Failed mailbox read.\n");
142 ql_sem_unlock(qdev, SEM_PROC_REG_MASK); /* does flush too */
149 static int ql_wait_mbx_cmd_cmplt(struct ql_adapter *qdev)
155 value = ql_read32(qdev, STS);
166 static int ql_exec_mb_cmd(struct ql_adapter *qdev, struct mbox_params *mbcp)
174 if (ql_read32(qdev, CSR) & CSR_HRI)
177 status = ql_sem_spinlock(qdev, SEM_PROC_REG_MASK);
185 status = ql_write_mpi_reg(qdev, qdev->mailbox_in + i,
193 ql_write32(qdev, CSR, CSR_CMD_SET_H2R_INT);
195 ql_sem_unlock(qdev, SEM_PROC_REG_MASK);
206 static int ql_idc_req_aen(struct ql_adapter *qdev)
209 struct mbox_params *mbcp = &qdev->idc_mbc;
211 netif_err(qdev, drv, qdev->ndev, "Enter!\n");
215 mbcp = &qdev->idc_mbc;
217 status = ql_get_mb_sts(qdev, mbcp);
219 netif_err(qdev, drv, qdev->ndev,
221 ql_queue_asic_error(qdev);
227 ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16));
228 queue_delayed_work(qdev->workqueue, &qdev->mpi_idc_work, 0);
236 static int ql_idc_cmplt_aen(struct ql_adapter *qdev)
239 struct mbox_params *mbcp = &qdev->idc_mbc;
241 status = ql_get_mb_sts(qdev, mbcp);
243 netif_err(qdev, drv, qdev->ndev,
245 ql_queue_fw_error(qdev);
250 complete(&qdev->ide_completion);
255 static void ql_link_up(struct ql_adapter *qdev, struct mbox_params *mbcp)
260 status = ql_get_mb_sts(qdev, mbcp);
262 netif_err(qdev, drv, qdev->ndev,
267 qdev->link_status = mbcp->mbox_out[1];
268 netif_err(qdev, drv, qdev->ndev, "Link Up.\n");
273 if (test_bit(QL_CAM_RT_SET, &qdev->flags)) {
274 status = ql_cam_route_initialize(qdev);
276 netif_err(qdev, ifup, qdev->ndev,
280 clear_bit(QL_CAM_RT_SET, &qdev->flags);
287 if (!test_bit(QL_PORT_CFG, &qdev->flags)) {
288 netif_err(qdev, drv, qdev->ndev, "Queue Port Config Worker!\n");
289 set_bit(QL_PORT_CFG, &qdev->flags);
294 ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16));
295 queue_delayed_work(qdev->workqueue,
296 &qdev->mpi_port_cfg_work, 0);
299 ql_link_on(qdev);
302 static void ql_link_down(struct ql_adapter *qdev, struct mbox_params *mbcp)
308 status = ql_get_mb_sts(qdev, mbcp);
310 netif_err(qdev, drv, qdev->ndev, "Link down AEN broken!\n");
312 ql_link_off(qdev);
315 static int ql_sfp_in(struct ql_adapter *qdev, struct mbox_params *mbcp)
321 status = ql_get_mb_sts(qdev, mbcp);
323 netif_err(qdev, drv, qdev->ndev, "SFP in AEN broken!\n");
325 netif_err(qdev, drv, qdev->ndev, "SFP insertion detected.\n");
330 static int ql_sfp_out(struct ql_adapter *qdev, struct mbox_params *mbcp)
336 status = ql_get_mb_sts(qdev, mbcp);
338 netif_err(qdev, drv, qdev->ndev, "SFP out AEN broken!\n");
340 netif_err(qdev, drv, qdev->ndev, "SFP removal detected.\n");
345 static int ql_aen_lost(struct ql_adapter *qdev, struct mbox_params *mbcp)
351 status = ql_get_mb_sts(qdev, mbcp);
353 netif_err(qdev, drv, qdev->ndev, "Lost AEN broken!\n");
356 netif_err(qdev, drv, qdev->ndev, "Lost AEN detected.\n");
358 netif_err(qdev, drv, qdev->ndev, "mbox_out[%d] = 0x%.08x.\n",
366 static void ql_init_fw_done(struct ql_adapter *qdev, struct mbox_params *mbcp)
372 status = ql_get_mb_sts(qdev, mbcp);
374 netif_err(qdev, drv, qdev->ndev, "Firmware did not initialize!\n");
376 netif_err(qdev, drv, qdev->ndev, "Firmware Revision = 0x%.08x.\n",
378 qdev->fw_rev_id = mbcp->mbox_out[1];
379 status = ql_cam_route_initialize(qdev);
381 netif_err(qdev, ifup, qdev->ndev,
392 static int ql_mpi_handler(struct ql_adapter *qdev, struct mbox_params *mbcp)
399 status = ql_get_mb_sts(qdev, mbcp);
401 netif_err(qdev, drv, qdev->ndev,
403 ql_queue_asic_error(qdev);
427 status = ql_get_mb_sts(qdev, mbcp);
436 status = ql_idc_req_aen(qdev);
446 status = ql_idc_cmplt_aen(qdev);
450 ql_link_up(qdev, mbcp);
454 ql_link_down(qdev, mbcp);
463 status = ql_get_mb_sts(qdev, mbcp);
467 ql_init_fw_done(qdev, mbcp);
471 ql_sfp_in(qdev, mbcp);
475 ql_sfp_out(qdev, mbcp);
487 status = ql_get_mb_sts(qdev, mbcp);
491 netif_err(qdev, drv, qdev->ndev,
494 ql_queue_fw_error(qdev);
498 netif_err(qdev, drv, qdev->ndev, "System Error.\n");
499 ql_queue_fw_error(qdev);
504 ql_aen_lost(qdev, mbcp);
511 netif_err(qdev, drv, qdev->ndev,
516 ql_write32(qdev, CSR, CSR_CMD_CLR_R2PCI_INT);
532 static int ql_mailbox_command(struct ql_adapter *qdev, struct mbox_params *mbcp)
539 ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16));
542 status = ql_exec_mb_cmd(qdev, mbcp);
561 status = ql_wait_mbx_cmd_cmplt(qdev);
570 status = ql_mpi_handler(qdev, mbcp);
585 netif_err(qdev, drv, qdev->ndev,
595 ql_write32(qdev, CSR, CSR_CMD_CLR_R2PCI_INT);
605 ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16) | INTR_MASK_PI);
613 int ql_mb_about_fw(struct ql_adapter *qdev)
626 status = ql_mailbox_command(qdev, mbcp);
631 netif_err(qdev, drv, qdev->ndev,
637 qdev->fw_rev_id = mbcp->mbox_out[1];
645 int ql_mb_get_fw_state(struct ql_adapter *qdev)
658 status = ql_mailbox_command(qdev, mbcp);
663 netif_err(qdev, drv, qdev->ndev,
673 netif_err(qdev, drv, qdev->ndev,
684 int ql_mb_idc_ack(struct ql_adapter *qdev)
696 mbcp->mbox_in[1] = qdev->idc_mbc.mbox_out[1];
697 mbcp->mbox_in[2] = qdev->idc_mbc.mbox_out[2];
698 mbcp->mbox_in[3] = qdev->idc_mbc.mbox_out[3];
699 mbcp->mbox_in[4] = qdev->idc_mbc.mbox_out[4];
701 status = ql_mailbox_command(qdev, mbcp);
706 netif_err(qdev, drv, qdev->ndev, "Failed IDC ACK send.\n");
716 int ql_mb_set_port_cfg(struct ql_adapter *qdev)
728 mbcp->mbox_in[1] = qdev->link_config;
729 mbcp->mbox_in[2] = qdev->max_frame_size;
732 status = ql_mailbox_command(qdev, mbcp);
737 netif_err(qdev, drv, qdev->ndev,
740 netif_err(qdev, drv, qdev->ndev,
747 int ql_mb_dump_ram(struct ql_adapter *qdev, u64 req_dma, u32 addr,
770 status = ql_mailbox_command(qdev, mbcp);
775 netif_err(qdev, drv, qdev->ndev, "Failed to dump risc RAM.\n");
782 int ql_dump_risc_ram_area(struct ql_adapter *qdev, void *buf,
789 my_buf = pci_alloc_consistent(qdev->pdev, word_count * sizeof(u32),
794 status = ql_mb_dump_ram(qdev, buf_dma, ram_addr, word_count);
798 pci_free_consistent(qdev->pdev, word_count * sizeof(u32), my_buf,
807 int ql_mb_get_port_cfg(struct ql_adapter *qdev)
820 status = ql_mailbox_command(qdev, mbcp);
825 netif_err(qdev, drv, qdev->ndev,
829 netif_printk(qdev, drv, KERN_DEBUG, qdev->ndev,
831 qdev->link_config = mbcp->mbox_out[1];
832 qdev->max_frame_size = mbcp->mbox_out[2];
837 int ql_mb_wol_mode(struct ql_adapter *qdev, u32 wol)
852 status = ql_mailbox_command(qdev, mbcp);
857 netif_err(qdev, drv, qdev->ndev, "Failed to set WOL mode.\n");
863 int ql_mb_wol_set_magic(struct ql_adapter *qdev, u32 enable_wol)
868 u8 *addr = qdev->ndev->dev_addr;
894 status = ql_mailbox_command(qdev, mbcp);
899 netif_err(qdev, drv, qdev->ndev, "Failed to set WOL mode.\n");
912 static int ql_idc_wait(struct ql_adapter *qdev)
916 struct mbox_params *mbcp = &qdev->idc_mbc;
922 wait_for_completion_timeout(&qdev->ide_completion,
925 netif_err(qdev, drv, qdev->ndev, "IDC Timeout.\n");
933 netif_err(qdev, drv, qdev->ndev,
937 netif_err(qdev, drv, qdev->ndev, "IDC Success.\n");
941 netif_err(qdev, drv, qdev->ndev,
952 int ql_mb_set_led_cfg(struct ql_adapter *qdev, u32 led_config)
967 status = ql_mailbox_command(qdev, mbcp);
972 netif_err(qdev, drv, qdev->ndev,
980 int ql_mb_get_led_cfg(struct ql_adapter *qdev)
993 status = ql_mailbox_command(qdev, mbcp);
998 netif_err(qdev, drv, qdev->ndev,
1002 qdev->led_config = mbcp->mbox_out[1];
1007 int ql_mb_set_mgmnt_traffic_ctl(struct ql_adapter *qdev, u32 control)
1021 status = ql_mailbox_command(qdev, mbcp);
1029 netif_err(qdev, drv, qdev->ndev,
1037 netif_err(qdev, drv, qdev->ndev,
1044 static int ql_mb_get_mgmnt_traffic_ctl(struct ql_adapter *qdev, u32 *control)
1058 status = ql_mailbox_command(qdev, mbcp);
1068 netif_err(qdev, drv, qdev->ndev,
1072 netif_err(qdev, drv, qdev->ndev,
1079 int ql_wait_fifo_empty(struct ql_adapter *qdev)
1086 nic_fifo_empty = ql_read32(qdev, STS) & STS_NFE;
1087 ql_mb_get_mgmnt_traffic_ctl(qdev, &mgmnt_fifo_empty);
1099 static int ql_set_port_cfg(struct ql_adapter *qdev)
1103 status = ql_mb_set_port_cfg(qdev);
1107 status = ql_idc_wait(qdev);
1121 struct ql_adapter *qdev =
1126 status = ql_mb_get_port_cfg(qdev);
1129 netif_err(qdev, drv, qdev->ndev,
1134 if (qdev->link_config & CFG_JUMBO_FRAME_SIZE &&
1135 qdev->max_frame_size ==
1139 qdev->link_config |= CFG_JUMBO_FRAME_SIZE;
1140 qdev->max_frame_size = CFG_DEFAULT_MAX_FRAME_SIZE;
1141 status = ql_set_port_cfg(qdev);
1143 netif_err(qdev, drv, qdev->ndev,
1148 clear_bit(QL_PORT_CFG, &qdev->flags);
1151 ql_queue_fw_error(qdev);
1163 struct ql_adapter *qdev =
1166 struct mbox_params *mbcp = &qdev->idc_mbc;
1176 netif_err(qdev, drv, qdev->ndev,
1181 ql_link_off(qdev);
1187 set_bit(QL_CAM_RT_SET, &qdev->flags);
1190 status = ql_mb_idc_ack(qdev);
1192 netif_err(qdev, drv, qdev->ndev,
1195 netif_printk(qdev, drv, KERN_DEBUG, qdev->ndev,
1212 ql_link_off(qdev);
1213 set_bit(QL_CAM_RT_SET, &qdev->flags);
1223 status = ql_mb_idc_ack(qdev);
1225 netif_err(qdev, drv, qdev->ndev,
1228 netif_printk(qdev, drv, KERN_DEBUG, qdev->ndev,
1239 struct ql_adapter *qdev =
1247 ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16));
1249 while (ql_read32(qdev, STS) & STS_PI) {
1255 err = ql_mpi_handler(qdev, mbcp);
1261 ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16) | INTR_MASK_PI);
1263 ql_enable_completion_interrupt(qdev, 0);
1268 struct ql_adapter *qdev =
1270 cancel_delayed_work_sync(&qdev->mpi_work);
1271 cancel_delayed_work_sync(&qdev->mpi_port_cfg_work);
1272 cancel_delayed_work_sync(&qdev->mpi_idc_work);
1276 if (!ql_own_firmware(qdev)) {
1277 netif_err(qdev, drv, qdev->ndev, "Don't own firmware!\n");
1281 if (!ql_core_dump(qdev, qdev->mpi_coredump)) {
1282 netif_err(qdev, drv, qdev->ndev, "Core is dumped!\n");
1283 qdev->core_is_dumped = 1;
1284 queue_delayed_work(qdev->workqueue,
1285 &qdev->mpi_core_to_log, 5 * HZ);
1287 ql_soft_reset_mpi_risc(qdev);