void mx31_dump_clocks(void) { u32 cpufreq = mx31_get_mcu_main_clk(); printf("mx31 cpu clock: %dMHz\n", cpufreq / 1000000); printf("ipg clock : %dHz\n", mx31_get_ipg_clk()); printf("hsp clock : %dHz\n", mx31_get_hsp_clk()); }
void serial_setbrg (void) { u32 clk = mx31_get_ipg_clk(); if (!gd->baudrate) gd->baudrate = CONFIG_BAUDRATE; __REG(UART_PHYS + UFCR) = 4 << 7; /* divide input clock by 2 */ __REG(UART_PHYS + UBIR) = 0xf; __REG(UART_PHYS + UBMR) = clk / (2 * gd->baudrate); }
void i2c_init(int speed, int unused) { int freq; int i; #ifdef CONFIG_MX31 freq = mx31_get_ipg_clk(); #else freq = mxc_get_clock(MXC_IPG_CLK); #endif for (i = 0; i < 0x1f; i++) if (freq / div[i] <= speed) break; __REG16(i2c_port_addr[i2c_port_num] + IFDR) = i; i2c_reset(); }
unsigned int mxc_get_clock(enum mxc_clock clk) { switch (clk) { case MXC_ARM_CLK: return mx31_get_mcu_main_clk(); case MXC_IPG_CLK: case MXC_IPG_PERCLK: case MXC_CSPI_CLK: case MXC_UART_CLK: case MXC_ESDHC_CLK: case MXC_I2C_CLK: return mx31_get_ipg_clk(); case MXC_IPU_CLK: return mx31_get_hsp_clk(); } return -1; }