Merge branch 'for-next/mips'
This commit is contained in:
commit
10fb785308
|
@ -23,7 +23,8 @@ But you have to encode barebox image in a very special way.
|
|||
First obtain ``lzma`` and ``mktplinkfw`` utilities.
|
||||
|
||||
The ``lzma`` utility can be obtained in Debian/Ubuntu
|
||||
distro by installing lzma package.
|
||||
distro by installing lzma package
|
||||
(lzma from xz-utils package is unusable).
|
||||
|
||||
The ``mktplinkfw`` utility can be obtained from openwrt, e.g.::
|
||||
|
||||
|
@ -36,8 +37,8 @@ The ``mktplinkfw`` utility can be obtained from openwrt, e.g.::
|
|||
To convert your barebox.bin to U-Boot-loadable image (``6F01A8C0.img``)
|
||||
use this command sequence::
|
||||
|
||||
$ lzma -c -k barebox.bin > barebox.lzma
|
||||
$ ./FW/mktplinkfw -c -H 0x07200103 -W 1 -N TL-WR720N-v3 \
|
||||
$ lzma -c -k barebox-flash-image > barebox.lzma
|
||||
$ ./mktplinkfw -c -H 0x07200103 -W 1 -N TL-WR720N-v3 \
|
||||
-s -F 4Mlzma -k barebox.lzma -o 6F01A8C0.img
|
||||
|
||||
You must setup tftp-server on host 192.168.0.1.
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
debug_ll_ns16550_init
|
||||
|
||||
debug_ll_ns16550_outc '.'
|
||||
debug_ll_outc '.'
|
||||
debug_ll_ns16550_outnl
|
||||
|
||||
mips_nmon
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
debug_ll_ns16550_init
|
||||
|
||||
debug_ll_ns16550_outc '.'
|
||||
debug_ll_outc '.'
|
||||
debug_ll_ns16550_outnl
|
||||
|
||||
mips_nmon
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
debug_ll_ns16550_init
|
||||
|
||||
debug_ll_ns16550_outc '.'
|
||||
debug_ll_outc '.'
|
||||
debug_ll_ns16550_outnl
|
||||
|
||||
mips_nmon
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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__ */
|
||||
|
|
Loading…
Reference in New Issue