Hi,
There are reports on the list that snapper(4) doesn't work
on late
macppc models (2005, 2006, etc.).
It appears that these models have a somewhat different
OpenFirmware
layout that confuses our current drivers. In fact, Mac OS X
appears to
use two(!) different I2S/TAS3004 drivers -- one for the
models using
the "legacy" layout (AppleLegacyAudio) and one for
the newer models
(AppleOnboardAudio).
Some patches have been posted on the list to account for
some of these
differentes, but it appears that some issues were not still
detected
correctly (basically some GPIO controls such as
"hw-reset").
Attached to this mail is a patch to snapper.c (and a minimal
patch to
deq.c) that tries to take care of these differences -- based
on
OpenFirmware device properties of affected models that have
been
poested on the list.
If you have a model with snapper/TAS3004 audio which doesn't
work with
the current driver, please try the patch and test if it
works and
report here the results. I can only test on models with
"legacy"
layouts and there are no regressions on these models.
Basically, these are the changes:
o Try to find 'platform-xxx' properties in the soundbus
node. These
properties point to the nodes of the GPIO controls which are
needed
(hw-reset, headphone-detect, amp-mute, etc.).
If such properties are not found, navigate through the GPIO
nodes --
like the current code does.
o Models with "legacy" layout have 'AAPL,address'
properties with the
absolute address of the GPIO control. Newer models have
"reg" which is
a relative address.
o Some models use 'hw-reset' instead of 'audio-hw-reset',
so look for both.
o Make sure I2S0 is enabled. It should already be, but it's
good to
check just to be on the safe side. Mac OS X code also does
this.
o Request the required clock sources for I2S0 -- the same
as above.
Thanks,
-Marco
|