From dbc29fe77e14a95443583b6267bf9ad2c8859003 Mon Sep 17 00:00:00 2001 From: Wayne Ren Date: Thu, 25 Jul 2019 16:44:41 +0800 Subject: [PATCH] boards: hsdk: add initial support of ARC HS Development Kit This commit includes the initial support of ARC HS Development Kit: * hsdk soc support * hsdk board support * no mmu support, so no userspace * smp support Signed-off-by: Wayne Ren --- boards/arc/hsdk/Kconfig.board | 14 ++ boards/arc/hsdk/Kconfig.defconfig | 11 + boards/arc/hsdk/board.cmake | 6 + boards/arc/hsdk/doc/hsdk.jpg | Bin 0 -> 105444 bytes boards/arc/hsdk/doc/index.rst | 208 ++++++++++++++++++ boards/arc/hsdk/hsdk.dts | 29 +++ boards/arc/hsdk/hsdk.yaml | 11 + boards/arc/hsdk/hsdk_defconfig | 15 ++ boards/arc/hsdk/support/openocd.cfg | 111 ++++++++++ dts/arc/arc_hsdk.dtsi | 189 ++++++++++++++++ .../snps,archs-idu-intc.yaml | 23 ++ soc/arc/snps_arc_hsdk/CMakeLists.txt | 13 ++ soc/arc/snps_arc_hsdk/Kconfig.defconfig | 63 ++++++ soc/arc/snps_arc_hsdk/Kconfig.soc | 9 + soc/arc/snps_arc_hsdk/dts_fixup.h | 19 ++ soc/arc/snps_arc_hsdk/linker.ld | 23 ++ soc/arc/snps_arc_hsdk/soc.c | 41 ++++ soc/arc/snps_arc_hsdk/soc.h | 43 ++++ 18 files changed, 828 insertions(+) create mode 100644 boards/arc/hsdk/Kconfig.board create mode 100644 boards/arc/hsdk/Kconfig.defconfig create mode 100644 boards/arc/hsdk/board.cmake create mode 100644 boards/arc/hsdk/doc/hsdk.jpg create mode 100644 boards/arc/hsdk/doc/index.rst create mode 100644 boards/arc/hsdk/hsdk.dts create mode 100644 boards/arc/hsdk/hsdk.yaml create mode 100644 boards/arc/hsdk/hsdk_defconfig create mode 100644 boards/arc/hsdk/support/openocd.cfg create mode 100644 dts/arc/arc_hsdk.dtsi create mode 100644 dts/bindings/interrupt-controller/snps,archs-idu-intc.yaml create mode 100644 soc/arc/snps_arc_hsdk/CMakeLists.txt create mode 100644 soc/arc/snps_arc_hsdk/Kconfig.defconfig create mode 100644 soc/arc/snps_arc_hsdk/Kconfig.soc create mode 100644 soc/arc/snps_arc_hsdk/dts_fixup.h create mode 100644 soc/arc/snps_arc_hsdk/linker.ld create mode 100644 soc/arc/snps_arc_hsdk/soc.c create mode 100644 soc/arc/snps_arc_hsdk/soc.h diff --git a/boards/arc/hsdk/Kconfig.board b/boards/arc/hsdk/Kconfig.board new file mode 100644 index 00000000000..62254cf6082 --- /dev/null +++ b/boards/arc/hsdk/Kconfig.board @@ -0,0 +1,14 @@ +# Kconfig - DesignWare ARC HS Development Kit board configuration +# +# Copyright (c) 2019 Synopsys, Inc. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# +config BOARD_HSDK + bool "ARC HS Development Kit" + depends on SOC_ARC_HSDK + help + The DesignWare ARC HS Development Kit is a ready-to-use platform for + rapid software development on the ARC HS3x family of processors. It + supports single- and multi-core ARC HS34, HS36 and HS38 processors + and offers a wide range of interfaces diff --git a/boards/arc/hsdk/Kconfig.defconfig b/boards/arc/hsdk/Kconfig.defconfig new file mode 100644 index 00000000000..156a116a83c --- /dev/null +++ b/boards/arc/hsdk/Kconfig.defconfig @@ -0,0 +1,11 @@ +# +# Copyright (c) 2019 Synopsys, Inc. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_HSDK + +config BOARD + default "hsdk" + +endif # BOARD_HSDK diff --git a/boards/arc/hsdk/board.cmake b/boards/arc/hsdk/board.cmake new file mode 100644 index 00000000000..c5df901aa16 --- /dev/null +++ b/boards/arc/hsdk/board.cmake @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: Apache-2.0 + +# TODO: can this board just use the usual openocd runner? +set(BOARD_FLASH_RUNNER em-starterkit) +set(BOARD_DEBUG_RUNNER em-starterkit) +board_finalize_runner_args(em-starterkit) diff --git a/boards/arc/hsdk/doc/hsdk.jpg b/boards/arc/hsdk/doc/hsdk.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff2496ef90b7b05319ba452557d76295cfce71c9 GIT binary patch literal 105444 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 + +Hardware +******** + +For hardware feature details, refer to : +`Designware HS Development Kit website`_. + +Programming and Debugging +************************* + +Required Hardware and Software +============================== + +To use Zephyr RTOS applications on the HS Development Kit board, a few +additional pieces of hardware are required. + +* A micro USB cable provides USB-JTAG debug and USB-UART communication + to the board + +* A universal switching power adaptor (110-240V + AC to 12V DC), provided in the package, provides power to the board. + +* :ref:`The Zephyr SDK ` + +* Terminal emulator software for use with the USB-UART. Suggestion: + `Putty Website`_. + +* (optional) A collection of Pmods, Arduino modules, or Mikro modules. + See `Digilent Pmod Modules`_ or develop your custom interfaces to attach + to the Pmod connector. + +Set up the ARC HS Development Kit +================================== + +To run Zephyr application on IoT Development Kit, you need to +set up the board correctly. + +* Connect the digilent USB cable from your host to the board. + +* Connect the 12V DC power supply to your board + +Set up Zephyr Software +====================== + +Building Sample Applications +============================== + +You can try many of the :ref:`sample applications and demos +`. We'll use :ref:`hello_world`, found in +:zephyr_file:`samples/hello_world` as an example. + +Configuring +----------- + +You may need to write a prj_arc.conf file if the sample doesn't have one. +Next, you can use the menuconfig rule to configure the target. By specifying +``hsdk`` as the board configuration, you can select the ARC HS Development +Kit board support for Zephyr. + +.. zephyr-app-commands:: + :board: hsdk + :zephyr-app: samples/hello_world + :goals: menuconfig + + +Building +-------- + +You can build an application in the usual way. Refer to +:ref:`build_an_application` for more details. Here is an example for +:ref:`hello_world`. + +.. zephyr-app-commands:: + :board: hsdk + :zephyr-app: samples/hello_world + :maybe-skip-config: + :goals: build + + +Connecting Serial Output +========================= + +In the default configuration, Zephyr's HS Development Kit images support +serial output via the USB-UART on the board. To enable serial output: + +* Open a serial port emulator (i.e. on Linux minicom, putty, screen, etc) + +* Specify the tty driver name, for example, on Linux this may be + :file:`/dev/ttyUSB0` + +* Set the communication settings to: + + +========= ===== +Parameter Value +========= ===== +Baud: 115200 +Data: 8 bits +Parity: None +Stopbits: 1 +========= ===== + +Debugging +========== + +Using the latest version of Zephyr SDK(>=0.10), you can debug and +flash (run) HS Development Kit directly. + +One option is to build and debug the application using the usual +Zephyr build system commands. + +.. zephyr-app-commands:: + :board: hsdk + :app: + :goals: debug + +At this point you can do your normal debug session. Set breakpoints and then +:kbd:`c` to continue into the program. + +The other option is to launch a debug server, as follows. + +.. zephyr-app-commands:: + :board: hsdk + :app: + :goals: debugserver + +Then connect to the debug server at the HS Development Kit from a second +console, from the build directory containing the output :file:`zephyr.elf`. + +.. code-block:: console + + $ cd + $ $ZEPHYR_SDK_INSTALL_DIR/arc-zephyr-elf/arc-zephyr-elf-gdb zephyr.elf + (gdb) target remote localhost:3333 + (gdb) load + (gdb) b main + (gdb) c + +Flashing +======== + +If you just want to download the application to the HS Development Kit's DDR +and run, you can do so in the usual way. + +.. zephyr-app-commands:: + :board: hsdk + :app: + :goals: flash + +This command still uses openocd and gdb to load the application elf file to +HS Development Kit, but it will load the application and immediately run. If +power is removed, the application will be lost since it wasn't written to flash. + +Most of the time you will not be flashing your program but will instead debug +it using openocd and gdb. The program can be download via the USB cable into +the code and data memories. + +The HS Development Kit also supports flashing the Zephyr application +with the U-Boot bootloader, a powerful and flexible tool for loading +an executable from different sources and running it on the target platform. + +The U-Boot implementation for the HS Development Kit was further extended with +additional functionality that allows users to better manage the broad +configurability of the HS Development Kit + +When you are ready to deploy the program so that it boots up automatically on +reset or power-up, you can follow the steps to place the program on SD card. + +For details, see: `Uboot-HSDK-Command-Reference +`__ + + +Release Notes +************* + +References +********** + +.. _embARC website: https://www.embarc.org + +.. _Designware HS Development Kit website: `_ + +.. _Digilent Pmod Modules: http://store.digilentinc.com/pmod-modules + +.. _Putty website: http://www.putty.org diff --git a/boards/arc/hsdk/hsdk.dts b/boards/arc/hsdk/hsdk.dts new file mode 100644 index 00000000000..b45acdf4093 --- /dev/null +++ b/boards/arc/hsdk/hsdk.dts @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2019, Synopsys, Inc. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include + +/ { + model = "hsdk"; + compatible = "snps,hsdk"; + + aliases { + uart-0 = &uart0; + }; + + chosen { + zephyr,sram = &ddr0; + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + }; +}; + +&uart0 { + status = "okay"; + current-speed = <115200>; +}; diff --git a/boards/arc/hsdk/hsdk.yaml b/boards/arc/hsdk/hsdk.yaml new file mode 100644 index 00000000000..3f6d662b1cb --- /dev/null +++ b/boards/arc/hsdk/hsdk.yaml @@ -0,0 +1,11 @@ +identifier: hsdk +name: HS Development Kit +type: mcu +arch: arc +toolchain: + - zephyr + - xtools +testing: + ignore_tags: + - net + - bluetooth diff --git a/boards/arc/hsdk/hsdk_defconfig b/boards/arc/hsdk/hsdk_defconfig new file mode 100644 index 00000000000..e873865896b --- /dev/null +++ b/boards/arc/hsdk/hsdk_defconfig @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_ARC=y +CONFIG_CPU_ARCHS=y +CONFIG_SOC_ARC_HSDK=y +CONFIG_BOARD_HSDK=y +CONFIG_SYS_CLOCK_TICKS_PER_SEC=100 +CONFIG_XIP=y +CONFIG_BUILD_OUTPUT_BIN=n +CONFIG_PRINTK=y +CONFIG_ARCV2_INTERRUPT_UNIT=y +CONFIG_ARCV2_TIMER=y +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y +CONFIG_SERIAL=y diff --git a/boards/arc/hsdk/support/openocd.cfg b/boards/arc/hsdk/support/openocd.cfg new file mode 100644 index 00000000000..2a849281025 --- /dev/null +++ b/boards/arc/hsdk/support/openocd.cfg @@ -0,0 +1,111 @@ +# Copyright (C) 2019 Synopsys, Inc. +# SPDX-License-Identifier: Apache-2.0 +# + +# Configure JTAG cable +# SDP has built-in FT2232 chip, which is similar to Digilent HS-1, except that +# it uses channgel B for JTAG, instead of channel A. +interface ftdi +ftdi_vid_pid 0x0403 0x6010 +ftdi_layout_init 0x0088 0x008b +ftdi_channel 1 + + +adapter_khz 10000 + +# ARCs supports only JTAG. +transport select jtag + + +# +# HS Development Kit SoC. +# +# Contains quad-core ARC HS38. +# + +source [find cpu/arc/hs.tcl] + +set _coreid 0 +set _dbgbase [expr 0x00000000 | ($_coreid << 13)] + +# CHIPNAME will be used to choose core family (600, 700 or EM). As far as +# OpenOCD is concerned EM and HS are identical. +set _CHIPNAME arc-em + +# OpenOCD discovers JTAG TAPs in reverse order. + +set _TARGETNAME4 $_CHIPNAME.cpu4 +jtag newtap $_CHIPNAME cpu4 -irlen 4 -ircapture 0x1 -expected-id 0x200c24b1 +set _TARGETNAME3 $_CHIPNAME.cpu3 +jtag newtap $_CHIPNAME cpu3 -irlen 4 -ircapture 0x1 -expected-id 0x200824b1 +set _TARGETNAME2 $_CHIPNAME.cpu2 +jtag newtap $_CHIPNAME cpu2 -irlen 4 -ircapture 0x1 -expected-id 0x200424b1 +set _TARGETNAME1 $_CHIPNAME.cpu1 +jtag newtap $_CHIPNAME cpu1 -irlen 4 -ircapture 0x1 -expected-id 0x200024b1 + +################################ +# ARC HS38 core 1 +################################ + +target create $_TARGETNAME1 arcv2 -chain-position $_TARGETNAME1 +$_TARGETNAME1 configure -coreid $_coreid +$_TARGETNAME1 configure -dbgbase $_dbgbase +$_TARGETNAME1 configure -event reset-assert "arc_common_reset $_TARGETNAME1" +set _coreid [expr $_coreid + 1] +set _dbgbase [expr 0x00000000 | ($_coreid << 13)] +arc_hs_init_regs + +# Enable L2 cache support for core 1. +$_TARGETNAME1 arc has-l2cache true + + +################################ +# ARC HS38 core 2 +################################ + +target create $_TARGETNAME2 arcv2 -chain-position $_TARGETNAME2 +$_TARGETNAME2 configure -coreid $_coreid +$_TARGETNAME2 configure -dbgbase $_dbgbase +$_TARGETNAME2 configure -event reset-assert "arc_common_reset $_TARGETNAME2" +set _coreid [expr $_coreid + 1] +set _dbgbase [expr 0x00000000 | ($_coreid << 13)] +arc_hs_init_regs + +# Enable L2 cache support for core 2. +$_TARGETNAME2 arc has-l2cache true + + +################################ +# ARC HS38 core 3 +################################ + +target create $_TARGETNAME3 arcv2 -chain-position $_TARGETNAME3 +$_TARGETNAME3 configure -coreid $_coreid +$_TARGETNAME3 configure -dbgbase $_dbgbase +$_TARGETNAME3 configure -event reset-assert "arc_common_reset $_TARGETNAME3" +set _coreid [expr $_coreid + 1] +set _dbgbase [expr 0x00000000 | ($_coreid << 13)] +arc_hs_init_regs + +# Enable L2 cache support for core 3. +$_TARGETNAME3 arc has-l2cache true + +################################ +# ARC HS38 core 4 +################################ + +target create $_TARGETNAME4 arcv2 -chain-position $_TARGETNAME4 +$_TARGETNAME4 configure -coreid $_coreid +$_TARGETNAME4 configure -dbgbase $_dbgbase +# Flush L2$. +$_TARGETNAME4 configure -event reset-assert "arc_hs_reset $_TARGETNAME4" +set _coreid [expr $_coreid + 1] +set _dbgbase [expr 0x00000000 | ($_coreid << 13)] +arc_hs_init_regs + +# Enable L2 cache support for core 4. +$_TARGETNAME4 arc has-l2cache true + + + +# vi:ft=tcl diff --git a/dts/arc/arc_hsdk.dtsi b/dts/arc/arc_hsdk.dtsi new file mode 100644 index 00000000000..6c606b36dad --- /dev/null +++ b/dts/arc/arc_hsdk.dtsi @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2019, Synopsys, Inc. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "skeleton.dtsi" + +#include +#include + +/ { + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "snps,archs38"; + reg = <0>; + }; + + cpu@1 { + device_type = "cpu"; + compatible = "snps,archs38"; + reg = <1>; + }; + + cpu@2 { + device_type = "cpu"; + compatible = "snps,archs38"; + reg = <2>; + }; + + cpu@3 { + device_type = "cpu"; + compatible = "snps,archs38"; + reg = <3>; + }; + + }; + + intc: arcv2-intc { + compatible = "snps,arcv2-intc"; + interrupt-controller; + #interrupt-cells = <2>; + }; + + + idu_intc: idu-interrupt-controller { + compatible = "snps,archs-idu-intc"; + interrupt-controller; + #interrupt-cells = <2>; + interrupt-parent = <&intc>; + }; + + soc { + #address-cells = <1>; + #size-cells = <1>; + compatible = "simple-bus"; + interrupt-parent = <&idu_intc>; + ranges; + + ddr0: memory@0 { + device_type = "memory"; + compatible = "mmio-sram"; + reg = <0x0 0x80000000>; + }; + + uart0: uart@f0005000 { + compatible = "ns16550"; + clock-frequency = <33333333>; + reg = <0xf0005000 0x1000>; + label = "UART_0"; + interrupts = <30 1>; + }; + + uart1: uart@f0026000{ + compatible = "ns16550"; + clock-frequency = <33333333>; + reg = <0xf0026000 0x1000>; + label = "UART_1"; + interrupts = <46 1>; + + status = "disabled"; + }; + + uart2: uart@f0027000 { + compatible = "ns16550"; + clock-frequency = <33333333>; + reg = <0xf0027000 0x1000>; + label = "UART_2"; + interrupts = <47 1>; + + status = "disabled"; + }; + + uart3: uart@f0028000 { + compatible = "ns16550"; + clock-frequency = <33333333>; + reg = <0xf0028000 0x1000>; + label = "UART_3"; + interrupts = <48 1>; + + status = "disabled"; + }; + + gpio0: gpio@f0003000 { + compatible = "snps,designware-gpio"; + reg = <0xf0003000 0x1000>; + bits = <32>; + label = "GPIO_0"; + interrupt-parent = <&idu_intc>; + + gpio-controller; + #gpio-cells = <2>; + + status = "disabled"; + }; + + i2c0: i2c@f0023000 { + compatible = "snps,designware-i2c"; + clock-frequency = ; + #address-cells = <1>; + #size-cells = <0>; + reg = <0xf0023000 0x1000>; + interrupts = <43 1>; + label = "I2C_0"; + + status = "disabled"; + }; + + i2c1: i2c@f0024000 { + compatible = "snps,designware-i2c"; + clock-frequency = ; + #address-cells = <1>; + #size-cells = <0>; + reg = <0xf0024000 0x1000>; + interrupts = <44 1>; + label = "I2C_1"; + + status = "disabled"; + }; + + i2c2: i2c@f0025000 { + compatible = "snps,designware-i2c"; + clock-frequency = ; + #address-cells = <1>; + #size-cells = <0>; + reg = <0xf0025000 0x1000>; + interrupts = <45 1>; + label = "I2C_2"; + + status = "disabled"; + }; + + spi0: spi@f0020000 { + compatible = "snps,designware-spi"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0xf0020000 0x1000>; + interrupts = <40 1>; + label = "SPI_0"; + + status = "disabled"; + }; + + spi1: spi@f0021000 { + compatible = "snps,designware-spi"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0xf0021000 0x1000>; + interrupts = <41 1>; + label = "SPI_1"; + status = "disabled"; + }; + + spi2: spi@f0022000 { + compatible = "snps,designware-spi"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0xf0022000 0x1000>; + interrupts = <42 1>; + label = "SPI_1"; + status = "disabled"; + }; + + }; +}; \ No newline at end of file diff --git a/dts/bindings/interrupt-controller/snps,archs-idu-intc.yaml b/dts/bindings/interrupt-controller/snps,archs-idu-intc.yaml new file mode 100644 index 00000000000..ae3afca2bc2 --- /dev/null +++ b/dts/bindings/interrupt-controller/snps,archs-idu-intc.yaml @@ -0,0 +1,23 @@ +# +# Copyright (c) 2019, synopsys +# +# SPDX-License-Identifier: Apache-2.0 +# + +title: ARC-HS Interrupt Distribution Unit + +description: > + This binding describes the 2nd level interrupt controller can be used in + SMP configurations for dynamic IRQ routing, load balancing of + common/external IRQs towards core intc + +inherits: + !include [interrupt-controller.yaml, base.yaml] + +properties: + compatible: + constraint: "snps,archs-idu-intc" + +"#cells": + - irq + - priority diff --git a/soc/arc/snps_arc_hsdk/CMakeLists.txt b/soc/arc/snps_arc_hsdk/CMakeLists.txt new file mode 100644 index 00000000000..eb9eb660ddd --- /dev/null +++ b/soc/arc/snps_arc_hsdk/CMakeLists.txt @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: Apache-2.0 + +zephyr_library_include_directories(${ZEPHYR_BASE}/drivers) + +# -mcpu=hs38_linux includes -matomic -mcode-density -mdiv-rem +# -mswap -mnorm -mll64 -mmpy-option=9 -mfpu=fpud_all +zephyr_cc_option(-mcpu=${GCC_M_CPU}) +zephyr_cc_option(-mno-sdata) +zephyr_cc_option_ifdef(CONFIG_FLOAT -mfpu=fpud_all) + +zephyr_sources( + soc.c + ) diff --git a/soc/arc/snps_arc_hsdk/Kconfig.defconfig b/soc/arc/snps_arc_hsdk/Kconfig.defconfig new file mode 100644 index 00000000000..b21502f52fb --- /dev/null +++ b/soc/arc/snps_arc_hsdk/Kconfig.defconfig @@ -0,0 +1,63 @@ +# +# Copyright (c) 2019 Synopsys, Inc. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# + +if SOC_ARC_HSDK + +config SOC + string + default "snps_arc_hsdk" + +config CPU_HS38_LINUX + def_bool y + +config NUM_IRQ_PRIO_LEVELS + # This processor supports 2 priority levels: + # 0 for Fast Interrupts (FIRQs) and 1 for Regular Interrupts (IRQs). + default 2 + +config NUM_IRQS + # must be > the highest interrupt number used + default 88 + +config RGF_NUM_BANKS + default 2 + +config SYS_CLOCK_HW_CYCLES_PER_SEC + default 500000000 + +config ARC_FIRQ + default y + +config CODE_DENSITY + default y + +config ARCV2_TIMER_IRQ_PRIORITY + default 1 + +config ARC_CONNECT + default y + +config MP_NUM_CPUS + default 4 + +if SERIAL + +config UART_NS16550 + default y + +endif # SERIAL + +if UART_CONSOLE + +config UART_NS16550_PORT_0 + default y + +config UART_NS16550_ACCESS_WORD_ONLY + default y + +endif # UART_CONSOLE + +endif # ARC_HSDK diff --git a/soc/arc/snps_arc_hsdk/Kconfig.soc b/soc/arc/snps_arc_hsdk/Kconfig.soc new file mode 100644 index 00000000000..6699a8efce0 --- /dev/null +++ b/soc/arc/snps_arc_hsdk/Kconfig.soc @@ -0,0 +1,9 @@ +# +# Copyright (c) 2019 Synopsys, Inc. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# + +config SOC_ARC_HSDK + bool "Synopsys ARC HSDK SoC" + select CPU_HAS_FPU diff --git a/soc/arc/snps_arc_hsdk/dts_fixup.h b/soc/arc/snps_arc_hsdk/dts_fixup.h new file mode 100644 index 00000000000..ff7cbf9f057 --- /dev/null +++ b/soc/arc/snps_arc_hsdk/dts_fixup.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2019 Synopsys, Inc. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* SoC level DTS fixup file */ + +/* + * UART configuration + */ +#define DT_UART_NS16550_PORT_0_BASE_ADDR DT_NS16550_F0005000_BASE_ADDRESS +#define DT_UART_NS16550_PORT_0_IRQ DT_NS16550_F0005000_IRQ_0 +#define DT_UART_NS16550_PORT_0_CLK_FREQ DT_NS16550_F0005000_CLOCK_FREQUENCY +#define DT_UART_NS16550_PORT_0_BAUD_RATE DT_NS16550_F0005000_CURRENT_SPEED +#define DT_UART_NS16550_PORT_0_NAME DT_NS16550_F0005000_LABEL +#define DT_UART_NS16550_PORT_0_IRQ_PRI DT_NS16550_F0005000_IRQ_0_PRIORITY + +/* End of SoC Level DTS fixup file */ diff --git a/soc/arc/snps_arc_hsdk/linker.ld b/soc/arc/snps_arc_hsdk/linker.ld new file mode 100644 index 00000000000..90e9bd002c8 --- /dev/null +++ b/soc/arc/snps_arc_hsdk/linker.ld @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2019 Synopsys, Inc. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief Linker script for the HS Development Kit + */ + +#include +#include + +/* + * SRAM base address and size + */ +#if defined(CONFIG_SRAM_BASE_ADDRESS) && (CONFIG_SRAM_SIZE > 0) +#define SRAM_START CONFIG_SRAM_BASE_ADDRESS +#define SRAM_SIZE CONFIG_SRAM_SIZE +#endif + + +#include diff --git a/soc/arc/snps_arc_hsdk/soc.c b/soc/arc/snps_arc_hsdk/soc.c new file mode 100644 index 00000000000..6db3821c18c --- /dev/null +++ b/soc/arc/snps_arc_hsdk/soc.c @@ -0,0 +1,41 @@ + +/* + * Copyright (c) 2019 Synopsys, Inc. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * This module provides routines to initialize and support soc-level hardware + * for the HS Development Kit + */ +#include +#include +#include "soc.h" + +static int arc_hsdk_init(struct device *dev) +{ + ARG_UNUSED(dev); + + u32_t core; + u32_t i; + + /* allocate all IDU interrupts to master core */ + core = z_arc_v2_core_id(); + + z_arc_connect_idu_disable(); + + for (i = 0; i < (CONFIG_NUM_IRQS - ARC_CONNECT_IDU_IRQ_START); i++) { + z_arc_connect_idu_set_mode(i, ARC_CONNECT_INTRPT_TRIGGER_LEVEL, + ARC_CONNECT_DISTRI_MODE_ROUND_ROBIN); + z_arc_connect_idu_set_dest(i, 1 << core); + z_arc_connect_idu_set_mask(i, 0x0); + } + + z_arc_connect_idu_enable(); + + + return 0; +} + +SYS_INIT(arc_hsdk_init, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); diff --git a/soc/arc/snps_arc_hsdk/soc.h b/soc/arc/snps_arc_hsdk/soc.h new file mode 100644 index 00000000000..90cdfc19567 --- /dev/null +++ b/soc/arc/snps_arc_hsdk/soc.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2019 Synopsys, Inc. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief Board configuration macros for HS Development Kit + * + * This header file is used to specify and describe board-level + * aspects for the target. + */ + +#ifndef _SOC_H_ +#define _SOC_H_ + +#include + + +/* ARC HS Core IRQs */ +#define IRQ_TIMER0 16 +#define IRQ_TIMER1 17 +#define IRQ_ICI 19 + +#define BASE_ADDR_SYSCONFIG 0xF000A000 + +#ifndef _ASMLANGUAGE + + +#include +#include + +/* + * UARTs: UART0 & UART1 & UART2 + */ +#define DT_UART_NS16550_PORT_0_IRQ_FLAGS 0 /* Default */ +#define DT_UART_NS16550_PORT_1_IRQ_FLAGS 0 /* Default */ +#define DT_UART_NS16550_PORT_2_IRQ_FLAGS 0 /* Default */ + + +#endif /* !_ASMLANGUAGE */ + +#endif /* _SOC_H_ */