iBook boots Linux

[ Benjamin writes:

“I’ve posted a first set of patches with a binary kernel at:

This one still contains obvious hacks and my iBook’s PMU is
shutting down the machine on me way too often, but I managed to
boot and use the LinuxPPC Q3 installer with it.

– There are big problems with the PMU. It seems to work with the
same basic protocol, but: I get occasional “ack still high” errors,
I never get the CB1 interrupt, and it began shutting the machine
down on me randomly when probing IDE or USB at boot since this
evening. (It worked with no changes from this morning to this
evening though). I plan to look into this later tonight.

Basically, I hacked to attach the ADB autopoll to the reception
of the 0x40 bit in IFR in addition to the never coming CB1. This
bit is theorically a timer, and is asserted approximately every
10ms to my testings. This one is probably the cause for the crash.
I[m wondering if the new PMU would be timing sensitive enough to
break when interrupts are disabled for too long while the PMU was
inside a transaction. If this is the case, we might have to revert
to an old-style driver doing the PMU request synchronously…

I’ve also disabled most of the keyboard/mouse probing stuff
which seemed to cause more trouble, the ADB trackpad emulation in
the new PMU doesn’t like the probing code at all.

It’s possible that the ADB interrupt (CB1) no longer exist on
this new PMU (which would be stupid) but it’s also possible that it
either requires a specific command to be enabled (it could be
disabled during the BootX shutdown process) or that it goes to one
of the new GPIO interrupts.

– The interrupt routing and OpenPIC initialisation requires
booting from BootX with the PIC already initialized by MacOS. I’ll
fix that later, this requires correct handling of the OF interrupt
tree and cannot be done when booting with BootX due to lack of
phandle in the device tree (MacOS doesn’t keep them). That’s the
reason why I use the new APPL.interrupt-vectors when available
(they are created by MacOS). The PIC is an IBM MPIC (it answers
with the openpic 8 bits vendorID/deviceID defined for the IBM
MPIC2) but apparently either lacks the timer, or the time is not
correctly initialized (base set to 0x80000000).

– The FCR management is not done yet (three FCR registers plus
still-to-be understood gpio registers).

– PCI config space management is weird but Apple’s bridge is
weird too. I really need to get rid of this hard-coded 0xf2000000
in the init code, and we should use RTAS when OF-booting.

– The IDE works, but I suggest you use noautotune for the HD.
Apparently, they have a new controller (Ultra/ATA ?) which doesn’t
like the way we do DBDMA (it works but gives you a few errors
first, then resets the disk, and goes). The CD worked fine until it
began giving me all sort of errors, but it might be my distro CD
beeing dirty.

– Ethernet is not done at all yet. There are plenty of OF
methods to be decrypted here, it looks like an ordinary tulip-like
or pcnet-like ring buffer based controller, se we mostly need to
figure out the ring entry format, the OWN bit (and error bits) and
enough registers to configure the ring, start it, and kick it.

– I’ve not tried the serial ports (which are detected) yet, but
I beleive the lack of FCR management will prevent the modem from

– Sound is not done yet (we need to figure out what I2S is and
how it works).

– Video works only with offb, I’ve not looked in details

That’s all for now,