Can you rebase these and send again? Previous patches have changed at least bsp.h, Makefile.am and preinstall.am.
--joel On 8/10/2015 7:47 AM, YANG QIAO wrote:
From: YANG Qiao <yangqiao0...@me.com> --- c/src/lib/libbsp/arm/raspberrypi/Makefile.am | 4 ++ c/src/lib/libbsp/arm/raspberrypi/include/mailbox.h | 32 +++++++++++++ .../libbsp/arm/raspberrypi/include/raspberrypi.h | 49 +++++++++++++++++++ c/src/lib/libbsp/arm/raspberrypi/misc/mailbox.c | 56 ++++++++++++++++++++++ c/src/lib/libbsp/arm/raspberrypi/preinstall.am | 4 ++ 5 files changed, 145 insertions(+) create mode 100644 c/src/lib/libbsp/arm/raspberrypi/include/mailbox.h create mode 100644 c/src/lib/libbsp/arm/raspberrypi/misc/mailbox.c diff --git a/c/src/lib/libbsp/arm/raspberrypi/Makefile.am b/c/src/lib/libbsp/arm/raspberrypi/Makefile.am index c6133df..70bc01d 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/Makefile.am +++ b/c/src/lib/libbsp/arm/raspberrypi/Makefile.am @@ -43,6 +43,7 @@ include_bsp_HEADERS += ../shared/include/arm-release-id.h include_bsp_HEADERS += include/irq.h include_bsp_HEADERS += include/mmu.h include_bsp_HEADERS += include/usart.h +include_bsp_HEADERS += include/mailbox.h include_bsp_HEADERS += include/raspberrypi.h include_libcpu_HEADERS = ../../../libcpu/arm/shared/include/cache_.h \ @@ -123,6 +124,9 @@ libbsp_a_SOURCES += misc/timer.c # I2C +# Mailbox +libbsp_a_SOURCES += misc/mailbox.c + # Cache libbsp_a_SOURCES += ../../../libcpu/shared/src/cache_manager.c libbsp_a_SOURCES += ../../../libcpu/arm/shared/include/cache_.h diff --git a/c/src/lib/libbsp/arm/raspberrypi/include/mailbox.h b/c/src/lib/libbsp/arm/raspberrypi/include/mailbox.h new file mode 100644 index 0000000..e6cb0f8 --- /dev/null +++ b/c/src/lib/libbsp/arm/raspberrypi/include/mailbox.h @@ -0,0 +1,32 @@ +/** + * @file + * + * @ingroup raspberrypi + * + * @brief mailbox support. + */ +/* + * Copyright (c) 2015 Yang Qiao + * + * 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_ARM_RASPBERRYPI_MAILBOX_H +#define LIBBSP_ARM_RASPBERRYPI_MAILBOX_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +extern unsigned int raspberrypi_mailbox_read(unsigned int channel); +extern void raspberrypi_mailbox_write(unsigned int channel, unsigned int data); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* LIBBSP_ARM_RASPBERRYPI_MAILBOX_H */ diff --git a/c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h b/c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h index c33e22a..dc1be07 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h +++ b/c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h @@ -8,6 +8,8 @@ */ /* + * Copyright (c) 2015 Yang Qiao + * based on work by: * Copyright (c) 2013 Alan Cudmore. * * The license and distribution terms for this file may be @@ -208,6 +210,53 @@ /** @} */ + /** + * @name Mailbox Registers + * + * @{ + */ + +#define BCM2835_MBOX_BASE (RPI_PERIPHERAL_BASE+0xB880) + +#define BCM2835_MBOX_PEEK (BCM2835_MBOX_BASE+0x10) +#define BCM2835_MBOX_READ (BCM2835_MBOX_BASE+0x00) +#define BCM2835_MBOX_WRITE (BCM2835_MBOX_BASE+0x20) +#define BCM2835_MBOX_STATUS (BCM2835_MBOX_BASE+0x18) +#define BCM2835_MBOX_SENDER (BCM2835_MBOX_BASE+0x14) +#define BCM2835_MBOX_CONFIG (BCM2835_MBOX_BASE+0x1C) + +#define BCM2835_MBOX_FULL (BCM2835_MBOX_BASE+0x80000000) +#define BCM2835_MBOX_EMPTY (BCM2835_MBOX_BASE+0x40000000) + +/** +* @name Mailbox Channels +* +* @{ +*/ + +/* Power Manager channel */ +#define BCM2835_MBOX_CHANNEL_PM 0 +/* Framebuffer channel */ +#define BCM2835_MBOX_CHANNEL_FB 1 + /* Virtual UART channel */ +#define BCM2835_MBOX_CHANNEL_VUART 2 + /* VCHIQ channel */ +#define BCM2835_MBOX_CHANNEL_VCHIQ 3 + /* LEDs channel */ +#define BCM2835_MBOX_CHANNEL_LED 4 + /* Button channel */ +#define BCM2835_MBOX_CHANNEL_BUTTON 5 + /* Touch screen channel */ +#define BCM2835_MBOX_CHANNEL_TOUCHS 6 +/* Property tags (ARM <-> VC) channel */ +#define BCM2835_MBOX_CHANNEL_PROP_AVC 8 + /* Property tags (VC <-> ARM) channel */ +#define BCM2835_MBOX_CHANNEL_PROP_VCA 9 + +/** @} */ + +/** @} */ + /** @} */ diff --git a/c/src/lib/libbsp/arm/raspberrypi/misc/mailbox.c b/c/src/lib/libbsp/arm/raspberrypi/misc/mailbox.c new file mode 100644 index 0000000..8ec730a --- /dev/null +++ b/c/src/lib/libbsp/arm/raspberrypi/misc/mailbox.c @@ -0,0 +1,56 @@ +/** + * @file + * + * @ingroup raspberrypi + * + * @brief mailbox support. + */ +/* + * Copyright (c) 2015 Yang Qiao + * + * 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 + * + */ + +#include <stdint.h> +#include <stdbool.h> +#include <bsp/raspberrypi.h> +#include <bsp/mailbox.h> + +#define BCM2835_MBOX_DATA_MASK(data) (data & 0xFFFFFFF0U) +#define BCM2835_MBOX_CHANNEL_MASK(data) (data & 0xFU) + +static inline bool bcm2835_mailbox_is_empty() +{ + return (BCM2835_REG(BCM2835_MBOX_STATUS) & BCM2835_MBOX_EMPTY); +} + +static inline bool bcm2835_mailbox_is_full() +{ + return (BCM2835_REG(BCM2835_MBOX_STATUS) & BCM2835_MBOX_FULL); +} + +unsigned int raspberrypi_mailbox_read(unsigned int channel) +{ + unsigned int raw; + unsigned int read_channel; + + while (1){ + while (bcm2835_mailbox_is_empty()); + raw = BCM2835_REG (BCM2835_MBOX_READ ); + read_channel = BCM2835_MBOX_CHANNEL_MASK(raw) ; + if (read_channel == channel) + return BCM2835_MBOX_DATA_MASK(raw); + } +} + +void raspberrypi_mailbox_write(unsigned int channel, unsigned int data) +{ + while (bcm2835_mailbox_is_full()); + BCM2835_REG(BCM2835_MBOX_WRITE) = + BCM2835_MBOX_DATA_MASK(data) | + BCM2835_MBOX_CHANNEL_MASK(channel); +} diff --git a/c/src/lib/libbsp/arm/raspberrypi/preinstall.am b/c/src/lib/libbsp/arm/raspberrypi/preinstall.am index 70259e2..4cb7ed6 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/preinstall.am +++ b/c/src/lib/libbsp/arm/raspberrypi/preinstall.am @@ -126,6 +126,10 @@ $(PROJECT_INCLUDE)/bsp/usart.h: include/usart.h $(PROJECT_INCLUDE)/bsp/$(dirstam $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/usart.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/usart.h +$(PROJECT_INCLUDE)/bsp/mailbox.h: include/mailbox.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/mailbox.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/mailbox.h + $(PROJECT_INCLUDE)/bsp/raspberrypi.h: include/raspberrypi.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/raspberrypi.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/raspberrypi.h
-- Joel Sherrill, Ph.D. Director of Research & Development joel.sherr...@oarcorp.com On-Line Applications Research Ask me about RTEMS: a free RTOS Huntsville AL 35805 Support Available (256) 722-9985 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel