the key rule to reverse-engineering is to only have one thing to change at any one time in order to find out its effect. or to have the minimum number of things.
at the moment, i have a particularly difficult task with the blueangel: the sound infrastructure for soc devices is undergoing a rewrite, and unfortunately it was never entirely completed for the blueangel back for 2.6.12.
however, if sound was played from wince at the time that haret booted into linux, sound _did_ at least work. so there was a 'known' state to test things.
so i am having to go _back_ to 2.6.12 in order to investigate how to get sound properly initialised.
once i have that, then i have a known working state - a series of complex initialisations and interactions of GPIO pins to initialise two different bits of hardware (an i2c bus and a uda1380 codec), an SSP bus, an I2C bus... it's all there, but it's not quite there...