You are absolutely right. FM playback run without use of ADC and processing data. Only for recording it goes into PCM stream.
BTW, I found something in I2C_Init which makes a little bit worried. Just check this out:
Code:
I2C_Init ; CODE XREF: CodecCommandSet+10p
ROM:600094FC ; sub_60027CC4+14p ...
ROM:600094FC STMFD SP!, {R4-R6,LR}
ROM:60009500 MOV R6, R0
ROM:60009504 MOV R4, R1
ROM:60009508 LDR R0, =0x60210394
ROM:6000950C BL RockSemObtain
ROM:60009510 LDR R0, =0x1801C000
ROM:60009514 LDR R0, [R0,#0x18] <------
ROM:60009518 MOV R1, #0x100000
ROM:6000951C BIC R0, R0, R1
ROM:60009520 LDR R1, =0x1801C000
ROM:60009524 STR R0, [R1,#0x18] <------
ROM:60009528 ADD R5, R1, #0x4000 <------
ROM:6000952C LDR R0, [R5,#0x28]
ROM:60009530 ORR R0, R0, #0x80
ROM:60009534 STR R0, [R5,#0x28]
ROM:60009538 MOV R0, #1
ROM:6000953C BL USDELAY
this is the beginning of this function from original FW, in SDK it is very similar but it has 3 differences.
In the SDK the same function looks like this:
Code:
ROM:60009514 LDR R0, [R0] <- means [R0, #0x00]
ROM:60009518 MOV R1, #0x100000
ROM:6000951C BIC R0, R0, R1
ROM:60009520 LDR R1, =0x1801C000
ROM:60009524 STR R0, [R1] < - means [R1, #0x00]
ROM:60009528 LDD R5, R1, =0x18a1C000 <- seems to be constant instead of variable
I tried to test it out and find out whether it has something to do with the audio, but I can't apply such a difference to the SDK. I tried to include it in __asm in ADS but with no success. Also I tried to modify BASE.RKW in Hex Editor but after that the FW didn't work at all.
Sorry for spam, my posts are huge.