Example #1
0
unsigned long get_ipb_clock(void)
{
	unsigned long val;

	val = *(vu_long *)MPC5XXX_CDM_CFG;
	if (val & (1 << 8))
		return get_bus_clock() / 2;
	else
		return get_bus_clock();
}
Example #2
0
int prt_mpc5xxx_clks (void)
{
	printf("       Bus %ld MHz, IPB %ld MHz, PCI %ld MHz\n",
			get_bus_clock() / 1000000, get_ipb_clock() / 1000000,
			get_pci_clock() / 1000000);

	return 0;
}
Example #3
0
static int stm32_clock_control_get_subsys_rate(struct device *clock,
						clock_control_subsys_t sub_system,
						u32_t *rate)
{
	struct stm32_pclken *pclken = (struct stm32_pclken *)(sub_system);
	/*
	 * Get AHB Clock (= SystemCoreClock = SYSCLK/prescaler)
	 * SystemCoreClock is preferred to CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC
	 * since it will be updated after clock configuration and hence
	 * more likely to contain actual clock speed
	 */
	u32_t ahb_clock = SystemCoreClock;
	u32_t apb1_clock = get_bus_clock(ahb_clock,
				CONFIG_CLOCK_STM32_APB1_PRESCALER);
#ifndef CONFIG_SOC_SERIES_STM32F0X
	u32_t apb2_clock = get_bus_clock(ahb_clock,
				CONFIG_CLOCK_STM32_APB2_PRESCALER);
#endif /* CONFIG_SOC_SERIES_STM32F0X */

	ARG_UNUSED(clock);

	switch (pclken->bus) {
	case STM32_CLOCK_BUS_AHB1:
	case STM32_CLOCK_BUS_AHB2:
		*rate = ahb_clock;
		break;
	case STM32_CLOCK_BUS_APB1:
#if defined(CONFIG_SOC_SERIES_STM32L4X) || defined(CONFIG_SOC_SERIES_STM32F0X)
	case STM32_CLOCK_BUS_APB1_2:
#endif /* CONFIG_SOC_SERIES_STM32L4X || CONFIG_SOC_SERIES_STM32F0X  */
		*rate = apb1_clock;
		break;
#ifndef CONFIG_SOC_SERIES_STM32F0X
	case STM32_CLOCK_BUS_APB2:
		*rate = apb2_clock;
		break;
#endif /* CONFIG_SOC_SERIES_STM32F0X */
	}

	return 0;
}
Example #4
0
unsigned long get_pci_clock(void)
{
	unsigned long val;

	val = *(vu_long *)MPC5XXX_CDM_CFG;
	switch (val & 3) {
		case 0:
			return get_ipb_clock();
		case 1:
			return get_ipb_clock() / 2;
		default:
			return get_bus_clock() / 4;
	}
}
Example #5
0
uint32_t get_uart_clock( unsigned int instance )
{
    switch(instance)
    {
        case 0:
        case 1:
            // UART0 and UART1 always use the system clock
            return SystemCoreClock;
        case 2:
        case 3:
        case 4:
        case 5:
            // UART2, UART3, UART4, and UART5 always use the bus clock
            return get_bus_clock();
        default:
            return 0;
    }
}
Example #6
0
unsigned long get_timebase_clock(void)
{
	return (get_bus_clock() + 3L) / 4L;
}
Example #7
0
unsigned long get_cpu_clock(void)
{
	unsigned long val;
	val = *(vu_long *)MPC5XXX_CDM_PORCFG;
	return get_bus_clock() * bus2core[val & 0x1f] / 2;
}