void imx233_digctl_set_arm_cache_timings(unsigned timings) { #if IMX233_SUBTARGET >= 3780 BF_WR_ALL(DIGCTL_ARMCACHE, ITAG_SS(timings), DTAG_SS(timings), CACHE_SS(timings), DRTY_SS(timings), VALID_SS(timings)); #else BF_WR_ALL(DIGCTL_ARMCACHE, ITAG_SS(timings), DTAG_SS(timings), CACHE_SS(timings)); #endif }
void imx233_chip_reset(void) { #if IMX233_SUBTARGET >= 3700 HW_CLKCTRL_RESET = BM_CLKCTRL_RESET_CHIP; #else BF_WR_ALL(POWER_RESET, UNLOCK_V(KEY), RST_DIG(1)); #endif }
/* volume in half dB * don't check input values */ static void set_dac_vol(int vol_l, int vol_r) { /* minimum is -100dB and max is 0dB */ vol_l = MAX(-200, MIN(vol_l, 0)); vol_r = MAX(-200, MIN(vol_r, 0)); /* unmute, enable zero cross and set volume. * 0xff is 0dB */ BF_WR_ALL(AUDIOOUT_DACVOLUME, VOLUME_LEFT(0xff + vol_l), VOLUME_RIGHT(0xff + vol_r), EN_ZCD(1)); }