Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-pxa/generic.c
10817 views
1
/*
2
* linux/arch/arm/mach-pxa/generic.c
3
*
4
* Author: Nicolas Pitre
5
* Created: Jun 15, 2001
6
* Copyright: MontaVista Software Inc.
7
*
8
* Code common to all PXA machines.
9
*
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License version 2 as
12
* published by the Free Software Foundation.
13
*
14
* Since this file should be linked before any other machine specific file,
15
* the __initcall() here will be executed first. This serves as default
16
* initialization stuff for PXA machines which can be overridden later if
17
* need be.
18
*/
19
#include <linux/module.h>
20
#include <linux/kernel.h>
21
#include <linux/init.h>
22
23
#include <mach/hardware.h>
24
#include <asm/system.h>
25
#include <asm/mach/map.h>
26
#include <asm/mach-types.h>
27
28
#include <mach/reset.h>
29
#include <mach/gpio.h>
30
#include <mach/smemc.h>
31
#include <mach/pxa3xx-regs.h>
32
33
#include "generic.h"
34
35
void clear_reset_status(unsigned int mask)
36
{
37
if (cpu_is_pxa2xx())
38
pxa2xx_clear_reset_status(mask);
39
else {
40
/* RESET_STATUS_* has a 1:1 mapping with ARSR */
41
ARSR = mask;
42
}
43
}
44
45
unsigned long get_clock_tick_rate(void)
46
{
47
unsigned long clock_tick_rate;
48
49
if (cpu_is_pxa25x())
50
clock_tick_rate = 3686400;
51
else if (machine_is_mainstone())
52
clock_tick_rate = 3249600;
53
else
54
clock_tick_rate = 3250000;
55
56
return clock_tick_rate;
57
}
58
EXPORT_SYMBOL(get_clock_tick_rate);
59
60
/*
61
* Get the clock frequency as reflected by CCCR and the turbo flag.
62
* We assume these values have been applied via a fcs.
63
* If info is not 0 we also display the current settings.
64
*/
65
unsigned int get_clk_frequency_khz(int info)
66
{
67
if (cpu_is_pxa25x())
68
return pxa25x_get_clk_frequency_khz(info);
69
else if (cpu_is_pxa27x())
70
return pxa27x_get_clk_frequency_khz(info);
71
return 0;
72
}
73
EXPORT_SYMBOL(get_clk_frequency_khz);
74
75
/*
76
* Intel PXA2xx internal register mapping.
77
*
78
* Note: virtual 0xfffe0000-0xffffffff is reserved for the vector table
79
* and cache flush area.
80
*/
81
static struct map_desc common_io_desc[] __initdata = {
82
{ /* Devs */
83
.virtual = 0xf2000000,
84
.pfn = __phys_to_pfn(0x40000000),
85
.length = 0x02000000,
86
.type = MT_DEVICE
87
}, { /* UNCACHED_PHYS_0 */
88
.virtual = 0xff000000,
89
.pfn = __phys_to_pfn(0x00000000),
90
.length = 0x00100000,
91
.type = MT_DEVICE
92
}
93
};
94
95
void __init pxa_map_io(void)
96
{
97
iotable_init(ARRAY_AND_SIZE(common_io_desc));
98
}
99
100