Lines Matching full:adapter

155 	struct fritz_adapter *adapter = isac->priv;  in fcpci_read_isac()  local
161 spin_lock_irqsave(&adapter->hw_lock, flags); in fcpci_read_isac()
162 outb(idx, adapter->io + AVM_INDEX); in fcpci_read_isac()
163 val = inb(adapter->io + AVM_DATA + (offset & 0xf)); in fcpci_read_isac()
164 spin_unlock_irqrestore(&adapter->hw_lock, flags); in fcpci_read_isac()
173 struct fritz_adapter *adapter = isac->priv; in fcpci_write_isac() local
180 spin_lock_irqsave(&adapter->hw_lock, flags); in fcpci_write_isac()
181 outb(idx, adapter->io + AVM_INDEX); in fcpci_write_isac()
182 outb(value, adapter->io + AVM_DATA + (offset & 0xf)); in fcpci_write_isac()
183 spin_unlock_irqrestore(&adapter->hw_lock, flags); in fcpci_write_isac()
189 struct fritz_adapter *adapter = isac->priv; in fcpci_read_isac_fifo() local
192 spin_lock_irqsave(&adapter->hw_lock, flags); in fcpci_read_isac_fifo()
193 outb(AVM_IDX_ISAC_FIFO, adapter->io + AVM_INDEX); in fcpci_read_isac_fifo()
194 insb(adapter->io + AVM_DATA, data, size); in fcpci_read_isac_fifo()
195 spin_unlock_irqrestore(&adapter->hw_lock, flags); in fcpci_read_isac_fifo()
201 struct fritz_adapter *adapter = isac->priv; in fcpci_write_isac_fifo() local
204 spin_lock_irqsave(&adapter->hw_lock, flags); in fcpci_write_isac_fifo()
205 outb(AVM_IDX_ISAC_FIFO, adapter->io + AVM_INDEX); in fcpci_write_isac_fifo()
206 outsb(adapter->io + AVM_DATA, data, size); in fcpci_write_isac_fifo()
207 spin_unlock_irqrestore(&adapter->hw_lock, flags); in fcpci_write_isac_fifo()
210 static u32 fcpci_read_hdlc_status(struct fritz_adapter *adapter, int nr) in fcpci_read_hdlc_status() argument
216 spin_lock_irqsave(&adapter->hw_lock, flags); in fcpci_read_hdlc_status()
217 outl(idx, adapter->io + AVM_INDEX); in fcpci_read_hdlc_status()
218 val = inl(adapter->io + AVM_DATA + HDLC_STATUS); in fcpci_read_hdlc_status()
219 spin_unlock_irqrestore(&adapter->hw_lock, flags); in fcpci_read_hdlc_status()
225 struct fritz_adapter *adapter = bcs->adapter; in __fcpci_write_ctrl() local
231 outl(idx, adapter->io + AVM_INDEX); in __fcpci_write_ctrl()
232 outl(bcs->ctrl.ctrl, adapter->io + AVM_DATA + HDLC_CTRL); in __fcpci_write_ctrl()
237 struct fritz_adapter *adapter = bcs->adapter; in fcpci_write_ctrl() local
240 spin_lock_irqsave(&adapter->hw_lock, flags); in fcpci_write_ctrl()
242 spin_unlock_irqrestore(&adapter->hw_lock, flags); in fcpci_write_ctrl()
250 struct fritz_adapter *adapter = isac->priv; in fcpci2_read_isac() local
254 spin_lock_irqsave(&adapter->hw_lock, flags); in fcpci2_read_isac()
255 outl(offset, adapter->io + AVM_ISACSX_INDEX); in fcpci2_read_isac()
256 val = inl(adapter->io + AVM_ISACSX_DATA); in fcpci2_read_isac()
257 spin_unlock_irqrestore(&adapter->hw_lock, flags); in fcpci2_read_isac()
267 struct fritz_adapter *adapter = isac->priv; in fcpci2_write_isac() local
272 spin_lock_irqsave(&adapter->hw_lock, flags); in fcpci2_write_isac()
273 outl(offset, adapter->io + AVM_ISACSX_INDEX); in fcpci2_write_isac()
274 outl(value, adapter->io + AVM_ISACSX_DATA); in fcpci2_write_isac()
275 spin_unlock_irqrestore(&adapter->hw_lock, flags); in fcpci2_write_isac()
281 struct fritz_adapter *adapter = isac->priv; in fcpci2_read_isac_fifo() local
285 spin_lock_irqsave(&adapter->hw_lock, flags); in fcpci2_read_isac_fifo()
286 outl(0, adapter->io + AVM_ISACSX_INDEX); in fcpci2_read_isac_fifo()
288 data[i] = inl(adapter->io + AVM_ISACSX_DATA); in fcpci2_read_isac_fifo()
289 spin_unlock_irqrestore(&adapter->hw_lock, flags); in fcpci2_read_isac_fifo()
295 struct fritz_adapter *adapter = isac->priv; in fcpci2_write_isac_fifo() local
299 spin_lock_irqsave(&adapter->hw_lock, flags); in fcpci2_write_isac_fifo()
300 outl(0, adapter->io + AVM_ISACSX_INDEX); in fcpci2_write_isac_fifo()
302 outl(data[i], adapter->io + AVM_ISACSX_DATA); in fcpci2_write_isac_fifo()
303 spin_unlock_irqrestore(&adapter->hw_lock, flags); in fcpci2_write_isac_fifo()
306 static u32 fcpci2_read_hdlc_status(struct fritz_adapter *adapter, int nr) in fcpci2_read_hdlc_status() argument
310 return inl(adapter->io + offset); in fcpci2_read_hdlc_status()
315 struct fritz_adapter *adapter = bcs->adapter; in fcpci2_write_ctrl() local
321 outl(bcs->ctrl.ctrl, adapter->io + offset); in fcpci2_write_ctrl()
327 static u32 fcpnp_read_hdlc_status(struct fritz_adapter *adapter, int nr) in fcpnp_read_hdlc_status() argument
333 spin_lock_irqsave(&adapter->hw_lock, flags); in fcpnp_read_hdlc_status()
334 outb(idx, adapter->io + AVM_INDEX); in fcpnp_read_hdlc_status()
335 val = inb(adapter->io + AVM_DATA + HDLC_STATUS); in fcpnp_read_hdlc_status()
337 val |= inb(adapter->io + AVM_DATA + HDLC_STATUS + 1) << 8; in fcpnp_read_hdlc_status()
338 spin_unlock_irqrestore(&adapter->hw_lock, flags); in fcpnp_read_hdlc_status()
344 struct fritz_adapter *adapter = bcs->adapter; in __fcpnp_write_ctrl() local
350 outb(idx, adapter->io + AVM_INDEX); in __fcpnp_write_ctrl()
353 adapter->io + AVM_DATA + HDLC_STATUS + 2); in __fcpnp_write_ctrl()
356 adapter->io + AVM_DATA + HDLC_STATUS + 1); in __fcpnp_write_ctrl()
359 adapter->io + AVM_DATA + HDLC_STATUS + 0); in __fcpnp_write_ctrl()
364 struct fritz_adapter *adapter = bcs->adapter; in fcpnp_write_ctrl() local
367 spin_lock_irqsave(&adapter->hw_lock, flags); in fcpnp_write_ctrl()
369 spin_unlock_irqrestore(&adapter->hw_lock, flags); in fcpnp_write_ctrl()
384 struct fritz_adapter *adapter = bcs->adapter; in hdlc_fill_fifo() local
408 switch (adapter->type) { in hdlc_fill_fifo()
410 spin_lock_irqsave(&adapter->hw_lock, flags); in hdlc_fill_fifo()
413 outsl(adapter->io + AVM_DATA + HDLC_FIFO, in hdlc_fill_fifo()
415 spin_unlock_irqrestore(&adapter->hw_lock, flags); in hdlc_fill_fifo()
419 outsl(adapter->io + in hdlc_fill_fifo()
424 spin_lock_irqsave(&adapter->hw_lock, flags); in hdlc_fill_fifo()
427 outsb(adapter->io + AVM_DATA, p, count); in hdlc_fill_fifo()
428 spin_unlock_irqrestore(&adapter->hw_lock, flags); in hdlc_fill_fifo()
435 struct fritz_adapter *adapter = bcs->adapter; in hdlc_empty_fifo() local
446 switch (adapter->type) { in hdlc_empty_fifo()
448 spin_lock(&adapter->hw_lock); in hdlc_empty_fifo()
449 outl(idx, adapter->io + AVM_INDEX); in hdlc_empty_fifo()
450 insl(adapter->io + AVM_DATA + HDLC_FIFO, in hdlc_empty_fifo()
452 spin_unlock(&adapter->hw_lock); in hdlc_empty_fifo()
455 insl(adapter->io + in hdlc_empty_fifo()
460 spin_lock(&adapter->hw_lock); in hdlc_empty_fifo()
461 outb(idx, adapter->io + AVM_INDEX); in hdlc_empty_fifo()
462 insb(adapter->io + AVM_DATA, p, count); in hdlc_empty_fifo()
463 spin_unlock(&adapter->hw_lock); in hdlc_empty_fifo()
470 struct fritz_adapter *adapter = bcs->adapter; in hdlc_rpr_irq() local
478 adapter->write_ctrl(bcs, 1); in hdlc_rpr_irq()
480 adapter->write_ctrl(bcs, 1); in hdlc_rpr_irq()
514 struct fritz_adapter *adapter = bcs->adapter; in hdlc_xdu_irq() local
522 adapter->write_ctrl(bcs, 1); in hdlc_xdu_irq()
527 adapter->write_ctrl(bcs, 1); in hdlc_xdu_irq()
574 static inline void hdlc_irq(struct fritz_adapter *adapter) in hdlc_irq() argument
580 stat = adapter->read_hdlc_status(adapter, nr); in hdlc_irq()
583 hdlc_irq_one(&adapter->bcs[nr], stat); in hdlc_irq()
589 struct fritz_adapter *adapter = bcs->adapter; in modehdlc() local
603 adapter->write_ctrl(bcs, 5); in modehdlc()
615 adapter->write_ctrl(bcs, 5); in modehdlc()
617 adapter->write_ctrl(bcs, 1); in modehdlc()
658 struct fritz_adapter *adapter = dev; in fcpci2_irq() local
661 val = inb(adapter->io + AVM_STATUS0); in fcpci2_irq()
667 isacsx_irq(&adapter->isac); in fcpci2_irq()
669 hdlc_irq(adapter); in fcpci2_irq()
671 isacsx_irq(&adapter->isac); in fcpci2_irq()
678 struct fritz_adapter *adapter = dev; in fcpci_irq() local
681 sval = inb(adapter->io + 2); in fcpci_irq()
687 isac_irq(&adapter->isac); in fcpci_irq()
690 hdlc_irq(adapter); in fcpci_irq()
696 static inline void fcpci2_init(struct fritz_adapter *adapter) in fcpci2_init() argument
698 outb(AVM_STATUS0_RES_TIMER, adapter->io + AVM_STATUS0); in fcpci2_init()
699 outb(AVM_STATUS0_ENA_IRQ, adapter->io + AVM_STATUS0); in fcpci2_init()
703 static inline void fcpci_init(struct fritz_adapter *adapter) in fcpci_init() argument
706 AVM_STATUS0_ENA_IRQ, adapter->io + AVM_STATUS0); in fcpci_init()
708 outb(AVM_STATUS1_ENA_IOM | adapter->irq, in fcpci_init()
709 adapter->io + AVM_STATUS1); in fcpci_init()
715 static int __devinit fcpcipnp_setup(struct fritz_adapter *adapter) in fcpcipnp_setup() argument
722 isac_init(&adapter->isac); // FIXME is this okay now in fcpcipnp_setup()
725 if (!request_region(adapter->io, 32, "fcpcipnp")) in fcpcipnp_setup()
728 switch (adapter->type) { in fcpcipnp_setup()
731 val = inl(adapter->io); in fcpcipnp_setup()
734 val = inb(adapter->io); in fcpcipnp_setup()
735 val |= inb(adapter->io + 1) << 8; in fcpcipnp_setup()
742 spin_lock_init(&adapter->hw_lock); in fcpcipnp_setup()
743 adapter->isac.priv = adapter; in fcpcipnp_setup()
744 switch (adapter->type) { in fcpcipnp_setup()
746 adapter->isac.read_isac = &fcpci2_read_isac; in fcpcipnp_setup()
747 adapter->isac.write_isac = &fcpci2_write_isac; in fcpcipnp_setup()
748 adapter->isac.read_isac_fifo = &fcpci2_read_isac_fifo; in fcpcipnp_setup()
749 adapter->isac.write_isac_fifo = &fcpci2_write_isac_fifo; in fcpcipnp_setup()
751 adapter->read_hdlc_status = &fcpci2_read_hdlc_status; in fcpcipnp_setup()
752 adapter->write_ctrl = &fcpci2_write_ctrl; in fcpcipnp_setup()
755 adapter->isac.read_isac = &fcpci_read_isac; in fcpcipnp_setup()
756 adapter->isac.write_isac = &fcpci_write_isac; in fcpcipnp_setup()
757 adapter->isac.read_isac_fifo = &fcpci_read_isac_fifo; in fcpcipnp_setup()
758 adapter->isac.write_isac_fifo = &fcpci_write_isac_fifo; in fcpcipnp_setup()
760 adapter->read_hdlc_status = &fcpci_read_hdlc_status; in fcpcipnp_setup()
761 adapter->write_ctrl = &fcpci_write_ctrl; in fcpcipnp_setup()
764 adapter->isac.read_isac = &fcpci_read_isac; in fcpcipnp_setup()
765 adapter->isac.write_isac = &fcpci_write_isac; in fcpcipnp_setup()
766 adapter->isac.read_isac_fifo = &fcpci_read_isac_fifo; in fcpcipnp_setup()
767 adapter->isac.write_isac_fifo = &fcpci_write_isac_fifo; in fcpcipnp_setup()
769 adapter->read_hdlc_status = &fcpnp_read_hdlc_status; in fcpcipnp_setup()
770 adapter->write_ctrl = &fcpnp_write_ctrl; in fcpcipnp_setup()
775 outb(0, adapter->io + AVM_STATUS0); in fcpcipnp_setup()
777 outb(AVM_STATUS0_RESET, adapter->io + AVM_STATUS0); in fcpcipnp_setup()
779 outb(0, adapter->io + AVM_STATUS0); in fcpcipnp_setup()
782 switch (adapter->type) { in fcpcipnp_setup()
784 retval = request_irq(adapter->irq, fcpci2_irq, IRQF_SHARED, in fcpcipnp_setup()
785 "fcpcipnp", adapter); in fcpcipnp_setup()
788 retval = request_irq(adapter->irq, fcpci_irq, IRQF_SHARED, in fcpcipnp_setup()
789 "fcpcipnp", adapter); in fcpcipnp_setup()
792 retval = request_irq(adapter->irq, fcpci_irq, 0, in fcpcipnp_setup()
793 "fcpcipnp", adapter); in fcpcipnp_setup()
799 switch (adapter->type) { in fcpcipnp_setup()
801 fcpci2_init(adapter); in fcpcipnp_setup()
802 isacsx_setup(&adapter->isac); in fcpcipnp_setup()
806 fcpci_init(adapter); in fcpcipnp_setup()
807 isac_setup(&adapter->isac); in fcpcipnp_setup()
810 val = adapter->read_hdlc_status(adapter, 0); in fcpcipnp_setup()
812 val = adapter->read_hdlc_status(adapter, 1); in fcpcipnp_setup()
815 adapter->bcs[0].mode = -1; in fcpcipnp_setup()
816 adapter->bcs[1].mode = -1; in fcpcipnp_setup()
817 modehdlc(&adapter->bcs[0], L1_MODE_NULL); in fcpcipnp_setup()
818 modehdlc(&adapter->bcs[1], L1_MODE_NULL); in fcpcipnp_setup()
823 release_region(adapter->io, 32); in fcpcipnp_setup()
828 static void __devexit fcpcipnp_release(struct fritz_adapter *adapter) in fcpcipnp_release() argument
832 outb(0, adapter->io + AVM_STATUS0); in fcpcipnp_release()
833 free_irq(adapter->irq, adapter); in fcpcipnp_release()
834 release_region(adapter->io, 32); in fcpcipnp_release()
842 struct fritz_adapter *adapter; in new_adapter() local
846 adapter = kzalloc(sizeof(struct fritz_adapter), GFP_KERNEL); in new_adapter()
847 if (!adapter) in new_adapter()
850 adapter->isac.hisax_d_if.owner = THIS_MODULE; in new_adapter()
851 adapter->isac.hisax_d_if.ifc.priv = &adapter->isac; in new_adapter()
852 adapter->isac.hisax_d_if.ifc.l2l1 = isac_d_l2l1; in new_adapter()
855 adapter->bcs[i].adapter = adapter; in new_adapter()
856 adapter->bcs[i].channel = i; in new_adapter()
857 adapter->bcs[i].b_if.ifc.priv = &adapter->bcs[i]; in new_adapter()
858 adapter->bcs[i].b_if.ifc.l2l1 = fritz_b_l2l1; in new_adapter()
862 b_if[i] = &adapter->bcs[i].b_if; in new_adapter()
864 if (hisax_register(&adapter->isac.hisax_d_if, b_if, "fcpcipnp", in new_adapter()
866 kfree(adapter); in new_adapter()
867 adapter = NULL; in new_adapter()
870 return adapter; in new_adapter()
873 static void delete_adapter(struct fritz_adapter *adapter) in delete_adapter() argument
875 hisax_unregister(&adapter->isac.hisax_d_if); in delete_adapter()
876 kfree(adapter); in delete_adapter()
882 struct fritz_adapter *adapter; in fcpci_probe() local
886 adapter = new_adapter(); in fcpci_probe()
887 if (!adapter) in fcpci_probe()
890 pci_set_drvdata(pdev, adapter); in fcpci_probe()
893 adapter->type = AVM_FRITZ_PCIV2; in fcpci_probe()
895 adapter->type = AVM_FRITZ_PCI; in fcpci_probe()
901 adapter->io = pci_resource_start(pdev, 1); in fcpci_probe()
902 adapter->irq = pdev->irq; in fcpci_probe()
904 printk(KERN_INFO "hisax_fcpcipnp: found adapter %s at %s\n", in fcpci_probe()
907 retval = fcpcipnp_setup(adapter); in fcpci_probe()
914 delete_adapter(adapter); in fcpci_probe()
922 struct fritz_adapter *adapter; in fcpnp_probe() local
929 adapter = new_adapter(); in fcpnp_probe()
930 if (!adapter) in fcpnp_probe()
933 pnp_set_drvdata(pdev, adapter); in fcpnp_probe()
935 adapter->type = AVM_FRITZ_PNP; in fcpnp_probe()
944 adapter->io = pnp_port_start(pdev, 0); in fcpnp_probe()
945 adapter->irq = pnp_irq(pdev, 0); in fcpnp_probe()
947 printk(KERN_INFO "hisax_fcpcipnp: found adapter %s at IO %#x irq %d\n", in fcpnp_probe()
948 (char *) dev_id->driver_data, adapter->io, adapter->irq); in fcpnp_probe()
950 retval = fcpcipnp_setup(adapter); in fcpnp_probe()
957 delete_adapter(adapter); in fcpnp_probe()
964 struct fritz_adapter *adapter = pnp_get_drvdata(pdev); in fcpnp_remove() local
966 if (adapter) { in fcpnp_remove()
967 fcpcipnp_release(adapter); in fcpnp_remove()
968 delete_adapter(adapter); in fcpnp_remove()
983 struct fritz_adapter *adapter = pci_get_drvdata(pdev); in fcpci_remove() local
985 fcpcipnp_release(adapter); in fcpci_remove()
987 delete_adapter(adapter); in fcpci_remove()