summaryrefslogtreecommitdiffstats
path: root/bsps/lm32
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/lm32')
-rw-r--r--bsps/lm32/headers.am18
-rw-r--r--bsps/lm32/include/bsp/irq.h47
-rw-r--r--bsps/lm32/include/bsp/milkymist_ac97.h76
-rw-r--r--bsps/lm32/include/bsp/milkymist_buttons.h59
-rw-r--r--bsps/lm32/include/bsp/milkymist_dmx.h68
-rw-r--r--bsps/lm32/include/bsp/milkymist_flash.h64
-rw-r--r--bsps/lm32/include/bsp/milkymist_gpio.h59
-rw-r--r--bsps/lm32/include/bsp/milkymist_ir.h59
-rw-r--r--bsps/lm32/include/bsp/milkymist_memcard.h32
-rw-r--r--bsps/lm32/include/bsp/milkymist_midi.h59
-rw-r--r--bsps/lm32/include/bsp/milkymist_pfpu.h72
-rw-r--r--bsps/lm32/include/bsp/milkymist_tmu.h98
-rw-r--r--bsps/lm32/include/bsp/milkymist_usbinput.h71
-rw-r--r--bsps/lm32/include/bsp/milkymist_versions.h53
-rw-r--r--bsps/lm32/include/bsp/milkymist_video.h90
-rw-r--r--bsps/lm32/lm32_evr/headers.am7
-rw-r--r--bsps/lm32/lm32_evr/include/bsp.h87
-rw-r--r--bsps/lm32/lm32_evr/include/system_conf.h180
-rw-r--r--bsps/lm32/lm32_evr/include/tm27.h38
-rw-r--r--bsps/lm32/milkymist/headers.am7
-rw-r--r--bsps/lm32/milkymist/include/bsp.h62
-rw-r--r--bsps/lm32/milkymist/include/system_conf.h329
-rw-r--r--bsps/lm32/milkymist/include/tm27.h1
23 files changed, 1636 insertions, 0 deletions
diff --git a/bsps/lm32/headers.am b/bsps/lm32/headers.am
new file mode 100644
index 0000000000..e44184dbea
--- /dev/null
+++ b/bsps/lm32/headers.am
@@ -0,0 +1,18 @@
+## This file was generated by "./boostrap -H".
+
+include_bspdir = $(includedir)/bsp
+include_bsp_HEADERS =
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/irq.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_ac97.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_buttons.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_dmx.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_flash.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_gpio.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_ir.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_memcard.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_midi.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_pfpu.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_tmu.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_usbinput.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_versions.h
+include_bsp_HEADERS += ../../../../../bsps/lm32/include/bsp/milkymist_video.h
diff --git a/bsps/lm32/include/bsp/irq.h b/bsps/lm32/include/bsp/irq.h
new file mode 100644
index 0000000000..b1ccd66339
--- /dev/null
+++ b/bsps/lm32/include/bsp/irq.h
@@ -0,0 +1,47 @@
+/**
+ * @file
+ *
+ * @ingroup bsp_interrupt
+ *
+ * @brief BSP interrupt support for LM32.
+ */
+
+/*
+ * Based on concepts of Pavel Pisa, Till Straumann and Eric Valette.
+ *
+ * Copyright (c) 2008, 2009, 2010
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * D-82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#ifndef LIBBSP_LM32_IRQ_CONFIG_H
+#define LIBBSP_LM32_IRQ_CONFIG_H
+
+#include <stdint.h>
+
+/**
+ * @addtogroup bsp_interrupt
+ *
+ * @{
+ */
+
+/**
+ * @brief Minimum vector number.
+ */
+#define BSP_INTERRUPT_VECTOR_MIN 0
+
+/**
+ * @brief Maximum vector number.
+ */
+#define BSP_INTERRUPT_VECTOR_MAX 31
+
+/** @} */
+
+#endif /* LIBBSP_LM32_IRQ_CONFIG_H */
diff --git a/bsps/lm32/include/bsp/milkymist_ac97.h b/bsps/lm32/include/bsp/milkymist_ac97.h
new file mode 100644
index 0000000000..37415a1f5e
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_ac97.h
@@ -0,0 +1,76 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_ac97 lm32_milkymist_shared
+ * @brief Milkymist AC97 driver
+ */
+
+/* milkymist_ac97.h
+ *
+ * Milkymist AC97 driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_ac97 Milkymist AC97
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist AC97 driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_AC97_H_
+#define __MILKYMIST_AC97_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Ioctls. 0x41 is 'A' */
+#define SOUND_MIXER_MIC 0x0
+#define SOUND_MIXER_LINE 0x1
+#define SOUND_MIXER_READ(x) (0x4100+x)
+#define SOUND_MIXER_WRITE(x) (0x4110+x)
+
+#define SOUND_SND_SUBMIT_PLAY 0x4120
+#define SOUND_SND_COLLECT_PLAY 0x4121
+#define SOUND_SND_SUBMIT_RECORD 0x4122
+#define SOUND_SND_COLLECT_RECORD 0x4123
+
+struct snd_buffer {
+ unsigned int nsamples;
+ void *user;
+ unsigned int samples[];
+};
+
+rtems_device_driver ac97_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver ac97_open(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver ac97_control(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define AC97_DRIVER_TABLE_ENTRY {ac97_initialize, \
+ac97_open, NULL, NULL, NULL, ac97_control}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MILKYMIST_AC97_H_ */
diff --git a/bsps/lm32/include/bsp/milkymist_buttons.h b/bsps/lm32/include/bsp/milkymist_buttons.h
new file mode 100644
index 0000000000..de6ee51438
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_buttons.h
@@ -0,0 +1,59 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_buttons lm32_milkymist_shared
+ * @brief Milkymist buttons driver
+ */
+
+/* milkymist_buttons.h
+ *
+ * Milkymist buttons driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2011 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_buttons Milkymist buttons
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist buttons driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_BUTTONS_H_
+#define __MILKYMIST_BUTTONS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+rtems_device_driver buttons_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver buttons_open(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver buttons_read(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define BUTTONS_DRIVER_TABLE_ENTRY { buttons_initialize, \
+buttons_open, NULL, buttons_read, NULL, NULL}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MILKYMIST_BUTTONS_H_ */
diff --git a/bsps/lm32/include/bsp/milkymist_dmx.h b/bsps/lm32/include/bsp/milkymist_dmx.h
new file mode 100644
index 0000000000..a933e3423f
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_dmx.h
@@ -0,0 +1,68 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_dmx lm32_milkymist_shared
+ * @brief Milkymist DMX512 driver
+ */
+
+/* milkymist_dmx.h
+ *
+ * Milkymist DMX512 driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_dmx Milkymist DMX512
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist DMX512 driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_DMX_H_
+#define __MILKYMIST_DMX_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define DMX_SET_THRU 0x4400
+#define DMX_GET_THRU 0x4401
+
+rtems_device_driver dmx_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver dmx_read(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver dmx_write(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver dmx_control(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define DMX_DRIVER_TABLE_ENTRY {dmx_initialize, \
+NULL, NULL, dmx_read, dmx_write, dmx_control}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MILKYMIST_DMX_H_ */
diff --git a/bsps/lm32/include/bsp/milkymist_flash.h b/bsps/lm32/include/bsp/milkymist_flash.h
new file mode 100644
index 0000000000..2acf855096
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_flash.h
@@ -0,0 +1,64 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_flash lm32_milkymist_shared
+ * @brief Milkymist Flash
+ */
+
+/* milkymist_flash.h
+ *
+ * Copyright (C) 2010 Sebastien Bourdeauducq
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ */
+
+/**
+ * @defgroup lm32_milkymist_flash Milkymist Flash
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist Flash
+ * @{
+ */
+
+#ifndef __MILKYMIST_FLASH_H_
+#define __MILKYMIST_FLASH_H_
+
+/* Ioctls */
+#define FLASH_GET_SIZE 0x4600
+#define FLASH_GET_BLOCKSIZE 0x4601
+#define FLASH_ERASE_BLOCK 0x4602
+
+struct flash_partition {
+ unsigned int start_address;
+ unsigned int length;
+};
+
+rtems_device_driver flash_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver flash_read(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver flash_write(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver flash_control(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define FLASH_DRIVER_TABLE_ENTRY {flash_initialize, \
+NULL, NULL, flash_read, flash_write, flash_control}
+
+#endif /* __MILKYMIST_FLASH_H_ */
diff --git a/bsps/lm32/include/bsp/milkymist_gpio.h b/bsps/lm32/include/bsp/milkymist_gpio.h
new file mode 100644
index 0000000000..1e30b9c280
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_gpio.h
@@ -0,0 +1,59 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_gpio lm32_milkymist_shared
+ * @brief Milkymist GPIO driver
+ */
+
+/* milkymist_gpio.h
+ *
+ * Milkymist GPIO driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_gpio Milkymist GPIO
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist GPIO driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_GPIO_H_
+#define __MILKYMIST_GPIO_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+rtems_device_driver gpio_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver gpio_read(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver gpio_write(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define GPIO_DRIVER_TABLE_ENTRY { gpio_initialize, \
+NULL, NULL, gpio_read, gpio_write, NULL}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MILKYMIST_GPIO_H_ */
diff --git a/bsps/lm32/include/bsp/milkymist_ir.h b/bsps/lm32/include/bsp/milkymist_ir.h
new file mode 100644
index 0000000000..4df7f3550c
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_ir.h
@@ -0,0 +1,59 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_ir lm32_milkymist_shared
+ * @brief Milkymist RC5 IR driver
+ */
+
+/* milkymist_ir.h
+ *
+ * Milkymist RC5 IR driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_ir Milkymist IR
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist RC5 IR driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_IR_H_
+#define __MILKYMIST_IR_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+rtems_device_driver ir_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver ir_open(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver ir_read(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define IR_DRIVER_TABLE_ENTRY {ir_initialize, \
+ir_open, NULL, ir_read, NULL, NULL}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MILKYMIST_IR_H_ */
diff --git a/bsps/lm32/include/bsp/milkymist_memcard.h b/bsps/lm32/include/bsp/milkymist_memcard.h
new file mode 100644
index 0000000000..713b45be07
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_memcard.h
@@ -0,0 +1,32 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_memcard lm32_milkymist_shared
+ * @brief Milkymist memory card driver
+ */
+
+/* milkymist_memcard.h
+ *
+ * Milkymist memory card driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_memcard Milkymist memory card
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist memory card driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_MEMCARD_H_
+#define __MILKYMIST_MEMCARD_H_
+
+rtems_status_code memcard_register(void);
+
+#endif /* __MILKYMIST_MEMCARD_H_ */
+
+/** @} */
diff --git a/bsps/lm32/include/bsp/milkymist_midi.h b/bsps/lm32/include/bsp/milkymist_midi.h
new file mode 100644
index 0000000000..da53de6af5
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_midi.h
@@ -0,0 +1,59 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_midi lm32_milkymist_shared
+ * @brief Milkymist MIDI driver
+ */
+
+/* milkymist_midi.h
+ *
+ * Milkymist MIDI driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_midi Milkymist MIDI
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist MIDI driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_MIDI_H_
+#define __MILKYMIST_MIDI_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+rtems_device_driver midi_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver midi_open(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver midi_read(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define MIDI_DRIVER_TABLE_ENTRY {midi_initialize, \
+midi_open, NULL, midi_read, NULL, NULL}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MILKYMIST_MIDI_H_ */
diff --git a/bsps/lm32/include/bsp/milkymist_pfpu.h b/bsps/lm32/include/bsp/milkymist_pfpu.h
new file mode 100644
index 0000000000..73ea5fa28e
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_pfpu.h
@@ -0,0 +1,72 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_pfpu lm32_milkymist_shared
+ * @brief Milkymist PFPU driver
+ */
+
+/* milkymist_pfpu.h
+ *
+ * Milkymist PFPU driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_pfpu Milkymist PFPU
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist PFPU driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_PFPU_H_
+#define __MILKYMIST_PFPU_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Ioctls */
+#define PFPU_EXECUTE 0x4600
+
+#define PFPU_PROGSIZE (2048)
+#define PFPU_REG_COUNT (128)
+
+struct pfpu_td {
+ unsigned int *output;
+ unsigned int hmeshlast;
+ unsigned int vmeshlast;
+ unsigned int *program;
+ unsigned int progsize;
+ float *registers;
+ /** @brief shall we update the "registers" array after completion */
+ bool update;
+ /** @brief shall we invalidate L1 data cache after completion */
+ bool invalidate;
+};
+
+rtems_device_driver pfpu_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver pfpu_control(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define PFPU_DRIVER_TABLE_ENTRY {pfpu_initialize, \
+NULL, NULL, NULL, NULL, pfpu_control}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MILKYMIST_PFPU_H_ */
diff --git a/bsps/lm32/include/bsp/milkymist_tmu.h b/bsps/lm32/include/bsp/milkymist_tmu.h
new file mode 100644
index 0000000000..94f8394ef7
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_tmu.h
@@ -0,0 +1,98 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_tmu lm32_milkymist_shared
+ * @brief Milkymist TMU driver
+ */
+
+/* milkymist_tmu.h
+ *
+ * Milkymist TMU driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_tmu Milkymist TMU
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist TMU driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_TMU_H_
+#define __MILKYMIST_TMU_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Ioctls */
+#define TMU_EXECUTE 0x5400
+#define TMU_EXECUTE_NONBLOCK 0x5401
+#define TMU_EXECUTE_WAIT 0x5402
+
+struct tmu_vertex {
+ int x;
+ int y;
+} __attribute__((packed));
+
+struct tmu_td {
+ unsigned int flags;
+ unsigned int hmeshlast;
+ unsigned int vmeshlast;
+ unsigned int brightness;
+ unsigned short chromakey;
+ struct tmu_vertex *vertices;
+ unsigned short *texfbuf;
+ unsigned int texhres;
+ unsigned int texvres;
+ unsigned int texhmask;
+ unsigned int texvmask;
+ unsigned short *dstfbuf;
+ unsigned int dsthres;
+ unsigned int dstvres;
+ int dsthoffset;
+ int dstvoffset;
+ unsigned int dstsquarew;
+ unsigned int dstsquareh;
+ unsigned int alpha;
+
+ bool invalidate_before;
+ bool invalidate_after;
+};
+
+#define TMU_BRIGHTNESS_MAX (63)
+#define TMU_MASK_NOFILTER (0x3ffc0)
+#define TMU_MASK_FULL (0x3ffff)
+#define TMU_FIXEDPOINT_SHIFT (6)
+#define TMU_ALPHA_MAX (63)
+#define TMU_MESH_MAXSIZE (128)
+
+#define TMU_FLAG_CHROMAKEY (2)
+#define TMU_FLAG_ADDITIVE (4)
+
+rtems_device_driver tmu_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver tmu_control(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define TMU_DRIVER_TABLE_ENTRY {tmu_initialize, \
+NULL, NULL, NULL, NULL, tmu_control}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MILKYMIST_TMU_H_ */
diff --git a/bsps/lm32/include/bsp/milkymist_usbinput.h b/bsps/lm32/include/bsp/milkymist_usbinput.h
new file mode 100644
index 0000000000..04c376fa8a
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_usbinput.h
@@ -0,0 +1,71 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_usbinput lm32_milkymist_shared
+ * @brief Milkymist USB input devices driver
+ */
+
+/* milkymist_usbinput.h
+ *
+ * Milkymist USB input devices driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010, 2012 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_usbinput Milkymist USB input devices
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist USB input devices driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_USBINPUT_H_
+#define __MILKYMIST_USBINPUT_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Ioctls */
+#define USBINPUT_LOAD_FIRMWARE 0x5500
+
+struct usbinput_firmware_description {
+ const unsigned char *data;
+ int length;
+};
+
+rtems_device_driver usbinput_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver usbinput_open(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver usbinput_read(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver usbinput_control(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define USBINPUT_DRIVER_TABLE_ENTRY {usbinput_initialize, \
+usbinput_open, NULL, usbinput_read, NULL, usbinput_control}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MILKYMIST_USBINPUT_H_ */
diff --git a/bsps/lm32/include/bsp/milkymist_versions.h b/bsps/lm32/include/bsp/milkymist_versions.h
new file mode 100644
index 0000000000..3b5063f306
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_versions.h
@@ -0,0 +1,53 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_versions lm32_milkymist_shared
+ * @brief Milkymist versioning driver
+ */
+
+/* milkymist_versions.h
+ *
+ * Milkymist versioning driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_versions Milkymist versioning
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist versioning driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_VERSIONS_H_
+#define __MILKYMIST_VERSIONS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+rtems_device_driver versions_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver versions_read(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define VERSIONS_DRIVER_TABLE_ENTRY {versions_initialize, \
+NULL, NULL, versions_read, NULL, NULL}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MILKYMIST_VERSIONS_H_ */
diff --git a/bsps/lm32/include/bsp/milkymist_video.h b/bsps/lm32/include/bsp/milkymist_video.h
new file mode 100644
index 0000000000..6ec3cc0a83
--- /dev/null
+++ b/bsps/lm32/include/bsp/milkymist_video.h
@@ -0,0 +1,90 @@
+/**
+ * @file
+ * @ingroup lm32_milkymist_video lm32_milkymist_shared
+ * @brief Milkymist video input driver
+ */
+
+/* milkymist_video.h
+ *
+ * Milkymist video input driver for RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010, 2011 Sebastien Bourdeauducq
+ */
+
+/**
+ * @defgroup lm32_milkymist_video Milkymist Video
+ * @ingroup lm32_milkymist_shared
+ * @brief Milkymist video input driver
+ * @{
+ */
+
+#ifndef __MILKYMIST_VIDEO_H_
+#define __MILKYMIST_VIDEO_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Ioctls */
+#define VIDEO_BUFFER_LOCK 0x5600
+#define VIDEO_BUFFER_UNLOCK 0x5601
+
+#define VIDEO_SET_BRIGHTNESS 0x5602
+#define VIDEO_GET_BRIGHTNESS 0x5603
+#define VIDEO_SET_CONTRAST 0x5604
+#define VIDEO_GET_CONTRAST 0x5605
+#define VIDEO_SET_HUE 0x5606
+#define VIDEO_GET_HUE 0x5607
+#define VIDEO_GET_SIGNAL 0x5608
+
+#define VIDEO_SET_REGISTER 0x5609
+#define VIDEO_GET_REGISTER 0x560a
+
+#define VIDEO_SET_FORMAT 0x560b
+
+enum {
+ VIDEO_FORMAT_CVBS6 = 0,
+ VIDEO_FORMAT_CVBS5,
+ VIDEO_FORMAT_CVBS4,
+ VIDEO_FORMAT_SVIDEO,
+ VIDEO_FORMAT_COMPONENT,
+};
+
+rtems_device_driver video_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver video_open(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver video_close(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver video_control(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#define VIDEO_DRIVER_TABLE_ENTRY {video_initialize, \
+video_open, video_close, NULL, NULL, video_control}
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MILKYMIST_VIDEO_H_ */
diff --git a/bsps/lm32/lm32_evr/headers.am b/bsps/lm32/lm32_evr/headers.am
new file mode 100644
index 0000000000..213b66effe
--- /dev/null
+++ b/bsps/lm32/lm32_evr/headers.am
@@ -0,0 +1,7 @@
+## This file was generated by "./boostrap -H".
+
+include_HEADERS =
+include_HEADERS += ../../../../../../bsps/lm32/lm32_evr/include/bsp.h
+include_HEADERS += include/bspopts.h
+include_HEADERS += ../../../../../../bsps/lm32/lm32_evr/include/system_conf.h
+include_HEADERS += ../../../../../../bsps/lm32/lm32_evr/include/tm27.h
diff --git a/bsps/lm32/lm32_evr/include/bsp.h b/bsps/lm32/lm32_evr/include/bsp.h
new file mode 100644
index 0000000000..7c3ac8400d
--- /dev/null
+++ b/bsps/lm32/lm32_evr/include/bsp.h
@@ -0,0 +1,87 @@
+/**
+ * @file
+ *
+ * @ingroup lm32_evr
+ *
+ * @brief Global BSP definitions.
+ */
+
+/*
+ * COPYRIGHT (c) 1989-1999.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * Jukka Pietarinen <jukka.pietarinen@mrf.fi>, 2008,
+ * Micro-Research Finland Oy
+ */
+
+#ifndef LIBBSP_LM32_LM32_EVR_BSP_H
+#define LIBBSP_LM32_LM32_EVR_BSP_H
+
+#include <stdint.h>
+#include <bspopts.h>
+#include <bsp/default-initial-extension.h>
+
+#include <rtems.h>
+
+/**
+ * @defgroup lm32_evr EVR Support
+ *
+ * @ingroup bsp_lm32
+ *
+ * @brief EVR support package.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define BSP_DIRTY_MEMORY 1
+
+ /*
+ * lm32 requires certain aligment of mbuf because unaligned uint32_t
+ * accesses are not handled properly.
+ */
+
+#define CPU_U32_FIX
+
+#if defined(RTEMS_NETWORKING)
+struct rtems_bsdnet_ifconfig;
+
+extern int rtems_tsmac_driver_attach(struct rtems_bsdnet_ifconfig *config,
+ int attaching);
+
+#define RTEMS_BSP_NETWORK_DRIVER_NAME "TSMAC0"
+#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_tsmac_driver_attach
+
+ /*
+ * Due to a hardware design error (RJ45 connector with 10baseT magnetics)
+ * we are forced to use 10baseT mode.
+ */
+
+#define TSMAC_FORCE_10BASET
+#endif
+
+/* functions */
+rtems_isr_entry set_vector( /* returns old vector */
+ rtems_isr_entry handler, /* isr routine */
+ rtems_vector_number vector, /* vector number */
+ int type /* RTEMS or RAW intr */
+);
+
+/*
+ * Prototypes for BSP methods that cross file boundaries
+ */
+void BSP_uart_polled_write(char ch);
+int BSP_uart_polled_read( void );
+char BSP_uart_is_character_ready(char *ch);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
diff --git a/bsps/lm32/lm32_evr/include/system_conf.h b/bsps/lm32/lm32_evr/include/system_conf.h
new file mode 100644
index 0000000000..41f17e2be0
--- /dev/null
+++ b/bsps/lm32/lm32_evr/include/system_conf.h
@@ -0,0 +1,180 @@
+/**
+ * @file
+ *
+ * @ingroup lm32_evr
+ *
+ * @brief System configuration.
+ */
+
+#ifndef __SYSTEM_CONFIG_H_
+#define __SYSTEM_CONFIG_H_
+
+
+#define FPGA_DEVICE_FAMILY "ECP2M"
+#define PLATFORM_NAME "platform1"
+#define USE_PLL (0)
+#define CPU_FREQUENCY (75000000)
+
+
+/* FOUND 1 CPU UNIT(S) */
+
+/*
+ * CPU Instance LM32 component configuration
+ */
+#define CPU_NAME "LM32"
+#define CPU_EBA (0x04000000)
+#define CPU_DIVIDE_ENABLED (1)
+#define CPU_SIGN_EXTEND_ENABLED (1)
+#define CPU_MULTIPLIER_ENABLED (1)
+#define CPU_SHIFT_ENABLED (1)
+#define CPU_DEBUG_ENABLED (1)
+#define CPU_HW_BREAKPOINTS_ENABLED (0)
+#define CPU_NUM_HW_BREAKPOINTS (0)
+#define CPU_NUM_WATCHPOINTS (0)
+#define CPU_ICACHE_ENABLED (1)
+#define CPU_ICACHE_SETS (512)
+#define CPU_ICACHE_ASSOC (1)
+#define CPU_ICACHE_BYTES_PER_LINE (16)
+#define CPU_DCACHE_ENABLED (1)
+#define CPU_DCACHE_SETS (512)
+#define CPU_DCACHE_ASSOC (1)
+#define CPU_DCACHE_BYTES_PER_LINE (16)
+#define CPU_DEBA (0x0C000000)
+#define CPU_CHARIO_IN (1)
+#define CPU_CHARIO_OUT (1)
+#define CPU_CHARIO_TYPE "JTAG UART"
+
+/*
+ * gpio component configuration
+ */
+#define GPIO_NAME "gpio"
+#define GPIO_BASE_ADDRESS (0x80004000)
+#define GPIO_SIZE (128)
+#define GPIO_CHARIO_IN (0)
+#define GPIO_CHARIO_OUT (0)
+#define GPIO_ADDRESS_LOCK (1)
+#define GPIO_DISABLE (0)
+#define GPIO_OUTPUT_PORTS_ONLY (1)
+#define GPIO_INPUT_PORTS_ONLY (0)
+#define GPIO_TRISTATE_PORTS (0)
+#define GPIO_BOTH_INPUT_AND_OUTPUT (0)
+#define GPIO_DATA_WIDTH (4)
+#define GPIO_INPUT_WIDTH (1)
+#define GPIO_OUTPUT_WIDTH (1)
+#define GPIO_IRQ_MODE (0)
+#define GPIO_LEVEL (0)
+#define GPIO_EDGE (0)
+#define GPIO_EITHER_EDGE_IRQ (0)
+#define GPIO_POSE_EDGE_IRQ (0)
+#define GPIO_NEGE_EDGE_IRQ (0)
+
+/*
+ * uart component configuration
+ */
+#define UART_NAME "uart"
+#define UART_BASE_ADDRESS (0x80006000)
+#define UART_SIZE (128)
+#define UART_IRQ (0)
+#define UART_CHARIO_IN (1)
+#define UART_CHARIO_OUT (1)
+#define UART_CHARIO_TYPE "RS-232"
+#define UART_ADDRESS_LOCK (1)
+#define UART_DISABLE (0)
+#define UART_MODEM (0)
+#define UART_ADDRWIDTH (5)
+#define UART_DATAWIDTH (8)
+#define UART_BAUD_RATE (115200)
+#define UART_IB_SIZE (4)
+#define UART_OB_SIZE (4)
+#define UART_BLOCK_WRITE (1)
+#define UART_BLOCK_READ (1)
+#define UART_DATA_BITS (8)
+#define UART_STOP_BITS (1)
+#define UART_FIFO (0)
+#define UART_INTERRUPT_DRIVEN (1)
+
+/*
+ * ebr component configuration
+ */
+#define EBR_NAME "ebr"
+#define EBR_BASE_ADDRESS (0x04000000)
+#define EBR_SIZE (32768)
+#define EBR_IS_READABLE (1)
+#define EBR_IS_WRITABLE (1)
+#define EBR_ADDRESS_LOCK (1)
+#define EBR_DISABLE (0)
+#define EBR_EBR_DATA_WIDTH (32)
+#define EBR_INIT_FILE_NAME "none"
+#define EBR_INIT_FILE_FORMAT "hex"
+
+/*
+ * ts_mac_core component configuration
+ */
+#define TS_MAC_CORE_NAME "ts_mac_core"
+#define TS_MAC_CORE_BASE_ADDRESS (0x80008000)
+#define TS_MAC_CORE_SIZE (8192)
+#define TS_MAC_CORE_IRQ (2)
+#define TS_MAC_CORE_CHARIO_IN (0)
+#define TS_MAC_CORE_CHARIO_OUT (0)
+#define TS_MAC_CORE_ADDRESS_LOCK (1)
+#define TS_MAC_CORE_DISABLE (0)
+#define TS_MAC_CORE_STAT_REGS (1)
+#define TS_MAC_CORE_TXRX_FIFO_DEPTH (512)
+#define TS_MAC_CORE_MIIM_MODULE (1)
+#define TS_MAC_CORE_NGO "l:/mrf/lattice/crio-lm32/platform1/components/ts_mac_top_v27/ipexpress/ts_mac_core/ts_mac_core.ngo"
+#define TS_MAC_CORE_ISPLEVER_PRJ "l:/mrf/lattice/crio-lm32/criomico.syn"
+
+/*
+ * timer0 component configuration
+ */
+#define TIMER0_NAME "timer0"
+#define TIMER0_BASE_ADDRESS (0x80002000)
+#define TIMER0_SIZE (128)
+#define TIMER0_IRQ (1)
+#define TIMER0_CHARIO_IN (0)
+#define TIMER0_CHARIO_OUT (0)
+#define TIMER0_ADDRESS_LOCK (1)
+#define TIMER0_DISABLE (0)
+#define TIMER0_PERIOD_NUM (20)
+#define TIMER0_PERIOD_WIDTH (32)
+#define TIMER0_WRITEABLE_PERIOD (1)
+#define TIMER0_READABLE_SNAPSHOT (1)
+#define TIMER0_START_STOP_CONTROL (1)
+#define TIMER0_WATCHDOG (0)
+
+/*
+ * timer1 component configuration
+ */
+#define TIMER1_NAME "timer1"
+#define TIMER1_BASE_ADDRESS (0x8000A000)
+#define TIMER1_SIZE (128)
+#define TIMER1_IRQ (3)
+#define TIMER1_CHARIO_IN (0)
+#define TIMER1_CHARIO_OUT (0)
+#define TIMER1_ADDRESS_LOCK (1)
+#define TIMER1_DISABLE (0)
+#define TIMER1_PERIOD_NUM (20)
+#define TIMER1_PERIOD_WIDTH (32)
+#define TIMER1_WRITEABLE_PERIOD (1)
+#define TIMER1_READABLE_SNAPSHOT (1)
+#define TIMER1_START_STOP_CONTROL (1)
+#define TIMER1_WATCHDOG (0)
+
+/*
+ * ddr2_sdram component configuration
+ */
+#define DDR2_SDRAM_NAME "ddr2_sdram"
+#define DDR2_SDRAM_BASE_ADDRESS (0x08000000)
+#define DDR2_SDRAM_SIZE (33554432)
+#define DDR2_SDRAM_IS_READABLE (1)
+#define DDR2_SDRAM_IS_WRITABLE (1)
+#define DDR2_SDRAM_BST_CNT_READ (1)
+#define DDR2_SDRAM_ADDRESS_LOCK (1)
+#define DDR2_SDRAM_DISABLE (0)
+#define DDR2_SDRAM_NGO "L:/mrf/lattice/cRIO-LM32/platform1/components/wb_ddr2_ctl_v65/ipexpress/ddr2_sdram/ddr2_sdram.ngo"
+#define DDR2_SDRAM_ISPLEVER_PRJ "l:/mrf/lattice/crio-lm32/criomico.syn"
+#define DDR2_SDRAM_PARAM_FILE "ddr_p_eval/$/src/params/ddr_sdram_mem_params.v"
+#define DDR2_SDRAM_MEM_TOP "ddr_p_eval/$/src/rtl/top/@/ddr_sdram_mem_top.v"
+
+
+#endif /* __SYSTEM_CONFIG_H_ */
diff --git a/bsps/lm32/lm32_evr/include/tm27.h b/bsps/lm32/lm32_evr/include/tm27.h
new file mode 100644
index 0000000000..f62e62e73f
--- /dev/null
+++ b/bsps/lm32/lm32_evr/include/tm27.h
@@ -0,0 +1,38 @@
+/**
+ * @file
+ *
+ * @ingroup lm32_evr
+ *
+ * @brief TM27 timing test routines.
+ */
+
+/*
+ * tm27.h
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#ifndef _RTEMS_TMTEST27
+#error "This is an RTEMS internal file you must not include directly."
+#endif
+
+#ifndef __tm27_h
+#define __tm27_h
+
+/*
+ * Stuff for Time Test 27
+ */
+
+#define MUST_WAIT_FOR_INTERRUPT 0
+
+#define Install_tm27_vector( handler ) set_vector( (handler), 0, 1 )
+
+#define Cause_tm27_intr() /* empty */
+
+#define Clear_tm27_intr() /* empty */
+
+#define Lower_tm27_intr() /* empty */
+
+#endif
diff --git a/bsps/lm32/milkymist/headers.am b/bsps/lm32/milkymist/headers.am
new file mode 100644
index 0000000000..1bd114fba1
--- /dev/null
+++ b/bsps/lm32/milkymist/headers.am
@@ -0,0 +1,7 @@
+## This file was generated by "./boostrap -H".
+
+include_HEADERS =
+include_HEADERS += ../../../../../../bsps/lm32/milkymist/include/bsp.h
+include_HEADERS += include/bspopts.h
+include_HEADERS += ../../../../../../bsps/lm32/milkymist/include/system_conf.h
+include_HEADERS += ../../../../../../bsps/lm32/milkymist/include/tm27.h
diff --git a/bsps/lm32/milkymist/include/bsp.h b/bsps/lm32/milkymist/include/bsp.h
new file mode 100644
index 0000000000..d8af4a3124
--- /dev/null
+++ b/bsps/lm32/milkymist/include/bsp.h
@@ -0,0 +1,62 @@
+/**
+ * @file
+ *
+ * @ingroup lm32_milkymist
+ *
+ * @brief Global BSP definitions.
+ */
+
+/* bsp.h
+ *
+ * This include file contains all board IO definitions.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2011 Sebastien Bourdeauducq
+ */
+
+#ifndef LIBBSP_LM32_MILKYMIST_BSP_H
+#define LIBBSP_LM32_MILKYMIST_BSP_H
+
+#include <stdint.h>
+#include <bspopts.h>
+#include <bsp/default-initial-extension.h>
+
+#include <rtems.h>
+
+/**
+ * @defgroup lm32_milkymist Milkymist Support
+ *
+ * @ingroup bsp_lm32
+ *
+ * @brief Milkymist support package.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define BSP_HAS_FRAME_BUFFER 1
+
+/*
+ * lm32 requires certain aligment of mbuf because unaligned uint32_t
+ * accesses are not handled properly.
+ */
+
+#define CPU_U32_FIX
+
+#if defined(RTEMS_NETWORKING)
+struct rtems_bsdnet_ifconfig;
+extern int rtems_minimac_driver_attach (struct rtems_bsdnet_ifconfig *config,
+ int attaching);
+#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_minimac_driver_attach
+#define RTEMS_BSP_NETWORK_DRIVER_NAME "minimac0"
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/bsps/lm32/milkymist/include/system_conf.h b/bsps/lm32/milkymist/include/system_conf.h
new file mode 100644
index 0000000000..8ba4a1cf43
--- /dev/null
+++ b/bsps/lm32/milkymist/include/system_conf.h
@@ -0,0 +1,329 @@
+/**
+ * @file
+ *
+ * @ingroup lm32_milkymist
+ *
+ * @brief System configuration.
+ */
+
+/* system_conf.h
+ * Global System conf
+ *
+ * Milkymist port of RTEMS
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ *
+ * COPYRIGHT (c) 2010, 2011 Sebastien Bourdeauducq
+ */
+
+#ifndef __SYSTEM_CONFIG_H_
+#define __SYSTEM_CONFIG_H_
+
+#define UART_BAUD_RATE (115200)
+
+/* Clock frequency */
+#define MM_FREQUENCY (0xe0001074)
+
+/* FML bridge */
+#define FMLBRG_FLUSH_BASE (0xc8000000)
+#define FMLBRG_LINE_LENGTH (32)
+#define FMLBRG_LINE_COUNT (512)
+
+/* UART */
+#define MM_UART_RXTX (0xe0000000)
+#define MM_UART_DIV (0xe0000004)
+#define MM_UART_STAT (0xe0000008)
+#define MM_UART_CTRL (0xe000000c)
+
+#define UART_STAT_THRE (0x1)
+#define UART_STAT_RX_EVT (0x2)
+#define UART_STAT_TX_EVT (0x4)
+
+#define UART_CTRL_RX_INT (0x1)
+#define UART_CTRL_TX_INT (0x2)
+#define UART_CTRL_THRU (0x4)
+
+/* Timers */
+#define MM_TIMER1_COMPARE (0xe0001024)
+#define MM_TIMER1_COUNTER (0xe0001028)
+#define MM_TIMER1_CONTROL (0xe0001020)
+
+#define MM_TIMER0_COMPARE (0xe0001014)
+#define MM_TIMER0_COUNTER (0xe0001018)
+#define MM_TIMER0_CONTROL (0xe0001010)
+
+#define TIMER_ENABLE (0x01)
+#define TIMER_AUTORESTART (0x02)
+
+/* GPIO */
+#define MM_GPIO_IN (0xe0001000)
+#define MM_GPIO_OUT (0xe0001004)
+#define MM_GPIO_INTEN (0xe0001008)
+
+#define GPIO_BTN1 (0x00000001)
+#define GPIO_BTN2 (0x00000002)
+#define GPIO_BTN3 (0x00000004)
+#define GPIO_PCBREV0 (0x00000008)
+#define GPIO_PCBREV1 (0x00000010)
+#define GPIO_PCBREV2 (0x00000020)
+#define GPIO_PCBREV3 (0x00000040)
+#define GPIO_LED1 (0x00000001)
+#define GPIO_LED2 (0x00000002)
+
+/* System ID and reset */
+#define MM_SYSTEM_ID (0xe000107c)
+
+/* ICAP */
+#define MM_ICAP (0xe0001040)
+
+#define ICAP_READY (0x01)
+#define ICAP_CE (0x10000)
+#define ICAP_WRITE (0x20000)
+
+/* VGA */
+#define MM_VGA_RESET (0xe0003000)
+
+#define MM_VGA_HRES (0xe0003004)
+#define MM_VGA_HSYNC_START (0xe0003008)
+#define MM_VGA_HSYNC_END (0xe000300C)
+#define MM_VGA_HSCAN (0xe0003010)
+
+#define MM_VGA_VRES (0xe0003014)
+#define MM_VGA_VSYNC_START (0xe0003018)
+#define MM_VGA_VSYNC_END (0xe000301C)
+#define MM_VGA_VSCAN (0xe0003020)
+
+#define MM_VGA_BASEADDRESS (0xe0003024)
+#define MM_VGA_BASEADDRESS_ACT (0xe0003028)
+
+#define MM_VGA_BURST_COUNT (0xe000302C)
+
+#define MM_VGA_DDC (0xe0003030)
+
+#define MM_VGA_CLKSEL (0xe0003034)
+
+#define VGA_RESET (0x01)
+#define VGA_DDC_SDAIN (0x1)
+#define VGA_DDC_SDAOUT (0x2)
+#define VGA_DDC_SDAOE (0x4)
+#define VGA_DDC_SDC (0x8)
+
+/* Ethernet */
+#define MM_MINIMAC_SETUP (0xe0008000)
+#define MM_MINIMAC_MDIO (0xe0008004)
+
+#define MM_MINIMAC_STATE0 (0xe0008008)
+#define MM_MINIMAC_COUNT0 (0xe000800C)
+#define MM_MINIMAC_STATE1 (0xe0008010)
+#define MM_MINIMAC_COUNT1 (0xe0008014)
+
+#define MM_MINIMAC_TXCOUNT (0xe0008018)
+
+#define MINIMAC_RX0_BASE (0xb0000000)
+#define MINIMAC_RX1_BASE (0xb0000800)
+#define MINIMAC_TX_BASE (0xb0001000)
+
+#define MINIMAC_SETUP_PHYRST (0x1)
+
+#define MINIMAC_STATE_EMPTY (0x0)
+#define MINIMAC_STATE_LOADED (0x1)
+#define MINIMAC_STATE_PENDING (0x2)
+
+/* AC97 */
+#define MM_AC97_CRCTL (0xe0005000)
+
+#define AC97_CRCTL_RQEN (0x01)
+#define AC97_CRCTL_WRITE (0x02)
+
+#define MM_AC97_CRADDR (0xe0005004)
+#define MM_AC97_CRDATAOUT (0xe0005008)
+#define MM_AC97_CRDATAIN (0xe000500C)
+
+#define MM_AC97_DCTL (0xe0005010)
+#define MM_AC97_DADDRESS (0xe0005014)
+#define MM_AC97_DREMAINING (0xe0005018)
+
+#define MM_AC97_UCTL (0xe0005020)
+#define MM_AC97_UADDRESS (0xe0005024)
+#define MM_AC97_UREMAINING (0xe0005028)
+
+#define AC97_SCTL_EN (0x01)
+
+#define AC97_MAX_DMASIZE (0x3fffc)
+
+/* SoftUSB */
+#define MM_SOFTUSB_CONTROL (0xe000f000)
+
+#define SOFTUSB_CONTROL_RESET (0x1)
+
+#define MM_SOFTUSB_PMEM_BASE (0xa0000000)
+#define MM_SOFTUSB_DMEM_BASE (0xa0020000)
+
+#define SOFTUSB_PMEM_SIZE (1 << 13)
+#define SOFTUSB_DMEM_SIZE (1 << 13)
+
+/* PFPU */
+#define MM_PFPU_CTL (0xe0006000)
+#define PFPU_CTL_START (0x01)
+#define PFPU_CTL_BUSY (0x01)
+
+#define MM_PFPU_MESHBASE (0xe0006004)
+#define MM_PFPU_HMESHLAST (0xe0006008)
+#define MM_PFPU_VMESHLAST (0xe000600C)
+
+#define MM_PFPU_CODEPAGE (0xe0006010)
+
+#define MM_PFPU_DREGBASE (0xe0006400)
+#define MM_PFPU_CODEBASE (0xe0006800)
+
+#define PFPU_PAGESIZE (512)
+#define PFPU_SPREG_COUNT (2)
+#define PFPU_REG_X (0)
+#define PFPU_REG_Y (1)
+
+/* TMU */
+#define MM_TMU_CTL (0xe0007000)
+#define TMU_CTL_START (0x01)
+#define TMU_CTL_BUSY (0x01)
+#define TMU_CTL_CHROMAKEY (0x02)
+
+#define MM_TMU_HMESHLAST (0xe0007004)
+#define MM_TMU_VMESHLAST (0xe0007008)
+#define MM_TMU_BRIGHTNESS (0xe000700C)
+#define MM_TMU_CHROMAKEY (0xe0007010)
+
+#define MM_TMU_VERTICESADR (0xe0007014)
+#define MM_TMU_TEXFBUF (0xe0007018)
+#define MM_TMU_TEXHRES (0xe000701C)
+#define MM_TMU_TEXVRES (0xe0007020)
+#define MM_TMU_TEXHMASK (0xe0007024)
+#define MM_TMU_TEXVMASK (0xe0007028)
+
+#define MM_TMU_DSTFBUF (0xe000702C)
+#define MM_TMU_DSTHRES (0xe0007030)
+#define MM_TMU_DSTVRES (0xe0007034)
+#define MM_TMU_DSTHOFFSET (0xe0007038)
+#define MM_TMU_DSTVOFFSET (0xe000703C)
+#define MM_TMU_DSTSQUAREW (0xe0007040)
+#define MM_TMU_DSTSQUAREH (0xe0007044)
+
+#define MM_TMU_ALPHA (0xe0007048)
+
+/* Memory card */
+#define MM_MEMCARD_CLK2XDIV (0xe0004000)
+
+#define MM_MEMCARD_ENABLE (0xe0004004)
+
+#define MEMCARD_ENABLE_CMD_TX (0x1)
+#define MEMCARD_ENABLE_CMD_RX (0x2)
+#define MEMCARD_ENABLE_DAT_TX (0x4)
+#define MEMCARD_ENABLE_DAT_RX (0x8)
+
+#define MM_MEMCARD_PENDING (0xe0004008)
+
+#define MEMCARD_PENDING_CMD_TX (0x1)
+#define MEMCARD_PENDING_CMD_RX (0x2)
+#define MEMCARD_PENDING_DAT_TX (0x4)
+#define MEMCARD_PENDING_DAT_RX (0x8)
+
+#define MM_MEMCARD_START (0xe000400c)
+
+#define MEMCARD_START_CMD_RX (0x1)
+#define MEMCARD_START_DAT_RX (0x2)
+
+#define MM_MEMCARD_CMD (0xe0004010)
+#define MM_MEMCARD_DAT (0xe0004014)
+
+/* DMX */
+#define MM_DMX_TX(x) (0xe000c000+4*(x))
+#define MM_DMX_THRU (0xe000c800)
+#define MM_DMX_RX(x) (0xe000d000+4*(x))
+
+/* MIDI */
+#define MM_MIDI_RXTX (0xe000b000)
+#define MM_MIDI_DIV (0xe000b004)
+#define MM_MIDI_STAT (0xe000b008)
+#define MM_MIDI_CTRL (0xe000b00c)
+
+#define MIDI_STAT_THRE (0x1)
+#define MIDI_STAT_RX_EVT (0x2)
+#define MIDI_STAT_TX_EVT (0x4)
+
+#define MIDI_CTRL_RX_INT (0x1)
+#define MIDI_CTRL_TX_INT (0x2)
+#define MIDI_CTRL_THRU (0x4)
+
+/* IR */
+#define MM_IR_RX (0xe000e000)
+
+/* Video input */
+#define MM_BT656_I2C (0xe000a000)
+#define MM_BT656_FILTERSTATUS (0xe000a004)
+#define MM_BT656_BASE (0xe000a008)
+#define MM_BT656_MAXBURSTS (0xe000a00c)
+#define MM_BT656_DONEBURSTS (0xe000a010)
+
+#define BT656_I2C_SDAIN (0x1)
+#define BT656_I2C_SDAOUT (0x2)
+#define BT656_I2C_SDAOE (0x4)
+#define BT656_I2C_SDC (0x8)
+
+#define BT656_FILTER_FIELD1 (0x1)
+#define BT656_FILTER_FIELD2 (0x2)
+#define BT656_FILTER_INFRAME (0x4)
+
+/* Interrupts */
+#define MM_IRQ_UART (0)
+#define MM_IRQ_GPIO (1)
+#define MM_IRQ_TIMER0 (2)
+#define MM_IRQ_TIMER1 (3)
+#define MM_IRQ_AC97CRREQUEST (4)
+#define MM_IRQ_AC97CRREPLY (5)
+#define MM_IRQ_AC97DMAR (6)
+#define MM_IRQ_AC97DMAW (7)
+#define MM_IRQ_PFPU (8)
+#define MM_IRQ_TMU (9)
+#define MM_IRQ_ETHRX (10)
+#define MM_IRQ_ETHTX (11)
+#define MM_IRQ_VIDEOIN (12)
+#define MM_IRQ_MIDI (13)
+#define MM_IRQ_IR (14)
+#define MM_IRQ_USB (15)
+
+/* Flash layout */
+#define FLASH_BASE (0x80000000)
+
+#define FLASH_OFFSET_STANDBY_BITSTREAM (0x80000000)
+
+#define FLASH_OFFSET_RESCUE_BITSTREAM (0x800A0000)
+#define FLASH_OFFSET_RESCUE_BIOS (0x80220000)
+#define FLASH_OFFSET_MAC_ADDRESS (0x802200E0)
+#define FLASH_OFFSET_RESCUE_SPLASH (0x80240000)
+#define FLASH_OFFSET_RESCUE_APP (0x802E0000)
+
+#define FLASH_OFFSET_REGULAR_BITSTREAM (0x806E0000)
+#define FLASH_OFFSET_REGULAR_BIOS (0x80860000)
+#define FLASH_OFFSET_REGULAR_SPLASH (0x80880000)
+#define FLASH_OFFSET_REGULAR_APP (0x80920000)
+
+/* MMIO */
+#define MM_READ(reg) (*((volatile unsigned int *)(reg)))
+#define MM_WRITE(reg, val) *((volatile unsigned int *)(reg)) = val
+
+/* Flash partitions */
+
+#define FLASH_SECTOR_SIZE (128*1024)
+
+#define FLASH_PARTITION_COUNT (5)
+
+#define FLASH_PARTITIONS { \
+ { .start_address = 0x806E0000, .length = 0x0180000 }, \
+ { .start_address = 0x80860000, .length = 0x0020000 }, \
+ { .start_address = 0x80880000, .length = 0x00A0000 }, \
+ { .start_address = 0x80920000, .length = 0x0400000 }, \
+ { .start_address = 0x80D20000, .length = 0x12E0000 }, \
+}
+
+#endif /* __SYSTEM_CONFIG_H_ */
diff --git a/bsps/lm32/milkymist/include/tm27.h b/bsps/lm32/milkymist/include/tm27.h
new file mode 100644
index 0000000000..0dfa7bf628
--- /dev/null
+++ b/bsps/lm32/milkymist/include/tm27.h
@@ -0,0 +1 @@
+#include <rtems/tm27-default.h>