diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-08-01 13:48:40 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-08-01 13:48:40 +0000 |
commit | dce1032b6cdc2cd3c4e6b0ca3695aca6558c56c3 (patch) | |
tree | e485d78b238db7255395470e037305af8b8a642c /c/src/lib/libbsp/lm32/milkymist | |
parent | 2011-08-01 Jennifer Averett <Jennifer.Averett@OARcorp.com> (diff) | |
download | rtems-dce1032b6cdc2cd3c4e6b0ca3695aca6558c56c3.tar.bz2 |
2011-08-01 Sebastien Bourdeauducq <sebastien.bourdeauducq@gmail.com>
PR 1869/bsps
* startup/bspclean.c: New file.
* include/tm27.h: Removed.
* ChangeLog, Makefile.am, README, preinstall.am, include/bsp.h,
include/system_conf.h, make/custom/milkymist.cfg, startup/linkcmds:
Complete BSP for Milkymist One supporting Milkymist SOC 1.0.x.
Includes new or updated drivers for:
- Multi-standard video input (PAL/SECAM/NTSC)
- Two DMX512 (RS485) ports
- MIDI IN and MIDI OUT ports
- VGA output
- AC'97 audio
- NOR flash
- 10/100 Ethernet
- Memory card (experimental and incomplete)
- USB host connectors (input devices only)
- RC5 infrared receiver
- RS232 debug port
Diffstat (limited to 'c/src/lib/libbsp/lm32/milkymist')
-rw-r--r-- | c/src/lib/libbsp/lm32/milkymist/ChangeLog | 23 | ||||
-rw-r--r-- | c/src/lib/libbsp/lm32/milkymist/Makefile.am | 87 | ||||
-rw-r--r-- | c/src/lib/libbsp/lm32/milkymist/README | 29 | ||||
-rw-r--r-- | c/src/lib/libbsp/lm32/milkymist/include/bsp.h | 34 | ||||
-rw-r--r-- | c/src/lib/libbsp/lm32/milkymist/include/system_conf.h | 308 | ||||
-rw-r--r-- | c/src/lib/libbsp/lm32/milkymist/include/tm27.h | 32 | ||||
-rw-r--r-- | c/src/lib/libbsp/lm32/milkymist/make/custom/milkymist.cfg | 1 | ||||
-rw-r--r-- | c/src/lib/libbsp/lm32/milkymist/preinstall.am | 70 | ||||
-rw-r--r-- | c/src/lib/libbsp/lm32/milkymist/startup/bspclean.c | 56 | ||||
-rw-r--r-- | c/src/lib/libbsp/lm32/milkymist/startup/linkcmds | 6 |
10 files changed, 514 insertions, 132 deletions
diff --git a/c/src/lib/libbsp/lm32/milkymist/ChangeLog b/c/src/lib/libbsp/lm32/milkymist/ChangeLog index d4008aa6cb..eb7582ed24 100644 --- a/c/src/lib/libbsp/lm32/milkymist/ChangeLog +++ b/c/src/lib/libbsp/lm32/milkymist/ChangeLog @@ -1,3 +1,24 @@ +2011-08-01 Sebastien Bourdeauducq <sebastien.bourdeauducq@gmail.com> + + PR 1869/bsps + * startup/bspclean.c: New file. + * include/tm27.h: Removed. + * ChangeLog, Makefile.am, README, preinstall.am, include/bsp.h, + include/system_conf.h, make/custom/milkymist.cfg, startup/linkcmds: + Complete BSP for Milkymist One supporting Milkymist SOC 1.0.x. + Includes new or updated drivers for: + - Multi-standard video input (PAL/SECAM/NTSC) + - Two DMX512 (RS485) ports + - MIDI IN and MIDI OUT ports + - VGA output + - AC'97 audio + - NOR flash + - 10/100 Ethernet + - Memory card (experimental and incomplete) + - USB host connectors (input devices only) + - RC5 infrared receiver + - RS232 debug port + 2011-02-02 Ralf Corsépius <ralf.corsepius@rtems.org> * configure.ac: Require autoconf-2.68, automake-1.11.1. @@ -13,5 +34,3 @@ preinstall.am, Documentation/uart.txt, include/.cvsignore, include/bsp.h, include/system_conf.h, include/tm27.h, make/custom/milkymist.cfg, startup/linkcmds: New files. - -08 / 12 / 2010 : <Yann Sionneau> Added Milkymist BSP diff --git a/c/src/lib/libbsp/lm32/milkymist/Makefile.am b/c/src/lib/libbsp/lm32/milkymist/Makefile.am index 0e09d57949..5d4d5580c3 100644 --- a/c/src/lib/libbsp/lm32/milkymist/Makefile.am +++ b/c/src/lib/libbsp/lm32/milkymist/Makefile.am @@ -10,8 +10,25 @@ include_bspdir = $(includedir)/bsp dist_project_lib_DATA = bsp_specs -include_HEADERS = include/bsp.h -include_HEADERS += include/tm27.h +include_HEADERS = include/bsp.h +include_HEADERS += ../../shared/include/coverhd.h +include_HEADERS += ../../shared/include/tm27.h + +include_bsp_HEADERS = ../../lm32/shared/include/irq.h +include_bsp_HEADERS += ../../shared/include/irq-generic.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_gpio/milkymist_gpio.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_buttons/milkymist_buttons.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_ac97/milkymist_ac97.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_usbinput/milkymist_usbinput.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_pfpu/milkymist_pfpu.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_tmu/milkymist_tmu.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_memcard/milkymist_memcard.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_flash/milkymist_flash.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_dmx/milkymist_dmx.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_midi/milkymist_midi.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_ir/milkymist_ir.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_video/milkymist_video.h +include_bsp_HEADERS += ../../lm32/shared/milkymist_versions/milkymist_versions.h nodist_include_HEADERS = include/bspopts.h nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h @@ -19,7 +36,6 @@ DISTCLEANFILES = include/bspopts.h noinst_PROGRAMS = -include_HEADERS += ../../shared/include/coverhd.h include_HEADERS += include/system_conf.h noinst_LIBRARIES = libbspstart.a @@ -33,33 +49,74 @@ libbsp_a_SOURCES = libbsp_a_LIBADD = # startup -libbsp_a_SOURCES += ../../shared/bspclean.c ../../shared/bsplibc.c \ - ../../shared/bsppost.c ../shared/startup/bspstart.c \ - ../../shared/bspreset.c ../../shared/bsppretaskinghook.c \ - ../../shared/bspgetworkarea.c ../../shared/bootcard.c \ - ../../shared/sbrk.c ../../lm32/shared/startup/setvec.c \ - ../../shared/gnatinstallhandler.c +libbsp_a_SOURCES += startup/bspclean.c +libbsp_a_SOURCES += ../../shared/bsplibc.c +libbsp_a_SOURCES += ../../shared/bsppost.c +libbsp_a_SOURCES += ../shared/startup/bspstart.c +libbsp_a_SOURCES += ../../shared/bsppretaskinghook.c +libbsp_a_SOURCES += ../../shared/bspgetworkarea.c +libbsp_a_SOURCES += ../../shared/bootcard.c +libbsp_a_SOURCES += ../../shared/sbrk.c +libbsp_a_SOURCES += ../../shared/gnatinstallhandler.c + +# irq +libbsp_a_SOURCES += ../../lm32/shared/irq/irq.c # clock - libbsp_a_SOURCES += ../../lm32/shared/milkymist_clock/ckinit.c # console -libbsp_a_SOURCES += ../../lm32/shared/milkymist_console/console.c \ - ../../lm32/shared/milkymist_console/uart.c +libbsp_a_SOURCES += ../../lm32/shared/milkymist_console/console.c +libbsp_a_SOURCES += ../../lm32/shared/milkymist_console/uart.c + # timer libbsp_a_SOURCES += ../../lm32/shared/milkymist_timer/timer.c # framebuffer libbsp_a_SOURCES += ../../lm32/shared/milkymist_framebuffer/framebuffer.c -# gpio +# GPIO libbsp_a_SOURCES += ../../lm32/shared/milkymist_gpio/gpio.c +# buttons +libbsp_a_SOURCES += ../../lm32/shared/milkymist_buttons/buttons.c + +# ac97 +libbsp_a_SOURCES += ../../lm32/shared/milkymist_ac97/ac97.c + +# usbinput +libbsp_a_SOURCES += ../../lm32/shared/milkymist_usbinput/usbinput.c + +# PFPU +libbsp_a_SOURCES += ../../lm32/shared/milkymist_pfpu/pfpu.c + +# TMU +libbsp_a_SOURCES += ../../lm32/shared/milkymist_tmu/tmu.c + +# memory card +libbsp_a_SOURCES += ../../lm32/shared/milkymist_memcard/memcard.c + +# flash +libbsp_a_SOURCES += ../../lm32/shared/milkymist_flash/flash.c + +# DMX +libbsp_a_SOURCES += ../../lm32/shared/milkymist_dmx/dmx.c + +# MIDI +libbsp_a_SOURCES += ../../lm32/shared/milkymist_midi/midi.c + +# IR +libbsp_a_SOURCES += ../../lm32/shared/milkymist_ir/ir.c + +# video input +libbsp_a_SOURCES += ../../lm32/shared/milkymist_video/video.c + +# versions +libbsp_a_SOURCES += ../../lm32/shared/milkymist_versions/versions.c + if HAS_NETWORKING noinst_PROGRAMS += network.rel -network_rel_SOURCES = ../../lm32/shared/milkymist_networking/network.c \ - ../../lm32/shared/milkymist_networking/mm_crc32.c +network_rel_SOURCES = ../../lm32/shared/milkymist_networking/network.c network_rel_CPPFLAGS = $(AM_CPPFLAGS) -D__INSIDE_RTEMS_BSD_TCPIP_STACK__ network_rel_LDFLAGS = $(RTEMS_RELLDFLAGS) libbsp_a_LIBADD += network.rel diff --git a/c/src/lib/libbsp/lm32/milkymist/README b/c/src/lib/libbsp/lm32/milkymist/README index 20568ee496..b44d3735c2 100644 --- a/c/src/lib/libbsp/lm32/milkymist/README +++ b/c/src/lib/libbsp/lm32/milkymist/README @@ -2,20 +2,19 @@ # $Id$ # -This is a BSP written by Yann Sionneau <yann.sionneau@telecom-sudparis.eu> -as part of Google Summer of Code 2010. +Full RTEMS port to the Milkymist One. Supports Milkymist SoC 1.0.x. -This is a BSP to make RTEMS run on Milkymist One board using Milkymist SoC +Includes drivers for: +- Multi-standard video input (PAL/SECAM/NTSC) +- Two DMX512 (RS485) ports +- MIDI IN and MIDI OUT ports +- VGA output +- AC'97 audio +- NOR flash +- 10/100 Ethernet +- Memory card (experimental and incomplete) +- USB host connectors (input devices only, using the softusb-input firmware) +- RC5 infrared receiver +- RS232 debug port -It provides driver for timer, uart, ethernet, framebuffer so far. - -Milkymist SoC is running @ 83 MHz with 128 MB of 32-bit DDR400 SDRAM -The SoC is based on a XC6SLX45 Spartan-6 FPGA running -the LatticeMico32 softcore. - -More informations available at : http://www.milkymist.org/ - -Information about the porting can be found in Yann Sionneau's blog -at http://sionneau.net/ - -Milkymist is a project leaded by Sebastien Bourdeauducq (aka lekernel) +For more information: http://www.milkymist.org/ diff --git a/c/src/lib/libbsp/lm32/milkymist/include/bsp.h b/c/src/lib/libbsp/lm32/milkymist/include/bsp.h index 2d5a91c7c0..940e280fa2 100644 --- a/c/src/lib/libbsp/lm32/milkymist/include/bsp.h +++ b/c/src/lib/libbsp/lm32/milkymist/include/bsp.h @@ -8,8 +8,7 @@ * * $Id$ * - * Yann Sionneau <yann.sionneau@telecom-sudparis.eu>, (GSoC 2010) - * Telecom SudParis + * COPYRIGHT (c) 2011 Sebastien Bourdeauducq */ #ifndef _BSP_H @@ -22,22 +21,16 @@ #include <rtems/console.h> #include <rtems/clockdrv.h> - #ifdef __cplusplus extern "C" { #endif -#define BSP_DIRTY_MEMORY 1 - #define BSP_HAS_FRAME_BUFFER 1 -#define GPIO_DRIVER_TABLE_ENTRY { gpio_initialize, \ -gpio_open, gpio_close, gpio_read, gpio_write, gpio_control} - - /* - * lm32 requires certain aligment of mbuf because unaligned uint32_t - * accesses are not handled properly. - */ +/* + * lm32 requires certain aligment of mbuf because unaligned uint32_t + * accesses are not handled properly. + */ #define CPU_U32_FIX @@ -50,25 +43,8 @@ extern int rtems_minimac_driver_attach (struct rtems_bsdnet_ifconfig *config, #define RTEMS_BSP_NETWORK_DRIVER_NAME "minimac0" #endif - /* - * Simple spin delay in microsecond units for device drivers. - * This is very dependent on the clock speed of the target. - */ - -#define rtems_bsp_delay( microseconds ) \ - { \ - } - -/* functions */ -lm32_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 */ -); - #ifdef __cplusplus } #endif #endif -/* end of include file */ diff --git a/c/src/lib/libbsp/lm32/milkymist/include/system_conf.h b/c/src/lib/libbsp/lm32/milkymist/include/system_conf.h index 5f49c91f76..6588e8f5eb 100644 --- a/c/src/lib/libbsp/lm32/milkymist/include/system_conf.h +++ b/c/src/lib/libbsp/lm32/milkymist/include/system_conf.h @@ -1,56 +1,304 @@ /* system_conf.h * Global System conf - * + * * Milkymist port of RTEMS * - * The license and distribution terms for this file may be + * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. * * $Id$ * + * COPYRIGHT (c) 2010, 2011 Sebastien Bourdeauducq */ #ifndef __SYSTEM_CONFIG_H_ #define __SYSTEM_CONFIG_H_ -#define CPU_FREQUENCY (83333333) -#define UART_BAUD_RATE (115200) +#define CPU_FREQUENCY (80000000) +#define UART_BAUD_RATE (115200) + +/* 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) + +/* 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) -#define MM_TIMER1_COMPARE (0xe0001024) -#define MM_TIMER1_COUNTER (0xe0001028) -#define MM_TIMER1_CONTROL (0xe0001020) +/* System ID and reset */ +#define MM_SYSTEM_ID (0xe000103c) -#define MM_TIMER0_COMPARE (0xe0001014) -#define MM_TIMER0_COUNTER (0xe0001018) -#define MM_TIMER0_CONTROL (0xe0001010) +/* ICAP */ +#define MM_ICAP (0xe0001034) -#define TIMER_ENABLE (0x01) -#define TIMER_AUTORESTART (0x02) +#define ICAP_READY (0x01) +#define ICAP_CE (0x10000) +#define ICAP_WRITE (0x20000) -#define MM_VGA_RESET_MODE (0x01) -#define MM_VGA_RESET (0xe0003000) -#define MM_VGA_BASEADDRESS (0xe0003024) +/* 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_MINIMAC_SETUP (0xe0009000) -#define MM_MINIMAC_STATE0 (0xe0009008) -#define MM_MINIMAC_ADDR0 (0xe000900C) -#define MM_MINIMAC_COUNT0 (0xe0009010) +#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 << 12) +#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_DIVISOR (0xe000b004) +#define MM_MIDI_THRU (0xe000b008) + +/* 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_UARTRX (0) +#define MM_IRQ_UARTTX (1) +#define MM_IRQ_GPIO (2) +#define MM_IRQ_TIMER0 (3) +#define MM_IRQ_TIMER1 (4) +#define MM_IRQ_AC97CRREQUEST (5) +#define MM_IRQ_AC97CRREPLY (6) +#define MM_IRQ_AC97DMAR (7) +#define MM_IRQ_AC97DMAW (8) +#define MM_IRQ_PFPU (9) +#define MM_IRQ_TMU (10) +#define MM_IRQ_ETHRX (11) +#define MM_IRQ_ETHTX (12) +#define MM_IRQ_VIDEOIN (13) +#define MM_IRQ_MIDIRX (14) +#define MM_IRQ_MIDITX (15) +#define MM_IRQ_IR (16) +#define MM_IRQ_USB (17) + +/* 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 -#define MM_MINIMAC_STATE1 (0xe0009014) -#define MM_MINIMAC_ADDR1 (0xe0009018) -#define MM_MINIMAC_COUNT1 (0xe000901C) +/* Flash partitions */ -#define MM_MINIMAC_STATE2 (0xe0009020) -#define MM_MINIMAC_ADDR2 (0xe0009024) -#define MM_MINIMAC_COUNT2 (0xe0009028) +#define FLASH_SECTOR_SIZE (128*1024) -#define MM_MINIMAC_STATE3 (0xe000902C) -#define MM_MINIMAC_ADDR3 (0xe0009030) -#define MM_MINIMAC_COUNT3 (0xe0009034) +#define FLASH_PARTITION_COUNT (5) -#define MM_MINIMAC_TXREMAINING (0xe000903C) -#define MM_MINIMAC_TXADR (0xe0009038) +#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/c/src/lib/libbsp/lm32/milkymist/include/tm27.h b/c/src/lib/libbsp/lm32/milkymist/include/tm27.h deleted file mode 100644 index a10e11cab1..0000000000 --- a/c/src/lib/libbsp/lm32/milkymist/include/tm27.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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.com/license/LICENSE. - * - * $Id$ - */ - -#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/c/src/lib/libbsp/lm32/milkymist/make/custom/milkymist.cfg b/c/src/lib/libbsp/lm32/milkymist/make/custom/milkymist.cfg index 5571f7b113..5a44658389 100644 --- a/c/src/lib/libbsp/lm32/milkymist/make/custom/milkymist.cfg +++ b/c/src/lib/libbsp/lm32/milkymist/make/custom/milkymist.cfg @@ -18,7 +18,6 @@ CPU_CFLAGS = -mbarrel-shift-enabled -mmultiply-enabled \ -mdivide-enabled -msign-extend-enabled # optimize flag: typically -O2 -# ATM, doesn't work with optimization levels > 0 CFLAGS_OPTIMIZE_V = -O2 -g define bsp-post-link diff --git a/c/src/lib/libbsp/lm32/milkymist/preinstall.am b/c/src/lib/libbsp/lm32/milkymist/preinstall.am index b3375ceee9..c3217ef01a 100644 --- a/c/src/lib/libbsp/lm32/milkymist/preinstall.am +++ b/c/src/lib/libbsp/lm32/milkymist/preinstall.am @@ -41,10 +41,74 @@ $(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp.h -$(PROJECT_INCLUDE)/tm27.h: include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp) +$(PROJECT_INCLUDE)/coverhd.h: ../../shared/include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h + +$(PROJECT_INCLUDE)/tm27.h: ../../shared/include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h +$(PROJECT_INCLUDE)/bsp/irq.h: ../../lm32/shared/include/irq.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq.h + +$(PROJECT_INCLUDE)/bsp/irq-generic.h: ../../shared/include/irq-generic.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq-generic.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq-generic.h + +$(PROJECT_INCLUDE)/bsp/milkymist_gpio.h: ../../lm32/shared/milkymist_gpio/milkymist_gpio.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_gpio.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_gpio.h + +$(PROJECT_INCLUDE)/bsp/milkymist_buttons.h: ../../lm32/shared/milkymist_buttons/milkymist_buttons.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_buttons.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_buttons.h + +$(PROJECT_INCLUDE)/bsp/milkymist_ac97.h: ../../lm32/shared/milkymist_ac97/milkymist_ac97.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_ac97.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_ac97.h + +$(PROJECT_INCLUDE)/bsp/milkymist_usbinput.h: ../../lm32/shared/milkymist_usbinput/milkymist_usbinput.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_usbinput.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_usbinput.h + +$(PROJECT_INCLUDE)/bsp/milkymist_pfpu.h: ../../lm32/shared/milkymist_pfpu/milkymist_pfpu.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_pfpu.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_pfpu.h + +$(PROJECT_INCLUDE)/bsp/milkymist_tmu.h: ../../lm32/shared/milkymist_tmu/milkymist_tmu.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_tmu.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_tmu.h + +$(PROJECT_INCLUDE)/bsp/milkymist_memcard.h: ../../lm32/shared/milkymist_memcard/milkymist_memcard.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_memcard.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_memcard.h + +$(PROJECT_INCLUDE)/bsp/milkymist_flash.h: ../../lm32/shared/milkymist_flash/milkymist_flash.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_flash.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_flash.h + +$(PROJECT_INCLUDE)/bsp/milkymist_dmx.h: ../../lm32/shared/milkymist_dmx/milkymist_dmx.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_dmx.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_dmx.h + +$(PROJECT_INCLUDE)/bsp/milkymist_midi.h: ../../lm32/shared/milkymist_midi/milkymist_midi.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_midi.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_midi.h + +$(PROJECT_INCLUDE)/bsp/milkymist_ir.h: ../../lm32/shared/milkymist_ir/milkymist_ir.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_ir.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_ir.h + +$(PROJECT_INCLUDE)/bsp/milkymist_video.h: ../../lm32/shared/milkymist_video/milkymist_video.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_video.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_video.h + +$(PROJECT_INCLUDE)/bsp/milkymist_versions.h: ../../lm32/shared/milkymist_versions/milkymist_versions.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/milkymist_versions.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/milkymist_versions.h + $(PROJECT_INCLUDE)/bspopts.h: include/bspopts.h $(PROJECT_INCLUDE)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bspopts.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bspopts.h @@ -53,10 +117,6 @@ $(PROJECT_INCLUDE)/bsp/bootcard.h: ../../shared/include/bootcard.h $(PROJECT_INC $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/bootcard.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/bootcard.h -$(PROJECT_INCLUDE)/coverhd.h: ../../shared/include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp) - $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h -PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h - $(PROJECT_INCLUDE)/system_conf.h: include/system_conf.h $(PROJECT_INCLUDE)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/system_conf.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/system_conf.h diff --git a/c/src/lib/libbsp/lm32/milkymist/startup/bspclean.c b/c/src/lib/libbsp/lm32/milkymist/startup/bspclean.c new file mode 100644 index 0000000000..202ff47c0d --- /dev/null +++ b/c/src/lib/libbsp/lm32/milkymist/startup/bspclean.c @@ -0,0 +1,56 @@ +/* bspclean.c + * + * Milkymist shutdown routine + * + * 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.com/license/LICENSE. + * + * $Id$ + */ + +#include <rtems.h> +#include "../include/system_conf.h" + +static void reboot(void) +{ + /* Writing to CSR_SYSTEM_ID causes a system reset */ + MM_WRITE(MM_SYSTEM_ID, 1); +} + +static void icap_write(int val, unsigned int w) +{ + while (!(MM_READ(MM_ICAP) & ICAP_READY)); + if (!val) + w |= ICAP_CE|ICAP_WRITE; + MM_WRITE(MM_ICAP, w); +} +static void reconf(void) +{ + icap_write(0, 0xffff); /* dummy word */ + icap_write(0, 0xffff); /* dummy word */ + icap_write(0, 0xffff); /* dummy word */ + icap_write(0, 0xffff); /* dummy word */ + icap_write(1, 0xaa99); /* sync word part 1 */ + icap_write(1, 0x5566); /* sync word part 2 */ + icap_write(1, 0x30a1); /* write to command register */ + icap_write(1, 0x0000); /* null command */ + icap_write(1, 0x30a1); /* write to command register */ + icap_write(1, 0x000e); /* reboot command */ + icap_write(1, 0x2000); /* NOP */ + icap_write(1, 0x2000); /* NOP */ + icap_write(1, 0x2000); /* NOP */ + icap_write(1, 0x2000); /* NOP */ + icap_write(0, 0x1111); /* NULL */ + icap_write(0, 0xffff); /* dummy word */ +} + +void bsp_cleanup(uint32_t status) +{ + if (status) + reconf(); + else + reboot(); +} diff --git a/c/src/lib/libbsp/lm32/milkymist/startup/linkcmds b/c/src/lib/libbsp/lm32/milkymist/startup/linkcmds index 490ae6093a..aeebec78d1 100644 --- a/c/src/lib/libbsp/lm32/milkymist/startup/linkcmds +++ b/c/src/lib/libbsp/lm32/milkymist/startup/linkcmds @@ -9,13 +9,13 @@ ENTRY(_start) * Declare some sizes. Heap is sized at whatever ram space is left. */ RamBase = DEFINED(RamBase) ? RamBase : 0x40000000; -RamSize = DEFINED(RamSize) ? RamSize : 64M; -HeapSize = DEFINED(HeapSize) ? HeapSize : 2M; +RamSize = DEFINED(RamSize) ? RamSize : 128M; +HeapSize = DEFINED(HeapSize) ? HeapSize : 92M; _StackSize = DEFINED(_StackSize) ? _StackSize : 0x2000; PROVIDE (__stack = 0); MEMORY { - sdram : ORIGIN = 0x40000000 , LENGTH = 64M + sdram : ORIGIN = 0x40000000 , LENGTH = 128M } SECTIONS { |