summaryrefslogtreecommitdiff
path: root/ecos/packages/hal/cortexm/vybrid/var
diff options
context:
space:
mode:
authorMichael Gielda <mgielda@antmicro.com>2014-04-03 14:53:04 +0200
committerMichael Gielda <mgielda@antmicro.com>2014-04-03 14:53:04 +0200
commitae1e4e08a1005a0c487f03ba189d7536e7fdcba6 (patch)
treef1c296f8a966a9a39876b0e98e16d9c5da1776dd /ecos/packages/hal/cortexm/vybrid/var
parentf157da5337118d3c5cd464266796de4262ac9dbd (diff)
Added the OS files
Diffstat (limited to 'ecos/packages/hal/cortexm/vybrid/var')
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/cdl/hal_cortexm_vybrid.cdl339
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/cdl/vybrid_irq_scheme.cdl138
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/hal_cache.h211
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/hal_diag.h92
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_ocram.h26
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_ocram.ldi37
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_tcml.h26
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_tcml.ldi39
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/plf_stub.h86
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/var_arch.h62
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/var_intr.h249
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/var_io.h753
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_clkgat.h67
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_devs.h173
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_gpio.h125
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_lmem.h254
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/include/variant.inc55
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/src/hal_diag.c405
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/src/vybrid_clocking.c236
-rw-r--r--ecos/packages/hal/cortexm/vybrid/var/current/src/vybrid_misc.c238
20 files changed, 3611 insertions, 0 deletions
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/cdl/hal_cortexm_vybrid.cdl b/ecos/packages/hal/cortexm/vybrid/var/current/cdl/hal_cortexm_vybrid.cdl
new file mode 100644
index 0000000..dc0b08a
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/cdl/hal_cortexm_vybrid.cdl
@@ -0,0 +1,339 @@
+##==========================================================================
+##
+## hal_cortexm_vybrid.cdl
+##
+## Cortex-M Freescale Vybrid variant HAL configuration data
+##
+##==========================================================================
+## ####ECOSGPLCOPYRIGHTBEGIN####
+## -------------------------------------------
+## This file is part of eCos, the Embedded Configurable Operating System.
+## Copyright (C) 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+##
+## eCos is free software; you can redistribute it and/or modify it under
+## the terms of the GNU General Public License as published by the Free
+## Software Foundation; either version 2 or (at your option) any later
+## version.
+##
+## eCos is distributed in the hope that it will be useful, but WITHOUT
+## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+## for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with eCos; if not, write to the Free Software Foundation, Inc.,
+## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+##
+## As a special exception, if other files instantiate templates or use
+## macros or inline functions from this file, or you compile this file
+## and link it with other works to produce a work based on this file,
+## this file does not by itself cause the resulting work to be covered by
+## the GNU General Public License. However the source code for this file
+## must still be made available in accordance with section (3) of the GNU
+## General Public License v2.
+##
+## This exception does not invalidate any other reasons why a work based
+## on this file might be covered by the GNU General Public License.
+## -------------------------------------------
+## ####ECOSGPLCOPYRIGHTEND####
+##==========================================================================
+#######DESCRIPTIONBEGIN####
+##
+## Author(s): Antmicro Ltd <contact@antmicro.com>
+## Date: 2014-03-28
+## Based on respective definitions from /hal/cortexm/kinetis/var/current/cdl/hal_cortexm_kinetis.cdl
+##
+##
+######DESCRIPTIONEND####
+##
+##==========================================================================
+######MODIFICATION#####
+##
+## CYG_HAL_STARTUP_VAR legal_values added "RAM"
+## CYGHWR_MEMORY_LAYOUT addded new compute value (RAM)
+##==========================================================================
+
+cdl_package CYGPKG_HAL_CORTEXM_VYBRID {
+ display "Freescale Vybrid Cortex-M4 Variant"
+ parent CYGPKG_HAL_CORTEXM
+ doc ref/hal-cortexm-vybrid-var.html
+ hardware
+ include_dir cyg/hal
+ define_header hal_cortexm_vybrid.h
+ description "
+ This package provides generic support for the Freescale Cortex-M4
+ based Vybrid microcontroller family.
+ It is also necessary to select a variant and platform HAL package."
+
+ compile hal_diag.c vybrid_misc.c vybrid_clocking.c
+
+ #implements CYGINT_HAL_DEBUG_GDB_STUBS
+ #implements CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
+ implements CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
+ implements CYGINT_HAL_VIRTUAL_VECTOR_COMM_BAUD_SUPPORT
+
+
+
+ requires { CYGHWR_HAL_CORTEXM == "M4" }
+
+ define_proc {
+ puts $::cdl_system_header "#define CYGBLD_HAL_TARGET_H <pkgconf/hal_cortexm.h>"
+ puts $::cdl_system_header "#define CYGBLD_HAL_VARIANT_H <pkgconf/hal_cortexm_vybrid.h>"
+ }
+
+ cdl_option CYGNUM_HAL_CORTEXM_PRIORITY_LEVEL_BITS {
+ display "CPU exception priority level bits"
+ flavor data
+ default_value 4
+ description "
+ This option defines the number of bits used to encode the
+ exception priority levels that this variant of the Cortex-M
+ CPU implements."
+ }
+
+
+ cdl_option CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY {
+ display "Clock interrupt ISR priority"
+ flavor data
+ calculated CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY_SP
+ description "Set clock ISR priority. Default setting is lowest priority."
+ }
+
+
+ cdl_component CYGNUM_HAL_RTC_CONSTANTS {
+ display "Real-time clock constants"
+ flavor none
+ no_define
+ cdl_option CYGNUM_HAL_RTC_NUMERATOR {
+ display "Real-time clock numerator"
+ flavor data
+ default_value 1000000000
+ }
+ cdl_option CYGNUM_HAL_RTC_DENOMINATOR {
+ display "Real-time clock denominator"
+ flavor data
+ default_value 1000
+ }
+ cdl_option CYGNUM_HAL_RTC_PERIOD {
+ display "Real-time clock period"
+ flavor data
+ default_value 1000000 / CYGNUM_HAL_RTC_DENOMINATOR
+ description "
+ The period defined here is something of a fake, it is
+ expressed in terms of a notional 1MHz clock. The value
+ actually installed in the hardware is calculated from
+ the current settings of the clock generation hardware."
+ }
+ }
+
+ cdl_option CYG_HAL_STARTUP_VAR {
+ display "By variant"
+ flavor data
+ parent CYG_HAL_STARTUP_ENV
+ default_value { "OCRAM" }
+ legal_values { "TCML" "OCRAM" }
+ active_if ((!CYG_HAL_STARTUP_PLF) || (CYG_HAL_STARTUP_PLF=="ByVariant"))
+ description "
+ 'OCRAM' startup builds a stand-alone application hich will be placed into OnChipRAM.
+ This type of memory is intended to be written via bootloaders such like uBoot or
+ from Linux system running on the Cortex A5 core of Vybrid processor.
+ Note: Variant Startup Type can be overriden/overloaded by
+ Platform Startup Type."
+ }
+
+ cdl_component CYG_HAL_STARTUP {
+ display "Startup type calculator"
+ flavor data
+ parent CYG_HAL_STARTUP_ENV
+ calculated { (CYG_HAL_STARTUP_PLF && (CYG_HAL_STARTUP_PLF!="ByVariant")) ?
+ CYG_HAL_STARTUP_PLF : CYG_HAL_STARTUP_VAR}
+ define -file system.h CYG_HAL_STARTUP
+ description "
+ Startup type defines what type of application shall be built.
+ Startup type can be defined by variant (CYG_HAL_STARTUP_VAR)
+ or platform (CYG_HAL_STARTUP_PLF). If CYG_HAL_STARTUP_PLF
+ is defined and not equal to 'ByVariant' then it shall
+ override CYG_HAL_STARTUP_VAR."
+ }
+
+ cdl_component CYGHWR_MEMORY_LAYOUT {
+ display "Memory layout"
+ flavor data
+ no_define
+ parent CYG_HAL_STARTUP_ENV
+ calculated {
+ (CYGHWR_MEMORY_LAYOUT_PLF) ? CYGHWR_MEMORY_LAYOUT_PLF :
+ (CYG_HAL_STARTUP == "TCML") ? "vybrid_tcml" :
+ (CYG_HAL_STARTUP == "OCRAM") ? "vybrid_ocram" :
+ "undefined" }
+ description "
+ Combination of 'Startup type' and 'Vybrid part'
+ produces the memory layout."
+
+ cdl_option CYGHWR_MEMORY_LAYOUT_LDI {
+ display "Memory layout linker script fragment"
+ flavor data
+ no_define
+ define -file system.h CYGHWR_MEMORY_LAYOUT_LDI
+ calculated { "<pkgconf/mlt_" . CYGHWR_MEMORY_LAYOUT . ".ldi>" }
+ }
+
+ cdl_option CYGHWR_MEMORY_LAYOUT_H {
+ display "Memory layout header file"
+ flavor data
+ no_define
+ define -file system.h CYGHWR_MEMORY_LAYOUT_H
+ calculated { "<pkgconf/mlt_" . CYGHWR_MEMORY_LAYOUT . ".h>" }
+ }
+ }
+
+
+ cdl_component CYGHWR_HAL_VYBRID_MEMORY_RESOURCES {
+ display "On chip memory resources"
+ flavor none
+ no_define
+ description "
+ View and manage on-chip memory resources.
+ Output is used for naming of 'mlt' files."
+
+
+ cdl_option CYGHWR_HAL_CORTEXM_VYBRID_OCRAM_KIB {
+ display "Vybrid on chip SysRAM0 size \[KiB\]"
+ flavor data
+ calculated { 256 }
+ }
+
+ cdl_option CYGHWR_HAL_CORTEXM_VYBRID_OCRAM {
+ display "Vybrid on chip SysRAM0 size"
+ flavor data
+ calculated { CYGHWR_HAL_CORTEXM_VYBRID_OCRAM_KIB * 0x400}
+ }
+
+ cdl_option CYGHWR_HAL_CORTEXM_VYBRID_TCMU_KIB {
+ display "Vybrid on chip TCMU (data) size \[KiB\]"
+ flavor data
+ calculated { 32 }
+ }
+
+ cdl_option CYGHWR_HAL_CORTEXM_VYBRID_TCMU {
+ display "Vybrid on chip TCMU (data) size"
+ flavor data
+ calculated { CYGHWR_HAL_CORTEXM_VYBRID_TCMU_KIB * 0x400 }
+ }
+
+ cdl_option CYGHWR_HAL_CORTEXM_VYBRID_TCML_KIB {
+ display "Vybrid on chip TCML (data) size \[KiB\]"
+ flavor data
+ calculated { 32 }
+ }
+
+ cdl_option CYGHWR_HAL_CORTEXM_VYBRID_TCML {
+ display "Vybrid on chip TCML (data) size"
+ flavor data
+ calculated { CYGHWR_HAL_CORTEXM_VYBRID_TCML_KIB * 0x400 }
+ }
+
+
+ }
+
+ cdl_interface CYGINT_HAL_CACHE {
+ display "Platform has cache"
+ flavor bool
+ }
+
+ cdl_interface CYGINT_HAL_HAS_NONCACHED {
+ display "Platform has non-cached regions"
+ flavor bool
+ }
+
+ cdl_component CYGPKG_HAL_VYBRID_CACHE {
+ display "Cache memory"
+ flavor bool
+
+ default_value false
+ active_if (CYGINT_HAL_CACHE)
+ }
+
+ cdl_interface CYGINT_HAL_CORTEXM_VYBRID_DDRAM {
+ display "Platform uses DDRAM"
+ flavor bool
+ description "
+ This interface will be implemented if the specific
+ controller being used provides DDRAM and if DDRAM is
+ used on target hardware"
+ }
+
+
+ for { set ::channel 0 } { $::channel < 6 } { incr ::channel } {
+
+ cdl_interface CYGINT_HAL_FREESCALE_UART[set ::channel] {
+ display "Platform provides UART [set ::channel] HAL"
+ flavor bool
+ description "
+ This interface will be implemented if the specific
+ controller being used has on-chip UART [set ::channel],
+ and if that UART is accessible on the target hardware."
+ }
+
+ cdl_interface CYGINT_HAL_FREESCALE_UART[set ::channel]_RTSCTS {
+ display "Platform provides HAL for UART[set ::channel] hardware flow control."
+ flavor bool
+ description "
+ This interface will be implemented if the specific
+ on-chip UART [set ::channel] has RTS/CTS flow control
+ that is accessible on the target hardware."
+ }
+ }
+
+ cdl_interface CYGINT_HAL_DMA {
+ display "Platform uses DMA"
+ flavor bool
+ description "
+ This interface will be implemented if the specific
+ controller being used provides DMA and if DMA is
+ used on target hardware"
+ }
+
+ cdl_component CYGHWR_HAL_DEVS_IRQ_PRIO_SCHEME_VAR {
+ display "Variant IRQ priority defaults"
+ no_define
+ flavor none
+ parent CYGHWR_HAL_DEVS_IRQ_PRIO_SCHEME
+ description "
+ Interrupt priorities defined by Vybrid variant"
+ script vybrid_irq_scheme.cdl
+ }
+
+ cdl_component CYGPKG_HAL_CORTEXM_VYBRID_OPTIONS {
+ display "Build options"
+ flavor none
+ no_define
+ description "
+ Package specific build options including control over
+ compiler flags used only in building this package."
+
+ cdl_option CYGPKG_HAL_CORTEXM_VYBRID_CFLAGS_ADD {
+ display "Additional compiler flags"
+ flavor data
+ no_define
+ default_value { "" }
+ description "
+ This option modifies the set of compiler flags for
+ building the Vybrid variant HAL package. These flags
+ are used in addition to the set of global flags."
+ }
+
+ cdl_option CYGPKG_HAL_CORTEXM_VYBRID_CFLAGS_REMOVE {
+ display "Suppressed compiler flags"
+ flavor data
+ no_define
+ default_value { "" }
+ description "
+ This option modifies the set of compiler flags for
+ building the Vybrid variant HAL package. These flags
+ are removed from the set of global flags if present."
+ }
+ }
+}
+
+# EOF hal_cortexm_vybrid.cdl
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/cdl/vybrid_irq_scheme.cdl b/ecos/packages/hal/cortexm/vybrid/var/current/cdl/vybrid_irq_scheme.cdl
new file mode 100644
index 0000000..2e63a77
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/cdl/vybrid_irq_scheme.cdl
@@ -0,0 +1,138 @@
+##==========================================================================
+##
+## vybrid_irq_scheme.cdl
+##
+## Cortex-M Freescale Vybrid IRQ configuration data
+##
+##==========================================================================
+## ####ECOSGPLCOPYRIGHTBEGIN####
+## -------------------------------------------
+## This file is part of eCos, the Embedded Configurable Operating System.
+## Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+##
+## eCos is free software; you can redistribute it and/or modify it under
+## the terms of the GNU General Public License as published by the Free
+## Software Foundation; either version 2 or (at your option) any later
+## version.
+##
+## eCos is distributed in the hope that it will be useful, but WITHOUT
+## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+## for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with eCos; if not, write to the Free Software Foundation, Inc.,
+## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+##
+## As a special exception, if other files instantiate templates or use
+## macros or inline functions from this file, or you compile this file
+## and link it with other works to produce a work based on this file,
+## this file does not by itself cause the resulting work to be covered by
+## the GNU General Public License. However the source code for this file
+## must still be made available in accordance with section (3) of the GNU
+## General Public License v2.
+##
+## This exception does not invalidate any other reasons why a work based
+## on this file might be covered by the GNU General Public License.
+## -------------------------------------------
+## ####ECOSGPLCOPYRIGHTEND####
+##==========================================================================
+#######DESCRIPTIONBEGIN####
+##
+## Author(s): Antmicro Ltd <contact@antmicro.com>
+## Date: 2014-03-28
+## Based on respective definitions from /hal/cortexm/kinetis/var/current/cdl/kinetis_irq_scheme.cdl
+##
+######DESCRIPTIONEND####
+##
+##==========================================================================
+
+# cdl_component CYGHWR_HAL_DEVS_IRQ_PRIO_SCHEME_VAR {
+# display "Variant IRQ priority defaults"
+# no_define
+# flavor none
+# parent CYGHWR_HAL_DEVS_IRQ_PRIO_SCHEME
+# description "
+# Interrupt priorities defined by Vybrid variant"
+
+ cdl_option CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY_SP {
+ display "Clock IRQ priority"
+ flavor data
+ no_define
+ default_value 0xE0
+ description "Set clock ISR priority. Default setting is lowest priority."
+ legal_values { 0 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80
+ 0x90 0xA0 0xB0 0xC0 0xD0 0xE0 }
+
+ }
+
+ cdl_component CYGHWR_HAL_DEVS_IRQ_PRIO_SCHEME_UART {
+ display "UART IRQ priorities"
+ flavor none
+ no_define
+
+ cdl_option CYGNUM_IO_SERIAL_FREESCALE_UART0_INT_PRIORITY_SP {
+ display "UART0 interrupt priority"
+ flavor data
+ no_define
+ active_if CYGPKG_IO_SERIAL_FREESCALE_UART0
+ legal_values { 0 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80
+ 0x90 0xA0 0xB0 0xC0 0xD0 0xE0 }
+ default_value 0x80
+ }
+
+ cdl_option CYGNUM_IO_SERIAL_FREESCALE_UART1_INT_PRIORITY_SP {
+ display "UART1 interrupt priority"
+ flavor data
+ no_define
+ active_if CYGPKG_IO_SERIAL_FREESCALE_UART1
+ legal_values { 0 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80
+ 0x90 0xA0 0xB0 0xC0 0xD0 0xE0 }
+ default_value 0x80
+ }
+
+ cdl_option CYGNUM_IO_SERIAL_FREESCALE_UART2_INT_PRIORITY_SP {
+ display "UART2 interrupt priority"
+ flavor data
+ no_define
+ active_if CYGPKG_IO_SERIAL_FREESCALE_UART2
+ legal_values { 0 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80
+ 0x90 0xA0 0xB0 0xC0 0xD0 0xE0 }
+ default_value 0x80
+ }
+
+ cdl_option CYGNUM_IO_SERIAL_FREESCALE_UART3_INT_PRIORITY_SP {
+ display "UART3 interrupt priority"
+ flavor data
+ no_define
+ active_if CYGPKG_IO_SERIAL_FREESCALE_UART3
+ legal_values { 0 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80
+ 0x90 0xA0 0xB0 0xC0 0xD0 0xE0 }
+ default_value 0x80
+ }
+
+ cdl_option CYGNUM_IO_SERIAL_FREESCALE_UART4_INT_PRIORITY_SP {
+ display "UART4 interrupt priority"
+ flavor data
+ no_define
+ active_if CYGPKG_IO_SERIAL_FREESCALE_UART4
+ legal_values { 0 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80
+ 0x90 0xA0 0xB0 0xC0 0xD0 0xE0 }
+ default_value 0x80
+ }
+
+ cdl_option CYGNUM_IO_SERIAL_FREESCALE_UART5_INT_PRIORITY_SP {
+ display "UART5 interrupt priority"
+ flavor data
+ no_define
+ active_if CYGPKG_IO_SERIAL_FREESCALE_UART5
+ legal_values { 0 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80
+ 0x90 0xA0 0xB0 0xC0 0xD0 0xE0 }
+ default_value 0x80
+ }
+ }
+
+# }
+
+
+# EOF vybrid_irq_scheme.cdl
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/hal_cache.h b/ecos/packages/hal/cortexm/vybrid/var/current/include/hal_cache.h
new file mode 100644
index 0000000..4b007f2
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/hal_cache.h
@@ -0,0 +1,211 @@
+#ifndef CYGONCE_HAL_CACHE_H
+#define CYGONCE_HAL_CACHE_H
+//=============================================================================
+//
+// hal_cache.h
+//
+// HAL cache control API
+//
+//=============================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2012 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/hal_cache.h
+// Date: 2014-03-28
+// Purpose: Cache control API
+// Description: The macros defined here provide the HAL APIs for handling
+// cache control operations.
+//
+// Usage:
+// #include <cyg/hal/hal_cache.h>
+// ...
+//
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <cyg/infra/cyg_type.h>
+
+//-----------------------------------------------------------------------------
+// Cache dimensions
+#ifdef CYGINT_HAL_CACHE
+
+// Data cache
+#define HAL_DCACHE_SIZE (1024 * 16) // Size of data cache in bytes
+#define HAL_DCACHE_LINE_SIZE 32 // Size of a data cache line
+#define HAL_DCACHE_WAYS 2 // Associativity of the cache
+
+// Instruction cache
+#define HAL_ICACHE_SIZE (1024 * 16) // Size of cache in bytes
+#define HAL_ICACHE_LINE_SIZE 32 // Size of a cache line
+#define HAL_ICACHE_WAYS 2 // Associativity of the cache
+
+#define HAL_DCACHE_SETS (HAL_DCACHE_SIZE/(HAL_DCACHE_LINE_SIZE*HAL_DCACHE_WAYS))
+#define HAL_ICACHE_SETS (HAL_ICACHE_SIZE/(HAL_ICACHE_LINE_SIZE*HAL_ICACHE_WAYS))
+
+#include <cyg/hal/var_io.h>
+#include <cyg/hal/var_io_lmem.h>
+
+//-----------------------------------------------------------------------------
+// Global control of data cache
+
+// Enable the data cache
+#define HAL_DCACHE_ENABLE() HAL_CORTEXM_VYBRID_CACHE_PS_ENABLE()
+
+// Disable the data cache
+#define HAL_DCACHE_DISABLE() HAL_CORTEXM_VYBRID_CACHE_PS_DISABLE()
+
+// Invalidate the entire cache
+#define HAL_DCACHE_INVALIDATE_ALL() HAL_CORTEXM_VYBRID_CACHE_PS_INVALL()
+
+// Synchronize the contents of the cache with memory.
+#define HAL_DCACHE_SYNC() HAL_CORTEXM_VYBRID_CACHE_PS_SYNC()
+
+// Purge contents of data cache
+#define HAL_DCACHE_PURGE_ALL() HAL_CORTEXM_VYBRID_CACHE_PS_CLEAR()
+
+// Query the state of the data cache (does not affect the caching)
+#define HAL_DCACHE_IS_ENABLED(_state_) \
+ CYG_MACRO_START \
+ (_state_) = HAL_CORTEXM_VYBRID_CACHE_PS_IS_ENABLED(); \
+ CYG_MACRO_END
+
+// Invalidate cache lines in the given range without writing to memory.
+#define HAL_DCACHE_INVALIDATE( _base_ , _size_ ) \
+ HAL_CORTEXM_VYBRID_CACHE_PS_INVALIDATE(_base_, _size_)
+
+// Write dirty cache lines to memory and invalidate the cache entries
+#define HAL_DCACHE_FLUSH( _base_ , _size_ ) \
+ HAL_CORTEXM_VYBRID_CACHE_PS_CLR(_base_, _size_)
+
+//-----------------------------------------------------------------------------
+// Global control of Instruction cache
+
+// Enable the instruction cache
+#define HAL_ICACHE_ENABLE() HAL_CORTEXM_VYBRID_CACHE_PC_ENABLE()
+
+// Disable the instruction cache
+#define HAL_ICACHE_DISABLE() HAL_CORTEXM_VYBRID_CACHE_PC_DISABLE()
+
+// Invalidate the entire cache
+#define HAL_ICACHE_INVALIDATE_ALL() HAL_CORTEXM_VYBRID_CACHE_PC_INVALL()
+
+// Synchronize the contents of the cache with memory.
+#define HAL_ICACHE_SYNC() HAL_CORTEXM_VYBRID_CACHE_PC_SYNC()
+
+// Purge contents of data cache
+#define HAL_ICACHE_PURGE_ALL() HAL_CORTEXM_VYBRID_CACHE_PC_CLEAR()
+
+// Query the state of the instruction cache (does not affect the caching)
+#define HAL_ICACHE_IS_ENABLED(_state_) \
+ CYG_MACRO_START \
+ (_state_) = HAL_CORTEXM_VYBRID_CACHE_PC_IS_ENABLED(); \
+ CYG_MACRO_END
+
+
+//-----------------------------------------------------------------------------
+// Instruction cache line control
+
+// Invalidate cache lines in the given range without writing to memory.
+#define HAL_ICACHE_INVALIDATE( _base_ , _size_ ) \
+ HAL_CORTEXM_VYBRID_CACHE_PC_INVALIDATE(_base_, _size_)
+
+#else // CYGINT_HAL_CACHE
+
+
+// Enable the data cache
+#define HAL_DCACHE_ENABLE()
+
+// Disable the data cache
+#define HAL_DCACHE_DISABLE()
+
+// Invalidate the entire cache
+#define HAL_DCACHE_INVALIDATE_ALL()
+
+// Synchronize the contents of the cache with memory.
+#define HAL_DCACHE_SYNC()
+
+// Purge contents of data cache
+#define HAL_DCACHE_PURGE_ALL()
+
+// Query the state of the data cache (does not affect the caching)
+#define HAL_DCACHE_IS_ENABLED(_state_) \
+ CYG_MACRO_START \
+ (_state_) = 0; \
+ CYG_MACRO_END
+
+
+//-----------------------------------------------------------------------------
+// Data cache line control
+
+// Write dirty cache lines to memory and invalidate the cache entries
+// for the given address range.
+#define HAL_DCACHE_FLUSH( _base_ , _size_ )
+
+// Invalidate cache lines in the given range without writing to memory.
+#define HAL_DCACHE_INVALIDATE( _base_ , _size_ )
+
+//-----------------------------------------------------------------------------
+// Global control of Instruction cache
+
+// Enable the instruction cache
+#define HAL_ICACHE_ENABLE()
+
+// Disable the instruction cache
+#define HAL_ICACHE_DISABLE()
+
+// Invalidate the entire cache
+#define HAL_ICACHE_INVALIDATE_ALL()
+
+// Synchronize the contents of the cache with memory.
+#define HAL_ICACHE_SYNC()
+
+// Query the state of the instruction cache (does not affect the caching)
+#define HAL_ICACHE_IS_ENABLED(_state_) \
+ CYG_MACRO_START \
+ (_state_) = 0; \
+ CYG_MACRO_END
+
+//-----------------------------------------------------------------------------
+// Instruction cache line control
+
+// Invalidate cache lines in the given range without writing to memory.
+#define HAL_ICACHE_INVALIDATE( _base_ , _size_ )
+
+#endif // CYGINT_HAL_CACHE
+
+// End of hal_cache.h
+#endif // CYGONCE_HAL_CACHE_H
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/hal_diag.h b/ecos/packages/hal/cortexm/vybrid/var/current/include/hal_diag.h
new file mode 100644
index 0000000..c1f10df
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/hal_diag.h
@@ -0,0 +1,92 @@
+#ifndef CYGONCE_HAL_DIAG_H
+#define CYGONCE_HAL_DIAG_H
+//=============================================================================
+//
+// hal_diag.h
+//
+// HAL diagnostics
+//
+//=============================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/hal_diag.h
+// Date: 2014-03-28
+// Purpose: HAL diagnostics
+// Description:
+// Usage: #include <cyg/hal/var_io.h>
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+
+#include <cyg/infra/cyg_type.h>
+
+#include <cyg/hal/hal_if.h>
+
+//-----------------------------------------------------------------------------
+
+#if defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG) //VYBRID defined as 1
+
+#define HAL_DIAG_INIT() hal_if_diag_init()
+#define HAL_DIAG_WRITE_CHAR(_c_) hal_if_diag_write_char(_c_)
+#define HAL_DIAG_READ_CHAR(_c_) hal_if_diag_read_char(&_c_)
+
+#else
+
+__externC void hal_plf_diag_init(void);
+__externC void hal_plf_diag_putc(char);
+__externC cyg_uint8 hal_plf_diag_getc(void);
+
+# ifndef HAL_DIAG_INIT
+# define HAL_DIAG_INIT() hal_plf_diag_init()
+# endif
+
+# ifndef HAL_DIAG_WRITE_CHAR
+# define HAL_DIAG_WRITE_CHAR(__c) hal_plf_diag_putc(__c)
+# endif
+
+# ifndef HAL_DIAG_READ_CHAR
+# define HAL_DIAG_READ_CHAR(__c) (__c) = hal_plf_diag_getc()
+# endif
+
+#endif
+
+
+//-----------------------------------------------------------------------------
+// end of hal_diag.h
+#endif // CYGONCE_HAL_DIAG_H
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_ocram.h b/ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_ocram.h
new file mode 100644
index 0000000..d10ccc2
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_ocram.h
@@ -0,0 +1,26 @@
+// eCos memory layout
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+#endif
+
+
+#define CYGMEM_REGION_sram_l (0x1f800000)
+#define CYGMEM_REGION_sram_l_SIZE (CYGHWR_HAL_CORTEXM_VYBRID_TCML)
+#define CYGMEM_REGION_sram_l_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_sram (0x1f000000)
+#define CYGMEM_REGION_sram_SIZE (CYGHWR_HAL_CORTEXM_VYBRID_OCRAM)
+#define CYGMEM_REGION_sram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_ram (0x3f800000)
+#define CYGMEM_REGION_ram_SIZE (CYGHWR_HAL_CORTEXM_VYBRID_TCMU)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (CYGMEM_REGION_sram+CYGMEM_REGION_sram_SIZE - (size_t) CYG_LABEL_NAME (__heap1))
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_ocram.ldi b/ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_ocram.ldi
new file mode 100644
index 0000000..d634d52
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_ocram.ldi
@@ -0,0 +1,37 @@
+// eCos memory layout
+// modified for VYBRID
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.inc>
+
+//------------CM4 OCRAM code
+
+MEMORY
+{
+ OCRAM : ORIGIN = 0x1f000000, LENGTH = CYGHWR_HAL_CORTEXM_VYBRID_OCRAM-(CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+ TCML : ORIGIN = 0x1f800000, LENGTH = CYGHWR_HAL_CORTEXM_VYBRID_TCML-(CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+ TCMU : ORIGIN = 0x3f800000, LENGTH = CYGHWR_HAL_CORTEXM_VYBRID_TCMU-(CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+}
+
+
+SECTIONS
+{
+ SECTIONS_BEGIN
+ SECTION_rom_vectors (OCRAM, 0x1f000400, LMA_EQ_VMA)
+ SECTION_RELOCS (OCRAM, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_text (OCRAM, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_fini (OCRAM, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_rodata (OCRAM, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_fixup (OCRAM, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_gcc_except_table (OCRAM, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_eh_frame (OCRAM, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_got (OCRAM, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_data (OCRAM, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_bss (OCRAM, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_sram (OCRAM, ALIGN (0x8),LMA_EQ_VMA)
+ CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+ SECTIONS_END
+}
+
+hal_vsr_table = 0x1f000000;
+hal_virtual_vector_table = hal_vsr_table + 128*4;
+hal_startup_stack = (0x1f000000 + CYGHWR_HAL_CORTEXM_VYBRID_OCRAM);
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_tcml.h b/ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_tcml.h
new file mode 100644
index 0000000..d10ccc2
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_tcml.h
@@ -0,0 +1,26 @@
+// eCos memory layout
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+#endif
+
+
+#define CYGMEM_REGION_sram_l (0x1f800000)
+#define CYGMEM_REGION_sram_l_SIZE (CYGHWR_HAL_CORTEXM_VYBRID_TCML)
+#define CYGMEM_REGION_sram_l_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_sram (0x1f000000)
+#define CYGMEM_REGION_sram_SIZE (CYGHWR_HAL_CORTEXM_VYBRID_OCRAM)
+#define CYGMEM_REGION_sram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_ram (0x3f800000)
+#define CYGMEM_REGION_ram_SIZE (CYGHWR_HAL_CORTEXM_VYBRID_TCMU)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (CYGMEM_REGION_sram+CYGMEM_REGION_sram_SIZE - (size_t) CYG_LABEL_NAME (__heap1))
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_tcml.ldi b/ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_tcml.ldi
new file mode 100644
index 0000000..01086a8
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/pkgconf/mlt_vybrid_tcml.ldi
@@ -0,0 +1,39 @@
+// eCos memory layout
+// modified for VYBRID
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.inc>
+
+//------------CM4 TCML code
+
+MEMORY
+{
+ OCRAM : ORIGIN = 0x1f000000, LENGTH = CYGHWR_HAL_CORTEXM_VYBRID_OCRAM-(CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+ TCML : ORIGIN = 0x1f800000, LENGTH = CYGHWR_HAL_CORTEXM_VYBRID_TCML-(CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+ TCMU : ORIGIN = 0x3f800000, LENGTH = CYGHWR_HAL_CORTEXM_VYBRID_TCMU-(CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+}
+
+SECTIONS
+{
+ SECTIONS_BEGIN
+ SECTION_rom_vectors (TCML, 0x1f800400, LMA_EQ_VMA)
+ SECTION_RELOCS (TCML, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_text (TCML, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_fini (TCML, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_rodata (TCML, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_rodata1 (TCML, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_fixup (TCML, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_gcc_except_table (TCML, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_eh_frame (TCML, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_got (TCML, ALIGN (0x8), LMA_EQ_VMA)
+ SECTION_data (TCML, ALIGN(0x8), LMA_EQ_VMA)
+ SECTION_sram (TCMU, 0x3f800000, LMA_EQ_VMA)
+ SECTION_bss (TCMU, ALIGN (0x8), LMA_EQ_VMA)
+ CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+ SECTIONS_END
+}
+
+hal_vsr_table = 0x1f800000;
+hal_virtual_vector_table = hal_vsr_table + 128*4;
+hal_startup_stack = (0x3f800000 + 0x00007ff0);
+
+
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/plf_stub.h b/ecos/packages/hal/cortexm/vybrid/var/current/include/plf_stub.h
new file mode 100644
index 0000000..f42f1ab
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/plf_stub.h
@@ -0,0 +1,86 @@
+#ifndef CYGONCE_HAL_PLF_STUB_H
+#define CYGONCE_HAL_PLF_STUB_H
+//=============================================================================
+//
+// plf_stub.h
+//
+// Platform header for GDB stub support.
+//
+//=============================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2008,
+// 2011 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/plf_stub.h
+// Date: 2014-03-28
+// Purpose: Platform HAL stub support for Vybrid variant boards.
+// Usage: #include <cyg/hal/plf_stub.h>
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+#include CYGBLD_HAL_PLATFORM_H
+
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+
+#include <cyg/infra/cyg_type.h> // CYG_UNUSED_PARAM
+#include <cyg/hal/cortexm_stub.h> // architecture stub support
+#include <cyg/hal/hal_io.h>
+
+//----------------------------------------------------------------------------
+// Define some platform specific communication details. This is mostly
+// handled by hal_if now, but we need to make sure the comms tables are
+// properly initialized.
+
+__externC void cyg_hal_plf_comms_init(void);
+
+#define HAL_STUB_PLATFORM_INIT_SERIAL() cyg_hal_plf_comms_init()
+
+#define HAL_STUB_PLATFORM_SET_BAUD_RATE(baud) CYG_UNUSED_PARAM(int, (baud))
+#define HAL_STUB_PLATFORM_INTERRUPTIBLE 0
+#define HAL_STUB_PLATFORM_INIT_BREAK_IRQ() CYG_EMPTY_STATEMENT
+
+//----------------------------------------------------------------------------
+// Stub initializer.
+
+#define HAL_STUB_PLATFORM_INIT() CYG_EMPTY_STATEMENT
+
+#endif // ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+
+//-----------------------------------------------------------------------------
+#endif // CYGONCE_HAL_PLF_STUB_H
+// End of plf_stub.h
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/var_arch.h b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_arch.h
new file mode 100644
index 0000000..8a81c94
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_arch.h
@@ -0,0 +1,62 @@
+#ifndef CYGONCE_HAL_VAR_ARCH_H
+#define CYGONCE_HAL_VAR_ARCH_H
+//=============================================================================
+//
+// var_arch.h
+//
+// Vybrid variant architecture overrides
+//
+//=============================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/var_arch.h
+// Date: 2014-03-28
+// Purpose: Vybrid variant architecture overrides
+// Description:
+// Usage: #include <cyg/hal/hal_arch.h>
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+#include <cyg/hal/hal_io.h>
+#include <cyg/hal/plf_arch.h>
+
+
+//-----------------------------------------------------------------------------
+// end of var_arch.h
+#endif // CYGONCE_HAL_VAR_ARCH_H
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/var_intr.h b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_intr.h
new file mode 100644
index 0000000..35938e5
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_intr.h
@@ -0,0 +1,249 @@
+#ifndef CYGONCE_HAL_VAR_INTR_H
+#define CYGONCE_HAL_VAR_INTR_H
+//==========================================================================
+//
+// var_intr.h
+//
+// HAL Interrupt and clock assignments for Vybrid variants
+//
+//==========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/var_intr.h
+// Date: 2014-03-28
+// Purpose: Define Interrupt support
+// Description: The interrupt specifics for Freescale Vybrid variants are
+// defined here.
+//
+// Usage: #include <cyg/hal/var_intr.h>
+// However applications should include using <cyg/hal/hal_intr.h>
+// instead to allow for platform overrides.
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <cyg/hal/plf_intr.h>
+
+//==========================================================================
+
+typedef enum {
+ CYGNUM_HAL_INTERRUPT_CPU2CPU_0
+ = CYGNUM_HAL_INTERRUPT_EXTERNAL, // CPU to CPU int 0
+ CYGNUM_HAL_INTERRUPT_CPU2CPU_1, // CPU to CPU int 1
+ CYGNUM_HAL_INTERRUPT_CPU2CPU_2, // CPU to CPU int 2
+ CYGNUM_HAL_INTERRUPT_CPU2CPU_3, // CPU to CPU int 3
+ CYGNUM_HAL_INTERRUPT_SEMA4, // Directed Cortex-M4(= SEMA4)
+ CYGNUM_HAL_INTERRUPT_MCM, // Directed Cortex-M4(= MCM)
+ CYGNUM_HAL_INTERRUPT_DIRECTED1, // Directed Cortex-M4
+ CYGNUM_HAL_INTERRUPT_DIRECTED2, // Directed Cortex-M4
+ CYGNUM_HAL_INTERRUPT_DMA0, // DMA Channel 0 Transfer Complete
+ CYGNUM_HAL_INTERRUPT_DMA0_ERROR, // DMA Channel 0 Error int
+ CYGNUM_HAL_INTERRUPT_DMA1, // DMA Channel 1 Transfer Complete
+ CYGNUM_HAL_INTERRUPT_DMA1_ERROR, // DMA Channel 1 Error int
+ CYGNUM_HAL_INTERRUPT_RESERVED_00,
+ CYGNUM_HAL_INTERRUPT_RESERVED_01,
+ CYGNUM_HAL_INTERRUPT_MSCM_ECC0, // Error Correction and Control 0
+ CYGNUM_HAL_INTERRUPT_MSCM_ECC1, // Error Correction and Control 1
+ CYGNUM_HAL_INTERRUPT_CSU_ALARM, // CSU interrupt
+ CYGNUM_HAL_INTERRUPT_RESERVED_02,
+ CYGNUM_HAL_INTERRUPT_MSCM_ACTZS, // Miscellaneous System Control Module - TrustZone Security
+ CYGNUM_HAL_INTERRUPT_RESERVED_03,
+ CYGNUM_HAL_INTERRUPT_WDOG_A5, // WDOG A5 int
+ CYGNUM_HAL_INTERRUPT_WDOG_M4, // WDOG M4 int
+ CYGNUM_HAL_INTERRUPT_WDOG_SNVS, // TrustZone Watchdog
+ CYGNUM_HAL_INTERRUPT_CP1, // CP1 Boot Fail
+ CYGNUM_HAL_INTERRUPT_QSPI0, // QuadSPI0 int
+ CYGNUM_HAL_INTERRUPT_QSPI1, // QuadSPI1 int
+ CYGNUM_HAL_INTERRUPT_DDRMC, // SDRAM Memory Controller
+ CYGNUM_HAL_INTERRUPT_SDHC0, // Secure Digital Host Controller 0
+ CYGNUM_HAL_INTERRUPT_SDHC1, // Secure Digital Host Controller 1
+ CYGNUM_HAL_INTERRUPT_RESERVED_04,
+ CYGNUM_HAL_INTERRUPT_DCU0, // Display Control Unit 0
+ CYGNUM_HAL_INTERRUPT_DCU1, // Display Control Unit 1
+ CYGNUM_HAL_INTERRUPT_VIU, // Video In Unit
+ CYGNUM_HAL_INTERRUPT_RESERVED_05,
+ CYGNUM_HAL_INTERRUPT_RESERVED_06,
+ CYGNUM_HAL_INTERRUPT_RLE, // Run Length Encoding (Decoder unit)
+ CYGNUM_HAL_INTERRUPT_SEG_LCD, // LCD Controller
+ CYGNUM_HAL_INTERRUPT_RESERVED_07,
+ CYGNUM_HAL_INTERRUPT_RESERVED_08,
+ CYGNUM_HAL_INTERRUPT_PIT, // Periodic interrupt timer
+ CYGNUM_HAL_INTERRUPT_LPT0, // LPTimer0
+ CYGNUM_HAL_INTERRUPT_RESERVED_09,
+ CYGNUM_HAL_INTERRUPT_FLXT0, // FlexTimer 0
+ CYGNUM_HAL_INTERRUPT_FLXT1, // FlexTimer 1
+ CYGNUM_HAL_INTERRUPT_FLXT2, // FlexTimer 2
+ CYGNUM_HAL_INTERRUPT_FLXT3, // FlexTimer 3
+ CYGNUM_HAL_INTERRUPT_RESERVED_10,
+ CYGNUM_HAL_INTERRUPT_RESERVED_11,
+ CYGNUM_HAL_INTERRUPT_RESERVED_12,
+ CYGNUM_HAL_INTERRUPT_RESERVED_13,
+ CYGNUM_HAL_INTERRUPT_USBPHY0, // USB PHY 0
+ CYGNUM_HAL_INTERRUPT_USBPHY1, // USB PHY 1
+ CYGNUM_HAL_INTERRUPT_RESERVED_14,
+ CYGNUM_HAL_INTERRUPT_ADC0, // AD Converter 0
+ CYGNUM_HAL_INTERRUPT_ADC1, // AD Converter 1
+ CYGNUM_HAL_INTERRUPT_DAC0, // DA Converter 0
+ CYGNUM_HAL_INTERRUPT_DAC1, // DA Converter 1
+ CYGNUM_HAL_INTERRUPT_RESERVED_15,
+ CYGNUM_HAL_INTERRUPT_FLXCAN0, // FlexCAN 0
+ CYGNUM_HAL_INTERRUPT_FLXCAN1, // FlexCAN 1
+ CYGNUM_HAL_INTERRUPT_RESERVED_16,
+ CYGNUM_HAL_INTERRUPT_UART0_RX_TX, // UART0 Controller
+ CYGNUM_HAL_INTERRUPT_UART1_RX_TX, // UART1 Controller
+ CYGNUM_HAL_INTERRUPT_UART2_RX_TX, // UART2 Controller
+ CYGNUM_HAL_INTERRUPT_UART3_RX_TX, // UART3 Controller
+ CYGNUM_HAL_INTERRUPT_UART4_RX_TX, // UART4 Controller
+ CYGNUM_HAL_INTERRUPT_UART5_RX_TX, // UART5 Controller
+ CYGNUM_HAL_INTERRUPT_SPI0, // SPI0
+ CYGNUM_HAL_INTERRUPT_SPI1, // SPI1
+ CYGNUM_HAL_INTERRUPT_SPI2, // SPI2
+ CYGNUM_HAL_INTERRUPT_SPI3, // SPI3
+ CYGNUM_HAL_INTERRUPT_I2C0, // I2C0
+ CYGNUM_HAL_INTERRUPT_I2C1, // I2C1
+ CYGNUM_HAL_INTERRUPT_I2C2, // I2C2
+ CYGNUM_HAL_INTERRUPT_I2C3, // I2C3
+ CYGNUM_HAL_INTERRUPT_USBC0, // USB 0 Controller
+ CYGNUM_HAL_INTERRUPT_USBC1, // USB 1 Controller
+ CYGNUM_HAL_INTERRUPT_RESERVED_17,
+ CYGNUM_HAL_INTERRUPT_ENET0, // Ethernet MAC 0
+ CYGNUM_HAL_INTERRUPT_ENET1, // Ethernet MAC 1
+ CYGNUM_HAL_INTERRUPT_1588_0, // IEEE 1588 T0
+ CYGNUM_HAL_INTERRUPT_1588_1, // IEEE 1588 T1
+ CYGNUM_HAL_INTERRUPT_ENET_SWI, // Ethernet L2 swich
+ CYGNUM_HAL_INTERRUPT_NFC, // Nand Flash Controller
+ CYGNUM_HAL_INTERRUPT_SAI0, // Synchronous Audio Interface 0
+ CYGNUM_HAL_INTERRUPT_SAI1, // Synchronous Audio Interface 1
+ CYGNUM_HAL_INTERRUPT_SAI2, // Synchronous Audio Interface 2
+ CYGNUM_HAL_INTERRUPT_SAI3, // Synchronous Audio Interface 3
+ CYGNUM_HAL_INTERRUPT_ESAI_BIFIFO, // Enhanced Serial Audio Interface Bus Interface and FIFO
+ CYGNUM_HAL_INTERRUPT_SPDIF, // Sony/Philips Digital Interface
+ CYGNUM_HAL_INTERRUPT_ASRC, // Audio Sample Rate Converter
+ CYGNUM_HAL_INTERRUPT_VREG, // HVD Int
+ CYGNUM_HAL_INTERRUPT_WKPU0, // Wake Up 0
+ CYGNUM_HAL_INTERRUPT_RESERVED_18,
+ CYGNUM_HAL_INTERRUPT_CCM, // FXOSC ready int
+ CYGNUM_HAL_INTERRUPT_CCM_2, // Logical OR of LRF of PLL1, PLL2, PLL3, PLL4
+ CYGNUM_HAL_INTERRUPT_SRC, // System Reset Controller
+ CYGNUM_HAL_INTERRUPT_PDB, // Programmable Delay Block
+ CYGNUM_HAL_INTERRUPT_EWM, // External Watchdog Monitor
+ CYGNUM_HAL_INTERRUPT_RESERVED_19,
+ CYGNUM_HAL_INTERRUPT_RESERVED_20,
+ CYGNUM_HAL_INTERRUPT_RESERVED_21,
+ CYGNUM_HAL_INTERRUPT_RESERVED_22,
+ CYGNUM_HAL_INTERRUPT_RESERVED_23,
+ CYGNUM_HAL_INTERRUPT_RESERVED_24,
+ CYGNUM_HAL_INTERRUPT_RESERVED_25,
+ CYGNUM_HAL_INTERRUPT_RESERVED_26,
+ CYGNUM_HAL_INTERRUPT_GPIO0, // GPIO PORT0 interrupts/ Wake-ups
+ CYGNUM_HAL_INTERRUPT_GPIO1, // GPIO PORT1 interrupts/ Wake-ups
+ CYGNUM_HAL_INTERRUPT_GPIO2, // GPIO PORT2 interrupts/ Wake-ups
+ CYGNUM_HAL_INTERRUPT_GPIO3, // GPIO PORT3 interrupts/ Wake-ups
+ CYGNUM_HAL_INTERRUPT_GPIO4 // GPIO PORT4 interrupts/ Wake-ups
+} VybridExtInterrupt_e;
+
+
+// Ranges of usable interrupt sources
+#define CYGNUM_HAL_INTERRUPT_NVIC_MAX CYGNUM_HAL_INTERRUPT_GPIO4
+#define CYGNUM_HAL_ISR_MIN 0
+#define CYGNUM_HAL_ISR_MAX CYGNUM_HAL_INTERRUPT_GPIO4
+#define CYGNUM_HAL_ISR_COUNT (CYGNUM_HAL_ISR_MAX + 1)
+
+#define CYGNUM_HAL_VSR_MIN 0
+#ifndef CYGNUM_HAL_VSR_MAX
+# define CYGNUM_HAL_VSR_MAX (CYGNUM_HAL_VECTOR_SYS_TICK+ \
+ CYGNUM_HAL_INTERRUPT_NVIC_MAX)
+#endif
+
+#define CYGNUM_HAL_VSR_COUNT (CYGNUM_HAL_VSR_MAX+1)
+
+//==========================================================================
+// Interrupt mask and config for variant-specific devices
+
+// PORT Pin interrupts
+
+#define CYGHWR_HAL_VYBRID_PIN_IRQ_VECTOR(__pin) \
+ (CYGNUM_HAL_INTERRUPT_PORTA + CYGHWR_HAL_VYBRID_PIN_PORT(__pin))
+
+//===========================================================================
+// Interrupt resources exported by HAL to device drivers
+
+// Export Interrupt vectors to serial driver.
+
+#define CYGNUM_IO_SERIAL_FREESCALE_UART0_INT_VECTOR \
+ CYGNUM_HAL_INTERRUPT_UART0_RX_TX
+#define CYGNUM_IO_SERIAL_FREESCALE_UART1_INT_VECTOR \
+ CYGNUM_HAL_INTERRUPT_UART1_RX_TX
+#define CYGNUM_IO_SERIAL_FREESCALE_UART2_INT_VECTOR \
+ CYGNUM_HAL_INTERRUPT_UART2_RX_TX
+#define CYGNUM_IO_SERIAL_FREESCALE_UART3_INT_VECTOR \
+ CYGNUM_HAL_INTERRUPT_UART3_RX_TX
+#define CYGNUM_IO_SERIAL_FREESCALE_UART4_INT_VECTOR \
+ CYGNUM_HAL_INTERRUPT_UART4_RX_TX
+#define CYGNUM_IO_SERIAL_FREESCALE_UART5_INT_VECTOR \
+ CYGNUM_HAL_INTERRUPT_UART5_RX_TX
+
+// Export Interrupt vectors to ENET driver.
+
+#define CYGNUM_FREESCALE_ENET0_1588_TIMER_INT_VECTOR \
+ CYGNUM_HAL_INTERRUPT_ENET_1588_TIMER
+#define CYGNUM_FREESCALE_ENET0_TRANSMIT_INT_VECTOR \
+ CYGNUM_HAL_INTERRUPT_ENET_TRANSMIT
+#define CYGNUM_FREESCALE_ENET0_RECEIVE_INT_VECTOR \
+ CYGNUM_HAL_INTERRUPT_ENET_RECEIVE
+#define CYGNUM_FREESCALE_ENET0_ERROR_INT_VECTOR \
+ CYGNUM_HAL_INTERRUPT_ENET_ERROR
+
+#define HAL_VAR_INTERRUPT_MASK( __vector ) CYG_EMPTY_STATEMENT
+#define HAL_VAR_INTERRUPT_UNMASK( __vector ) CYG_EMPTY_STATEMENT
+#define HAL_VAR_INTERRUPT_CONFIGURE( __vector, __level, __up ) CYG_EMPTY_STATEMENT
+#define HAL_VAR_INTERRUPT_ACKNOWLEDGE( __vector ) CYG_EMPTY_STATEMENT
+
+#define HAL_VAR_INTERRUPT_SET_LEVEL( __vector, __level ) \
+{ \
+ cyg_uint16 reg; \
+ if(__vector > 0 ) \
+ { \
+ HAL_READ_UINT16((CYGHWR_HAL_VYBRID_MSCM_IRSPRCn_BASE + ((__vector - 1 )*2)), reg);\
+ reg |= (1 << CYGHWR_HAL_VYBRID_MSCM_IRSPRCn_CP1En_S); \
+ HAL_WRITE_UINT16((CYGHWR_HAL_VYBRID_MSCM_IRSPRCn_BASE + ((__vector - 1 )*2)), reg);\
+ } \
+}
+
+//----------------------------------------------------------------------------
+#endif // CYGONCE_HAL_VAR_INTR_H
+// EOF var_intr.h
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io.h b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io.h
new file mode 100644
index 0000000..4e01990
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io.h
@@ -0,0 +1,753 @@
+#ifndef CYGONCE_HAL_VAR_IO_H
+#define CYGONCE_HAL_VAR_IO_H
+//===========================================================================
+//
+// var_io.h
+//
+// Variant specific registers
+//
+//===========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2011, 2013 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//===========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/var_io.h
+// Date: 2014-03-28
+// Purpose: Vybrid variant specific registers
+// Description:
+// Usage: #include <cyg/hal/var_io.h>
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================
+
+#include <pkgconf/hal_cortexm_vybrid.h>
+
+#include <cyg/hal/plf_io.h>
+
+//===========================================================================
+// Cortex-M architecture
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+// Cortex-M architecture overrides
+//---------------------------------------------------------------------------
+// VTOR - Vector Table Offset Register
+
+#ifndef CYGARC_REG_NVIC_VTOR_TBLBASE_SRAM
+#ifdef CYG_HAL_VTOR_ADRESS
+#define CYGARC_REG_NVIC_VTOR_TBLBASE_SRAM CYG_HAL_VTOR_ADRESS
+#else
+#define CYGARC_REG_NVIC_VTOR_TBLBASE_SRAM 0x1f800000
+#endif
+#endif
+
+//===========================================================================
+// Vybrid Memory layout
+//---------------------------------------------------------------------------
+#define CYGHWR_HAL_VYBRID_OCRAM1_BASE 0x3f040000
+#define CYGHWR_HAL_VYBRID_OCRAM1_SIZE 0x0003ffff
+
+//===========================================================================
+// Vybrid Peripherals
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+// MSCM - Miscellaneous System Control Module
+#define CYGHWR_HAL_VYBRID_MSCM_BASE 0x40001000
+#define CYGHWR_HAL_VYBRID_MSCM_CPxTYPE (CYGHWR_HAL_VYBRID_MSCM_BASE + 0x000)
+#define CYGHWR_HAL_VYBRID_MSCM_CPxTYPE_PERSONALITY_M 0xFFFFFF00
+#define CYGHWR_HAL_VYBRID_MSCM_CPxTYPE_PERSONALITY_S 8
+#define CYGHWR_HAL_VYBRID_MSCM_CPxTYPE_RYPZ_M 0x000000FF
+#define CYGHWR_HAL_VYBRID_MSCM_CPxTYPE_RYPZ_S 0
+#define CYGHWR_HAL_VYBRID_MSCM_CPxNUM (CYGHWR_HAL_VYBRID_MSCM_BASE + 0x004)
+#define CYGHWR_HAL_VYBRID_MSCM_CPxNUM_CPN_M 0x00000001
+#define CYGHWR_HAL_VYBRID_MSCM_CPxNUM_CPN_S 0
+#define CYGHWR_HAL_VYBRID_MSCM_CPxMASTER (CYGHWR_HAL_VYBRID_MSCM_BASE + 0x008)
+#define CYGHWR_HAL_VYBRID_MSCM_CPxMASTER_PPN_M 0x0000001f
+#define CYGHWR_HAL_VYBRID_MSCM_CPxMASTER_PPN_S 0
+#define CYGHWR_HAL_VYBRID_MSCM_CPxCOUNT (CYGHWR_HAL_VYBRID_MSCM_BASE + 0x00c)
+#define CYGHWR_HAL_VYBRID_MSCM_CPxNUM_PCNT_M 0x00000001
+#define CYGHWR_HAL_VYBRID_MSCM_CPxNUM_PCNT_S 0
+#define CYGHWR_HAL_VYBRID_MSCM_CPxCFG0 (CYGHWR_HAL_VYBRID_MSCM_BASE + 0x010)
+#define CYGHWR_HAL_VYBRID_MSCM_CPxCFG1 (CYGHWR_HAL_VYBRID_MSCM_BASE + 0x014)
+#define CYGHWR_HAL_VYBRID_MSCM_CPxCFG2 (CYGHWR_HAL_VYBRID_MSCM_BASE + 0x018)
+#define CYGHWR_HAL_VYBRID_MSCM_CPxCFG3 (CYGHWR_HAL_VYBRID_MSCM_BASE + 0x01c)
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP0IR (CYGHWR_HAL_VYBRID_MSCM_BASE + 0x800)
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP0IR_INT0_M 0x00000001
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP0IR_INT0_S 0
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP0IR_INT1_M 0x00000002
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP0IR_INT1_S 1
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP0IR_INT2_M 0x00000004
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP0IR_INT2_S 2
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP0IR_INT3_M 0x00000008
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP0IR_INT3_S 3
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP1IR (CYGHWR_HAL_VYBRID_MSCM_BASE + 0x804)
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP1IR_INT0_M 0x00000001
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP1IR_INT0_S 0
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP1IR_INT1_M 0x00000002
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP1IR_INT1_S 1
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP1IR_INT2_M 0x00000004
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP1IR_INT2_S 2
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP1IR_INT3_M 0x00000008
+#define CYGHWR_HAL_VYBRID_MSCM_IRCP1IR_INT3_S 3
+#define CYGHWR_HAL_VYBRID_MSCM_IRCPGIR (CYGHWR_HAL_VYBRID_MSCM_BASE + 0x820)
+#define CYGHWR_HAL_VYBRID_MSCM_IRCPGIR_INTID_M 0x00000003
+#define CYGHWR_HAL_VYBRID_MSCM_IRCPGIR_INTID_S 0
+#define CYGHWR_HAL_VYBRID_MSCM_IRCPGIR_CPUTL_M 0x00030000
+#define CYGHWR_HAL_VYBRID_MSCM_IRCPGIR_CPUTL_S 16
+#define CYGHWR_HAL_VYBRID_MSCM_IRCPGIR_TLF_M 0x03000000
+#define CYGHWR_HAL_VYBRID_MSCM_IRCPGIR_TLF_S 24
+#define CYGHWR_HAL_VYBRID_MSCM_IRSPRCn_BASE (CYGHWR_HAL_VYBRID_MSCM_BASE + 0x880)
+#define CYGHWR_HAL_VYBRID_MSCM_IRSPRCn_CP1En_M 0x0002
+#define CYGHWR_HAL_VYBRID_MSCM_IRSPRCn_CP1En_S 0
+#define CYGHWR_HAL_VYBRID_MSCM_IRSPRCn_CP0En_M 0x0001
+#define CYGHWR_HAL_VYBRID_MSCM_IRSPRCn_CP0En_S 1
+#define CYGHWR_HAL_VYBRID_MSCM_IRSPRCn_RO_M 0x8000
+#define CYGHWR_HAL_VYBRID_MSCM_IRSPRCn_RO_S 15
+
+__externC int hal_get_core_num(void);
+
+//---------------------------------------------------------------------------
+// SEMA4 - IPS Semaphores
+// SEMA4 - Peripheral register structure
+typedef volatile struct cyghwr_hal_vybrid_sema4_s
+{
+ cyg_uint8 gate[16];
+ cyg_uint8 reserved0[50];
+ cyg_uint16 cp0ine;
+ cyg_uint8 reserved1[6];
+ cyg_uint16 cp1ine;
+ cyg_uint8 reserved2[54];
+ cyg_uint16 cp0ntf;
+ cyg_uint8 reserved3[6];
+ cyg_uint16 cp1ntf;
+ cyg_uint8 reserved4[118];
+ cyg_uint16 rstgt;
+ cyg_uint8 reserved5[2];
+ cyg_uint16 rstntf;
+} cyghwr_hal_vybrid_sema4_t;
+
+#define CYGHWR_HAL_VYBRID_SEMA4_GATE_GTFSM_M 0x03
+#define CYGHWR_HAL_VYBRID_SEMA4_P ((cyghwr_hal_vybrid_sema4_t *) 0x4001d000)
+
+//---------------------------------------------------------------------------
+// CCM - Clock Controller Module
+// CCM - Peripheral register structure
+typedef volatile struct cyghwr_hal_vybrid_ccm_s {
+ cyg_uint32 ccr; //
+ cyg_uint32 csr; //
+ cyg_uint32 ccsr; //
+ cyg_uint32 cacrr; //
+ cyg_uint32 cscmr1; //
+ cyg_uint32 cscdr1; //
+ cyg_uint32 cscdr2; //
+ cyg_uint32 cscdr3; //
+ cyg_uint32 cscmr2; //
+ cyg_uint32 reserved0; //
+ cyg_uint32 ctor; //
+ cyg_uint32 clpcr; //
+ cyg_uint32 cisr; //
+ cyg_uint32 cimr; //
+ cyg_uint32 ccosr; //
+ cyg_uint32 cgpr; //
+ cyg_uint32 ccgr0; //
+ cyg_uint32 ccgr1; //
+ cyg_uint32 ccgr2; //
+ cyg_uint32 ccgr3; //
+ cyg_uint32 ccgr4; //
+ cyg_uint32 ccgr5; //
+ cyg_uint32 ccgr6; //
+ cyg_uint32 ccgr7; //
+ cyg_uint32 ccgr8; //
+ cyg_uint32 ccgr9; //
+ cyg_uint32 ccgr10; //
+ cyg_uint32 ccgr11; //
+ cyg_uint32 cmeor0; //
+ cyg_uint32 cmeor1; //
+ cyg_uint32 cmeor2; //
+ cyg_uint32 cmeor3; //
+ cyg_uint32 cmeor4; //
+ cyg_uint32 cmeor5; //
+ cyg_uint32 cppdsr; //
+ cyg_uint32 ccowr; //
+ cyg_uint32 ccpgr0; //
+ cyg_uint32 ccpgr1; //
+ cyg_uint32 ccpgr2; //
+ cyg_uint32 ccpgr3; //
+
+} cyghwr_hal_vybrid_ccm_t;
+
+
+#define CYGHWR_HAL_VYBRID_CCM_P ((cyghwr_hal_vybrid_ccm_t *) 0x4006B000)
+
+// CCR Fields
+#define CYGHWR_HAL_VYBRID_CCM_CCR_FIRC_M 0x00010000
+#define CYGHWR_HAL_VYBRID_CCM_CCR_FIRC_S 16
+#define CYGHWR_HAL_VYBRID_CCM_CCR_FXOSC_EN_M 0x00001000
+#define CYGHWR_HAL_VYBRID_CCM_CCR_FXOSC_EN_S 12
+#define CYGHWR_HAL_VYBRID_CCM_CCR_OSCNT_M 0x000000ff
+#define CYGHWR_HAL_VYBRID_CCM_CCR_OSCNT_S 0
+
+// CSR Fields
+#define CYGHWR_HAL_VYBRID_CCM_CSR_FXOSC_RDY_M 0x00000020
+#define CYGHWR_HAL_VYBRID_CCM_CSR_FXOSC_RDY_S 5
+
+
+// CACRR Bit Fields
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_FLEX_CLK_DIV_M 0x1C00000
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_FLEX_CLK_DIV_S 22
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_PLL6_CLK_DIV_M 0x0200000
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_PLL6_CLK_DIV_S 21
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_PLL3_CLK_DIV_M 0x0100000
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_PLL3_CLK_DIV_S 20
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_PLL1_PFD_CLK_DIV_M 0x0030000
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_PLL1_PFD_CLK_DIV_S 16
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_IPG_CLK_DIV_M 0x0001800
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_IPG_CLK_DIV_S 11
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_PLL4_CLK_DIV_M 0x00001C0
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_PLL4_CLK_DIV_S 6
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_BUS_CLK_DIV_M 0x0000038
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_BUS_CLK_DIV_S 3
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_ARM_CLK_DIV_M 0x0000007
+#define CYGHWR_HAL_VYBRID_CCM_CACRR_ARM_CLK_DIV_S 0
+
+// CCSR Bit Fields
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL3_PFD4_EN_M 0x80000000
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL3_PFD4_EN_S 31
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL3_PFD3_EN_M 0x40000000
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL3_PFD3_EN_S 30
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL3_PFD2_EN_M 0x20000000
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL3_PFD2_EN_S 29
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL3_PFD1_EN_M 0x10000000
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL3_PFD1_EN_S 28
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_DAP_EN_M 0x01000000
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_DAP_EN_S 24
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL2_PFD_CLK_SEL_M 0x00380000
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL2_PFD_CLK_SEL_S 19
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL1_PFD_CLK_SEL_M 0x00070000
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL1_PFD_CLK_SEL_S 16
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL2_PFD4_EN_M 0x00008000
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL2_PFD4_EN_S 15
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL2_PFD3_EN_M 0x00004000
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL2_PFD3_EN_S 14
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL2_PFD2_EN_M 0x00002000
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL2_PFD2_EN_S 13
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL2_PFD1_EN_M 0x00001000
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL2_PFD1_EN_S 12
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL1_PFD4_EN_M 0x00000800
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL1_PFD4_EN_S 11
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL1_PFD3_EN_M 0x00000400
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL1_PFD3_EN_S 10
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL1_PFD2_EN_M 0x00000200
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL1_PFD2_EN_S 9
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL1_PFD1_EN_M 0x00000100
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_PLL1_PFD1_EN_S 8
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_DDRC_CLK_SEL_M 0x00000040
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_DDRC_CLK_SEL_S 6
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_FAST_CLK_SEL_M 0x00000020
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_FAST_CLK_SEL_S 5
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_SLOW_CLK_SEL_M 0x00000010
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_SLOW_CLK_SEL_S 4
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_SYS_CLK_SEL_M 0x00000007
+#define CYGHWR_HAL_VYBRID_CCM_CCSR_SYS_CLK_SEL_S 0
+
+
+// CSCMR1 Bit Fields
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_DCU1_CLK_SEL_M 0x20000000
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_DCU1_CLK_SEL_S 29
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_DCU0_CLK_SEL_M 0x10000000
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_DCU0_CLK_SEL_S 28
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_QSPI1_CLK_SEL_M 0x03000000
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_QSPI1_CLK_SEL_S 24
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_QSPIO_CLK_SEL_M 0x00C00000
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_QSPIO_CLK_SEL_S 22
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_ESAI_CLK_SEL_M 0x00300000
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_ESAI_CLK_SEL_S 20
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_ESDHC1_CLK_SEL_M 0x000C0000
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_ESDHC1_CLK_SEL_S 18
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_ESDHC0_CLK_SEL_M 0x00030000
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_ESDHC0_CLK_SEL_S 16
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_NFC_CLK_SEL_M 0x00003000
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_NFC_CLK_SEL_S 12
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_VADC_CLK_SEL_M 0x00000300
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_VADC_CLK_SEL_S 8
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_SAI3_CLK_SEL_M 0x000000C0
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_SAI3_CLK_SEL_S 6
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_SAI2_CLK_SEL_M 0x00000030
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_SAI2_CLK_SEL_S 4
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_SAI1_CLK_SEL_M 0x0000000C
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_SAI1_CLK_SEL_S 2
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_SAI0_CLK_SEL_M 0x00000003
+#define CYGHWR_HAL_VYBRID_CCM_CSCMR1_SAI0_CLK_SEL_S 0
+
+//---------------------------------------------------------------------------
+// FTM - Flex Timer Module
+typedef volatile struct cyghwr_hal_vybrid_ftm_chnl_s {
+ cyg_uint32 sc;
+ cyg_uint32 v;
+}cyghwr_hal_vybrid_ftm_chnl_t;
+
+
+typedef volatile struct cyghwr_hal_vybrid_ftm_s {
+ cyg_uint32 sc;
+ cyg_uint32 cnt;
+ cyg_uint32 mod;
+ cyghwr_hal_vybrid_ftm_chnl_t c[8];
+ cyg_uint32 cntin;
+ cyg_uint32 status;
+ cyg_uint32 mode;
+ cyg_uint32 sync;
+ cyg_uint32 outinit;
+ cyg_uint32 outmask;
+ cyg_uint32 combine;
+ cyg_uint32 deadtime;
+ cyg_uint32 exttrig;
+ cyg_uint32 pol;
+ cyg_uint32 fms;
+ cyg_uint32 filter;
+ cyg_uint32 fltctrl;
+ cyg_uint32 qdctrl;
+ cyg_uint32 conf;
+ cyg_uint32 fltpol;
+ cyg_uint32 synconf;
+ cyg_uint32 invctrl;
+ cyg_uint32 swoctrl;
+ cyg_uint32 pwmload;
+} cyghwr_hal_vybrid_ftm_t;
+
+
+#define CYGHWR_HAL_VYBRID_FTM0_P ((cyghwr_hal_vybrid_ftm_t *)0x40038000)
+#define CYGHWR_HAL_VYBRID_FTM1_P ((cyghwr_hal_vybrid_ftm_t *)0x40039000)
+#define CYGHWR_HAL_VYBRID_FTM2_P ((cyghwr_hal_vybrid_ftm_t *)0x400b8000)
+#define CYGHWR_HAL_VYBRID_FTM3_P ((cyghwr_hal_vybrid_ftm_t *)0x400b9000)
+
+
+//---------------------------------------------------------------------------
+// ANADIG - Analog components control digital interface
+// ANADIG - Peripheral register structure
+
+// The ANADIG module has a very wide memory layout.
+// Between each register is a 12 bytes free space. Therefore typical implementation
+// of this module as structure is wasteful.
+
+#define CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR 0x40050000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL (CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR + 0x270)
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_SS (CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR + 0x280)
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_NUM (CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR + 0x290)
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_DENOM (CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR + 0x2a0)
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD (CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR + 0x2b0)
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL (CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR + 0x30)
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_SS (CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR + 0x40)
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_NUM (CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR + 0x50)
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_DENOM (CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR + 0x60)
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD (CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR + 0x100)
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL (CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR + 0x10)
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD (CYGHWR_HAL_VYBRID_ANADIG_BASE_ADDR + 0x60)
+
+// PLL1_CTRL Bit Fields
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_LOCK_M 0x80000000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_LOCK_S 31
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_PFD_OFFSET_EN_M 0x00040000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_PFD_OFFSET_EN_S 18
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_DITHER_ENABLE_M 0x00020000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_DITHER_ENABLE_S 17
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_BYPASS_M 0x00010000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_BYPASS_S 16
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_BYPASS_CLK_SRC_M 0x00004000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_BYPASS_CLK_SRC_S 14
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_ENABLE_M 0x00002000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_ENABLE_S 13
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_POWERDOWN_M 0x00001000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_POWERDOWN_S 12
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_DIV_SELECT_M 0x00000002
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_DIV_SELECT_S 1
+
+// PLL1_NUM Bit Fields
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_NUM_M 0x7FFFFFFF
+
+// PLL1_DENOM Bit Fields
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_DENOM_M 0x7FFFFFFF
+
+// PLL2_PFD Bit Fields
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD4_CLKGATE_M 0x80000000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD4_CLKGATE_S 31
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD4_STABLE_M 0x40000000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD4_STABLE_S 30
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD4_FRAC_M 0x3F000000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD4_FRAC_S 24
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD3_CLKGATE_M 0x00800000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD3_CLKGATE_S 23
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD3_STABLE_M 0x00400000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD3_STABLE_S 22
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD3_FRAC_M 0x003F0000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD3_FRAC_S 16
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD2_CLKGATE_M 0x00008000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD2_CLKGATE_S 15
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD2_STABLE_M 0x00004000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD2_STABLE_S 14
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD2_FRAC_M 0x00003F00
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD2_FRAC_S 8
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD1_CLKGATE_M 0x00000080
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD1_CLKGATE_S 7
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD1_STABLE_M 0x00000040
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD1_STABLE_S 6
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD1_FRAC_M 0x0000003F
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD_PFD1_FRAC_S 0
+
+// PLL2_CTRL Bit Fields
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_LOCK_M 0x80000000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_LOCK_S 31
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_PFD_OFFSET_EN_M 0x00040000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_PFD_OFFSET_EN_S 18
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_DITHER_ENABLE_M 0x00020000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_DITHER_ENABLE_S 17
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_BYPASS_M 0x00010000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_BYPASS_S 16
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_BYPASS_CLK_SRC_M 0x00004000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_BYPASS_CLK_SRC_S 14
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_ENABLE_M 0x00002000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_ENABLE_S 13
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_POWERDOWN_M 0x00001000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_POWERDOWN_S 12
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_DIV_SELECT_M 0x00000002
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_DIV_SELECT_S 1
+
+// PLL2_NUM Bit Fields
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_NUM_M 0x7FFFFFFF
+
+// PLL2_DENOM Bit Fields
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_DENOM_M 0x7FFFFFFF
+
+// PLL2_PFD Bit Fields
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD4_CLKGATE_M 0x80000000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD4_CLKGATE_S 31
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD4_STABLE_M 0x40000000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD4_STABLE_S 30
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD4_FRAC_M 0x3F000000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD4_FRAC_S 24
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD3_CLKGATE_M 0x00800000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD3_CLKGATE_S 23
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD3_STABLE_M 0x00400000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD3_STABLE_S 22
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD3_FRAC_M 0x003F0000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD3_FRAC_S 16
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD2_CLKGATE_M 0x00008000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD2_CLKGATE_S 15
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD2_STABLE_M 0x00004000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD2_STABLE_S 14
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD2_FRAC_M 0x00003F00
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD2_FRAC_S 8
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD1_CLKGATE_M 0x00000080
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD1_CLKGATE_S 7
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD1_STABLE_M 0x00000040
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD1_STABLE_S 6
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD1_FRAC_M 0x0000003F
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD_PFD1_FRAC_S 0
+
+// PLL3_CTRL Bit Fields
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_LOCK_M 0x80000000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_LOCK_S 31
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_BYPASS_M 0x00010000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_BYPASS_S 16
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_BYPASS_CLK_SRC_M 0x00004000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_BYPASS_CLK_SRC_S 14
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_ENABLE_M 0x00002000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_ENABLE_S 13
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_POWER_M 0x00001000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_POWER_S 12
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_EN_USB_CLKS_M 0x00000040
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_EN_USB_CLKS_S 6
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_DIV_SELECT_M 0x00000002
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_DIV_SELECT_S 1
+
+// PLL3_PFD Bit Fields
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD4_CLKGATE_M 0x80000000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD4_CLKGATE_S 31
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD4_STABLE_M 0x40000000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD4_STABLE_S 30
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD4_FRAC_M 0x3F000000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD4_FRAC_S 24
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD3_CLKGATE_M 0x00800000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD3_CLKGATE_S 23
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD3_STABLE_M 0x00400000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD3_STABLE_S 22
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD3_FRAC_M 0x003F0000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD3_FRAC_S 16
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD2_CLKGATE_M 0x00008000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD2_CLKGATE_S 15
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD2_STABLE_M 0x00004000
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD2_STABLE_S 14
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD2_FRAC_M 0x00003F00
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD2_FRAC_S 8
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD1_CLKGATE_M 0x00000080
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD1_CLKGATE_S 7
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD1_STABLE_M 0x00000040
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD1_STABLE_S 6
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD1_FRAC_M 0x0000003F
+#define CYGHWR_HAL_VYBRID_ANADIG_PLL3_PFD_PFD1_FRAC_S 0
+
+//---------------------------------------------------------------------------
+// Clock distribution
+// The following encodes the control register and clock bit number
+// into clock configuration descriptor (CLKCD).
+#define CYGHWR_HAL_VYBRID_CCM_CCGR(__reg,__cg) (((__reg) & 0x0F) + ((((__cg - (__reg * 16)) * 2) << 8) & 0x1F00))
+
+// Macros to extract encoded values.
+#define CYGHWR_HAL_VYBRID_CCM_CCGR_REG(__val) (((__val) & 0x0F))
+#define CYGHWR_HAL_VYBRID_CCM_CCGR_BIT(__val) (((__val) >> 8) & 0x1F)
+
+// Functions and macros to enable/disable clocks.
+#define CYGHWR_HAL_CCGR_NONE (0xFFFFFFFF)
+__externC void hal_clock_enable(cyg_uint32 ccgr);
+__externC void hal_clock_disable(cyg_uint32 ccgr);
+
+#define CYGHWR_HAL_CLOCK_ENABLE(__ccgr) hal_clock_enable(__ccgr)
+#define CYGHWR_HAL_CLOCK_DISABLE(__ccgr) hal_clock_disable(__ccgr)
+#include <cyg/hal/var_io_clkgat.h>
+
+
+//---------------------------------------------------------------------------
+// PORT - Peripheral register structure
+
+typedef volatile struct cyghwr_hal_vybrid_port_s {
+ cyg_uint32 pcr[32]; // Pin Control Register n, array
+ cyg_uint8 reserved0[24];
+ cyg_uint32 isfr; // Interrupt Status Flag Register
+ cyg_uint8 reserved1[28];
+ cyg_uint32 dfer; // Digital Filter Enable Register
+ cyg_uint32 dfcr; // Digital Filter Clock Register
+ cyg_uint32 dfwr; // Digital Filter Width Register
+} cyghwr_hal_vybrid_port_t;
+
+
+// PORT - Peripheral instance base addresses
+#define CYGHWR_HAL_VYBRID_PORTA_P ((cyghwr_hal_vybrid_port_t *)0x40049000)
+#define CYGHWR_HAL_VYBRID_PORTB_P ((cyghwr_hal_vybrid_port_t *)0x4004A000)
+#define CYGHWR_HAL_VYBRID_PORTC_P ((cyghwr_hal_vybrid_port_t *)0x4004B000)
+#define CYGHWR_HAL_VYBRID_PORTD_P ((cyghwr_hal_vybrid_port_t *)0x4004C000)
+#define CYGHWR_HAL_VYBRID_PORTE_P ((cyghwr_hal_vybrid_port_t *)0x4004D000)
+#define CYGHWR_HAL_VYBRID_PORTF_P ((cyghwr_hal_vybrid_port_t *)0x4004E000)
+
+enum {
+ CYGHWR_HAL_VYBRID_PORTA, CYGHWR_HAL_VYBRID_PORTB,
+ CYGHWR_HAL_VYBRID_PORTC, CYGHWR_HAL_VYBRID_PORTD,
+ CYGHWR_HAL_VYBRID_PORTE, CYGHWR_HAL_VYBRID_PORTF
+};
+
+#define CYGHWR_HAL_VYBRID_PORT(__port, __reg) \
+ (CYGHWR_HAL_VYBRID_PORT##__port##_P)->__reg
+
+// PCR Bit Fields TODO To remove
+#define CYGHWR_HAL_VYBRID_PORT_PCR_PS_M 0x1
+#define CYGHWR_HAL_VYBRID_PORT_PCR_PS_S 0
+#define CYGHWR_HAL_VYBRID_PORT_PCR_PE_M 0x2
+#define CYGHWR_HAL_VYBRID_PORT_PCR_PE_S 1
+#define CYGHWR_HAL_VYBRID_PORT_PCR_SRE_M 0x4
+#define CYGHWR_HAL_VYBRID_PORT_PCR_SRE_S 2
+#define CYGHWR_HAL_VYBRID_PORT_PCR_PFE_M 0x10
+#define CYGHWR_HAL_VYBRID_PORT_PCR_PFE_S 4
+#define CYGHWR_HAL_VYBRID_PORT_PCR_ODE_M 0x20
+#define CYGHWR_HAL_VYBRID_PORT_PCR_ODE_S 5
+#define CYGHWR_HAL_VYBRID_PORT_PCR_DSE_M 0x40
+#define CYGHWR_HAL_VYBRID_PORT_PCR_DSE_S 6
+#define CYGHWR_HAL_VYBRID_PORT_PCR_MUX_M 0x700
+#define CYGHWR_HAL_VYBRID_PORT_PCR_MUX_S 8 // VYBRID
+#define CYGHWR_HAL_VYBRID_PORT_PCR_MUX(__val) \
+ VALUE_(CYGHWR_HAL_VYBRID_PORT_PCR_MUX_S, __val)
+#define CYGHWR_HAL_VYBRID_PORT_PCR_LK_M 0x8000
+#define CYGHWR_HAL_VYBRID_PORT_PCR_LK_S 15
+#define CYGHWR_HAL_VYBRID_PORT_PCR_IRQC_M 0xF0000
+#define CYGHWR_HAL_VYBRID_PORT_PCR_IRQC_S 16
+#define CYGHWR_HAL_VYBRID_PORT_PCR_IRQC(__val) \
+ VALUE_(CYGHWR_HAL_VYBRID_PORT_PCR_IRQC_S, __val)
+#define CYGHWR_HAL_VYBRID_PORT_PCR_ISF_M 0x1000000
+#define CYGHWR_HAL_VYBRID_PORT_PCR_ISF_S 24
+
+#define CYGHWR_HAL_VYBRID_PORT_PCR_MUX_ANALOG 0
+#define CYGHWR_HAL_VYBRID_PORT_PCR_MUX_DIS 0
+#define CYGHWR_HAL_VYBRID_PORT_PCR_MUX_GPIO 1
+
+#define CYGHWR_HAL_VYBRID_PORT_PCR_ISFR_CLEAR(__port, __pin) \
+ CYGHWR_HAL_VYBRID_PORT(__port, pcr[__pin]) |= BIT_(24)
+
+#define CYGHWR_HAL_VYBRID_PORT_ISFR_CLEAR(__port, __pin) \
+ CYGHWR_HAL_VYBRID_PORT(__port, isfr) |= BIT_(__pin)
+
+
+
+#define CYGHWR_HAL_VYBRID_PIN_CFG(__port, __bit, __mux, __irqc, __cnf) \
+ ((CYGHWR_HAL_VYBRID_PORT##__port << 20) | ((__bit) << 27) \
+ | CYGHWR_HAL_VYBRID_PORT_PCR_IRQC(__irqc) \
+ | CYGHWR_HAL_VYBRID_PORT_PCR_MUX(__mux) | (__cnf))
+
+#define CYGHWR_HAL_VYBRID_PIN(__port, __bit, __mux, __cnf) \
+ CYGHWR_HAL_VYBRID_PIN_CFG(__port, __bit, __mux, 0, __cnf)
+
+#define CYGHWR_HAL_VYBRID_PIN_PORT(__pin) (((__pin) >> 20) & 0x7)
+#define CYGHWR_HAL_VYBRID_PIN_BIT(__pin) (((__pin) >> 27 ) & 0x1f)
+#define CYGHWR_HAL_VYBRID_PIN_FUNC(__pin) ((__pin) & 0x010f8777)
+#define CYGHWR_HAL_VYBRID_PIN_NONE (0xffffffff)
+
+// GPCLR Bit Fields
+#define CYGHWR_HAL_VYBRID_PORT_GPCLR_GPWD_M 0xFFFF
+#define CYGHWR_HAL_VYBRID_PORT_GPCLR_GPWD_S 0
+#define CYGHWR_HAL_VYBRID_PORT_GPCLR_GPWD(__val) \
+ VALUE_(CYGHWR_HAL_VYBRID_PORT_GPCLR_GPWD_S, __val)
+#define CYGHWR_HAL_VYBRID_PORT_GPCLR_GPWE_M 0xFFFF0000
+#define CYGHWR_HAL_VYBRID_PORT_GPCLR_GPWE_S 16
+#define CYGHWR_HAL_VYBRID_PORT_GPCLR_GPWE(__val) \
+ VALUE_(CYGHWR_HAL_VYBRID_PORT_GPCLR_GPWE_S, __val)
+// GPCHR Bit Fields
+#define CYGHWR_HAL_VYBRID_PORT_GPCHR_GPWD_M 0xFFFF
+#define CYGHWR_HAL_VYBRID_PORT_GPCHR_GPWD_S 0
+#define CYGHWR_HAL_VYBRID_PORT_GPCHR_GPWD(__val) \
+ VALUE_(CYGHWR_HAL_VYBRID_PORT_GPCHR_GPWD_S, __val)
+#define CYGHWR_HAL_VYBRID_PORT_GPCHR_GPWE_M 0xFFFF0000
+#define CYGHWR_HAL_VYBRID_PORT_GPCHR_GPWE_S 16
+#define CYGHWR_HAL_VYBRID_PORT_GPCHR_GPWE(__val) \
+ VALUE_(CYGHWR_HAL_VYBRID_PORT_GPCHR_GPWE_S, __val)
+// ISFR Bit Fields
+#define CYGHWR_HAL_VYBRID_PORT_ISFR_ISF_M 0xFFFFFFFF
+#define CYGHWR_HAL_VYBRID_PORT_ISFR_ISF_S 0
+#define CYGHWR_HAL_VYBRID_PORT_ISFR_ISF(__val) \
+ VALUE_(CYGHWR_HAL_VYBRID_PORT_ISFR_ISF_S, __val)
+// DFER Bit Fields
+#define CYGHWR_HAL_VYBRID_PORT_DFER_DFE_M 0xFFFFFFFF
+#define CYGHWR_HAL_VYBRID_PORT_DFER_DFE_S 0
+#define CYGHWR_HAL_VYBRID_PORT_DFER_DFE(__val) \
+ VALUE_(CYGHWR_HAL_VYBRID_PORT_DFER_DFE_S, __val)
+// DFCR Bit Fields
+#define CYGHWR_HAL_VYBRID_PORT_DFCR_CS_M 0x1
+#define CYGHWR_HAL_VYBRID_PORT_DFCR_CS_S 0
+// DFWR Bit Fields
+#define CYGHWR_HAL_VYBRID_PORT_DFWR_FILT_M 0x1F
+#define CYGHWR_HAL_VYBRID_PORT_DFWR_FILT_S 0
+#define CYGHWR_HAL_VYBRID_PORT_DFWR_FILT(__val) \
+ VALUE_(CYGHWR_HAL_VYBRID_PORT_DFWR_FILT_S, __val)
+
+#ifndef __ASSEMBLER__
+
+// Pin configuration related functions
+__externC void hal_set_pin_function(cyg_uint32 pin);
+__externC void hal_dump_pin_function(cyg_uint32 pin);
+__externC void hal_dump_pin_setting(cyg_uint32 pin);
+
+#endif
+
+#define HAL_SET_PINS(_pin_array) \
+CYG_MACRO_START \
+ const cyg_uint32 *_pin_p; \
+ for(_pin_p = &_pin_array[0]; \
+ _pin_p < &_pin_array[0] + sizeof(_pin_array)/sizeof(_pin_array[0]); \
+ hal_set_pin_function(*_pin_p++)); \
+CYG_MACRO_END
+
+//---------------------------------------------------------------------------
+// PMC Power Management Controller
+
+typedef volatile struct cyghwr_hal_vybrid_pmc_s {
+ cyg_uint8 lvdsc1; // Low Voltage Detect Status and Control 1 Register
+ cyg_uint8 lvdsc2; // Low Voltage Detect Status and Control 2 Register
+ cyg_uint8 regsc; // Regulator Status and Control Register
+} cyghwr_hal_vybrid_pmc_t;
+
+// PMC base address
+#define CYGHWR_HAL_VYBRID_PMC_P ((cyghwr_hal_vybrid_pmc_t *)0x4007D000)
+
+// LVDSC1 Bit Fields
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC1_LVDV_M 0x3
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC1_LVDV(__val) \
+ ((__val) & CYGHWR_HAL_VYBRID_PMC_LVDSC1_LVDV_M)
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC1_LVDRE_M 0x10
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC1_LVDRE_S 4
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC1_LVDIE_M 0x20
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC1_LVDIE_S 5
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC1_LVDACK_M 0x40
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC1_LVDACK_S 6
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC1_LVDF_M 0x80
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC1_LVDF_S 7
+// LVDSC2 Bit Fields
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC2_LVWV_M 0x3
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC2_LVWV(__val) \
+ ((__val) & CYGHWR_HAL_VYBRID_PMC_LVDSC2_LVWV_M)
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC2_LVWIE_M 0x20
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC2_LVWIE_S 5
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC2_LVWACK_M 0x40
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC2_LVWACK_S 6
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC2_LVWF_M 0x80
+#define CYGHWR_HAL_VYBRID_PMC_LVDSC2_LVWF_S 7
+// REGSC Bit Fields
+#define CYGHWR_HAL_VYBRID_PMC_REGSC_BGBE_M 0x1
+#define CYGHWR_HAL_VYBRID_PMC_REGSC_BGBE_S 0
+#define CYGHWR_HAL_VYBRID_PMC_REGSC_REGONS_M 0x4
+#define CYGHWR_HAL_VYBRID_PMC_REGSC_REGONS_S 2
+#define CYGHWR_HAL_VYBRID_PMC_REGSC_ACKISO_M 0x8
+#define CYGHWR_HAL_VYBRID_PMC_REGSC_ACKISO_S 3
+#define CYGHWR_HAL_VYBRID_PMC_REGSC_BGEN_M 0x10
+#define CYGHWR_HAL_VYBRID_PMC_REGSC_BGEN_S 4
+
+
+//---------------------------------------------------------------------------
+// FlexBus
+#ifdef CYGPKG_HAL_CORTEXM_VYBRID_FLEXBUS
+# include <cyg/hal/var_io_flexbus.h>
+#endif
+
+//----------------------------------------------------------------------------
+// DDRMC - SDRAM controller
+#ifdef CYGPKG_HAL_CORTEXM_VYBRID_DDRMC
+# include <cyg/hal/var_io_ddrmc.h>
+#endif
+
+//---------------------------------------------------------------------------
+// GPIO
+#include <cyg/hal/var_io_gpio.h>
+
+//=============================================================================
+// DEVS:
+// Following macros may also be, and usually are borrowed by some device drivers.
+//-----------------------------------------------------------------------------
+#include <cyg/hal/var_io_devs.h>
+
+// End Peripherals
+
+// Some miscelaneous function prototypes
+// Clock related functions are in vybrid_clocking.c
+__externC void hal_start_clocks(void);
+__externC void hal_update_clock_var(void);
+
+//-----------------------------------------------------------------------------
+// end of var_io.h
+
+#endif // CYGONCE_HAL_VAR_IO_H
+
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_clkgat.h b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_clkgat.h
new file mode 100644
index 0000000..bd6348a
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_clkgat.h
@@ -0,0 +1,67 @@
+#ifndef CYGONCE_HAL_VAR_IOCLKGAT_H
+#define CYGONCE_HAL_VAR_IOCLKGAT_H
+//===========================================================================
+//
+// var_io_clkgat.h
+//
+// Vybrid clock gating
+//
+//===========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2013 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//===========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/var_io_clkgat.h
+// Date: 2014-03-28
+// Purpose: Vybrid clock distribution macros
+// Description:
+// Usage: This file is included by <cyg/hal/var_io.h>
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================
+
+//---------------------------------------------------------------------------
+// Clock distribution
+
+// Clock gating definitions
+#define CYGHWR_HAL_VYBRID_CCM_CCGR_UART0 CYGHWR_HAL_VYBRID_CCM_CCGR(0, 7)
+#define CYGHWR_HAL_VYBRID_CCM_CCGR_UART1 CYGHWR_HAL_VYBRID_CCM_CCGR(0, 8)
+#define CYGHWR_HAL_VYBRID_CCM_CCGR_UART2 CYGHWR_HAL_VYBRID_CCM_CCGR(0, 9)
+#define CYGHWR_HAL_VYBRID_CCM_CCGR_UART3 CYGHWR_HAL_VYBRID_CCM_CCGR(0, 10)
+#define CYGHWR_HAL_VYBRID_CCM_CCGR_UART4 CYGHWR_HAL_VYBRID_CCM_CCGR(6, 105)
+#define CYGHWR_HAL_VYBRID_CCM_CCGR_UART5 CYGHWR_HAL_VYBRID_CCM_CCGR(6, 106)
+
+
+#endif // CYGONCE_HAL_VAR_IOCLKGAT_H
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_devs.h b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_devs.h
new file mode 100644
index 0000000..64aefcf
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_devs.h
@@ -0,0 +1,173 @@
+#ifndef CYGONCE_HAL_VAR_IO_DEVS_H
+#define CYGONCE_HAL_VAR_IO_DEVS_H
+//===========================================================================
+//
+// var_io_devs.h
+//
+// Variant specific registers
+//
+//===========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2011, 2013 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//===========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/var_io_devs.h
+// Date: 2014-03-28
+// Purpose: Vybrid variant IO provided to various device drivers
+// Description:
+// Usage: #include <cyg/hal/var_io.h> //var_io.h includes this file
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================
+
+
+//=============================================================================
+// DEVS:
+// Following macros may be, and usually are borrowed by some device drivers.
+
+// Peripheral clock [Hz];
+__externC cyg_uint32 hal_get_peripheral_clock(void);
+
+//-----------------------------------------------------------------------------
+// Freescale UART
+// Borrow some HAL resources to Freescale UART driver
+// UART macros are used by both:
+// src/hal_diag.c
+// devs/serial/<version>/src/ser_freescale_uart.c
+
+#define CYGADDR_IO_SERIAL_FREESCALE_UART0_BASE 0x40027000
+#define CYGADDR_IO_SERIAL_FREESCALE_UART1_BASE 0x40028000
+#define CYGADDR_IO_SERIAL_FREESCALE_UART2_BASE 0x40029000
+#define CYGADDR_IO_SERIAL_FREESCALE_UART3_BASE 0x4002A000
+#define CYGADDR_IO_SERIAL_FREESCALE_UART4_BASE 0x400A9000
+#define CYGADDR_IO_SERIAL_FREESCALE_UART5_BASE 0x400AA000
+
+// UART Clock gating
+#define CYGHWR_IO_FREESCALE_UART0_CLOCK CYGHWR_HAL_VYBRID_CCM_CCGR_UART0
+#define CYGHWR_IO_FREESCALE_UART1_CLOCK CYGHWR_HAL_VYBRID_CCM_CCGR_UART1
+#define CYGHWR_IO_FREESCALE_UART2_CLOCK CYGHWR_HAL_VYBRID_CCM_CCGR_UART2
+#define CYGHWR_IO_FREESCALE_UART3_CLOCK CYGHWR_HAL_VYBRID_CCM_CCGR_UART3
+#define CYGHWR_IO_FREESCALE_UART4_CLOCK CYGHWR_HAL_VYBRID_CCM_CCGR_UART4
+#define CYGHWR_IO_FREESCALE_UART5_CLOCK CYGHWR_HAL_VYBRID_CCM_CCGR_UART5
+
+
+// UART PIN configuration
+// Note: May be overriden by plf_io.h
+
+#define CYGHWR_HAL_VYBRID_PORT_PIN_NONE CYGHWR_HAL_VYBRID_PIN_NONE
+
+#ifndef CYGHWR_IO_FREESCALE_UART0_PIN_RX
+# define CYGHWR_IO_FREESCALE_UART0_PIN_RX CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART0_PIN_TX CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART0_PIN_RTS CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART0_PIN_CTS CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+#endif
+
+#ifndef CYGHWR_IO_FREESCALE_UART1_PIN_RX
+# define CYGHWR_IO_FREESCALE_UART1_PIN_RX CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART1_PIN_TX CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART1_PIN_RTS CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART1_PIN_CTS CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+#endif
+
+#ifndef CYGHWR_IO_FREESCALE_UART2_PIN_RX
+# define CYGHWR_IO_FREESCALE_UART2_PIN_RX CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART2_PIN_TX CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART2_PIN_RTS CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART2_PIN_CTS CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+#endif
+
+#ifndef CYGHWR_IO_FREESCALE_UART3_PIN_RX
+# define CYGHWR_IO_FREESCALE_UART3_PIN_RX CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART3_PIN_TX CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART3_PIN_RTS CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART3_PIN_CTS CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+#endif
+
+#ifndef CYGHWR_IO_FREESCALE_UART4_PIN_RX
+# define CYGHWR_IO_FREESCALE_UART4_PIN_RX CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART4_PIN_TX CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART4_PIN_RTS CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART4_PIN_CTS CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+#endif
+
+#ifndef CYGHWR_IO_FREESCALE_UART5_PIN_RX
+# define CYGHWR_IO_FREESCALE_UART5_PIN_RX CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART5_PIN_TX CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART5_PIN_RTS CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART5_PIN_CTS CYGHWR_HAL_VYBRID_PORT_PIN_NONE
+#endif
+
+// Lend some HAL dependent functions to the UART serial device driver
+
+#ifndef __ASSEMBLER__
+
+# define CYGHWR_IO_FREESCALE_UART_BAUD_SET(__uart_p, _baud_) \
+ hal_freescale_uart_setbaud(__uart_p, _baud_)
+
+# define CYGHWR_IO_FREESCALE_UART_PIN(__pin) \
+ hal_set_pin_function(__pin)
+
+
+// Set baud rate
+__externC void hal_freescale_uart_setbaud( CYG_ADDRESS uart, cyg_uint32 baud );
+
+#endif
+//----------------------------------------------------------------------------
+// eDMA
+// Lend some eDMA macros to device driver that use DMA
+
+// Base address
+#define CYGHWR_HAL_FREESCALE_EDMA0_P ((cyghwr_hal_freescale_edma_t *)0x40008000)
+// DMAMUX base addresses
+#define CYGHWR_HAL_FREESCALE_DMAMUX0_P ((cyghwr_hal_freescale_dmamux_t *) 0x40021000)
+#define CYGHWR_HAL_FREESCALE_DMAMUX1_P ((cyghwr_hal_freescale_dmamux_t *) 0x40022000)
+
+
+#define CYGHWR_IO_FREESCALE_EDMA0_P CYGHWR_HAL_FREESCALE_EDMA0_P
+#define CYGHWR_IO_FREESCALE_DMAMUX0_P CYGHWR_HAL_FREESCALE_DMAMUX0_P
+#define CYGHWR_IO_FREESCALE_DMAMUX1_P CYGHWR_HAL_FREESCALE_DMAMUX1_P
+
+//Clock distribution
+#define CYGHWR_IO_CLOCK_ENABLE(__ccgr) hal_clock_enable(__ccgr)
+
+
+#define CYGHWR_IO_FREESCALE_EDMA0_CLK CYGHWR_HAL_KINETIS_SIM_SCGC_DMA
+#define CYGHWR_IO_FREESCALE_DMAMUX0_CLK CYGHWR_HAL_KINETIS_SIM_SCGC_DMAMUX0
+#define CYGHWR_IO_FREESCALE_DMAMUX0_CLK CYGHWR_HAL_KINETIS_SIM_SCGC_DMAMUX0
+#define CYGHWR_IO_FREESCALE_DMAMUX1_CLK CYGHWR_HAL_KINETIS_SIM_SCGC_DMAMUX1
+//-----------------------------------------------------------------------------
+// end of var_io_devs.h
+#endif // CYGONCE_HAL_VAR_IO_DEVS_H
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_gpio.h b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_gpio.h
new file mode 100644
index 0000000..b5e26bd
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_gpio.h
@@ -0,0 +1,125 @@
+#ifndef CYGONCE_HAL_VAR_IO_GPIO_H
+#define CYGONCE_HAL_VAR_IO_GPIO_H
+//===========================================================================
+//
+// var_io_gpio.h
+//
+// Vybrid GPIO
+//
+//===========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//===========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/var_io_devs.h
+// Date: 2014-03-28
+// Purpose: Vybrid variant specific registers
+// Description:
+// Usage: #include <cyg/hal/var_io.h> // var_io.h includes this file
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================
+
+//-----------------------------------------------------------------------------
+// VYBRID section for GPIO handling per pin operations are covered
+// as in VF61GS10 control of subsequent pins from ports e.g A,B,C is distributed between multiple registers
+//-----------------------------------------------------------------------------
+
+// the complete maps of available pads arranged with ascending adresses of
+// corresponding IOMUX registers
+typedef enum vf61_rgpio_t{
+PTA6, PTA8, PTA9, PTA10,PTA11,PTA12,PTA16,PTA17,PTA18,PTA19,PTA20,
+PTA21,PTA22,PTA23,PTA24,PTA25,PTA26,PTA27,PTA28,PTA29,PTA30,PTA31,
+PTB0, PTB1, PTB2, PTB3, PTB4, PTB5, PTB6, PTB7, PTB8, PTB9, PTB10,
+PTB11,PTB12,PTB13,PTB14,PTB15,PTB16,PTB17,PTB18,PTB19,PTB20,PTB21,
+PTB22,PTC0, PTC1, PTC2, PTC3, PTC4, PTC5, PTC6, PTC7, PTC8, PTC9,
+PTC10,PTC11,PTC12,PTC13,PTC14,PTC15,PTC16,PTC17,PTD31,PTD30,PTD29,
+PTD28,PTD27,PTD26,PTD25,PTD24,PTD23,PTD22,PTD21,PTD20,PTD19,PTD18,
+PTD17,PTD16,PTD0, PTD1, PTD2, PTD3, PTD4, PTD5, PTD6, PTD7, PTD8,
+PTD9, PTD10,PTD11,PTD12,PTD13,PTB23,PTB24,PTB25,PTB26,PTB27,PTB28,
+PTC26,PTC27,PTC28,PTC29,PTC30,PTC31,PTE0, PTE1, PTE2, PTE3, PTE4,
+PTE5, PTE6, PTE7, PTE8, PTE9, PTE10,PTE11,PTE12,PTE13,PTE14,PTE15,
+PTE16,PTE17,PTE18,PTE19,PTE20,PTE21,PTE22,PTE23,PTE24,PTE25,PTE26,
+PTE27,PTE28,PTA7,NONE
+} vf61_rgpio;
+
+
+#define CYGHWR_HAL_VYBRID_RGPIO_BASE 0x40048000 //base for IOMUXC
+#define CYGHWR_HAL_VYBRID_GPIO_BASE 0x400ff000 //base for GPIO ports
+
+// GPIO pin control registers offsets
+#define CYGHWR_HAL_VYBRID_GPIO_PDOR 0x00
+#define CYGHWR_HAL_VYBRID_GPIO_PSOR 0x04
+#define CYGHWR_HAL_VYBRID_GPIO_PCOR 0x08
+#define CYGHWR_HAL_VYBRID_GPIO_PTOR 0x0c
+#define CYGHWR_HAL_VYBRID_GPIO_PDIR 0x10
+
+
+// gets port numer (0,1,2,3) from pin name
+#define CYGHWR_HAL_VYBRID_GET_PORT(__pin) (vf61_rgpio)__pin >> 5
+
+// gets GPIO address from pin name
+#define CYGHWR_HAL_VYBRID_GET_GPIO(__pin) (CYGHWR_HAL_VYBRID_GPIO_BASE + 0x40*((vf61_rgpio)__pin >> 5))
+
+// gets bit location from pin name
+#define CYGHWR_HAL_VYBRID_GET_PIN_LOC(__pin) (__pin-32*(__pin>>5))
+
+// gets IOMUXC address from pin name
+#define CYGHWR_HAL_VYBRID_GET_IOMUXC(__pin) CYGHWR_HAL_VYBRID_RGPIO_BASE+(__pin<<2)
+
+// get pin status based onto pin name (returns non zero if pin is '1')
+#define CYGHWR_HAL_VYBRID_GPIO_GET_PIN(__pin) \
+ (*((volatile cyg_uint32 *)(CYGHWR_HAL_VYBRID_GET_GPIO(__pin) + CYGHWR_HAL_VYBRID_GPIO_PDIR)) & (1 << CYGHWR_HAL_VYBRID_GET_PIN_LOC(__pin)))
+
+// set pin defined by name
+#define CYGHWR_HAL_VYBRID_GPIO_SET_PIN(__pin) \
+ HAL_WRITE_UINT32(CYGHWR_HAL_VYBRID_GET_GPIO(__pin) + CYGHWR_HAL_VYBRID_GPIO_PSOR, (1 << (CYGHWR_HAL_VYBRID_GET_PIN_LOC(__pin))))
+
+// clear pin defined by name
+#define CYGHWR_HAL_VYBRID_GPIO_CLEAR_PIN(__pin) \
+ HAL_WRITE_UINT32(CYGHWR_HAL_VYBRID_GET_GPIO(__pin) + CYGHWR_HAL_VYBRID_GPIO_PCOR, (1 << (CYGHWR_HAL_VYBRID_GET_PIN_LOC(__pin))))
+
+// toggle pin defined by name
+#define CYGHWR_HAL_VYBRID_GPIO_TOGGLE_PIN(__pin) \
+ HAL_WRITE_UINT32(CYGHWR_HAL_VYBRID_GET_GPIO(__pin) + CYGHWR_HAL_VYBRID_GPIO_PTOR, (1 << (CYGHWR_HAL_VYBRID_GET_PIN_LOC(__pin))))
+
+// setup pin definition (mux, direction and so on_
+#define CYGHWR_HAL_VYBRID_PIN_SET_FUNCTION(__pin,__settings)\
+ HAL_WRITE_UINT32(CYGHWR_HAL_VYBRID_GET_IOMUXC(__pin), __settings)
+
+//
+//-----------------------------------------------------------------------------
+// end of var_io_gpio.h
+#endif // CYGONCE_HAL_VAR_IO_GPIO_H
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_lmem.h b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_lmem.h
new file mode 100644
index 0000000..0f8f2d4
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/var_io_lmem.h
@@ -0,0 +1,254 @@
+#ifndef CYGONCE_HAL_VAR_IO_LMEM_H
+#define CYGONCE_HAL_VAR_IO_LMEM_H
+//===========================================================================
+//
+// var_io_lmem.h
+//
+// Vybrid Local memory controller specific registers
+//
+//===========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2012 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//===========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/var_io_lmem.h
+// Date: 2014-03-28
+// Purpose: Vybrid variant specific registers
+// Description:
+// Usage: #include <cyg/hal/var_io_lmem.h> // var_io.h includes this file
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================
+
+//----------------------------------------------------------------------------
+// LMEM - Local memory controller
+
+typedef volatile struct cyghwr_hal_vybrid_lmem_s {
+ cyg_uint32 ccr; // PC bus Cache control register
+ cyg_uint32 clcr; // PC bus Cache line control register
+ void *csar; // PC bus Cache search address register
+ cyg_uint32 cvr; // PC bus Cache read/write value register
+} cyghwr_hal_vybrid_lmem_t;
+
+#define CYGHWR_HAL_VYBRID_LMEM_PC_P ((cyghwr_hal_vybrid_lmem_t *) 0xE0082000)
+#define CYGHWR_HAL_VYBRID_LMEM_PS_P ((cyghwr_hal_vybrid_lmem_t *) 0xE0082800)
+
+// CCR Bit Fields
+#define CYGHWR_HAL_VYBRID_LMEM_CCR_ENCACHE_M 0x00000001
+#define CYGHWR_HAL_VYBRID_LMEM_CCR_ENWRBUF_M 0x00000002
+#define CYGHWR_HAL_VYBRID_LMEM_CCR_PCCR2 0x00000004
+#define CYGHWR_HAL_VYBRID_LMEM_CCR_PCCR3 0x00000008
+#define CYGHWR_HAL_VYBRID_LMEM_CCR_INVW0_M 0x01000000
+#define CYGHWR_HAL_VYBRID_LMEM_CCR_PUSHW0_M 0x02000000
+#define CYGHWR_HAL_VYBRID_LMEM_CCR_INVW1_M 0x04000000
+#define CYGHWR_HAL_VYBRID_LMEM_CCR_PUSHW1_M 0x08000000
+#define CYGHWR_HAL_VYBRID_LMEM_CCR_GO_M 0x80000000
+
+//CLCR Bit Fields
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LGO_M 0x00000001
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_CACHEADDR_M 0x00000FFC
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_CACHEADDR_S 2
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_CACHEADDR(_ca_) ((_ca_) << CYGHWR_HAL_VYBRID_LMEM_CLCR_CACHEADDR_S)
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_WSEL_M 0x00004000
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_TDSEL_M 0x00010000
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LCIVB_M 0x00100000
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LCIMB_M 0x00200000
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LCWAY_M 0x00400000
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD_M 0x03000000
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD_S 24
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD(_cmd_) ((_cmd_) << CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD_S)
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD_SRCH 0
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD_INVAL 1
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD_PUSH 2
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD_CLR 3
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LADSEL_M 0x04000000
+#define CYGHWR_HAL_VYBRID_LMEM_CLCR_LACC_M 0x08000000
+
+// CSAR Bit Fields
+#define CYGHWR_HAL_VYBRID_LMEM_CSAR_LGO_M 0x00000001
+#define CYGHWR_HAL_VYBRID_LMEM_CSAR_PHYADDR_M 0xFFFFFFFC
+#define CYGHWR_HAL_VYBRID_LMEM_CSAR_PHYADDR_S 2
+#define CYGHWR_HAL_VYBRID_LMEM_CSAR_PHYADDR(_adr_) ((_adr_) << CYGHWR_HAL_VYBRID_LMEM_CSAR_PHYADDR_S)
+
+// CCVR Bit Fields
+#define CYGHWR_HAL_VYBRID_LMEM_CCVR_DATA_M 0xFFFFFFFF
+
+#define HAL_CORTEXM_VYBRID_CACHE_PC_ENABLE() \
+ hal_cortexm_vybrid_cache_enable(CYGHWR_HAL_VYBRID_LMEM_PC_P)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PS_ENABLE() \
+ hal_cortexm_vybrid_cache_enable(CYGHWR_HAL_VYBRID_LMEM_PS_P)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PC_DISABLE() \
+ hal_cortexm_vybrid_cache_disable(CYGHWR_HAL_VYBRID_LMEM_PC_P)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PS_DISABLE() \
+ hal_cortexm_vybrid_cache_disable(CYGHWR_HAL_VYBRID_LMEM_PS_P)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PC_INVALL() \
+ hal_cortexm_vybrid_cache_inval(CYGHWR_HAL_VYBRID_LMEM_PC_P)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PS_INVALL() \
+ hal_cortexm_vybrid_cache_inval(CYGHWR_HAL_VYBRID_LMEM_PS_P)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PC_SYNC() \
+ hal_cortexm_vybrid_cache_sync(CYGHWR_HAL_VYBRID_LMEM_PC_P)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PS_SYNC() \
+ hal_cortexm_vybrid_cache_sync(CYGHWR_HAL_VYBRID_LMEM_PS_P)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PC_CLEAR() \
+ hal_cortexm_vybrid_cache_clear(CYGHWR_HAL_VYBRID_LMEM_PC_P)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PS_CLEAR() \
+ hal_cortexm_vybrid_cache_clear(CYGHWR_HAL_VYBRID_LMEM_PS_P)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PC_IS_ENABLED() \
+ hal_cortexm_vybrid_cache_is_enabled(CYGHWR_HAL_VYBRID_LMEM_PC_P)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PS_IS_ENABLED() \
+ hal_cortexm_vybrid_cache_is_enabled(CYGHWR_HAL_VYBRID_LMEM_PS_P)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PS_SRCH(_base, _size_) \
+ hal_cortexm_vybrid_cache_lines(CYGHWR_HAL_VYBRID_LMEM_PS_P, _base, _size_, \
+ CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD_SRCH)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PS_INVALIDATE(_base, _size_) \
+ hal_cortexm_vybrid_cache_lines(CYGHWR_HAL_VYBRID_LMEM_PS_P, _base, _size_, \
+ CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD_INVAL)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PS_PUSH(_base, _size_) \
+ hal_cortexm_vybrid_cache_lines(CYGHWR_HAL_VYBRID_LMEM_PS_P, _base, _size_, \
+ CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD_PUSH)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PS_CLR(_base, _size_) \
+ hal_cortexm_vybrid_cache_lines(CYGHWR_HAL_VYBRID_LMEM_PS_P, _base, _size_, \
+ CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD_CLR)
+
+#define HAL_CORTEXM_VYBRID_CACHE_PC_INVALIDATE(_base, _size_) \
+ hal_cortexm_vybrid_cache_lines(CYGHWR_HAL_VYBRID_LMEM_PC_P, _base, _size_, \
+ CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD_INVAL)
+
+#define CYGHWR_HAL_VYBRID_CACHE_WAIT(_lmem_p) \
+ while((_lmem_p)->ccr & CYGHWR_HAL_VYBRID_LMEM_CCR_GO_M)
+
+CYGBLD_FORCE_INLINE void
+hal_cortexm_vybrid_cache_enable(cyghwr_hal_vybrid_lmem_t* lmem_p)
+{
+ lmem_p->ccr = ( CYGHWR_HAL_VYBRID_LMEM_CCR_GO_M |
+ CYGHWR_HAL_VYBRID_LMEM_CCR_INVW0_M |
+ CYGHWR_HAL_VYBRID_LMEM_CCR_INVW1_M |
+ CYGHWR_HAL_VYBRID_LMEM_CCR_ENCACHE_M |
+ CYGHWR_HAL_VYBRID_LMEM_CCR_ENWRBUF_M
+ );
+ CYGHWR_HAL_VYBRID_CACHE_WAIT(lmem_p);
+}
+
+CYGBLD_FORCE_INLINE void
+hal_cortexm_vybrid_cache_disable(cyghwr_hal_vybrid_lmem_t* lmem_p)
+{
+ lmem_p->ccr = 0;
+}
+
+CYGBLD_FORCE_INLINE void
+hal_cortexm_vybrid_cache_inval(cyghwr_hal_vybrid_lmem_t* lmem_p)
+{
+ lmem_p->ccr |= ( CYGHWR_HAL_VYBRID_LMEM_CCR_GO_M |
+ CYGHWR_HAL_VYBRID_LMEM_CCR_INVW0_M |
+ CYGHWR_HAL_VYBRID_LMEM_CCR_INVW1_M
+ );
+ CYGHWR_HAL_VYBRID_CACHE_WAIT(lmem_p);
+}
+
+CYGBLD_FORCE_INLINE void
+hal_cortexm_vybrid_cache_store(cyghwr_hal_vybrid_lmem_t* lmem_p)
+{
+ lmem_p->ccr |= ( CYGHWR_HAL_VYBRID_LMEM_CCR_GO_M |
+ CYGHWR_HAL_VYBRID_LMEM_CCR_PUSHW0_M |
+ CYGHWR_HAL_VYBRID_LMEM_CCR_PUSHW1_M
+ );
+ CYGHWR_HAL_VYBRID_CACHE_WAIT(lmem_p);
+}
+
+CYGBLD_FORCE_INLINE void
+hal_cortexm_vybrid_cache_clear(cyghwr_hal_vybrid_lmem_t* lmem_p)
+{
+ lmem_p->ccr |= ( CYGHWR_HAL_VYBRID_LMEM_CCR_GO_M |
+ CYGHWR_HAL_VYBRID_LMEM_CCR_INVW0_M |
+ CYGHWR_HAL_VYBRID_LMEM_CCR_INVW1_M |
+ CYGHWR_HAL_VYBRID_LMEM_CCR_PUSHW0_M |
+ CYGHWR_HAL_VYBRID_LMEM_CCR_PUSHW1_M
+ );
+ CYGHWR_HAL_VYBRID_CACHE_WAIT(lmem_p);
+}
+
+CYGBLD_FORCE_INLINE void
+hal_cortexm_vybrid_cache_sync(cyghwr_hal_vybrid_lmem_t* lmem_p)
+{
+ hal_cortexm_vybrid_cache_store(lmem_p);
+ hal_cortexm_vybrid_cache_clear(lmem_p);
+}
+
+CYGBLD_FORCE_INLINE bool
+hal_cortexm_vybrid_cache_is_enabled(cyghwr_hal_vybrid_lmem_t* lmem_p)
+{
+ return lmem_p->ccr & CYGHWR_HAL_VYBRID_LMEM_CCR_ENCACHE_M;
+}
+
+
+CYGBLD_FORCE_INLINE void
+hal_cortexm_vybrid_cache_lines(cyghwr_hal_vybrid_lmem_t* lmem_p,
+ void* addr_p, cyg_uint32 size,
+ const cyg_uint32 oper)
+{
+ cyg_uint32 line_k;
+ line_k = (((cyg_uint32)addr_p & (HAL_DCACHE_LINE_SIZE-1)) + size) / HAL_DCACHE_LINE_SIZE + 1;
+
+ lmem_p->clcr = CYGHWR_HAL_VYBRID_LMEM_CLCR_LADSEL_M |
+ CYGHWR_HAL_VYBRID_LMEM_CLCR_TDSEL_M |
+ CYGHWR_HAL_VYBRID_LMEM_CLCR_LCMD(oper);
+
+ addr_p = (void*)((((cyg_uint32) addr_p) & 0xfffffff0) |
+ CYGHWR_HAL_VYBRID_LMEM_CLCR_LGO_M);
+ do {
+ lmem_p->csar = addr_p;
+ while(lmem_p->clcr & CYGHWR_HAL_VYBRID_LMEM_CLCR_LGO_M);
+ addr_p = (void*)(((cyg_uint32)addr_p) + HAL_DCACHE_LINE_SIZE);
+ } while(--line_k);
+}
+
+//-----------------------------------------------------------------------------
+// end of var_io_lmem.h
+#endif // CYGONCE_HAL_VAR_IO_LMEM_H
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/include/variant.inc b/ecos/packages/hal/cortexm/vybrid/var/current/include/variant.inc
new file mode 100644
index 0000000..c88a975
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/include/variant.inc
@@ -0,0 +1,55 @@
+/*==========================================================================
+//
+// variant.inc
+//
+// Variant specific asm definitions
+//
+//==========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/variant.inc
+// Date: 2014-03-28
+
+// Description:
+//
+//####DESCRIPTIONEND####
+//
+//========================================================================*/
+
+#include <pkgconf/hal_cortexm_vybrid.h>
+
+//==========================================================================
+// EOF variant.inc
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/src/hal_diag.c b/ecos/packages/hal/cortexm/vybrid/var/current/src/hal_diag.c
new file mode 100644
index 0000000..b4a3fd1
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/src/hal_diag.c
@@ -0,0 +1,405 @@
+/*=============================================================================
+//
+// hal_diag.c
+//
+// HAL diagnostic output code
+//
+//=============================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2011, 2013 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/src/hal_diag.c
+// Date: 2014-03-28
+// Purpose: HAL diagnostic input/output
+// Description: Implementations of HAL diagnostic input/output support.
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================
+ */
+
+#include <pkgconf/hal.h>
+#include CYGBLD_HAL_PLATFORM_H
+
+#include <cyg/infra/cyg_type.h> // base types
+
+#include <cyg/hal/hal_arch.h> // SAVE/RESTORE GP macros
+#include <cyg/hal/hal_io.h> // IO macros
+#include <cyg/hal/hal_if.h> // interface API
+#include <cyg/hal/hal_intr.h> // HAL_ENABLE/MASK/UNMASK_INTERRUPTS
+#include <cyg/hal/hal_misc.h> // Helper functions
+#include <cyg/hal/drv_api.h> // CYG_ISR_HANDLED
+#include <cyg/hal/hal_diag.h>
+
+#include <cyg/hal/var_io.h> //
+#include <cyg/io/ser_freescale_uart.h> // UART registers
+
+//-----------------------------------------------------------------------------
+
+typedef struct {
+ cyg_uint32 uart;
+ CYG_ADDRESS base;
+ cyg_int32 msec_timeout;
+ cyg_int32 isr_vector;
+ cyg_uint32 rx_pin;
+ cyg_uint32 tx_pin;
+ cyg_uint32 clock_gate;
+ cyg_int32 baud_rate;
+ cyg_int32 irq_state;
+} channel_data_t;
+
+channel_data_t plf_ser_channels[] = {
+#ifdef CYGINT_HAL_FREESCALE_UART0
+ { 0, CYGADDR_IO_SERIAL_FREESCALE_UART0_BASE, 1000,
+ CYGNUM_HAL_INTERRUPT_UART0_RX_TX,
+ CYGHWR_HAL_FREESCALE_UART0_PIN_RX, CYGHWR_HAL_FREESCALE_UART0_PIN_TX,
+ CYGHWR_IO_FREESCALE_UART0_CLOCK, CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD },
+#endif
+#ifdef CYGINT_HAL_FREESCALE_UART1
+ { 1, CYGADDR_IO_SERIAL_FREESCALE_UART1_BASE, 1000,
+ CYGNUM_HAL_INTERRUPT_UART1_RX_TX,
+ CYGHWR_HAL_FREESCALE_UART1_PIN_RX, CYGHWR_HAL_FREESCALE_UART1_PIN_TX,
+ CYGHWR_IO_FREESCALE_UART1_CLOCK, CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD },
+#endif
+#ifdef CYGINT_HAL_FREESCALE_UART2
+ { 2, CYGADDR_IO_SERIAL_FREESCALE_UART2_BASE, 1000,
+ CYGNUM_HAL_INTERRUPT_UART2_RX_TX,
+ CYGHWR_HAL_FREESCALE_UART2_PIN_RX, CYGHWR_HAL_FREESCALE_UART2_PIN_TX,
+ CYGHWR_IO_FREESCALE_UART2_CLOCK, CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD },
+#endif
+#ifdef CYGINT_HAL_FREESCALE_UART3
+ { 3, CYGADDR_IO_SERIAL_FREESCALE_UART3_BASE, 1000,
+ CYGNUM_HAL_INTERRUPT_UART3_RX_TX,
+ CYGHWR_HAL_FREESCALE_UART3_PIN_RX, CYGHWR_HAL_FREESCALE_UART3_PIN_TX,
+ CYGHWR_IO_FREESCALE_UART3_CLOCK, CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD },
+#endif
+#ifdef CYGINT_HAL_FREESCALE_UART4
+ { 4, CYGADDR_IO_SERIAL_FREESCALE_UART4_BASE, 1000,
+ CYGNUM_HAL_INTERRUPT_UART4_RX_TX,
+ CYGHWR_HAL_FREESCALE_UART4_PIN_RX, CYGHWR_HAL_FREESCALE_UART4_PIN_TX,
+ CYGHWR_IO_FREESCALE_UART4_CLOCK, CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD },
+#endif
+#ifdef CYGINT_HAL_FREESCALE_UART5
+ { 5, CYGADDR_IO_SERIAL_FREESCALE_UART5_BASE, 1000,
+ CYGNUM_HAL_INTERRUPT_UART5_RX_TX,
+ CYGHWR_HAL_FREESCALE_UART5_PIN_RX, CYGHWR_HAL_FREESCALE_UART5_PIN_TX,
+ CYGHWR_IO_FREESCALE_UART5_CLOCK, CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD }
+#endif
+};
+
+//-----------------------------------------------------------------------------
+
+void
+cyg_hal_plf_serial_putc(void *__ch_data, char c);
+
+static void
+cyg_hal_plf_serial_init_channel(void* __ch_data)
+{
+ channel_data_t* chan = (channel_data_t*)__ch_data;
+ CYG_ADDRESS uart_p = chan->base;
+
+ // Bring clock to the device
+ CYGHWR_IO_CLOCK_ENABLE(chan->clock_gate);
+
+ // Configure PORT pins
+ hal_set_pin_function(chan->rx_pin);
+ hal_set_pin_function(chan->tx_pin);
+
+ // 8-1-no parity.
+ HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C1, 0);
+
+ CYGHWR_IO_FREESCALE_UART_BAUD_SET(uart_p, chan->baud_rate);
+
+ // Enable RX and TX
+ HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C2,
+ (CYGHWR_DEV_FREESCALE_UART_C2_TE |
+ CYGHWR_DEV_FREESCALE_UART_C2_RE));
+}
+
+void
+cyg_hal_plf_serial_putc(void* __ch_data, char ch_out)
+{
+ channel_data_t* chan = (channel_data_t*)__ch_data;
+ CYG_ADDRESS uart_p = (CYG_ADDRESS) chan->base;
+ cyg_uint32 uart_s1;
+
+ CYGARC_HAL_SAVE_GP();
+
+ do {
+ HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_S1, uart_s1);
+ } while (!(uart_s1 & CYGHWR_DEV_FREESCALE_UART_S1_TDRE));
+
+ HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_D, ch_out);
+
+ CYGARC_HAL_RESTORE_GP();
+}
+
+static cyg_bool
+cyg_hal_plf_serial_getc_nonblock(void* __ch_data, cyg_uint8* p_ch_in)
+{
+ channel_data_t* chan = (channel_data_t*)__ch_data;
+ CYG_ADDRESS uart_p = (CYG_ADDRESS) chan->base;
+ cyg_uint8 uart_s1;
+ cyg_uint8 ch_in;
+
+ HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_S1, uart_s1);
+ if (!(uart_s1 & CYGHWR_DEV_FREESCALE_UART_S1_RDRF))
+ return false;
+
+ HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_D, ch_in);
+ *p_ch_in = ch_in;
+
+ return true;
+}
+
+cyg_uint8
+cyg_hal_plf_serial_getc(void* __ch_data)
+{
+ cyg_uint8 ch;
+ CYGARC_HAL_SAVE_GP();
+
+ while(!cyg_hal_plf_serial_getc_nonblock(__ch_data, &ch));
+
+ CYGARC_HAL_RESTORE_GP();
+ return ch;
+}
+
+
+//=============================================================================
+// Virtual vector HAL diagnostics
+
+#if defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG)
+
+static void
+cyg_hal_plf_serial_write(void* __ch_data, const cyg_uint8* __buf,
+ cyg_uint32 __len)
+{
+ CYGARC_HAL_SAVE_GP();
+
+ while(__len-- > 0)
+ cyg_hal_plf_serial_putc(__ch_data, *__buf++);
+
+ CYGARC_HAL_RESTORE_GP();
+}
+
+static void
+cyg_hal_plf_serial_read(void* __ch_data, cyg_uint8* __buf, cyg_uint32 __len)
+{
+ CYGARC_HAL_SAVE_GP();
+
+ while(__len-- > 0)
+ *__buf++ = cyg_hal_plf_serial_getc(__ch_data);
+
+ CYGARC_HAL_RESTORE_GP();
+}
+
+cyg_bool
+cyg_hal_plf_serial_getc_timeout(void* __ch_data, cyg_uint8* p_ch_in)
+{
+ int delay_count;
+ cyg_bool res;
+ CYGARC_HAL_SAVE_GP();
+
+ // delay in .1 ms steps
+ delay_count = ((channel_data_t*)__ch_data)->msec_timeout * 10;
+
+ for(;;) {
+ res = cyg_hal_plf_serial_getc_nonblock(__ch_data, p_ch_in);
+ if (res || 0 == delay_count--)
+ break;
+
+ CYGACC_CALL_IF_DELAY_US(100);
+ }
+
+ CYGARC_HAL_RESTORE_GP();
+ return res;
+}
+
+static int
+cyg_hal_plf_serial_control(void *__ch_data, __comm_control_cmd_t __func, ...)
+{
+ channel_data_t* chan = (channel_data_t*)__ch_data;
+ CYG_ADDRESS uart_p = ((channel_data_t*)__ch_data)->base;
+ cyg_uint8 ser_port_reg;
+ int ret = 0;
+ va_list ap;
+
+ CYGARC_HAL_SAVE_GP();
+ va_start(ap, __func);
+
+ switch (__func) {
+ case __COMMCTL_IRQ_ENABLE:
+ chan->irq_state = 1;
+ HAL_INTERRUPT_ACKNOWLEDGE(chan->isr_vector);
+ HAL_INTERRUPT_UNMASK(chan->isr_vector);
+
+ HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C2, ser_port_reg);
+ ser_port_reg |= CYGHWR_DEV_FREESCALE_UART_C2_RIE;
+ HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C2, ser_port_reg);
+
+ break;
+ case __COMMCTL_IRQ_DISABLE:
+ ret = chan->irq_state;
+ chan->irq_state = 0;
+ HAL_INTERRUPT_MASK(chan->isr_vector);
+
+ HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C2, ser_port_reg);
+ ser_port_reg &= ~(cyg_uint8)CYGHWR_DEV_FREESCALE_UART_C2_RIE;
+ HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C2, ser_port_reg);
+ break;
+ case __COMMCTL_DBG_ISR_VECTOR:
+ ret = chan->isr_vector;
+ break;
+ case __COMMCTL_SET_TIMEOUT:
+ ret = chan->msec_timeout;
+ chan->msec_timeout = va_arg(ap, cyg_uint32);
+ case __COMMCTL_GETBAUD:
+ ret = chan->baud_rate;
+ break;
+ case __COMMCTL_SETBAUD:
+ chan->baud_rate = va_arg(ap, cyg_int32);
+ // Should we verify this value here?
+ cyg_hal_plf_serial_init_channel(chan);
+ ret = 0;
+ break;
+ default:
+ break;
+ }
+
+ va_end(ap);
+ CYGARC_HAL_RESTORE_GP();
+ return ret;
+}
+
+static int
+cyg_hal_plf_serial_isr(void *__ch_data, int* __ctrlc,
+ CYG_ADDRWORD __vector, CYG_ADDRWORD __data)
+{
+
+ channel_data_t* chan = (channel_data_t*)__ch_data;
+ CYG_ADDRESS uart_p = (CYG_ADDRESS) chan->base;
+ cyg_uint8 uart_s1;
+ int res = 0;
+ cyg_uint8 ch_in;
+ CYGARC_HAL_SAVE_GP();
+
+ *__ctrlc = 0;
+
+ HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_S1, uart_s1);
+ if (uart_s1 & CYGHWR_DEV_FREESCALE_UART_S1_RDRF) {
+ HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_D, ch_in);
+ if( cyg_hal_is_break( (char *) &ch_in , 1 ) )
+ *__ctrlc = 1;
+
+ res = CYG_ISR_HANDLED;
+ }
+
+ HAL_INTERRUPT_ACKNOWLEDGE(chan->isr_vector);
+
+ CYGARC_HAL_RESTORE_GP();
+ return res;
+}
+
+static void
+cyg_hal_plf_serial_init(void)
+{
+ hal_virtual_comm_table_t* comm;
+ int cur;
+ int chan_i;
+
+ cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);
+
+ // Init channels
+ for(chan_i=0; chan_i<CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS; chan_i++) {
+ cyg_hal_plf_serial_init_channel(&plf_ser_channels[chan_i]);
+ // Setup procs in the vector table
+ CYGACC_CALL_IF_SET_CONSOLE_COMM(chan_i);
+ comm = CYGACC_CALL_IF_CONSOLE_PROCS();
+
+ CYGACC_COMM_IF_CH_DATA_SET(*comm, &plf_ser_channels[chan_i]);
+ CYGACC_COMM_IF_WRITE_SET(*comm, cyg_hal_plf_serial_write);
+ CYGACC_COMM_IF_READ_SET(*comm, cyg_hal_plf_serial_read);
+ CYGACC_COMM_IF_PUTC_SET(*comm, cyg_hal_plf_serial_putc);
+ CYGACC_COMM_IF_GETC_SET(*comm, cyg_hal_plf_serial_getc);
+ CYGACC_COMM_IF_CONTROL_SET(*comm, cyg_hal_plf_serial_control);
+ CYGACC_COMM_IF_DBG_ISR_SET(*comm, cyg_hal_plf_serial_isr);
+ CYGACC_COMM_IF_GETC_TIMEOUT_SET(*comm, cyg_hal_plf_serial_getc_timeout);
+ }
+ // Restore original console
+ CYGACC_CALL_IF_SET_CONSOLE_COMM(cur);
+#if (CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD != CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_BAUD)
+ plf_ser_channels[CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL]->baud_rate =
+ CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_BAUD;
+ update_baud_rate( &plf_ser_channels[CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL] );
+#endif
+
+}
+
+void
+cyg_hal_plf_comms_init(void)
+{
+ static int initialized = 0;
+
+ if (initialized)
+ return;
+ initialized = 1;
+ cyg_hal_plf_serial_init();
+}
+
+#else // !defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG)
+//=============================================================================
+// Non-Virtual vector HAL diagnostics
+
+// #if !defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG)
+
+void hal_plf_diag_init(void)
+{
+ cyg_hal_plf_serial_init( &plf_ser_channels[CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL] );
+}
+
+void hal_plf_diag_putc(char c)
+{
+ cyg_hal_plf_serial_putc( &plf_ser_channels[CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL], c);
+}
+
+cyg_uint8 hal_plf_diag_getc(void)
+{
+ return cyg_hal_plf_serial_getc( &plf_ser_channels[CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL] );
+}
+
+#endif // defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG)
+
+//-----------------------------------------------------------------------------
+// End of hal_diag.c
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/src/vybrid_clocking.c b/ecos/packages/hal/cortexm/vybrid/var/current/src/vybrid_clocking.c
new file mode 100644
index 0000000..3aac8ed
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/src/vybrid_clocking.c
@@ -0,0 +1,236 @@
+//==========================================================================
+//
+// vybrid_clocking.c
+//
+// Cortex-M Vybrid HAL functions
+//
+//==========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/kinetis_clocking.h
+// Date: 2014-03-28
+// Description:
+//
+//####DESCRIPTIONEND####
+//
+//========================================================================
+
+#include <pkgconf/hal.h>
+#include <pkgconf/hal_cortexm.h>
+#include <pkgconf/hal_cortexm_vybrid.h>
+#ifdef CYGPKG_KERNEL
+#include <pkgconf/kernel.h>
+#endif
+
+#include <cyg/infra/diag.h>
+#include <cyg/infra/cyg_type.h>
+#include <cyg/infra/cyg_trac.h> // tracing macros
+#include <cyg/infra/cyg_ass.h> // assertion macros
+
+#include <cyg/hal/cortexm_endian.h>
+#include <cyg/hal/hal_arch.h> // HAL header
+#include <cyg/hal/hal_intr.h> // HAL header
+#include <cyg/hal/hal_if.h> // HAL header
+
+#include <cyg/io/ser_freescale_uart.h>
+
+//===========================================================================
+// Forward declarations
+//===========================================================================
+
+cyg_uint32 hal_cortexm_systick_clock;
+cyg_uint32 hal_vybrid_sysclk;
+cyg_uint32 hal_vybrid_busclk;
+
+cyg_uint32 hal_get_cpu_clock(void);
+
+cyg_uint32
+hal_get_cpu_clock(void)
+{
+ cyghwr_hal_vybrid_ccm_t *ccm = CYGHWR_HAL_VYBRID_CCM_P;
+ cyg_uint32 sys_clk_sel;
+ cyg_uint32 pfd_sel, pfd;
+ cyg_uint32 mfi, mfn, mfd;
+ cyg_uint32 freq = 0, arm_clk_div, bus_clk_div;
+
+ sys_clk_sel = (ccm->ccsr & CYGHWR_HAL_VYBRID_CCM_CCSR_SYS_CLK_SEL_M);
+ switch(sys_clk_sel) {
+ case 0: // Fast clock o/p defined by CCM_CCSR[FAST_CLK_SEL]
+ /* 24MHz clock. It might be internal RC or external OSC*/
+ freq = 24000000;
+ break;
+ case 1: // Slow clock o/p defined by CCM_CCSR[SLOW_CLK_SEL]
+ freq = 32000;
+ break;
+ case 2: // PLL2 PFD o/p clock defined by CCM_CCSR[PLL2_PFD_CLK_SEL]
+ pfd_sel = (ccm->ccsr & CYGHWR_HAL_VYBRID_CCM_CCSR_PLL2_PFD_CLK_SEL_M);
+ pfd_sel = (pfd_sel >> CYGHWR_HAL_VYBRID_CCM_CCSR_PLL2_PFD_CLK_SEL_S);
+ if(pfd_sel) {
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL2_NUM, mfn);
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL2_DENOM, mfd);
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL, mfi);
+ // check the value of frequency multiplier
+ mfi &= CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_DIV_SELECT_M;
+ // if CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_DIV_SELECT is set, then mfi is 22
+ mfi = (mfi ? 22 : 20);
+ // calculate the PLL! frequency
+ freq = (24000000 * (mfi + (mfn / mfd)));
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL2_PFD, pfd);
+ pfd = pfd >> (8*(pfd_sel-1));
+ pfd &= 0x3f;
+ //PFDout = PLLput * (18 / PFD_FRAC)
+ freq /= pfd;
+ freq *= 18;
+ }
+ break;
+ // Fall down as the pfd_sel == 0 selects PLL2 main clock
+ case 3: // PLL2 main clock
+ // check if PLL2 is bypassed
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL, mfi);
+ mfi &= CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_BYPASS_M;
+ if (mfi) {
+ freq = 24000000;
+ break;
+ }
+ // get pll2 coefficients
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL2_NUM, mfn);
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL2_DENOM, mfd);
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL, mfi);
+ // check the value of frequency multiplier
+ mfi &= CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_DIV_SELECT_M;
+ // if CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_DIV_SELECT is set, then mfi is 22
+ mfi = (mfi ? 22 : 20);
+ // calculate the PLL! frequency
+ freq = (24000000 * (mfi + (mfn / mfd)));
+ break;
+ case 4: // PLL1 PFD o/p clock defined by CCM_CCSR[PLL1_PFD_CLK_SEL]
+ pfd_sel = (ccm->ccsr & CYGHWR_HAL_VYBRID_CCM_CCSR_PLL1_PFD_CLK_SEL_M);
+ pfd_sel = (pfd_sel >> CYGHWR_HAL_VYBRID_CCM_CCSR_PLL1_PFD_CLK_SEL_S);
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL1_NUM, mfn);
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL1_DENOM, mfd);
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL, mfi);
+ // check the value of frequency multiplier
+ mfi &= CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_DIV_SELECT_M;
+ // if CYGHWR_HAL_VYBRID_ANADIG_PLL1_CTRL_DIV_SELECT is set, then mfi is 22
+ mfi = 22;//(mfi ? 22 : 20); -> uncertain in VRM p. 726 (11.21.26 ANADIG PLL1_PFD definition register (ANADIG_PLL1_PFD))
+ // calculate the PLL1 frequency PLLout = Fref*(MFI + MFN/MFD) where Fref=24MHz
+ freq = (24000000 * (mfi + (mfn / mfd)));
+ if(pfd_sel) {
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL1_PFD, pfd);
+ pfd = pfd >> (8*(pfd_sel-1));
+ pfd &= 0x3f;
+ freq /= pfd;
+ freq *= 18;
+ }
+ //TODO: handle the PLL1 main clk
+ break;
+ case 5: // PLL3 main clock
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL, mfi);
+ mfi &= CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL_BYPASS_M;
+ if (mfi) {
+ freq = 24000000;
+ break;
+ }
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_ANADIG_PLL3_CTRL, mfi);
+ // check the value of frequency multiplier
+ mfi &= CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_DIV_SELECT_M;
+ // if CYGHWR_HAL_VYBRID_ANADIG_PLL2_CTRL_DIV_SELECT is set, then mfi is 22
+ // freq is fixed (MFN and MFD not available) and the only variable is MFI
+ freq = (mfi ? 480000000 : 440000000);
+ break;
+ default: // Other values are not allowed
+ freq = 0;
+ }
+
+ arm_clk_div = ccm->cacrr & CYGHWR_HAL_VYBRID_CCM_CACRR_ARM_CLK_DIV_M;
+ arm_clk_div = (arm_clk_div >> CYGHWR_HAL_VYBRID_CCM_CACRR_ARM_CLK_DIV_S) + 1;
+ bus_clk_div = ccm->cacrr & CYGHWR_HAL_VYBRID_CCM_CACRR_BUS_CLK_DIV_M;
+ bus_clk_div = (bus_clk_div >> CYGHWR_HAL_VYBRID_CCM_CACRR_BUS_CLK_DIV_S) + 1;
+
+ freq /= arm_clk_div; // now we have a CA5 clock
+ freq /= bus_clk_div; // and now we have a CM4 clock
+
+ return freq;
+}
+
+//==========================================================================
+// UART baud rate
+//
+// Set the baud rate divider of a UART based on the requested rate and
+// the current clock settings.
+
+
+void
+hal_freescale_uart_setbaud(cyg_uint32 uart_p, cyg_uint32 baud)
+{
+ cyg_uint32 sbr, brfa;
+ cyg_uint32 regval;
+
+ sbr = hal_vybrid_busclk / (16 * baud); //VYBRID: only this is allowed as all uarts run on BUS Clock
+
+ if(sbr) {
+ HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_BDH, regval);
+ regval &= 0xE0;
+ regval |= sbr >> 8;
+ HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_BDH, regval);
+ HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_BDL, (sbr & 0xFF));
+ brfa = (((32*hal_vybrid_busclk)/(16*baud))-(32*sbr));
+ HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C4, regval);
+ regval &= 0xE0;
+ regval |= brfa & 0x1f;
+ HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C4, regval);
+ }
+}
+
+
+void
+hal_update_clock_var(void)
+{
+ hal_vybrid_sysclk = hal_get_cpu_clock();
+ hal_vybrid_busclk = hal_vybrid_sysclk /
+ 2; //TODO: place option for selecting CCM_CACRR[IPG_CLK_DIV] from CDL
+ hal_cortexm_systick_clock = hal_vybrid_sysclk;
+}
+
+
+cyg_uint32
+hal_get_peripheral_clock(void)
+{
+ return hal_vybrid_busclk;
+}
+
+//==========================================================================
+// EOF vybrid_clocking.c
diff --git a/ecos/packages/hal/cortexm/vybrid/var/current/src/vybrid_misc.c b/ecos/packages/hal/cortexm/vybrid/var/current/src/vybrid_misc.c
new file mode 100644
index 0000000..751b8c0
--- /dev/null
+++ b/ecos/packages/hal/cortexm/vybrid/var/current/src/vybrid_misc.c
@@ -0,0 +1,238 @@
+//==========================================================================
+//
+// vybrid_misc.c
+//
+// Cortex-M Vybrid HAL functions
+//
+//==========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2010, 2013 Free Software Foundation, Inc.
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later
+// version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): Antmicro Ltd <contact@antmicro.com>
+// Based on: {...}/hal/packages/cortexm/kinetis/var/current/include/kinetis_misc.h
+// Date: 2014-03-28
+// Description:
+//
+//####DESCRIPTIONEND####
+//
+//========================================================================
+
+
+#include <pkgconf/hal.h>
+#include <pkgconf/hal_cortexm.h>
+#include <pkgconf/hal_cortexm_vybrid.h>
+#ifdef CYGPKG_KERNEL
+#include <pkgconf/kernel.h>
+#endif
+
+#include <cyg/infra/diag.h>
+#include <cyg/infra/cyg_type.h>
+#include <cyg/infra/cyg_trac.h> // tracing macros
+#include <cyg/infra/cyg_ass.h> // assertion macros
+
+#include <cyg/hal/cortexm_endian.h>
+#include <cyg/hal/hal_arch.h> // HAL header
+#include <cyg/hal/hal_intr.h> // HAL header
+#include <cyg/hal/hal_if.h> // HAL header
+
+#include <cyg/hal/hal_cache.h>
+
+#include <cyg/hal/var_io_gpio.h>
+#include <assert.h>
+
+void sst25xx_freescale_dspi_reg(void);
+
+//==========================================================================
+// Setup variant specific hardware
+//=========================================================================
+
+
+const char vf61_pads[] ={
+// port A
+NONE, NONE, NONE, NONE, NONE, NONE, PTA6, PTA7,
+PTA8, PTA9, PTA10,PTA11,PTA12,NONE, NONE, NONE,
+PTA16,PTA17,PTA18,PTA19,PTA20,PTA21,PTA22,PTA23,
+PTA24,PTA25,PTA26,PTA27,PTA28,PTA29,PTA30,PTA31,
+// port B
+PTB0, PTB1, PTB2, PTB3, PTB4, PTB5, PTB6, PTB7,
+PTB8, PTB9, PTB10,PTB11,PTB12,PTB13,PTB14,PTB15,
+PTB16,PTB17,PTB18,PTB19,PTB20,PTB21,PTB22,PTB23,
+PTB24,PTB25,PTB26,PTB27,PTB28,NONE, NONE, NONE,
+// port C
+PTC0, PTC1, PTC2, PTC3, PTC4, PTC5, PTC6, PTC7,
+PTC8, PTC9, PTC10,PTC11,PTC12,PTC13,PTC14,PTC15,
+PTC16,PTC17,NONE, NONE, NONE, NONE, NONE, NONE,
+NONE, NONE, PTC26,PTC27,PTC28,PTC29,PTC30,PTC31,
+// port D
+PTD0, PTD1, PTD2, PTD3, PTD4, PTD5, PTD6, PTD7,
+PTD8, PTD9, PTD10,PTD11,PTD12,PTD13,NONE, NONE,
+PTD16,PTD17,PTD18,PTD19,PTD20,PTD21,PTD22,PTD23,
+PTD24,PTD25,PTD26,PTD27,PTD28,PTD29,PTD30,PTD31,
+// port E
+PTE0, PTE1, PTE2, PTE3, PTE4, PTE5, PTE6, PTE7,
+PTE8, PTE9, PTE10,PTE11,PTE12,PTE13,PTE14,PTE15,
+PTE16,PTE17,PTE18,PTE19,PTE20,PTE21,PTE22,PTE23,
+PTE24,PTE25,PTE26,PTE27,PTE28,NONE, NONE, NONE
+};
+
+void hal_variant_init( void )
+{
+#if defined CYGPKG_HAL_VYBRID_CACHE
+# if defined CYG_HAL_STARTUP_RAM
+ register CYG_INTERRUPT_STATE oldints;
+# endif
+#endif
+
+ hal_update_clock_var(); //VYBRID
+
+#if defined CYGPKG_HAL_VYBRID_CACHE
+# if defined CYG_HAL_STARTUP_RAM
+ HAL_DISABLE_INTERRUPTS(oldints);
+ HAL_DCACHE_SYNC();
+ HAL_DCACHE_DISABLE();
+ HAL_DCACHE_PURGE_ALL();
+ HAL_ICACHE_DISABLE();
+ HAL_ICACHE_INVALIDATE_ALL();
+# endif // defined CYG_HAL_STARTUP_RAM
+# if defined CYG_HAL_STARTUP_RAM
+ HAL_RESTORE_INTERRUPTS(oldints);
+# endif
+# ifdef CYGSEM_HAL_ENABLE_ICACHE_ON_STARTUP
+ HAL_ICACHE_ENABLE();
+# endif
+# ifdef CYGSEM_HAL_ENABLE_DCACHE_ON_STARTUP
+ HAL_DCACHE_ENABLE();
+# endif
+#endif // defined CYGPKG_HAL_VYBRID_CACHE
+
+#ifdef CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
+ hal_if_init();
+#endif
+}
+
+//==========================================================================
+// Pin configuration functions
+//==========================================================================
+
+static cyghwr_hal_vybrid_port_t * const Ports[] = {
+ CYGHWR_HAL_VYBRID_PORTA_P, CYGHWR_HAL_VYBRID_PORTB_P,
+ CYGHWR_HAL_VYBRID_PORTC_P, CYGHWR_HAL_VYBRID_PORTD_P,
+ CYGHWR_HAL_VYBRID_PORTE_P, CYGHWR_HAL_VYBRID_PORTF_P
+};
+
+
+void
+hal_set_pin_function(cyg_uint32 pin)
+{
+ if (pin==CYGHWR_HAL_VYBRID_PORT_PIN_NONE) return;
+
+ cyg_uint32 func = CYGHWR_HAL_VYBRID_PIN_FUNC(pin);
+ cyg_uint32 pad = vf61_pads[CYGHWR_HAL_VYBRID_PIN_PORT(pin)*32+CYGHWR_HAL_VYBRID_PIN_BIT(pin)];
+
+ // pad must exist in the device
+ assert(pad != NONE);
+
+ cyg_uint32 mux_val, mux_cnf;
+
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_GET_IOMUXC(pad),mux_val);
+
+ mux_val &= 0xff8fffff; // clear the MUX_MODE
+
+ mux_val |= ((func & 0xf00) << 12); //assign new MUX_MODE
+
+ mux_cnf = pin & 0x0000003f; // extract cnf from pin definition
+
+ if (mux_cnf) // non zero cnf assigned
+ {
+ mux_val &= 0xffffffc0;
+ mux_val |= mux_cnf;
+ }
+
+ HAL_WRITE_UINT32(CYGHWR_HAL_VYBRID_GET_IOMUXC(pad),mux_val);
+}
+
+void
+hal_dump_pin_function(cyg_uint32 pin)
+{
+ if(pin == CYGHWR_HAL_VYBRID_PIN_NONE) return;
+
+ cyg_uint32 port = CYGHWR_HAL_VYBRID_PIN_PORT(pin);
+ cyg_uint32 bit = CYGHWR_HAL_VYBRID_PIN_BIT(pin);
+
+ cyg_uint32 pad = vf61_pads[CYGHWR_HAL_VYBRID_PIN_PORT(pin)*32+CYGHWR_HAL_VYBRID_PIN_BIT(pin)];
+ cyg_uint32 mux_val;
+ HAL_READ_UINT32(CYGHWR_HAL_VYBRID_GET_IOMUXC(pad),mux_val);
+ diag_printf("Pin PT%c%d: IOMUX=0x08%x\n",0x41+port,bit,mux_val);
+}
+
+//==========================================================================
+// VYBRID Clock distribution
+//==========================================================================
+
+void
+hal_clock_enable(cyg_uint32 ccgr)
+{
+ volatile cyg_uint32 *ccm_p;
+
+ if(ccgr != CYGHWR_HAL_CCGR_NONE) {
+ ccm_p = &CYGHWR_HAL_VYBRID_CCM_P->ccgr0 +
+ CYGHWR_HAL_VYBRID_CCM_CCGR_REG(ccgr);
+ *ccm_p |= 3 << CYGHWR_HAL_VYBRID_CCM_CCGR_BIT(ccgr);
+ }
+}
+
+void
+hal_clock_disable(cyg_uint32 ccgr)
+{
+ volatile cyg_uint32 *ccm_p;
+
+ if(ccgr != CYGHWR_HAL_CCGR_NONE) {
+ ccm_p = &CYGHWR_HAL_VYBRID_CCM_P->ccgr0 +
+ CYGHWR_HAL_VYBRID_CCM_CCGR_REG(ccgr);
+ *ccm_p &= ~(3 << CYGHWR_HAL_VYBRID_CCM_CCGR_BIT(ccgr));
+ }
+}
+
+//==========================================================================
+// VYBRID Misc functions
+//==========================================================================
+
+int
+hal_get_core_num(void)
+{
+ return CYGHWR_HAL_VYBRID_MSCM_CPxNUM & CYGHWR_HAL_VYBRID_MSCM_CPxNUM_CPN_M;
+}
+
+//==========================================================================
+// EOF vybrid_misc.c