Subject: Re: RFC: MPC5200 PSC AC97 driver

From: Juergen Beisert <[email-masked]>
Date: Fri, 18 Apr 2008 18:02:34 +0200

On Friday 18 April 2008 17:43, Peter Czanik wrote:
> Hello,
>
> Juergen Beisert írta:
> > Hi,
> >
> > if someone is interested: Here the full patch to get sound support for
> > MPC5200b and a current 2.6.25 kernel.
>
> First of all, thanks for fixing the driver. I just tested it on the
> EFIKA, it (almost) works. In its current state loading the kernel module
> results in a segfault and oops. The fix is to add a missing line to the
> device-tree. The forth version of the EFIKA fix works fine (taken from
> http://www.powerdeveloper.org/platforms/efika/devicetree ):
>
> efika:~ # cat /mnt/sound.forth
> \ FORTH
>
> s" /builtin/sound" find-device
>         \ Audio is on PSC2, just for informational purposes
>         1 encode-int s" cell-index" property
> device-end
> efika:~ #
>
> But trying to fix it up from prom_init.c does not seem to work, the
> missing 'cell-index' property does not show up. Please let me know, how
> to add it properly. Here is what I tried:
>
> factory:/usr/src/linux-2.6.25 # diff -u
> arch/powerpc/kernel/prom_init.c.orig arch/powerpc/kernel/prom_init.c
> --- arch/powerpc/kernel/prom_init.c.orig        2008-04-18
> 13:55:07.000000000 +0200
> +++ arch/powerpc/kernel/prom_init.c     2008-04-18 16:26:51.000000000 +0200
> @@ -2212,6 +2212,7 @@
>
>  static void __init fixup_device_tree_efika(void)
>  {
> +       int sound_ci = 1;
>         int sound_irq[3] = { 2, 2, 0 };
>         int bcomm_irq[3*16] = { 3,0,0, 3,1,0, 3,2,0, 3,3,0,
>                                 3,4,0, 3,5,0, 3,6,0, 3,7,0,
> @@ -2257,6 +2258,8 @@
>                 rv = prom_getprop(node, "interrupts", prop, sizeof(prop));
>                 if (rv == PROM_ERROR) {
>                         prom_printf("Adding sound interrupts property\n");
> +                        prom_setprop(node, "/builtin/sound", "cell-index",
> +                                     &sound_ci, sizeof(int));
>                         prom_setprop(node, "/builtin/sound", "interrupts",
>                                      sound_irq, sizeof(sound_irq));
>                 }
> factory:/usr/src/linux-2.6.25 #
>
> Bye,
> CzP

I'm not sure if "cell-index" is a correct property. I copied it from the uart 
driver, because this driver needs something to distinguish between PSC1 and 
PSC2. Maybe there is a better and correct oftree solution? Any oftree expert 
here?

Juergen

-- 
Dipl.-Ing. Juergen Beisert | http://www.pengutronix.de
 Pengutronix - Linux Solutions for Science and Industry
    Handelsregister: Amtsgericht Hildesheim, HRA 2686
         Vertretung Sued/Muenchen, Germany
   Phone: +49-8766-939 228 |  Fax: +49-5121-206917-9