Hi All:
We used the TLV320DAC3100 as the sound codec & PA : speaker out(mono, 4R, 1W) and Line out (stereo, 16R), the below is the circuit schematic:
The issue:
Sometimes the speaker has no sound output when the set (OS: android 4.4.2) has been power up and first time to play sound. Then if you make some control (Vol+, Vol-....), the speaker will output sound normally. and the line out was output normally all the time
The Details:
there has another issue before this: sometimes and some set's speaker no any sound output all the time except reset power of the set, we found when this issue occurred , the register page 0, register 37=0xAA, it should be 0xBA, so we make the countermeasure: detect this register before play sound, if 0x37=0xAA , the software will write again till 0x37=0xBA.
With this countermeasure, the above issue was occurred, because at the moment before play sound first time, the value of 0x37 is 0xBA, while as the value of 0x37 is correct , so the software will not write again, then I2S start works, the value of 0x37 will changed to 0xAA suddenly and result in the Class D power down and on sound output.
we don't know what will caused the register value be changed, because we don't do anything......
the below is register map, pls help us check it, thanks a lot !
Register:
<4>[ 26.291855] addr 0x00: write:0x00 ,read:0x00
<4>[ 26.292973] addr 0x01: write:0x01 ,read:0x00
<4>[ 26.294078] addr 0x04: write:0x07 ,read:0x07
<4>[ 26.295192] addr 0x06: write:0x07 ,read:0x07
<4>[ 26.296389] addr 0x07: write:0x00 ,read:0x00
<4>[ 26.297054] addr 0x08: write:0x00 ,read:0x00
<4>[ 26.298137] addr 0x05: write:0x94 ,read:0x94
<4>[ 26.299296] addr 0x0b: write:0x82 ,read:0x82
<4>[ 26.300440] addr 0x0c: write:0x87 ,read:0x87
<4>[ 26.301620] addr 0x0d: write:0x00 ,read:0x00
<4>[ 26.302285] addr 0x0e: write:0x80 ,read:0x80
<4>[ 26.303406] addr 0x1b: write:0x00 ,read:0x00
<4>[ 26.304520] addr 0x3c: write:0x02 ,read:0x02
<4>[ 26.305640] addr 0x00: write:0x00 ,read:0x00
<4>[ 26.306793] addr 0x74: write:0x00 ,read:0x00
<4>[ 26.307920] addr 0x00: write:0x01 ,read:0x01
<4>[ 26.309037] addr 0x1f: write:0x14 ,read:0x14
<4>[ 26.310178] addr 0x21: write:0x4e ,read:0x4e
<4>[ 26.311299] addr 0x23: write:0x44 ,read:0x44
<4>[ 26.312516] addr 0x28: write:0x0e ,read:0x0e
<4>[ 26.313206] addr 0x29: write:0x0e ,read:0x0e
<4>[ 26.314316] addr 0x2a: write:0x0c ,read:0x0c
<4>[ 26.315455] addr 0x1f: write:0xd6 ,read:0xd6
<4>[ 26.316840] addr 0x20: write:0x86 ,read:0x86
<4>[ 26.317949] addr 0x24: write:0x80 ,read:0x80
<4>[ 26.319053] addr 0x25: write:0x80 ,read:0x80
<4>[ 26.320192] addr 0x26: write:0x8e ,read:0x8e
<4>[ 26.320205] sleep 50ms
<4>[ 26.361222] addr 0x00: write:0x00 ,read:0x00
<4>[ 26.362364] addr 0x3f: write:0xfc ,read:0xfc
<4>[ 26.363595] addr 0x41: write:0x0a ,read:0x0a
<4>[ 26.364379] addr 0x42: write:0x0a ,read:0x0a
<4>[ 26.366059] addr 0x40: write:0x0e ,read:0x0e
<4>[ 26.367206] addr 0x00: write:0x01 ,read:0x01
<4>[ 26.370554] addr 0x23: write:0x44 ,read:0x44
<4>[ 26.371978] addr 0x00: write:0x00 ,read:0x00
<4>[ 26.373168] addr 0x40: write:0x0e ,read:0x0e
<4>[ 26.374311] addr 0x00: write:0x01 ,read:0x01
<4>[ 26.375540] addr 0x28: write:0x02 ,read:0x02
<4>[ 26.376405] addr 0x29: write:0x02 ,read:0x02
<4>[ 26.377581] addr 0x2a: write:0x08 ,read:0x08
<4>[ 26.378746] addr 0x20: write:0x06 ,read:0x06
<4>[ 26.379874] addr 0x00: write:0x00 ,read:0x00
<4>[ 26.381067] addr 0x44: write:0x61 ,read:0x61
<4>[ 26.382361] addr 0x45: write:0x20 ,read:0x20
<4>[ 26.384368] addr 0x46: write:0x6b ,read:0x6b
<4>[ 26.385563] addr 0x00: write:0x08 ,read:0x08
<4>[ 26.386725] addr 0x01: write:0x05 ,read:0x05
<4>[ 26.388088] addr 0x01: write:0x05 ,read:0x05
<4>[ 26.390239] addr 0x02: write:0x7f ,read:0x7f
<4>[ 26.391027] addr 0x03: write:0x2d ,read:0x2d
<4>[ 26.391790] addr 0x04: write:0x82 ,read:0x82
<4>[ 26.392554] addr 0x05: write:0x39 ,read:0x39
<4>[ 26.393296] addr 0x06: write:0x7c ,read:0x7c
<4>[ 26.394034] addr 0x07: write:0x69 ,read:0x69
<4>[ 26.394779] addr 0x08: write:0x7d ,read:0x7d
<4>[ 26.395522] addr 0x09: write:0xc4 ,read:0xc4
<4>[ 26.396282] addr 0x0a: write:0x84 ,read:0x84
<4>[ 26.397029] addr 0x0b: write:0x63 ,read:0x63
<4>[ 26.399226] addr 0x0c: write:0x6f ,read:0x6f
<4>[ 26.399987] addr 0x0d: write:0xee ,read:0xee
<4>[ 26.400841] addr 0x0e: write:0xa3 ,read:0xa3
<4>[ 26.401618] addr 0x0f: write:0x70 ,read:0x70
<4>[ 26.402345] addr 0x10: write:0x5e ,read:0x5e
<4>[ 26.403084] addr 0x11: write:0x42 ,read:0x42
<4>[ 26.403814] addr 0x12: write:0x5c ,read:0x5c
<4>[ 26.404520] addr 0x13: write:0x90 ,read:0x90
<4>[ 26.405220] addr 0x14: write:0xb1 ,read:0xb1
<4>[ 26.405964] addr 0x15: write:0xce ,read:0xce
<4>[ 26.407965] addr 0x16: write:0x77 ,read:0x77
<4>[ 26.408678] addr 0x17: write:0x3f ,read:0x3f
<4>[ 26.409379] addr 0x18: write:0xc1 ,read:0xc1
<4>[ 26.410117] addr 0x19: write:0x54 ,read:0x54
<4>[ 26.410832] addr 0x1a: write:0x59 ,read:0x59
<4>[ 26.411538] addr 0x1b: write:0x53 ,read:0x53
<4>[ 26.412259] addr 0x1c: write:0x3e ,read:0x3e
<4>[ 26.412953] addr 0x1d: write:0xac ,read:0xac
<4>[ 26.413654] addr 0x1e: write:0xaf ,read:0xaf
<4>[ 26.414357] addr 0x1f: write:0x6d ,read:0x6d
<4>[ 26.416429] addr 0x20: write:0x71 ,read:0x71
<4>[ 26.417152] addr 0x21: write:0x05 ,read:0x05
<4>[ 26.417846] addr 0x22: write:0x0f ,read:0x0f
<4>[ 26.418540] addr 0x23: write:0xb1 ,read:0xb1
<4>[ 26.419227] addr 0x24: write:0x3d ,read:0x3d
<4>[ 26.419933] addr 0x25: write:0xce ,read:0xce
<4>[ 26.420727] addr 0x26: write:0x00 ,read:0x00
<4>[ 26.421469] addr 0x27: write:0x4f ,read:0x4f
<4>[ 26.422212] addr 0x28: write:0xd1 ,read:0xd1
<4>[ 26.422959] addr 0x29: write:0x2c ,read:0x2c
<4>[ 26.425102] addr 0x2a: write:0x7f ,read:0x7f
<4>[ 26.425874] addr 0x2b: write:0xb6 ,read:0xb6
<4>[ 26.426726] addr 0x2c: write:0x80 ,read:0x80
<4>[ 26.427741] addr 0x2d: write:0xae ,read:0xae
<4>[ 26.428666] addr 0x2e: write:0x7e ,read:0x7e
<4>[ 26.429444] addr 0x2f: write:0xfc ,read:0xfc
<4>[ 26.430225] addr 0x30: write:0x7f ,read:0x7f
<4>[ 26.430999] addr 0x31: write:0x52 ,read:0x52
<4>[ 26.431813] addr 0x32: write:0x81 ,read:0x81
<4>[ 26.432700] addr 0x33: write:0x4c ,read:0x4c
<4>[ 26.433921] addr 0x01: write:0x05 ,read:0x05
<4>[ 26.436966] addr 0x02: write:0x7f ,read:0x7f
<4>[ 26.440220] addr 0x03: write:0x2d ,read:0x2d
<4>[ 26.440985] addr 0x04: write:0x82 ,read:0x82
<4>[ 26.441723] addr 0x05: write:0x39 ,read:0x39
<4>[ 26.442464] addr 0x06: write:0x7c ,read:0x7c
<4>[ 26.443203] addr 0x07: write:0x69 ,read:0x69
<4>[ 26.443945] addr 0x08: write:0x7d ,read:0x7d
<4>[ 26.444701] addr 0x09: write:0xc4 ,read:0xc4
<4>[ 26.445433] addr 0x0a: write:0x84 ,read:0x84
<4>[ 26.446168] addr 0x0b: write:0x63 ,read:0x63
<4>[ 26.448202] addr 0x0c: write:0x6f ,read:0x6f
<4>[ 26.448997] addr 0x0d: write:0xee ,read:0xee
<4>[ 26.449766] addr 0x0e: write:0xa3 ,read:0xa3
<4>[ 26.450503] addr 0x0f: write:0x70 ,read:0x70
<4>[ 26.451233] addr 0x10: write:0x5e ,read:0x5e
<4>[ 26.451957] addr 0x11: write:0x42 ,read:0x42
<4>[ 26.452675] addr 0x12: write:0x5c ,read:0x5c
<4>[ 26.453383] addr 0x13: write:0x90 ,read:0x90
<4>[ 26.454096] addr 0x14: write:0xb1 ,read:0xb1
<4>[ 26.454823] addr 0x15: write:0xce ,read:0xce
<4>[ 26.457339] addr 0x16: write:0x77 ,read:0x77
<4>[ 26.458090] addr 0x17: write:0x3f ,read:0x3f
<4>[ 26.458862] addr 0x18: write:0xc1 ,read:0xc1
<4>[ 26.459592] addr 0x19: write:0x54 ,read:0x54
<4>[ 26.460455] addr 0x1a: write:0x59 ,read:0x59
<4>[ 26.461239] addr 0x1b: write:0x53 ,read:0x53
<4>[ 26.462039] addr 0x1c: write:0x3e ,read:0x3e
<4>[ 26.462819] addr 0x1d: write:0xac ,read:0xac
<4>[ 26.463563] addr 0x1e: write:0xaf ,read:0xaf
<4>[ 26.464295] addr 0x1f: write:0x6d ,read:0x6d
<4>[ 26.466390] addr 0x20: write:0x71 ,read:0x71
<4>[ 26.467142] addr 0x21: write:0x05 ,read:0x05
<4>[ 26.467876] addr 0x22: write:0x0f ,read:0x0f
<4>[ 26.468622] addr 0x23: write:0xb1 ,read:0xb1
<4>[ 26.469364] addr 0x24: write:0x3d ,read:0x3d
<4>[ 26.470685] addr 0x25: write:0xce ,read:0xce
<4>[ 26.472152] addr 0x26: write:0x00 ,read:0x00
<4>[ 26.472904] addr 0x27: write:0x4f ,read:0x4f
<4>[ 26.473669] addr 0x28: write:0xd1 ,read:0xd1
<4>[ 26.474433] addr 0x29: write:0x2c ,read:0x2c
<4>[ 26.476509] addr 0x2a: write:0x7f ,read:0x7f
<4>[ 26.477253] addr 0x2b: write:0xb6 ,read:0xb6
<4>[ 26.478022] addr 0x2c: write:0x80 ,read:0x80
<4>[ 26.478906] addr 0x2d: write:0xae ,read:0xae
<4>[ 26.479817] addr 0x2e: write:0x7e ,read:0x7e
<4>[ 26.480559] addr 0x2f: write:0xfc ,read:0xfc
<4>[ 26.481291] addr 0x30: write:0x7f ,read:0x7f
<4>[ 26.482058] addr 0x31: write:0x52 ,read:0x52
<4>[ 26.482807] addr 0x32: write:0x81 ,read:0x81
<4>[ 26.483572] addr 0x33: write:0x4c ,read:0x4c
<4>[ 26.485032] addr 0x00: write:0x00 ,read:0x00
<4>[ 26.486295] addr 0x3f: write:0xf4 ,read:0xf4
<4>[ 26.487502] addr 0x40: write:0x00 ,read:0x00
<4>[ 26.488923] addr 0x00: write:0x01 ,read:0x01
<4>[ 26.490310] addr 0x20: write:0x86 ,read:0x86
<4>[ 26.491632] addr 0x20: write:0x86 ,read:0x86
<4>[ 26.492843] addr 0x20: write:0x86 ,read:0x86
<4>[ 26.494057] addr 0x2a: write:0x0c ,read:0x0c
<4>[ 26.495235] addr 0x2a: write:0x0c ,read:0x0c
<4>[ 26.496483] addr 0x2a: write:0x0c ,read:0x0d