Exemple #1
0
void rct_pll_init(void)
{
	g_ref_clk_hz = (u32) amb_get_reference_clock_frequency(HAL_BASE_VP);

	/* Set audio clock to 12.288 Mhz. */
	if (amb_set_audio_clock_source(HAL_BASE_VP,
		AMB_PLL_REFERENCE_CLOCK_SOURCE_CLK_REF, 0) != AMB_HAL_SUCCESS) {
		DEBUG_MSG("amb_set_audio_clock_source() failed");
	}

	if (amb_set_audio_clock_frequency(HAL_BASE_VP, 12288000) !=
							AMB_HAL_SUCCESS) {
		DEBUG_MSG("amb_set_audio_clock_frequency() failed");
	}
}
Exemple #2
0
void rct_set_audio_pll_hal(u32 clksrc, u32 mclk)
{
	int chk_count = 0;
	amb_hal_success_t success;
	amb_clock_source_t clk_src_sel;

	switch (clksrc) {
#if (CHIP_REV == A5S)
		case AMBARELLA_CLKSRC_SP_CLK:
			clk_src_sel = AMB_PLL_REFERENCE_CLOCK_SOURCE_SP_CLK;
			break;
#endif
		case AMBARELLA_CLKSRC_CLK_SI:
#if (CHIP_REV == S2)
			clk_src_sel = AMB_REFERENCE_CLOCK_SOURCE_CLK_SI;
#else
			clk_src_sel = AMB_PLL_REFERENCE_CLOCK_SOURCE_CLK_SI;
#endif
			break;
		case AMBARELLA_CLKSRC_LVDS_IDSP_SCLK:
#if (CHIP_REV == S2)
			clk_src_sel = AMB_REFERENCE_CLOCK_SOURCE_LVDS_IDSP_SCLK;
#else
			clk_src_sel = AMB_PLL_REFERENCE_CLOCK_SOURCE_LVDS_IDSP_SCLK;
#endif
			break;
		case AMBARELLA_CLKSRC_EXTERNAL:
			clk_src_sel = AMB_EXTERNAL_CLOCK_SOURCE;
			break;
		default:
		case AMBARELLA_CLKSRC_ONCHIP:
#if (CHIP_REV == S2)
			clk_src_sel = AMB_REFERENCE_CLOCK_SOURCE_CLK_REF;
#else
			clk_src_sel = AMB_PLL_REFERENCE_CLOCK_SOURCE_CLK_REF;
#endif
			break;
	}

#if (CHIP_REV == S2)
	if (clk_src_sel == AMB_REFERENCE_CLOCK_SOURCE_CLK_SI ||
		clk_src_sel == AMB_REFERENCE_CLOCK_SOURCE_LVDS_IDSP_SCLK)
#else
	if (clk_src_sel == AMB_PLL_REFERENCE_CLOCK_SOURCE_CLK_SI ||
		clk_src_sel == AMB_PLL_REFERENCE_CLOCK_SOURCE_LVDS_IDSP_SCLK)
#endif
	{
		success = amb_set_audio_clock_source(HAL_BASE_VP, clk_src_sel, mclk);
	} else {
		success = amb_set_audio_clock_source(HAL_BASE_VP, clk_src_sel, 0);
	}

	if (success == AMB_HAL_SUCCESS) {
		if(clk_src_sel != AMB_EXTERNAL_CLOCK_SOURCE) {
			success = amb_set_audio_clock_frequency(HAL_BASE_VP, mclk);
			while (success == AMB_HAL_RETRY) {
				// do something else or sleep
				mdelay(10);
				chk_count ++;
				success = amb_set_audio_clock_frequency(HAL_BASE_VP, mclk);
				if (chk_count == 100) {
					printk("a previous audio pll frequency change request is still outstanding");
					break;
				}
			};
			if (success == AMB_HAL_FAIL)
				printk("new audio pll frequency requested is not supported");
		}
	} else {
		printk("new audio pll reference clock source is not supported");
	}

}