diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2015-05-06 21:36:13 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-05-06 21:36:13 +0200 |
commit | 10fb7853084356ef3c6b40ddf21dfb05dbd15691 (patch) | |
tree | 0d2337ae72f82f0c8c4babe5bae500b6569db21b /arch | |
parent | 4a854c9f4926d96a08ae4b982014ae860a628414 (diff) | |
parent | f76ef11a4ae9c4ac782ffb06ccbb42ea3807e674 (diff) | |
download | barebox-10fb7853084356ef3c6b40ddf21dfb05dbd15691.tar.gz barebox-10fb7853084356ef3c6b40ddf21dfb05dbd15691.tar.xz |
Merge branch 'for-next/mips'
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/boards/img-ci20/include/board/board_pbl_start.h | 2 | ||||
-rw-r--r-- | arch/mips/boards/loongson-ls1b/include/board/board_pbl_start.h | 2 | ||||
-rw-r--r-- | arch/mips/boards/netgear-wg102/include/board/board_pbl_start.h | 6 | ||||
-rw-r--r-- | arch/mips/boards/ritmix-rzx50/include/board/board_pbl_start.h | 2 | ||||
-rw-r--r-- | arch/mips/boards/tplink-mr3020/include/board/board_pbl_start.h | 35 | ||||
-rw-r--r-- | arch/mips/include/asm/debug_ll_ns16550.h | 20 | ||||
-rw-r--r-- | arch/mips/include/asm/pbl_nmon.h | 21 | ||||
-rw-r--r-- | arch/mips/mach-ath79/Kconfig | 3 | ||||
-rw-r--r-- | arch/mips/mach-ath79/include/mach/debug_ll.h | 136 |
9 files changed, 195 insertions, 32 deletions
diff --git a/arch/mips/boards/img-ci20/include/board/board_pbl_start.h b/arch/mips/boards/img-ci20/include/board/board_pbl_start.h index 26232f58c5..42d23c82a9 100644 --- a/arch/mips/boards/img-ci20/include/board/board_pbl_start.h +++ b/arch/mips/boards/img-ci20/include/board/board_pbl_start.h @@ -32,7 +32,7 @@ debug_ll_ns16550_init - debug_ll_ns16550_outc '.' + debug_ll_outc '.' debug_ll_ns16550_outnl mips_nmon diff --git a/arch/mips/boards/loongson-ls1b/include/board/board_pbl_start.h b/arch/mips/boards/loongson-ls1b/include/board/board_pbl_start.h index 1a92794bbe..a3c585ecba 100644 --- a/arch/mips/boards/loongson-ls1b/include/board/board_pbl_start.h +++ b/arch/mips/boards/loongson-ls1b/include/board/board_pbl_start.h @@ -30,7 +30,7 @@ debug_ll_ns16550_init - debug_ll_ns16550_outc '.' + debug_ll_outc '.' debug_ll_ns16550_outnl mips_nmon diff --git a/arch/mips/boards/netgear-wg102/include/board/board_pbl_start.h b/arch/mips/boards/netgear-wg102/include/board/board_pbl_start.h index d74d2c27af..9fb220519f 100644 --- a/arch/mips/boards/netgear-wg102/include/board/board_pbl_start.h +++ b/arch/mips/boards/netgear-wg102/include/board/board_pbl_start.h @@ -35,7 +35,7 @@ pbl_ar2312_rst_uart0 debug_ll_ns16550_init - debug_ll_ns16550_outc 'a' + debug_ll_outc 'a' debug_ll_ns16550_outnl /* check if SDRAM is already configured, @@ -60,7 +60,7 @@ pbl_probe_mem t0, t1, KSEG1 beq t0, t1, sdram_configured nop - debug_ll_ns16550_outc '#' + debug_ll_outc '#' debug_ll_ns16550_outnl 1: @@ -68,7 +68,7 @@ nop sdram_configured: - debug_ll_ns16550_outc 'b' + debug_ll_outc 'b' debug_ll_ns16550_outnl copy_to_link_location pbl_start diff --git a/arch/mips/boards/ritmix-rzx50/include/board/board_pbl_start.h b/arch/mips/boards/ritmix-rzx50/include/board/board_pbl_start.h index fb914d99f2..7c2fa0bedc 100644 --- a/arch/mips/boards/ritmix-rzx50/include/board/board_pbl_start.h +++ b/arch/mips/boards/ritmix-rzx50/include/board/board_pbl_start.h @@ -32,7 +32,7 @@ debug_ll_ns16550_init - debug_ll_ns16550_outc '.' + debug_ll_outc '.' debug_ll_ns16550_outnl mips_nmon diff --git a/arch/mips/boards/tplink-mr3020/include/board/board_pbl_start.h b/arch/mips/boards/tplink-mr3020/include/board/board_pbl_start.h new file mode 100644 index 0000000000..944a510383 --- /dev/null +++ b/arch/mips/boards/tplink-mr3020/include/board/board_pbl_start.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2013, 2015 Antony Pavlov <antonynpavlov@gmail.com> + * Copyright (C) 2013 Oleksij Rempel <linux@rempel-privat.de> + * + * This file is part of barebox. + * See file CREDITS for list of people who contributed to this project. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 + * as published by the Free Software Foundation. + * + * This program 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. + * + */ + +#include <asm/pbl_macros.h> +#include <asm/pbl_nmon.h> + + .macro board_pbl_start + .set push + .set noreorder + + mips_barebox_10h + + mips_disable_interrupts + + mips_nmon + + copy_to_link_location pbl_start + + .set pop + .endm diff --git a/arch/mips/include/asm/debug_ll_ns16550.h b/arch/mips/include/asm/debug_ll_ns16550.h index 032f0a2869..a3e1c52f63 100644 --- a/arch/mips/include/asm/debug_ll_ns16550.h +++ b/arch/mips/include/asm/debug_ll_ns16550.h @@ -90,7 +90,7 @@ static __inline__ void PUTC_LL(char ch) /* * output a character in a0 */ -.macro debug_ll_ns16550_outc_a0 +.macro debug_ll_outc_a0 #ifdef CONFIG_DEBUG_LL .set push .set reorder @@ -110,10 +110,10 @@ static __inline__ void PUTC_LL(char ch) /* * output a character */ -.macro debug_ll_ns16550_outc chr +.macro debug_ll_outc chr #ifdef CONFIG_DEBUG_LL li a0, \chr - debug_ll_ns16550_outc_a0 + debug_ll_outc_a0 #endif /* CONFIG_DEBUG_LL */ .endm @@ -122,15 +122,15 @@ static __inline__ void PUTC_LL(char ch) */ .macro debug_ll_ns16550_outnl #ifdef CONFIG_DEBUG_LL - debug_ll_ns16550_outc '\r' - debug_ll_ns16550_outc '\n' + debug_ll_outc '\r' + debug_ll_outc '\n' #endif /* CONFIG_DEBUG_LL */ .endm /* * output a 32-bit value in hex */ -.macro debug_ll_ns16550_outhexw +.macro debug_ll_outhexw #ifdef CONFIG_DEBUG_LL .set push .set reorder @@ -151,7 +151,7 @@ static __inline__ void PUTC_LL(char ch) 203: addi a0, a0, '0' - debug_ll_ns16550_outc_a0 + debug_ll_outc_a0 bgtz t5, 202b @@ -165,7 +165,7 @@ static __inline__ void PUTC_LL(char ch) * v0 = 0 no character in input buffer * v0 != 0 character in input buffer */ -.macro debug_ll_ns16550_check_char +.macro debug_ll_tstc #ifdef CONFIG_DEBUG_LL .set push .set reorder @@ -183,13 +183,13 @@ static __inline__ void PUTC_LL(char ch) /* * get character to v0 */ -.macro debug_ll_ns16550_getc +.macro debug_ll_getc #ifdef CONFIG_DEBUG_LL .set push .set reorder 204: - debug_ll_ns16550_check_char + debug_ll_tstc /* try again */ beqz v0, 204b diff --git a/arch/mips/include/asm/pbl_nmon.h b/arch/mips/include/asm/pbl_nmon.h index e7baa4c5a9..90e2da8ef9 100644 --- a/arch/mips/include/asm/pbl_nmon.h +++ b/arch/mips/include/asm/pbl_nmon.h @@ -17,8 +17,7 @@ * */ -#include <board/debug_ll.h> -#include <asm/debug_ll_ns16550.h> +#include <mach/debug_ll.h> #define CODE_ESC 0x1b @@ -74,7 +73,7 @@ nmon_wait_user: nmon_outs msg_bsp - debug_ll_ns16550_check_char + debug_ll_tstc bnez v0, 3f @@ -91,7 +90,7 @@ msg_nmon_press_any_key: .align 4 3: /* get received char from ns16550's buffer */ - debug_ll_ns16550_getc + debug_ll_getc #endif /* CONFIG_NMON_USER_START */ nmon_main_help: @@ -102,9 +101,9 @@ nmon_main_help: nmon_main: nmon_outs msg_prompt - debug_ll_ns16550_getc + debug_ll_getc - /* prepare a0 for debug_ll_ns16550_outc_a0 */ + /* prepare a0 for debug_ll_outc_a0 */ move a0, v0 li v1, 'q' @@ -137,7 +136,7 @@ nmon_cmd_d: nmon_outs msg_nl lw a0, (v0) - debug_ll_ns16550_outhexw + debug_ll_outhexw b nmon_main @@ -170,7 +169,7 @@ nmon_cmd_g: b nmon_main _nmon_outc_a0: - debug_ll_ns16550_outc_a0 + debug_ll_outc_a0 jr ra _nmon_outs: @@ -178,7 +177,7 @@ _nmon_outs: addi a1, a1, 1 beqz a0, _nmon_jr_ra_exit - debug_ll_ns16550_outc_a0 + debug_ll_outc_a0 b _nmon_outs @@ -188,7 +187,7 @@ _nmon_gethexw: li t2, 0 _get_hex_digit: - debug_ll_ns16550_getc + debug_ll_getc li v1, CODE_ESC beq v0, v1, nmon_main @@ -221,7 +220,7 @@ _get_hex_digit: sub a3, v0, a3 0: move a0, v0 - debug_ll_ns16550_outc_a0 + debug_ll_outc_a0 sll t2, t2, 4 or t2, t2, a3 diff --git a/arch/mips/mach-ath79/Kconfig b/arch/mips/mach-ath79/Kconfig index 96fffd3fa2..f730b37ac5 100644 --- a/arch/mips/mach-ath79/Kconfig +++ b/arch/mips/mach-ath79/Kconfig @@ -9,6 +9,9 @@ choice config BOARD_TPLINK_MR3020 bool "TP-LINK MR3020" + select HAVE_PBL_IMAGE + select HAVE_IMAGE_COMPRESSION + select HAS_NMON endchoice diff --git a/arch/mips/mach-ath79/include/mach/debug_ll.h b/arch/mips/mach-ath79/include/mach/debug_ll.h index de4c00dfd1..c697318488 100644 --- a/arch/mips/mach-ath79/include/mach/debug_ll.h +++ b/arch/mips/mach-ath79/include/mach/debug_ll.h @@ -18,17 +18,26 @@ #ifndef __AR933X_DEBUG_LL__ #define __AR933X_DEBUG_LL__ -#include <io.h> -#include <linux/bitops.h> #include <asm/addrspace.h> -#include <mach/ar71xx_regs.h> +/* Alas! <mach/ar71xx_regs.h> isn't assembly-tolerant */ +#define AR71XX_APB_BASE 0x18000000 +#define AR933X_UART_BASE (AR71XX_APB_BASE + 0x00020000) + +#define DEBUG_LL_UART_ADDR KSEG1ADDR(AR933X_UART_BASE) #define AR933X_UART_DATA_REG 0x00 #define AR933X_UART_DATA_TX_RX_MASK 0xff -#define AR933X_UART_DATA_TX_CSR BIT(9) +#define AR933X_UART_DATA_TX_CSR 0x200 +#define AR933X_UART_DATA_RX_CSR 0x100 -#define DEBUG_LL_UART_ADDR KSEG1ADDR(AR933X_UART_BASE) +#ifndef __ASSEMBLY__ + +#include <io.h> + +/* + * C macros + */ static inline void ar933x_debug_ll_writel(u32 b, int offset) { @@ -52,5 +61,122 @@ static inline void PUTC_LL(int ch) data = (ch & AR933X_UART_DATA_TX_RX_MASK) | AR933X_UART_DATA_TX_CSR; ar933x_debug_ll_writel(data, AR933X_UART_DATA_REG); } +#else /* __ASSEMBLY__ */ +/* + * Macros for use in assembly language code + */ + +/* + * output a character in a0 + */ +.macro debug_ll_outc_a0 +#ifdef CONFIG_DEBUG_LL + .set push + .set reorder + + la t0, DEBUG_LL_UART_ADDR +201: + lw t1, AR933X_UART_DATA_REG(t0) /* get line status */ + andi t1, t1, AR933X_UART_DATA_TX_CSR /* check for transmitter empty */ + beqz t1, 201b /* try again */ + andi a0, a0, AR933X_UART_DATA_TX_RX_MASK + ori a0, a0, AR933X_UART_DATA_TX_CSR + sw a0, 0(t0) /* write the character */ + .set pop +#endif /* CONFIG_DEBUG_LL */ +.endm + +/* + * output a character + */ +.macro debug_ll_outc chr +#ifdef CONFIG_DEBUG_LL + li a0, \chr + debug_ll_outc_a0 +#endif /* CONFIG_DEBUG_LL */ +.endm + +/* + * output a 32-bit value in hex + */ +.macro debug_ll_outhexw +#ifdef CONFIG_DEBUG_LL + .set push + .set reorder + + move t6, a0 + li t5, 32 + +202: + addi t5, t5, -4 + srlv a0, t6, t5 + + /* output one hex digit */ + andi a0, a0, 15 + blt a0, 10, 203f + + addi a0, a0, ('a' - '9' - 1) + +203: + addi a0, a0, '0' + + debug_ll_outc_a0 + + bgtz t5, 202b + + .set pop +#endif /* CONFIG_DEBUG_LL */ +.endm + +/* + * check character in input buffer + * return value: + * v0 = 0 no character in input buffer + * v0 != 0 character in input buffer + */ +/* FIXME: use tstc */ +.macro debug_ll_tstc +#ifdef CONFIG_DEBUG_LL + .set push + .set reorder + + la t0, DEBUG_LL_UART_ADDR + + /* get line status and check for data present */ + lw v0, AR933X_UART_DATA_REG(t0) + andi v0, v0, AR933X_UART_DATA_RX_CSR + + .set pop +#endif /* CONFIG_DEBUG_LL */ +.endm + +/* + * get character to v0 + */ +.macro debug_ll_getc +#ifdef CONFIG_DEBUG_LL + .set push + .set reorder + + la t0, DEBUG_LL_UART_ADDR +204: + lw v0, AR933X_UART_DATA_REG(t0) + andi v0, v0, AR933X_UART_DATA_RX_CSR + + /* try again */ + beqz v0, 204b + + /* read a character */ + lw v0, AR933X_UART_DATA_REG(t0) + andi v0, v0, AR933X_UART_DATA_TX_RX_MASK + + /* remove the character from the FIFO */ + li t1, AR933X_UART_DATA_RX_CSR + sw t1, AR933X_UART_DATA_REG(t0) + + .set pop +#endif /* CONFIG_DEBUG_LL */ +.endm +#endif /* __ASSEMBLY__ */ #endif /* __AR933X_DEBUG_LL__ */ |