diff options
Diffstat (limited to 'bsps/lm32')
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> |