none
Select different built-in driver for ATAPI RRS feed

  • Question

  • Hi all:

    There are more than one ATAPI built-in template drivers that comes with WEC7 CEPC platform, and when I created an image based on CEPC, the driver that loads for the IDE controller is the GenericIDE.  How do I tell the kernel to use the I82371 driver instead?  Thank you.

    Tuesday, July 29, 2014 4:14 PM

Answers

  • You can edit/comment out your platform.reg to remove all the other drivers.   But the way I see it the I82371 driver would still not be the one chosen.

    A better way is to find the #include "$(DRIVERS_DIR)\block\atapi\I82371.reg" in your platform.reg and place the actual content of the included reg file at the same place.  Then edit the registry values as this:

    [$(PCI_BUS_ROOT)\Template\I82371]
    ...
       "Class"=dword:01
       "SubClass"=dword:01
    ;   "ProgIF"=dword:80       Comment out the ProgIF value
       "VendorID"=dword:8086  ;  This is a closer match than the generic ide, so the pci enum should choose it

    • Marked as answer by MagixCode Wednesday, July 30, 2014 6:21 PM
    Wednesday, July 30, 2014 12:36 PM

All replies

  • It's the PCI enumerator that decides by loading the driver that more closely matches the Class/SubClass/ProgIf fields of the PCI configuration space of your device.

    For the GenericIDE to load, Class must be 0x1, and SubClass must be 0x1. 

    For the I82371 to load, Class must be 0x1, SubClass must be 0x1, but ProgIf MUST ALSO be 0x80.  If it doesn't then the GenericIDE is loaded.

    If you force to load the I82371 driver instead, it is almost certain that it would not work since your device advertises it does not support the required register-level programming interface for the I82371.

    Tuesday, July 29, 2014 7:03 PM
  • Thank you Mario.  The board that I use actually has the intel ICH8 chipset on it.  When I use the INTEL BSP to build the image, there is only built-in driver (I82371) included in the kernel.  That driver is provided by the BSP.  I know it from looking at the built image registry (HKLM/Drivers/BuiltIn/PIC/Template).  But when I use the generic CEPC, I got 6 of the drivers (ALI1453, VIA0571, I82371, PDC40518, PDC40718).  Using the Intel BSP which load the I82371 works but there are some problem with the system hanging occasionally; where when using the CEPC there is no problem with hanging, however, there are other issue with running the IDE in the enhancement mode.  And some other issue that i have not yet able to figure out.  I believe it has to do with the IDE driver.  That is why I want to use Intel I82371 driver instead of the GenericIDE driver.  I guess my question is: How do I tell the platform builder to only include the I82371 driver in the build?

    Thank you again.

    Tuesday, July 29, 2014 11:22 PM
  • You can edit/comment out your platform.reg to remove all the other drivers.   But the way I see it the I82371 driver would still not be the one chosen.

    A better way is to find the #include "$(DRIVERS_DIR)\block\atapi\I82371.reg" in your platform.reg and place the actual content of the included reg file at the same place.  Then edit the registry values as this:

    [$(PCI_BUS_ROOT)\Template\I82371]
    ...
       "Class"=dword:01
       "SubClass"=dword:01
    ;   "ProgIF"=dword:80       Comment out the ProgIF value
       "VendorID"=dword:8086  ;  This is a closer match than the generic ide, so the pci enum should choose it

    • Marked as answer by MagixCode Wednesday, July 30, 2014 6:21 PM
    Wednesday, July 30, 2014 12:36 PM