diff options
Diffstat (limited to 'arch/mips/mach-ath79/include/mach/debug_ll.h')
-rw-r--r-- | arch/mips/mach-ath79/include/mach/debug_ll.h | 167 |
1 files changed, 9 insertions, 158 deletions
diff --git a/arch/mips/mach-ath79/include/mach/debug_ll.h b/arch/mips/mach-ath79/include/mach/debug_ll.h index 04bd3ea72b..73d064a3a0 100644 --- a/arch/mips/mach-ath79/include/mach/debug_ll.h +++ b/arch/mips/mach-ath79/include/mach/debug_ll.h @@ -1,5 +1,5 @@ /* - * based on linux.git/drivers/tty/serial/ar933x_uart.c + * Copyright (C) 2013 Antony Pavlov <antonynpavlov@gmail.com> * * This file is part of barebox. * See file CREDITS for list of people who contributed to this project. @@ -15,162 +15,13 @@ * */ -#ifndef __AR933X_DEBUG_LL__ -#define __AR933X_DEBUG_LL__ +#ifndef __MACH_ATH79_DEBUG_LL__ +#define __MACH_ATH79_DEBUG_LL__ -#include <asm/addrspace.h> -#include <mach/ar71xx_regs.h> +#if defined(CONFIG_SOC_QCA_AR9331) +#include <mach/debug_ll_ar9331.h> +#elif defined(CONFIG_SOC_QCA_AR9344) +#include <mach/debug_ll_ar9344.h> +#endif -#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 0x200 -#define AR933X_UART_DATA_RX_CSR 0x100 - -#ifndef __ASSEMBLY__ - -#include <io.h> - -/* - * C macros - */ - -static inline void ar933x_debug_ll_writel(u32 b, int offset) -{ - __raw_writel(b, (u8 *)DEBUG_LL_UART_ADDR + offset); -} - -static inline u32 ar933x_debug_ll_readl(int offset) -{ - return __raw_readl((u8 *)DEBUG_LL_UART_ADDR + offset); -} - -static inline void PUTC_LL(int ch) -{ - u32 data; - - /* wait transmitter ready */ - data = ar933x_debug_ll_readl(AR933X_UART_DATA_REG); - while (!(data & AR933X_UART_DATA_TX_CSR)) - data = ar933x_debug_ll_readl(AR933X_UART_DATA_REG); - - 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 - */ - -#define AR933X_UART_CS_REG 0x04 -#define UART_CS_REG ((KSEG1 | AR933X_UART_BASE) | AR933X_UART_CS_REG) -#define AR933X_UART_CS_IF_MODE_S 2 -#define AR933X_UART_CS_IF_MODE_DCE 2 -#define AR933X_UART_CS_TX_READY_ORIDE BIT(7) -#define AR933X_UART_CS_RX_READY_ORIDE BIT(8) - -/* - * simple uart clock setup - * from u-boot_mod/u-boot/cpu/mips/ar7240/hornet_serial.c - */ -#define BAUD_CLOCK 25000000 -#define CLOCK_SCALE ((BAUD_CLOCK / (16 * CONFIG_BAUDRATE)) - 1) -#define CLOCK_STEP 0x2000 - -#define AR933X_UART_CLOCK_REG 0x08 -#define CLOCK_REG ((KSEG1 | AR933X_UART_BASE) | AR933X_UART_CLOCK_REG) - -.macro debug_ll_ar9331_init -#ifdef CONFIG_DEBUG_LL - - pbl_reg_writel ((AR933X_UART_CS_IF_MODE_DCE << AR933X_UART_CS_IF_MODE_S) \ - | AR933X_UART_CS_TX_READY_ORIDE \ - | AR933X_UART_CS_RX_READY_ORIDE), UART_CS_REG - pbl_reg_writel ((CLOCK_SCALE << 16) | CLOCK_STEP), CLOCK_REG - -#endif /* CONFIG_DEBUG_LL */ -.endm - -/* - * 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 - -/* - * 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__ */ +#endif /* __MACH_AR9344_DEBUG_LL_H__ */ |