• Home
  • Raw
  • Download

Lines Matching refs:dd

394 static void hwerr_crcbits(struct ipath_devdata *dd, ipath_err_t hwerrs,  in hwerr_crcbits()  argument
401 if (dd->ipath_flags & IPATH_8BIT_IN_HT0) in hwerr_crcbits()
404 if (dd->ipath_flags & IPATH_8BIT_IN_HT1) in hwerr_crcbits()
427 if (pci_read_config_word(dd->pcidev, in hwerr_crcbits()
428 dd->ipath_ht_slave_off + 0x4, in hwerr_crcbits()
430 dev_info(&dd->pcidev->dev, "Couldn't read " in hwerr_crcbits()
439 if (pci_read_config_word(dd->pcidev, in hwerr_crcbits()
440 dd->ipath_ht_slave_off + 0x8, in hwerr_crcbits()
442 dev_info(&dd->pcidev->dev, "Couldn't read " in hwerr_crcbits()
453 dd->ipath_hwerrmask &= ~crcbits; in hwerr_crcbits()
454 ipath_write_kreg(dd, dd->ipath_kregs->kr_hwerrmask, in hwerr_crcbits()
455 dd->ipath_hwerrmask); in hwerr_crcbits()
482 static void ipath_ht_txe_recover(struct ipath_devdata *dd) in ipath_ht_txe_recover() argument
485 dev_info(&dd->pcidev->dev, in ipath_ht_txe_recover()
501 static void ipath_ht_handle_hwerrors(struct ipath_devdata *dd, char *msg, in ipath_ht_handle_hwerrors() argument
510 hwerrs = ipath_read_kreg64(dd, dd->ipath_kregs->kr_hwerrstatus); in ipath_ht_handle_hwerrors()
521 ipath_dev_err(dd, "Read of hardware error status failed " in ipath_ht_handle_hwerrors()
532 ipath_write_kreg(dd, dd->ipath_kregs->kr_hwerrclear, in ipath_ht_handle_hwerrors()
535 hwerrs &= dd->ipath_hwerrmask; in ipath_ht_handle_hwerrors()
539 if (hwerrs & dd->ipath_eep_st_masks[log_idx].hwerrs_to_log) in ipath_ht_handle_hwerrors()
540 ipath_inc_eeprom_err(dd, log_idx, 1); in ipath_ht_handle_hwerrors()
547 if ((hwerrs & ~(dd->ipath_lasthwerror | TXE_PIO_PARITY | in ipath_ht_handle_hwerrors()
550 dev_info(&dd->pcidev->dev, "Hardware error: hwerr=0x%llx " in ipath_ht_handle_hwerrors()
552 dd->ipath_lasthwerror |= hwerrs; in ipath_ht_handle_hwerrors()
554 if (hwerrs & ~dd->ipath_hwe_bitsextant) in ipath_ht_handle_hwerrors()
555 ipath_dev_err(dd, "hwerror interrupt with unknown errors " in ipath_ht_handle_hwerrors()
557 (hwerrs & ~dd->ipath_hwe_bitsextant)); in ipath_ht_handle_hwerrors()
559 ctrl = ipath_read_kreg32(dd, dd->ipath_kregs->kr_control); in ipath_ht_handle_hwerrors()
570 ipath_ht_txe_recover(dd); in ipath_ht_handle_hwerrors()
577 ipath_clear_freeze(dd); in ipath_ht_handle_hwerrors()
604 hwerr_crcbits(dd, hwerrs, msg, msgl); in ipath_ht_handle_hwerrors()
610 dd->ipath_hwerrmask &= ~INFINIPATH_HWE_MEMBISTFAILED; in ipath_ht_handle_hwerrors()
611 ipath_write_kreg(dd, dd->ipath_kregs->kr_hwerrmask, in ipath_ht_handle_hwerrors()
612 dd->ipath_hwerrmask); in ipath_ht_handle_hwerrors()
627 dd->ipath_hwerrmask &= ~(hwerrs & _IPATH_PLL_FAIL); in ipath_ht_handle_hwerrors()
628 ipath_write_kreg(dd, dd->ipath_kregs->kr_hwerrmask, in ipath_ht_handle_hwerrors()
629 dd->ipath_hwerrmask); in ipath_ht_handle_hwerrors()
637 dd->ipath_hwerrmask &= ~INFINIPATH_HWE_SERDESPLLFAILED; in ipath_ht_handle_hwerrors()
638 ipath_write_kreg(dd, dd->ipath_kregs->kr_hwerrmask, in ipath_ht_handle_hwerrors()
639 dd->ipath_hwerrmask); in ipath_ht_handle_hwerrors()
651 if (dd->ipath_flags & IPATH_INITTED) { in ipath_ht_handle_hwerrors()
652 ipath_set_linkstate(dd, IPATH_IB_LINKDOWN); in ipath_ht_handle_hwerrors()
653 ipath_setup_ht_setextled(dd, in ipath_ht_handle_hwerrors()
656 ipath_dev_err(dd, "Fatal Hardware Error (freeze " in ipath_ht_handle_hwerrors()
658 dd->ipath_serial); in ipath_ht_handle_hwerrors()
661 *dd->ipath_statusp &= ~IPATH_STATUS_IB_READY; in ipath_ht_handle_hwerrors()
663 *dd->ipath_statusp |= IPATH_STATUS_HWERROR; in ipath_ht_handle_hwerrors()
669 dd->ipath_flags &= ~IPATH_INITTED; in ipath_ht_handle_hwerrors()
674 ipath_dev_err(dd, "%s hardware error\n", msg); in ipath_ht_handle_hwerrors()
675 if (isfatal && !ipath_diag_inuse && dd->ipath_freezemsg) in ipath_ht_handle_hwerrors()
680 snprintf(dd->ipath_freezemsg, in ipath_ht_handle_hwerrors()
681 dd->ipath_freezelen, "{%s}", msg); in ipath_ht_handle_hwerrors()
694 static int ipath_ht_boardname(struct ipath_devdata *dd, char *name, in ipath_ht_boardname() argument
698 u8 boardrev = dd->ipath_boardrev; in ipath_ht_boardname()
716 ipath_dev_err(dd, "Don't yet know about board " in ipath_ht_boardname()
726 ipath_dev_err(dd, "Unsupported InfiniPath board %s!\n", name); in ipath_ht_boardname()
729 if (dd->ipath_majrev != 3 || (dd->ipath_minrev < 2 || in ipath_ht_boardname()
730 dd->ipath_minrev > 4)) { in ipath_ht_boardname()
734 ipath_dev_err(dd, in ipath_ht_boardname()
736 dd->ipath_majrev, dd->ipath_minrev); in ipath_ht_boardname()
745 dd->ipath_flags |= IPATH_32BITCOUNTERS; in ipath_ht_boardname()
746 dd->ipath_flags |= IPATH_GPIO_INTR; in ipath_ht_boardname()
747 if (dd->ipath_lbus_speed != 800) in ipath_ht_boardname()
748 ipath_dev_err(dd, in ipath_ht_boardname()
750 dd->ipath_lbus_speed); in ipath_ht_boardname()
756 dd->ipath_ureg_align = in ipath_ht_boardname()
757 ipath_read_kreg32(dd, dd->ipath_kregs->kr_pagealign); in ipath_ht_boardname()
763 static void ipath_check_htlink(struct ipath_devdata *dd) in ipath_check_htlink() argument
768 link_off = dd->ipath_ht_slave_off + i * 4 + 0xd; in ipath_check_htlink()
769 if (pci_read_config_byte(dd->pcidev, link_off, &linkerr)) in ipath_check_htlink()
770 dev_info(&dd->pcidev->dev, "Couldn't read " in ipath_check_htlink()
780 if (pci_write_config_byte(dd->pcidev, link_off, in ipath_check_htlink()
784 if (pci_read_config_byte(dd->pcidev, link_off, in ipath_check_htlink()
786 dev_info(&dd->pcidev->dev, in ipath_check_htlink()
790 dev_info(&dd->pcidev->dev, in ipath_check_htlink()
798 static int ipath_setup_ht_reset(struct ipath_devdata *dd) in ipath_setup_ht_reset() argument
815 static void slave_or_pri_blk(struct ipath_devdata *dd, struct pci_dev *pdev, in slave_or_pri_blk() argument
822 dd->ipath_ht_slave_off = pos; in slave_or_pri_blk()
842 ipath_dev_err(dd, "Couldn't read HT link control%d " in slave_or_pri_blk()
892 ipath_dev_err(dd, "Couldn't read HT link width " in slave_or_pri_blk()
915 dd->ipath_lbus_width = width; in slave_or_pri_blk()
918 ipath_dev_err(dd, "Not configured for 16 bit HT " in slave_or_pri_blk()
922 dd->ipath_flags |= IPATH_8BIT_IN_HT0; in slave_or_pri_blk()
932 ipath_dev_err(dd, "Couldn't read HT link frequency " in slave_or_pri_blk()
963 dd->ipath_lbus_speed = speed; in slave_or_pri_blk()
966 snprintf(dd->ipath_lbus_info, sizeof(dd->ipath_lbus_info), in slave_or_pri_blk()
968 dd->ipath_lbus_speed, in slave_or_pri_blk()
969 dd->ipath_lbus_width); in slave_or_pri_blk()
972 static int ipath_ht_intconfig(struct ipath_devdata *dd) in ipath_ht_intconfig() argument
976 if (dd->ipath_intconfig) { in ipath_ht_intconfig()
977 ipath_write_kreg(dd, dd->ipath_kregs->kr_interruptconfig, in ipath_ht_intconfig()
978 dd->ipath_intconfig); /* interrupt address */ in ipath_ht_intconfig()
981 ipath_dev_err(dd, "No interrupts enabled, couldn't setup " in ipath_ht_intconfig()
992 struct ipath_devdata *dd = pci_get_drvdata(dev); in ipath_ht_irq_update() local
993 u64 prev_intconfig = dd->ipath_intconfig; in ipath_ht_irq_update()
995 dd->ipath_intconfig = msg->address_lo; in ipath_ht_irq_update()
996 dd->ipath_intconfig |= ((u64) msg->address_hi) << 32; in ipath_ht_irq_update()
1005 ipath_ht_intconfig(dd); in ipath_ht_irq_update()
1018 static int ipath_setup_ht_config(struct ipath_devdata *dd, in ipath_setup_ht_config() argument
1025 ipath_dev_err(dd, "Couldn't create interrupt handler: " in ipath_setup_ht_config()
1029 dd->ipath_irq = ret; in ipath_setup_ht_config()
1039 ipath_dev_err(dd, "Couldn't find HyperTransport " in ipath_setup_ht_config()
1057 slave_or_pri_blk(dd, pdev, pos, cap_type); in ipath_setup_ht_config()
1061 dd->ipath_flags |= IPATH_SWAP_PIOBUFS; in ipath_setup_ht_config()
1074 static void ipath_setup_ht_cleanup(struct ipath_devdata *dd) in ipath_setup_ht_cleanup() argument
1100 static void ipath_setup_ht_setextled(struct ipath_devdata *dd, in ipath_setup_ht_setextled() argument
1112 if (dd->ipath_led_override) { in ipath_setup_ht_setextled()
1113 ltst = (dd->ipath_led_override & IPATH_LED_PHYS) in ipath_setup_ht_setextled()
1116 lst = (dd->ipath_led_override & IPATH_LED_LOG) in ipath_setup_ht_setextled()
1121 spin_lock_irqsave(&dd->ipath_gpio_lock, flags); in ipath_setup_ht_setextled()
1126 if (dd->ipath_boardrev == 8) { /* LS/X-1 uses different pins */ in ipath_setup_ht_setextled()
1132 extctl = (dd->ipath_extctrl & ~INFINIPATH_EXTC_LEDGBLOK_ON) in ipath_setup_ht_setextled()
1140 extctl = dd->ipath_extctrl & in ipath_setup_ht_setextled()
1148 dd->ipath_extctrl = extctl; in ipath_setup_ht_setextled()
1149 ipath_write_kreg(dd, dd->ipath_kregs->kr_extctrl, extctl); in ipath_setup_ht_setextled()
1150 spin_unlock_irqrestore(&dd->ipath_gpio_lock, flags); in ipath_setup_ht_setextled()
1153 static void ipath_init_ht_variables(struct ipath_devdata *dd) in ipath_init_ht_variables() argument
1159 dd->ipath_kregs = &ipath_ht_kregs; in ipath_init_ht_variables()
1160 dd->ipath_cregs = &ipath_ht_cregs; in ipath_init_ht_variables()
1162 dd->ipath_gpio_sda_num = _IPATH_GPIO_SDA_NUM; in ipath_init_ht_variables()
1163 dd->ipath_gpio_scl_num = _IPATH_GPIO_SCL_NUM; in ipath_init_ht_variables()
1164 dd->ipath_gpio_sda = IPATH_GPIO_SDA; in ipath_init_ht_variables()
1165 dd->ipath_gpio_scl = IPATH_GPIO_SCL; in ipath_init_ht_variables()
1174 dd->ibcs_ls_shift = IBA6110_IBCS_LINKSTATE_SHIFT; in ipath_init_ht_variables()
1175 dd->ibcs_lts_mask = IBA6110_IBCS_LINKTRAININGSTATE_MASK; in ipath_init_ht_variables()
1176 dd->ibcs_mask = (INFINIPATH_IBCS_LINKSTATE_MASK << in ipath_init_ht_variables()
1177 dd->ibcs_ls_shift) | dd->ibcs_lts_mask; in ipath_init_ht_variables()
1178 dd->ib_init = (INFINIPATH_IBCS_LT_STATE_LINKUP << in ipath_init_ht_variables()
1180 (INFINIPATH_IBCS_L_STATE_INIT << dd->ibcs_ls_shift); in ipath_init_ht_variables()
1181 dd->ib_arm = (INFINIPATH_IBCS_LT_STATE_LINKUP << in ipath_init_ht_variables()
1183 (INFINIPATH_IBCS_L_STATE_ARM << dd->ibcs_ls_shift); in ipath_init_ht_variables()
1184 dd->ib_active = (INFINIPATH_IBCS_LT_STATE_LINKUP << in ipath_init_ht_variables()
1186 (INFINIPATH_IBCS_L_STATE_ACTIVE << dd->ibcs_ls_shift); in ipath_init_ht_variables()
1194 dd->ibcc_lic_mask = INFINIPATH_IBCC_LINKINITCMD_MASK; in ipath_init_ht_variables()
1195 dd->ibcc_lc_shift = INFINIPATH_IBCC_LINKCMD_SHIFT; in ipath_init_ht_variables()
1196 dd->ibcc_mpl_shift = INFINIPATH_IBCC_MAXPKTLEN_SHIFT; in ipath_init_ht_variables()
1199 dd->ipath_r_portenable_shift = INFINIPATH_R_PORTENABLE_SHIFT; in ipath_init_ht_variables()
1200 dd->ipath_r_intravail_shift = INFINIPATH_R_INTRAVAIL_SHIFT; in ipath_init_ht_variables()
1201 dd->ipath_r_tailupd_shift = INFINIPATH_R_TAILUPD_SHIFT; in ipath_init_ht_variables()
1202 dd->ipath_r_portcfg_shift = 0; /* Not on IBA6110 */ in ipath_init_ht_variables()
1204 dd->ipath_i_bitsextant = in ipath_init_ht_variables()
1211 dd->ipath_e_bitsextant = in ipath_init_ht_variables()
1229 dd->ipath_hwe_bitsextant = in ipath_init_ht_variables()
1258 dd->ipath_i_rcvavail_mask = INFINIPATH_I_RCVAVAIL_MASK; in ipath_init_ht_variables()
1259 dd->ipath_i_rcvurg_mask = INFINIPATH_I_RCVURG_MASK; in ipath_init_ht_variables()
1260 dd->ipath_i_rcvavail_shift = INFINIPATH_I_RCVAVAIL_SHIFT; in ipath_init_ht_variables()
1261 dd->ipath_i_rcvurg_shift = INFINIPATH_I_RCVURG_SHIFT; in ipath_init_ht_variables()
1267 dd->ipath_eep_st_masks[0].hwerrs_to_log = in ipath_init_ht_variables()
1271 dd->ipath_eep_st_masks[1].hwerrs_to_log = in ipath_init_ht_variables()
1275 dd->ipath_eep_st_masks[2].errs_to_log = INFINIPATH_E_RESET; in ipath_init_ht_variables()
1277 dd->delay_mult = 2; /* SDR, 4X, can't change */ in ipath_init_ht_variables()
1279 dd->ipath_link_width_supported = IB_WIDTH_1X | IB_WIDTH_4X; in ipath_init_ht_variables()
1280 dd->ipath_link_speed_supported = IPATH_IB_SDR; in ipath_init_ht_variables()
1281 dd->ipath_link_width_enabled = IB_WIDTH_4X; in ipath_init_ht_variables()
1282 dd->ipath_link_speed_enabled = dd->ipath_link_speed_supported; in ipath_init_ht_variables()
1284 dd->ipath_link_width_active = dd->ipath_link_width_enabled; in ipath_init_ht_variables()
1285 dd->ipath_link_speed_active = dd->ipath_link_speed_enabled; in ipath_init_ht_variables()
1298 static void ipath_ht_init_hwerrors(struct ipath_devdata *dd) in ipath_ht_init_hwerrors() argument
1303 extsval = ipath_read_kreg64(dd, dd->ipath_kregs->kr_extstatus); in ipath_ht_init_hwerrors()
1306 ipath_dev_err(dd, "MemBIST did not complete!\n"); in ipath_ht_init_hwerrors()
1310 ipath_check_htlink(dd); in ipath_ht_init_hwerrors()
1315 if (dd->ipath_flags & IPATH_8BIT_IN_HT0) in ipath_ht_init_hwerrors()
1318 if (dd->ipath_flags & IPATH_8BIT_IN_HT1) in ipath_ht_init_hwerrors()
1342 if (dd->ipath_boardrev == 4 || dd->ipath_boardrev == 9) in ipath_ht_init_hwerrors()
1344 dd->ipath_hwerrmask = val; in ipath_ht_init_hwerrors()
1354 static int ipath_ht_bringup_serdes(struct ipath_devdata *dd) in ipath_ht_bringup_serdes() argument
1361 if (ipath_read_kreg64(dd, dd->ipath_kregs->kr_hwerrstatus) & in ipath_ht_bringup_serdes()
1366 ipath_write_kreg(dd, dd->ipath_kregs->kr_hwerrclear, in ipath_ht_bringup_serdes()
1370 val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_serdesconfig0); in ipath_ht_bringup_serdes()
1371 config1 = ipath_read_kreg64(dd, dd->ipath_kregs->kr_serdesconfig1); in ipath_ht_bringup_serdes()
1377 ipath_read_kreg64(dd, dd->ipath_kregs->kr_serdesstatus), in ipath_ht_bringup_serdes()
1379 ipath_read_kreg64(dd, dd->ipath_kregs->kr_xgxsconfig)); in ipath_ht_bringup_serdes()
1385 ipath_write_kreg(dd, dd->ipath_kregs->kr_serdesconfig0, val); in ipath_ht_bringup_serdes()
1395 ipath_write_kreg(dd, dd->ipath_kregs->kr_serdesconfig0, in ipath_ht_bringup_serdes()
1400 val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_scratch); in ipath_ht_bringup_serdes()
1416 ipath_write_kreg(dd, dd->ipath_kregs->kr_serdesconfig0, in ipath_ht_bringup_serdes()
1420 val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_xgxsconfig); in ipath_ht_bringup_serdes()
1427 INFINIPATH_XGXS_RX_POL_MASK) != dd->ipath_rx_pol_inv ) { in ipath_ht_bringup_serdes()
1431 val |= dd->ipath_rx_pol_inv << in ipath_ht_bringup_serdes()
1436 ipath_write_kreg(dd, dd->ipath_kregs->kr_xgxsconfig, val); in ipath_ht_bringup_serdes()
1438 val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_serdesconfig0); in ipath_ht_bringup_serdes()
1446 ipath_write_kreg(dd, dd->ipath_kregs->kr_serdesconfig1, config1); in ipath_ht_bringup_serdes()
1452 ipath_read_kreg64(dd, dd->ipath_kregs->kr_serdesstatus), in ipath_ht_bringup_serdes()
1454 ipath_read_kreg64(dd, dd->ipath_kregs->kr_xgxsconfig)); in ipath_ht_bringup_serdes()
1464 static void ipath_ht_quiet_serdes(struct ipath_devdata *dd) in ipath_ht_quiet_serdes() argument
1466 u64 val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_serdesconfig0); in ipath_ht_quiet_serdes()
1471 ipath_write_kreg(dd, dd->ipath_kregs->kr_serdesconfig0, val); in ipath_ht_quiet_serdes()
1485 static void ipath_ht_put_tid(struct ipath_devdata *dd, in ipath_ht_put_tid() argument
1489 if (!dd->ipath_kregbase) in ipath_ht_put_tid()
1492 if (pa != dd->ipath_tidinvalid) { in ipath_ht_put_tid()
1494 dev_info(&dd->pcidev->dev, in ipath_ht_put_tid()
1500 pa |= dd->ipath_tidtemplate; in ipath_ht_put_tid()
1520 static void ipath_ht_clear_tids(struct ipath_devdata *dd, unsigned port) in ipath_ht_clear_tids() argument
1525 if (!dd->ipath_kregbase) in ipath_ht_clear_tids()
1535 tidbase = (u64 __iomem *) ((char __iomem *)(dd->ipath_kregbase) + in ipath_ht_clear_tids()
1536 dd->ipath_rcvtidbase + in ipath_ht_clear_tids()
1537 port * dd->ipath_rcvtidcnt * in ipath_ht_clear_tids()
1539 for (i = 0; i < dd->ipath_rcvtidcnt; i++) in ipath_ht_clear_tids()
1540 ipath_ht_put_tid(dd, &tidbase[i], RCVHQ_RCV_TYPE_EXPECTED, in ipath_ht_clear_tids()
1541 dd->ipath_tidinvalid); in ipath_ht_clear_tids()
1543 tidbase = (u64 __iomem *) ((char __iomem *)(dd->ipath_kregbase) + in ipath_ht_clear_tids()
1544 dd->ipath_rcvegrbase + in ipath_ht_clear_tids()
1545 port * dd->ipath_rcvegrcnt * in ipath_ht_clear_tids()
1548 for (i = 0; i < dd->ipath_rcvegrcnt; i++) in ipath_ht_clear_tids()
1549 ipath_ht_put_tid(dd, &tidbase[i], RCVHQ_RCV_TYPE_EAGER, in ipath_ht_clear_tids()
1550 dd->ipath_tidinvalid); in ipath_ht_clear_tids()
1559 static void ipath_ht_tidtemplate(struct ipath_devdata *dd) in ipath_ht_tidtemplate() argument
1561 dd->ipath_tidtemplate = dd->ipath_ibmaxlen >> 2; in ipath_ht_tidtemplate()
1562 dd->ipath_tidtemplate <<= INFINIPATH_RT_BUFSIZE_SHIFT; in ipath_ht_tidtemplate()
1563 dd->ipath_tidtemplate |= INFINIPATH_RT_VALID; in ipath_ht_tidtemplate()
1569 dd->ipath_tidinvalid = (-1LL & INFINIPATH_RT_BUFSIZE_MASK) << in ipath_ht_tidtemplate()
1573 static int ipath_ht_early_init(struct ipath_devdata *dd) in ipath_ht_early_init() argument
1583 dd->ipath_rcvhdrentsize = 16; in ipath_ht_early_init()
1584 dd->ipath_rcvhdrsize = IPATH_DFLT_RCVHDRSIZE; in ipath_ht_early_init()
1595 dd->ipath_rcvegrbufsize = dd->ipath_piosize2k; in ipath_ht_early_init()
1601 dd->ipath_ibmaxlen = min(dd->ipath_piosize2k, in ipath_ht_early_init()
1602 dd->ipath_rcvegrbufsize); in ipath_ht_early_init()
1603 dd->ipath_init_ibmaxlen = dd->ipath_ibmaxlen; in ipath_ht_early_init()
1604 ipath_ht_tidtemplate(dd); in ipath_ht_early_init()
1615 for (val32 = 0; val32 < dd->ipath_portcnt; val32++) in ipath_ht_early_init()
1616 ipath_ht_clear_tids(dd, val32); in ipath_ht_early_init()
1627 piobuf = (u32 __iomem *) (((char __iomem *)(dd->ipath_kregbase)) + in ipath_ht_early_init()
1628 dd->ipath_piobufbase); in ipath_ht_early_init()
1629 pioincr = dd->ipath_palign / sizeof(*piobuf); in ipath_ht_early_init()
1630 for (i = 0; i < dd->ipath_piobcnt2k; i++) { in ipath_ht_early_init()
1638 ipath_get_eeprom_info(dd); in ipath_ht_early_init()
1639 if (dd->ipath_boardrev == 5) { in ipath_ht_early_init()
1645 if (dd->ipath_serial[0] == '1' && in ipath_ht_early_init()
1646 dd->ipath_serial[1] == '2' && in ipath_ht_early_init()
1647 dd->ipath_serial[2] == '8') in ipath_ht_early_init()
1648 dd->ipath_flags |= IPATH_GPIO_INTR; in ipath_ht_early_init()
1650 ipath_dev_err(dd, "Unsupported InfiniPath board " in ipath_ht_early_init()
1652 dd->ipath_serial); in ipath_ht_early_init()
1657 if (dd->ipath_minrev >= 4) { in ipath_ht_early_init()
1659 dd->ipath_flags |= IPATH_GPIO_ERRINTRS; in ipath_ht_early_init()
1660 dd->ipath_gpio_mask |= IPATH_GPIO_ERRINTR_MASK; in ipath_ht_early_init()
1661 ipath_write_kreg(dd, dd->ipath_kregs->kr_gpio_mask, in ipath_ht_early_init()
1662 dd->ipath_gpio_mask); in ipath_ht_early_init()
1690 static void ipath_ht_free_irq(struct ipath_devdata *dd) in ipath_ht_free_irq() argument
1692 free_irq(dd->ipath_irq, dd); in ipath_ht_free_irq()
1693 ht_destroy_irq(dd->ipath_irq); in ipath_ht_free_irq()
1694 dd->ipath_irq = 0; in ipath_ht_free_irq()
1695 dd->ipath_intconfig = 0; in ipath_ht_free_irq()
1699 ipath_ht_get_msgheader(struct ipath_devdata *dd, __le32 *rhf_addr) in ipath_ht_get_msgheader() argument
1705 static void ipath_ht_config_ports(struct ipath_devdata *dd, ushort cfgports) in ipath_ht_config_ports() argument
1707 dd->ipath_portcnt = in ipath_ht_config_ports()
1708 ipath_read_kreg32(dd, dd->ipath_kregs->kr_portcnt); in ipath_ht_config_ports()
1709 dd->ipath_p0_rcvegrcnt = in ipath_ht_config_ports()
1710 ipath_read_kreg32(dd, dd->ipath_kregs->kr_rcvegrcnt); in ipath_ht_config_ports()
1713 static void ipath_ht_read_counters(struct ipath_devdata *dd, in ipath_ht_read_counters() argument
1717 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(LBIntCnt)); in ipath_ht_read_counters()
1719 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(LBFlowStallCnt)); in ipath_ht_read_counters()
1722 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(TxUnsupVLErrCnt)); in ipath_ht_read_counters()
1724 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(TxDataPktCnt)); in ipath_ht_read_counters()
1726 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(TxFlowPktCnt)); in ipath_ht_read_counters()
1728 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(TxDwordCnt)); in ipath_ht_read_counters()
1730 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(TxLenErrCnt)); in ipath_ht_read_counters()
1732 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(TxMaxMinLenErrCnt)); in ipath_ht_read_counters()
1734 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(TxUnderrunCnt)); in ipath_ht_read_counters()
1736 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(TxFlowStallCnt)); in ipath_ht_read_counters()
1738 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(TxDroppedPktCnt)); in ipath_ht_read_counters()
1740 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxDroppedPktCnt)); in ipath_ht_read_counters()
1742 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxDataPktCnt)); in ipath_ht_read_counters()
1744 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxFlowPktCnt)); in ipath_ht_read_counters()
1746 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxDwordCnt)); in ipath_ht_read_counters()
1748 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxLenErrCnt)); in ipath_ht_read_counters()
1750 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxMaxMinLenErrCnt)); in ipath_ht_read_counters()
1752 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxICRCErrCnt)); in ipath_ht_read_counters()
1754 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxVCRCErrCnt)); in ipath_ht_read_counters()
1756 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxFlowCtrlErrCnt)); in ipath_ht_read_counters()
1758 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxBadFormatCnt)); in ipath_ht_read_counters()
1760 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxLinkProblemCnt)); in ipath_ht_read_counters()
1762 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxEBPCnt)); in ipath_ht_read_counters()
1764 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxLPCRCErrCnt)); in ipath_ht_read_counters()
1766 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxBufOvflCnt)); in ipath_ht_read_counters()
1768 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxTIDFullErrCnt)); in ipath_ht_read_counters()
1770 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxTIDValidErrCnt)); in ipath_ht_read_counters()
1772 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxPKeyMismatchCnt)); in ipath_ht_read_counters()
1774 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxP0HdrEgrOvflCnt)); in ipath_ht_read_counters()
1776 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxP1HdrEgrOvflCnt)); in ipath_ht_read_counters()
1778 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxP2HdrEgrOvflCnt)); in ipath_ht_read_counters()
1780 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxP3HdrEgrOvflCnt)); in ipath_ht_read_counters()
1782 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxP4HdrEgrOvflCnt)); in ipath_ht_read_counters()
1784 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxP5HdrEgrOvflCnt)); in ipath_ht_read_counters()
1786 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxP6HdrEgrOvflCnt)); in ipath_ht_read_counters()
1788 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxP7HdrEgrOvflCnt)); in ipath_ht_read_counters()
1790 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(RxP8HdrEgrOvflCnt)); in ipath_ht_read_counters()
1800 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(IBStatusChangeCnt)); in ipath_ht_read_counters()
1802 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(IBLinkErrRecoveryCnt)); in ipath_ht_read_counters()
1804 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(IBLinkDownedCnt)); in ipath_ht_read_counters()
1806 ipath_snap_cntr(dd, IPATH_CREG_OFFSET(IBSymbolErrCnt)); in ipath_ht_read_counters()
1810 cntrs->ExcessBufferOvflCnt = dd->ipath_overrun_thresh_errs; in ipath_ht_read_counters()
1812 (dd->ipath_flags & IPATH_GPIO_ERRINTRS) ? in ipath_ht_read_counters()
1813 dd->ipath_lli_errs : dd->ipath_lli_errors; in ipath_ht_read_counters()
1820 static int ipath_ht_nointr_fallback(struct ipath_devdata *dd) in ipath_ht_nointr_fallback() argument
1832 static void ipath_ht_xgxs_reset(struct ipath_devdata *dd) in ipath_ht_xgxs_reset() argument
1836 prev_val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_xgxsconfig); in ipath_ht_xgxs_reset()
1839 ipath_write_kreg(dd, dd->ipath_kregs->kr_control, in ipath_ht_xgxs_reset()
1840 dd->ipath_control & ~INFINIPATH_C_LINKENABLE); in ipath_ht_xgxs_reset()
1841 ipath_write_kreg(dd, dd->ipath_kregs->kr_xgxsconfig, val); in ipath_ht_xgxs_reset()
1842 ipath_read_kreg32(dd, dd->ipath_kregs->kr_scratch); in ipath_ht_xgxs_reset()
1843 ipath_write_kreg(dd, dd->ipath_kregs->kr_xgxsconfig, prev_val); in ipath_ht_xgxs_reset()
1844 ipath_write_kreg(dd, dd->ipath_kregs->kr_control, in ipath_ht_xgxs_reset()
1845 dd->ipath_control); in ipath_ht_xgxs_reset()
1849 static int ipath_ht_get_ib_cfg(struct ipath_devdata *dd, int which) in ipath_ht_get_ib_cfg() argument
1855 ret = dd->ipath_link_width_active; in ipath_ht_get_ib_cfg()
1858 ret = dd->ipath_link_speed_active; in ipath_ht_get_ib_cfg()
1861 ret = dd->ipath_link_width_enabled; in ipath_ht_get_ib_cfg()
1864 ret = dd->ipath_link_speed_enabled; in ipath_ht_get_ib_cfg()
1875 static int ipath_ht_set_ib_cfg(struct ipath_devdata *dd, int which, u32 val) in ipath_ht_set_ib_cfg() argument
1880 dd->ipath_link_width_enabled = val; in ipath_ht_set_ib_cfg()
1882 dd->ipath_link_speed_enabled = val; in ipath_ht_set_ib_cfg()
1889 static void ipath_ht_config_jint(struct ipath_devdata *dd, u16 a, u16 b) in ipath_ht_config_jint() argument
1894 static int ipath_ht_ib_updown(struct ipath_devdata *dd, int ibup, u64 ibcs) in ipath_ht_ib_updown() argument
1896 ipath_setup_ht_setextled(dd, ipath_ib_linkstate(dd, ibcs), in ipath_ht_ib_updown()
1897 ipath_ib_linktrstate(dd, ibcs)); in ipath_ht_ib_updown()
1909 void ipath_init_iba6110_funcs(struct ipath_devdata *dd) in ipath_init_iba6110_funcs() argument
1911 dd->ipath_f_intrsetup = ipath_ht_intconfig; in ipath_init_iba6110_funcs()
1912 dd->ipath_f_bus = ipath_setup_ht_config; in ipath_init_iba6110_funcs()
1913 dd->ipath_f_reset = ipath_setup_ht_reset; in ipath_init_iba6110_funcs()
1914 dd->ipath_f_get_boardname = ipath_ht_boardname; in ipath_init_iba6110_funcs()
1915 dd->ipath_f_init_hwerrors = ipath_ht_init_hwerrors; in ipath_init_iba6110_funcs()
1916 dd->ipath_f_early_init = ipath_ht_early_init; in ipath_init_iba6110_funcs()
1917 dd->ipath_f_handle_hwerrors = ipath_ht_handle_hwerrors; in ipath_init_iba6110_funcs()
1918 dd->ipath_f_quiet_serdes = ipath_ht_quiet_serdes; in ipath_init_iba6110_funcs()
1919 dd->ipath_f_bringup_serdes = ipath_ht_bringup_serdes; in ipath_init_iba6110_funcs()
1920 dd->ipath_f_clear_tids = ipath_ht_clear_tids; in ipath_init_iba6110_funcs()
1921 dd->ipath_f_put_tid = ipath_ht_put_tid; in ipath_init_iba6110_funcs()
1922 dd->ipath_f_cleanup = ipath_setup_ht_cleanup; in ipath_init_iba6110_funcs()
1923 dd->ipath_f_setextled = ipath_setup_ht_setextled; in ipath_init_iba6110_funcs()
1924 dd->ipath_f_get_base_info = ipath_ht_get_base_info; in ipath_init_iba6110_funcs()
1925 dd->ipath_f_free_irq = ipath_ht_free_irq; in ipath_init_iba6110_funcs()
1926 dd->ipath_f_tidtemplate = ipath_ht_tidtemplate; in ipath_init_iba6110_funcs()
1927 dd->ipath_f_intr_fallback = ipath_ht_nointr_fallback; in ipath_init_iba6110_funcs()
1928 dd->ipath_f_get_msgheader = ipath_ht_get_msgheader; in ipath_init_iba6110_funcs()
1929 dd->ipath_f_config_ports = ipath_ht_config_ports; in ipath_init_iba6110_funcs()
1930 dd->ipath_f_read_counters = ipath_ht_read_counters; in ipath_init_iba6110_funcs()
1931 dd->ipath_f_xgxs_reset = ipath_ht_xgxs_reset; in ipath_init_iba6110_funcs()
1932 dd->ipath_f_get_ib_cfg = ipath_ht_get_ib_cfg; in ipath_init_iba6110_funcs()
1933 dd->ipath_f_set_ib_cfg = ipath_ht_set_ib_cfg; in ipath_init_iba6110_funcs()
1934 dd->ipath_f_config_jint = ipath_ht_config_jint; in ipath_init_iba6110_funcs()
1935 dd->ipath_f_ib_updown = ipath_ht_ib_updown; in ipath_init_iba6110_funcs()
1940 ipath_init_ht_variables(dd); in ipath_init_iba6110_funcs()