Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
arm
plat-mxc
include
mach
uncompress.h
Go to the documentation of this file.
1
/*
2
* arch/arm/plat-mxc/include/mach/uncompress.h
3
*
4
* Copyright (C) 1999 ARM Limited
5
* Copyright (C) Shane Nay (
[email protected]
)
6
*
7
* This program is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 2 of the License, or
10
* (at your option) any later version.
11
*
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*/
17
#ifndef __ASM_ARCH_MXC_UNCOMPRESS_H__
18
#define __ASM_ARCH_MXC_UNCOMPRESS_H__
19
20
#define __MXC_BOOT_UNCOMPRESS
21
22
#include <
asm/mach-types.h
>
23
24
unsigned
long
uart_base
;
25
26
#define UART(x) (*(volatile unsigned long *)(uart_base + (x)))
27
28
#define USR2 0x98
29
#define USR2_TXFE (1<<14)
30
#define TXR 0x40
31
#define UCR1 0x80
32
#define UCR1_UARTEN 1
33
34
/*
35
* The following code assumes the serial port has already been
36
* initialized by the bootloader. We search for the first enabled
37
* port in the most probable order. If you didn't setup a port in
38
* your bootloader then nothing will appear (which might be desired).
39
*
40
* This does not append a newline
41
*/
42
43
static
void
putc
(
int
ch)
44
{
45
if
(!
uart_base
)
46
return
;
47
if
(!(
UART
(
UCR1
) &
UCR1_UARTEN
))
48
return
;
49
50
while
(!(
UART
(
USR2
) &
USR2_TXFE
))
51
barrier
();
52
53
UART
(
TXR
) = ch;
54
}
55
56
static
inline
void
flush(
void
)
57
{
58
}
59
60
#define MX1_UART1_BASE_ADDR 0x00206000
61
#define MX25_UART1_BASE_ADDR 0x43f90000
62
#define MX2X_UART1_BASE_ADDR 0x1000a000
63
#define MX3X_UART1_BASE_ADDR 0x43F90000
64
#define MX3X_UART2_BASE_ADDR 0x43F94000
65
#define MX3X_UART5_BASE_ADDR 0x43FB4000
66
#define MX51_UART1_BASE_ADDR 0x73fbc000
67
#define MX50_UART1_BASE_ADDR 0x53fbc000
68
#define MX53_UART1_BASE_ADDR 0x53fbc000
69
70
static
__inline__
void
__arch_decomp_setup(
unsigned
long
arch_id
)
71
{
72
switch
(arch_id) {
73
case
MACH_TYPE_MX1ADS:
74
case
MACH_TYPE_SCB9328:
75
uart_base
=
MX1_UART1_BASE_ADDR
;
76
break
;
77
case
MACH_TYPE_MX25_3DS:
78
uart_base
=
MX25_UART1_BASE_ADDR
;
79
break
;
80
case
MACH_TYPE_IMX27LITE:
81
case
MACH_TYPE_MX27_3DS:
82
case
MACH_TYPE_MX27ADS:
83
case
MACH_TYPE_PCM038:
84
case
MACH_TYPE_MX21ADS:
85
case
MACH_TYPE_PCA100:
86
case
MACH_TYPE_MXT_TD60:
87
case
MACH_TYPE_IMX27IPCAM:
88
uart_base
=
MX2X_UART1_BASE_ADDR
;
89
break
;
90
case
MACH_TYPE_MX31LITE:
91
case
MACH_TYPE_ARMADILLO5X0:
92
case
MACH_TYPE_MX31MOBOARD:
93
case
MACH_TYPE_QONG:
94
case
MACH_TYPE_MX31_3DS:
95
case
MACH_TYPE_PCM037:
96
case
MACH_TYPE_MX31ADS:
97
case
MACH_TYPE_MX35_3DS:
98
case
MACH_TYPE_PCM043:
99
case
MACH_TYPE_LILLY1131:
100
case
MACH_TYPE_VPR200:
101
case
MACH_TYPE_EUKREA_CPUIMX35SD:
102
uart_base
=
MX3X_UART1_BASE_ADDR
;
103
break
;
104
case
MACH_TYPE_MAGX_ZN5:
105
uart_base
=
MX3X_UART2_BASE_ADDR
;
106
break
;
107
case
MACH_TYPE_BUG:
108
uart_base
=
MX3X_UART5_BASE_ADDR
;
109
break
;
110
case
MACH_TYPE_MX51_BABBAGE:
111
case
MACH_TYPE_EUKREA_CPUIMX51SD:
112
case
MACH_TYPE_MX51_3DS:
113
uart_base
=
MX51_UART1_BASE_ADDR
;
114
break
;
115
case
MACH_TYPE_MX50_RDP:
116
uart_base
=
MX50_UART1_BASE_ADDR
;
117
break
;
118
case
MACH_TYPE_MX53_EVK:
119
case
MACH_TYPE_MX53_LOCO:
120
case
MACH_TYPE_MX53_SMD:
121
case
MACH_TYPE_MX53_ARD:
122
uart_base
=
MX53_UART1_BASE_ADDR
;
123
break
;
124
default
:
125
break
;
126
}
127
}
128
129
#define arch_decomp_setup() __arch_decomp_setup(arch_id)
130
#define arch_decomp_wdog()
131
132
#endif
/* __ASM_ARCH_MXC_UNCOMPRESS_H__ */
Generated on Thu Jan 10 2013 12:56:56 for Linux Kernel by
1.8.2