blob: cb6dd039bc4d5939d4e13d97bac9a435a366d71f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#ifndef __MACH_DEBUG_LL_H__
#define __MACH_DEBUG_LL_H__
#include <io.h>
#include <config.h>
#include <mach/imx1-regs.h>
#include <mach/imx21-regs.h>
#include <mach/imx25-regs.h>
#include <mach/imx27-regs.h>
#include <mach/imx31-regs.h>
#include <mach/imx35-regs.h>
#include <mach/imx51-regs.h>
#include <mach/imx53-regs.h>
#include <mach/imx6-regs.h>
/* #define IMX_DEBUG_LL_UART_BASE MXxy_UARTx_BASE_ADDR */
#ifndef IMX_DEBUG_LL_UART_BASE
#warning define IMX_DEBUG_LL_UART_BASE properly for debug_ll
#define IMX_DEBUG_LL_UART_BASE 0
#endif
#define URTX0 0x40 /* Transmitter Register */
#define UCR1 0x80 /* Control Register 1 */
#define UCR1_UARTEN (1 << 0) /* UART enabled */
#define USR2 0x98 /* Status Register 2 */
#define USR2_TXDC (1 << 3) /* Transmitter complete */
static inline void PUTC_LL(int c)
{
void __iomem *base = (void *)IMX_DEBUG_LL_UART_BASE;
if (!base)
return;
if (!(readl(base + UCR1) & UCR1_UARTEN))
return;
while (!(readl(base + USR2) & USR2_TXDC));
writel(c, base + URTX0);
}
#endif /* __MACH_DEBUG_LL_H__ */
|