diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2017-05-07 21:19:10 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2017-05-15 15:00:52 -0400 |
commit | ccaa25eaa5d10291bff332f88194befe643b729f (patch) | |
tree | 3f7128515464c8fcb7f2af33b22e950cc0bbe517 /lib/pru_rpmsg/include/am335x/sys_mailbox.h | |
parent | 969ee4c8f9a3080bc20b6a78e846bee8c9455dec (diff) | |
download | kutter-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.h | 210 |
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_ */ |