Thank You for your continued support and contributions!
Fuze not in dock:GPIOA = E2DBOP_DIN=8843FUZE docked:GPIOA = EA (bit 4 change)DBOP_DIN=8A43
First of all, thankyou very much for getting back to me.I checked the View IO Ports Screen and found that the following changed:Fuze not in dock:GPIOA = E2DBOP_DIN=8843FUZE docked:GPIOA = EA (bit 4 change)DBOP_DIN=8A43Nothing else changed and this is consistently repeatable.
My guess is that in the FUZE OS, the line out is always enabled but requires the voltage to be applied for it to work.If that is the case, then if the correct register is written to in the Rockbox startup to enable the line out, then the dock would work when the Fuze is attached.
"Based on forum discussions, the Rockboxed E200 either activates the audio outs when inserted in the dock or the audi outs are permanently enabled. I haven't confirmed this because I do not own an E200, but the dock pinout is compatible with Fuze and E200."
I assume, we need to enable some GPIO / DBOP in order to activate some HW outside the AS3525 which will then make the audio towards the dock connector...
Does anybody have a schematic of the sansa showing how the components are connected to each other and to the external interfaces?
void audiohw_mute(bool mute)
void audiohw_mute(bool mute){ if (mute) { as3514_set(AS3514_HPH_OUT_L, HPH_OUT_L_HP_MUTE); as3514_clear(AS3514_LINE_OUT_L, LINE_OUT_L_LO_SES_DM_SE_ST); } else { as3514_clear(AS3514_HPH_OUT_L, HPH_OUT_L_HP_MUTE); as3514_set(AS3514_LINE_OUT_L, LINE_OUT_L_LO_SES_DM_SE_ST); }}
Index: as3514.c===================================================================--- as3514.c (revision 24777)+++ as3514.c (working copy)@@ -151,8 +151,8 @@ /* Set ADC off, mixer on, DAC on, line out off, line in off, mic off */ - /* Turn on SUM, DAC */- as3514_write(AS3514_AUDIOSET1, AUDIOSET1_DAC_on | AUDIOSET1_SUM_on);+ /* Turn on line out, DAC, SUM */+ as3514_write(AS3514_AUDIOSET1, AUDIOSET1_LOUT_on | AUDIOSET1_DAC_on | AUDIOSET1_SUM_on); /* Set BIAS on, DITH on, AGC on, IBR_DAC max, LSP_LP on, IBR_LSP min */ as3514_write(AS3514_AUDIOSET2,@@ -250,6 +250,8 @@ #endif as3514_write_masked(AS3514_HPH_OUT_R, hph_r, AS3514_VOL_MASK); as3514_write_masked(AS3514_HPH_OUT_L, hph_l, AS3514_VOL_MASK);+ as3514_write_masked(AS3514_LINE_OUT_R, hph_r, AS3514_VOL_MASK);+ as3514_write_masked(AS3514_LINE_OUT_L, hph_l, AS3514_VOL_MASK); } void audiohw_set_lineout_vol(int vol_l, int vol_r)@@ -262,8 +264,10 @@ { if (mute) { as3514_set(AS3514_HPH_OUT_L, HPH_OUT_L_HP_MUTE);+ as3514_set(AS3514_LINE_OUT_L, LINE_OUT_L_LO_SES_DM_SE_ST); } else { as3514_clear(AS3514_HPH_OUT_L, HPH_OUT_L_HP_MUTE);+ as3514_clear(AS3514_LINE_OUT_L, LINE_OUT_L_LO_SES_DM_SE_ST); } }
Index: as3514.c===================================================================--- as3514.c (revision 24777)+++ as3514.c (working copy)@@ -151,8 +151,8 @@ /* Set ADC off, mixer on, DAC on, line out off, line in off, mic off */ - /* Turn on SUM, DAC */- as3514_write(AS3514_AUDIOSET1, AUDIOSET1_DAC_on | AUDIOSET1_SUM_on);+ /* Turn on line out, DAC, SUM */+ as3514_write(AS3514_AUDIOSET1, AUDIOSET1_LOUT_on | AUDIOSET1_DAC_on | AUDIOSET1_SUM_on); /* Set BIAS on, DITH on, AGC on, IBR_DAC max, LSP_LP on, IBR_LSP min */ as3514_write(AS3514_AUDIOSET2,@@ -170,9 +170,9 @@ as3514_write(AS3514_AUDIOSET3, AUDIOSET3_HPCM_off); #endif - /* Mute and disable speaker */+ /* Power up speaker stage & mute speaker */ as3514_write(AS3514_LSP_OUT_R, LSP_OUT_R_SP_OVC_TO_256MS | 0x00);- as3514_write(AS3514_LSP_OUT_L, LSP_OUT_L_SP_MUTE | 0x00);+ as3514_write(AS3514_LSP_OUT_L, LSP_OUT_L_SP_MUTE | LSP_OUT_L_SP_ON | 0x00); /* Set headphone over-current to 0, Min volume */ as3514_write(AS3514_HPH_OUT_R,@@ -250,6 +250,11 @@ #endif as3514_write_masked(AS3514_HPH_OUT_R, hph_r, AS3514_VOL_MASK); as3514_write_masked(AS3514_HPH_OUT_L, hph_l, AS3514_VOL_MASK);+// as3514_write_masked(AS3514_LINE_OUT_R, hph_r, AS3514_VOL_MASK);+// as3514_write_masked(AS3514_LINE_OUT_L, hph_l, AS3514_VOL_MASK);+ as3514_write_masked(AS3514_LSP_OUT_R, hph_r, AS3514_VOL_MASK);+ as3514_write_masked(AS3514_LSP_OUT_L, hph_l, AS3514_VOL_MASK);+ } void audiohw_set_lineout_vol(int vol_l, int vol_r)@@ -262,8 +267,12 @@ { if (mute) { as3514_set(AS3514_HPH_OUT_L, HPH_OUT_L_HP_MUTE);+// as3514_set(AS3514_LINE_OUT_L, LINE_OUT_L_LO_SES_DM_SE_ST);+ as3514_set(AS3514_LSP_OUT_L, LSP_OUT_L_SP_MUTE); } else { as3514_clear(AS3514_HPH_OUT_L, HPH_OUT_L_HP_MUTE);+// as3514_clear(AS3514_LINE_OUT_L, LINE_OUT_L_LO_SES_DM_SE_ST);+ as3514_clear(AS3514_LSP_OUT_L, LSP_OUT_L_SP_MUTE); } }
Page created in 0.14 seconds with 20 queries.