Lines Matching refs:p_dev
39 static int qlcnic_83xx_check_heartbeat(struct qlcnic_adapter *p_dev);
41 static int qlcnic_83xx_check_hw_status(struct qlcnic_adapter *p_dev);
1552 static int qlcnic_83xx_check_heartbeat(struct qlcnic_adapter *p_dev) in qlcnic_83xx_check_heartbeat() argument
1558 p_dev->heartbeat = QLC_SHARED_REG_RD32(p_dev, in qlcnic_83xx_check_heartbeat()
1563 heartbeat = QLC_SHARED_REG_RD32(p_dev, in qlcnic_83xx_check_heartbeat()
1565 if (heartbeat != p_dev->heartbeat) { in qlcnic_83xx_check_heartbeat()
1572 dev_err(&p_dev->pdev->dev, "firmware hang detected\n"); in qlcnic_83xx_check_heartbeat()
1573 qlcnic_83xx_take_eport_out_of_reset(p_dev); in qlcnic_83xx_check_heartbeat()
1574 qlcnic_83xx_disable_pause_frames(p_dev); in qlcnic_83xx_check_heartbeat()
1575 peg_status = QLC_SHARED_REG_RD32(p_dev, in qlcnic_83xx_check_heartbeat()
1577 dev_info(&p_dev->pdev->dev, "Dumping HW/FW registers\n" in qlcnic_83xx_check_heartbeat()
1582 QLC_SHARED_REG_RD32(p_dev, QLCNIC_PEG_HALT_STATUS2), in qlcnic_83xx_check_heartbeat()
1583 QLCRD32(p_dev, QLC_83XX_CRB_PEG_NET_0, &err), in qlcnic_83xx_check_heartbeat()
1584 QLCRD32(p_dev, QLC_83XX_CRB_PEG_NET_1, &err), in qlcnic_83xx_check_heartbeat()
1585 QLCRD32(p_dev, QLC_83XX_CRB_PEG_NET_2, &err), in qlcnic_83xx_check_heartbeat()
1586 QLCRD32(p_dev, QLC_83XX_CRB_PEG_NET_3, &err), in qlcnic_83xx_check_heartbeat()
1587 QLCRD32(p_dev, QLC_83XX_CRB_PEG_NET_4, &err)); in qlcnic_83xx_check_heartbeat()
1590 dev_err(&p_dev->pdev->dev, in qlcnic_83xx_check_heartbeat()
1597 static int qlcnic_83xx_check_cmd_peg_status(struct qlcnic_adapter *p_dev) in qlcnic_83xx_check_cmd_peg_status() argument
1603 val = QLC_SHARED_REG_RD32(p_dev, QLCNIC_CMDPEG_STATE); in qlcnic_83xx_check_cmd_peg_status()
1609 dev_err(&p_dev->pdev->dev, "%s: failed, state = 0x%x\n", __func__, val); in qlcnic_83xx_check_cmd_peg_status()
1613 static int qlcnic_83xx_check_hw_status(struct qlcnic_adapter *p_dev) in qlcnic_83xx_check_hw_status() argument
1617 err = qlcnic_83xx_check_cmd_peg_status(p_dev); in qlcnic_83xx_check_hw_status()
1621 err = qlcnic_83xx_check_heartbeat(p_dev); in qlcnic_83xx_check_hw_status()
1628 static int qlcnic_83xx_poll_reg(struct qlcnic_adapter *p_dev, u32 addr, in qlcnic_83xx_poll_reg() argument
1635 value = QLCRD32(p_dev, addr, &err); in qlcnic_83xx_poll_reg()
1644 value = QLCRD32(p_dev, addr, &err); in qlcnic_83xx_poll_reg()
1654 p_dev->ahw->reset.seq_error++; in qlcnic_83xx_poll_reg()
1655 dev_err(&p_dev->pdev->dev, in qlcnic_83xx_poll_reg()
1657 __func__, p_dev->ahw->reset.seq_index); in qlcnic_83xx_poll_reg()
1658 dev_err(&p_dev->pdev->dev, in qlcnic_83xx_poll_reg()
1666 static int qlcnic_83xx_reset_template_checksum(struct qlcnic_adapter *p_dev) in qlcnic_83xx_reset_template_checksum() argument
1669 u16 *buff = (u16 *)p_dev->ahw->reset.buff; in qlcnic_83xx_reset_template_checksum()
1670 int count = p_dev->ahw->reset.hdr->size / sizeof(u16); in qlcnic_83xx_reset_template_checksum()
1681 dev_err(&p_dev->pdev->dev, "%s: failed\n", __func__); in qlcnic_83xx_reset_template_checksum()
1686 static int qlcnic_83xx_get_reset_instruction_template(struct qlcnic_adapter *p_dev) in qlcnic_83xx_get_reset_instruction_template() argument
1688 struct qlcnic_hardware_context *ahw = p_dev->ahw; in qlcnic_83xx_get_reset_instruction_template()
1693 prev_ver = p_dev->fw_version; in qlcnic_83xx_get_reset_instruction_template()
1694 curr_ver = qlcnic_83xx_get_fw_version(p_dev); in qlcnic_83xx_get_reset_instruction_template()
1706 p_buff = p_dev->ahw->reset.buff; in qlcnic_83xx_get_reset_instruction_template()
1711 if (qlcnic_83xx_flash_read32(p_dev, addr, p_buff, count)) { in qlcnic_83xx_get_reset_instruction_template()
1712 dev_err(&p_dev->pdev->dev, "%s: flash read failed\n", __func__); in qlcnic_83xx_get_reset_instruction_template()
1721 if (qlcnic_83xx_flash_read32(p_dev, addr, p_buff, count)) { in qlcnic_83xx_get_reset_instruction_template()
1722 dev_err(&p_dev->pdev->dev, "%s: flash read failed\n", __func__); in qlcnic_83xx_get_reset_instruction_template()
1726 if (qlcnic_83xx_reset_template_checksum(p_dev)) in qlcnic_83xx_get_reset_instruction_template()
1737 static void qlcnic_83xx_read_write_crb_reg(struct qlcnic_adapter *p_dev, in qlcnic_83xx_read_write_crb_reg() argument
1743 value = QLCRD32(p_dev, raddr, &err); in qlcnic_83xx_read_write_crb_reg()
1746 qlcnic_83xx_wrt_reg_indirect(p_dev, waddr, value); in qlcnic_83xx_read_write_crb_reg()
1750 static void qlcnic_83xx_rmw_crb_reg(struct qlcnic_adapter *p_dev, in qlcnic_83xx_rmw_crb_reg() argument
1758 value = p_dev->ahw->reset.array[p_rmw_hdr->index_a]; in qlcnic_83xx_rmw_crb_reg()
1760 value = QLCRD32(p_dev, raddr, &err); in qlcnic_83xx_rmw_crb_reg()
1770 qlcnic_83xx_wrt_reg_indirect(p_dev, waddr, value); in qlcnic_83xx_rmw_crb_reg()
1774 static void qlcnic_83xx_write_list(struct qlcnic_adapter *p_dev, in qlcnic_83xx_write_list() argument
1784 qlcnic_83xx_wrt_reg_indirect(p_dev, entry->arg1, in qlcnic_83xx_write_list()
1792 static void qlcnic_83xx_read_write_list(struct qlcnic_adapter *p_dev, in qlcnic_83xx_read_write_list() argument
1802 qlcnic_83xx_read_write_crb_reg(p_dev, entry->arg1, in qlcnic_83xx_read_write_list()
1810 static void qlcnic_83xx_poll_list(struct qlcnic_adapter *p_dev, in qlcnic_83xx_poll_list() argument
1828 qlcnic_83xx_poll_reg(p_dev, entry->arg1, in qlcnic_83xx_poll_list()
1836 if (qlcnic_83xx_poll_reg(p_dev, in qlcnic_83xx_poll_list()
1840 QLCRD32(p_dev, arg1, &err); in qlcnic_83xx_poll_list()
1843 QLCRD32(p_dev, arg2, &err); in qlcnic_83xx_poll_list()
1853 static void qlcnic_83xx_poll_write_list(struct qlcnic_adapter *p_dev, in qlcnic_83xx_poll_write_list() argument
1868 qlcnic_83xx_wrt_reg_indirect(p_dev, entry->dr_addr, in qlcnic_83xx_poll_write_list()
1870 qlcnic_83xx_wrt_reg_indirect(p_dev, entry->ar_addr, in qlcnic_83xx_poll_write_list()
1873 qlcnic_83xx_poll_reg(p_dev, entry->ar_addr, delay, in qlcnic_83xx_poll_write_list()
1879 static void qlcnic_83xx_read_modify_write(struct qlcnic_adapter *p_dev, in qlcnic_83xx_read_modify_write() argument
1893 qlcnic_83xx_rmw_crb_reg(p_dev, entry->arg1, in qlcnic_83xx_read_modify_write()
1907 static void qlcnic_83xx_poll_read_list(struct qlcnic_adapter *p_dev, in qlcnic_83xx_poll_read_list() argument
1924 qlcnic_83xx_wrt_reg_indirect(p_dev, entry->ar_addr, in qlcnic_83xx_poll_read_list()
1927 if (!qlcnic_83xx_poll_reg(p_dev, entry->ar_addr, delay, in qlcnic_83xx_poll_read_list()
1929 index = p_dev->ahw->reset.array_index; in qlcnic_83xx_poll_read_list()
1931 j = QLCRD32(p_dev, addr, &err); in qlcnic_83xx_poll_read_list()
1935 p_dev->ahw->reset.array[index++] = j; in qlcnic_83xx_poll_read_list()
1938 p_dev->ahw->reset.array_index = 1; in qlcnic_83xx_poll_read_list()
1944 static inline void qlcnic_83xx_seq_end(struct qlcnic_adapter *p_dev) in qlcnic_83xx_seq_end() argument
1946 p_dev->ahw->reset.seq_end = 1; in qlcnic_83xx_seq_end()
1949 static void qlcnic_83xx_template_end(struct qlcnic_adapter *p_dev) in qlcnic_83xx_template_end() argument
1951 p_dev->ahw->reset.template_end = 1; in qlcnic_83xx_template_end()
1952 if (p_dev->ahw->reset.seq_error == 0) in qlcnic_83xx_template_end()
1953 dev_err(&p_dev->pdev->dev, in qlcnic_83xx_template_end()
1956 dev_err(&p_dev->pdev->dev, in qlcnic_83xx_template_end()
1974 static void qlcnic_83xx_exec_template_cmd(struct qlcnic_adapter *p_dev, in qlcnic_83xx_exec_template_cmd() argument
1981 p_dev->ahw->reset.seq_end = 0; in qlcnic_83xx_exec_template_cmd()
1982 p_dev->ahw->reset.template_end = 0; in qlcnic_83xx_exec_template_cmd()
1983 entries = p_dev->ahw->reset.hdr->entries; in qlcnic_83xx_exec_template_cmd()
1984 index = p_dev->ahw->reset.seq_index; in qlcnic_83xx_exec_template_cmd()
1986 for (; (!p_dev->ahw->reset.seq_end) && (index < entries); index++) { in qlcnic_83xx_exec_template_cmd()
1993 qlcnic_83xx_write_list(p_dev, p_hdr); in qlcnic_83xx_exec_template_cmd()
1996 qlcnic_83xx_read_write_list(p_dev, p_hdr); in qlcnic_83xx_exec_template_cmd()
1999 qlcnic_83xx_poll_list(p_dev, p_hdr); in qlcnic_83xx_exec_template_cmd()
2002 qlcnic_83xx_poll_write_list(p_dev, p_hdr); in qlcnic_83xx_exec_template_cmd()
2005 qlcnic_83xx_read_modify_write(p_dev, p_hdr); in qlcnic_83xx_exec_template_cmd()
2011 qlcnic_83xx_seq_end(p_dev); in qlcnic_83xx_exec_template_cmd()
2014 qlcnic_83xx_template_end(p_dev); in qlcnic_83xx_exec_template_cmd()
2017 qlcnic_83xx_poll_read_list(p_dev, p_hdr); in qlcnic_83xx_exec_template_cmd()
2020 dev_err(&p_dev->pdev->dev, in qlcnic_83xx_exec_template_cmd()
2028 p_dev->ahw->reset.seq_index = index; in qlcnic_83xx_exec_template_cmd()
2031 static void qlcnic_83xx_stop_hw(struct qlcnic_adapter *p_dev) in qlcnic_83xx_stop_hw() argument
2033 p_dev->ahw->reset.seq_index = 0; in qlcnic_83xx_stop_hw()
2035 qlcnic_83xx_exec_template_cmd(p_dev, p_dev->ahw->reset.stop_offset); in qlcnic_83xx_stop_hw()
2036 if (p_dev->ahw->reset.seq_end != 1) in qlcnic_83xx_stop_hw()
2037 dev_err(&p_dev->pdev->dev, "%s: failed\n", __func__); in qlcnic_83xx_stop_hw()
2040 static void qlcnic_83xx_start_hw(struct qlcnic_adapter *p_dev) in qlcnic_83xx_start_hw() argument
2042 qlcnic_83xx_exec_template_cmd(p_dev, p_dev->ahw->reset.start_offset); in qlcnic_83xx_start_hw()
2043 if (p_dev->ahw->reset.template_end != 1) in qlcnic_83xx_start_hw()
2044 dev_err(&p_dev->pdev->dev, "%s: failed\n", __func__); in qlcnic_83xx_start_hw()
2047 static void qlcnic_83xx_init_hw(struct qlcnic_adapter *p_dev) in qlcnic_83xx_init_hw() argument
2049 qlcnic_83xx_exec_template_cmd(p_dev, p_dev->ahw->reset.init_offset); in qlcnic_83xx_init_hw()
2050 if (p_dev->ahw->reset.seq_end != 1) in qlcnic_83xx_init_hw()
2051 dev_err(&p_dev->pdev->dev, "%s: failed\n", __func__); in qlcnic_83xx_init_hw()