2005-10-28 21:55:10

by Parag Warudkar

[permalink] [raw]
Subject: PPC32 - No IDE/ATA devices on new PowerBook

I can't seem to get the kernel to detect the IDE CDROM and Hard-disk
at all on the latest (5,8) PowerBook revision - no IDE controller is
reported in the dmesg. I have tried 2.6.8 from debian as well as
2.6.12x from Ubuntu and Gentoo.

Both the HDD and CDROM drives look fairly routine stuff to me
although I am not sure what kind of IDE controller is inside..

Is there any point in trying newer kernels?

Parag


2005-10-28 22:56:18

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: PPC32 - No IDE/ATA devices on new PowerBook

On Fri, 2005-10-28 at 17:55 -0400, Parag Warudkar wrote:
> I can't seem to get the kernel to detect the IDE CDROM and Hard-disk
> at all on the latest (5,8) PowerBook revision - no IDE controller is
> reported in the dmesg. I have tried 2.6.8 from debian as well as
> 2.6.12x from Ubuntu and Gentoo.
>
> Both the HDD and CDROM drives look fairly routine stuff to me
> although I am not sure what kind of IDE controller is inside..
>
> Is there any point in trying newer kernels?

Not yet, I haven't had the machine I ordered yet so I haven't yet had a
chance to investigate/fix the problem. I suppose it's mostly a matter of
adding a new PCI ID to drivers/ide/ppc/pmac.c though.

Ben.


2005-10-28 23:24:16

by Parag Warudkar

[permalink] [raw]
Subject: Re: PPC32 - No IDE/ATA devices on new PowerBook


On Oct 28, 2005, at 6:56 PM, Benjamin Herrenschmidt wrote:

>
> Not yet, I haven't had the machine I ordered yet so I haven't yet
> had a
> chance to investigate/fix the problem. I suppose it's mostly a
> matter of
> adding a new PCI ID to drivers/ide/ppc/pmac.c though.
>
> Ben.

Thanks. I tried 2.4 kernel and to my surprise it detected the IDE/ATA
controller! (Although it balked out with errors - read past the end
of the device or something...).

Parag

2005-10-29 00:02:52

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: PPC32 - No IDE/ATA devices on new PowerBook

On Fri, 2005-10-28 at 19:24 -0400, Parag Warudkar wrote:

> Thanks. I tried 2.4 kernel and to my surprise it detected the IDE/ATA
> controller! (Although it balked out with errors - read past the end
> of the device or something...).

2.4 used the device-tree exclusively for probing IDE on pmac, while 2.6
uses PCI probing when it's a PCI device. The device-tree method tend to
work even when we don't have the PCI ID, but it's dangerous: the driver
doesn't know the details of the timings for this chip revision etc...
and thus may well do crap. I wouldn't try too much with 2.4.

Can you try this patch ? If you don't have a way to build a patched
kernel, you may find somebody on linuxppc-dev list who can do it for
you.

Index: linux-work/drivers/ide/ppc/pmac.c
===================================================================
--- linux-work.orig/drivers/ide/ppc/pmac.c 2005-09-22 14:06:32.000000000 +1000
+++ linux-work/drivers/ide/ppc/pmac.c 2005-10-29 10:00:03.000000000 +1000
@@ -1664,11 +1664,16 @@
};

static struct pci_device_id pmac_ide_pci_match[] = {
- { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_UNI_N_ATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
- { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_IPID_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
- { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_K2_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_UNI_N_ATA,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_IPID_ATA100,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_K2_ATA100,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_SH_ATA,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_IPIDD2_ATA,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
};

static struct pci_driver pmac_ide_pci_driver = {
Index: linux-work/include/linux/pci_ids.h
===================================================================
--- linux-work.orig/include/linux/pci_ids.h 2005-10-06 09:59:14.000000000 +1000
+++ linux-work/include/linux/pci_ids.h 2005-10-29 09:59:06.000000000 +1000
@@ -912,6 +912,7 @@
#define PCI_DEVICE_ID_APPLE_SH_FW 0x0052
#define PCI_DEVICE_ID_APPLE_U3L_AGP 0x0058
#define PCI_DEVICE_ID_APPLE_U3H_AGP 0x0059
+#define PCI_DEVICE_ID_APPLE_IPIDD2_ATA 0x0069
#define PCI_DEVICE_ID_APPLE_TIGON3 0x1645

#define PCI_VENDOR_ID_YAMAHA 0x1073