Re: [PATCH 1/6] mailbox support for rpi bsp

2015-08-11 Thread 桥 杨
Ok 

 在 2015年8月11日,17:02,Joel Sherrill joel.sherr...@oarcorp.com 写道:
 
 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 000..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+0x8000)
 +#define BCM2835_MBOX_EMPTY (BCM2835_MBOX_BASE+0x4000)
 +
 +/**
 +* @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 000..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 

Re: [PATCH 1/6] mailbox support for rpi bsp

2015-08-11 Thread Joel Sherrill

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 000..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+0x8000)
+#define BCM2835_MBOX_EMPTY (BCM2835_MBOX_BASE+0x4000)
+
+/**
+* @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_LED4
+ /* 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 000..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  

[PATCH 1/6] mailbox support for rpi bsp

2015-08-10 Thread YANG QIAO
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 000..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+0x8000)
+#define BCM2835_MBOX_EMPTY (BCM2835_MBOX_BASE+0x4000)
+
+/**
+* @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_LED4
+ /* 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 000..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  0xFFF0U)
+#define BCM2835_MBOX_CHANNEL_MASK(data) (data  0xFU)
+
+static inline bool bcm2835_mailbox_is_empty()
+{
+  return (BCM2835_REG(BCM2835_MBOX_STATUS)