• Home
  • Raw
  • Download

Lines Matching +full:addr +full:- +full:mode

4  *		- ISAC + HSCX
5 * - IPAC and IPAC-X
6 * - ISAC-SX + HSCX
9 * - Dialogic Diva 2.0
10 * - Dialogic Diva 2.0U
11 * - Dialogic Diva 2.01
12 * - Dialogic Diva 2.02
13 * - Sedlbauer Speedwin
14 * - HST Saphir3
15 * - Develo (former ELSA) Microlink PCI (Quickstep 1000)
16 * - Develo (former ELSA) Quickstep 3000
17 * - Berkom Scitel BRIX Quadro
18 * - Dr.Neuhaus (Sagem) Niccy
93 enum addr_mode mode; member
101 enum addr_mode mode; member
115 struct _iohandle addr; member
241 card->ipac.isac.dch.debug = debug; in _set_debug()
242 card->ipac.hscx[0].bch.debug = debug; in _set_debug()
243 card->ipac.hscx[1].bch.debug = debug; in _set_debug()
285 spin_lock(&hw->lock); in diva_irq()
286 val = inb((u32)hw->cfg.start + DIVA_PCI_CTRL); in diva_irq()
288 spin_unlock(&hw->lock); in diva_irq()
291 hw->irqcnt++; in diva_irq()
292 mISDNipac_irq(&hw->ipac, irqloops); in diva_irq()
293 spin_unlock(&hw->lock); in diva_irq()
303 spin_lock(&hw->lock); in diva20x_irq()
304 val = readb(hw->cfg.p); in diva20x_irq()
306 spin_unlock(&hw->lock); in diva20x_irq()
309 hw->irqcnt++; in diva20x_irq()
310 mISDNipac_irq(&hw->ipac, irqloops); in diva20x_irq()
311 writeb(PITA_INT0_STATUS, hw->cfg.p); /* ACK PITA INT0 */ in diva20x_irq()
312 spin_unlock(&hw->lock); in diva20x_irq()
322 spin_lock(&hw->lock); in tiger_irq()
323 val = inb((u32)hw->cfg.start + TIGER_AUX_STATUS); in tiger_irq()
325 spin_unlock(&hw->lock); in tiger_irq()
328 hw->irqcnt++; in tiger_irq()
329 mISDNipac_irq(&hw->ipac, irqloops); in tiger_irq()
330 spin_unlock(&hw->lock); in tiger_irq()
340 spin_lock(&hw->lock); in elsa_irq()
341 val = inb((u32)hw->cfg.start + ELSA_IRQ_ADDR); in elsa_irq()
343 spin_unlock(&hw->lock); in elsa_irq()
346 hw->irqcnt++; in elsa_irq()
347 mISDNipac_irq(&hw->ipac, irqloops); in elsa_irq()
348 spin_unlock(&hw->lock); in elsa_irq()
358 spin_lock(&hw->lock); in niccy_irq()
359 val = inl((u32)hw->cfg.start + NICCY_IRQ_CTRL_REG); in niccy_irq()
361 spin_unlock(&hw->lock); in niccy_irq()
364 outl(val, (u32)hw->cfg.start + NICCY_IRQ_CTRL_REG); in niccy_irq()
365 hw->irqcnt++; in niccy_irq()
366 mISDNipac_irq(&hw->ipac, irqloops); in niccy_irq()
367 spin_unlock(&hw->lock); in niccy_irq()
377 spin_lock(&hw->lock); in gazel_irq()
378 ret = mISDNipac_irq(&hw->ipac, irqloops); in gazel_irq()
379 spin_unlock(&hw->lock); in gazel_irq()
389 spin_lock(&hw->lock); in ipac_irq()
390 val = hw->ipac.read_reg(hw, IPAC_ISTA); in ipac_irq()
392 spin_unlock(&hw->lock); in ipac_irq()
395 hw->irqcnt++; in ipac_irq()
396 mISDNipac_irq(&hw->ipac, irqloops); in ipac_irq()
397 spin_unlock(&hw->lock); in ipac_irq()
407 switch (hw->ci->typ) { in enable_hwirq()
410 writel(PITA_INT0_ENABLE, hw->cfg.p); in enable_hwirq()
414 outb(TIGER_IRQ_BIT, (u32)hw->cfg.start + TIGER_AUX_IRQMASK); in enable_hwirq()
417 outb(QS1000_IRQ_ON, (u32)hw->cfg.start + ELSA_IRQ_ADDR); in enable_hwirq()
420 outb(QS3000_IRQ_ON, (u32)hw->cfg.start + ELSA_IRQ_ADDR); in enable_hwirq()
423 val = inl((u32)hw->cfg.start + NICCY_IRQ_CTRL_REG); in enable_hwirq()
425 outl(val, (u32)hw->cfg.start + NICCY_IRQ_CTRL_REG); in enable_hwirq()
428 w = inw((u32)hw->cfg.start + SCT_PLX_IRQ_ADDR); in enable_hwirq()
430 outw(w, (u32)hw->cfg.start + SCT_PLX_IRQ_ADDR); in enable_hwirq()
434 (u32)hw->cfg.start + GAZEL_INCSR); in enable_hwirq()
438 (u32)hw->cfg.start + GAZEL_INCSR); in enable_hwirq()
451 switch (hw->ci->typ) { in disable_hwirq()
454 writel(0, hw->cfg.p); in disable_hwirq()
458 outb(0, (u32)hw->cfg.start + TIGER_AUX_IRQMASK); in disable_hwirq()
461 outb(QS1000_IRQ_OFF, (u32)hw->cfg.start + ELSA_IRQ_ADDR); in disable_hwirq()
464 outb(QS3000_IRQ_OFF, (u32)hw->cfg.start + ELSA_IRQ_ADDR); in disable_hwirq()
467 val = inl((u32)hw->cfg.start + NICCY_IRQ_CTRL_REG); in disable_hwirq()
469 outl(val, (u32)hw->cfg.start + NICCY_IRQ_CTRL_REG); in disable_hwirq()
472 w = inw((u32)hw->cfg.start + SCT_PLX_IRQ_ADDR); in disable_hwirq()
474 outw(w, (u32)hw->cfg.start + SCT_PLX_IRQ_ADDR); in disable_hwirq()
478 outb(0, (u32)hw->cfg.start + GAZEL_INCSR); in disable_hwirq()
488 hw->ipac.write_reg(hw, IPAC_POTA2, 0x20); in ipac_chip_reset()
490 hw->ipac.write_reg(hw, IPAC_POTA2, 0x00); in ipac_chip_reset()
492 hw->ipac.write_reg(hw, IPAC_CONF, hw->ipac.conf); in ipac_chip_reset()
493 hw->ipac.write_reg(hw, IPAC_MASK, 0xc0); in ipac_chip_reset()
503 pr_notice("%s: resetting card\n", hw->name); in reset_inf()
504 switch (hw->ci->typ) { in reset_inf()
507 outb(0, (u32)hw->cfg.start + DIVA_PCI_CTRL); in reset_inf()
509 outb(DIVA_RESET_BIT, (u32)hw->cfg.start + DIVA_PCI_CTRL); in reset_inf()
512 outb(9, (u32)hw->cfg.start + 0x69); in reset_inf()
514 (u32)hw->cfg.start + DIVA_PCI_CTRL); in reset_inf()
518 hw->cfg.p + PITA_MISC_REG); in reset_inf()
520 writel(PITA_PARA_MPX_MODE, hw->cfg.p + PITA_MISC_REG); in reset_inf()
525 hw->cfg.p + PITA_MISC_REG); in reset_inf()
528 hw->cfg.p + PITA_MISC_REG); in reset_inf()
534 hw->ipac.write_reg(hw, IPAC_ACFG, 0xff); in reset_inf()
535 hw->ipac.write_reg(hw, IPAC_AOE, 0x00); in reset_inf()
536 hw->ipac.write_reg(hw, IPAC_PCFG, 0x12); in reset_inf()
541 hw->ipac.write_reg(hw, IPAC_ACFG, 0x00); in reset_inf()
542 hw->ipac.write_reg(hw, IPAC_AOE, 0x3c); in reset_inf()
543 hw->ipac.write_reg(hw, IPAC_ATX, 0xff); in reset_inf()
548 w = inw((u32)hw->cfg.start + SCT_PLX_RESET_ADDR); in reset_inf()
550 outw(w, (u32)hw->cfg.start + SCT_PLX_RESET_ADDR); in reset_inf()
552 w = inw((u32)hw->cfg.start + SCT_PLX_RESET_ADDR); in reset_inf()
554 outw(w, (u32)hw->cfg.start + SCT_PLX_RESET_ADDR); in reset_inf()
558 val = inl((u32)hw->cfg.start + GAZEL_CNTRL); in reset_inf()
560 outl(val, (u32)hw->cfg.start + GAZEL_CNTRL); in reset_inf()
563 outl(val, (u32)hw->cfg.start + GAZEL_CNTRL); in reset_inf()
565 hw->ipac.isac.adf2 = 0x87; in reset_inf()
566 hw->ipac.hscx[0].slot = 0x1f; in reset_inf()
567 hw->ipac.hscx[1].slot = 0x23; in reset_inf()
570 val = inl((u32)hw->cfg.start + GAZEL_CNTRL); in reset_inf()
572 outl(val, (u32)hw->cfg.start + GAZEL_CNTRL); in reset_inf()
575 outl(val, (u32)hw->cfg.start + GAZEL_CNTRL); in reset_inf()
578 hw->ipac.write_reg(hw, IPAC_ACFG, 0xff); in reset_inf()
579 hw->ipac.write_reg(hw, IPAC_AOE, 0x00); in reset_inf()
580 hw->ipac.conf = 0x01; /* IOM off */ in reset_inf()
599 hw->name, __func__, cmd, arg); in inf_ctrl()
600 ret = -EINVAL; in inf_ctrl()
612 if (!hw->ci->irqfunc) in init_irq()
613 return -EINVAL; in init_irq()
614 ret = request_irq(hw->irq, hw->ci->irqfunc, IRQF_SHARED, hw->name, hw); in init_irq()
616 pr_info("%s: couldn't get interrupt %d\n", hw->name, hw->irq); in init_irq()
619 while (cnt--) { in init_irq()
620 spin_lock_irqsave(&hw->lock, flags); in init_irq()
622 ret = hw->ipac.init(&hw->ipac); in init_irq()
624 spin_unlock_irqrestore(&hw->lock, flags); in init_irq()
626 hw->name, ret); in init_irq()
629 spin_unlock_irqrestore(&hw->lock, flags); in init_irq()
632 pr_notice("%s: IRQ %d count %d\n", hw->name, in init_irq()
633 hw->irq, hw->irqcnt); in init_irq()
634 if (!hw->irqcnt) { in init_irq()
636 hw->name, hw->irq, 3 - cnt); in init_irq()
640 free_irq(hw->irq, hw); in init_irq()
641 return -EIO; in init_irq()
647 if (hw->cfg.mode) { in release_io()
648 if (hw->cfg.p) { in release_io()
649 release_mem_region(hw->cfg.start, hw->cfg.size); in release_io()
650 iounmap(hw->cfg.p); in release_io()
652 release_region(hw->cfg.start, hw->cfg.size); in release_io()
653 hw->cfg.mode = AM_NONE; in release_io()
655 if (hw->addr.mode) { in release_io()
656 if (hw->addr.p) { in release_io()
657 release_mem_region(hw->addr.start, hw->addr.size); in release_io()
658 iounmap(hw->addr.p); in release_io()
660 release_region(hw->addr.start, hw->addr.size); in release_io()
661 hw->addr.mode = AM_NONE; in release_io()
670 if (hw->ci->cfg_mode) { in setup_io()
671 hw->cfg.start = pci_resource_start(hw->pdev, hw->ci->cfg_bar); in setup_io()
672 hw->cfg.size = pci_resource_len(hw->pdev, hw->ci->cfg_bar); in setup_io()
673 if (hw->ci->cfg_mode == AM_MEMIO) { in setup_io()
674 if (!request_mem_region(hw->cfg.start, hw->cfg.size, in setup_io()
675 hw->name)) in setup_io()
676 err = -EBUSY; in setup_io()
678 if (!request_region(hw->cfg.start, hw->cfg.size, in setup_io()
679 hw->name)) in setup_io()
680 err = -EBUSY; in setup_io()
684 "already in use\n", hw->name, in setup_io()
685 (ulong)hw->cfg.start, (ulong)hw->cfg.size); in setup_io()
688 if (hw->ci->cfg_mode == AM_MEMIO) in setup_io()
689 hw->cfg.p = ioremap(hw->cfg.start, hw->cfg.size); in setup_io()
690 hw->cfg.mode = hw->ci->cfg_mode; in setup_io()
692 pr_notice("%s: IO cfg %lx (%lu bytes) mode%d\n", in setup_io()
693 hw->name, (ulong)hw->cfg.start, in setup_io()
694 (ulong)hw->cfg.size, hw->ci->cfg_mode); in setup_io()
697 if (hw->ci->addr_mode) { in setup_io()
698 hw->addr.start = pci_resource_start(hw->pdev, hw->ci->addr_bar); in setup_io()
699 hw->addr.size = pci_resource_len(hw->pdev, hw->ci->addr_bar); in setup_io()
700 if (hw->ci->addr_mode == AM_MEMIO) { in setup_io()
701 if (!request_mem_region(hw->addr.start, hw->addr.size, in setup_io()
702 hw->name)) in setup_io()
703 err = -EBUSY; in setup_io()
705 if (!request_region(hw->addr.start, hw->addr.size, in setup_io()
706 hw->name)) in setup_io()
707 err = -EBUSY; in setup_io()
711 "already in use\n", hw->name, in setup_io()
712 (ulong)hw->addr.start, (ulong)hw->addr.size); in setup_io()
715 if (hw->ci->addr_mode == AM_MEMIO) in setup_io()
716 hw->addr.p = ioremap(hw->addr.start, hw->addr.size); in setup_io()
717 hw->addr.mode = hw->ci->addr_mode; in setup_io()
719 pr_notice("%s: IO addr %lx (%lu bytes) mode%d\n", in setup_io()
720 hw->name, (ulong)hw->addr.start, in setup_io()
721 (ulong)hw->addr.size, hw->ci->addr_mode); in setup_io()
725 switch (hw->ci->typ) { in setup_io()
728 hw->ipac.type = IPAC_TYPE_ISAC | IPAC_TYPE_HSCX; in setup_io()
729 hw->isac.mode = hw->cfg.mode; in setup_io()
730 hw->isac.a.io.ale = (u32)hw->cfg.start + DIVA_ISAC_ALE; in setup_io()
731 hw->isac.a.io.port = (u32)hw->cfg.start + DIVA_ISAC_PORT; in setup_io()
732 hw->hscx.mode = hw->cfg.mode; in setup_io()
733 hw->hscx.a.io.ale = (u32)hw->cfg.start + DIVA_HSCX_ALE; in setup_io()
734 hw->hscx.a.io.port = (u32)hw->cfg.start + DIVA_HSCX_PORT; in setup_io()
737 hw->ipac.type = IPAC_TYPE_IPAC; in setup_io()
738 hw->ipac.isac.off = 0x80; in setup_io()
739 hw->isac.mode = hw->addr.mode; in setup_io()
740 hw->isac.a.p = hw->addr.p; in setup_io()
741 hw->hscx.mode = hw->addr.mode; in setup_io()
742 hw->hscx.a.p = hw->addr.p; in setup_io()
745 hw->ipac.type = IPAC_TYPE_IPACX; in setup_io()
746 hw->isac.mode = hw->addr.mode; in setup_io()
747 hw->isac.a.p = hw->addr.p; in setup_io()
748 hw->hscx.mode = hw->addr.mode; in setup_io()
749 hw->hscx.a.p = hw->addr.p; in setup_io()
753 hw->ipac.type = IPAC_TYPE_IPAC; in setup_io()
754 hw->ipac.isac.off = 0x80; in setup_io()
755 hw->isac.mode = hw->cfg.mode; in setup_io()
756 hw->isac.a.io.ale = (u32)hw->cfg.start + TIGER_IPAC_ALE; in setup_io()
757 hw->isac.a.io.port = (u32)hw->cfg.start + TIGER_IPAC_PORT; in setup_io()
758 hw->hscx.mode = hw->cfg.mode; in setup_io()
759 hw->hscx.a.io.ale = (u32)hw->cfg.start + TIGER_IPAC_ALE; in setup_io()
760 hw->hscx.a.io.port = (u32)hw->cfg.start + TIGER_IPAC_PORT; in setup_io()
761 outb(0xff, (ulong)hw->cfg.start); in setup_io()
763 outb(0x00, (ulong)hw->cfg.start); in setup_io()
765 outb(TIGER_IOMASK, (ulong)hw->cfg.start + TIGER_AUX_CTRL); in setup_io()
769 hw->ipac.type = IPAC_TYPE_IPAC; in setup_io()
770 hw->ipac.isac.off = 0x80; in setup_io()
771 hw->isac.a.io.ale = (u32)hw->addr.start; in setup_io()
772 hw->isac.a.io.port = (u32)hw->addr.start + 1; in setup_io()
773 hw->isac.mode = hw->addr.mode; in setup_io()
774 hw->hscx.a.io.ale = (u32)hw->addr.start; in setup_io()
775 hw->hscx.a.io.port = (u32)hw->addr.start + 1; in setup_io()
776 hw->hscx.mode = hw->addr.mode; in setup_io()
779 hw->ipac.type = IPAC_TYPE_ISAC | IPAC_TYPE_HSCX; in setup_io()
780 hw->isac.mode = hw->addr.mode; in setup_io()
781 hw->isac.a.io.ale = (u32)hw->addr.start + NICCY_ISAC_ALE; in setup_io()
782 hw->isac.a.io.port = (u32)hw->addr.start + NICCY_ISAC_PORT; in setup_io()
783 hw->hscx.mode = hw->addr.mode; in setup_io()
784 hw->hscx.a.io.ale = (u32)hw->addr.start + NICCY_HSCX_ALE; in setup_io()
785 hw->hscx.a.io.port = (u32)hw->addr.start + NICCY_HSCX_PORT; in setup_io()
788 hw->ipac.type = IPAC_TYPE_IPAC; in setup_io()
789 hw->ipac.isac.off = 0x80; in setup_io()
790 hw->isac.a.io.ale = (u32)hw->addr.start; in setup_io()
791 hw->isac.a.io.port = hw->isac.a.io.ale + 4; in setup_io()
792 hw->isac.mode = hw->addr.mode; in setup_io()
793 hw->hscx.a.io.ale = hw->isac.a.io.ale; in setup_io()
794 hw->hscx.a.io.port = hw->isac.a.io.port; in setup_io()
795 hw->hscx.mode = hw->addr.mode; in setup_io()
798 hw->ipac.type = IPAC_TYPE_IPAC; in setup_io()
799 hw->ipac.isac.off = 0x80; in setup_io()
800 hw->isac.a.io.ale = (u32)hw->addr.start + 0x08; in setup_io()
801 hw->isac.a.io.port = hw->isac.a.io.ale + 4; in setup_io()
802 hw->isac.mode = hw->addr.mode; in setup_io()
803 hw->hscx.a.io.ale = hw->isac.a.io.ale; in setup_io()
804 hw->hscx.a.io.port = hw->isac.a.io.port; in setup_io()
805 hw->hscx.mode = hw->addr.mode; in setup_io()
808 hw->ipac.type = IPAC_TYPE_IPAC; in setup_io()
809 hw->ipac.isac.off = 0x80; in setup_io()
810 hw->isac.a.io.ale = (u32)hw->addr.start + 0x10; in setup_io()
811 hw->isac.a.io.port = hw->isac.a.io.ale + 4; in setup_io()
812 hw->isac.mode = hw->addr.mode; in setup_io()
813 hw->hscx.a.io.ale = hw->isac.a.io.ale; in setup_io()
814 hw->hscx.a.io.port = hw->isac.a.io.port; in setup_io()
815 hw->hscx.mode = hw->addr.mode; in setup_io()
818 hw->ipac.type = IPAC_TYPE_IPAC; in setup_io()
819 hw->ipac.isac.off = 0x80; in setup_io()
820 hw->isac.a.io.ale = (u32)hw->addr.start + 0x20; in setup_io()
821 hw->isac.a.io.port = hw->isac.a.io.ale + 4; in setup_io()
822 hw->isac.mode = hw->addr.mode; in setup_io()
823 hw->hscx.a.io.ale = hw->isac.a.io.ale; in setup_io()
824 hw->hscx.a.io.port = hw->isac.a.io.port; in setup_io()
825 hw->hscx.mode = hw->addr.mode; in setup_io()
828 hw->ipac.type = IPAC_TYPE_ISAC | IPAC_TYPE_HSCX; in setup_io()
829 hw->ipac.isac.off = 0x80; in setup_io()
830 hw->isac.mode = hw->addr.mode; in setup_io()
831 hw->isac.a.io.port = (u32)hw->addr.start; in setup_io()
832 hw->hscx.mode = hw->addr.mode; in setup_io()
833 hw->hscx.a.io.port = hw->isac.a.io.port; in setup_io()
836 hw->ipac.type = IPAC_TYPE_IPAC; in setup_io()
837 hw->ipac.isac.off = 0x80; in setup_io()
838 hw->isac.mode = hw->addr.mode; in setup_io()
839 hw->isac.a.io.ale = (u32)hw->addr.start; in setup_io()
840 hw->isac.a.io.port = (u32)hw->addr.start + GAZEL_IPAC_DATA_PORT; in setup_io()
841 hw->hscx.mode = hw->addr.mode; in setup_io()
842 hw->hscx.a.io.ale = hw->isac.a.io.ale; in setup_io()
843 hw->hscx.a.io.port = hw->isac.a.io.port; in setup_io()
846 return -EINVAL; in setup_io()
848 switch (hw->isac.mode) { in setup_io()
850 ASSIGN_FUNC_IPAC(MIO, hw->ipac); in setup_io()
853 ASSIGN_FUNC_IPAC(IND, hw->ipac); in setup_io()
856 ASSIGN_FUNC_IPAC(IO, hw->ipac); in setup_io()
859 return -EINVAL; in setup_io()
869 spin_lock_irqsave(&card->lock, flags); in release_card()
871 spin_unlock_irqrestore(&card->lock, flags); in release_card()
872 card->ipac.isac.release(&card->ipac.isac); in release_card()
873 free_irq(card->irq, card); in release_card()
874 mISDN_unregister_device(&card->ipac.isac.dch.dev); in release_card()
877 list_del(&card->list); in release_card()
879 switch (card->ci->typ) { in release_card()
886 if (card->sc[i]) in release_card()
887 release_card(card->sc[i]); in release_card()
888 card->sc[i] = NULL; in release_card()
892 pci_disable_device(card->pdev); in release_card()
893 pci_set_drvdata(card->pdev, NULL); in release_card()
897 inf_cnt--; in release_card()
906 snprintf(card->name, MISDN_MAX_IDLEN - 1, "%s.%d", card->ci->name, in setup_instance()
909 list_add_tail(&card->list, &Cards); in setup_instance()
913 card->ipac.isac.name = card->name; in setup_instance()
914 card->ipac.name = card->name; in setup_instance()
915 card->ipac.owner = THIS_MODULE; in setup_instance()
916 spin_lock_init(&card->lock); in setup_instance()
917 card->ipac.isac.hwlock = &card->lock; in setup_instance()
918 card->ipac.hwlock = &card->lock; in setup_instance()
919 card->ipac.ctrl = (void *)&inf_ctrl; in setup_instance()
925 card->ipac.isac.dch.dev.Bprotocols = in setup_instance()
926 mISDNipac_init(&card->ipac, card); in setup_instance()
928 if (card->ipac.isac.dch.dev.Bprotocols == 0) in setup_instance()
931 err = mISDN_register_device(&card->ipac.isac.dch.dev, in setup_instance()
932 &card->pdev->dev, card->name); in setup_instance()
942 mISDN_unregister_device(&card->ipac.isac.dch.dev); in setup_instance()
944 card->ipac.release(&card->ipac); in setup_instance()
948 list_del(&card->list); in setup_instance()
1069 while (ci->typ != INF_NONE) { in get_card_info()
1070 if (ci->typ == typ) in get_card_info()
1080 int err = -ENOMEM; in inf_probe()
1088 card->pdev = pdev; in inf_probe()
1094 card->ci = get_card_info(ent->driver_data); in inf_probe()
1095 if (!card->ci) { in inf_probe()
1100 return -EINVAL; in inf_probe()
1103 card->ci->full, pci_name(pdev)); in inf_probe()
1105 card->irq = pdev->irq; in inf_probe()
1112 } else if (ent->driver_data == INF_SCT_1) { in inf_probe()
1121 return -ENOMEM; in inf_probe()
1123 sc->irq = card->irq; in inf_probe()
1124 sc->pdev = card->pdev; in inf_probe()
1125 sc->ci = card->ci + i; in inf_probe()
1133 card->sc[i - 1] = sc; in inf_probe()