Re: adding more machines to snd-aoa
Here's a patch that actually applies against 2.6.27. --- sound/aoa/fabrics/snd-aoa-fabric-layout.c | 73 +++--- sound/aoa/soundbus/i2sbus/i2sbus-core.c | 16 -- 2 files changed, 68 insertions(+), 21 deletions(-) --- everything.orig/sound/aoa/fabrics/snd-aoa-fabric-layout.c 2008-10-24 13:35:00.0 +0200 +++ everything/sound/aoa/fabrics/snd-aoa-fabric-layout.c2008-10-24 14:42:32.0 +0200 @@ -1,16 +1,14 @@ /* - * Apple Onboard Audio driver -- layout fabric + * Apple Onboard Audio driver -- layout/machine id fabric * - * Copyright 2006 Johannes Berg <[EMAIL PROTECTED]> + * Copyright 2006, 2008 Johannes Berg <[EMAIL PROTECTED]> * * GPL v2, can be found in COPYING. * * - * This fabric module looks for sound codecs - * based on the layout-id property in the device tree. - * + * This fabric module looks for sound codecs based on the + * layout-id or device-id property in the device tree. */ - #include #include #include @@ -63,7 +61,7 @@ struct codec_connect_info { #define LAYOUT_FLAG_COMBO_LINEOUT_SPDIF(1<<0) struct layout { - unsigned int layout_id; + unsigned int layout_id, device_id; struct codec_connect_info codecs[MAX_CODECS_PER_BUS]; int flags; @@ -111,6 +109,10 @@ MODULE_ALIAS("sound-layout-96"); MODULE_ALIAS("sound-layout-98"); MODULE_ALIAS("sound-layout-100"); +MODULE_ALIAS("aoa-device-id-14"); +MODULE_ALIAS("aoa-device-id-22"); +MODULE_ALIAS("aoa-device-id-35"); + /* onyx with all but microphone connected */ static struct codec_connection onyx_connections_nomic[] = { { @@ -518,6 +520,27 @@ static struct layout layouts[] = { .connections = onyx_connections_noheadphones, }, }, + /* PowerMac3,4 */ + { .device_id = 14, + .codecs[0] = { + .name = "tas", + .connections = tas_connections_noline, + }, + }, + /* PowerMac3,6 */ + { .device_id = 22, + .codecs[0] = { + .name = "tas", + .connections = tas_connections_all, + }, + }, + /* PowerBook5,2 */ + { .device_id = 35, + .codecs[0] = { + .name = "tas", + .connections = tas_connections_all, + }, + }, {} }; @@ -526,7 +549,7 @@ static struct layout *find_layout_by_id( struct layout *l; l = layouts; - while (l->layout_id) { + while (l->codecs[0].name) { if (l->layout_id == id) return l; l++; @@ -534,6 +557,19 @@ static struct layout *find_layout_by_id( return NULL; } +static struct layout *find_layout_by_device(unsigned int id) +{ + struct layout *l; + + l = layouts; + while (l->codecs[0].name) { + if (l->device_id == id) + return l; + l++; + } + return NULL; +} + static void use_layout(struct layout *l) { int i; @@ -938,8 +974,8 @@ static struct aoa_fabric layout_fabric = static int aoa_fabric_layout_probe(struct soundbus_dev *sdev) { struct device_node *sound = NULL; - const unsigned int *layout_id; - struct layout *layout; + const unsigned int *id; + struct layout *layout = NULL; struct layout_dev *ldev = NULL; int err; @@ -952,15 +988,18 @@ static int aoa_fabric_layout_probe(struc if (sound->type && strcasecmp(sound->type, "soundchip") == 0) break; } - if (!sound) return -ENODEV; + if (!sound) + return -ENODEV; - layout_id = of_get_property(sound, "layout-id", NULL); - if (!layout_id) - goto outnodev; - printk(KERN_INFO "snd-aoa-fabric-layout: found bus with layout %d\n", - *layout_id); + id = of_get_property(sound, "layout-id", NULL); + if (id) { + layout = find_layout_by_id(*id); + } else { + id = of_get_property(sound, "device-id", NULL); + if (id) + layout = find_layout_by_device(*id); + } - layout = find_layout_by_id(*layout_id); if (!layout) { printk(KERN_ERR "snd-aoa-fabric-layout: unknown layout\n"); goto outnodev; --- everything.orig/sound/aoa/soundbus/i2sbus/i2sbus-core.c 2008-10-24 14:01:15.0 +0200 +++ everything/sound/aoa/soundbus/i2sbus/i2sbus-core.c 2008-10-24 14:42:32.0 +0200 @@ -186,13 +186,21 @@ static int i2sbus_add_dev(struct macio_d } } if (i == 1) { - const u32 *layout_id = - of_get_property(sound, "layout-id", NULL); - if (layout_id) { - layout = *layout_id; + const u32 *id = of_get_property(sound, "layout-id", NULL); + + if (id) { +
Re: adding more machines to snd-aoa
On Fri, 2008-10-24 at 14:26 +0200, Gabriel Paubert wrote: > > Right. I'll assume it has a microphone too, built-in. > > I doubt it: > - no mention found in the doc > - it seems to be output-only (#-inputs in the device tree is 0, > #-outputs is 3). Yeah, I've disabled it in the patch I sent you. > I could also send you the device tree of my PowerBook G3: it does > have the device-id property with a value of 10, but the parent > node is called davbus instead of i2s. That one definitely has > a microphone... No, I don't really care about davbus at this point. TBH, I don't care much about the other machines either, and there are lots... I'll have to find a way to map the #-inputs and #-outputs to the information otherwise I'll have to dig out all the manuals or something... > > Could you try the > > patch below, enable all snd-aoa modules and see what happens? > > > > I won't have time in the next few days, sorry. No worries, let me know when you can. johannes signature.asc Description: This is a digitally signed message part ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: adding more machines to snd-aoa
On Fri, Oct 24, 2008 at 10:40:23AM +0200, Johannes Berg wrote: > On Thu, 2008-10-23 at 18:43 +0200, Gabriel Paubert wrote: > > > > Can you tell me which devices it has, like does it have line-in, > > > microphone, headphones, ...? > > > > I'm not an audio specialist, so the symbols used to > > identify the ports look like hieroglyphs to me, but > > The documentation says that the two ports on the > > back are for headphones and external stereo loudspeakers. > > Right. I'll assume it has a microphone too, built-in. I doubt it: - no mention found in the doc - it seems to be output-only (#-inputs in the device tree is 0, #-outputs is 3). I have attached the device tree corresponding to the PCI domain. I could also send you the device tree of my PowerBook G3: it does have the device-id property with a value of 10, but the parent node is called davbus instead of i2s. That one definitely has a microphone... > Could you try the > patch below, enable all snd-aoa modules and see what happens? > I won't have time in the next few days, sorry. Regards, Gabriel pmac4,3-pci@f200.tar.gz Description: Binary data ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: adding more machines to snd-aoa
On Thu, 2008-10-23 at 18:43 +0200, Gabriel Paubert wrote: > > Can you tell me which devices it has, like does it have line-in, > > microphone, headphones, ...? > > I'm not an audio specialist, so the symbols used to > identify the ports look like hieroglyphs to me, but > The documentation says that the two ports on the > back are for headphones and external stereo loudspeakers. Right. I'll assume it has a microphone too, built-in. Could you try the patch below, enable all snd-aoa modules and see what happens? johannes --- sound/aoa/fabrics/snd-aoa-fabric-layout.c | 73 +++--- sound/aoa/soundbus/i2sbus/i2sbus-core.c | 16 -- 2 files changed, 68 insertions(+), 21 deletions(-) --- everything.orig/sound/aoa/fabrics/snd-aoa-fabric-layout.c 2008-10-24 10:39:20.0 +0200 +++ everything/sound/aoa/fabrics/snd-aoa-fabric-layout.c2008-10-24 10:40:08.0 +0200 @@ -1,16 +1,14 @@ /* - * Apple Onboard Audio driver -- layout fabric + * Apple Onboard Audio driver -- layout/machine id fabric * - * Copyright 2006 Johannes Berg <[EMAIL PROTECTED]> + * Copyright 2006, 2008 Johannes Berg <[EMAIL PROTECTED]> * * GPL v2, can be found in COPYING. * * - * This fabric module looks for sound codecs - * based on the layout-id property in the device tree. - * + * This fabric module looks for sound codecs based on the + * layout-id or device-id property in the device tree. */ - #include #include #include @@ -63,7 +61,7 @@ struct codec_connect_info { #define LAYOUT_FLAG_COMBO_LINEOUT_SPDIF(1<<0) struct layout { - unsigned int layout_id; + unsigned int layout_id, device_id; struct codec_connect_info codecs[MAX_CODECS_PER_BUS]; int flags; @@ -111,6 +109,10 @@ MODULE_ALIAS("sound-layout-96"); MODULE_ALIAS("sound-layout-98"); MODULE_ALIAS("sound-layout-100"); +MODULE_ALIAS("aoa-device-id-14"); +MODULE_ALIAS("aoa-device-id-22"); +MODULE_ALIAS("aoa-device-id-35"); + /* onyx with all but microphone connected */ static struct codec_connection onyx_connections_nomic[] = { { @@ -518,6 +520,27 @@ static struct layout layouts[] = { .connections = onyx_connections_noheadphones, }, }, + /* PowerMac3,4 */ + { .device_id = 14, + .codecs[0] = { + .name = "tas", + .connections = tas_connections_noline, + }, + }, + /* PowerMac3,6 */ + { .device_id = 22, + .codecs[0] = { + .name = "tas", + .connections = tas_connections_all, + }, + }, + /* PowerBook5,2 */ + { .device_id = 35, + .codecs[0] = { + .name = "tas", + .connections = tas_connections_all, + }, + }, {} }; @@ -526,7 +549,7 @@ static struct layout *find_layout_by_id( struct layout *l; l = layouts; - while (l->layout_id) { + while (l->codecs[0].name) { if (l->layout_id == id) return l; l++; @@ -534,6 +557,19 @@ static struct layout *find_layout_by_id( return NULL; } +static struct layout *find_layout_by_device(unsigned int id) +{ + struct layout *l; + + l = layouts; + while (l->codecs[0].name) { + if (l->device_id == id) + return l; + l++; + } + return NULL; +} + static void use_layout(struct layout *l) { int i; @@ -938,8 +974,8 @@ static struct aoa_fabric layout_fabric = static int aoa_fabric_layout_probe(struct soundbus_dev *sdev) { struct device_node *sound = NULL; - const unsigned int *layout_id; - struct layout *layout; + const unsigned int *id; + struct layout *layout = NULL; struct layout_dev *ldev = NULL; int err; @@ -952,15 +988,18 @@ static int aoa_fabric_layout_probe(struc if (sound->type && strcasecmp(sound->type, "soundchip") == 0) break; } - if (!sound) return -ENODEV; + if (!sound) + return -ENODEV; - layout_id = of_get_property(sound, "layout-id", NULL); - if (!layout_id) - goto outnodev; - printk(KERN_INFO "snd-aoa-fabric-layout: found bus with layout %d\n", - *layout_id); + id = of_get_property(sound, "layout-id", NULL); + if (id) { + layout = find_layout_by_id(*id); + } else { + id = of_get_property(sound, "device-id", NULL); + if (id) + layout = find_layout_by_device(*id); + } - layout = find_layout_by_id(*layout_id); if (!layout) { printk(KERN_ERR "snd-aoa-fabric-layout: unknown layout\n"); goto outnodev; --- everything.orig/sound/aoa/soundbus/i2sbus/i2sbus-core.c 2008-10-24 10:39:20.0 +0200 +++ everything/sound/
Re: adding more machines to snd-aoa
Am Donnerstag 23 Oktober 2008 15.44:21 schrieb Johannes Berg: Hi Johannes My wife has a PowerBook with exactly the machine you are looking for. (Running Linux pb 2.6.24-19-powerpc #1 Fri Jul 11 21:37:37 UTC 2008 ppc GNU/Linux) Therefore here the following info. cat /proc/cpuinfo processor : 0 cpu : 7447/7457, altivec supported clock : 999.999000MHz revision: 0.1 (pvr 8002 0101) bogomips: 60.02 timebase: 18432000 platform: PowerMac machine : PowerBook5,2 motherboard : PowerBook5,2 MacRISC3 Power Macintosh detected as : 287 (PowerBook G4 15") pmac flags : 001b L2 cache: 512K unified pmac-generation : NewWorld /proc/device-tree/[EMAIL PROTECTED]/[EMAIL PROTECTED]/[EMAIL PROTECTED]/[EMAIL PROTECTED]/sound/device-id find /proc/device-tree/ -wholename '*sound/device-id' | xargs hd 00 00 00 23 |...#| 0004 If you want the whole device tree, just tell me how to dump it and I will send it to you. Best regards Niklaus > Hi, > > Andreas (Cc'ed) asked whether it was possible to use snd-aoa on his > machine, a PowerMac3,6. It appears that it is fairly easy since the > machine seems to use a regular i2sbus. > > To identify it, after looking through my device-tree collections I think > that the "device-id" property of the sound node would be the best bet. > This is the value "22" for a PowerMac3,6. > > However, this node is also present on at least a PowerBook5,2 (value > 35). Can somebody who has such a machine please reply to this me? > Sjoerd, I think you have/had such a machine? I'd like you to test a few > patches once they're ready, and I need to know what connectors it has > (line-in, mic, headphones, ...). > > However, even if that works, I'll also need to know whether there are > any other machines that have such a device-id property so that making > snd-aoa-i2sbus aware of machines with device-id doesn't break those that > I don't list. Therefore, if you have access to a machine that is > newworld and has audio, please run the following commands: > > find /proc/device-tree/ -wholename '*sound/device-id' > find /proc/device-tree/ -wholename '*sound/device-id' | xargs hd > > and let me know their output. No output is fine, I'm only interested in > those machines that have this property. If you have access to a DT > collection (hi Ben :) ) I'd appreciate if you could run it on that. > > johannes -- NIklaus Giger ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: adding more machines to snd-aoa
On Thu, 2008-10-23 at 18:43 +0200, Gabriel Paubert wrote: > > Yes, on a pristine 2.6.27 kernel right now. > > > Can you tell me which devices it has, like does it have line-in, > > microphone, headphones, ...? > > I'm not an audio specialist, so the symbols used to > identify the ports look like hieroglyphs to me, but > The documentation says that the two ports on the > back are for headphones and external stereo loudspeakers. > > And the sound is definitely i2s given the OF entry: > > /proc/device-tree/[EMAIL PROTECTED]/[EMAIL PROTECTED]/[EMAIL > PROTECTED]/[EMAIL PROTECTED]/sound/device-id Best if you send a device-tree dump to Johannes. Cheers, Ben. ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: adding more machines to snd-aoa
On Thu, Oct 23, 2008 at 05:41:02PM +0200, Johannes Berg wrote: > On Thu, 2008-10-23 at 17:35 +0200, Gabriel Paubert wrote: > > > On my almost 8 years old PowerMac (PowerMac3,4 accorfing to OF): > > > > $ find /proc/device-tree/ -wholename '*sound/device-id' | xargs hd > > 00 00 00 0e || > > 0004 > > > > or 14 in decimal. > > Cool. This thing uses snd-powermac, right? Yes, on a pristine 2.6.27 kernel right now. > Can you tell me which devices it has, like does it have line-in, > microphone, headphones, ...? I'm not an audio specialist, so the symbols used to identify the ports look like hieroglyphs to me, but The documentation says that the two ports on the back are for headphones and external stereo loudspeakers. And the sound is definitely i2s given the OF entry: /proc/device-tree/[EMAIL PROTECTED]/[EMAIL PROTECTED]/[EMAIL PROTECTED]/[EMAIL PROTECTED]/sound/device-id Regards, Gabriel ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: adding more machines to snd-aoa
On Thu, 2008-10-23 at 17:35 +0200, Gabriel Paubert wrote: > On my almost 8 years old PowerMac (PowerMac3,4 accorfing to OF): > > $ find /proc/device-tree/ -wholename '*sound/device-id' | xargs hd > 00 00 00 0e || > 0004 > > or 14 in decimal. Cool. This thing uses snd-powermac, right? Can you tell me which devices it has, like does it have line-in, microphone, headphones, ...? johannes signature.asc Description: This is a digitally signed message part ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: adding more machines to snd-aoa
On Thu, Oct 23, 2008 at 03:44:21PM +0200, Johannes Berg wrote: > Hi, > > Andreas (Cc'ed) asked whether it was possible to use snd-aoa on his > machine, a PowerMac3,6. It appears that it is fairly easy since the > machine seems to use a regular i2sbus. > > To identify it, after looking through my device-tree collections I think > that the "device-id" property of the sound node would be the best bet. > This is the value "22" for a PowerMac3,6. > > However, this node is also present on at least a PowerBook5,2 (value > 35). Can somebody who has such a machine please reply to this me? > Sjoerd, I think you have/had such a machine? I'd like you to test a few > patches once they're ready, and I need to know what connectors it has > (line-in, mic, headphones, ...). > > However, even if that works, I'll also need to know whether there are > any other machines that have such a device-id property so that making > snd-aoa-i2sbus aware of machines with device-id doesn't break those that > I don't list. Therefore, if you have access to a machine that is > newworld and has audio, please run the following commands: > > find /proc/device-tree/ -wholename '*sound/device-id' > find /proc/device-tree/ -wholename '*sound/device-id' | xargs hd > On my almost 8 years old PowerMac (PowerMac3,4 accorfing to OF): $ find /proc/device-tree/ -wholename '*sound/device-id' | xargs hd 00 00 00 0e || 0004 or 14 in decimal. Regards, Gabriel ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
adding more machines to snd-aoa
Hi, Andreas (Cc'ed) asked whether it was possible to use snd-aoa on his machine, a PowerMac3,6. It appears that it is fairly easy since the machine seems to use a regular i2sbus. To identify it, after looking through my device-tree collections I think that the "device-id" property of the sound node would be the best bet. This is the value "22" for a PowerMac3,6. However, this node is also present on at least a PowerBook5,2 (value 35). Can somebody who has such a machine please reply to this me? Sjoerd, I think you have/had such a machine? I'd like you to test a few patches once they're ready, and I need to know what connectors it has (line-in, mic, headphones, ...). However, even if that works, I'll also need to know whether there are any other machines that have such a device-id property so that making snd-aoa-i2sbus aware of machines with device-id doesn't break those that I don't list. Therefore, if you have access to a machine that is newworld and has audio, please run the following commands: find /proc/device-tree/ -wholename '*sound/device-id' find /proc/device-tree/ -wholename '*sound/device-id' | xargs hd and let me know their output. No output is fine, I'm only interested in those machines that have this property. If you have access to a DT collection (hi Ben :) ) I'd appreciate if you could run it on that. johannes signature.asc Description: This is a digitally signed message part ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev