hi freaker. sorry for not responding earlier. was quite busy.
dumps: that's what I wanted to see. thanks. was wondering how this looks like on a board with smaller number of outputs.
so, you'll need to create/modify dummy kext (with plist file in it only). Property List Editor is a great help to this. if you do not already have it, you can get it by installing Xcode developer tools (can be installed from SL retail DVD).
another useful tool is Kext Wizard by janek202 (
here) - you can install kext much faster then running whole MultiBeast System perms and cache rebuild. great time saver when you come to tweaking your kext, reinstalling and restarting to see the results.
you will also need:
- AppleHDA from 10.6.2 (AppleHDA rollback) installed in /S/L/E. alternative is to patch the current one, but then 10.6.8 requires different place for pin config verbs and pathmaps, so it's better to stick to rollback for now
- HDAEnabler888b.kext in /S/L/E. alternative is DSDT patching
- some existing dummy sound kext to start. this one (after your edits) will go to /E/E. the easier thing for you is to take rafirafi's from
here
oh … there is VerbCheatSheet in rafirafi's sources - quite useful.
now, you need to edit the kext. copy kext to desktop or some working dir and open it's Info.plist in Property Editor (right click on kext/show package contents).
1. put your pin config verbs in HDA Hardware Config Resource
2. define pathmap in HDA Platform Resource/PathMaps
3. change layout in HDA Platform Resource/Layouts if needed
more details ...
1. put your pin config verbs in HDA Hardware Config Resource
edits inside IOKitPersonalities/HDA Hardware Config Resource/HDAConfigDefault/Item 0
HDAHardwareConfig.png
you got pin config verbs from verbit (second table from it's output). remove ATAPI (17) and RCA (29) and you will be with green line out, rear and front mic, blue line in, headphones and SPDIF out. you have 4 verbs per input/output pin. put them all in one line inside < and > and copy that to ConfigData. check existing values to see how it looks.
CodecID - should stay the same for you. it's 283904135 decimal = 0x 10EC 0887 hex = vendor and codec id (4th line in codec dump)
LayoutID - should stay the same. 887 dec = 0x00000377 hex = 0x77 0x03 0x00 0x00 hex little endian = value of the layout-id that is injected by HDAEnabler888b (or by DSDT) to the audio device in IORegistry. used by AppleHDA to find data in your kext and load it.
2. define pathmap in HDA Platform Resource/PathMaps
edits inside IOKitPersonalities/HDA Platform Resource/PathMaps/Item 0/PathMap
HDAPlatform_PathMap.png
but before edits you need to define paths inside codec for each input and output node (Making connections in Master Chief's post
http://www.insanelymac.com/forum/index. ... pic=149128). looking at codec graph is very helpful here.
sound output works something like this: the driver sends sound stream to codec to Audio Output node (blue ellipse in graph), then sound needs to travel through allowed paths via other nodes (e.g. Mixer) and get to the Pin Complex node/output jack (green box in graph) where it leaves audio device.
sound input comes to Pin Complex node (green box) and travels (via other nodes) to Audio Input node (red ellipse) where it can be picked by the driver.
for example sound can travel from Audio Output node 2 -> Audio Mixer (gray hexagon) node 12 -> Pin Complex node 20 which is for example Rear green line out. in this case pathmap for green line out node 20 will be: 2, 12, 20.
your job here is to define those paths for all inputs and outputs you need. note: you can not use one node in more then one path. or, you can, but only if those paths are in the same group for auto-switch.
example how to add pathmaps:
PathMap.png
about Amp section: for me it needs to be added to Audio Output node (2 in this case), but most of 887 users needs it on Mixer node (12). you'll have to check which one works for you (you can just copy paste the whole Amp part between nodes).
3. change layout in HDA Platform Resource/Layouts if needed
edits inside IOKitPersonalities/HDA Platform Resource/Layouts/Item 0/
LayoutID - leave as is
PathMapRef - you can leave it as is for the start.
i would suggest you try to make kext with just one path for the green line out and try it, for the start. remove all other items inside PathMap except one for green line (2, 12, 20), save it, install it, restart and see if you can get output from it.
check for sound assertions after reboot:
> grep assert /var/log/kernel.log
if it works, try to make green line as Internal Speakers and not Line out, then add headphones and mic.
about Internal Speakers:
- change node 20 verbs to 01471e11 01471f90 (leave first two verbs as is)
- add IntSpeaker inside IOKitPersonalities/HDA Platform Resource/Layouts/Item 0/PathMapRef/Item 0/Outputs
(check my version of the kext from rafirafi's thread)
about mic: I had problems with them. only rear one works for me. check VerbCheatSheet from rafirafi's sources. it seems you can only have one of them working properly.
if you have HD front panel then you can have headphone detection and you can define auto-switching between Internal Speakers and headphones. check my version of the kext. we can discuss it more when you come to this.
that's all for the start. wish you good luck.