Lines Matching refs:adapter

47 static int t4_wait_op_done_val(struct adapter *adapter, int reg, u32 mask,  in t4_wait_op_done_val()  argument
51 u32 val = t4_read_reg(adapter, reg); in t4_wait_op_done_val()
65 static inline int t4_wait_op_done(struct adapter *adapter, int reg, u32 mask, in t4_wait_op_done() argument
68 return t4_wait_op_done_val(adapter, reg, mask, polarity, attempts, in t4_wait_op_done()
82 void t4_set_reg_field(struct adapter *adapter, unsigned int addr, u32 mask, in t4_set_reg_field() argument
85 u32 v = t4_read_reg(adapter, addr) & ~mask; in t4_set_reg_field()
87 t4_write_reg(adapter, addr, v | val); in t4_set_reg_field()
88 (void) t4_read_reg(adapter, addr); /* flush */ in t4_set_reg_field()
103 void t4_read_indirect(struct adapter *adap, unsigned int addr_reg, in t4_read_indirect()
126 void t4_write_indirect(struct adapter *adap, unsigned int addr_reg, in t4_write_indirect()
146 void t4_hw_pci_read_cfg4(struct adapter *adap, int reg, u32 *val) in t4_hw_pci_read_cfg4()
177 static void t4_report_fw_error(struct adapter *adap) in t4_report_fw_error()
202 static void get_mbox_rpl(struct adapter *adap, __be64 *rpl, int nflit, in get_mbox_rpl()
212 static void fw_asrt(struct adapter *adap, struct fw_debug_cmd *asrt) in fw_asrt()
243 static void t4_record_mbox(struct adapter *adapter, in t4_record_mbox() argument
247 struct mbox_cmd_log *log = adapter->mbox_log; in t4_record_mbox()
286 void t4_record_mbox_marker(struct adapter *adapter, in t4_record_mbox_marker() argument
302 t4_record_mbox(adapter, marker_cmd, marker_cmd_size, 0, 0); in t4_record_mbox_marker()
340 int t4_wr_mbox_meat_timeout(struct adapter *adap, int mbox, const void *cmd, in t4_wr_mbox_meat_timeout()
563 static int t4_wr_mbox_meat_timeout_panic(struct adapter *adap, int mbox, in t4_wr_mbox_meat_timeout_panic()
692 int t4_wr_mbox_meat(struct adapter *adap, int mbox, const void *cmd, int size, in t4_wr_mbox_meat()
706 static int t4_edc_err_read(struct adapter *adap, int idx) in t4_edc_err_read()
767 int t4_memory_rw_addr(struct adapter *adap, int win, u32 addr, in t4_memory_rw_addr()
935 int t4_memory_rw_mtype(struct adapter *adap, int win, int mtype, u32 maddr, in t4_memory_rw_mtype()
970 u32 t4_read_pcie_cfg4(struct adapter *adap, int reg, int drv_fw_attach) in t4_read_pcie_cfg4()
1021 static int t4_get_window(struct adapter *adap, u64 pci_base, u64 pci_mask, u64 memwin_base, int drv… in t4_get_window()
1048 int t4_get_util_window(struct adapter *adap, int drv_fw_attach) in t4_get_util_window()
1058 void t4_setup_memwin(struct adapter *adap, u32 memwin_base, u32 window) in t4_setup_memwin()
1072 unsigned int t4_get_regs_len(struct adapter *adapter) in t4_get_regs_len() argument
1074 unsigned int chip_version = CHELSIO_CHIP_VERSION(adapter->params.chip); in t4_get_regs_len()
1085 CH_ERR(adapter, in t4_get_regs_len()
1100 void t4_get_regs(struct adapter *adap, void *buf, size_t buf_size) in t4_get_regs()
2958 static int t4_seeprom_wait(struct adapter *adapter) in t4_seeprom_wait() argument
2960 unsigned int base = adapter->params.pci.vpd_cap_addr; in t4_seeprom_wait()
2967 if (!adapter->vpd_busy) in t4_seeprom_wait()
2979 t4_os_pci_read_cfg2(adapter, base + PCI_VPD_ADDR, &val); in t4_seeprom_wait()
2985 if ((val & PCI_VPD_ADDR_F) == adapter->vpd_flag) { in t4_seeprom_wait()
2986 adapter->vpd_busy = 0; in t4_seeprom_wait()
3011 int t4_seeprom_read(struct adapter *adapter, u32 addr, u32 *data) in t4_seeprom_read() argument
3013 unsigned int base = adapter->params.pci.vpd_cap_addr; in t4_seeprom_read()
3026 ret = t4_seeprom_wait(adapter); in t4_seeprom_read()
3028 CH_ERR(adapter, "VPD still busy from previous operation\n"); in t4_seeprom_read()
3038 t4_os_pci_write_cfg2(adapter, base + PCI_VPD_ADDR, (u16)addr); in t4_seeprom_read()
3039 adapter->vpd_busy = 1; in t4_seeprom_read()
3040 adapter->vpd_flag = PCI_VPD_ADDR_F; in t4_seeprom_read()
3041 ret = t4_seeprom_wait(adapter); in t4_seeprom_read()
3043 CH_ERR(adapter, "VPD read of address %#x failed\n", addr); in t4_seeprom_read()
3051 t4_os_pci_read_cfg4(adapter, base + PCI_VPD_DATA, data); in t4_seeprom_read()
3066 int t4_seeprom_write(struct adapter *adapter, u32 addr, u32 data) in t4_seeprom_write() argument
3068 unsigned int base = adapter->params.pci.vpd_cap_addr; in t4_seeprom_write()
3083 ret = t4_seeprom_wait(adapter); in t4_seeprom_write()
3085 CH_ERR(adapter, "VPD still busy from previous operation\n"); in t4_seeprom_write()
3095 t4_os_pci_write_cfg4(adapter, base + PCI_VPD_DATA, in t4_seeprom_write()
3097 t4_os_pci_write_cfg2(adapter, base + PCI_VPD_ADDR, in t4_seeprom_write()
3099 adapter->vpd_busy = 1; in t4_seeprom_write()
3100 adapter->vpd_flag = 0; in t4_seeprom_write()
3101 ret = t4_seeprom_wait(adapter); in t4_seeprom_write()
3103 CH_ERR(adapter, "VPD write of address %#x failed\n", addr); in t4_seeprom_write()
3111 t4_os_pci_write_cfg4(adapter, base + PCI_VPD_DATA, 0); in t4_seeprom_write()
3115 t4_seeprom_read(adapter, EEPROM_STAT_ADDR, &stats_reg); in t4_seeprom_write()
3160 int t4_seeprom_wp(struct adapter *adapter, int enable) in t4_seeprom_wp() argument
3162 return t4_os_pci_write_seeprom(adapter, EEPROM_STAT_ADDR, enable ? 0xc : 0); in t4_seeprom_wp()
3225 int t4_get_raw_vpd_params(struct adapter *adapter, struct vpd_params *p) in t4_get_raw_vpd_params() argument
3241 ret = t4_os_pci_set_vpd_size(adapter, VPD_SIZE); in t4_get_raw_vpd_params()
3248 ret = t4_os_pci_read_seeprom(adapter, VPD_BASE, (u32 *)(vpd)); in t4_get_raw_vpd_params()
3261 ret = t4_os_pci_read_seeprom(adapter, addr+i, (u32 *)(vpd+i)); in t4_get_raw_vpd_params()
3270 CH_ERR(adapter, "missing VPD keyword " name "\n"); \ in t4_get_raw_vpd_params()
3281 CH_ERR(adapter, in t4_get_raw_vpd_params()
3321 int t4_get_vpd_params(struct adapter *adapter, struct vpd_params *p) in t4_get_vpd_params() argument
3329 ret = t4_get_raw_vpd_params(adapter, p); in t4_get_vpd_params()
3339 ret = t4_query_params(adapter, adapter->mbox, adapter->pf, 0, in t4_get_vpd_params()
3356 int t4_get_pfres(struct adapter *adapter) in t4_get_pfres() argument
3358 struct pf_resources *pfres = &adapter->params.pfres; in t4_get_pfres()
3371 V_FW_PFVF_CMD_PFN(adapter->pf) | in t4_get_pfres()
3374 v = t4_wr_mbox(adapter, adapter->mbox, &cmd, sizeof(cmd), &rpl); in t4_get_pfres()
3427 static int sf1_read(struct adapter *adapter, unsigned int byte_cnt, int cont, in sf1_read() argument
3434 if (t4_read_reg(adapter, A_SF_OP) & F_BUSY) in sf1_read()
3436 t4_write_reg(adapter, A_SF_OP, in sf1_read()
3438 ret = t4_wait_op_done(adapter, A_SF_OP, F_BUSY, 0, SF_ATTEMPTS, 5); in sf1_read()
3440 *valp = t4_read_reg(adapter, A_SF_DATA); in sf1_read()
3456 static int sf1_write(struct adapter *adapter, unsigned int byte_cnt, int cont, in sf1_write() argument
3461 if (t4_read_reg(adapter, A_SF_OP) & F_BUSY) in sf1_write()
3463 t4_write_reg(adapter, A_SF_DATA, val); in sf1_write()
3464 t4_write_reg(adapter, A_SF_OP, V_SF_LOCK(lock) | in sf1_write()
3466 return t4_wait_op_done(adapter, A_SF_OP, F_BUSY, 0, SF_ATTEMPTS, 5); in sf1_write()
3477 static int flash_wait_op(struct adapter *adapter, int attempts, int ch_delay) in flash_wait_op() argument
3483 if ((ret = sf1_write(adapter, 1, 1, 1, SF_RD_STATUS)) != 0 || in flash_wait_op()
3484 (ret = sf1_read(adapter, 1, 0, 1, &status)) != 0) in flash_wait_op()
3492 if (adapter->flags & K_CRASH) in flash_wait_op()
3514 int t4_read_flash(struct adapter *adapter, unsigned int addr, in t4_read_flash() argument
3519 if (addr + nwords * sizeof(u32) > adapter->params.sf_size || (addr & 3)) in t4_read_flash()
3524 if ((ret = sf1_write(adapter, 4, 1, 0, addr)) != 0 || in t4_read_flash()
3525 (ret = sf1_read(adapter, 1, 1, 0, data)) != 0) in t4_read_flash()
3529 ret = sf1_read(adapter, 4, nwords > 1, nwords == 1, data); in t4_read_flash()
3531 t4_write_reg(adapter, A_SF_OP, 0); /* unlock SF */ in t4_read_flash()
3553 int t4_write_flash(struct adapter *adapter, unsigned int addr, in t4_write_flash() argument
3560 if (addr >= adapter->params.sf_size || offset + n > SF_PAGE_SIZE) in t4_write_flash()
3565 if ((ret = sf1_write(adapter, 1, 0, 1, SF_WR_ENABLE)) != 0 || in t4_write_flash()
3566 (ret = sf1_write(adapter, 4, 1, 1, val)) != 0) in t4_write_flash()
3577 ret = sf1_write(adapter, c, c != left, 1, val); in t4_write_flash()
3581 ret = flash_wait_op(adapter, 8, 1); in t4_write_flash()
3585 t4_write_reg(adapter, A_SF_OP, 0); /* unlock SF */ in t4_write_flash()
3588 ret = t4_read_flash(adapter, addr & ~0xff, ARRAY_SIZE(buf), buf, in t4_write_flash()
3594 CH_ERR(adapter, in t4_write_flash()
3602 t4_write_reg(adapter, A_SF_OP, 0); /* unlock SF */ in t4_write_flash()
3613 int t4_get_fw_version(struct adapter *adapter, u32 *vers) in t4_get_fw_version() argument
3615 return t4_read_flash(adapter, FLASH_FW_START + in t4_get_fw_version()
3627 int t4_get_bs_version(struct adapter *adapter, u32 *vers) in t4_get_bs_version() argument
3629 return t4_read_flash(adapter, FLASH_FWBOOTSTRAP_START + in t4_get_bs_version()
3641 int t4_get_tp_version(struct adapter *adapter, u32 *vers) in t4_get_tp_version() argument
3643 return t4_read_flash(adapter, FLASH_FW_START + in t4_get_tp_version()
3658 int t4_get_exprom_version(struct adapter *adapter, u32 *vers) in t4_get_exprom_version() argument
3668 ret = t4_read_flash(adapter, FLASH_EXP_ROM_START, in t4_get_exprom_version()
3708 int t4_get_scfg_version(struct adapter *adapter, u32 *vers) in t4_get_scfg_version() argument
3715 ret = t4_query_params(adapter, adapter->mbox, adapter->pf, 0, in t4_get_scfg_version()
3743 int t4_get_vpd_version(struct adapter *adapter, u32 *vers) in t4_get_vpd_version() argument
3750 ret = t4_query_params(adapter, adapter->mbox, adapter->pf, 0, in t4_get_vpd_version()
3766 int t4_get_version_info(struct adapter *adapter) in t4_get_version_info() argument
3777 FIRST_RET(t4_get_fw_version(adapter, &adapter->params.fw_vers)); in t4_get_version_info()
3778 FIRST_RET(t4_get_bs_version(adapter, &adapter->params.bs_vers)); in t4_get_version_info()
3779 FIRST_RET(t4_get_tp_version(adapter, &adapter->params.tp_vers)); in t4_get_version_info()
3780 FIRST_RET(t4_get_exprom_version(adapter, &adapter->params.er_vers)); in t4_get_version_info()
3781 FIRST_RET(t4_get_scfg_version(adapter, &adapter->params.scfg_vers)); in t4_get_version_info()
3782 FIRST_RET(t4_get_vpd_version(adapter, &adapter->params.vpd_vers)); in t4_get_version_info()
3797 void t4_dump_version_info(struct adapter *adapter) in t4_dump_version_info() argument
3802 CH_INFO(adapter, "Chelsio %s rev %d\n", in t4_dump_version_info()
3803 adapter->params.vpd.id, in t4_dump_version_info()
3804 CHELSIO_CHIP_RELEASE(adapter->params.chip)); in t4_dump_version_info()
3805 CH_INFO(adapter, "S/N: %s, P/N: %s\n", in t4_dump_version_info()
3806 adapter->params.vpd.sn, in t4_dump_version_info()
3807 adapter->params.vpd.pn); in t4_dump_version_info()
3812 if (!adapter->params.fw_vers) in t4_dump_version_info()
3813 CH_WARN(adapter, "No firmware loaded\n"); in t4_dump_version_info()
3815 CH_INFO(adapter, "Firmware version: %u.%u.%u.%u\n", in t4_dump_version_info()
3816 G_FW_HDR_FW_VER_MAJOR(adapter->params.fw_vers), in t4_dump_version_info()
3817 G_FW_HDR_FW_VER_MINOR(adapter->params.fw_vers), in t4_dump_version_info()
3818 G_FW_HDR_FW_VER_MICRO(adapter->params.fw_vers), in t4_dump_version_info()
3819 G_FW_HDR_FW_VER_BUILD(adapter->params.fw_vers)); in t4_dump_version_info()
3825 if (!adapter->params.bs_vers) in t4_dump_version_info()
3826 CH_INFO(adapter, "No bootstrap loaded\n"); in t4_dump_version_info()
3828 CH_INFO(adapter, "Bootstrap version: %u.%u.%u.%u\n", in t4_dump_version_info()
3829 G_FW_HDR_FW_VER_MAJOR(adapter->params.bs_vers), in t4_dump_version_info()
3830 G_FW_HDR_FW_VER_MINOR(adapter->params.bs_vers), in t4_dump_version_info()
3831 G_FW_HDR_FW_VER_MICRO(adapter->params.bs_vers), in t4_dump_version_info()
3832 G_FW_HDR_FW_VER_BUILD(adapter->params.bs_vers)); in t4_dump_version_info()
3837 if (!adapter->params.tp_vers) in t4_dump_version_info()
3838 CH_WARN(adapter, "No TP Microcode loaded\n"); in t4_dump_version_info()
3840 CH_INFO(adapter, "TP Microcode version: %u.%u.%u.%u\n", in t4_dump_version_info()
3841 G_FW_HDR_FW_VER_MAJOR(adapter->params.tp_vers), in t4_dump_version_info()
3842 G_FW_HDR_FW_VER_MINOR(adapter->params.tp_vers), in t4_dump_version_info()
3843 G_FW_HDR_FW_VER_MICRO(adapter->params.tp_vers), in t4_dump_version_info()
3844 G_FW_HDR_FW_VER_BUILD(adapter->params.tp_vers)); in t4_dump_version_info()
3849 if (!adapter->params.er_vers) in t4_dump_version_info()
3850 CH_INFO(adapter, "No Expansion ROM loaded\n"); in t4_dump_version_info()
3852 CH_INFO(adapter, "Expansion ROM version: %u.%u.%u.%u\n", in t4_dump_version_info()
3853 G_FW_HDR_FW_VER_MAJOR(adapter->params.er_vers), in t4_dump_version_info()
3854 G_FW_HDR_FW_VER_MINOR(adapter->params.er_vers), in t4_dump_version_info()
3855 G_FW_HDR_FW_VER_MICRO(adapter->params.er_vers), in t4_dump_version_info()
3856 G_FW_HDR_FW_VER_BUILD(adapter->params.er_vers)); in t4_dump_version_info()
3862 CH_INFO(adapter, "Serial Configuration version: %x\n", in t4_dump_version_info()
3863 adapter->params.scfg_vers); in t4_dump_version_info()
3868 CH_INFO(adapter, "VPD version: %x\n", in t4_dump_version_info()
3869 adapter->params.vpd_vers); in t4_dump_version_info()
3880 int t4_check_fw_version(struct adapter *adap) in t4_check_fw_version()
3954 static int should_install_fs_fw(struct adapter *adap, int card_fw_usable, in should_install_fs_fw()
3998 int t4_prep_fw(struct adapter *adap, struct fw_info *fw_info, in t4_prep_fw()
4097 int t4_flash_erase_sectors(struct adapter *adapter, int start, int end) in t4_flash_erase_sectors() argument
4101 if (end >= adapter->params.sf_nsec) in t4_flash_erase_sectors()
4105 if ((ret = sf1_write(adapter, 1, 0, 1, SF_WR_ENABLE)) != 0 || in t4_flash_erase_sectors()
4106 (ret = sf1_write(adapter, 4, 0, 1, in t4_flash_erase_sectors()
4108 (ret = flash_wait_op(adapter, 14, 500)) != 0) { in t4_flash_erase_sectors()
4109 CH_ERR(adapter, in t4_flash_erase_sectors()
4116 t4_write_reg(adapter, A_SF_OP, 0); /* unlock SF */ in t4_flash_erase_sectors()
4128 int t4_flash_cfg_addr(struct adapter *adapter) in t4_flash_cfg_addr() argument
4134 if (adapter->params.sf_size < FLASH_CFG_START + FLASH_CFG_MAX_SIZE) in t4_flash_cfg_addr()
4145 static int t4_fw_matches_chip(const struct adapter *adap, in t4_fw_matches_chip()
4172 int t4_load_fw(struct adapter *adap, const u8 *fw_data, unsigned int size, in t4_load_fw()
4276 int t4_phy_fw_ver(struct adapter *adap, int *phy_fw_ver) in t4_phy_fw_ver()
4320 int t4_load_phy_fw(struct adapter *adap, in t4_load_phy_fw()
4419 int t4_fwcache(struct adapter *adap, enum fw_params_param_dev_fwcache op) in t4_fwcache()
4438 void t4_cim_read_pif_la(struct adapter *adap, u32 *pif_req, u32 *pif_rsp, in t4_cim_read_pif_la()
4472 void t4_cim_read_ma_la(struct adapter *adap, u32 *ma_req, u32 *ma_rsp) in t4_cim_read_ma_la()
4493 void t4_ulprx_read_la(struct adapter *adap, u32 *la_buf) in t4_ulprx_read_la()
4508 typedef void (*int_handler_t)(struct adapter *adap);
4531 static int t4_handle_intr_status(struct adapter *adapter, unsigned int reg, in t4_handle_intr_status() argument
4536 unsigned int status = t4_read_reg(adapter, reg); in t4_handle_intr_status()
4543 CH_ALERT(adapter, "%s (0x%x)\n", acts->msg, in t4_handle_intr_status()
4546 CH_WARN_RATELIMIT(adapter, "%s (0x%x)\n", acts->msg, in t4_handle_intr_status()
4549 acts->int_handler(adapter); in t4_handle_intr_status()
4554 t4_write_reg(adapter, reg, status); in t4_handle_intr_status()
4561 static void pcie_intr_handler(struct adapter *adapter) in pcie_intr_handler() argument
4661 if (is_t4(adapter->params.chip)) in pcie_intr_handler()
4662 fat = t4_handle_intr_status(adapter, in pcie_intr_handler()
4665 t4_handle_intr_status(adapter, in pcie_intr_handler()
4668 t4_handle_intr_status(adapter, A_PCIE_INT_CAUSE, in pcie_intr_handler()
4671 fat = t4_handle_intr_status(adapter, A_PCIE_INT_CAUSE, in pcie_intr_handler()
4674 t4_fatal_err(adapter); in pcie_intr_handler()
4680 static void tp_intr_handler(struct adapter *adapter) in tp_intr_handler() argument
4688 if (t4_handle_intr_status(adapter, A_TP_INT_CAUSE, tp_intr_info)) in tp_intr_handler()
4689 t4_fatal_err(adapter); in tp_intr_handler()
4695 static void sge_intr_handler(struct adapter *adapter) in sge_intr_handler() argument
4745 perr = t4_read_reg(adapter, A_SGE_INT_CAUSE1); in sge_intr_handler()
4748 CH_ALERT(adapter, "SGE Cause1 Parity Error %#x\n", perr); in sge_intr_handler()
4750 perr = t4_read_reg(adapter, A_SGE_INT_CAUSE2); in sge_intr_handler()
4753 CH_ALERT(adapter, "SGE Cause2 Parity Error %#x\n", perr); in sge_intr_handler()
4755 if (CHELSIO_CHIP_VERSION(adapter->params.chip) >= CHELSIO_T5) { in sge_intr_handler()
4756 perr = t4_read_reg(adapter, A_SGE_INT_CAUSE5); in sge_intr_handler()
4759 CH_ALERT(adapter, "SGE Cause5 Parity Error %#x\n", perr); in sge_intr_handler()
4763 v |= t4_handle_intr_status(adapter, A_SGE_INT_CAUSE3, sge_intr_info); in sge_intr_handler()
4764 if (CHELSIO_CHIP_VERSION(adapter->params.chip) <= CHELSIO_T5) in sge_intr_handler()
4765 v |= t4_handle_intr_status(adapter, A_SGE_INT_CAUSE3, in sge_intr_handler()
4768 v |= t4_handle_intr_status(adapter, A_SGE_INT_CAUSE3, in sge_intr_handler()
4771 err = t4_read_reg(adapter, A_SGE_ERROR_STATS); in sge_intr_handler()
4773 CH_ERR(adapter, "SGE error for queue %u\n", G_ERROR_QID(err)); in sge_intr_handler()
4775 CH_ERR(adapter, "SGE UNCAPTURED_ERROR set (clearing)\n"); in sge_intr_handler()
4776 t4_write_reg(adapter, A_SGE_ERROR_STATS, F_ERROR_QID_VALID | in sge_intr_handler()
4781 t4_fatal_err(adapter); in sge_intr_handler()
4792 static void cim_intr_handler(struct adapter *adapter) in cim_intr_handler() argument
4839 fw_err = t4_read_reg(adapter, A_PCIE_FW); in cim_intr_handler()
4841 t4_report_fw_error(adapter); in cim_intr_handler()
4849 val = t4_read_reg(adapter, A_CIM_HOST_INT_CAUSE); in cim_intr_handler()
4853 t4_write_reg(adapter, A_CIM_HOST_INT_CAUSE, in cim_intr_handler()
4856 fat = t4_handle_intr_status(adapter, A_CIM_HOST_INT_CAUSE, in cim_intr_handler()
4858 t4_handle_intr_status(adapter, A_CIM_HOST_UPACC_INT_CAUSE, in cim_intr_handler()
4861 t4_fatal_err(adapter); in cim_intr_handler()
4867 static void ulprx_intr_handler(struct adapter *adapter) in ulprx_intr_handler() argument
4876 if (t4_handle_intr_status(adapter, A_ULP_RX_INT_CAUSE, ulprx_intr_info)) in ulprx_intr_handler()
4877 t4_fatal_err(adapter); in ulprx_intr_handler()
4883 static void ulptx_intr_handler(struct adapter *adapter) in ulptx_intr_handler() argument
4898 if (t4_handle_intr_status(adapter, A_ULP_TX_INT_CAUSE, ulptx_intr_info)) in ulptx_intr_handler()
4899 t4_fatal_err(adapter); in ulptx_intr_handler()
4905 static void pmtx_intr_handler(struct adapter *adapter) in pmtx_intr_handler() argument
4921 if (t4_handle_intr_status(adapter, A_PM_TX_INT_CAUSE, pmtx_intr_info)) in pmtx_intr_handler()
4922 t4_fatal_err(adapter); in pmtx_intr_handler()
4928 static void pmrx_intr_handler(struct adapter *adapter) in pmrx_intr_handler() argument
4941 if (t4_handle_intr_status(adapter, A_PM_RX_INT_CAUSE, pmrx_intr_info)) in pmrx_intr_handler()
4942 t4_fatal_err(adapter); in pmrx_intr_handler()
4948 static void cplsw_intr_handler(struct adapter *adapter) in cplsw_intr_handler() argument
4960 if (t4_handle_intr_status(adapter, A_CPL_INTR_CAUSE, cplsw_intr_info)) in cplsw_intr_handler()
4961 t4_fatal_err(adapter); in cplsw_intr_handler()
4967 static void le_intr_handler(struct adapter *adap) in le_intr_handler()
4999 static void mps_intr_handler(struct adapter *adapter) in mps_intr_handler() argument
5057 fat = t4_handle_intr_status(adapter, A_MPS_RX_PERR_INT_CAUSE, in mps_intr_handler()
5059 t4_handle_intr_status(adapter, A_MPS_TX_INT_CAUSE, in mps_intr_handler()
5060 is_t6(adapter->params.chip) in mps_intr_handler()
5063 t4_handle_intr_status(adapter, A_MPS_TRC_INT_CAUSE, in mps_intr_handler()
5065 t4_handle_intr_status(adapter, A_MPS_STAT_PERR_INT_CAUSE_SRAM, in mps_intr_handler()
5067 t4_handle_intr_status(adapter, A_MPS_STAT_PERR_INT_CAUSE_TX_FIFO, in mps_intr_handler()
5069 t4_handle_intr_status(adapter, A_MPS_STAT_PERR_INT_CAUSE_RX_FIFO, in mps_intr_handler()
5071 t4_handle_intr_status(adapter, A_MPS_CLS_INT_CAUSE, in mps_intr_handler()
5074 t4_write_reg(adapter, A_MPS_INT_CAUSE, 0); in mps_intr_handler()
5075 t4_read_reg(adapter, A_MPS_INT_CAUSE); /* flush */ in mps_intr_handler()
5077 t4_fatal_err(adapter); in mps_intr_handler()
5086 static void mem_intr_handler(struct adapter *adapter, int idx) in mem_intr_handler() argument
5096 if (is_t4(adapter->params.chip)) { in mem_intr_handler()
5108 v = t4_read_reg(adapter, addr) & MEM_INT_MASK; in mem_intr_handler()
5110 CH_ALERT(adapter, "%s FIFO parity error\n", in mem_intr_handler()
5113 u32 cnt = G_ECC_CECNT(t4_read_reg(adapter, cnt_addr)); in mem_intr_handler()
5116 t4_edc_err_read(adapter, idx); in mem_intr_handler()
5118 t4_write_reg(adapter, cnt_addr, V_ECC_CECNT(M_ECC_CECNT)); in mem_intr_handler()
5119 CH_WARN_RATELIMIT(adapter, in mem_intr_handler()
5124 CH_ALERT(adapter, in mem_intr_handler()
5127 t4_write_reg(adapter, addr, v); in mem_intr_handler()
5129 t4_fatal_err(adapter); in mem_intr_handler()
5135 static void ma_intr_handler(struct adapter *adapter) in ma_intr_handler() argument
5137 u32 v, status = t4_read_reg(adapter, A_MA_INT_CAUSE); in ma_intr_handler()
5140 CH_ALERT(adapter, in ma_intr_handler()
5142 t4_read_reg(adapter, A_MA_PARITY_ERROR_STATUS1)); in ma_intr_handler()
5143 if (is_t5(adapter->params.chip)) in ma_intr_handler()
5144 CH_ALERT(adapter, in ma_intr_handler()
5146 t4_read_reg(adapter, in ma_intr_handler()
5150 v = t4_read_reg(adapter, A_MA_INT_WRAP_STATUS); in ma_intr_handler()
5151 CH_ALERT(adapter, "MA address wrap-around error by " in ma_intr_handler()
5156 t4_write_reg(adapter, A_MA_INT_CAUSE, status); in ma_intr_handler()
5157 t4_fatal_err(adapter); in ma_intr_handler()
5163 static void smb_intr_handler(struct adapter *adap) in smb_intr_handler()
5179 static void ncsi_intr_handler(struct adapter *adap) in ncsi_intr_handler()
5196 static void xgmac_intr_handler(struct adapter *adap, int port) in xgmac_intr_handler()
5224 static void pl_perr_intr_handler(struct adapter *adap) in pl_perr_intr_handler()
5265 static void pl_intr_handler(struct adapter *adap) in pl_intr_handler()
5296 int t4_slow_intr_handler(struct adapter *adapter) in t4_slow_intr_handler() argument
5302 u32 raw_cause = t4_read_reg(adapter, A_PL_INT_CAUSE); in t4_slow_intr_handler()
5303 u32 enable = t4_read_reg(adapter, A_PL_INT_ENABLE); in t4_slow_intr_handler()
5310 t4_write_reg(adapter, A_PL_INT_ENABLE, 0); in t4_slow_intr_handler()
5311 (void)t4_read_reg(adapter, A_PL_INT_ENABLE); /* flush */ in t4_slow_intr_handler()
5314 cim_intr_handler(adapter); in t4_slow_intr_handler()
5316 mps_intr_handler(adapter); in t4_slow_intr_handler()
5318 ncsi_intr_handler(adapter); in t4_slow_intr_handler()
5320 pl_intr_handler(adapter); in t4_slow_intr_handler()
5322 smb_intr_handler(adapter); in t4_slow_intr_handler()
5324 xgmac_intr_handler(adapter, 0); in t4_slow_intr_handler()
5326 xgmac_intr_handler(adapter, 1); in t4_slow_intr_handler()
5328 xgmac_intr_handler(adapter, 2); in t4_slow_intr_handler()
5330 xgmac_intr_handler(adapter, 3); in t4_slow_intr_handler()
5332 pcie_intr_handler(adapter); in t4_slow_intr_handler()
5334 mem_intr_handler(adapter, MEM_MC); in t4_slow_intr_handler()
5335 if (is_t5(adapter->params.chip) && (cause & F_MC1)) in t4_slow_intr_handler()
5336 mem_intr_handler(adapter, MEM_MC1); in t4_slow_intr_handler()
5338 mem_intr_handler(adapter, MEM_EDC0); in t4_slow_intr_handler()
5340 mem_intr_handler(adapter, MEM_EDC1); in t4_slow_intr_handler()
5342 le_intr_handler(adapter); in t4_slow_intr_handler()
5344 tp_intr_handler(adapter); in t4_slow_intr_handler()
5346 ma_intr_handler(adapter); in t4_slow_intr_handler()
5348 pmtx_intr_handler(adapter); in t4_slow_intr_handler()
5350 pmrx_intr_handler(adapter); in t4_slow_intr_handler()
5352 ulprx_intr_handler(adapter); in t4_slow_intr_handler()
5354 cplsw_intr_handler(adapter); in t4_slow_intr_handler()
5356 sge_intr_handler(adapter); in t4_slow_intr_handler()
5358 ulptx_intr_handler(adapter); in t4_slow_intr_handler()
5361 t4_write_reg(adapter, A_PL_INT_CAUSE, raw_cause & GLBL_INTR_MASK); in t4_slow_intr_handler()
5366 t4_write_reg(adapter, A_PL_INT_ENABLE, enable); in t4_slow_intr_handler()
5367 (void)t4_read_reg(adapter, A_PL_INT_ENABLE); /* flush */ in t4_slow_intr_handler()
5384 void t4_intr_enable(struct adapter *adapter) in t4_intr_enable() argument
5387 u32 whoami = t4_read_reg(adapter, A_PL_WHOAMI); in t4_intr_enable()
5388 u32 pf = (CHELSIO_CHIP_VERSION(adapter->params.chip) <= CHELSIO_T5 in t4_intr_enable()
5392 if (CHELSIO_CHIP_VERSION(adapter->params.chip) <= CHELSIO_T5) in t4_intr_enable()
5396 t4_write_reg(adapter, A_SGE_INT_ENABLE3, F_ERR_CPL_EXCEED_IQE_SIZE | in t4_intr_enable()
5403 t4_write_reg(adapter, MYPF_REG(A_PL_PF_INT_ENABLE), PF_INTR_MASK); in t4_intr_enable()
5404 t4_set_reg_field(adapter, A_PL_INT_MAP0, 0, 1 << pf); in t4_intr_enable()
5415 void t4_intr_disable(struct adapter *adapter) in t4_intr_disable() argument
5417 u32 whoami = t4_read_reg(adapter, A_PL_WHOAMI); in t4_intr_disable()
5418 u32 pf = (CHELSIO_CHIP_VERSION(adapter->params.chip) <= CHELSIO_T5 in t4_intr_disable()
5422 t4_write_reg(adapter, MYPF_REG(A_PL_PF_INT_ENABLE), 0); in t4_intr_disable()
5423 t4_set_reg_field(adapter, A_PL_INT_MAP0, 1 << pf, 0); in t4_intr_disable()
5426 unsigned int t4_chip_rss_size(struct adapter *adap) in t4_chip_rss_size()
5451 int t4_config_rss_range(struct adapter *adapter, int mbox, unsigned int viid, in t4_config_rss_range() argument
5517 ret = t4_wr_mbox(adapter, mbox, &cmd, sizeof(cmd), NULL); in t4_config_rss_range()
5533 int t4_config_glbl_rss(struct adapter *adapter, int mbox, unsigned int mode, in t4_config_glbl_rss() argument
5551 return t4_wr_mbox(adapter, mbox, &c, sizeof(c), NULL); in t4_config_glbl_rss()
5566 int t4_config_vi_rss(struct adapter *adapter, int mbox, unsigned int viid, in t4_config_vi_rss() argument
5583 return t4_wr_mbox(adapter, mbox, &c, sizeof(c), NULL); in t4_config_vi_rss()
5587 static int rd_rss_row(struct adapter *adap, int row, u32 *val) in rd_rss_row()
5601 int t4_read_rss(struct adapter *adapter, u16 *map) in t4_read_rss() argument
5606 nentries = t4_chip_rss_size(adapter); in t4_read_rss()
5608 ret = rd_rss_row(adapter, i, &val); in t4_read_rss()
5629 static int t4_tp_fw_ldst_rw(struct adapter *adap, int cmd, u32 *vals, in t4_tp_fw_ldst_rw()
5673 static void t4_tp_indirect_rw(struct adapter *adap, u32 reg_addr, u32 reg_data, in t4_tp_indirect_rw()
5720 void t4_tp_pio_read(struct adapter *adap, u32 *buff, u32 nregs, in t4_tp_pio_read()
5737 void t4_tp_pio_write(struct adapter *adap, u32 *buff, u32 nregs, in t4_tp_pio_write()
5754 void t4_tp_tm_pio_read(struct adapter *adap, u32 *buff, u32 nregs, in t4_tp_tm_pio_read()
5771 void t4_tp_mib_read(struct adapter *adap, u32 *buff, u32 nregs, u32 start_index, in t4_tp_mib_read()
5786 void t4_read_rss_key(struct adapter *adap, u32 *key, bool sleep_ok) in t4_read_rss_key()
5802 void t4_write_rss_key(struct adapter *adap, const u32 *key, int idx, in t4_write_rss_key()
5839 void t4_read_rss_pf_config(struct adapter *adapter, unsigned int index, in t4_read_rss_pf_config() argument
5842 t4_tp_pio_read(adapter, valp, 1, A_TP_RSS_PF0_CONFIG + index, sleep_ok); in t4_read_rss_pf_config()
5855 void t4_write_rss_pf_config(struct adapter *adapter, unsigned int index, in t4_write_rss_pf_config() argument
5858 t4_tp_pio_write(adapter, &val, 1, A_TP_RSS_PF0_CONFIG + index, in t4_write_rss_pf_config()
5873 void t4_read_rss_vf_config(struct adapter *adapter, unsigned int index, in t4_read_rss_vf_config() argument
5878 if (CHELSIO_CHIP_VERSION(adapter->params.chip) <= CHELSIO_T5) { in t4_read_rss_vf_config()
5888 vrt = t4_read_reg(adapter, A_TP_RSS_CONFIG_VRT); in t4_read_rss_vf_config()
5891 t4_write_reg(adapter, A_TP_RSS_CONFIG_VRT, vrt); in t4_read_rss_vf_config()
5896 t4_tp_pio_read(adapter, vfl, 1, A_TP_RSS_VFL_CONFIG, sleep_ok); in t4_read_rss_vf_config()
5897 t4_tp_pio_read(adapter, vfh, 1, A_TP_RSS_VFH_CONFIG, sleep_ok); in t4_read_rss_vf_config()
5907 u32 t4_read_rss_pf_map(struct adapter *adapter, bool sleep_ok) in t4_read_rss_pf_map() argument
5911 t4_tp_pio_read(adapter, &pfmap, 1, A_TP_RSS_PF_MAP, sleep_ok); in t4_read_rss_pf_map()
5923 u32 t4_read_rss_pf_mask(struct adapter *adapter, bool sleep_ok) in t4_read_rss_pf_mask() argument
5927 t4_tp_pio_read(adapter, &pfmask, 1, A_TP_RSS_PF_MSK, sleep_ok); in t4_read_rss_pf_mask()
5942 void t4_tp_get_tcp_stats(struct adapter *adap, struct tp_tcp_stats *v4, in t4_tp_get_tcp_stats()
5980 void t4_tp_get_err_stats(struct adapter *adap, struct tp_err_stats *st, in t4_tp_get_err_stats()
6021 void t4_tp_get_cpl_stats(struct adapter *adap, struct tp_cpl_stats *st, in t4_tp_get_cpl_stats()
6038 void t4_tp_get_rdma_stats(struct adapter *adap, struct tp_rdma_stats *st, in t4_tp_get_rdma_stats()
6054 void t4_get_fcoe_stats(struct adapter *adap, unsigned int idx, in t4_get_fcoe_stats()
6079 void t4_get_usm_stats(struct adapter *adap, struct tp_usm_stats *st, in t4_get_usm_stats()
6099 void t4_read_mtu_tbl(struct adapter *adap, u16 *mtus, u8 *mtu_log) in t4_read_mtu_tbl()
6122 void t4_read_cong_tbl(struct adapter *adap, u16 incr[NMTUS][NCCTRL_WIN]) in t4_read_cong_tbl()
6144 void t4_tp_wr_bits_indirect(struct adapter *adap, unsigned int addr, in t4_tp_wr_bits_indirect()
6211 void t4_load_mtus(struct adapter *adap, const unsigned short *mtus, in t4_load_mtus()
6253 static u64 chan_rate(struct adapter *adap, unsigned int bytes256) in chan_rate()
6269 void t4_get_chan_txrate(struct adapter *adap, u64 *nic_rate, u64 *ofld_rate) in t4_get_chan_txrate()
6304 int t4_set_trace_filter(struct adapter *adap, const struct trace_params *tp, int idx, in t4_set_trace_filter()
6381 void t4_get_trace_filter(struct adapter *adap, struct trace_params *tp, int idx, in t4_get_trace_filter()
6425 int t4_read_tcb(struct adapter *adap, int win, int tid, u32 tcb[TCB_SIZE/4]) in t4_read_tcb()
6451 void t4_pmtx_get_stats(struct adapter *adap, u32 cnt[], u64 cycles[]) in t4_pmtx_get_stats()
6478 void t4_pmrx_get_stats(struct adapter *adap, u32 cnt[], u64 cycles[]) in t4_pmrx_get_stats()
6506 static inline unsigned int compute_mps_bg_map(struct adapter *adapter, in compute_mps_bg_map() argument
6511 chip_version = CHELSIO_CHIP_VERSION(adapter->params.chip); in compute_mps_bg_map()
6512 nports = 1 << G_NUMPORTS(t4_read_reg(adapter, A_MPS_CMN_CTL)); in compute_mps_bg_map()
6531 CH_ERR(adapter, "Need MPS Buffer Group Map for Chip %0x, Nports %d\n", in compute_mps_bg_map()
6546 unsigned int t4_get_mps_bg_map(struct adapter *adapter, int pidx) in t4_get_mps_bg_map() argument
6551 nports = 1 << G_NUMPORTS(t4_read_reg(adapter, A_MPS_CMN_CTL)); in t4_get_mps_bg_map()
6553 CH_WARN(adapter, "MPS Port Index %d >= Nports %d\n", pidx, nports); in t4_get_mps_bg_map()
6559 mps_bg_map = adapter->params.mps_bg_map; in t4_get_mps_bg_map()
6573 if (adapter->flags & FW_OK) { in t4_get_mps_bg_map()
6579 ret = t4_query_params_ns(adapter, adapter->mbox, adapter->pf, in t4_get_mps_bg_map()
6598 mps_bg_map[pidx] = compute_mps_bg_map(adapter, pidx); in t4_get_mps_bg_map()
6607 unsigned int t4_get_tp_e2c_map(struct adapter *adapter, int pidx) in t4_get_tp_e2c_map() argument
6609 unsigned int nports = 1 << G_NUMPORTS(t4_read_reg(adapter, A_MPS_CMN_CTL)); in t4_get_tp_e2c_map()
6614 CH_WARN(adapter, "TP E2C Channel Port Index %d >= Nports %d\n", pidx, nports); in t4_get_tp_e2c_map()
6623 ret = t4_query_params_ns(adapter, adapter->mbox, adapter->pf, in t4_get_tp_e2c_map()
6639 unsigned int t4_get_tp_ch_map(struct adapter *adapter, int pidx) in t4_get_tp_ch_map() argument
6641 unsigned int chip_version = CHELSIO_CHIP_VERSION(adapter->params.chip); in t4_get_tp_ch_map()
6642 unsigned int nports = 1 << G_NUMPORTS(t4_read_reg(adapter, A_MPS_CMN_CTL)); in t4_get_tp_ch_map()
6645 CH_WARN(adapter, "TP Port Index %d >= Nports %d\n", pidx, nports); in t4_get_tp_ch_map()
6672 CH_ERR(adapter, "Need TP Channel Map for Chip %0x, Nports %d\n", in t4_get_tp_ch_map()
6722 void t4_get_port_stats_offset(struct adapter *adap, int idx, in t4_get_port_stats_offset()
6744 void t4_get_port_stats(struct adapter *adap, int idx, struct port_stats *p) in t4_get_port_stats()
6842 void t4_get_lb_stats(struct adapter *adap, int idx, struct lb_port_stats *p) in t4_get_lb_stats()
6913 int t4_fwaddrspace_write(struct adapter *adap, unsigned int mbox, in t4_fwaddrspace_write()
6943 int t4_mdio_rd(struct adapter *adap, unsigned int mbox, unsigned int phy_addr, in t4_mdio_rd()
6977 int t4_mdio_wr(struct adapter *adap, unsigned int mbox, unsigned int phy_addr, in t4_mdio_wr()
7003 void t4_sge_decode_idma_state(struct adapter *adapter, int state) in t4_sge_decode_idma_state() argument
7118 unsigned int chip_version = CHELSIO_CHIP_VERSION(adapter->params.chip); in t4_sge_decode_idma_state()
7140 CH_ERR(adapter, "Unsupported chip version %d\n", chip_version); in t4_sge_decode_idma_state()
7145 CH_WARN(adapter, "idma state %s\n", sge_idma_decode[state]); in t4_sge_decode_idma_state()
7147 CH_WARN(adapter, "idma state %d unknown\n", state); in t4_sge_decode_idma_state()
7150 CH_WARN(adapter, "SGE register %#x value %#x\n", in t4_sge_decode_idma_state()
7151 sge_regs[i], t4_read_reg(adapter, sge_regs[i])); in t4_sge_decode_idma_state()
7162 int t4_sge_ctxt_flush(struct adapter *adap, unsigned int mbox, int ctxt_type) in t4_sge_ctxt_flush()
7192 int t4_read_sge_dbqtimers(struct adapter *adap, unsigned int ndbqtimers, in t4_read_sge_dbqtimers()
7234 int t4_fw_hello(struct adapter *adap, unsigned int mbox, unsigned int evt_mbox, in t4_fw_hello()
7360 int t4_fw_bye(struct adapter *adap, unsigned int mbox) in t4_fw_bye()
7377 int t4_fw_reset(struct adapter *adap, unsigned int mbox, int reset) in t4_fw_reset()
7403 static int t4_fw_halt(struct adapter *adap, unsigned int mbox, int force) in t4_fw_halt()
7468 static int t4_fw_restart(struct adapter *adap, unsigned int mbox, int reset) in t4_fw_restart()
7531 int t4_fw_upgrade(struct adapter *adap, unsigned int mbox, in t4_fw_upgrade()
7601 int t4_fl_pkt_align(struct adapter *adap, bool is_packed) in t4_fl_pkt_align()
7661 int t4_fixup_host_params_compat(struct adapter *adap, in t4_fixup_host_params_compat()
7817 int t4_fixup_host_params(struct adapter *adap, unsigned int page_size, in t4_fixup_host_params()
7832 int t4_fw_initialize(struct adapter *adap, unsigned int mbox) in t4_fw_initialize()
7856 int t4_query_params_rw(struct adapter *adap, unsigned int mbox, unsigned int pf, in t4_query_params_rw()
7897 int t4_query_params(struct adapter *adap, unsigned int mbox, unsigned int pf, in t4_query_params()
7905 int t4_query_params_ns(struct adapter *adap, unsigned int mbox, unsigned int pf, in t4_query_params_ns()
7927 int t4_set_params_timeout(struct adapter *adap, unsigned int mbox, in t4_set_params_timeout()
7966 int t4_set_params(struct adapter *adap, unsigned int mbox, unsigned int pf, in t4_set_params()
7995 int t4_cfg_pfvf(struct adapter *adap, unsigned int mbox, unsigned int pf, in t4_cfg_pfvf()
8042 int t4_alloc_vi_func(struct adapter *adap, unsigned int mbox, in t4_alloc_vi_func()
8110 int t4_alloc_vi(struct adapter *adap, unsigned int mbox, unsigned int port, in t4_alloc_vi()
8129 int t4_free_vi(struct adapter *adap, unsigned int mbox, unsigned int pf, in t4_free_vi()
8160 int t4_set_rxmode(struct adapter *adap, unsigned int mbox, unsigned int viid, in t4_set_rxmode()
8208 int t4_alloc_encap_mac_filt(struct adapter *adap, unsigned int viid, in t4_alloc_encap_mac_filt()
8256 int t4_alloc_raw_mac_filt(struct adapter *adap, unsigned int viid, in t4_alloc_raw_mac_filt()
8319 int t4_alloc_mac_filt(struct adapter *adap, unsigned int mbox, in t4_alloc_mac_filt()
8401 int t4_free_encap_mac_filt(struct adapter *adap, unsigned int viid, in t4_free_encap_mac_filt()
8444 int t4_free_raw_mac_filt(struct adapter *adap, unsigned int viid, in t4_free_raw_mac_filt()
8492 int t4_free_mac_filt(struct adapter *adap, unsigned int mbox, in t4_free_mac_filt()
8576 int t4_change_mac(struct adapter *adap, unsigned int mbox, unsigned int viid, in t4_change_mac()
8594 int t4_set_addr_hash(struct adapter *adap, unsigned int mbox, unsigned int viid, in t4_set_addr_hash()
8623 int t4_enable_vi_params(struct adapter *adap, unsigned int mbox, in t4_enable_vi_params()
8650 int t4_enable_vi(struct adapter *adap, unsigned int mbox, unsigned int viid, in t4_enable_vi()
8671 int t4_enable_pi_params(struct adapter *adap, unsigned int mbox, in t4_enable_pi_params()
8693 int t4_identify_port(struct adapter *adap, unsigned int mbox, unsigned int viid, in t4_identify_port()
8722 int t4_iq_stop(struct adapter *adap, unsigned int mbox, unsigned int pf, in t4_iq_stop()
8753 int t4_iq_free(struct adapter *adap, unsigned int mbox, unsigned int pf, in t4_iq_free()
8781 int t4_eth_eq_free(struct adapter *adap, unsigned int mbox, unsigned int pf, in t4_eth_eq_free()
8806 int t4_ctrl_eq_free(struct adapter *adap, unsigned int mbox, unsigned int pf, in t4_ctrl_eq_free()
8831 int t4_ofld_eq_free(struct adapter *adap, unsigned int mbox, unsigned int pf, in t4_ofld_eq_free()
9074 CH_ERR(pi->adapter, in t4_link_update_fec()
9088 CH_ERR(pi->adapter, in t4_link_update_fec()
9257 int t4_link_l1cfg_core(struct adapter *adapter, unsigned int mbox, in t4_link_l1cfg_core() argument
9261 unsigned int fw_caps = adapter->params.fw_caps_support; in t4_link_l1cfg_core()
9280 ret = t4_wr_mbox_meat_timeout(adapter, mbox, &cmd, sizeof(cmd), NULL, in t4_link_l1cfg_core()
9290 CH_ERR(adapter, in t4_link_l1cfg_core()
9307 int t4_restart_aneg(struct adapter *adap, unsigned int mbox, unsigned int port) in t4_restart_aneg()
9431 struct adapter *adapter = pi->adapter; in t4_handle_get_port_info() local
9471 CH_ERR(adapter, "Handle Port Information: Bad Command/Action %#x\n", in t4_handle_get_port_info()
9511 t4_os_portmod_changed(adapter, pi->port_id); in t4_handle_get_port_info()
9519 CH_WARN_RATELIMIT(adapter, in t4_handle_get_port_info()
9529 t4_os_link_changed(adapter, pi->port_id, link_ok); in t4_handle_get_port_info()
9546 ret = t4_link_l1cfg_ns(adapter, adapter->mbox, pi->lport, lc, in t4_handle_get_port_info()
9549 CH_WARN(adapter, in t4_handle_get_port_info()
9567 unsigned int fw_caps = pi->adapter->params.fw_caps_support; in t4_update_port_info()
9580 ret = t4_wr_mbox(pi->adapter, pi->adapter->mbox, in t4_update_port_info()
9603 unsigned int fw_caps = pi->adapter->params.fw_caps_support; in t4_get_link_params()
9619 ret = t4_wr_mbox(pi->adapter, pi->adapter->mbox, in t4_get_link_params()
9653 int t4_handle_fw_rpl(struct adapter *adap, const __be64 *rpl) in t4_handle_fw_rpl()
9696 static void get_pci_mode(struct adapter *adapter, in get_pci_mode() argument
9702 pcie_cap = t4_os_find_pci_capability(adapter, PCI_CAP_ID_EXP); in get_pci_mode()
9704 t4_os_pci_read_cfg2(adapter, pcie_cap + PCI_EXP_LNKSTA, &val); in get_pci_mode()
9718 int t4_wait_dev_ready(struct adapter *adapter) in t4_wait_dev_ready() argument
9722 whoami = t4_read_reg(adapter, A_PL_WHOAMI); in t4_wait_dev_ready()
9727 whoami = t4_read_reg(adapter, A_PL_WHOAMI); in t4_wait_dev_ready()
9731 CH_ERR(adapter, "Device didn't become ready for access, " in t4_wait_dev_ready()
9741 int t4_get_flash_params(struct adapter *adapter) in t4_get_flash_params() argument
9763 ret = sf1_write(adapter, 1, 1, 0, SF_RD_ID); in t4_get_flash_params()
9765 ret = sf1_read(adapter, 3, 0, 1, &flashid); in t4_get_flash_params()
9766 t4_write_reg(adapter, A_SF_OP, 0); /* unlock SF */ in t4_get_flash_params()
9775 adapter->params.sf_size = in t4_get_flash_params()
9777 adapter->params.sf_nsec = in t4_get_flash_params()
9778 adapter->params.sf_size / SF_SEC_SIZE; in t4_get_flash_params()
9861 CH_WARN(adapter, "Unknown Flash Part, ID = %#x, assuming 4MB\n", flashid); in t4_get_flash_params()
9868 adapter->params.sf_size = size; in t4_get_flash_params()
9869 adapter->params.sf_nsec = size / SF_SEC_SIZE; in t4_get_flash_params()
9877 if (adapter->params.sf_size < FLASH_MIN_SIZE) in t4_get_flash_params()
9878 CH_WARN(adapter, "WARNING: Flash Part ID %#x, size %#x < %#x\n", in t4_get_flash_params()
9879 flashid, adapter->params.sf_size, FLASH_MIN_SIZE); in t4_get_flash_params()
9884 static void set_pcie_completion_timeout(struct adapter *adapter, in set_pcie_completion_timeout() argument
9890 pcie_cap = t4_os_find_pci_capability(adapter, PCI_CAP_ID_EXP); in set_pcie_completion_timeout()
9892 t4_os_pci_read_cfg2(adapter, pcie_cap + PCI_EXP_DEVCTL2, &val); in set_pcie_completion_timeout()
9895 t4_os_pci_write_cfg2(adapter, pcie_cap + PCI_EXP_DEVCTL2, val); in set_pcie_completion_timeout()
9904 enum chip_type t4_get_chip_type(struct adapter *adap, int ver) in t4_get_chip_type()
9950 int t4_prep_pf(struct adapter *adapter) in t4_prep_pf() argument
9954 ret = t4_wait_dev_ready(adapter); in t4_prep_pf()
9958 get_pci_mode(adapter, &adapter->params.pci); in t4_prep_pf()
9963 t4_os_pci_read_cfg2(adapter, PCI_DEVICE_ID, &adapter->params.pci.device_id); in t4_prep_pf()
9964 t4_os_pci_read_cfg2(adapter, PCI_VENDOR_ID, &adapter->params.pci.vendor_id); in t4_prep_pf()
9966 ver = CHELSIO_PCI_ID_VER(adapter->params.pci.device_id); in t4_prep_pf()
9967 adapter->params.chip = t4_get_chip_type(adapter, ver); in t4_prep_pf()
9968 if (is_t4(adapter->params.chip)) { in t4_prep_pf()
9969 adapter->params.arch.sge_fl_db = F_DBPRIO; in t4_prep_pf()
9970 adapter->params.arch.mps_tcam_size = in t4_prep_pf()
9972 adapter->params.arch.mps_rplc_size = 128; in t4_prep_pf()
9973 adapter->params.arch.nchan = NCHAN; in t4_prep_pf()
9974 adapter->params.arch.pm_stats_cnt = PM_NSTATS; in t4_prep_pf()
9975 adapter->params.arch.vfcount = 128; in t4_prep_pf()
9979 adapter->params.arch.cng_ch_bits_log = 2; in t4_prep_pf()
9980 } else if (is_t5(adapter->params.chip)) { in t4_prep_pf()
9981 adapter->params.arch.sge_fl_db = F_DBPRIO | F_DBTYPE; in t4_prep_pf()
9982 adapter->params.arch.mps_tcam_size = in t4_prep_pf()
9984 adapter->params.arch.mps_rplc_size = 128; in t4_prep_pf()
9985 adapter->params.arch.nchan = NCHAN; in t4_prep_pf()
9986 adapter->params.arch.pm_stats_cnt = PM_NSTATS; in t4_prep_pf()
9987 adapter->params.arch.vfcount = 128; in t4_prep_pf()
9988 adapter->params.arch.cng_ch_bits_log = 2; in t4_prep_pf()
9989 } else if (is_t6(adapter->params.chip)) { in t4_prep_pf()
9990 adapter->params.arch.sge_fl_db = 0; in t4_prep_pf()
9991 adapter->params.arch.mps_tcam_size = in t4_prep_pf()
9993 adapter->params.arch.mps_rplc_size = 256; in t4_prep_pf()
9994 adapter->params.arch.nchan = 2; in t4_prep_pf()
9995 adapter->params.arch.pm_stats_cnt = T6_PM_NSTATS; in t4_prep_pf()
9996 adapter->params.arch.vfcount = 256; in t4_prep_pf()
10000 adapter->params.arch.cng_ch_bits_log = 3; in t4_prep_pf()
10002 CH_ERR(adapter, "Device %d is not supported\n", in t4_prep_pf()
10003 adapter->params.pci.device_id); in t4_prep_pf()
10007 adapter->params.pci.vpd_cap_addr = in t4_prep_pf()
10008 t4_os_find_pci_capability(adapter, PCI_CAP_ID_VPD); in t4_prep_pf()
10010 if (is_fpga(adapter->params.chip)) { in t4_prep_pf()
10012 adapter->params.cim_la_size = 2 * CIMLA_SIZE; in t4_prep_pf()
10015 adapter->params.cim_la_size = CIMLA_SIZE; in t4_prep_pf()
10018 init_cong_ctrl(adapter->params.a_wnd, adapter->params.b_wnd); in t4_prep_pf()
10023 adapter->params.nports = 1; in t4_prep_pf()
10024 adapter->params.portvec = 1; in t4_prep_pf()
10025 adapter->params.vpd.cclk = 50000; in t4_prep_pf()
10028 set_pcie_completion_timeout(adapter, 0xd); in t4_prep_pf()
10037 int t4_prep_master_pf(struct adapter *adapter) in t4_prep_master_pf() argument
10041 ret = t4_prep_pf(adapter); in t4_prep_master_pf()
10045 ret = t4_get_flash_params(adapter); in t4_prep_master_pf()
10047 CH_ERR(adapter, in t4_prep_master_pf()
10063 int t4_prep_adapter(struct adapter *adapter, bool reset) in t4_prep_adapter() argument
10065 return t4_prep_master_pf(adapter); in t4_prep_adapter()
10080 int t4_shutdown_adapter(struct adapter *adapter) in t4_shutdown_adapter() argument
10084 t4_intr_disable(adapter); in t4_shutdown_adapter()
10085 t4_write_reg(adapter, A_DBG_GPIO_EN, 0); in t4_shutdown_adapter()
10086 for_each_port(adapter, port) { in t4_shutdown_adapter()
10087 u32 a_port_cfg = is_t4(adapter->params.chip) ? in t4_shutdown_adapter()
10091 t4_write_reg(adapter, a_port_cfg, in t4_shutdown_adapter()
10092 t4_read_reg(adapter, a_port_cfg) in t4_shutdown_adapter()
10095 t4_set_reg_field(adapter, A_SGE_CONTROL, F_GLOBALENABLE, 0); in t4_shutdown_adapter()
10126 int t4_bar2_sge_qregs(struct adapter *adapter, in t4_bar2_sge_qregs() argument
10140 if (!user && is_t4(adapter->params.chip)) in t4_bar2_sge_qregs()
10145 page_shift = adapter->params.sge.hps + 10; in t4_bar2_sge_qregs()
10151 ? adapter->params.sge.eq_qpp in t4_bar2_sge_qregs()
10152 : adapter->params.sge.iq_qpp); in t4_bar2_sge_qregs()
10200 int t4_init_devlog_params(struct adapter *adap, int fw_attach) in t4_init_devlog_params()
10265 int t4_init_sge_params(struct adapter *adapter) in t4_init_sge_params() argument
10267 struct sge_params *sge_params = &adapter->params.sge; in t4_init_sge_params()
10273 hps = t4_read_reg(adapter, A_SGE_HOST_PAGE_SIZE); in t4_init_sge_params()
10275 (S_HOSTPAGESIZEPF1 - S_HOSTPAGESIZEPF0) * adapter->pf); in t4_init_sge_params()
10281 (S_QUEUESPERPAGEPF1 - S_QUEUESPERPAGEPF0) * adapter->pf); in t4_init_sge_params()
10282 qpp = t4_read_reg(adapter, A_SGE_EGRESS_QUEUES_PER_PAGE_PF); in t4_init_sge_params()
10284 qpp = t4_read_reg(adapter, A_SGE_INGRESS_QUEUES_PER_PAGE_PF); in t4_init_sge_params()
10297 int t4_init_tp_params(struct adapter *adap, bool sleep_ok) in t4_init_tp_params()
10392 int t4_filter_field_shift(const struct adapter *adap, int filter_sel) in t4_filter_field_shift()
10468 int t4_create_filter_info(const struct adapter *adapter, in t4_create_filter_info() argument
10475 const struct tp_params *tp = &adapter->params.tp; in t4_create_filter_info()
10567 int t4_init_rss_mode(struct adapter *adap, int mbox) in t4_init_rss_mode()
10592 struct adapter *adapter = pi->adapter; in t4_init_portmirror() local
10596 ret = t4_alloc_vi(pi->adapter, mbox, port, pf, vf, 1, NULL, NULL, in t4_init_portmirror()
10606 if (adapter->params.viid_smt_extn_support) { in t4_init_portmirror()
10615 CH_INFO(pi->adapter, "Port %d Traffic Mirror PF = %u; VF = %u\n", in t4_init_portmirror()
10620 int t4_mirror_init(struct adapter *adap, int mbox, int pf, int vf, in t4_mirror_init()
10663 struct adapter *adapter = pi->adapter; in t4_init_portinfo_viid() local
10664 unsigned int fw_caps = adapter->params.fw_caps_support; in t4_init_portinfo_viid()
10685 ret = t4_set_params(adapter, mbox, pf, vf, 1, &param, &val); in t4_init_portinfo_viid()
10687 adapter->params.fw_caps_support = fw_caps; in t4_init_portinfo_viid()
10699 ret = t4_wr_mbox(pi->adapter, mbox, &cmd, sizeof(cmd), &cmd); in t4_init_portinfo_viid()
10729 ret = t4_alloc_vi(pi->adapter, mbox, port, pf, vf, 1, mac, in t4_init_portinfo_viid()
10740 if (adapter->params.viid_smt_extn_support) { in t4_init_portinfo_viid()
10753 pi->rx_cchan = t4_get_tp_e2c_map(pi->adapter, port); in t4_init_portinfo_viid()
10783 int t4_port_init(struct adapter *adap, int mbox, int pf, int vf) in t4_port_init()
10814 void t4_read_cimq_cfg(struct adapter *adap, u16 *base, u16 *size, u16 *thres) in t4_read_cimq_cfg()
10850 int t4_read_cim_ibq(struct adapter *adap, unsigned int qid, u32 *data, size_t n) in t4_read_cim_ibq()
10892 int t4_read_cim_obq(struct adapter *adap, unsigned int qid, u32 *data, size_t n) in t4_read_cim_obq()
10933 int t4_cim_read(struct adapter *adap, unsigned int addr, unsigned int n, in t4_cim_read()
10960 int t4_cim_write(struct adapter *adap, unsigned int addr, unsigned int n, in t4_cim_write()
10977 static int t4_cim_write1(struct adapter *adap, unsigned int addr, in t4_cim_write1()
10993 int t4_cim_read_la(struct adapter *adap, u32 *la_buf, unsigned int *wrptr) in t4_cim_read_la()
11062 void t4_tp_read_la(struct adapter *adap, u64 *la_buf, unsigned int *wrptr) in t4_tp_read_la()
11116 void t4_idma_monitor_init(struct adapter *adapter, in t4_idma_monitor_init() argument
11131 idma->idma_1s_thresh = core_ticks_per_usec(adapter) * 1000000; /* 1s */ in t4_idma_monitor_init()
11142 void t4_idma_monitor(struct adapter *adapter, in t4_idma_monitor() argument
11155 t4_write_reg(adapter, A_SGE_DEBUG_INDEX, 13); in t4_idma_monitor()
11156 idma_same_state_cnt[0] = t4_read_reg(adapter, A_SGE_DEBUG_DATA_HIGH); in t4_idma_monitor()
11157 idma_same_state_cnt[1] = t4_read_reg(adapter, A_SGE_DEBUG_DATA_LOW); in t4_idma_monitor()
11170 CH_WARN(adapter, "SGE idma%d, queue %u, " in t4_idma_monitor()
11208 t4_write_reg(adapter, A_SGE_DEBUG_INDEX, 0); in t4_idma_monitor()
11209 debug0 = t4_read_reg(adapter, A_SGE_DEBUG_DATA_LOW); in t4_idma_monitor()
11212 t4_write_reg(adapter, A_SGE_DEBUG_INDEX, 11); in t4_idma_monitor()
11213 debug11 = t4_read_reg(adapter, A_SGE_DEBUG_DATA_LOW); in t4_idma_monitor()
11216 CH_WARN(adapter, "SGE idma%u, queue %u, potentially stuck in " in t4_idma_monitor()
11221 t4_sge_decode_idma_state(adapter, idma->idma_state[i]); in t4_idma_monitor()
11232 int t4_set_vf_mac_acl(struct adapter *adapter, unsigned int vf, in t4_set_vf_mac_acl() argument
11241 V_FW_ACL_MAC_CMD_PFN(adapter->pf) | in t4_set_vf_mac_acl()
11248 switch (adapter->pf) { in t4_set_vf_mac_acl()
11263 return t4_wr_mbox(adapter, adapter->mbox, &cmd, sizeof(cmd), &cmd); in t4_set_vf_mac_acl()
11277 void t4_read_pace_tbl(struct adapter *adap, unsigned int pace_vals[NTX_SCHED]) in t4_read_pace_tbl()
11298 void t4_get_tx_sched(struct adapter *adap, unsigned int sched, unsigned int *kbps, in t4_get_tx_sched()
11335 int t4_load_cfg(struct adapter *adap, const u8 *cfg_data, unsigned int size) in t4_load_cfg()
11393 int t5_fw_init_extern_mem(struct adapter *adap) in t5_fw_init_extern_mem()
11567 int t4_erase_sf(struct adapter *adap) in t4_erase_sf()
11596 int t4_load_boot(struct adapter *adap, u8 *boot_data, in t4_load_boot()
11725 static int t4_flash_bootcfg_addr(struct adapter *adapter) in t4_flash_bootcfg_addr() argument
11731 if (adapter->params.sf_size < FLASH_BOOTCFG_START + FLASH_BOOTCFG_MAX_SIZE) in t4_flash_bootcfg_addr()
11737 int t4_load_bootcfg(struct adapter *adap,const u8 *cfg_data, unsigned int size) in t4_load_bootcfg()
11798 int t4_read_bootcfg(struct adapter *adap, u8 *cfg_data, unsigned int size) in t4_read_bootcfg()
11844 int t4_set_filter_mode(struct adapter *adap, unsigned int mode_map, in t4_set_filter_mode()
11869 void t4_clr_port_stats(struct adapter *adap, int idx) in t4_clr_port_stats()
11907 int t4_i2c_io(struct adapter *adap, unsigned int mbox, in t4_i2c_io()
11957 int t4_i2c_rd(struct adapter *adap, unsigned int mbox, in t4_i2c_rd()
11965 int t4_i2c_wr(struct adapter *adap, unsigned int mbox, in t4_i2c_wr()
11983 int t4_sge_ctxt_rd(struct adapter *adap, unsigned int mbox, unsigned int cid, in t4_sge_ctxt_rd()
12027 int t4_sge_ctxt_rd_bd(struct adapter *adap, unsigned int cid, enum ctxt_type ctype, in t4_sge_ctxt_rd_bd()
12040 int t4_sched_config(struct adapter *adapter, int type, int minmaxen) in t4_sched_config() argument
12054 return t4_wr_mbox_meat(adapter,adapter->mbox, &cmd, sizeof(cmd), in t4_sched_config()
12058 int t4_sched_params(struct adapter *adapter, in t4_sched_params() argument
12087 return t4_wr_mbox_meat(adapter,adapter->mbox, &cmd, sizeof(cmd), in t4_sched_params()
12091 int t4_read_sched_params(struct adapter *adapter, in t4_read_sched_params() argument
12110 ret = t4_wr_mbox_meat(adapter, adapter->mbox, &cmd, sizeof(cmd), in t4_read_sched_params()
12143 int t4_config_watchdog(struct adapter *adapter, unsigned int mbox, in t4_config_watchdog() argument
12170 return t4_wr_mbox(adapter, mbox, &wdog, sizeof wdog, NULL); in t4_config_watchdog()
12173 int t4_get_devlog_level(struct adapter *adapter, unsigned int *level) in t4_get_devlog_level() argument
12182 ret = t4_wr_mbox(adapter, adapter->mbox, &devlog_cmd, in t4_get_devlog_level()
12191 int t4_set_devlog_level(struct adapter *adapter, unsigned int level) in t4_set_devlog_level() argument
12201 return t4_wr_mbox(adapter, adapter->mbox, &devlog_cmd, in t4_set_devlog_level()
12205 int t4_configure_add_smac(struct adapter *adap) in t4_configure_add_smac()
12236 int t4_configure_ringbb(struct adapter *adap) in t4_configure_ringbb()
12279 int t4_set_vlan_acl(struct adapter *adap, unsigned int mbox, unsigned int vf, in t4_set_vlan_acl()
12322 int t4_del_mac(struct adapter *adap, unsigned int mbox, unsigned int viid, in t4_del_mac()
12371 int t4_add_mac(struct adapter *adap, unsigned int mbox, unsigned int viid, in t4_add_mac()