Welcome to the Rockbox Technical Forums!
There was a guy, beyondwind, that had a modified rockbox firmware online. But that website is gone now, and I can't figure out how to do it.
#define LOUT2VOL 0x36 /* default 039 */#define LOUT2VOL_MASK 0x3f#define LOUT2VOL_LOUT2MUTE (1 << 6)#define LOUT2VOL_LOUT2ZC (1 << 7)#define LOUT2VOL_OUT2VU (1 << 8)#define ROUT2VOL 0x37 /* default 039 */#define ROUT2VOL_MASK 0x3f#define ROUT2VOL_ROUT2MUTE (1 << 6)#define ROUT2VOL_ROUT2ZC (1 << 7)#define ROUT2VOL_OUT2VU (1 << 8)
void audiohw_preinit(void){ /* Set low bias mode */ wmcodec_write(BIASCTRL, BIASCTRL_BIASCUT); /* Enable HPCOM, LINECOM */ wmcodec_write(OUTCTRL, OUTCTRL_HP_COM | OUTCTRL_LINE_COM | OUTCTRL_TSOPCTRL | OUTCTRL_TSDEN | OUTCTRL_VROI); /* Mute all Outputs and set PGAs minimum gain */ wmcodec_write(LOUT1VOL, 0x140); wmcodec_write(ROUT1VOL, 0x140); wmcodec_write(LOUT2VOL, 0x140); wmcodec_write(ROUT2VOL, 0x140); wmcodec_write(OUT3MIX, 0x40); wmcodec_write(OUT4MIX, 0x40); /* Enable L/ROUT1 */ wmcodec_write(PWRMGMT2, PWRMGMT2_ROUT1EN | PWRMGMT2_LOUT1EN); /* Enable VMID independent current bias */ wmcodec_write(OUT4TOADC, OUT4TOADC_POBCTRL); /* Enable required DACs and mixers */ wmcodec_write(PWRMGMT3, PWRMGMT3_RMIXEN | PWRMGMT3_LMIXEN | PWRMGMT3_DACENR | PWRMGMT3_DACENL); /* Enable VMIDSEL, BIASEN, BUFIOEN */ wmcodec_write(PWRMGMT1, PWRMGMT1_PLLEN | PWRMGMT1_BIASEN | PWRMGMT1_BUFIOEN | PWRMGMT1_VMIDSEL_10K); /* Setup digital interface, input amplifiers, PLL, ADCs and DACs */ wmcodec_write(AINTFCE, AINTFCE_IWL_16BIT | AINTFCE_FORMAT_I2S); wmcodec_write(CLKCTRL, CLKCTRL_MS); /* WM8758 is clock master */ audiohw_set_frequency(HW_FREQ_44); wmcodec_write(LOUTMIX, LOUTMIX_DACL2LMIX); wmcodec_write(ROUTMIX, ROUTMIX_DACR2RMIX); /* Disable VMID independent current bias */ wmcodec_write(OUT4TOADC, 0);}void audiohw_postinit(void){ wmcodec_write(PWRMGMT1, PWRMGMT1_PLLEN | PWRMGMT1_BIASEN | PWRMGMT1_BUFIOEN | PWRMGMT1_VMIDSEL_500K); /* lower the VMID power consumption */ wmcodec_write(BIASCTRL, 0); audiohw_mute(false);}
wmcodec_write(LOUT2VOL, LOUT2VOL_LOUT2MUTE); wmcodec_write(ROUT2VOL, ROUT2VOL_ROUT2MUTE);
void audiohw_set_lineout_volume(int vol_l, int vol_r){ int dac_l, amp_l, dac_r, amp_r; vol_l = vol_tenthdb2hw(vol_l); vol_r = vol_tenthdb2hw(vol_r); get_volume_params(vol_l, &dac_l, &_l); get_volume_params(vol_r, &dac_r, &_r); /* set lineout amp OUT2 */ wmcodec_write(LOUT2VOL, amp_l | LOUT2VOL_LOUT2ZC); wmcodec_write(ROUT2VOL, amp_r | ROUT2VOL_ROUT2ZC | ROUT2VOL_OUT2VU);}
LOUT2 and ROUT2 volumes do notupdate until a 1 is written to SPKVU(in reg 54 or 55)
Fortunately, the Wayback Machine has indeed archived his pages. That's where i found the patched FW so Rockbox wouldn't crap out after my mSATA SSD mod.https://web.archive.org/web/20150307065100/http://beyondwind.duckdns.org/?page_id=51
void audiohw_set_lineout_volume(int vol_l, int vol_r){ int dac_l, amp_l, dac_r, amp_r; wmcodec_write(LOUT2VOL, LOUT2VOL_LOUT2MUTE); wmcodec_write(ROUT2VOL, ROUT2VOL_ROUT2MUTE);}void audiohw_enable_lineout(bool enable){ /* Initialize data without lineout enabling. */ int pwrmgmt3_data = PWRMGMT3_RMIXEN | PWRMGMT3_LMIXEN | PWRMGMT3_DACENR | PWRMGMT3_DACENL; /* Set lineout (OUT2), if enabled. */ if (enable) pwrmgmt3_data |= PWRMGMT3_LOUT2EN | PWRMGMT3_ROUT2EN; /* Set register. */ wmcodec_write(PWRMGMT3, pwrmgmt3_data); wmcodec_write(LOUT2VOL, LOUT2VOL_LOUT2MUTE); wmcodec_write(ROUT2VOL, ROUT2VOL_ROUT2MUTE);}
Page created in 0.084 seconds with 22 queries.