Lines Matching refs:dd
87 static int create_port0_egr(struct ipath_devdata *dd) in create_port0_egr() argument
93 egrcnt = dd->ipath_p0_rcvegrcnt; in create_port0_egr()
95 skbinfo = vmalloc(sizeof(*dd->ipath_port0_skbinfo) * egrcnt); in create_port0_egr()
97 ipath_dev_err(dd, "allocation error for eager TID " in create_port0_egr()
111 skbinfo[e].skb = ipath_alloc_skb(dd, GFP_KERNEL); in create_port0_egr()
113 ipath_dev_err(dd, "SKB allocation error for " in create_port0_egr()
126 dd->ipath_port0_skbinfo = skbinfo; in create_port0_egr()
129 dd->ipath_port0_skbinfo[e].phys = in create_port0_egr()
130 ipath_map_single(dd->pcidev, in create_port0_egr()
131 dd->ipath_port0_skbinfo[e].skb->data, in create_port0_egr()
132 dd->ipath_ibmaxlen, PCI_DMA_FROMDEVICE); in create_port0_egr()
133 dd->ipath_f_put_tid(dd, e + (u64 __iomem *) in create_port0_egr()
134 ((char __iomem *) dd->ipath_kregbase + in create_port0_egr()
135 dd->ipath_rcvegrbase), in create_port0_egr()
137 dd->ipath_port0_skbinfo[e].phys); in create_port0_egr()
146 static int bringup_link(struct ipath_devdata *dd) in bringup_link() argument
152 dd->ipath_control &= ~INFINIPATH_C_LINKENABLE; in bringup_link()
153 ipath_write_kreg(dd, dd->ipath_kregs->kr_control, in bringup_link()
154 dd->ipath_control); in bringup_link()
160 val = (dd->ipath_ibmaxlen >> 2) + 1; in bringup_link()
161 ibc = val << dd->ibcc_mpl_shift; in bringup_link()
178 dd->ipath_ibcctrl = ibc; in bringup_link()
188 dd->ipath_flags |= IPATH_IB_LINK_DISABLED; in bringup_link()
191 ipath_write_kreg(dd, dd->ipath_kregs->kr_ibcctrl, ibc); in bringup_link()
194 val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_scratch); in bringup_link()
196 ret = dd->ipath_f_bringup_serdes(dd); in bringup_link()
199 dev_info(&dd->pcidev->dev, "Could not initialize SerDes, " in bringup_link()
203 dd->ipath_control |= INFINIPATH_C_LINKENABLE; in bringup_link()
204 ipath_write_kreg(dd, dd->ipath_kregs->kr_control, in bringup_link()
205 dd->ipath_control); in bringup_link()
211 static struct ipath_portdata *create_portdata0(struct ipath_devdata *dd) in create_portdata0() argument
217 pd->port_dd = dd; in create_portdata0()
226 static int init_chip_first(struct ipath_devdata *dd) in init_chip_first() argument
232 spin_lock_init(&dd->ipath_kernel_tid_lock); in init_chip_first()
233 spin_lock_init(&dd->ipath_user_tid_lock); in init_chip_first()
234 spin_lock_init(&dd->ipath_sendctrl_lock); in init_chip_first()
235 spin_lock_init(&dd->ipath_uctxt_lock); in init_chip_first()
236 spin_lock_init(&dd->ipath_sdma_lock); in init_chip_first()
237 spin_lock_init(&dd->ipath_gpio_lock); in init_chip_first()
238 spin_lock_init(&dd->ipath_eep_st_lock); in init_chip_first()
239 spin_lock_init(&dd->ipath_sdepb_lock); in init_chip_first()
240 mutex_init(&dd->ipath_eep_lock); in init_chip_first()
248 dd->ipath_f_config_ports(dd, ipath_cfgports); in init_chip_first()
250 dd->ipath_cfgports = dd->ipath_portcnt; in init_chip_first()
251 else if (ipath_cfgports <= dd->ipath_portcnt) { in init_chip_first()
252 dd->ipath_cfgports = ipath_cfgports; in init_chip_first()
254 dd->ipath_cfgports, ipath_read_kreg32(dd, in init_chip_first()
255 dd->ipath_kregs->kr_portcnt)); in init_chip_first()
257 dd->ipath_cfgports = dd->ipath_portcnt; in init_chip_first()
260 ipath_read_kreg32(dd, in init_chip_first()
261 dd->ipath_kregs->kr_portcnt)); in init_chip_first()
267 dd->ipath_pd = kzalloc(sizeof(*dd->ipath_pd) * dd->ipath_portcnt, in init_chip_first()
270 if (!dd->ipath_pd) { in init_chip_first()
271 ipath_dev_err(dd, "Unable to allocate portdata array, " in init_chip_first()
277 pd = create_portdata0(dd); in init_chip_first()
279 ipath_dev_err(dd, "Unable to allocate portdata for port " in init_chip_first()
284 dd->ipath_pd[0] = pd; in init_chip_first()
286 dd->ipath_rcvtidcnt = in init_chip_first()
287 ipath_read_kreg32(dd, dd->ipath_kregs->kr_rcvtidcnt); in init_chip_first()
288 dd->ipath_rcvtidbase = in init_chip_first()
289 ipath_read_kreg32(dd, dd->ipath_kregs->kr_rcvtidbase); in init_chip_first()
290 dd->ipath_rcvegrcnt = in init_chip_first()
291 ipath_read_kreg32(dd, dd->ipath_kregs->kr_rcvegrcnt); in init_chip_first()
292 dd->ipath_rcvegrbase = in init_chip_first()
293 ipath_read_kreg32(dd, dd->ipath_kregs->kr_rcvegrbase); in init_chip_first()
294 dd->ipath_palign = in init_chip_first()
295 ipath_read_kreg32(dd, dd->ipath_kregs->kr_pagealign); in init_chip_first()
296 dd->ipath_piobufbase = in init_chip_first()
297 ipath_read_kreg64(dd, dd->ipath_kregs->kr_sendpiobufbase); in init_chip_first()
298 val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_sendpiosize); in init_chip_first()
299 dd->ipath_piosize2k = val & ~0U; in init_chip_first()
300 dd->ipath_piosize4k = val >> 32; in init_chip_first()
301 if (dd->ipath_piosize4k == 0 && ipath_mtu4096) in init_chip_first()
303 dd->ipath_ibmtu = ipath_mtu4096 ? 4096 : 2048; in init_chip_first()
304 val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_sendpiobufcnt); in init_chip_first()
305 dd->ipath_piobcnt2k = val & ~0U; in init_chip_first()
306 dd->ipath_piobcnt4k = val >> 32; in init_chip_first()
307 dd->ipath_pio2kbase = in init_chip_first()
308 (u32 __iomem *) (((char __iomem *) dd->ipath_kregbase) + in init_chip_first()
309 (dd->ipath_piobufbase & 0xffffffff)); in init_chip_first()
310 if (dd->ipath_piobcnt4k) { in init_chip_first()
311 dd->ipath_pio4kbase = (u32 __iomem *) in init_chip_first()
312 (((char __iomem *) dd->ipath_kregbase) + in init_chip_first()
313 (dd->ipath_piobufbase >> 32)); in init_chip_first()
319 dd->ipath_4kalign = ALIGN(dd->ipath_piosize4k, in init_chip_first()
320 dd->ipath_palign); in init_chip_first()
323 dd->ipath_piobcnt2k, dd->ipath_piosize2k, in init_chip_first()
324 dd->ipath_pio2kbase, dd->ipath_piobcnt4k, in init_chip_first()
325 dd->ipath_piosize4k, dd->ipath_pio4kbase, in init_chip_first()
326 dd->ipath_4kalign); in init_chip_first()
329 dd->ipath_piobcnt2k, dd->ipath_pio2kbase); in init_chip_first()
343 static int init_chip_reset(struct ipath_devdata *dd) in init_chip_reset() argument
353 dd->ipath_rcvctrl &= ~(1ULL << dd->ipath_r_tailupd_shift); in init_chip_reset()
354 for (i = 0; i < dd->ipath_portcnt; i++) { in init_chip_reset()
355 clear_bit(dd->ipath_r_portenable_shift + i, in init_chip_reset()
356 &dd->ipath_rcvctrl); in init_chip_reset()
357 clear_bit(dd->ipath_r_intravail_shift + i, in init_chip_reset()
358 &dd->ipath_rcvctrl); in init_chip_reset()
360 ipath_write_kreg(dd, dd->ipath_kregs->kr_rcvctrl, in init_chip_reset()
361 dd->ipath_rcvctrl); in init_chip_reset()
363 spin_lock_irqsave(&dd->ipath_sendctrl_lock, flags); in init_chip_reset()
364 dd->ipath_sendctrl = 0U; /* no sdma, etc */ in init_chip_reset()
365 ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl, dd->ipath_sendctrl); in init_chip_reset()
366 ipath_read_kreg64(dd, dd->ipath_kregs->kr_scratch); in init_chip_reset()
367 spin_unlock_irqrestore(&dd->ipath_sendctrl_lock, flags); in init_chip_reset()
369 ipath_write_kreg(dd, dd->ipath_kregs->kr_control, 0ULL); in init_chip_reset()
371 rtmp = ipath_read_kreg32(dd, dd->ipath_kregs->kr_rcvtidcnt); in init_chip_reset()
372 if (rtmp != dd->ipath_rcvtidcnt) in init_chip_reset()
373 dev_info(&dd->pcidev->dev, "tidcnt was %u before " in init_chip_reset()
375 dd->ipath_rcvtidcnt, rtmp); in init_chip_reset()
376 rtmp = ipath_read_kreg32(dd, dd->ipath_kregs->kr_rcvtidbase); in init_chip_reset()
377 if (rtmp != dd->ipath_rcvtidbase) in init_chip_reset()
378 dev_info(&dd->pcidev->dev, "tidbase was %u before " in init_chip_reset()
380 dd->ipath_rcvtidbase, rtmp); in init_chip_reset()
381 rtmp = ipath_read_kreg32(dd, dd->ipath_kregs->kr_rcvegrcnt); in init_chip_reset()
382 if (rtmp != dd->ipath_rcvegrcnt) in init_chip_reset()
383 dev_info(&dd->pcidev->dev, "egrcnt was %u before " in init_chip_reset()
385 dd->ipath_rcvegrcnt, rtmp); in init_chip_reset()
386 rtmp = ipath_read_kreg32(dd, dd->ipath_kregs->kr_rcvegrbase); in init_chip_reset()
387 if (rtmp != dd->ipath_rcvegrbase) in init_chip_reset()
388 dev_info(&dd->pcidev->dev, "egrbase was %u before " in init_chip_reset()
390 dd->ipath_rcvegrbase, rtmp); in init_chip_reset()
395 static int init_pioavailregs(struct ipath_devdata *dd) in init_pioavailregs() argument
399 dd->ipath_pioavailregs_dma = dma_alloc_coherent( in init_pioavailregs()
400 &dd->pcidev->dev, PAGE_SIZE, &dd->ipath_pioavailregs_phys, in init_pioavailregs()
402 if (!dd->ipath_pioavailregs_dma) { in init_pioavailregs()
403 ipath_dev_err(dd, "failed to allocate PIOavail reg area " in init_pioavailregs()
413 dd->ipath_statusp = (u64 *) in init_pioavailregs()
414 ((char *)dd->ipath_pioavailregs_dma + in init_pioavailregs()
416 dd->ipath_pioavregs * sizeof(u64)) & ~L1_CACHE_BYTES)); in init_pioavailregs()
418 *dd->ipath_statusp = dd->_ipath_status; in init_pioavailregs()
423 dd->ipath_freezemsg = (char *)&dd->ipath_statusp[1]; in init_pioavailregs()
425 dd->ipath_freezelen = L1_CACHE_BYTES - sizeof(dd->ipath_statusp[0]); in init_pioavailregs()
442 static void init_shadow_tids(struct ipath_devdata *dd) in init_shadow_tids() argument
447 pages = vzalloc(dd->ipath_cfgports * dd->ipath_rcvtidcnt * in init_shadow_tids()
450 ipath_dev_err(dd, "failed to allocate shadow page * " in init_shadow_tids()
452 dd->ipath_pageshadow = NULL; in init_shadow_tids()
456 addrs = vmalloc(dd->ipath_cfgports * dd->ipath_rcvtidcnt * in init_shadow_tids()
459 ipath_dev_err(dd, "failed to allocate shadow dma handle " in init_shadow_tids()
462 dd->ipath_pageshadow = NULL; in init_shadow_tids()
466 dd->ipath_pageshadow = pages; in init_shadow_tids()
467 dd->ipath_physshadow = addrs; in init_shadow_tids()
470 static void enable_chip(struct ipath_devdata *dd, int reinit) in enable_chip() argument
480 ipath_write_kreg(dd, dd->ipath_kregs->kr_rcvctrl, in enable_chip()
481 dd->ipath_rcvctrl); in enable_chip()
483 spin_lock_irqsave(&dd->ipath_sendctrl_lock, flags); in enable_chip()
485 dd->ipath_sendctrl = INFINIPATH_S_PIOENABLE | in enable_chip()
492 if (dd->ipath_pioupd_thresh) in enable_chip()
493 dd->ipath_sendctrl |= dd->ipath_pioupd_thresh in enable_chip()
495 ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl, dd->ipath_sendctrl); in enable_chip()
496 ipath_read_kreg64(dd, dd->ipath_kregs->kr_scratch); in enable_chip()
497 spin_unlock_irqrestore(&dd->ipath_sendctrl_lock, flags); in enable_chip()
504 dd->ipath_rcvctrl |= (rcvmask << dd->ipath_r_portenable_shift) | in enable_chip()
505 (rcvmask << dd->ipath_r_intravail_shift); in enable_chip()
506 if (!(dd->ipath_flags & IPATH_NODMA_RTAIL)) in enable_chip()
507 dd->ipath_rcvctrl |= (1ULL << dd->ipath_r_tailupd_shift); in enable_chip()
509 ipath_write_kreg(dd, dd->ipath_kregs->kr_rcvctrl, in enable_chip()
510 dd->ipath_rcvctrl); in enable_chip()
516 dd->ipath_flags |= IPATH_INITTED; in enable_chip()
522 val = ipath_read_ureg32(dd, ur_rcvegrindextail, 0); in enable_chip()
523 ipath_write_ureg(dd, ur_rcvegrindexhead, val, 0); in enable_chip()
526 ipath_write_ureg(dd, ur_rcvhdrhead, in enable_chip()
527 dd->ipath_rhdrhead_intr_off | in enable_chip()
528 dd->ipath_pd[0]->port_head, 0); in enable_chip()
536 for (i = 0; i < dd->ipath_pioavregs; i++) { in enable_chip()
542 if (i > 3 && (dd->ipath_flags & IPATH_SWAP_PIOBUFS)) in enable_chip()
543 pioavail = dd->ipath_pioavailregs_dma[i ^ 1]; in enable_chip()
545 pioavail = dd->ipath_pioavailregs_dma[i]; in enable_chip()
551 dd->ipath_pioavailshadow[i] = le64_to_cpu(pioavail); in enable_chip()
554 dd->ipath_flags |= IPATH_PRESENT; in enable_chip()
557 static int init_housekeeping(struct ipath_devdata *dd, int reinit) in init_housekeeping() argument
567 dd->ipath_rcvhdrsize = 0; in init_housekeeping()
577 dd->ipath_flags |= IPATH_LINKUNK | IPATH_PRESENT; in init_housekeeping()
578 dd->ipath_flags &= ~(IPATH_LINKACTIVE | IPATH_LINKARMED | in init_housekeeping()
582 dd->ipath_revision = in init_housekeeping()
583 ipath_read_kreg64(dd, dd->ipath_kregs->kr_revision); in init_housekeeping()
590 dd->ipath_sregbase = in init_housekeeping()
591 ipath_read_kreg32(dd, dd->ipath_kregs->kr_sendregbase); in init_housekeeping()
592 dd->ipath_cregbase = in init_housekeeping()
593 ipath_read_kreg32(dd, dd->ipath_kregs->kr_counterregbase); in init_housekeeping()
594 dd->ipath_uregbase = in init_housekeeping()
595 ipath_read_kreg32(dd, dd->ipath_kregs->kr_userregbase); in init_housekeeping()
597 "cntrbase %x\n", dd->ipath_kregbase, dd->ipath_sregbase, in init_housekeeping()
598 dd->ipath_uregbase, dd->ipath_cregbase); in init_housekeeping()
599 if ((dd->ipath_revision & 0xffffffff) == 0xffffffff in init_housekeeping()
600 || (dd->ipath_sregbase & 0xffffffff) == 0xffffffff in init_housekeeping()
601 || (dd->ipath_cregbase & 0xffffffff) == 0xffffffff in init_housekeeping()
602 || (dd->ipath_uregbase & 0xffffffff) == 0xffffffff) { in init_housekeeping()
603 ipath_dev_err(dd, "Register read failures from chip, " in init_housekeeping()
605 dd->ipath_flags &= ~IPATH_PRESENT; in init_housekeeping()
612 ipath_write_kreg (dd, dd->ipath_kregs->kr_hwdiagctrl, 0); in init_housekeeping()
615 ipath_write_kreg(dd, dd->ipath_kregs->kr_errorclear, in init_housekeeping()
619 (unsigned long long) dd->ipath_revision, in init_housekeeping()
620 dd->ipath_pcirev); in init_housekeeping()
622 if (((dd->ipath_revision >> INFINIPATH_R_SOFTWARE_SHIFT) & in init_housekeeping()
624 ipath_dev_err(dd, "Driver only handles version %d, " in init_housekeeping()
627 (int)(dd->ipath_revision >> in init_housekeeping()
630 (unsigned long long) dd->ipath_revision); in init_housekeeping()
634 dd->ipath_majrev = (u8) ((dd->ipath_revision >> in init_housekeeping()
637 dd->ipath_minrev = (u8) ((dd->ipath_revision >> in init_housekeeping()
640 dd->ipath_boardrev = (u8) ((dd->ipath_revision >> in init_housekeeping()
644 ret = dd->ipath_f_get_boardname(dd, boardn, sizeof boardn); in init_housekeeping()
646 snprintf(dd->ipath_boardversion, sizeof(dd->ipath_boardversion), in init_housekeeping()
650 (unsigned)(dd->ipath_revision >> INFINIPATH_R_ARCH_SHIFT) & in init_housekeeping()
652 dd->ipath_majrev, dd->ipath_minrev, dd->ipath_pcirev, in init_housekeeping()
653 (unsigned)(dd->ipath_revision >> in init_housekeeping()
657 ipath_dbg("%s", dd->ipath_boardversion); in init_housekeeping()
663 ret = init_chip_reset(dd); in init_housekeeping()
665 ret = init_chip_first(dd); in init_housekeeping()
673 struct ipath_devdata *dd = (struct ipath_devdata *) opaque; in verify_interrupt() local
675 if (!dd) in verify_interrupt()
682 if (dd->ipath_int_counter == 0) { in verify_interrupt()
683 if (!dd->ipath_f_intr_fallback(dd)) in verify_interrupt()
684 dev_err(&dd->pcidev->dev, "No interrupts detected, " in verify_interrupt()
687 mod_timer(&dd->ipath_intrchk_timer, jiffies + HZ/2); in verify_interrupt()
690 dd->ipath_int_counter); in verify_interrupt()
708 int ipath_init_chip(struct ipath_devdata *dd, int reinit) in ipath_init_chip() argument
717 ret = init_housekeeping(dd, reinit); in ipath_init_chip()
727 dd->ipath_rcvhdrcnt = max(dd->ipath_p0_rcvegrcnt, dd->ipath_rcvegrcnt); in ipath_init_chip()
728 ipath_write_kreg(dd, dd->ipath_kregs->kr_rcvhdrcnt, in ipath_init_chip()
729 dd->ipath_rcvhdrcnt); in ipath_init_chip()
737 piobufs = dd->ipath_piobcnt2k + dd->ipath_piobcnt4k; in ipath_init_chip()
742 dd->ipath_pioavregs = ALIGN(piobufs, sizeof(u64) * BITS_PER_BYTE / 2) in ipath_init_chip()
744 uports = dd->ipath_cfgports ? dd->ipath_cfgports - 1 : 0; in ipath_init_chip()
746 defkbufs = 32 + dd->ipath_pioreserved; in ipath_init_chip()
748 defkbufs = 16 + dd->ipath_pioreserved; in ipath_init_chip()
756 dev_info(&dd->pcidev->dev, "Allocating %d PIO bufs of " in ipath_init_chip()
769 dd->ipath_lastport_piobuf = piobufs - kpiobufs; in ipath_init_chip()
770 dd->ipath_pbufsport = in ipath_init_chip()
771 uports ? dd->ipath_lastport_piobuf / uports : 0; in ipath_init_chip()
773 dd->ipath_ports_extrabuf = dd->ipath_lastport_piobuf - in ipath_init_chip()
774 (dd->ipath_pbufsport * uports); in ipath_init_chip()
775 if (dd->ipath_ports_extrabuf) in ipath_init_chip()
777 "ports <= %u\n", dd->ipath_pbufsport, in ipath_init_chip()
778 dd->ipath_ports_extrabuf); in ipath_init_chip()
779 dd->ipath_lastpioindex = 0; in ipath_init_chip()
780 dd->ipath_lastpioindexl = dd->ipath_piobcnt2k; in ipath_init_chip()
784 piobufs, dd->ipath_pbufsport, uports); in ipath_init_chip()
785 ret = dd->ipath_f_early_init(dd); in ipath_init_chip()
787 ipath_dev_err(dd, "Early initialization failure\n"); in ipath_init_chip()
795 dd->ipath_hdrqlast = in ipath_init_chip()
796 dd->ipath_rcvhdrentsize * (dd->ipath_rcvhdrcnt - 1); in ipath_init_chip()
797 ipath_write_kreg(dd, dd->ipath_kregs->kr_rcvhdrentsize, in ipath_init_chip()
798 dd->ipath_rcvhdrentsize); in ipath_init_chip()
799 ipath_write_kreg(dd, dd->ipath_kregs->kr_rcvhdrsize, in ipath_init_chip()
800 dd->ipath_rcvhdrsize); in ipath_init_chip()
803 ret = init_pioavailregs(dd); in ipath_init_chip()
804 init_shadow_tids(dd); in ipath_init_chip()
809 ipath_write_kreg(dd, dd->ipath_kregs->kr_sendpioavailaddr, in ipath_init_chip()
810 dd->ipath_pioavailregs_phys); in ipath_init_chip()
816 val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_sendpioavailaddr); in ipath_init_chip()
817 if (val != dd->ipath_pioavailregs_phys) { in ipath_init_chip()
818 ipath_dev_err(dd, "Catastrophic software error, " in ipath_init_chip()
821 (unsigned long) dd->ipath_pioavailregs_phys, in ipath_init_chip()
827 ipath_write_kreg(dd, dd->ipath_kregs->kr_rcvbthqp, IPATH_KD_QP); in ipath_init_chip()
833 ipath_write_kreg(dd, dd->ipath_kregs->kr_hwerrmask, 0ULL); in ipath_init_chip()
834 ipath_write_kreg(dd, dd->ipath_kregs->kr_hwerrclear, in ipath_init_chip()
836 ipath_write_kreg(dd, dd->ipath_kregs->kr_control, 0ULL); in ipath_init_chip()
842 if (bringup_link(dd)) { in ipath_init_chip()
843 dev_info(&dd->pcidev->dev, "Failed to bringup IB link\n"); in ipath_init_chip()
853 dd->ipath_f_init_hwerrors(dd); in ipath_init_chip()
854 ipath_write_kreg(dd, dd->ipath_kregs->kr_hwerrclear, in ipath_init_chip()
856 ipath_write_kreg(dd, dd->ipath_kregs->kr_hwerrmask, in ipath_init_chip()
857 dd->ipath_hwerrmask); in ipath_init_chip()
860 ipath_write_kreg(dd, dd->ipath_kregs->kr_errorclear, -1LL); in ipath_init_chip()
862 ipath_write_kreg(dd, dd->ipath_kregs->kr_errormask, in ipath_init_chip()
863 ~dd->ipath_maskederrs); in ipath_init_chip()
864 dd->ipath_maskederrs = 0; /* don't re-enable ignored in timer */ in ipath_init_chip()
865 dd->ipath_errormask = in ipath_init_chip()
866 ipath_read_kreg64(dd, dd->ipath_kregs->kr_errormask); in ipath_init_chip()
868 ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, -1LL); in ipath_init_chip()
870 dd->ipath_f_tidtemplate(dd); in ipath_init_chip()
878 pd = dd->ipath_pd[0]; in ipath_init_chip()
887 npd = create_portdata0(dd); in ipath_init_chip()
889 ipath_free_pddata(dd, pd); in ipath_init_chip()
890 dd->ipath_pd[0] = npd; in ipath_init_chip()
893 ipath_dev_err(dd, "Unable to allocate portdata" in ipath_init_chip()
899 ret = ipath_create_rcvhdrq(dd, pd); in ipath_init_chip()
901 ret = create_port0_egr(dd); in ipath_init_chip()
903 ipath_dev_err(dd, "failed to allocate kernel port's " in ipath_init_chip()
908 enable_chip(dd, reinit); in ipath_init_chip()
911 ipath_chg_pioavailkernel(dd, 0, piobufs, 1); in ipath_init_chip()
921 ipath_cancel_sends(dd, 1); in ipath_init_chip()
928 dd->ipath_dummy_hdrq = dma_alloc_coherent( in ipath_init_chip()
929 &dd->pcidev->dev, dd->ipath_pd[0]->port_rcvhdrq_size, in ipath_init_chip()
930 &dd->ipath_dummy_hdrq_phys, in ipath_init_chip()
932 if (!dd->ipath_dummy_hdrq) { in ipath_init_chip()
933 dev_info(&dd->pcidev->dev, in ipath_init_chip()
935 dd->ipath_pd[0]->port_rcvhdrq_size); in ipath_init_chip()
937 dd->ipath_dummy_hdrq_phys = 0UL; in ipath_init_chip()
945 ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, 0ULL); in ipath_init_chip()
947 if (!dd->ipath_stats_timer_active) { in ipath_init_chip()
953 init_timer(&dd->ipath_stats_timer); in ipath_init_chip()
954 dd->ipath_stats_timer.function = ipath_get_faststats; in ipath_init_chip()
955 dd->ipath_stats_timer.data = (unsigned long) dd; in ipath_init_chip()
957 dd->ipath_stats_timer.expires = jiffies + 5 * HZ; in ipath_init_chip()
959 add_timer(&dd->ipath_stats_timer); in ipath_init_chip()
960 dd->ipath_stats_timer_active = 1; in ipath_init_chip()
964 if (dd->ipath_flags & IPATH_HAS_SEND_DMA) in ipath_init_chip()
965 ret = setup_sdma(dd); in ipath_init_chip()
968 init_timer(&dd->ipath_hol_timer); in ipath_init_chip()
969 dd->ipath_hol_timer.function = ipath_hol_event; in ipath_init_chip()
970 dd->ipath_hol_timer.data = (unsigned long)dd; in ipath_init_chip()
971 dd->ipath_hol_state = IPATH_HOL_UP; in ipath_init_chip()
975 *dd->ipath_statusp |= IPATH_STATUS_CHIP_PRESENT; in ipath_init_chip()
976 if (!dd->ipath_f_intrsetup(dd)) { in ipath_init_chip()
978 ipath_write_kreg(dd, dd->ipath_kregs->kr_intmask, in ipath_init_chip()
981 ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, in ipath_init_chip()
984 *dd->ipath_statusp |= IPATH_STATUS_INITTED; in ipath_init_chip()
991 init_timer(&dd->ipath_intrchk_timer); in ipath_init_chip()
992 dd->ipath_intrchk_timer.function = in ipath_init_chip()
994 dd->ipath_intrchk_timer.data = in ipath_init_chip()
995 (unsigned long) dd; in ipath_init_chip()
997 dd->ipath_intrchk_timer.expires = jiffies + HZ/2; in ipath_init_chip()
998 add_timer(&dd->ipath_intrchk_timer); in ipath_init_chip()
1000 ipath_dev_err(dd, "No interrupts enabled, couldn't " in ipath_init_chip()
1003 if (dd->ipath_cfgports > ipath_stats.sps_nports) in ipath_init_chip()
1012 ipath_stats.sps_nports = dd->ipath_cfgports; in ipath_init_chip()
1023 struct ipath_devdata *dd; in ipath_set_kpiobufs() local
1040 list_for_each_entry(dd, &ipath_dev_list, ipath_list) { in ipath_set_kpiobufs()
1041 if (dd->ipath_kregbase) in ipath_set_kpiobufs()
1043 if (val > (dd->ipath_piobcnt2k + dd->ipath_piobcnt4k - in ipath_set_kpiobufs()
1044 (dd->ipath_cfgports * in ipath_set_kpiobufs()
1048 dd, in ipath_set_kpiobufs()
1051 val, dd->ipath_cfgports - 1, in ipath_set_kpiobufs()
1056 dd->ipath_lastport_piobuf = in ipath_set_kpiobufs()
1057 dd->ipath_piobcnt2k + dd->ipath_piobcnt4k - val; in ipath_set_kpiobufs()