diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2005-04-16 15:24:31 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 15:24:31 -0700 |
commit | b75550e1bc6b3b2c80b628e68628fca015634071 (patch) | |
tree | c5de5583d713c4cd682cb253fd74bd031d810f9c /sound/ppc/pmac.c | |
parent | 16b817579fb61050f1abcc0e81089974328a9c27 (diff) | |
download | linux-b75550e1bc6b3b2c80b628e68628fca015634071.tar.gz linux-b75550e1bc6b3b2c80b628e68628fca015634071.tar.bz2 linux-b75550e1bc6b3b2c80b628e68628fca015634071.zip |
[PATCH] pmac: sound support for latest laptops
This patch hacks the current Alsa snd-powermac driver to add support for
recent machine models with the tas3004 chip, that is basically new laptop
models. The Mac Mini is _NOT_ yet supported by this patch (soon soon ...).
The G5s (iMac or Desktop) will need the rewritten sound driver on which
I'm working on (I _might_ get a hack for analog only on some G5s on the
current driver, but no promise).
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'sound/ppc/pmac.c')
-rw-r--r-- | sound/ppc/pmac.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/sound/ppc/pmac.c b/sound/ppc/pmac.c index 6c4ed90f490e..f9a9601769aa 100644 --- a/sound/ppc/pmac.c +++ b/sound/ppc/pmac.c @@ -881,6 +881,7 @@ static int __init snd_pmac_detect(pmac_t *chip) { struct device_node *sound; unsigned int *prop, l; + u32 layout_id = 0; if (_machine != _MACH_Pmac) return -ENODEV; @@ -929,6 +930,9 @@ static int __init snd_pmac_detect(pmac_t *chip) prop = (unsigned int *) get_property(sound, "sub-frame", NULL); if (prop && *prop < 16) chip->subframe = *prop; + prop = (unsigned int *) get_property(sound, "layout-id", NULL); + if (prop) + layout_id = *prop; /* This should be verified on older screamers */ if (device_is_compatible(sound, "screamer")) { chip->model = PMAC_SCREAMER; @@ -961,12 +965,22 @@ static int __init snd_pmac_detect(pmac_t *chip) chip->freq_table = tumbler_freqs; chip->control_mask = MASK_IEPC | 0x11; /* disable IEE */ } - if (device_is_compatible(sound, "AOAKeylargo")) { - /* Seems to support the stock AWACS frequencies, but has - a snapper mixer */ - chip->model = PMAC_SNAPPER; - // chip->can_byte_swap = 0; /* FIXME: check this */ - chip->control_mask = MASK_IEPC | 0x11; /* disable IEE */ + if (device_is_compatible(sound, "AOAKeylargo") || + device_is_compatible(sound, "AOAbase")) { + /* For now, only support very basic TAS3004 based machines with + * single frequency until proper i2s control is implemented + */ + switch(layout_id) { + case 0x48: + case 0x46: + case 0x33: + case 0x29: + chip->num_freqs = ARRAY_SIZE(tumbler_freqs); + chip->model = PMAC_SNAPPER; + chip->can_byte_swap = 0; /* FIXME: check this */ + chip->control_mask = MASK_IEPC | 0x11; /* disable IEE */ + break; + } } prop = (unsigned int *)get_property(sound, "device-id", NULL); if (prop) |