Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-mxs/include/mach/uncompress.h
10820 views
1
/*
2
* arch/arm/mach-mxs/include/mach/uncompress.h
3
*
4
* Copyright (C) 1999 ARM Limited
5
* Copyright (C) Shane Nay ([email protected])
6
* Copyright 2010 Freescale Semiconductor, Inc. All Rights Reserved.
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*/
18
#ifndef __MACH_MXS_UNCOMPRESS_H__
19
#define __MACH_MXS_UNCOMPRESS_H__
20
21
#include <asm/mach-types.h>
22
23
unsigned long mxs_duart_base;
24
25
#define MXS_DUART(x) (*(volatile unsigned long *)(mxs_duart_base + (x)))
26
27
#define MXS_DUART_DR 0x00
28
#define MXS_DUART_FR 0x18
29
#define MXS_DUART_FR_TXFE (1 << 7)
30
#define MXS_DUART_CR 0x30
31
#define MXS_DUART_CR_UARTEN (1 << 0)
32
33
/*
34
* The following code assumes the serial port has already been
35
* initialized by the bootloader. If it's not, the output is
36
* simply discarded.
37
*/
38
39
static void putc(int ch)
40
{
41
if (!mxs_duart_base)
42
return;
43
if (!(MXS_DUART(MXS_DUART_CR) & MXS_DUART_CR_UARTEN))
44
return;
45
46
while (!(MXS_DUART(MXS_DUART_FR) & MXS_DUART_FR_TXFE))
47
barrier();
48
49
MXS_DUART(MXS_DUART_DR) = ch;
50
}
51
52
static inline void flush(void)
53
{
54
}
55
56
#define MX23_DUART_BASE_ADDR 0x80070000
57
#define MX28_DUART_BASE_ADDR 0x80074000
58
59
static inline void __arch_decomp_setup(unsigned long arch_id)
60
{
61
switch (arch_id) {
62
case MACH_TYPE_MX23EVK:
63
mxs_duart_base = MX23_DUART_BASE_ADDR;
64
break;
65
case MACH_TYPE_MX28EVK:
66
case MACH_TYPE_TX28:
67
mxs_duart_base = MX28_DUART_BASE_ADDR;
68
break;
69
default:
70
break;
71
}
72
}
73
74
#define arch_decomp_setup() __arch_decomp_setup(arch_id)
75
#define arch_decomp_wdog()
76
77
#endif /* __MACH_MXS_UNCOMPRESS_H__ */
78
79