From: S?bastien Bourdeauducq Subject: [Milkymist-devel] RTEMS support patch for new address map + readable system frequency Index: rtems/c/src/lib/libbsp/lm32/milkymist/include/system_conf.h =================================================================== --- rtems.orig/c/src/lib/libbsp/lm32/milkymist/include/system_conf.h 2011-11-25 05:05:51.000000000 -0300 +++ rtems/c/src/lib/libbsp/lm32/milkymist/include/system_conf.h 2011-11-25 05:18:11.000000000 -0300 @@ -15,9 +15,11 @@ #ifndef __SYSTEM_CONFIG_H_ #define __SYSTEM_CONFIG_H_ -#define CPU_FREQUENCY (80000000) #define UART_BAUD_RATE (115200) +/* Clock frequency */ +#define MM_FREQUENCY (0xe0001074) + /* FML bridge */ #define FMLBRG_FLUSH_BASE (0xc8000000) #define FMLBRG_LINE_LENGTH (32) @@ -65,10 +67,10 @@ #define GPIO_LED2 (0x00000002) /* System ID and reset */ -#define MM_SYSTEM_ID (0xe000103c) +#define MM_SYSTEM_ID (0xe000107c) /* ICAP */ -#define MM_ICAP (0xe0001034) +#define MM_ICAP (0xe0001040) #define ICAP_READY (0x01) #define ICAP_CE (0x10000) Index: rtems/c/src/lib/libbsp/lm32/shared/milkymist_clock/ckinit.c =================================================================== --- rtems.orig/c/src/lib/libbsp/lm32/shared/milkymist_clock/ckinit.c 2011-08-01 10:48:39.000000000 -0300 +++ rtems/c/src/lib/libbsp/lm32/shared/milkymist_clock/ckinit.c 2011-11-25 05:18:11.000000000 -0300 @@ -35,7 +35,7 @@ void Clock_driver_support_initialize_hardware(void) { MM_WRITE(MM_TIMER0_COMPARE, - (CPU_FREQUENCY/(1000000/rtems_configuration_get_microseconds_per_tick()))); + (MM_READ(MM_FREQUENCY)/(1000000/rtems_configuration_get_microseconds_per_tick()))); MM_WRITE(MM_TIMER0_COUNTER, 0); MM_WRITE(MM_TIMER0_CONTROL, TIMER_ENABLE | TIMER_AUTORESTART); bsp_interrupt_vector_enable(MM_IRQ_TIMER0); Index: rtems/c/src/lib/libbsp/lm32/shared/milkymist_console/console.c =================================================================== --- rtems.orig/c/src/lib/libbsp/lm32/shared/milkymist_console/console.c 2011-11-25 05:05:51.000000000 -0300 +++ rtems/c/src/lib/libbsp/lm32/shared/milkymist_console/console.c 2011-11-25 05:18:11.000000000 -0300 @@ -109,7 +109,7 @@ } if (baud > 0) - MM_WRITE(MM_UART_DIV, CPU_FREQUENCY/baud/16); + MM_WRITE(MM_UART_DIV, MM_READ(MM_FREQUENCY)/baud/16); return 0; } Index: rtems/c/src/lib/libbsp/lm32/shared/milkymist_console/uart.c =================================================================== --- rtems.orig/c/src/lib/libbsp/lm32/shared/milkymist_console/uart.c 2011-11-25 05:05:51.000000000 -0300 +++ rtems/c/src/lib/libbsp/lm32/shared/milkymist_console/uart.c 2011-11-25 05:18:11.000000000 -0300 @@ -19,7 +19,7 @@ void BSP_uart_init(int baud) { - MM_WRITE(MM_UART_DIV, CPU_FREQUENCY/baud/16); + MM_WRITE(MM_UART_DIV, MM_READ(MM_FREQUENCY)/baud/16); } void BSP_uart_polled_write(char ch) Index: rtems/c/src/lib/libbsp/lm32/shared/milkymist_timer/timer.c =================================================================== --- rtems.orig/c/src/lib/libbsp/lm32/shared/milkymist_timer/timer.c 2011-08-01 10:48:40.000000000 -0300 +++ rtems/c/src/lib/libbsp/lm32/shared/milkymist_timer/timer.c 2011-11-25 05:18:11.000000000 -0300 @@ -58,7 +58,7 @@ if (ticks == 0xffffffff) printk("Timer overflow!\n"); - total = ticks / (CPU_FREQUENCY / 1000000); + total = ticks / (MM_READ(MM_FREQUENCY) / 1000000); if (benchmark_timer_find_average_overhead) return total;