From 54b35fdfa0dd9b45c9b7fdaada6e9aafc278cb7a Mon Sep 17 00:00:00 2001 From: Nathan Rossi Date: Wed, 30 Mar 2016 23:28:02 +1000 Subject: u-boot-xlnx: Update to pre-release xilinx-v2016.1 Update the recipe to the current master of u-boot-xlnx vendor tree, in preparation for the xilinx-v2016.1 release. Update the KC705 configuration patch and remove upstreamed patches for MicroBlaze. Signed-off-by: Nathan Rossi --- ...croblaze-Fix-style-issues-in-header-files.patch | 236 ------- ...Fix-C99-gnu99-compatiblity-for-inline-fun.patch | 239 ------- ...kc705-trd-Convert-microblaze-generic-to-k.patch | 707 +++++++++++++++++---- recipes-bsp/u-boot/u-boot-xlnx_2015.07.bb | 31 - recipes-bsp/u-boot/u-boot-xlnx_2016.01.bb | 28 + 5 files changed, 602 insertions(+), 639 deletions(-) delete mode 100644 recipes-bsp/u-boot/u-boot-xlnx/0001-microblaze-Fix-style-issues-in-header-files.patch delete mode 100644 recipes-bsp/u-boot/u-boot-xlnx/0002-microblaze-Fix-C99-gnu99-compatiblity-for-inline-fun.patch delete mode 100644 recipes-bsp/u-boot/u-boot-xlnx_2015.07.bb create mode 100644 recipes-bsp/u-boot/u-boot-xlnx_2016.01.bb diff --git a/recipes-bsp/u-boot/u-boot-xlnx/0001-microblaze-Fix-style-issues-in-header-files.patch b/recipes-bsp/u-boot/u-boot-xlnx/0001-microblaze-Fix-style-issues-in-header-files.patch deleted file mode 100644 index f81aee4c..00000000 --- a/recipes-bsp/u-boot/u-boot-xlnx/0001-microblaze-Fix-style-issues-in-header-files.patch +++ /dev/null @@ -1,236 +0,0 @@ -From 4a4d9396b889686914101607417bc094e43060e4 Mon Sep 17 00:00:00 2001 -From: Nathan Rossi -Date: Fri, 6 Nov 2015 19:25:05 +1000 -Subject: [PATCH 1/2] microblaze: Fix style issues in header files - -Fix various style issues in MicroBlaze header files. Specifically fixing -style voilations including '__inline__', 'foo * bar' and 'void foo ('. - -Signed-off-by: Nathan Rossi -Cc: Michal Simek -Cc: Tom Rini -Signed-off-by: Michal Simek -Upstream-Status: Backport ---- - arch/microblaze/include/asm/bitops.h | 66 ++++++++++++++++++------------------ - arch/microblaze/include/asm/system.h | 2 +- - 2 files changed, 34 insertions(+), 34 deletions(-) - -diff --git a/arch/microblaze/include/asm/bitops.h b/arch/microblaze/include/asm/bitops.h -index d24f2cf..178c94f 100644 ---- a/arch/microblaze/include/asm/bitops.h -+++ b/arch/microblaze/include/asm/bitops.h -@@ -21,31 +21,31 @@ - * The __ functions are not atomic - */ - --extern void set_bit(int nr, volatile void * addr); --extern void __set_bit(int nr, volatile void * addr); -+extern void set_bit(int nr, volatile void *addr); -+extern void __set_bit(int nr, volatile void *addr); - --extern void clear_bit(int nr, volatile void * addr); -+extern void clear_bit(int nr, volatile void *addr); - #define __clear_bit(nr, addr) clear_bit(nr, addr) - #define PLATFORM__CLEAR_BIT - --extern void change_bit(int nr, volatile void * addr); --extern void __change_bit(int nr, volatile void * addr); --extern int test_and_set_bit(int nr, volatile void * addr); --extern int __test_and_set_bit(int nr, volatile void * addr); --extern int test_and_clear_bit(int nr, volatile void * addr); --extern int __test_and_clear_bit(int nr, volatile void * addr); --extern int test_and_change_bit(int nr, volatile void * addr); --extern int __test_and_change_bit(int nr, volatile void * addr); --extern int __constant_test_bit(int nr, const volatile void * addr); --extern int __test_bit(int nr, volatile void * addr); --extern int find_first_zero_bit(void * addr, unsigned size); --extern int find_next_zero_bit (void * addr, int size, int offset); -+extern void change_bit(int nr, volatile void *addr); -+extern void __change_bit(int nr, volatile void *addr); -+extern int test_and_set_bit(int nr, volatile void *addr); -+extern int __test_and_set_bit(int nr, volatile void *addr); -+extern int test_and_clear_bit(int nr, volatile void *addr); -+extern int __test_and_clear_bit(int nr, volatile void *addr); -+extern int test_and_change_bit(int nr, volatile void *addr); -+extern int __test_and_change_bit(int nr, volatile void *addr); -+extern int __constant_test_bit(int nr, const volatile void *addr); -+extern int __test_bit(int nr, volatile void *addr); -+extern int find_first_zero_bit(void *addr, unsigned size); -+extern int find_next_zero_bit(void *addr, int size, int offset); - - /* - * ffz = Find First Zero in word. Undefined if no zero exists, - * so code should check against ~0UL first.. - */ --extern __inline__ unsigned long ffz(unsigned long word) -+extern inline unsigned long ffz(unsigned long word) - { - unsigned long result = 0; - -@@ -57,7 +57,7 @@ extern __inline__ unsigned long ffz(unsigned long word) - } - - --extern __inline__ void set_bit(int nr, volatile void * addr) -+extern inline void set_bit(int nr, volatile void *addr) - { - int * a = (int *) addr; - int mask; -@@ -70,7 +70,7 @@ extern __inline__ void set_bit(int nr, volatile void * addr) - restore_flags(flags); - } - --extern __inline__ void __set_bit(int nr, volatile void * addr) -+extern inline void __set_bit(int nr, volatile void *addr) - { - int * a = (int *) addr; - int mask; -@@ -87,7 +87,7 @@ extern __inline__ void __set_bit(int nr, volatile void * addr) - #define smp_mb__before_clear_bit() barrier() - #define smp_mb__after_clear_bit() barrier() - --extern __inline__ void clear_bit(int nr, volatile void * addr) -+extern inline void clear_bit(int nr, volatile void *addr) - { - int * a = (int *) addr; - int mask; -@@ -100,7 +100,7 @@ extern __inline__ void clear_bit(int nr, volatile void * addr) - restore_flags(flags); - } - --extern __inline__ void change_bit(int nr, volatile void * addr) -+extern inline void change_bit(int nr, volatile void *addr) - { - int mask; - unsigned long flags; -@@ -113,7 +113,7 @@ extern __inline__ void change_bit(int nr, volatile void * addr) - restore_flags(flags); - } - --extern __inline__ void __change_bit(int nr, volatile void * addr) -+extern inline void __change_bit(int nr, volatile void *addr) - { - int mask; - unsigned long *ADDR = (unsigned long *) addr; -@@ -123,7 +123,7 @@ extern __inline__ void __change_bit(int nr, volatile void * addr) - *ADDR ^= mask; - } - --extern __inline__ int test_and_set_bit(int nr, volatile void * addr) -+extern inline int test_and_set_bit(int nr, volatile void *addr) - { - int mask, retval; - volatile unsigned int *a = (volatile unsigned int *) addr; -@@ -139,7 +139,7 @@ extern __inline__ int test_and_set_bit(int nr, volatile void * addr) - return retval; - } - --extern __inline__ int __test_and_set_bit(int nr, volatile void * addr) -+extern inline int __test_and_set_bit(int nr, volatile void *addr) - { - int mask, retval; - volatile unsigned int *a = (volatile unsigned int *) addr; -@@ -151,7 +151,7 @@ extern __inline__ int __test_and_set_bit(int nr, volatile void * addr) - return retval; - } - --extern __inline__ int test_and_clear_bit(int nr, volatile void * addr) -+extern inline int test_and_clear_bit(int nr, volatile void *addr) - { - int mask, retval; - volatile unsigned int *a = (volatile unsigned int *) addr; -@@ -167,7 +167,7 @@ extern __inline__ int test_and_clear_bit(int nr, volatile void * addr) - return retval; - } - --extern __inline__ int __test_and_clear_bit(int nr, volatile void * addr) -+extern inline int __test_and_clear_bit(int nr, volatile void *addr) - { - int mask, retval; - volatile unsigned int *a = (volatile unsigned int *) addr; -@@ -179,7 +179,7 @@ extern __inline__ int __test_and_clear_bit(int nr, volatile void * addr) - return retval; - } - --extern __inline__ int test_and_change_bit(int nr, volatile void * addr) -+extern inline int test_and_change_bit(int nr, volatile void *addr) - { - int mask, retval; - volatile unsigned int *a = (volatile unsigned int *) addr; -@@ -195,7 +195,7 @@ extern __inline__ int test_and_change_bit(int nr, volatile void * addr) - return retval; - } - --extern __inline__ int __test_and_change_bit(int nr, volatile void * addr) -+extern inline int __test_and_change_bit(int nr, volatile void *addr) - { - int mask, retval; - volatile unsigned int *a = (volatile unsigned int *) addr; -@@ -210,12 +210,12 @@ extern __inline__ int __test_and_change_bit(int nr, volatile void * addr) - /* - * This routine doesn't need to be atomic. - */ --extern __inline__ int __constant_test_bit(int nr, const volatile void * addr) -+extern inline int __constant_test_bit(int nr, const volatile void *addr) - { - return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0; - } - --extern __inline__ int __test_bit(int nr, volatile void * addr) -+extern inline int __test_bit(int nr, volatile void *addr) - { - int * a = (int *) addr; - int mask; -@@ -233,7 +233,7 @@ extern __inline__ int __test_bit(int nr, volatile void * addr) - #define find_first_zero_bit(addr, size) \ - find_next_zero_bit((addr), (size), 0) - --extern __inline__ int find_next_zero_bit (void * addr, int size, int offset) -+extern inline int find_next_zero_bit(void *addr, int size, int offset) - { - unsigned long *p = ((unsigned long *) addr) + (offset >> 5); - unsigned long result = offset & ~31UL; -@@ -279,7 +279,7 @@ found_middle: - #define hweight8(x) generic_hweight8(x) - - --extern __inline__ int ext2_set_bit(int nr, volatile void * addr) -+extern inline int ext2_set_bit(int nr, volatile void *addr) - { - int mask, retval; - unsigned long flags; -@@ -294,7 +294,7 @@ extern __inline__ int ext2_set_bit(int nr, volatile void * addr) - return retval; - } - --extern __inline__ int ext2_clear_bit(int nr, volatile void * addr) -+extern inline int ext2_clear_bit(int nr, volatile void *addr) - { - int mask, retval; - unsigned long flags; -@@ -309,7 +309,7 @@ extern __inline__ int ext2_clear_bit(int nr, volatile void * addr) - return retval; - } - --extern __inline__ int ext2_test_bit(int nr, const volatile void * addr) -+extern inline int ext2_test_bit(int nr, const volatile void *addr) - { - int mask; - const volatile unsigned char *ADDR = (const unsigned char *) addr; -diff --git a/arch/microblaze/include/asm/system.h b/arch/microblaze/include/asm/system.h -index 0297a11..3090835 100644 ---- a/arch/microblaze/include/asm/system.h -+++ b/arch/microblaze/include/asm/system.h -@@ -131,7 +131,7 @@ extern void *switch_thread (struct thread_struct *last, - ((__typeof__ (*(ptr)))__xchg ((unsigned long)(with), (ptr), sizeof (*(ptr)))) - #define tas(ptr) (xchg ((ptr), 1)) - --extern inline unsigned long __xchg (unsigned long with, -+extern inline unsigned long __xchg(unsigned long with, - __volatile__ void *ptr, int size) - { - unsigned long tmp, flags; --- -2.6.2 - diff --git a/recipes-bsp/u-boot/u-boot-xlnx/0002-microblaze-Fix-C99-gnu99-compatiblity-for-inline-fun.patch b/recipes-bsp/u-boot/u-boot-xlnx/0002-microblaze-Fix-C99-gnu99-compatiblity-for-inline-fun.patch deleted file mode 100644 index d334867b..00000000 --- a/recipes-bsp/u-boot/u-boot-xlnx/0002-microblaze-Fix-C99-gnu99-compatiblity-for-inline-fun.patch +++ /dev/null @@ -1,239 +0,0 @@ -From ccd0c906131053b11790a6be076e2cf4f71fed10 Mon Sep 17 00:00:00 2001 -From: Nathan Rossi -Date: Fri, 6 Nov 2015 19:25:06 +1000 -Subject: [PATCH 2/2] microblaze: Fix C99/gnu99 compatiblity for inline - functions - -'extern inline' is not portable across various C standards. To ensure -compatiblity with various standards/compilers change the functions to -static inline. This is a portable construct and serves as a comparable -definition to 'extern inline' from the gnu90 standard. - -Additionally remove the function prototypes as they are not required due -to the functions being declared static and functions are correctly -ordered based on dependence. - -Signed-off-by: Nathan Rossi -Cc: Michal Simek -Cc: Tom Rini -Acked-by: Mans Rullgard -Signed-off-by: Michal Simek -Upstream-Status: Backport ---- - arch/microblaze/include/asm/bitops.h | 63 ++++++++++++------------------------ - arch/microblaze/include/asm/system.h | 2 +- - 2 files changed, 22 insertions(+), 43 deletions(-) - -diff --git a/arch/microblaze/include/asm/bitops.h b/arch/microblaze/include/asm/bitops.h -index 178c94f..2cab2ac 100644 ---- a/arch/microblaze/include/asm/bitops.h -+++ b/arch/microblaze/include/asm/bitops.h -@@ -14,38 +14,14 @@ - - #ifdef __KERNEL__ - /* -- * Function prototypes to keep gcc -Wall happy -- */ -- --/* - * The __ functions are not atomic - */ - --extern void set_bit(int nr, volatile void *addr); --extern void __set_bit(int nr, volatile void *addr); -- --extern void clear_bit(int nr, volatile void *addr); --#define __clear_bit(nr, addr) clear_bit(nr, addr) --#define PLATFORM__CLEAR_BIT -- --extern void change_bit(int nr, volatile void *addr); --extern void __change_bit(int nr, volatile void *addr); --extern int test_and_set_bit(int nr, volatile void *addr); --extern int __test_and_set_bit(int nr, volatile void *addr); --extern int test_and_clear_bit(int nr, volatile void *addr); --extern int __test_and_clear_bit(int nr, volatile void *addr); --extern int test_and_change_bit(int nr, volatile void *addr); --extern int __test_and_change_bit(int nr, volatile void *addr); --extern int __constant_test_bit(int nr, const volatile void *addr); --extern int __test_bit(int nr, volatile void *addr); --extern int find_first_zero_bit(void *addr, unsigned size); --extern int find_next_zero_bit(void *addr, int size, int offset); -- - /* - * ffz = Find First Zero in word. Undefined if no zero exists, - * so code should check against ~0UL first.. - */ --extern inline unsigned long ffz(unsigned long word) -+static inline unsigned long ffz(unsigned long word) - { - unsigned long result = 0; - -@@ -57,7 +33,7 @@ extern inline unsigned long ffz(unsigned long word) - } - - --extern inline void set_bit(int nr, volatile void *addr) -+static inline void set_bit(int nr, volatile void *addr) - { - int * a = (int *) addr; - int mask; -@@ -70,7 +46,7 @@ extern inline void set_bit(int nr, volatile void *addr) - restore_flags(flags); - } - --extern inline void __set_bit(int nr, volatile void *addr) -+static inline void __set_bit(int nr, volatile void *addr) - { - int * a = (int *) addr; - int mask; -@@ -87,7 +63,7 @@ extern inline void __set_bit(int nr, volatile void *addr) - #define smp_mb__before_clear_bit() barrier() - #define smp_mb__after_clear_bit() barrier() - --extern inline void clear_bit(int nr, volatile void *addr) -+static inline void clear_bit(int nr, volatile void *addr) - { - int * a = (int *) addr; - int mask; -@@ -100,7 +76,10 @@ extern inline void clear_bit(int nr, volatile void *addr) - restore_flags(flags); - } - --extern inline void change_bit(int nr, volatile void *addr) -+#define __clear_bit(nr, addr) clear_bit(nr, addr) -+#define PLATFORM__CLEAR_BIT -+ -+static inline void change_bit(int nr, volatile void *addr) - { - int mask; - unsigned long flags; -@@ -113,7 +92,7 @@ extern inline void change_bit(int nr, volatile void *addr) - restore_flags(flags); - } - --extern inline void __change_bit(int nr, volatile void *addr) -+static inline void __change_bit(int nr, volatile void *addr) - { - int mask; - unsigned long *ADDR = (unsigned long *) addr; -@@ -123,7 +102,7 @@ extern inline void __change_bit(int nr, volatile void *addr) - *ADDR ^= mask; - } - --extern inline int test_and_set_bit(int nr, volatile void *addr) -+static inline int test_and_set_bit(int nr, volatile void *addr) - { - int mask, retval; - volatile unsigned int *a = (volatile unsigned int *) addr; -@@ -139,7 +118,7 @@ extern inline int test_and_set_bit(int nr, volatile void *addr) - return retval; - } - --extern inline int __test_and_set_bit(int nr, volatile void *addr) -+static inline int __test_and_set_bit(int nr, volatile void *addr) - { - int mask, retval; - volatile unsigned int *a = (volatile unsigned int *) addr; -@@ -151,7 +130,7 @@ extern inline int __test_and_set_bit(int nr, volatile void *addr) - return retval; - } - --extern inline int test_and_clear_bit(int nr, volatile void *addr) -+static inline int test_and_clear_bit(int nr, volatile void *addr) - { - int mask, retval; - volatile unsigned int *a = (volatile unsigned int *) addr; -@@ -167,7 +146,7 @@ extern inline int test_and_clear_bit(int nr, volatile void *addr) - return retval; - } - --extern inline int __test_and_clear_bit(int nr, volatile void *addr) -+static inline int __test_and_clear_bit(int nr, volatile void *addr) - { - int mask, retval; - volatile unsigned int *a = (volatile unsigned int *) addr; -@@ -179,7 +158,7 @@ extern inline int __test_and_clear_bit(int nr, volatile void *addr) - return retval; - } - --extern inline int test_and_change_bit(int nr, volatile void *addr) -+static inline int test_and_change_bit(int nr, volatile void *addr) - { - int mask, retval; - volatile unsigned int *a = (volatile unsigned int *) addr; -@@ -195,7 +174,7 @@ extern inline int test_and_change_bit(int nr, volatile void *addr) - return retval; - } - --extern inline int __test_and_change_bit(int nr, volatile void *addr) -+static inline int __test_and_change_bit(int nr, volatile void *addr) - { - int mask, retval; - volatile unsigned int *a = (volatile unsigned int *) addr; -@@ -210,12 +189,12 @@ extern inline int __test_and_change_bit(int nr, volatile void *addr) - /* - * This routine doesn't need to be atomic. - */ --extern inline int __constant_test_bit(int nr, const volatile void *addr) -+static inline int __constant_test_bit(int nr, const volatile void *addr) - { - return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0; - } - --extern inline int __test_bit(int nr, volatile void *addr) -+static inline int __test_bit(int nr, volatile void *addr) - { - int * a = (int *) addr; - int mask; -@@ -233,7 +212,7 @@ extern inline int __test_bit(int nr, volatile void *addr) - #define find_first_zero_bit(addr, size) \ - find_next_zero_bit((addr), (size), 0) - --extern inline int find_next_zero_bit(void *addr, int size, int offset) -+static inline int find_next_zero_bit(void *addr, int size, int offset) - { - unsigned long *p = ((unsigned long *) addr) + (offset >> 5); - unsigned long result = offset & ~31UL; -@@ -279,7 +258,7 @@ found_middle: - #define hweight8(x) generic_hweight8(x) - - --extern inline int ext2_set_bit(int nr, volatile void *addr) -+static inline int ext2_set_bit(int nr, volatile void *addr) - { - int mask, retval; - unsigned long flags; -@@ -294,7 +273,7 @@ extern inline int ext2_set_bit(int nr, volatile void *addr) - return retval; - } - --extern inline int ext2_clear_bit(int nr, volatile void *addr) -+static inline int ext2_clear_bit(int nr, volatile void *addr) - { - int mask, retval; - unsigned long flags; -@@ -309,7 +288,7 @@ extern inline int ext2_clear_bit(int nr, volatile void *addr) - return retval; - } - --extern inline int ext2_test_bit(int nr, const volatile void *addr) -+static inline int ext2_test_bit(int nr, const volatile void *addr) - { - int mask; - const volatile unsigned char *ADDR = (const unsigned char *) addr; -diff --git a/arch/microblaze/include/asm/system.h b/arch/microblaze/include/asm/system.h -index 3090835..3107748 100644 ---- a/arch/microblaze/include/asm/system.h -+++ b/arch/microblaze/include/asm/system.h -@@ -131,7 +131,7 @@ extern void *switch_thread (struct thread_struct *last, - ((__typeof__ (*(ptr)))__xchg ((unsigned long)(with), (ptr), sizeof (*(ptr)))) - #define tas(ptr) (xchg ((ptr), 1)) - --extern inline unsigned long __xchg(unsigned long with, -+static inline unsigned long __xchg(unsigned long with, - __volatile__ void *ptr, int size) - { - unsigned long tmp, flags; --- -2.6.2 - diff --git a/recipes-bsp/u-boot/u-boot-xlnx/microblaze-kc705-trd-Convert-microblaze-generic-to-k.patch b/recipes-bsp/u-boot/u-boot-xlnx/microblaze-kc705-trd-Convert-microblaze-generic-to-k.patch index e9974f4f..47601e7d 100644 --- a/recipes-bsp/u-boot/u-boot-xlnx/microblaze-kc705-trd-Convert-microblaze-generic-to-k.patch +++ b/recipes-bsp/u-boot/u-boot-xlnx/microblaze-kc705-trd-Convert-microblaze-generic-to-k.patch @@ -1,6 +1,6 @@ -From 0a6818050dcc711f36bd96decc7a2abba5871928 Mon Sep 17 00:00:00 2001 +From 36651e266a840e0767e8f1b6d0ff4944f96cbdcf Mon Sep 17 00:00:00 2001 From: Nathan Rossi -Date: Wed, 6 Jan 2016 15:40:17 +1000 +Date: Thu, 31 Mar 2016 18:15:02 +1000 Subject: [PATCH] microblaze: kc705-trd: Convert microblaze-generic to kc705-trd @@ -12,24 +12,543 @@ microblaze boards. Signed-off-by: Nathan Rossi Upstream-Status: Not-Upstreamable [meta-xilinx/kc705 specific] --- - arch/microblaze/dts/microblaze-generic.dts | 4 ++ - board/xilinx/microblaze-generic/config.mk | 23 +++---- - board/xilinx/microblaze-generic/xparameters.h | 86 ++++++++++----------------- - include/configs/microblaze-generic.h | 11 ++-- - 4 files changed, 52 insertions(+), 72 deletions(-) + arch/microblaze/dts/microblaze-generic.dts | 520 ++++++++++++++++++++++++++ + board/xilinx/microblaze-generic/config.mk | 23 +- + board/xilinx/microblaze-generic/xparameters.h | 16 +- + configs/microblaze-generic_defconfig | 5 +- + include/configs/microblaze-generic.h | 4 +- + 5 files changed, 540 insertions(+), 28 deletions(-) diff --git a/arch/microblaze/dts/microblaze-generic.dts b/arch/microblaze/dts/microblaze-generic.dts -index 2033309..8c21cd3 100644 +index 2033309..7faf61d 100644 --- a/arch/microblaze/dts/microblaze-generic.dts +++ b/arch/microblaze/dts/microblaze-generic.dts -@@ -4,4 +4,8 @@ +@@ -2,6 +2,526 @@ + / { + #address-cells = <1>; #size-cells = <1>; - aliases { - } ; -+ memory: memory@80000000 { ++ compatible = "xlnx,microblaze"; ++ model = "Xilinx-KC705-TRD"; ++ ddr3_sdram: memory@80000000 { + device_type = "memory"; -+ reg = <0x80000000 0x40000000>; ++ reg = < 0x80000000 0x40000000 >; ++ } ; + aliases { ++ ethernet0 = &soft_ethernet_mac; ++ serial0 = &rs232_uart_1; ++ } ; ++ chosen { ++ bootargs = ""; ++ stdout-path = "serial0:115200"; + } ; ++ cpus { ++ #address-cells = <1>; ++ #cpus = <0x1>; ++ #size-cells = <0>; ++ microblaze_0: cpu@0 { ++ bus-handle = <&axi_mm_mb>, <&axi4_0>, <&axi4lite_0>; ++ clock-frequency = <150000000>; ++ clocks = <&clk_cpu>; ++ compatible = "xlnx,microblaze-8.50.a"; ++ d-cache-baseaddr = <0x80000000>; ++ d-cache-highaddr = <0xffffffff>; ++ d-cache-line-size = <0x20>; ++ d-cache-size = <0x2000>; ++ device_type = "cpu"; ++ i-cache-baseaddr = <0x80000000>; ++ i-cache-highaddr = <0xffffffff>; ++ i-cache-line-size = <0x20>; ++ i-cache-size = <0x2000>; ++ model = "microblaze,8.50.a"; ++ reg = <0>; ++ timebase-frequency = <150000000>; ++ xlnx,addr-tag-bits = <0x12>; ++ xlnx,allow-dcache-wr = <0x1>; ++ xlnx,allow-icache-wr = <0x1>; ++ xlnx,area-optimized = <0x0>; ++ xlnx,avoid-primitives = <0x0>; ++ xlnx,base-vectors = <0x0>; ++ xlnx,branch-target-cache-size = <0x0>; ++ xlnx,cache-byte-size = <0x2000>; ++ xlnx,d-axi = <0x1>; ++ xlnx,d-lmb = <0x1>; ++ xlnx,d-plb = <0x0>; ++ xlnx,data-size = <0x20>; ++ xlnx,dcache-addr-tag = <0x12>; ++ xlnx,dcache-always-used = <0x1>; ++ xlnx,dcache-byte-size = <0x2000>; ++ xlnx,dcache-data-width = <0x0>; ++ xlnx,dcache-force-tag-lutram = <0x1>; ++ xlnx,dcache-interface = <0x0>; ++ xlnx,dcache-line-len = <0x8>; ++ xlnx,dcache-use-fsl = <0x0>; ++ xlnx,dcache-use-writeback = <0x0>; ++ xlnx,dcache-victims = <0x0>; ++ xlnx,debug-enabled = <0x1>; ++ xlnx,div-zero-exception = <0x0>; ++ xlnx,dynamic-bus-sizing = <0x1>; ++ xlnx,ecc-use-ce-exception = <0x0>; ++ xlnx,edge-is-positive = <0x1>; ++ xlnx,endianness = <0x1>; ++ xlnx,family = "kintex7"; ++ xlnx,fault-tolerant = <0x0>; ++ xlnx,fpu-exception = <0x0>; ++ xlnx,freq = <0x8f0d180>; ++ xlnx,fsl-data-size = <0x20>; ++ xlnx,fsl-exception = <0x0>; ++ xlnx,fsl-links = <0x0>; ++ xlnx,i-axi = <0x0>; ++ xlnx,i-lmb = <0x1>; ++ xlnx,i-plb = <0x0>; ++ xlnx,icache-always-used = <0x1>; ++ xlnx,icache-data-width = <0x0>; ++ xlnx,icache-force-tag-lutram = <0x1>; ++ xlnx,icache-interface = <0x0>; ++ xlnx,icache-line-len = <0x8>; ++ xlnx,icache-streams = <0x0>; ++ xlnx,icache-use-fsl = <0x0>; ++ xlnx,icache-victims = <0x0>; ++ xlnx,ill-opcode-exception = <0x1>; ++ xlnx,instance = "microblaze_0"; ++ xlnx,interconnect = <0x2>; ++ xlnx,interrupt-is-edge = <0x0>; ++ xlnx,lockstep-slave = <0x0>; ++ xlnx,mmu-dtlb-size = <0x2>; ++ xlnx,mmu-itlb-size = <0x2>; ++ xlnx,mmu-privileged-instr = <0x0>; ++ xlnx,mmu-tlb-access = <0x3>; ++ xlnx,mmu-zones = <0x2>; ++ xlnx,number-of-pc-brk = <0x1>; ++ xlnx,number-of-rd-addr-brk = <0x0>; ++ xlnx,number-of-wr-addr-brk = <0x0>; ++ xlnx,opcode-0x0-illegal = <0x1>; ++ xlnx,optimization = <0x0>; ++ xlnx,pc-width = <0x20>; ++ xlnx,pvr = <0x2>; ++ xlnx,pvr-user1 = <0x0>; ++ xlnx,pvr-user2 = <0x0>; ++ xlnx,reset-msr = <0x0>; ++ xlnx,sco = <0x0>; ++ xlnx,stream-interconnect = <0x0>; ++ xlnx,unaligned-exceptions = <0x1>; ++ xlnx,use-barrel = <0x1>; ++ xlnx,use-branch-target-cache = <0x0>; ++ xlnx,use-dcache = <0x1>; ++ xlnx,use-div = <0x0>; ++ xlnx,use-ext-brk = <0x1>; ++ xlnx,use-ext-nm-brk = <0x1>; ++ xlnx,use-extended-fsl-instr = <0x0>; ++ xlnx,use-fpu = <0x0>; ++ xlnx,use-hw-mul = <0x1>; ++ xlnx,use-icache = <0x1>; ++ xlnx,use-interrupt = <0x1>; ++ xlnx,use-mmu = <0x3>; ++ xlnx,use-msr-instr = <0x1>; ++ xlnx,use-pcmp-instr = <0x1>; ++ xlnx,use-reorder-instr = <0x1>; ++ xlnx,use-stack-protection = <0x0>; ++ } ; ++ } ; ++ clocks { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ clk_bus: bus { ++ #clock-cells = <0>; ++ clock-frequency = <100000000>; ++ clock-output-names = "bus"; ++ compatible = "fixed-clock"; ++ reg = <1>; ++ } ; ++ clk_cpu: cpu { ++ #clock-cells = <0>; ++ clock-frequency = <150000000>; ++ clock-output-names = "cpu"; ++ compatible = "fixed-clock"; ++ reg = <0>; ++ } ; ++ } ; ++ axi4lite_0: axi@2 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "xlnx,axi-interconnect-1.06.a", "simple-bus"; ++ ranges ; ++ axi_dma_ethernet: axi-dma@50000000 { ++ axistream-connected = <&soft_ethernet_mac>; ++ axistream-control-connected = <&soft_ethernet_mac>; ++ compatible = "xlnx,axi-dma-6.03.a", "xlnx,axi-dma-1.00.a"; ++ interrupt-parent = <&interrupt_cntlr>; ++ interrupts = < 0 2 1 2 >; ++ reg = < 0x50000000 0x10000 >; ++ xlnx,dlytmr-resolution = <0x4e2>; ++ xlnx,enable-multi-channel = <0x0>; ++ xlnx,family = "kintex7"; ++ xlnx,generic = <0x0>; ++ xlnx,include-mm2s = <0x1>; ++ xlnx,include-mm2s-dre = <0x1>; ++ xlnx,include-mm2s-sf = <0x1>; ++ xlnx,include-s2mm = <0x1>; ++ xlnx,include-s2mm-dre = <0x1>; ++ xlnx,include-s2mm-sf = <0x1>; ++ xlnx,include-sg = <0x1>; ++ xlnx,instance = "AXI_DMA_Ethernet"; ++ xlnx,mm2s-burst-size = <0x10>; ++ xlnx,num-mm2s-channels = <0x1>; ++ xlnx,num-s2mm-channels = <0x1>; ++ xlnx,prmry-is-aclk-async = <0x1>; ++ xlnx,s2mm-burst-size = <0x10>; ++ xlnx,sg-include-desc-queue = <0x1>; ++ xlnx,sg-include-stscntrl-strm = <0x1>; ++ xlnx,sg-length-width = <0x10>; ++ xlnx,sg-use-stsapp-length = <0x1>; ++ } ; ++ axi_xadc_0: axi-xadc@40d00000 { ++ clocks = <&clk_bus>; ++ compatible = "xlnx,axi-xadc-1.00.a"; ++ interrupt-parent = <&interrupt_cntlr>; ++ interrupts = < 7 2 >; ++ reg = < 0x40d00000 0x10000 >; ++ xlnx,family = "kintex7"; ++ xlnx,has-temp-bus = <0x1>; ++ xlnx,include-intr = <0x1>; ++ xlnx,instance = "axi_xadc_0"; ++ xlnx,sim-monitor-file = "Sysmon_Design.txt"; ++ } ; ++ debug_module: serial@40200000 { ++ compatible = "xlnx,mdm-2.10.a", "xlnx,xps-uartlite-1.00.a"; ++ reg = < 0x40200000 0x10000 >; ++ xlnx,family = "kintex7"; ++ xlnx,interconnect = <0x2>; ++ xlnx,jtag-chain = <0x2>; ++ xlnx,mb-dbg-ports = <0x1>; ++ xlnx,use-bscan = <0x0>; ++ xlnx,use-uart = <0x1>; ++ } ; ++ dip_switches_4bits: gpio@40700000 { ++ #gpio-cells = <2>; ++ compatible = "xlnx,axi-gpio-1.01.b", "xlnx,xps-gpio-1.00.a"; ++ gpio-controller ; ++ reg = < 0x40700000 0x10000 >; ++ xlnx,all-inputs = <0x1>; ++ xlnx,all-inputs-2 = <0x0>; ++ xlnx,dout-default = <0x0>; ++ xlnx,dout-default-2 = <0x0>; ++ xlnx,family = "kintex7"; ++ xlnx,gpio-width = <0x4>; ++ xlnx,gpio2-width = <0x20>; ++ xlnx,instance = "DIP_Switches_4Bits"; ++ xlnx,interrupt-present = <0x1>; ++ xlnx,is-dual = <0x0>; ++ xlnx,tri-default = <0xffffffff>; ++ xlnx,tri-default-2 = <0xffffffff>; ++ } ; ++ dual_timer_counter: system-timer@40300000 { ++ clock-frequency = <100000000>; ++ clocks = <&clk_bus>; ++ compatible = "xlnx,axi-timer-1.03.a", "xlnx,xps-timer-1.00.a"; ++ interrupt-parent = <&interrupt_cntlr>; ++ interrupts = < 3 2 >; ++ reg = < 0x40300000 0x10000 >; ++ xlnx,count-width = <0x20>; ++ xlnx,family = "kintex7"; ++ xlnx,gen0-assert = <0x1>; ++ xlnx,gen1-assert = <0x1>; ++ xlnx,instance = "Dual_Timer_Counter"; ++ xlnx,one-timer-only = <0x0>; ++ xlnx,trig0-assert = <0x1>; ++ xlnx,trig1-assert = <0x1>; ++ } ; ++ iic_eeprom: i2c@40a00000 { ++ compatible = "xlnx,axi-iic-1.02.a", "xlnx,xps-iic-2.00.a"; ++ interrupt-parent = <&interrupt_cntlr>; ++ interrupts = < 4 2 >; ++ reg = < 0x40a00000 0x10000 >; ++ xlnx,family = "kintex7"; ++ xlnx,gpo-width = <0x1>; ++ xlnx,iic-freq = <0x186a0>; ++ xlnx,instance = "IIC_EEPROM"; ++ xlnx,scl-inertial-delay = <0x0>; ++ xlnx,sda-inertial-delay = <0x0>; ++ xlnx,sda-level = <0x1>; ++ xlnx,ten-bit-adr = <0x0>; ++ } ; ++ interrupt_cntlr: interrupt-controller@40100000 { ++ #interrupt-cells = <0x2>; ++ compatible = "xlnx,axi-intc-1.03.a", "xlnx,xps-intc-1.00.a"; ++ interrupt-controller ; ++ reg = < 0x40100000 0x10000 >; ++ xlnx,kind-of-intr = <0x0>; ++ xlnx,num-intr-inputs = <0x8>; ++ } ; ++ lcd_gpio: gpio@40800000 { ++ #gpio-cells = <2>; ++ compatible = "xlnx,axi-gpio-1.01.b", "xlnx,xps-gpio-1.00.a"; ++ gpio-controller ; ++ reg = < 0x40800000 0x10000 >; ++ xlnx,all-inputs = <0x0>; ++ xlnx,all-inputs-2 = <0x0>; ++ xlnx,dout-default = <0x0>; ++ xlnx,dout-default-2 = <0x0>; ++ xlnx,family = "kintex7"; ++ xlnx,gpio-width = <0x7>; ++ xlnx,gpio2-width = <0x20>; ++ xlnx,instance = "LCD_GPIO"; ++ xlnx,interrupt-present = <0x0>; ++ xlnx,is-dual = <0x0>; ++ xlnx,tri-default = <0xffffffff>; ++ xlnx,tri-default-2 = <0xffffffff>; ++ } ; ++ leds_8bits: gpio@40600000 { ++ #gpio-cells = <2>; ++ compatible = "xlnx,axi-gpio-1.01.b", "xlnx,xps-gpio-1.00.a"; ++ gpio-controller ; ++ reg = < 0x40600000 0x10000 >; ++ xlnx,all-inputs = <0x0>; ++ xlnx,all-inputs-2 = <0x0>; ++ xlnx,dout-default = <0x0>; ++ xlnx,dout-default-2 = <0x0>; ++ xlnx,family = "kintex7"; ++ xlnx,gpio-width = <0x8>; ++ xlnx,gpio2-width = <0x20>; ++ xlnx,instance = "LEDs_8Bits"; ++ xlnx,interrupt-present = <0x1>; ++ xlnx,is-dual = <0x0>; ++ xlnx,tri-default = <0xffffffff>; ++ xlnx,tri-default-2 = <0xffffffff>; ++ } ; ++ logisdhc_0: logisdhc@40b00000 { ++ compatible = "xlnx,logisdhc-1.06.c"; ++ interrupt-parent = <&interrupt_cntlr>; ++ interrupts = < 6 2 >; ++ reg = < 0x40b00000 0x10000 >; ++ xlnx,byte-per-pixel = <0x4>; ++ xlnx,convert-endianess = <0x0>; ++ xlnx,dma-type = <0x1>; ++ xlnx,family = "kintex7"; ++ xlnx,ip-license-type = <0x1>; ++ xlnx,ip-major-revision = <0x1>; ++ xlnx,ip-minor-revision = <0x6>; ++ xlnx,ip-patch-level = <0x2>; ++ xlnx,mem-burst = <0x4>; ++ xlnx,mem-data-bus-width = <0x20>; ++ xlnx,mem-interface = <0x1>; ++ xlnx,regs-interface = <0x2>; ++ xlnx,row-stride = <0x400>; ++ xlnx,sd-base-clock-freq = <0x64>; ++ xlnx,use-dma = <0x0>; ++ } ; ++ primary_flash: flash@48000000 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ bank-width = <2>; ++ compatible = "xlnx,axi-emc-1.03.b", "cfi-flash"; ++ reg = < 0x48000000 0x8000000 >; ++ xlnx,axi-clk-period-ps = <0x2710>; ++ xlnx,family = "kintex7"; ++ xlnx,include-datawidth-matching-0 = <0x1>; ++ xlnx,include-datawidth-matching-1 = <0x0>; ++ xlnx,include-datawidth-matching-2 = <0x0>; ++ xlnx,include-datawidth-matching-3 = <0x0>; ++ xlnx,include-negedge-ioregs = <0x0>; ++ xlnx,instance = "Linear_Flash"; ++ xlnx,lflash-period-ps = <0x4e20>; ++ xlnx,linear-flash-sync-burst = <0x0>; ++ xlnx,max-mem-width = <0x10>; ++ xlnx,mem0-type = <0x2>; ++ xlnx,mem0-width = <0x10>; ++ xlnx,mem1-type = <0x0>; ++ xlnx,mem1-width = <0x20>; ++ xlnx,mem2-type = <0x0>; ++ xlnx,mem2-width = <0x20>; ++ xlnx,mem3-type = <0x0>; ++ xlnx,mem3-width = <0x20>; ++ xlnx,num-banks-mem = <0x1>; ++ xlnx,parity-type-mem-0 = <0x0>; ++ xlnx,parity-type-mem-1 = <0x0>; ++ xlnx,parity-type-mem-2 = <0x0>; ++ xlnx,parity-type-mem-3 = <0x0>; ++ xlnx,s-axi-en-reg = <0x0>; ++ xlnx,s-axi-mem-addr-width = <0x20>; ++ xlnx,s-axi-mem-data-width = <0x20>; ++ xlnx,s-axi-mem-id-width = <0x1>; ++ xlnx,s-axi-mem-protocol = "AXI4LITE"; ++ xlnx,s-axi-reg-addr-width = <0x5>; ++ xlnx,s-axi-reg-data-width = <0x20>; ++ xlnx,s-axi-reg-protocol = "axi4"; ++ xlnx,synch-pipedelay-0 = <0x2>; ++ xlnx,synch-pipedelay-1 = <0x2>; ++ xlnx,synch-pipedelay-2 = <0x2>; ++ xlnx,synch-pipedelay-3 = <0x2>; ++ xlnx,tavdv-ps-mem-0 = <0x1fbd0>; ++ xlnx,tavdv-ps-mem-1 = <0x3a98>; ++ xlnx,tavdv-ps-mem-2 = <0x3a98>; ++ xlnx,tavdv-ps-mem-3 = <0x3a98>; ++ xlnx,tcedv-ps-mem-0 = <0x1fbd0>; ++ xlnx,tcedv-ps-mem-1 = <0x3a98>; ++ xlnx,tcedv-ps-mem-2 = <0x3a98>; ++ xlnx,tcedv-ps-mem-3 = <0x3a98>; ++ xlnx,thzce-ps-mem-0 = <0x88b8>; ++ xlnx,thzce-ps-mem-1 = <0x1b58>; ++ xlnx,thzce-ps-mem-2 = <0x1b58>; ++ xlnx,thzce-ps-mem-3 = <0x1b58>; ++ xlnx,thzoe-ps-mem-0 = <0x1b58>; ++ xlnx,thzoe-ps-mem-1 = <0x1b58>; ++ xlnx,thzoe-ps-mem-2 = <0x1b58>; ++ xlnx,thzoe-ps-mem-3 = <0x1b58>; ++ xlnx,tlzwe-ps-mem-0 = <0x88b8>; ++ xlnx,tlzwe-ps-mem-1 = <0x0>; ++ xlnx,tlzwe-ps-mem-2 = <0x0>; ++ xlnx,tlzwe-ps-mem-3 = <0x0>; ++ xlnx,tpacc-ps-flash-0 = <0x61a8>; ++ xlnx,tpacc-ps-flash-1 = <0x61a8>; ++ xlnx,tpacc-ps-flash-2 = <0x61a8>; ++ xlnx,tpacc-ps-flash-3 = <0x61a8>; ++ xlnx,twc-ps-mem-0 = <0x11170>; ++ xlnx,twc-ps-mem-1 = <0x3a98>; ++ xlnx,twc-ps-mem-2 = <0x3a98>; ++ xlnx,twc-ps-mem-3 = <0x3a98>; ++ xlnx,twp-ps-mem-0 = <0x11170>; ++ xlnx,twp-ps-mem-1 = <0x2ee0>; ++ xlnx,twp-ps-mem-2 = <0x2ee0>; ++ xlnx,twp-ps-mem-3 = <0x2ee0>; ++ xlnx,twph-ps-mem-0 = <0x2ee0>; ++ xlnx,twph-ps-mem-1 = <0x2ee0>; ++ xlnx,twph-ps-mem-2 = <0x2ee0>; ++ xlnx,twph-ps-mem-3 = <0x2ee0>; ++ xlnx,wr-rec-time-mem-0 = <0x186a0>; ++ xlnx,wr-rec-time-mem-1 = <0x186a0>; ++ xlnx,wr-rec-time-mem-2 = <0x186a0>; ++ xlnx,wr-rec-time-mem-3 = <0x186a0>; ++ partition@0x00000000 { ++ label = "fpga"; ++ reg = <0x00000000 0x00200000>; ++ }; ++ partition@0x00200000 { ++ label = "boot"; ++ reg = <0x00200000 0x00040000>; ++ }; ++ partition@0x00240000 { ++ label = "bootenv"; ++ reg = <0x00240000 0x00020000>; ++ }; ++ partition@0x00260000 { ++ label = "image"; ++ reg = <0x00260000 0x00c00000>; ++ }; ++ partition@0x00e60000 { ++ label = "spare"; ++ reg = <0x00e60000 0x00000000>; ++ }; ++ } ; ++ push_buttons_5bits: gpio@40500000 { ++ #gpio-cells = <2>; ++ compatible = "xlnx,axi-gpio-1.01.b", "xlnx,xps-gpio-1.00.a"; ++ gpio-controller ; ++ reg = < 0x40500000 0x10000 >; ++ xlnx,all-inputs = <0x1>; ++ xlnx,all-inputs-2 = <0x0>; ++ xlnx,dout-default = <0x0>; ++ xlnx,dout-default-2 = <0x0>; ++ xlnx,family = "kintex7"; ++ xlnx,gpio-width = <0x5>; ++ xlnx,gpio2-width = <0x20>; ++ xlnx,instance = "Push_Buttons_5Bits"; ++ xlnx,interrupt-present = <0x1>; ++ xlnx,is-dual = <0x0>; ++ xlnx,tri-default = <0xffffffff>; ++ xlnx,tri-default-2 = <0xffffffff>; ++ } ; ++ rotary_gpio: gpio@40900000 { ++ #gpio-cells = <2>; ++ compatible = "xlnx,axi-gpio-1.01.b", "xlnx,xps-gpio-1.00.a"; ++ gpio-controller ; ++ reg = < 0x40900000 0x10000 >; ++ xlnx,all-inputs = <0x1>; ++ xlnx,all-inputs-2 = <0x0>; ++ xlnx,dout-default = <0x0>; ++ xlnx,dout-default-2 = <0x0>; ++ xlnx,family = "kintex7"; ++ xlnx,gpio-width = <0x3>; ++ xlnx,gpio2-width = <0x20>; ++ xlnx,instance = "ROTARY_GPIO"; ++ xlnx,interrupt-present = <0x0>; ++ xlnx,is-dual = <0x0>; ++ xlnx,tri-default = <0xffffffff>; ++ xlnx,tri-default-2 = <0xffffffff>; ++ } ; ++ rs232_uart_1: serial@40400000 { ++ clock-frequency = <100000000>; ++ clocks = <&clk_bus>; ++ compatible = "xlnx,axi-uart16550-1.01.a", "xlnx,xps-uart16550-2.00.a", "ns16550a"; ++ current-speed = <115200>; ++ device_type = "serial"; ++ interrupt-parent = <&interrupt_cntlr>; ++ interrupts = < 5 2 >; ++ reg = < 0x40400000 0x10000 >; ++ reg-offset = <0x1000>; ++ reg-shift = <2>; ++ xlnx,external-xin-clk-hz = <0x17d7840>; ++ xlnx,family = "kintex7"; ++ xlnx,has-external-rclk = <0x0>; ++ xlnx,has-external-xin = <0x0>; ++ xlnx,instance = "RS232_Uart_1"; ++ xlnx,is-a-16550 = <0x1>; ++ xlnx,use-modem-ports = <0x0>; ++ xlnx,use-user-ports = <0x0>; ++ } ; ++ soft_ethernet_mac: axi-ethernet@50100000 { ++ axistream-connected = <&axi_dma_ethernet>; ++ axistream-control-connected = <&axi_dma_ethernet>; ++ clock-frequency = <100000000>; ++ clocks = <&clk_bus>; ++ compatible = "xlnx,axi-ethernet-3.01.a", "xlnx,axi-ethernet-1.00.a"; ++ device_type = "network"; ++ interrupt-parent = <&interrupt_cntlr>; ++ interrupts = < 2 2 >; ++ local-mac-address = [ 00 0a 35 00 d9 4e ]; ++ phy-mode = "gmii"; ++ phy-handle = <&phy0>; ++ reg = < 0x50100000 0x40000 >; ++ xlnx,avb = <0x0>; ++ xlnx,halfdup = <0x0>; ++ xlnx,include-io = <0x1>; ++ xlnx,mcast-extend = <0x0>; ++ xlnx,phy-type = <0x1>; ++ xlnx,phyaddr = <0x1>; ++ xlnx,rxcsum = <0x0>; ++ xlnx,rxmem = <0x1000>; ++ xlnx,rxvlan-strp = <0x0>; ++ xlnx,rxvlan-tag = <0x0>; ++ xlnx,rxvlan-tran = <0x0>; ++ xlnx,stats = <0x0>; ++ xlnx,txcsum = <0x0>; ++ xlnx,txmem = <0x1000>; ++ xlnx,txvlan-strp = <0x0>; ++ xlnx,txvlan-tag = <0x0>; ++ xlnx,txvlan-tran = <0x0>; ++ xlnx,type = <0x1>; ++ mdio { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ phy0: phy@7 { ++ compatible = "marvell,88e1111"; ++ device_type = "ethernet-phy"; ++ reg = <7>; ++ } ; ++ } ; ++ } ; ++ } ; ++ axi_mm_mb: axi@1 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "xlnx,axi-interconnect-1.06.a", "simple-bus"; ++ ranges ; ++ axi4_0: axi@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "xlnx,axi-interconnect-1.06.a", "simple-bus"; ++ ranges = < 0x80000000 0x80000000 0x40000000 >; ++ } ; + } ; } ; diff --git a/board/xilinx/microblaze-generic/config.mk b/board/xilinx/microblaze-generic/config.mk index 36bdd96..25e97de 100644 @@ -63,115 +582,58 @@ index 36bdd96..25e97de 100644 +PLATFORM_CCPFLAGS += -mxl-pattern-compare +PLATFORM_CCPFLAGS += -mxl-reorder diff --git a/board/xilinx/microblaze-generic/xparameters.h b/board/xilinx/microblaze-generic/xparameters.h -index d6d0d67..f539044 100644 +index dc5645b..80b1ce3 100644 --- a/board/xilinx/microblaze-generic/xparameters.h +++ b/board/xilinx/microblaze-generic/xparameters.h -@@ -1,67 +1,47 @@ --/* -- * (C) Copyright 2007 Michal Simek -- * -- * Michal SIMEK -- * -- * SPDX-License-Identifier: GPL-2.0+ -- * -- * CAUTION: This file is a faked configuration !!! -- * There is no real target for the microblaze-generic -- * configuration. You have to replace this file with -- * the generated file from your Xilinx design flow. -- */ -- --#define XILINX_BOARD_NAME microblaze-generic -- --/* System Clock Frequency */ --#define XILINX_CLOCK_FREQ 100000000 -- +@@ -15,15 +15,11 @@ + /* Microblaze is microblaze_0 */ #define XILINX_USE_MSR_INSTR 1 -#define XILINX_FSL_NUMBER 3 -+#define XILINX_PVR 2 +- +-/* GPIO is LEDs_4Bit*/ +-#define XILINX_GPIO_BASEADDR 0x40000000 +#define XILINX_FSL_NUMBER 0 +#define XILINX_USE_ICACHE 1 +#define XILINX_USE_DCACHE 1 +#define XILINX_DCACHE_BYTE_SIZE 8192 --/* Interrupt controller is opb_intc_0 */ --#define XILINX_INTC_BASEADDR 0x41200000 --#define XILINX_INTC_NUM_INTR_INPUTS 6 -+/* Interrupt controller is interrupt_cntlr */ -+#define XILINX_INTC_BASEADDR 0x40100000 -+#define XILINX_INTC_NUM_INTR_INPUTS 8 - --/* Timer pheriphery is opb_timer_1 */ --#define XILINX_TIMER_BASEADDR 0x41c00000 --#define XILINX_TIMER_IRQ 0 -+/* Timer pheriphery is dual_timer_counter */ -+#define XILINX_TIMER_BASEADDR 0x40300000 -+#define XILINX_TIMER_IRQ 3 - --/* Uart pheriphery is RS232_Uart */ --#define XILINX_UARTLITE_BASEADDR 0x40600000 --#define XILINX_UARTLITE_BAUDRATE 115200 -+/* System Timer Clock Frequency */ -+#define XILINX_CLOCK_FREQ 100000000 -+ -+/* Uart console is rs232_uart_1 */ -+#define XILINX_UART16550 -+#define XILINX_UART16550_BASEADDR 0x40400000 -+#define XILINX_UART16550_CLOCK_HZ 100000000 -+#define CONFIG_CONS_INDEX 1 - --/* IIC pheriphery is IIC_EEPROM */ --#define XILINX_IIC_0_BASEADDR 0x40800000 -+/* IIC pheriphery is iic_eeprom */ -+#define XILINX_IIC_0_BASEADDR 0x40a00000 - #define XILINX_IIC_0_FREQ 100000 - #define XILINX_IIC_0_BIT 0 - --/* GPIO is LEDs_4Bit*/ --#define XILINX_GPIO_BASEADDR 0x40000000 -- --/* Flash Memory is FLASH_2Mx32 */ + /* Flash Memory is FLASH_2Mx32 */ -#define XILINX_FLASH_START 0x2c000000 -#define XILINX_FLASH_SIZE 0x00800000 -+/* GPIO doesn't exist */ - --/* Main Memory is DDR_SDRAM_64Mx32 */ --#define XILINX_RAM_START 0x28000000 --#define XILINX_RAM_SIZE 0x04000000 -+/* SDIO doesn't exist */ - --/* Sysace Controller is SysACE_CompactFlash */ --#define XILINX_SYSACE_BASEADDR 0x41800000 --#define XILINX_SYSACE_HIGHADDR 0x4180ffff --#define XILINX_SYSACE_MEM_WIDTH 16 -+/* Main Memory is ddr3_sdram */ -+#define XILINX_RAM_START 0x80000000 -+#define XILINX_RAM_SIZE 0x40000000 - --/* Ethernet controller is Ethernet_MAC */ --#define XILINX_EMACLITE_BASEADDR 0x40C00000 -+/* Flash Memory is linear_flash */ -+#define XILINX_FLASH_START 0x48000000 -+#define XILINX_FLASH_SIZE 0x08000000 - --/* LL_TEMAC Ethernet controller */ --#define XILINX_LLTEMAC_BASEADDR 0x44000000 --#define XILINX_LLTEMAC_SDMA_CTRL_BASEADDR 0x42000180 --#define XILINX_LLTEMAC_BASEADDR1 0x44200000 --#define XILINX_LLTEMAC_FIFO_BASEADDR1 0x42100000 -+/* Sysace doesn't exist */ - +- -/* Watchdog IP is wxi_timebase_wdt_0 */ -#define XILINX_WATCHDOG_BASEADDR 0x50000000 -#define XILINX_WATCHDOG_IRQ 1 -+/* Ethernet controller is soft_ethernet_mac */ -+#define XILINX_AXIEMAC_BASEADDR 0x50100000 -+#define XILINX_AXIDMA_BASEADDR 0x50000000 ++#define XILINX_FLASH_START 0x48000000 ++#define XILINX_FLASH_SIZE 0x08000000 +diff --git a/configs/microblaze-generic_defconfig b/configs/microblaze-generic_defconfig +index 21a7261..5f17daf 100644 +--- a/configs/microblaze-generic_defconfig ++++ b/configs/microblaze-generic_defconfig +@@ -7,8 +7,8 @@ CONFIG_SPL=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_HUSH_PARSER=y +-CONFIG_SYS_PROMPT="U-Boot-mONStR> " +-CONFIG_CMD_GPIO=y ++CONFIG_SYS_PROMPT="U-Boot> " ++# CONFIG_CMD_GPIO is not set + # CONFIG_CMD_SETEXPR is not set + CONFIG_CMD_TFTPPUT=y + CONFIG_CMD_DHCP=y +@@ -19,5 +19,6 @@ CONFIG_NETCONSOLE=y + CONFIG_DM_ETH=y + CONFIG_XILINX_AXIEMAC=y + CONFIG_XILINX_EMACLITE=y ++CONFIG_NET_RANDOM_ETHADDR=y + CONFIG_SYS_NS16550=y + CONFIG_XILINX_UARTLITE=y diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h -index e16965c..f463b83 100644 +index b424782..eb56f12 100644 --- a/include/configs/microblaze-generic.h +++ b/include/configs/microblaze-generic.h -@@ -151,7 +151,7 @@ +@@ -91,7 +91,7 @@ /* max number of memory banks */ # define CONFIG_SYS_MAX_FLASH_BANKS 1 /* max number of sectors on one chip */ @@ -180,36 +642,15 @@ index e16965c..f463b83 100644 /* hardware flash protection */ # define CONFIG_SYS_FLASH_PROTECTION /* use buffered writes (20x faster) */ -@@ -247,7 +247,9 @@ - #define CONFIG_CMD_ASKENV - #define CONFIG_CMD_IRQ - #define CONFIG_CMD_MFSL --#define CONFIG_CMD_GPIO -+#ifdef CONFIG_XILINX_GPIO -+# define CONFIG_CMD_GPIO -+#endif - - #if defined(CONFIG_DCACHE) || defined(CONFIG_ICACHE) - # define CONFIG_CMD_CACHE -@@ -317,7 +319,7 @@ +@@ -161,6 +161,8 @@ + #define XILINX_DCACHE_BYTE_SIZE 32768 #endif - /* Miscellaneous configurable options */ --#define CONFIG_SYS_PROMPT "U-Boot-mONStR> " -+#define CONFIG_SYS_PROMPT "U-Boot> " - /* size of console buffer */ - #define CONFIG_SYS_CBSIZE 512 - /* print buffer size */ -@@ -350,7 +352,8 @@ - "nc=setenv stdout nc;"\ - "setenv stdin nc\0" \ - "serial=setenv stdout serial;"\ -- "setenv stdin serial\0" -+ "setenv stdin serial\0" \ -+ "ethaddr=00:0a:35:00:01:22\0" - - #define CONFIG_CMDLINE_EDITING - ++#define CONFIG_SYS_BOOTM_LEN (60 * 1024 * 1024) ++ + /* + * BOOTP options + */ -- -2.6.4 +2.7.0 diff --git a/recipes-bsp/u-boot/u-boot-xlnx_2015.07.bb b/recipes-bsp/u-boot/u-boot-xlnx_2015.07.bb deleted file mode 100644 index 25d50eb2..00000000 --- a/recipes-bsp/u-boot/u-boot-xlnx_2015.07.bb +++ /dev/null @@ -1,31 +0,0 @@ -include u-boot-xlnx.inc -include u-boot-spl-zynq-init.inc - -# this matches u-boot-xlnx 'xilinx-v2015.4' release tag -SRCREV = "4942ae4d03ee4ef4b2dd750d441f730150ee9288" -PV = "v2015.07${XILINX_EXTENSION}+git${SRCPV}" - -FILESEXTRAPATHS_prepend := "${THISDIR}/u-boot-xlnx:" -SRC_URI += " \ - file://0001-microblaze-Fix-style-issues-in-header-files.patch \ - file://0002-microblaze-Fix-C99-gnu99-compatiblity-for-inline-fun.patch \ - " - -SRC_URI_append_kc705-trd-microblazeel = " file://microblaze-kc705-trd-Convert-microblaze-generic-to-k.patch" - -LIC_FILES_CHKSUM = "file://README;beginline=1;endline=6;md5=157ab8408beab40cd8ce1dc69f702a6c" - -UBOOT_ENV_zc702-zynq7 = "uEnv" -UBOOT_ENV_zedboard-zynq7 = "uEnv" - -SRC_URI_append_zc702-zynq7 = " file://uEnv.txt" -SRC_URI_append_zedboard-zynq7 = " file://uEnv.txt" - -# u-boot 2015.07 has support for these -HAS_PS7INIT ?= " \ - zynq_microzed_config \ - zynq_zed_config \ - zynq_zc702_config \ - zynq_zc706_config \ - " - diff --git a/recipes-bsp/u-boot/u-boot-xlnx_2016.01.bb b/recipes-bsp/u-boot/u-boot-xlnx_2016.01.bb new file mode 100644 index 00000000..67c73da5 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-xlnx_2016.01.bb @@ -0,0 +1,28 @@ +include u-boot-xlnx.inc +include u-boot-spl-zynq-init.inc + +# this matches u-boot-xlnx 'xilinx-v2016.?' release tag +SRCREV = "68b454fbd9f7ce10e87e736888ea54c1655ce025" +PV = "v2016.01${XILINX_EXTENSION}+git${SRCPV}" + +FILESEXTRAPATHS_prepend := "${THISDIR}/u-boot-xlnx:" + +SRC_URI_append_kc705-trd-microblazeel = " file://microblaze-kc705-trd-Convert-microblaze-generic-to-k.patch" + +LIC_FILES_CHKSUM = "file://README;beginline=1;endline=6;md5=157ab8408beab40cd8ce1dc69f702a6c" + +UBOOT_ENV_zc702-zynq7 = "uEnv" +UBOOT_ENV_zedboard-zynq7 = "uEnv" + +SRC_URI_append_zc702-zynq7 = " file://uEnv.txt" +SRC_URI_append_zedboard-zynq7 = " file://uEnv.txt" + +# u-boot 2016.01 has support for these +HAS_PS7INIT ?= " \ + zynq_microzed_config \ + zynq_zed_config \ + zynq_zc702_config \ + zynq_zc706_config \ + zynq_zybo_config \ + " + -- cgit v1.2.3-54-g00ecf