FreeBSD/powerpc on MPC5200

Daan Vreeken Daan at vehosting.nl
Fri Aug 28 19:27:30 UTC 2009


Hi Rafal (and the list),

On Sunday 24 May 2009 21:15:44 Rafal Jaworowski wrote:
> On 2009-05-23, at 07:21, Andrew Turner wrote:
> > On Fri, 22 May 2009 12:21:01 +0200
> >
> > Rafal Jaworowski <raj at semihalf.com> wrote:
> >> On 2009-05-11, at 15:15, Peter Czanik wrote:
> >>> Rafal Jaworowski írta:
> >>>> I'd like to let people know that FreeBSD/powerpc is now able to
> >>>> boot into single user on the Freescale MPC5200 system-on-chip
> >>>> (EFIKA board). The environment is very simplistic: RAM disk based
> >>>> root fs, as
> >>>> there's no peripherals drivers besides serial console and the
> >>>> built- in
> >>>> PIC. See this log: http://people.freebsd.org/~raj/logs/efika.log
> >>>
> >>> Wow, great news! Two questions:
> >>> - are there any plans to support additional devices?
> >>
> >> We don't have immediate plans for other devices drivers, but this
> >> basic support will be merged into SVN, and it would be greatly
> >> welcome to see people help with remaining items.
> >
> > Is there a patch available? I would like to get back to working on the
> > EFIKA.
>
> Preliminary diff against 2009.04.06 HEAD is here:
> http://people.freebsd.org/~raj/patches/powerpc/efika.diff
>
> Comments or questions welcome. Some bits need to be streamlined so
> that all AIM/OF variations work together, and the code has to be
> rebased against up-to-date HEAD.

I have downloaded your diff and succesfully patched it to -HEAD (checked out 
on 2009-08-25).
Right now I'm looking into getting the USB controller working. (That would 
allow me to use network & disks all in one go.)

I have written the OHCI attachment code (inspired by a mix of Warner's atmel 
version, mpc5xxx/ic.c and uart_dev_psc.c) and gotten it to succesfully attach 
to the OHCI controller when booting the Efika board.
USB is not (yet) working correctly. Near the end of ohci_init(), the board 
seems to halt completely for about 30 seconds and after that, the OHCI 
controller sets the 'unrecoverable error' flag.

A complete dmesg dump can be found here :
http://vehosting.nl/pub_diffs/efika-daan-2009-08-28-ohci_attaching_but_failing.txt
The kernel that produced this can be downloaded here :
http://vehosting.nl/pub_diffs/efika-daan-2009-08-28-ohci_attaching_but_failing.kernel

The files I added/changed to get the attachment of the OHCI controller 
to 'work' can be found here :
http://vehosting.nl/pub_diffs/efika-daan-2009-08-28_changed_files.tar.gz
(Warning : Ugly! and full of printf's for now!)
(I could have missed one, let me know if you can't get it to work.)

The above dmesg shows a number of printf's I've added to ohci.c . My mutilated 
version can be found here :
http://vehosting.nl/pub_diffs/efika-daan-2009-08-28_ohci.c

As you can see, I printf() the interrupt status register at various points 
during ohci_init(). The 'unrecoverable error' flag gets set just a couple of 
miliseconds after the following command has been executed :

	/* And finally start it! */
	OWRITE4(sc, OHCI_CONTROL, ctl);

After that OWRITE4(), the board sits for about 30 seconds and then continues. 
I'm just guessing what's going on here, but could it be that (one of?) the 
endpoint lists isn't properly setup and that the OHCI controller keeps the 
CPU from accessing memory while it's racing through memory following 
corrupt/invalid 'next' pointers?


Regards,
-- 
Daan Vreeken
VEHosting
http://VEHosting.nl
tel: +31-(0)40-7113050 / +31-(0)6-46210825
KvK nr: 17174380


More information about the freebsd-ppc mailing list