Deleted Added
full compact
3c3
< ** $Id: pcibus.c,v 1.15 1995/09/22 19:10:54 se Exp $
---
> ** $Id: pcibus.c,v 1.16 1995/10/09 21:56:24 se Exp $
150c150
< #define CONF1_ENABLE_MSK1 0x80000000ul
---
> #define CONF1_ENABLE_MSK1 0x80000001ul
184,185c184,185
< unsigned long mode1res,oldval;
< unsigned char mode2res;
---
> unsigned long mode1res,oldval1;
> unsigned char mode2res,oldval2;
187,193c187
< oldval = inl (CONF1_ADDR_PORT);
< outl (CONF1_ADDR_PORT, CONF1_ENABLE_CHK);
< outb (CONF2_ENABLE_PORT, CONF2_ENABLE_CHK);
< mode1res = inl(CONF1_ADDR_PORT);
< mode2res = inb(CONF2_ENABLE_PORT);
< outb (CONF2_ENABLE_PORT, 0);
< outl (CONF1_ADDR_PORT, oldval);
---
> oldval1 = inl (CONF1_ADDR_PORT);
196,199c190
< printf ("pcibus_setup(1):\tmode1res=0x%08lx (0x%08lx), "
< "mode2res=0x%02x (0x%02x)\n",
< mode1res,CONF1_ENABLE_CHK,
< (int)mode2res,CONF2_ENABLE_CHK);
---
> printf ("pcibus_setup(1):\tmode1 addr port (0x0cf8) is 0x%08lx\n", oldval1);
203,211d193
< ** No PCI, if neither mode1res nor mode2res could be read back
< **---------------------------------------
< */
<
< if ((mode1res != CONF1_ENABLE_CHK) && (mode2res != CONF2_ENABLE_CHK)) {
< return;
< }
<
< /*---------------------------------------
216,217c198
< pci_mechanism = 1;
< pci_maxdevice = 32;
---
> if ((oldval1 & CONF1_ENABLE) == 0) {
219,222c200,201
< outl (CONF1_ADDR_PORT, CONF1_ENABLE_CHK);
< outb (CONF1_ADDR_PORT +3, 0);
< mode1res = inl (CONF1_ADDR_PORT);
< outl (CONF1_ADDR_PORT, oldval);
---
> pci_mechanism = 1;
> pci_maxdevice = 32;
224,226c203,206
< if (bootverbose)
< printf ("pcibus_setup(2):\tmode1res=0x%08lx (0x%08lx)\n",
< mode1res, CONF1_ENABLE_CHK);
---
> outl (CONF1_ADDR_PORT, CONF1_ENABLE_CHK);
> outb (CONF1_ADDR_PORT +3, 0);
> mode1res = inl (CONF1_ADDR_PORT);
> outl (CONF1_ADDR_PORT, oldval1);
228,231c208,210
< if (mode1res) {
< if (pcibus_check())
< return;
< };
---
> if (bootverbose)
> printf ("pcibus_setup(1a):\tmode1res=0x%08lx (0x%08lx)\n",
> mode1res, CONF1_ENABLE_CHK);
233,236c212,215
< outl (CONF1_ADDR_PORT, CONF1_ENABLE_CHK1);
< outl (CONF1_DATA_PORT, 0);
< mode1res = inl(CONF1_ADDR_PORT);
< outl (CONF1_ADDR_PORT, oldval);
---
> if (mode1res) {
> if (pcibus_check())
> return;
> };
238,240c217,219
< if (bootverbose)
< printf ("pcibus_setup(3):\tmode1res=0x%08lx (0x%08lx)\n",
< mode1res, CONF1_ENABLE_CHK1);
---
> outl (CONF1_ADDR_PORT, CONF1_ENABLE_CHK1);
> mode1res = inl(CONF1_ADDR_PORT);
> outl (CONF1_ADDR_PORT, oldval1);
242,245c221,223
< if ((mode1res & CONF1_ENABLE_MSK1) == CONF1_ENABLE_RES1) {
< if (pcibus_check())
< return;
< };
---
> if (bootverbose)
> printf ("pcibus_setup(1b):\tmode1res=0x%08lx (0x%08lx)\n",
> mode1res, CONF1_ENABLE_CHK1);
246a225,230
> if ((mode1res & CONF1_ENABLE_MSK1) == CONF1_ENABLE_RES1) {
> if (pcibus_check())
> return;
> };
> }
>
252,253c236
< if (bootverbose)
< printf ("pcibus_setup(4):\tnow trying mechanism 2\n");
---
> oldval2 = inb (CONF2_ENABLE_PORT);
255,256c238,240
< pci_mechanism = 2;
< pci_maxdevice = 16;
---
> if (bootverbose) {
> printf ("pcibus_setup(2):\tmode 2 enable port (0x0cf8) is 0x%02x\n", oldval2);
> }
258,259c242
< if (pcibus_check())
< return;
---
> if ((oldval2 & 0xf0) == 0) {
260a244,263
> pci_mechanism = 2;
> pci_maxdevice = 16;
>
> outb (CONF2_ENABLE_PORT, CONF2_ENABLE_CHK);
> mode2res = inb(CONF2_ENABLE_PORT);
> outb (CONF2_ENABLE_PORT, oldval2);
>
> if (bootverbose)
> printf ("pcibus_setup(2a):\tmode2res=0x%02x (0x%02x)\n",
> mode2res, CONF2_ENABLE_CHK);
>
> if (mode2res == CONF2_ENABLE_RES) {
> if (bootverbose)
> printf ("pcibus_setup(2a):\tnow trying mechanism 2\n");
>
> if (pcibus_check())
> return;
> }
> }
>