diff options
Diffstat (limited to 'bsps/arm/xilinx-zynq')
28 files changed, 119 insertions, 811 deletions
diff --git a/bsps/arm/xilinx-zynq/config/xilinx_zynq_microzed-testsuite.tcfg b/bsps/arm/xilinx-zynq/config/xilinx_zynq_microzed-testsuite.tcfg new file mode 100755 index 0000000000..ba80faab99 --- /dev/null +++ b/bsps/arm/xilinx-zynq/config/xilinx_zynq_microzed-testsuite.tcfg @@ -0,0 +1,7 @@ +# +# Xilinx Zedboard RTEMS Test Database. +# +# Format is one line per test that is _NOT_ built. +# + +include: xilinx_zynq-testsuite.tcfg diff --git a/bsps/arm/xilinx-zynq/config/xilinx_zynq_microzed.cfg b/bsps/arm/xilinx-zynq/config/xilinx_zynq_microzed.cfg new file mode 100755 index 0000000000..2de871d46e --- /dev/null +++ b/bsps/arm/xilinx-zynq/config/xilinx_zynq_microzed.cfg @@ -0,0 +1 @@ +include $(RTEMS_ROOT)/make/custom/xilinx_zynq.inc diff --git a/bsps/arm/xilinx-zynq/config/xilinx_zynq_picozed-testsuite.tcfg b/bsps/arm/xilinx-zynq/config/xilinx_zynq_picozed-testsuite.tcfg new file mode 100755 index 0000000000..ba80faab99 --- /dev/null +++ b/bsps/arm/xilinx-zynq/config/xilinx_zynq_picozed-testsuite.tcfg @@ -0,0 +1,7 @@ +# +# Xilinx Zedboard RTEMS Test Database. +# +# Format is one line per test that is _NOT_ built. +# + +include: xilinx_zynq-testsuite.tcfg diff --git a/bsps/arm/xilinx-zynq/config/xilinx_zynq_picozed.cfg b/bsps/arm/xilinx-zynq/config/xilinx_zynq_picozed.cfg new file mode 100755 index 0000000000..2de871d46e --- /dev/null +++ b/bsps/arm/xilinx-zynq/config/xilinx_zynq_picozed.cfg @@ -0,0 +1 @@ +include $(RTEMS_ROOT)/make/custom/xilinx_zynq.inc diff --git a/bsps/arm/xilinx-zynq/config/xilinx_zynq_pynq-testsuite.tcfg b/bsps/arm/xilinx-zynq/config/xilinx_zynq_pynq-testsuite.tcfg new file mode 100755 index 0000000000..ba80faab99 --- /dev/null +++ b/bsps/arm/xilinx-zynq/config/xilinx_zynq_pynq-testsuite.tcfg @@ -0,0 +1,7 @@ +# +# Xilinx Zedboard RTEMS Test Database. +# +# Format is one line per test that is _NOT_ built. +# + +include: xilinx_zynq-testsuite.tcfg diff --git a/bsps/arm/xilinx-zynq/config/xilinx_zynq_pynq.cfg b/bsps/arm/xilinx-zynq/config/xilinx_zynq_pynq.cfg new file mode 100755 index 0000000000..2de871d46e --- /dev/null +++ b/bsps/arm/xilinx-zynq/config/xilinx_zynq_pynq.cfg @@ -0,0 +1 @@ +include $(RTEMS_ROOT)/make/custom/xilinx_zynq.inc diff --git a/bsps/arm/xilinx-zynq/config/xilinx_zynq_zybo-testsuite.tcfg b/bsps/arm/xilinx-zynq/config/xilinx_zynq_zybo-testsuite.tcfg new file mode 100755 index 0000000000..ba80faab99 --- /dev/null +++ b/bsps/arm/xilinx-zynq/config/xilinx_zynq_zybo-testsuite.tcfg @@ -0,0 +1,7 @@ +# +# Xilinx Zedboard RTEMS Test Database. +# +# Format is one line per test that is _NOT_ built. +# + +include: xilinx_zynq-testsuite.tcfg diff --git a/bsps/arm/xilinx-zynq/config/xilinx_zynq_zybo.cfg b/bsps/arm/xilinx-zynq/config/xilinx_zynq_zybo.cfg new file mode 100755 index 0000000000..2de871d46e --- /dev/null +++ b/bsps/arm/xilinx-zynq/config/xilinx_zynq_zybo.cfg @@ -0,0 +1 @@ +include $(RTEMS_ROOT)/make/custom/xilinx_zynq.inc diff --git a/bsps/arm/xilinx-zynq/config/xilinx_zynq_zybo_z7-testsuite.tcfg b/bsps/arm/xilinx-zynq/config/xilinx_zynq_zybo_z7-testsuite.tcfg new file mode 100755 index 0000000000..ba80faab99 --- /dev/null +++ b/bsps/arm/xilinx-zynq/config/xilinx_zynq_zybo_z7-testsuite.tcfg @@ -0,0 +1,7 @@ +# +# Xilinx Zedboard RTEMS Test Database. +# +# Format is one line per test that is _NOT_ built. +# + +include: xilinx_zynq-testsuite.tcfg diff --git a/bsps/arm/xilinx-zynq/config/xilinx_zynq_zybo_z7.cfg b/bsps/arm/xilinx-zynq/config/xilinx_zynq_zybo_z7.cfg new file mode 100755 index 0000000000..2de871d46e --- /dev/null +++ b/bsps/arm/xilinx-zynq/config/xilinx_zynq_zybo_z7.cfg @@ -0,0 +1 @@ +include $(RTEMS_ROOT)/make/custom/xilinx_zynq.inc diff --git a/bsps/arm/xilinx-zynq/console/console-config.c b/bsps/arm/xilinx-zynq/console/console-config.c deleted file mode 100644 index 0581247a2d..0000000000 --- a/bsps/arm/xilinx-zynq/console/console-config.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (C) 2013, 2017 embedded brains GmbH - * - * 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. - * - * 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. - */ - -#include <bsp/irq.h> -#include <dev/serial/zynq-uart.h> - -zynq_uart_context zynq_uart_instances[2] = { - { - .base = RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER( "Zynq UART 0" ), - .regs = (volatile struct zynq_uart *) 0xe0000000, - .irq = ZYNQ_IRQ_UART_0 - }, { - .base = RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER( "Zynq UART 1" ), - .regs = (volatile struct zynq_uart *) 0xe0001000, - .irq = ZYNQ_IRQ_UART_1 - } -}; diff --git a/bsps/arm/xilinx-zynq/console/console-init.c b/bsps/arm/xilinx-zynq/console/console-init.c index a3659e3906..2018aaa710 100644 --- a/bsps/arm/xilinx-zynq/console/console-init.c +++ b/bsps/arm/xilinx-zynq/console/console-init.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (C) 2013, 2017 embedded brains GmbH + * Copyright (C) 2013, 2017 embedded brains GmbH & Co. KG * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -26,9 +26,25 @@ */ #include <rtems/console.h> +#include <rtems/termiostypes.h> #include <bsp.h> +#include <bsp/bootcard.h> +#include <bsp/irq.h> #include <dev/serial/zynq-uart.h> +#include <dev/serial/zynq-uart-regs.h> + +static zynq_uart_context zynq_uart_instances[2] = { + { + .base = RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER( "Zynq UART 0" ), + .regs = (volatile zynq_uart *) ZYNQ_UART_0_BASE_ADDR, + .irq = ZYNQ_IRQ_UART_0 + }, { + .base = RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER( "Zynq UART 1" ), + .regs = (volatile zynq_uart *) ZYNQ_UART_1_BASE_ADDR, + .irq = ZYNQ_IRQ_UART_1 + } +}; rtems_status_code console_initialize( rtems_device_major_number major, @@ -41,6 +57,7 @@ rtems_status_code console_initialize( rtems_termios_initialize(); for (i = 0; i < RTEMS_ARRAY_SIZE(zynq_uart_instances); ++i) { + zynq_uart_context *ctx = &zynq_uart_instances[i]; char uart[] = "/dev/ttySX"; uart[sizeof(uart) - 2] = (char) ('0' + i); @@ -48,10 +65,10 @@ rtems_status_code console_initialize( &uart[0], &zynq_uart_handler, NULL, - &zynq_uart_instances[i].base + &ctx->base ); - if (i == BSP_CONSOLE_MINOR) { + if (ctx->regs == (zynq_uart *) ZYNQ_UART_KERNEL_IO_BASE_ADDR) { link(&uart[0], CONSOLE_DEVICE_NAME); } } diff --git a/bsps/arm/xilinx-zynq/console/debug-console.c b/bsps/arm/xilinx-zynq/console/debug-console.c deleted file mode 100644 index 0e9b756f30..0000000000 --- a/bsps/arm/xilinx-zynq/console/debug-console.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (C) 2013, 2017 embedded brains GmbH - * - * 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. - * - * 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. - */ - -#include <rtems/bspIo.h> -#include <rtems/sysinit.h> - -#include <bsp.h> -#include <dev/serial/zynq-uart.h> - -#include <bspopts.h> - -static void zynq_debug_console_out(char c) -{ - rtems_termios_device_context *base = - &zynq_uart_instances[BSP_CONSOLE_MINOR].base; - - zynq_uart_write_polled(base, c); -} - -static void zynq_debug_console_init(void) -{ - rtems_termios_device_context *base = - &zynq_uart_instances[BSP_CONSOLE_MINOR].base; - - zynq_uart_initialize(base); - BSP_output_char = zynq_debug_console_out; -} - -static void zynq_debug_console_early_init(char c) -{ - rtems_termios_device_context *base = - &zynq_uart_instances[BSP_CONSOLE_MINOR].base; - - zynq_uart_initialize(base); - zynq_debug_console_out(c); -} - -static int zynq_debug_console_in(void) -{ - rtems_termios_device_context *base = - &zynq_uart_instances[BSP_CONSOLE_MINOR].base; - - return zynq_uart_read_polled(base); -} - -BSP_output_char_function_type BSP_output_char = zynq_debug_console_early_init; - -BSP_polling_getchar_function_type BSP_poll_char = zynq_debug_console_in; - -RTEMS_SYSINIT_ITEM( - zynq_debug_console_init, - RTEMS_SYSINIT_BSP_START, - RTEMS_SYSINIT_ORDER_LAST_BUT_5 -); diff --git a/bsps/arm/xilinx-zynq/headers.am b/bsps/arm/xilinx-zynq/headers.am deleted file mode 100644 index 47738c62be..0000000000 --- a/bsps/arm/xilinx-zynq/headers.am +++ /dev/null @@ -1,13 +0,0 @@ -## This file was generated by "./boostrap -H". - -include_HEADERS = -include_HEADERS += ../../../../../../bsps/arm/xilinx-zynq/include/bsp.h -include_HEADERS += include/bspopts.h -include_HEADERS += ../../../../../../bsps/arm/xilinx-zynq/include/tm27.h - -include_bspdir = $(includedir)/bsp -include_bsp_HEADERS = -include_bsp_HEADERS += ../../../../../../bsps/arm/xilinx-zynq/include/bsp/cadence-i2c-regs.h -include_bsp_HEADERS += ../../../../../../bsps/arm/xilinx-zynq/include/bsp/cadence-i2c.h -include_bsp_HEADERS += ../../../../../../bsps/arm/xilinx-zynq/include/bsp/i2c.h -include_bsp_HEADERS += ../../../../../../bsps/arm/xilinx-zynq/include/bsp/irq.h diff --git a/bsps/arm/xilinx-zynq/i2c/cadence-i2c.c b/bsps/arm/xilinx-zynq/i2c/cadence-i2c.c deleted file mode 100644 index 07379992ce..0000000000 --- a/bsps/arm/xilinx-zynq/i2c/cadence-i2c.c +++ /dev/null @@ -1,482 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (C) 2014 embedded brains GmbH - * - * 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. - * - * 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. - */ - -#include <bsp/cadence-i2c.h> -#include <bsp/cadence-i2c-regs.h> - -#include <rtems/irq-extension.h> -#include <rtems/score/assert.h> - -#include <dev/i2c/i2c.h> - -#define CADENCE_I2C_DIV_A_MAX 4 - -#define CADENCE_I2C_DIV_B_MAX 64 - -#define CADENCE_I2C_FIFO_DEPTH 16 - -#define CADENCE_I2C_DATA_IRQ_DEPTH (CADENCE_I2C_FIFO_DEPTH - 2) - -#define CADENCE_I2C_TRANSFER_SIZE_MAX 255 - -#define CADENCE_I2C_TRANSFER_SIZE_ONCE_MAX (18 * CADENCE_I2C_DATA_IRQ_DEPTH) - -#define CADENCE_I2C_IRQ_ERROR \ - (CADENCE_I2C_IXR_ARB_LOST \ - | CADENCE_I2C_IXR_RX_UNF \ - | CADENCE_I2C_IXR_TX_OVR \ - | CADENCE_I2C_IXR_RX_OVR \ - | CADENCE_I2C_IXR_NACK) - -#define CADENCE_I2C_IRQ_USED \ - (CADENCE_I2C_IRQ_ERROR \ - | CADENCE_I2C_IXR_DATA \ - | CADENCE_I2C_IXR_COMP) - -typedef struct { - i2c_bus base; - volatile cadence_i2c *regs; - i2c_msg *msgs; - uint32_t msg_todo; - uint32_t current_msg_todo; - uint8_t *current_msg_byte; - uint32_t current_todo; - uint32_t irqstatus; - bool read; - bool hold; - rtems_id task_id; - uint32_t input_clock; - rtems_vector_number irq; -} cadence_i2c_bus; - -static void cadence_i2c_disable_interrupts(volatile cadence_i2c *regs) -{ - regs->irqdisable = 0xffff; -} - -static void cadence_i2c_clear_irq_status(volatile cadence_i2c *regs) -{ - regs->irqstatus = regs->irqstatus; -} - -static void cadence_i2c_reset(cadence_i2c_bus *bus) -{ - volatile cadence_i2c *regs = bus->regs; - uint32_t val; - - cadence_i2c_disable_interrupts(regs); - - val = regs->control; - val &= ~CADENCE_I2C_CONTROL_HOLD; - val |= CADENCE_I2C_CONTROL_ACKEN - | CADENCE_I2C_CONTROL_MS - | CADENCE_I2C_CONTROL_CLR_FIFO; - regs->control = val; - - regs->transfer_size = 0; - regs->status = regs->status; - - cadence_i2c_clear_irq_status(regs); -} - -static uint32_t cadence_i2c_set_address_size( - const i2c_msg *msg, - uint32_t control -) -{ - if ((msg->flags & I2C_M_TEN) == 0) { - control |= CADENCE_I2C_CONTROL_NEA; - } else { - control &= ~CADENCE_I2C_CONTROL_NEA; - } - - return control; -} - -static void cadence_i2c_setup_read_transfer( - cadence_i2c_bus *bus, - volatile cadence_i2c *regs, - uint32_t control -) -{ - control |= CADENCE_I2C_CONTROL_RW; - regs->control = control; - - if (bus->current_todo <= CADENCE_I2C_TRANSFER_SIZE_MAX) { - regs->transfer_size = bus->current_todo; - } else { - regs->transfer_size = CADENCE_I2C_TRANSFER_SIZE_ONCE_MAX; - } -} - -static void cadence_i2c_next_byte(cadence_i2c_bus *bus) -{ - --bus->current_msg_todo; - ++bus->current_msg_byte; - - if (bus->current_msg_todo == 0) { - i2c_msg *msg; - - ++bus->msgs; - --bus->msg_todo; - - msg = &bus->msgs[0]; - - bus->current_msg_todo = msg->len; - bus->current_msg_byte = msg->buf; - } -} - -static void cadence_i2c_write_to_fifo( - cadence_i2c_bus *bus, - volatile cadence_i2c *regs -) -{ - uint32_t space_available; - uint32_t todo_now; - uint32_t i; - - space_available = CADENCE_I2C_FIFO_DEPTH - regs->transfer_size; - - if (bus->current_todo > space_available) { - todo_now = space_available; - } else { - todo_now = bus->current_todo; - } - - bus->current_todo -= todo_now; - - for (i = 0; i < todo_now; ++i) { - regs->data = *bus->current_msg_byte; - - cadence_i2c_next_byte(bus); - } -} - -static void cadence_i2c_setup_write_transfer( - cadence_i2c_bus *bus, - volatile cadence_i2c *regs, - uint32_t control -) -{ - control &= ~CADENCE_I2C_CONTROL_RW; - regs->control = control; - - cadence_i2c_write_to_fifo(bus, regs); -} - -static void cadence_i2c_setup_transfer( - cadence_i2c_bus *bus, - volatile cadence_i2c *regs -) -{ - const i2c_msg *msgs = bus->msgs; - uint32_t msg_todo = bus->msg_todo; - uint32_t i; - uint32_t control; - - bus->current_todo = msgs[0].len; - for (i = 1; i < msg_todo && (msgs[i].flags & I2C_M_NOSTART) != 0; ++i) { - bus->current_todo += msgs[i].len; - } - - regs = bus->regs; - - control = regs->control; - control |= CADENCE_I2C_CONTROL_CLR_FIFO; - - bus->hold = i < msg_todo; - - if (bus->hold || bus->current_todo > CADENCE_I2C_FIFO_DEPTH) { - control |= CADENCE_I2C_CONTROL_HOLD; - } else { - control &= ~CADENCE_I2C_CONTROL_HOLD; - } - - control = cadence_i2c_set_address_size(msgs, control); - - bus->read = (msgs->flags & I2C_M_RD) != 0; - if (bus->read) { - cadence_i2c_setup_read_transfer(bus, regs, control); - } else { - cadence_i2c_setup_write_transfer(bus, regs, control); - } - - cadence_i2c_clear_irq_status(regs); - - regs->address = CADENCE_I2C_ADDRESS(msgs->addr); -} - -static void cadence_i2c_continue_read_transfer( - cadence_i2c_bus *bus, - volatile cadence_i2c *regs -) -{ - uint32_t i; - - bus->current_todo -= CADENCE_I2C_DATA_IRQ_DEPTH; - - /* - * This works since CADENCE_I2C_TRANSFER_SIZE_ONCE_MAX is an integral - * multiple of CADENCE_I2C_DATA_IRQ_DEPTH. - * - * FIXME: Tests with a 1024 byte EEPROM show that this doesn't work. Needs - * further investigations with an I2C analyser or an oscilloscope. - */ - if (regs->transfer_size == 0) { - if (bus->current_todo <= CADENCE_I2C_TRANSFER_SIZE_MAX) { - regs->transfer_size = bus->current_todo; - } else { - regs->transfer_size = CADENCE_I2C_TRANSFER_SIZE_ONCE_MAX; - } - } - - for (i = 0; i < CADENCE_I2C_DATA_IRQ_DEPTH; ++i) { - *bus->current_msg_byte = (uint8_t) regs->data; - - cadence_i2c_next_byte(bus); - } - - if (!bus->hold && bus->current_todo <= CADENCE_I2C_FIFO_DEPTH) { - regs->control &= ~CADENCE_I2C_CONTROL_HOLD; - } -} - -static void cadence_i2c_interrupt(void *arg) -{ - cadence_i2c_bus *bus = arg; - volatile cadence_i2c *regs = bus->regs; - uint32_t irqstatus = regs->irqstatus; - bool done = false; - - /* Clear interrupts */ - regs->irqstatus = irqstatus; - - if ((irqstatus & (CADENCE_I2C_IXR_ARB_LOST | CADENCE_I2C_IXR_NACK)) != 0) { - done = true; - } - - if ( - (irqstatus & CADENCE_I2C_IXR_DATA) != 0 - && bus->read - && bus->current_todo >= CADENCE_I2C_DATA_IRQ_DEPTH - ) { - cadence_i2c_continue_read_transfer(bus, regs); - } - - if ((irqstatus & CADENCE_I2C_IXR_COMP) != 0) { - if (bus->read) { - uint32_t todo_now = bus->current_todo; - uint32_t i; - - for (i = 0; i < todo_now; ++i) { - *bus->current_msg_byte = (uint8_t) regs->data; - - cadence_i2c_next_byte(bus); - } - - bus->current_todo = 0; - - done = true; - } else { - if (bus->current_todo > 0) { - cadence_i2c_write_to_fifo(bus, regs); - } else { - done = true; - } - - if (!bus->hold && bus->current_todo == 0) { - regs->control &= ~CADENCE_I2C_CONTROL_HOLD; - } - } - } - - if (done) { - uint32_t err = irqstatus & CADENCE_I2C_IRQ_ERROR; - - if (bus->msg_todo == 0 || err != 0) { - rtems_status_code sc; - - cadence_i2c_disable_interrupts(regs); - - bus->irqstatus = err; - - sc = rtems_event_transient_send(bus->task_id); - _Assert(sc == RTEMS_SUCCESSFUL); - (void) sc; - } else { - cadence_i2c_setup_transfer(bus, regs); - } - } -} - -static int cadence_i2c_transfer( - i2c_bus *base, - i2c_msg *msgs, - uint32_t msg_count -) -{ - cadence_i2c_bus *bus = (cadence_i2c_bus *) base; - volatile cadence_i2c *regs; - rtems_status_code sc; - uint32_t i; - - _Assert(msg_count > 0); - - for (i = 0; i < msg_count; ++i) { - /* FIXME: Not sure if we can support this. */ - if ((msgs[i].flags & I2C_M_RECV_LEN) != 0) { - return -EINVAL; - } - } - - bus->msgs = &msgs[0]; - bus->msg_todo = msg_count; - bus->current_msg_todo = msgs[0].len; - bus->current_msg_byte = msgs[0].buf; - bus->task_id = rtems_task_self(); - - regs = bus->regs; - cadence_i2c_setup_transfer(bus, regs); - regs->irqenable = CADENCE_I2C_IRQ_USED; - - sc = rtems_event_transient_receive(RTEMS_WAIT, bus->base.timeout); - if (sc != RTEMS_SUCCESSFUL) { - cadence_i2c_reset(bus); - rtems_event_transient_clear(); - - return -ETIMEDOUT; - } - - return bus->irqstatus == 0 ? 0 : -EIO; -} - -static int cadence_i2c_set_clock(i2c_bus *base, unsigned long clock) -{ - cadence_i2c_bus *bus = (cadence_i2c_bus *) base; - volatile cadence_i2c *regs = bus->regs; - uint32_t error = 0xffffffff; - uint32_t best_div_a = CADENCE_I2C_DIV_A_MAX - 1; - uint32_t best_div_b = CADENCE_I2C_DIV_B_MAX - 1; - uint32_t div = bus->input_clock / (22 * clock); - uint32_t div_a; - uint32_t control; - - if (div <= 0 || div > (CADENCE_I2C_DIV_A_MAX * CADENCE_I2C_DIV_B_MAX)) { - return -EIO; - } - - for (div_a = 0; div_a < CADENCE_I2C_DIV_A_MAX; ++div_a) { - uint32_t a = 22 * clock * (div_a + 1); - uint32_t b = (bus->input_clock + a - 1) / a; - - if (b > 0 && b <= CADENCE_I2C_DIV_B_MAX) { - uint32_t actual_clock = bus->input_clock / (22 * (div_a + 1) * b); - uint32_t e = clock < actual_clock ? - actual_clock - clock : clock - actual_clock; - - /* - * Favour greater div_a values according to UG585, Zynq-7000 AP SoC - * Technical Reference Manual, Table 20-1: Calculated Values for Standard - * and High Speed SCL Clock Values". - */ - if (e <= error && actual_clock <= clock) { - error = e; - best_div_a = div_a; - best_div_b = b - 1; - } - } - } - - control = regs->control; - control = CADENCE_I2C_CONTROL_DIV_A_SET(control, best_div_a); - control = CADENCE_I2C_CONTROL_DIV_B_SET(control, best_div_b); - regs->control = control; - - return 0; -} - -static void cadence_i2c_destroy(i2c_bus *base) -{ - cadence_i2c_bus *bus = (cadence_i2c_bus *) base; - rtems_status_code sc; - - sc = rtems_interrupt_handler_remove(bus->irq, cadence_i2c_interrupt, bus); - _Assert(sc == RTEMS_SUCCESSFUL); - (void) sc; - - i2c_bus_destroy_and_free(&bus->base); -} - -int i2c_bus_register_cadence( - const char *bus_path, - uintptr_t register_base, - uint32_t input_clock, - rtems_vector_number irq -) -{ - cadence_i2c_bus *bus; - rtems_status_code sc; - int err; - - bus = (cadence_i2c_bus *) i2c_bus_alloc_and_init(sizeof(*bus)); - if (bus == NULL) { - return -1; - } - - bus->regs = (volatile cadence_i2c *) register_base; - bus->input_clock = input_clock; - bus->irq = irq; - - cadence_i2c_reset(bus); - - err = cadence_i2c_set_clock(&bus->base, I2C_BUS_CLOCK_DEFAULT); - if (err != 0) { - (*bus->base.destroy)(&bus->base); - - rtems_set_errno_and_return_minus_one(-err); - } - - sc = rtems_interrupt_handler_install( - irq, - "Cadence I2C", - RTEMS_INTERRUPT_UNIQUE, - cadence_i2c_interrupt, - bus - ); - if (sc != RTEMS_SUCCESSFUL) { - (*bus->base.destroy)(&bus->base); - - rtems_set_errno_and_return_minus_one(EIO); - } - - bus->base.transfer = cadence_i2c_transfer; - bus->base.set_clock = cadence_i2c_set_clock; - bus->base.destroy = cadence_i2c_destroy; - - return i2c_bus_register(&bus->base, bus_path); -} diff --git a/bsps/arm/xilinx-zynq/include/bsp.h b/bsps/arm/xilinx-zynq/include/bsp.h index fde8d03130..151e603812 100644 --- a/bsps/arm/xilinx-zynq/include/bsp.h +++ b/bsps/arm/xilinx-zynq/include/bsp.h @@ -7,7 +7,7 @@ /* * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (C) 2013, 2014 embedded brains GmbH + * Copyright (C) 2013, 2014 embedded brains GmbH & Co. KG * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -54,7 +54,7 @@ #include <bsp/default-initial-extension.h> #include <bsp/start.h> -#include <dev/serial/zynq-uart.h> +#include <dev/serial/zynq-uart-zynq.h> #ifdef __cplusplus extern "C" { @@ -74,8 +74,6 @@ extern "C" { #define BSP_ARM_L2C_310_ID 0x410000c8 -extern zynq_uart_context zynq_uart_instances[2]; - /** * @brief Zynq specific set up of the MMU. * diff --git a/bsps/arm/xilinx-zynq/include/bsp/cadence-i2c-regs.h b/bsps/arm/xilinx-zynq/include/bsp/cadence-i2c-regs.h deleted file mode 100644 index 7d7c3b284a..0000000000 --- a/bsps/arm/xilinx-zynq/include/bsp/cadence-i2c-regs.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (C) 2014 embedded brains GmbH - * - * 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. - * - * 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 LIBBSP_ARM_XILINX_ZYNQ_CADENCE_I2C_REGS_H -#define LIBBSP_ARM_XILINX_ZYNQ_CADENCE_I2C_REGS_H - -#include <bsp/utility.h> - -typedef struct { - uint32_t control; -#define CADENCE_I2C_CONTROL_DIV_A(val) BSP_FLD32(val, 14, 15) -#define CADENCE_I2C_CONTROL_DIV_A_GET(reg) BSP_FLD32GET(reg, 14, 15) -#define CADENCE_I2C_CONTROL_DIV_A_SET(reg, val) BSP_FLD32SET(reg, val, 14, 15) -#define CADENCE_I2C_CONTROL_DIV_B(val) BSP_FLD32(val, 8, 13) -#define CADENCE_I2C_CONTROL_DIV_B_GET(reg) BSP_FLD32GET(reg, 8, 13) -#define CADENCE_I2C_CONTROL_DIV_B_SET(reg, val) BSP_FLD32SET(reg, val, 8, 13) -#define CADENCE_I2C_CONTROL_CLR_FIFO BSP_BIT32(6) -#define CADENCE_I2C_CONTROL_SLVMON BSP_BIT32(5) -#define CADENCE_I2C_CONTROL_HOLD BSP_BIT32(4) -#define CADENCE_I2C_CONTROL_ACKEN BSP_BIT32(3) -#define CADENCE_I2C_CONTROL_NEA BSP_BIT32(2) -#define CADENCE_I2C_CONTROL_MS BSP_BIT32(1) -#define CADENCE_I2C_CONTROL_RW BSP_BIT32(0) - uint32_t status; -#define CADENCE_I2C_STATUS_BA BSP_BIT32(8) -#define CADENCE_I2C_STATUS_RXOVF BSP_BIT32(7) -#define CADENCE_I2C_STATUS_TXDV BSP_BIT32(6) -#define CADENCE_I2C_STATUS_RXDV BSP_BIT32(5) -#define CADENCE_I2C_STATUS_RXRW BSP_BIT32(3) - uint32_t address; -#define CADENCE_I2C_ADDRESS(val) BSP_FLD32(val, 0, 9) -#define CADENCE_I2C_ADDRESS_GET(reg) BSP_FLD32GET(reg, 0, 9) -#define CADENCE_I2C_ADDRESS_SET(reg, val) BSP_FLD32SET(reg, val, 0, 9) - uint32_t data; - uint32_t irqstatus; -#define CADENCE_I2C_IXR_ARB_LOST BSP_BIT32(9) -#define CADENCE_I2C_IXR_RX_UNF BSP_BIT32(7) -#define CADENCE_I2C_IXR_TX_OVR BSP_BIT32(6) -#define CADENCE_I2C_IXR_RX_OVR BSP_BIT32(5) -#define CADENCE_I2C_IXR_SLV_RDY BSP_BIT32(4) -#define CADENCE_I2C_IXR_TO BSP_BIT32(3) -#define CADENCE_I2C_IXR_NACK BSP_BIT32(2) -#define CADENCE_I2C_IXR_DATA BSP_BIT32(1) -#define CADENCE_I2C_IXR_COMP BSP_BIT32(0) - uint32_t transfer_size; -#define CADENCE_I2C_TRANSFER_SIZE(val) BSP_FLD32(val, 0, 7) -#define CADENCE_I2C_TRANSFER_SIZE_GET(reg) BSP_FLD32GET(reg, 0, 7) -#define CADENCE_I2C_TRANSFER_SIZE_SET(reg, val) BSP_FLD32SET(reg, val, 0, 7) - uint32_t slave_mon_pause; -#define CADENCE_I2C_SLAVE_MON_PAUSE(val) BSP_FLD32(val, 0, 3) -#define CADENCE_I2C_SLAVE_MON_PAUSE_GET(reg) BSP_FLD32GET(reg, 0, 3) -#define CADENCE_I2C_SLAVE_MON_PAUSE_SET(reg, val) BSP_FLD32SET(reg, val, 0, 3) - uint32_t timeout; -#define CADENCE_I2C_TIMEOUT(val) BSP_FLD32(val, 0, 7) -#define CADENCE_I2C_TIMEOUT_GET(reg) BSP_FLD32GET(reg, 0, 7) -#define CADENCE_I2C_TIMEOUT_SET(reg, val) BSP_FLD32SET(reg, val, 0, 7) - uint32_t irqmask; - uint32_t irqenable; - uint32_t irqdisable; -} cadence_i2c; - -#endif /* LIBBSP_ARM_XILINX_ZYNQ_CADENCE_I2C_REGS_H */ diff --git a/bsps/arm/xilinx-zynq/include/bsp/cadence-i2c.h b/bsps/arm/xilinx-zynq/include/bsp/cadence-i2c.h deleted file mode 100644 index aff97237a4..0000000000 --- a/bsps/arm/xilinx-zynq/include/bsp/cadence-i2c.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (C) 2014 embedded brains GmbH - * - * 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. - * - * 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 LIBBSP_ARM_XILINX_ZYNQ_CADENCE_I2C_H -#define LIBBSP_ARM_XILINX_ZYNQ_CADENCE_I2C_H - -#include <rtems.h> - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -int i2c_bus_register_cadence( - const char *bus_path, - uintptr_t register_base, - uint32_t input_clock, - rtems_vector_number irq -); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* LIBBSP_ARM_XILINX_ZYNQ_CADENCE_I2C_H */ diff --git a/bsps/arm/xilinx-zynq/include/bsp/i2c.h b/bsps/arm/xilinx-zynq/include/bsp/i2c.h index fbdf6ea2c0..93a8b364b1 100644 --- a/bsps/arm/xilinx-zynq/include/bsp/i2c.h +++ b/bsps/arm/xilinx-zynq/include/bsp/i2c.h @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (C) 2014 embedded brains GmbH + * Copyright (C) 2014 embedded brains GmbH & Co. KG * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -28,10 +28,11 @@ #ifndef LIBBSP_ARM_XILINX_ZYNQ_I2C_H #define LIBBSP_ARM_XILINX_ZYNQ_I2C_H -#include <bsp/cadence-i2c.h> #include <bsp/irq.h> #include <bsp.h> +#include <dev/i2c/cadence-i2c.h> + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ diff --git a/bsps/arm/xilinx-zynq/include/bsp/irq.h b/bsps/arm/xilinx-zynq/include/bsp/irq.h index f4579ae614..61d47c529b 100644 --- a/bsps/arm/xilinx-zynq/include/bsp/irq.h +++ b/bsps/arm/xilinx-zynq/include/bsp/irq.h @@ -7,7 +7,7 @@ /* * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (C) 2013 embedded brains GmbH + * Copyright (C) 2013 embedded brains GmbH & Co. KG * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -36,7 +36,6 @@ #ifndef ASM -#include <rtems/irq.h> #include <rtems/irq-extension.h> #include <bsp/arm-a9mpcore-irq.h> diff --git a/bsps/arm/xilinx-zynq/include/tm27.h b/bsps/arm/xilinx-zynq/include/tm27.h index 7fc8dd7edd..9f3f846c87 100644 --- a/bsps/arm/xilinx-zynq/include/tm27.h +++ b/bsps/arm/xilinx-zynq/include/tm27.h @@ -7,7 +7,7 @@ /* * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (C) 2013 embedded brains GmbH + * Copyright (C) 2013 embedded brains GmbH & Co. KG * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/bsps/arm/xilinx-zynq/start/bsp_specs b/bsps/arm/xilinx-zynq/start/bsp_specs deleted file mode 100644 index e69de29bb2..0000000000 --- a/bsps/arm/xilinx-zynq/start/bsp_specs +++ /dev/null diff --git a/bsps/arm/xilinx-zynq/start/bspreset.c b/bsps/arm/xilinx-zynq/start/bspreset.c index 3e797a137e..b6cf09ba02 100644 --- a/bsps/arm/xilinx-zynq/start/bspreset.c +++ b/bsps/arm/xilinx-zynq/start/bspreset.c @@ -1,7 +1,15 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSBSPsARMZynq * - * Copyright (C) 2013 embedded brains GmbH + * @brief This source file contains the implementation of bsp_reset(). + */ + +/* + * Copyright (C) 2013 embedded brains GmbH & Co. KG * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -27,14 +35,16 @@ #include <bsp.h> #include <bsp/bootcard.h> -#include <dev/serial/zynq-uart.h> +#include <dev/serial/zynq-uart-regs.h> void bsp_reset(void) { + volatile zynq_uart *regs = + (volatile zynq_uart *) ZYNQ_UART_KERNEL_IO_BASE_ADDR; volatile uint32_t *slcr_unlock = (volatile uint32_t *) 0xf8000008; volatile uint32_t *pss_rst_ctrl = (volatile uint32_t *) 0xf8000200; - zynq_uart_reset_tx_flush(&zynq_uart_instances[BSP_CONSOLE_MINOR]); + zynq_uart_reset_tx_flush(regs); while (true) { *slcr_unlock = 0xdf0d; diff --git a/bsps/arm/xilinx-zynq/start/bspsmp.c b/bsps/arm/xilinx-zynq/start/bspsmp.c index fdb7f85ba6..294acb0083 100644 --- a/bsps/arm/xilinx-zynq/start/bspsmp.c +++ b/bsps/arm/xilinx-zynq/start/bspsmp.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (C) 2014 embedded brains GmbH + * Copyright (C) 2014 embedded brains GmbH & Co. KG * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/bsps/arm/xilinx-zynq/start/bspstart.c b/bsps/arm/xilinx-zynq/start/bspstart.c index 68b0ef0b03..89926ce1f3 100644 --- a/bsps/arm/xilinx-zynq/start/bspstart.c +++ b/bsps/arm/xilinx-zynq/start/bspstart.c @@ -1,7 +1,16 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSBSPsARMZynq * - * Copyright (C) 2013, 2015 embedded brains GmbH + * @brief This source file contains the implementation of zynq_clock_cpu_1x() + * and bsp_start(). + */ + +/* + * Copyright (C) 2013, 2015 embedded brains GmbH & Co. KG * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/bsps/arm/xilinx-zynq/start/bspstarthooks.c b/bsps/arm/xilinx-zynq/start/bspstarthooks.c index c67ed4f93e..de6a4ccd54 100644 --- a/bsps/arm/xilinx-zynq/start/bspstarthooks.c +++ b/bsps/arm/xilinx-zynq/start/bspstarthooks.c @@ -1,7 +1,16 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSBSPsARMZynq * - * Copyright (C) 2013, 2014 embedded brains GmbH + * @brief This source file contains the implementation of bsp_start_hook_0() + * and bsp_start_hook_1(). + */ + +/* + * Copyright (C) 2013, 2014 embedded brains GmbH & Co. KG * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/bsps/arm/xilinx-zynq/start/bspstartmmu.c b/bsps/arm/xilinx-zynq/start/bspstartmmu.c index c18f8623f7..04d7586c1b 100644 --- a/bsps/arm/xilinx-zynq/start/bspstartmmu.c +++ b/bsps/arm/xilinx-zynq/start/bspstartmmu.c @@ -1,7 +1,16 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSBSPsARMZynq * - * Copyright (C) 2013 embedded brains GmbH + * @brief This source file contains the implementation of + * zynq_setup_mmu_and_cache(). + */ + +/* + * Copyright (C) 2013 embedded brains GmbH & Co. KG * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/bsps/arm/xilinx-zynq/start/linkcmds.in b/bsps/arm/xilinx-zynq/start/linkcmds.in deleted file mode 100644 index fb841b93aa..0000000000 --- a/bsps/arm/xilinx-zynq/start/linkcmds.in +++ /dev/null @@ -1,36 +0,0 @@ -MEMORY { - RAM_INT_0 : ORIGIN = @ZYNQ_RAM_INT_0_ORIGIN@, LENGTH = @ZYNQ_RAM_INT_0_LENGTH@ - RAM_INT_1 : ORIGIN = @ZYNQ_RAM_INT_1_ORIGIN@, LENGTH = @ZYNQ_RAM_INT_1_LENGTH@ - RAM_MMU : ORIGIN = @ZYNQ_RAM_ORIGIN@, LENGTH = @ZYNQ_RAM_MMU_LENGTH@ - RAM : ORIGIN = @ZYNQ_RAM_ORIGIN@ + @ZYNQ_RAM_MMU_LENGTH@, LENGTH = @BSP_ZYNQ_RAM_LENGTH@ - @ZYNQ_RAM_ORIGIN@ - @ZYNQ_RAM_MMU_LENGTH@ - @ZYNQ_RAM_NOCACHE_LENGTH@ - NOCACHE : ORIGIN = @BSP_ZYNQ_RAM_LENGTH@ - @ZYNQ_RAM_NOCACHE_LENGTH@, LENGTH = @ZYNQ_RAM_NOCACHE_LENGTH@ -} - -REGION_ALIAS ("REGION_START", RAM); -REGION_ALIAS ("REGION_VECTOR", RAM); -REGION_ALIAS ("REGION_TEXT", RAM); -REGION_ALIAS ("REGION_TEXT_LOAD", RAM); -REGION_ALIAS ("REGION_RODATA", RAM); -REGION_ALIAS ("REGION_RODATA_LOAD", RAM); -REGION_ALIAS ("REGION_DATA", RAM); -REGION_ALIAS ("REGION_DATA_LOAD", RAM); -REGION_ALIAS ("REGION_FAST_TEXT", RAM); -REGION_ALIAS ("REGION_FAST_TEXT_LOAD", RAM); -REGION_ALIAS ("REGION_FAST_DATA", RAM); -REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM); -REGION_ALIAS ("REGION_BSS", RAM); -REGION_ALIAS ("REGION_WORK", RAM); -REGION_ALIAS ("REGION_STACK", RAM); -REGION_ALIAS ("REGION_NOCACHE", NOCACHE); -REGION_ALIAS ("REGION_NOCACHE_LOAD", NOCACHE); - -bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size : 1024; - -bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ? bsp_section_rwbarrier_align : 1M; - -bsp_vector_table_in_start_section = 1; - -bsp_translation_table_base = ORIGIN (RAM_MMU); -bsp_translation_table_end = ORIGIN (RAM_MMU) + LENGTH (RAM_MMU); - -INCLUDE linkcmds.armv4 |