-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Manish Lachwani wrote:
| I have noticed something with the IDE drivers especially with the Seagate
| drives. The promise driver (eg 20277) detects the UDMA 5 mode correctly.
|
| This is what it does:
|
| byte ultra_66 = ((id->dma_ultra & 0x0010) ||
| (id->dma_ultra & 0x0008)) ? 1 : 0;
| byte ultra_100 = ((id->dma_ultra & 0x0020) ||
| (ultra_66)) ? 1 : 0;
| byte ultra_133 = ((id->dma_ultra & 0x0040) ||
| (ultra_100)) ? 1 : 0;
|
| Now, lets take a PIIX driver
|
| int ultra100 = ((dev->device ==
| PCI_DEVICE_ID_INTEL_82801BA_8) ||
| (dev->device ==
| PCI_DEVICE_ID_INTEL_82801BA_9) ||
| (dev->device ==
| PCI_DEVICE_ID_INTEL_82801CA_10)) ? 1 : 0;
| int ultra66 = ((ultra100) ||
| (dev->device ==
| PCI_DEVICE_ID_INTEL_82801AA_1) ||
| (dev->device ==
| PCI_DEVICE_ID_INTEL_82372FB_1)) ? 1 : 0;
|
| if ((id->dma_ultra & 0x0020) && (udma_66) && (ultra100)) {
| speed = XFER_UDMA_5;
|
| where ultra100 and ultra66 is not or'ed with 0x0010 and 0x0008. The final
| check is only with 0x0020. I have found this issues with other IDE drivers
| like amd74xx.c, serverworks.c etc. SO, make the above changes in the
drivers
| and u should see UDMA 5 on those seagate drives on startup ...
|
| Thanks
| Manish
Okay, now, i've been looking in drivers/ide/amd74xx.c
and
config_chipset_for_dma(ide_drive_t)
has:
byte udma_66 = eighty_ninty_three(drive);
byte udma_100 = ((dev->device==PCI_DEVICE_ID_AMD_VIPER_7411)||
(dev->device==PCI_DEVICE_ID_AMD_VIPER_7441)) ? 1 : 0;
and.. also.. like you've said:
if ((id->dma_ultra & 0x0020) && (udma_66) && (udma_100)) {
~ speed = XFER_UDMA_5;
now.. my lame question is:
should I put:
byte udma66 = (eighty_ninty_three(drive) & 0x0010 ||
eighty_ninty_three(drive) & 0x0008) ? 1 : 0;
or eighty_ninty_three (ide_drive_t *drive), or even some other thing be
the one that should be changed for a proper fix. (if this is really the
way to solve it)
One other thing...
in config_chipset_for_dma() right after the declarations we have:
if(udma_100)
udma_66 = eighty_ninty_three(drive);
is this really needed, since udma_66 is declared and initialized with
that same value?
Sorry if this are lame questions, just trying to learn... :-\
Thanks
Miguel Sousa Filipe
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQE92+w8YBjDU2rJcrARAolPAJ4xi1LIpGcNUTUlGY+Qg9ZlzABxSQCcDBzl
Q/y4q7IiE0O5HllvTD877ZU=
=RBMC
-----END PGP SIGNATURE-----
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Sat Nov 23 2002 - 22:00:33 EST