diff options
author | Evan Lojewski <github@meklort.com> | 2019-04-28 18:07:55 -0600 |
---|---|---|
committer | Evan Lojewski <github@meklort.com> | 2019-04-28 18:07:55 -0600 |
commit | c6ebf8da8d5baa75ac76ffb58dbbbed519b4e7fa (patch) | |
tree | e17da90640ea292ab3e5784646907eea6a96edfa | |
parent | 387a6bb8ff17554c4a54892b8de0c715a0b010a6 (diff) | |
download | bcm5719-ortega-c6ebf8da8d5baa75ac76ffb58dbbbed519b4e7fa.tar.gz bcm5719-ortega-c6ebf8da8d5baa75ac76ffb58dbbbed519b4e7fa.zip |
Update tx port ipxact definition and regen.
-rw-r--r-- | ipxact/APE.xml | 14 | ||||
-rwxr-xr-x | ipxact/regen.sh | 2 | ||||
-rw-r--r-- | libs/bcm5719/APE_sym.s | 8 | ||||
-rw-r--r-- | simulator/APE_TX_PORT.cpp | 55 | ||||
-rw-r--r-- | simulator/APE_TX_PORT1.cpp | 55 | ||||
-rw-r--r-- | simulator/APE_TX_PORT1_sim.cpp | 99 | ||||
-rw-r--r-- | simulator/APE_TX_PORT2.cpp | 55 | ||||
-rw-r--r-- | simulator/APE_TX_PORT2_sim.cpp | 99 | ||||
-rw-r--r-- | simulator/APE_TX_PORT3.cpp | 55 | ||||
-rw-r--r-- | simulator/APE_TX_PORT3_sim.cpp | 99 | ||||
-rw-r--r-- | simulator/APE_TX_PORT_sim.cpp | 99 |
11 files changed, 634 insertions, 6 deletions
diff --git a/ipxact/APE.xml b/ipxact/APE.xml index b81a306..bdae887 100644 --- a/ipxact/APE.xml +++ b/ipxact/APE.xml @@ -21,7 +21,7 @@ <ipxact:addressUnitBits>32</ipxact:addressUnitBits> </ipxact:memoryMap> - <!-- APE Registers: 0xC001_0000 to C001_8FFF--> + <!-- APE Registers: 0x6020_0000 to 6020_8FFF--> <ipxact:memoryMap> <ipxact:name>APE</ipxact:name> <ipxact:description>Device APE Registers</ipxact:description> @@ -48,7 +48,7 @@ </ipxact:addressBlock> </ipxact:memoryMap> - <!-- APE Registers: 0xC001_0000 to C001_8FFF--> + <!-- APE Registers: 0x0x6024_0000 to 0x6024_8FFF--> <ipxact:memoryMap> <ipxact:name>APE_PERI</ipxact:name> <ipxact:description>Device APE Registers</ipxact:description> @@ -138,11 +138,21 @@ <ipxact:addressBlock> <ipxact:name>TX_PORT</ipxact:name> <ipxact:description>TX to network port, function 0</ipxact:description> + <ipxact:typeIdentifier>TX_PORT</ipxact:typeIdentifier>> <ipxact:baseAddress>0xA0020000</ipxact:baseAddress> <!-- LINK: addressBlockDefinitionGroup: see 6.9.3, Address blockdefinition group --> <!-- LINK: memoryBlockData: see 6.9.4, memoryBlockData group --> <ipxact:usage>register</ipxact:usage> <ipxact:volatile>false</ipxact:volatile> + <ipxact:register> + <ipxact:name>out</ipxact:name> + <ipxact:description>This is the memory range into which frames are directed towards the network byte the APE firmware.</ipxact:description> + <ipxact:addressOffset>0x0</ipxact:addressOffset> + <ipxact:dim>0x800</ipxact:dim> + <!-- LINK: registerDefinitionGroup: see 6.11.3, Register definition group --> + <ipxact:size>32</ipxact:size> + <ipxact:volatile>true</ipxact:volatile> + </ipxact:register> </ipxact:addressBlock> </ipxact:memoryMap> diff --git a/ipxact/regen.sh b/ipxact/regen.sh index 9786b4d..976be00 100755 --- a/ipxact/regen.sh +++ b/ipxact/regen.sh @@ -45,6 +45,7 @@ mv APE_APE_PERI.h ../include/ mv APE_SHM*.h ../include mv APE_FILTERS*.h ../include mv APE_DEVICE*.h ../include +mv APE_TX_PORT*.h ../include # ${IPXACT} -p ${PROJECT} NVIC.xml APE_full.xml APE.s ${IPXACT} -p ${PROJECT} APE_full.xml -t asym APE_sym.s @@ -55,4 +56,5 @@ rm APE_APE*.cpp rm APE_SHM*.cpp rm APE_NVM*.cpp rm APE_DEVICE*.cpp +rm APE_TX_PORT*.cpp mv *.cpp ../simulator/ diff --git a/libs/bcm5719/APE_sym.s b/libs/bcm5719/APE_sym.s index 16c009c..ecb5b80 100644 --- a/libs/bcm5719/APE_sym.s +++ b/libs/bcm5719/APE_sym.s @@ -106,19 +106,19 @@ .global TX_PORT .equ TX_PORT, 0xa0020000 -.size TX_PORT, 0x0 +.size TX_PORT, 0x2000 .global TX_PORT1 .equ TX_PORT1, 0xa0022000 -.size TX_PORT1, 0x0 +.size TX_PORT1, 0x2000 .global TX_PORT2 .equ TX_PORT2, 0xa0024000 -.size TX_PORT2, 0x0 +.size TX_PORT2, 0x2000 .global TX_PORT3 .equ TX_PORT3, 0xa0026000 -.size TX_PORT3, 0x0 +.size TX_PORT3, 0x2000 .global DEVICE1 .equ DEVICE1, 0xa0050000 diff --git a/simulator/APE_TX_PORT.cpp b/simulator/APE_TX_PORT.cpp new file mode 100644 index 0000000..0c23069 --- /dev/null +++ b/simulator/APE_TX_PORT.cpp @@ -0,0 +1,55 @@ +//////////////////////////////////////////////////////////////////////////////// +/// +/// @file APE_TX_PORT.cpp +/// +/// @project ape +/// +/// @brief APE_TX_PORT +/// +//////////////////////////////////////////////////////////////////////////////// +/// +//////////////////////////////////////////////////////////////////////////////// +/// +/// @copyright Copyright (c) 2018, Evan Lojewski +/// @cond +/// +/// All rights reserved. +/// +/// Redistribution and use in source and binary forms, with or without +/// modification, are permitted provided that the following conditions are met: +/// 1. Redistributions of source code must retain the above copyright notice, +/// this list of conditions and the following disclaimer. +/// 2. 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. +/// 3. Neither the name of the <organization> 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 HOLDER 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. +/// @endcond +//////////////////////////////////////////////////////////////////////////////// + +#include <APE_TX_PORT.h> + +TX_PORT_t TX_PORT; + +void init_APE_TX_PORT(void) +{ + /** @brief Component Registers for @ref TX_PORT. */ + /** @brief Bitmap for @ref TX_PORT_t.Out. */ + + +} diff --git a/simulator/APE_TX_PORT1.cpp b/simulator/APE_TX_PORT1.cpp new file mode 100644 index 0000000..78d8235 --- /dev/null +++ b/simulator/APE_TX_PORT1.cpp @@ -0,0 +1,55 @@ +//////////////////////////////////////////////////////////////////////////////// +/// +/// @file APE_TX_PORT1.cpp +/// +/// @project ape +/// +/// @brief APE_TX_PORT1 +/// +//////////////////////////////////////////////////////////////////////////////// +/// +//////////////////////////////////////////////////////////////////////////////// +/// +/// @copyright Copyright (c) 2018, Evan Lojewski +/// @cond +/// +/// All rights reserved. +/// +/// Redistribution and use in source and binary forms, with or without +/// modification, are permitted provided that the following conditions are met: +/// 1. Redistributions of source code must retain the above copyright notice, +/// this list of conditions and the following disclaimer. +/// 2. 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. +/// 3. Neither the name of the <organization> 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 HOLDER 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. +/// @endcond +//////////////////////////////////////////////////////////////////////////////// + +#include <APE_TX_PORT1.h> + +TX_PORT_t TX_PORT1; + +void init_APE_TX_PORT1(void) +{ + /** @brief Component Registers for @ref TX_PORT1. */ + /** @brief Bitmap for @ref TX_PORT1_t.Out. */ + + +} diff --git a/simulator/APE_TX_PORT1_sim.cpp b/simulator/APE_TX_PORT1_sim.cpp new file mode 100644 index 0000000..2903ec7 --- /dev/null +++ b/simulator/APE_TX_PORT1_sim.cpp @@ -0,0 +1,99 @@ +//////////////////////////////////////////////////////////////////////////////// +/// +/// @file APE_TX_PORT1_sim.cpp +/// +/// @project ape +/// +/// @brief APE_TX_PORT1_sim +/// +//////////////////////////////////////////////////////////////////////////////// +/// +//////////////////////////////////////////////////////////////////////////////// +/// +/// @copyright Copyright (c) 2018, Evan Lojewski +/// @cond +/// +/// All rights reserved. +/// +/// Redistribution and use in source and binary forms, with or without +/// modification, are permitted provided that the following conditions are met: +/// 1. Redistributions of source code must retain the above copyright notice, +/// this list of conditions and the following disclaimer. +/// 2. 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. +/// 3. Neither the name of the <organization> 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 HOLDER 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. +/// @endcond +//////////////////////////////////////////////////////////////////////////////// + +#include <stdint.h> +#include <utility> +#include <bcm5719_SHM.h> +#include <APE_TX_PORT1.h> + +static uint32_t loader_read_mem(uint32_t val, uint32_t offset, void *args) +{ + uint32_t addr = (uint32_t)((uint64_t)args); + addr += offset; + + SHM.LoaderArg0.r32 = addr; + SHM.LoaderCommand.bits.Command = SHM_LOADER_COMMAND_COMMAND_READ_MEM; + + // Wait for command to be handled. + while(0 != SHM.LoaderCommand.bits.Command); + + return (uint32_t)SHM.LoaderArg0.r32; +} + +static uint32_t loader_write_mem(uint32_t val, uint32_t offset, void *args) +{ + uint32_t addr = (uint32_t)((uint64_t)args); + addr += offset; + + SHM.LoaderArg0.r32 = addr; + SHM.LoaderArg1.r32 = val; + SHM.LoaderCommand.bits.Command = SHM_LOADER_COMMAND_COMMAND_WRITE_MEM; + + // Wait for command to be handled. + while(0 != SHM.LoaderCommand.bits.Command); + + return val; +} + +void init_APE_TX_PORT1_sim(void *arg0) +{ + (void)arg0; // unused + void* base = (void*)0xa0022000; + + TX_PORT1.mIndexReadCallback = loader_read_mem; + TX_PORT1.mIndexReadCallbackArgs = base; + + TX_PORT1.mIndexWriteCallback = loader_write_mem; + TX_PORT1.mIndexWriteCallbackArgs = base; + + /** @brief Component Registers for @ref TX_PORT1. */ + /** @brief Bitmap for @ref TX_PORT1_t.Out. */ + for(int i = 0; i < 2048; i++) + { + TX_PORT1.Out[i].r32.installReadCallback(loader_read_mem, (uint8_t *)base); + TX_PORT1.Out[i].r32.installWriteCallback(loader_write_mem, (uint8_t *)base); + } + + +} diff --git a/simulator/APE_TX_PORT2.cpp b/simulator/APE_TX_PORT2.cpp new file mode 100644 index 0000000..647cb18 --- /dev/null +++ b/simulator/APE_TX_PORT2.cpp @@ -0,0 +1,55 @@ +//////////////////////////////////////////////////////////////////////////////// +/// +/// @file APE_TX_PORT2.cpp +/// +/// @project ape +/// +/// @brief APE_TX_PORT2 +/// +//////////////////////////////////////////////////////////////////////////////// +/// +//////////////////////////////////////////////////////////////////////////////// +/// +/// @copyright Copyright (c) 2018, Evan Lojewski +/// @cond +/// +/// All rights reserved. +/// +/// Redistribution and use in source and binary forms, with or without +/// modification, are permitted provided that the following conditions are met: +/// 1. Redistributions of source code must retain the above copyright notice, +/// this list of conditions and the following disclaimer. +/// 2. 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. +/// 3. Neither the name of the <organization> 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 HOLDER 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. +/// @endcond +//////////////////////////////////////////////////////////////////////////////// + +#include <APE_TX_PORT2.h> + +TX_PORT_t TX_PORT2; + +void init_APE_TX_PORT2(void) +{ + /** @brief Component Registers for @ref TX_PORT2. */ + /** @brief Bitmap for @ref TX_PORT2_t.Out. */ + + +} diff --git a/simulator/APE_TX_PORT2_sim.cpp b/simulator/APE_TX_PORT2_sim.cpp new file mode 100644 index 0000000..52f4a08 --- /dev/null +++ b/simulator/APE_TX_PORT2_sim.cpp @@ -0,0 +1,99 @@ +//////////////////////////////////////////////////////////////////////////////// +/// +/// @file APE_TX_PORT2_sim.cpp +/// +/// @project ape +/// +/// @brief APE_TX_PORT2_sim +/// +//////////////////////////////////////////////////////////////////////////////// +/// +//////////////////////////////////////////////////////////////////////////////// +/// +/// @copyright Copyright (c) 2018, Evan Lojewski +/// @cond +/// +/// All rights reserved. +/// +/// Redistribution and use in source and binary forms, with or without +/// modification, are permitted provided that the following conditions are met: +/// 1. Redistributions of source code must retain the above copyright notice, +/// this list of conditions and the following disclaimer. +/// 2. 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. +/// 3. Neither the name of the <organization> 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 HOLDER 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. +/// @endcond +//////////////////////////////////////////////////////////////////////////////// + +#include <stdint.h> +#include <utility> +#include <bcm5719_SHM.h> +#include <APE_TX_PORT2.h> + +static uint32_t loader_read_mem(uint32_t val, uint32_t offset, void *args) +{ + uint32_t addr = (uint32_t)((uint64_t)args); + addr += offset; + + SHM.LoaderArg0.r32 = addr; + SHM.LoaderCommand.bits.Command = SHM_LOADER_COMMAND_COMMAND_READ_MEM; + + // Wait for command to be handled. + while(0 != SHM.LoaderCommand.bits.Command); + + return (uint32_t)SHM.LoaderArg0.r32; +} + +static uint32_t loader_write_mem(uint32_t val, uint32_t offset, void *args) +{ + uint32_t addr = (uint32_t)((uint64_t)args); + addr += offset; + + SHM.LoaderArg0.r32 = addr; + SHM.LoaderArg1.r32 = val; + SHM.LoaderCommand.bits.Command = SHM_LOADER_COMMAND_COMMAND_WRITE_MEM; + + // Wait for command to be handled. + while(0 != SHM.LoaderCommand.bits.Command); + + return val; +} + +void init_APE_TX_PORT2_sim(void *arg0) +{ + (void)arg0; // unused + void* base = (void*)0xa0024000; + + TX_PORT2.mIndexReadCallback = loader_read_mem; + TX_PORT2.mIndexReadCallbackArgs = base; + + TX_PORT2.mIndexWriteCallback = loader_write_mem; + TX_PORT2.mIndexWriteCallbackArgs = base; + + /** @brief Component Registers for @ref TX_PORT2. */ + /** @brief Bitmap for @ref TX_PORT2_t.Out. */ + for(int i = 0; i < 2048; i++) + { + TX_PORT2.Out[i].r32.installReadCallback(loader_read_mem, (uint8_t *)base); + TX_PORT2.Out[i].r32.installWriteCallback(loader_write_mem, (uint8_t *)base); + } + + +} diff --git a/simulator/APE_TX_PORT3.cpp b/simulator/APE_TX_PORT3.cpp new file mode 100644 index 0000000..9c28702 --- /dev/null +++ b/simulator/APE_TX_PORT3.cpp @@ -0,0 +1,55 @@ +//////////////////////////////////////////////////////////////////////////////// +/// +/// @file APE_TX_PORT3.cpp +/// +/// @project ape +/// +/// @brief APE_TX_PORT3 +/// +//////////////////////////////////////////////////////////////////////////////// +/// +//////////////////////////////////////////////////////////////////////////////// +/// +/// @copyright Copyright (c) 2018, Evan Lojewski +/// @cond +/// +/// All rights reserved. +/// +/// Redistribution and use in source and binary forms, with or without +/// modification, are permitted provided that the following conditions are met: +/// 1. Redistributions of source code must retain the above copyright notice, +/// this list of conditions and the following disclaimer. +/// 2. 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. +/// 3. Neither the name of the <organization> 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 HOLDER 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. +/// @endcond +//////////////////////////////////////////////////////////////////////////////// + +#include <APE_TX_PORT3.h> + +TX_PORT_t TX_PORT3; + +void init_APE_TX_PORT3(void) +{ + /** @brief Component Registers for @ref TX_PORT3. */ + /** @brief Bitmap for @ref TX_PORT3_t.Out. */ + + +} diff --git a/simulator/APE_TX_PORT3_sim.cpp b/simulator/APE_TX_PORT3_sim.cpp new file mode 100644 index 0000000..27b66dd --- /dev/null +++ b/simulator/APE_TX_PORT3_sim.cpp @@ -0,0 +1,99 @@ +//////////////////////////////////////////////////////////////////////////////// +/// +/// @file APE_TX_PORT3_sim.cpp +/// +/// @project ape +/// +/// @brief APE_TX_PORT3_sim +/// +//////////////////////////////////////////////////////////////////////////////// +/// +//////////////////////////////////////////////////////////////////////////////// +/// +/// @copyright Copyright (c) 2018, Evan Lojewski +/// @cond +/// +/// All rights reserved. +/// +/// Redistribution and use in source and binary forms, with or without +/// modification, are permitted provided that the following conditions are met: +/// 1. Redistributions of source code must retain the above copyright notice, +/// this list of conditions and the following disclaimer. +/// 2. 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. +/// 3. Neither the name of the <organization> 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 HOLDER 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. +/// @endcond +//////////////////////////////////////////////////////////////////////////////// + +#include <stdint.h> +#include <utility> +#include <bcm5719_SHM.h> +#include <APE_TX_PORT3.h> + +static uint32_t loader_read_mem(uint32_t val, uint32_t offset, void *args) +{ + uint32_t addr = (uint32_t)((uint64_t)args); + addr += offset; + + SHM.LoaderArg0.r32 = addr; + SHM.LoaderCommand.bits.Command = SHM_LOADER_COMMAND_COMMAND_READ_MEM; + + // Wait for command to be handled. + while(0 != SHM.LoaderCommand.bits.Command); + + return (uint32_t)SHM.LoaderArg0.r32; +} + +static uint32_t loader_write_mem(uint32_t val, uint32_t offset, void *args) +{ + uint32_t addr = (uint32_t)((uint64_t)args); + addr += offset; + + SHM.LoaderArg0.r32 = addr; + SHM.LoaderArg1.r32 = val; + SHM.LoaderCommand.bits.Command = SHM_LOADER_COMMAND_COMMAND_WRITE_MEM; + + // Wait for command to be handled. + while(0 != SHM.LoaderCommand.bits.Command); + + return val; +} + +void init_APE_TX_PORT3_sim(void *arg0) +{ + (void)arg0; // unused + void* base = (void*)0xa0026000; + + TX_PORT3.mIndexReadCallback = loader_read_mem; + TX_PORT3.mIndexReadCallbackArgs = base; + + TX_PORT3.mIndexWriteCallback = loader_write_mem; + TX_PORT3.mIndexWriteCallbackArgs = base; + + /** @brief Component Registers for @ref TX_PORT3. */ + /** @brief Bitmap for @ref TX_PORT3_t.Out. */ + for(int i = 0; i < 2048; i++) + { + TX_PORT3.Out[i].r32.installReadCallback(loader_read_mem, (uint8_t *)base); + TX_PORT3.Out[i].r32.installWriteCallback(loader_write_mem, (uint8_t *)base); + } + + +} diff --git a/simulator/APE_TX_PORT_sim.cpp b/simulator/APE_TX_PORT_sim.cpp new file mode 100644 index 0000000..1e7bac7 --- /dev/null +++ b/simulator/APE_TX_PORT_sim.cpp @@ -0,0 +1,99 @@ +//////////////////////////////////////////////////////////////////////////////// +/// +/// @file APE_TX_PORT_sim.cpp +/// +/// @project ape +/// +/// @brief APE_TX_PORT_sim +/// +//////////////////////////////////////////////////////////////////////////////// +/// +//////////////////////////////////////////////////////////////////////////////// +/// +/// @copyright Copyright (c) 2018, Evan Lojewski +/// @cond +/// +/// All rights reserved. +/// +/// Redistribution and use in source and binary forms, with or without +/// modification, are permitted provided that the following conditions are met: +/// 1. Redistributions of source code must retain the above copyright notice, +/// this list of conditions and the following disclaimer. +/// 2. 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. +/// 3. Neither the name of the <organization> 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 HOLDER 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. +/// @endcond +//////////////////////////////////////////////////////////////////////////////// + +#include <stdint.h> +#include <utility> +#include <bcm5719_SHM.h> +#include <APE_TX_PORT.h> + +static uint32_t loader_read_mem(uint32_t val, uint32_t offset, void *args) +{ + uint32_t addr = (uint32_t)((uint64_t)args); + addr += offset; + + SHM.LoaderArg0.r32 = addr; + SHM.LoaderCommand.bits.Command = SHM_LOADER_COMMAND_COMMAND_READ_MEM; + + // Wait for command to be handled. + while(0 != SHM.LoaderCommand.bits.Command); + + return (uint32_t)SHM.LoaderArg0.r32; +} + +static uint32_t loader_write_mem(uint32_t val, uint32_t offset, void *args) +{ + uint32_t addr = (uint32_t)((uint64_t)args); + addr += offset; + + SHM.LoaderArg0.r32 = addr; + SHM.LoaderArg1.r32 = val; + SHM.LoaderCommand.bits.Command = SHM_LOADER_COMMAND_COMMAND_WRITE_MEM; + + // Wait for command to be handled. + while(0 != SHM.LoaderCommand.bits.Command); + + return val; +} + +void init_APE_TX_PORT_sim(void *arg0) +{ + (void)arg0; // unused + void* base = (void*)0xa0020000; + + TX_PORT.mIndexReadCallback = loader_read_mem; + TX_PORT.mIndexReadCallbackArgs = base; + + TX_PORT.mIndexWriteCallback = loader_write_mem; + TX_PORT.mIndexWriteCallbackArgs = base; + + /** @brief Component Registers for @ref TX_PORT. */ + /** @brief Bitmap for @ref TX_PORT_t.Out. */ + for(int i = 0; i < 2048; i++) + { + TX_PORT.Out[i].r32.installReadCallback(loader_read_mem, (uint8_t *)base); + TX_PORT.Out[i].r32.installWriteCallback(loader_write_mem, (uint8_t *)base); + } + + +} |