aboutsummaryrefslogtreecommitdiffstats
path: root/lib/pru_rpmsg/include/am335x/sys_mailbox.h
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2017-05-07 21:19:10 -0400
committerKevin O'Connor <kevin@koconnor.net>2017-05-15 15:00:52 -0400
commitccaa25eaa5d10291bff332f88194befe643b729f (patch)
tree3f7128515464c8fcb7f2af33b22e950cc0bbe517 /lib/pru_rpmsg/include/am335x/sys_mailbox.h
parent969ee4c8f9a3080bc20b6a78e846bee8c9455dec (diff)
downloadkutter-ccaa25eaa5d10291bff332f88194befe643b729f.tar.gz
kutter-ccaa25eaa5d10291bff332f88194befe643b729f.tar.xz
kutter-ccaa25eaa5d10291bff332f88194befe643b729f.zip
pru: Add initial pru_rpmsg library code for Beaglebone PRU
Add external code for using RPMsg on the Beaglebone PRU. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'lib/pru_rpmsg/include/am335x/sys_mailbox.h')
-rw-r--r--lib/pru_rpmsg/include/am335x/sys_mailbox.h210
1 files changed, 210 insertions, 0 deletions
diff --git a/lib/pru_rpmsg/include/am335x/sys_mailbox.h b/lib/pru_rpmsg/include/am335x/sys_mailbox.h
new file mode 100644
index 00000000..f2750f75
--- /dev/null
+++ b/lib/pru_rpmsg/include/am335x/sys_mailbox.h
@@ -0,0 +1,210 @@
+/*
+ * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Texas Instruments Incorporated nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _SYS_MAILBOX_H_
+#define _SYS_MAILBOX_H_
+
+/* SYS_MAILBOX register set */
+typedef struct {
+
+ /* SYS_MAILBOX_REVISION register bit field */
+ union {
+ volatile uint32_t REVISION;
+
+ volatile struct {
+ unsigned MINOR : 6; //5:0
+ unsigned CUSTOM : 2; //7:6
+ unsigned MAJOR : 3; //10:8
+ unsigned RTL : 5; //15:11
+ unsigned FUNC : 12; //27:16
+ unsigned rsvd28 : 2; //29:28
+ unsigned SCHEME : 2; //31:30
+ } REVISION_bit;
+ }; // 0x0
+
+ uint32_t rsvd4[3]; // 0x4 - 0xC
+
+ /* SYS_MAILBOX_SYSCONFIG register bit field */
+ union {
+ volatile uint32_t SYSCONFIG;
+
+ volatile struct {
+ unsigned SOFTRESET : 1; //0
+ unsigned rsvd : 1; //1
+ unsigned SLIDLEMODE : 2; //3:2
+ unsigned rsvd1 : 28; //31:4
+ } SYSCONFIG_bit;
+ }; // 0x10
+
+ uint32_t rsvd14[11]; // 0x14 - 0x3C
+
+ /* SYS_MAILBOX_MESSAGE register bit fields */
+ union {
+ volatile uint32_t MESSAGE[8];
+
+ volatile struct {
+ unsigned MESSAGE : 32; //31:0
+ } MESSAGE_bit[8];
+ }; // 0x40-0x5C
+
+ uint32_t rsvd60[8]; // 0x60 - 0x7C
+
+ /* SYS_MAILBOX_FIFOSTATUS register bit fields */
+ union {
+ volatile uint32_t FIFOSTATUS[8];
+
+ volatile struct {
+ unsigned FIFOFULL : 1; //0
+ unsigned rsvd : 31; //31:1
+ } FIFOSTATUS_bit[8];
+ }; // 0x80-0x9C
+
+ uint32_t rsvdA0[8]; // 0xA0 - 0xBC
+
+ /* SYS_MAILBOX_MSGSTATUS register bit fields */
+ union {
+ volatile uint32_t MSGSTATUS[8];
+
+ volatile struct {
+ unsigned NBOFMSG : 3; //2:0
+ unsigned rsvd : 29; //31:3
+ } MSGSTATUS_bit[8];
+ }; // 0xC0-DC
+
+ uint32_t rsvdE0[8]; // 0xE0 - 0xFC
+
+ volatile struct {
+ union {
+ volatile uint32_t STATUS_RAW;
+
+ volatile struct {
+ unsigned NEWMSGSTATUSMB0 : 1; //0
+ unsigned NOTFULLSTATUSMB0 : 1; //1
+ unsigned NEWMSGSTATUSMB1 : 1; //2
+ unsigned NOTFULLSTATUSMB1 : 1; //3
+ unsigned NEWMSGSTATUSMB2 : 1; //4
+ unsigned NOTFULLSTATUSMB2 : 1; //5
+ unsigned NEWMSGSTATUSMB3 : 1; //6
+ unsigned NOTFULLSTATUSMB3 : 1; //7
+ unsigned NEWMSGSTATUSMB4 : 1; //8
+ unsigned NOTFULLSTATUSMB4 : 1; //9
+ unsigned NEWMSGSTATUSMB5 : 1; //10
+ unsigned NOTFULLSTATUSMB5 : 1; //11
+ unsigned NEWMSGSTATUSMB6 : 1; //12
+ unsigned NOTFULLSTATUSMB6 : 1; //13
+ unsigned NEWMSGSTATUSMB7 : 1; //14
+ unsigned NOTFULLSTATUSMB7 : 1; //15
+ unsigned rsvd : 16; //31:16
+ } STATUS_RAW_bit;
+ };
+ union {
+ volatile uint32_t STATUS_CLR;
+
+ volatile struct {
+ unsigned NEWMSGSTATUSMB0 : 1; //0
+ unsigned NOTFULLSTATUSMB0 : 1; //1
+ unsigned NEWMSGSTATUSMB1 : 1; //2
+ unsigned NOTFULLSTATUSMB1 : 1; //3
+ unsigned NEWMSGSTATUSMB2 : 1; //4
+ unsigned NOTFULLSTATUSMB2 : 1; //5
+ unsigned NEWMSGSTATUSMB3 : 1; //6
+ unsigned NOTFULLSTATUSMB3 : 1; //7
+ unsigned NEWMSGSTATUSMB4 : 1; //8
+ unsigned NOTFULLSTATUSMB4 : 1; //9
+ unsigned NEWMSGSTATUSMB5 : 1; //10
+ unsigned NOTFULLSTATUSMB5 : 1; //11
+ unsigned NEWMSGSTATUSMB6 : 1; //12
+ unsigned NOTFULLSTATUSMB6 : 1; //13
+ unsigned NEWMSGSTATUSMB7 : 1; //14
+ unsigned NOTFULLSTATUSMB7 : 1; //15
+ unsigned rsvd : 16; //31:16
+ } STATUS_CLR_bit;
+ };
+ union {
+ volatile uint32_t ENABLE_SET;
+
+ volatile struct {
+ unsigned NEWMSGSTATUSMB0 : 1; //0
+ unsigned NOTFULLSTATUSMB0 : 1; //1
+ unsigned NEWMSGSTATUSMB1 : 1; //2
+ unsigned NOTFULLSTATUSMB1 : 1; //3
+ unsigned NEWMSGSTATUSMB2 : 1; //4
+ unsigned NOTFULLSTATUSMB2 : 1; //5
+ unsigned NEWMSGSTATUSMB3 : 1; //6
+ unsigned NOTFULLSTATUSMB3 : 1; //7
+ unsigned NEWMSGSTATUSMB4 : 1; //8
+ unsigned NOTFULLSTATUSMB4 : 1; //9
+ unsigned NEWMSGSTATUSMB5 : 1; //10
+ unsigned NOTFULLSTATUSMB5 : 1; //11
+ unsigned NEWMSGSTATUSMB6 : 1; //12
+ unsigned NOTFULLSTATUSMB6 : 1; //13
+ unsigned NEWMSGSTATUSMB7 : 1; //14
+ unsigned NOTFULLSTATUSMB7 : 1; //15
+ unsigned rsvd : 16; //31:16
+ } ENABLE_SET_bit;
+ };
+ union {
+ volatile uint32_t ENABLE_CLR;
+
+ volatile struct {
+ unsigned NEWMSGSTATUSMB0 : 1; //0
+ unsigned NOTFULLSTATUSMB0 : 1; //1
+ unsigned NEWMSGSTATUSMB1 : 1; //2
+ unsigned NOTFULLSTATUSMB1 : 1; //3
+ unsigned NEWMSGSTATUSMB2 : 1; //4
+ unsigned NOTFULLSTATUSMB2 : 1; //5
+ unsigned NEWMSGSTATUSMB3 : 1; //6
+ unsigned NOTFULLSTATUSMB3 : 1; //7
+ unsigned NEWMSGSTATUSMB4 : 1; //8
+ unsigned NOTFULLSTATUSMB4 : 1; //9
+ unsigned NEWMSGSTATUSMB5 : 1; //10
+ unsigned NOTFULLSTATUSMB5 : 1; //11
+ unsigned NEWMSGSTATUSMB6 : 1; //12
+ unsigned NOTFULLSTATUSMB6 : 1; //13
+ unsigned NEWMSGSTATUSMB7 : 1; //14
+ unsigned NOTFULLSTATUSMB7 : 1; //15
+ unsigned rsvd : 16; //31:16
+ } ENABLE_CLR_bit;
+ };
+ } IRQ[4];
+
+} sysMailbox;
+
+#ifdef __GNUC__
+static volatile sysMailbox *__CT_MBX = (void *)0x480C8000;
+#define CT_MBX (*__CT_MBX)
+#else
+volatile __far sysMailbox CT_MBX __attribute__((cregister("MBX0", far), peripheral));
+#endif
+
+#endif /* _SYS_MAILBOX_H_ */