[Prev][Next][Index][Thread]

linux/src/drivers/block/ide-probe.c:do_probe doesn't recognize IDE drive



Hi,

I'm trying to make GNU Mach use my PCI CMD649 ATA-100 controller.  I'm 
using Joachim's patch-oskit-linux-2.2.22-ATA-alpha.diff.gz[1].  This 
patch is based on an Andre Hedrick's backport of ATA-100 drivers from 
Linux 2.4 to Linux 2.2.20[2].  Let's call this modified 2.2.20 with 
codename 'pristine'.  Comparing pristine/drivers/block/* with 
oskit/linux/src/drivers/block/* gives insignificant differences.  When 
my 2.4 Debian generic kernel is replaced by pristine with CMD649 support 
it boots fine and there are no problems.  When GNU Mach is compiled and 
running, CMD649 is recognized exactly as pristine does recognize it, but 
there is no message that `hde' is assigned to my 80G Maxtor.  (Note: My 
Maxtor doesn't run on anything less than ATA-66.)  CDROM is recognized 
as `hdc'.  This assignment of names to drives is decided in 
drivers/block/ide-probe.c:do_probe function.  Essentially this function 
tries to set the SELECT register of ide to a particular value and see if 
this value will be the same when this register is read afterwards.  If 
it is the same, then there can be drive there.  When probing hd[a,b,c,d] 
there are some values (not 255) and hdc is recognized.  When probing 
hd[efgh..] all values returned by the SELECT register are 255.  The 
first thought is that the wrong io port is referred.  But the same io 
port is used in that function in both pristine and oskit.  There is 
something else.  The linux code is same.

Now what can I do?  All the code used is the same, except that OSKit 
makes a glue for Linux drivers.  Any ideas how to continue this 
investigation?

[1] 
http://hurd.gnufans.org/bin/view/Hurd/JoachimNilssonHurdPage#OSKit_ATA_100_Support
[2] http://www.kernel.org/pub/linux/kernel/people/hedrick/ide-2.2.20/

Regards
-- 
Ognyan Kulev <ogi@fmi.uni-sofia.bg>, "\"Programmer\""