[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\""