Added io parameter for HFC-PCI based cards. Needed only with multiple cards

when initialisation/selection order needs to be set.
This commit is contained in:
Werner Cornelius 1999-09-07 06:18:55 +00:00
parent f612684f87
commit 10c992afc0
2 changed files with 33 additions and 1 deletions

View File

@ -20,6 +20,21 @@ This enables the echo mode. If Hex logging is activated the isdnctrlx
devices show a output with a line beginning of HEX: for the providers
exchange and ECHO: for isdn devices sending to the provider.
If more than one HFC-PCI cards are installed, a specific card may be selected
at the hisax module load command line. Supply the load command with the desired
IO-address of the desired card.
Example:
There tree cards installed in your machine at IO-base addresses 0xd000, 0xd400
and 0xdc00
If you want to use the card at 0xd400 standalone you should supply the insmod
or depmod with type=35 io=0xd400.
If you want to use all three cards, but the order needs to be at 0xdc00,0xd400,
0xd000 you may give the parameters type=35,35,35 io=0xdc00,0xd400,0xd00
Then the desired card will be the initialised in the desired order.
If the io parameter is used the io addresses of all used cards should be
supplied else the parameter is assumed 0 and a auto search for a free card is
invoked which may not give the wanted result.
Comments and reports to werner@isdn4linux.de or werner@titro.de .

View File

@ -23,6 +23,9 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.19 1999/09/04 06:20:06 keil
* Changes from kernel set_current_state()
*
* Revision 1.18 1999/08/29 17:05:44 werner
* corrected tx_lo line setup. Datasheet is not correct.
*
@ -1636,11 +1639,17 @@ __initfunc(int
tmp_hfcpci = pci_find_device(id_list[i].vendor_id,
id_list[i].device_id,
dev_hfcpci);
if (tmp_hfcpci) break;
i++;
if (tmp_hfcpci) {
if ((card->para[0]) && (card->para[0] != (get_pcibase(tmp_hfcpci,0) & PCI_BASE_ADDRESS_IO_MASK)))
continue;
else
break;
}
}
if (tmp_hfcpci) {
i--;
dev_hfcpci = tmp_hfcpci; /* old device */
cs->hw.hfcpci.pci_bus = dev_hfcpci->bus->number;
cs->hw.hfcpci.pci_device_fn = dev_hfcpci->devfn;
@ -1670,6 +1679,14 @@ __initfunc(int
if (!id_list[i].vendor_id)
continue;
if (card->para[0]) {
pcibios_read_config_dword(cs->hw.hfcpci.pci_bus,
cs->hw.hfcpci.pci_device_fn, PCI_BASE_ADDRESS_0,
(void *) &cs->hw.hfcpci.pci_io);
if ((cs->hw.hfcpci.pci_io & PCI_BASE_ADDRESS_IO_MASK) != card->para[0])
continue;
}
pcibios_read_config_byte(cs->hw.hfcpci.pci_bus, cs->hw.hfcpci.pci_device_fn,
PCI_INTERRUPT_LINE, &irq);
cs->irq = irq;