Intel driver question

Jedrzej Solecki jedrek.s at gmail.com
Wed Sep 12 01:23:36 PDT 2007


Hello,
I am reading the xfree86 video Intel driver source code and I have one
question (maybe stupid - I'm just a newbie:)).
I am asking about this piece of code (src/i810_driver.c:I810Probe()):

  /*
   * Mobile platforms may have both function 0 and 1 active, but they
   * are handled as a single entity.  To make sure that the function 1
   * entity isn't assigned to a screen, check for and claim it here
   * first.
   *
   * XXX If function 1's resources are ever needed, they'll need to be
   * added to the screen and marked active.
   */
  for (ppPci = VideoInfo; ppPci != NULL && *ppPci != NULL; ppPci++) {
     if ((*ppPci)->vendor == PCI_VENDOR_INTEL &&
         (*ppPci)->func == 1) {
        for (id = I810PciChipsets; id->PCIid != -1; id++) {
           if (id->PCIid == (*ppPci)->chipType) {
              /* Claim slot */
              if (xf86CheckPciSlot((*ppPci)->bus, (*ppPci)->device,
                                   (*ppPci)->func)) {
                 xf86ClaimPciSlot((*ppPci)->bus, (*ppPci)->device,
                                  (*ppPci)->func, drv, id->PCIid,
                                  NULL, FALSE);
              }
              break;
           }
        }
     }
  }

I have a notebook with the 945GM controller with active functions 0
and 1. I would like to ask if this code:

              /* Claim slot */
              if (xf86CheckPciSlot((*ppPci)->bus, (*ppPci)->device,
                                   (*ppPci)->func)) {
                 xf86ClaimPciSlot((*ppPci)->bus, (*ppPci)->device,
                                  (*ppPci)->func, drv, id->PCIid,
                                  NULL, FALSE);

should be executed in this case.
If yes then something is wrong because it doesn't:)
With the first function (PCI:0:2:0) this condition:
(*ppPci)->func == 1)
is not met and that's OK.
For the second funtion (1) this condition:
if (id->PCIid == (*ppPci)->chipType)
is never met because I810PciChipsets does not contain the
"(*ppPci)->chipType" value. There is only "PCI_CHIP_I945_GM
0x27A2" defined in the common.h .
But the second function's (PCI:0:2:1) chipType value is 0x27A6 which
is not defined in the common.h.
I would like to ask if this is not there on purpose and I
misunderstood this part of code or if there is something wrong:)

lspci -n:
00:02.0 0300: 8086:27a2 (rev 03)
00:02.1 0380: 8086:27a6 (rev 03)

Jedrek



More information about the xorg mailing list