Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
265c60c2
Commit
265c60c2
authored
Feb 28, 2003
by
Russell King
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ARM PATCH] 1404/1: basic Lubbock/PXA250 updates
Patch from Nicolas Pitre
parent
d5ebb498
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
389 additions
and
187 deletions
+389
-187
arch/arm/common/sa1111.c
arch/arm/common/sa1111.c
+12
-0
arch/arm/mach-pxa/Makefile
arch/arm/mach-pxa/Makefile
+4
-5
arch/arm/mach-pxa/generic.c
arch/arm/mach-pxa/generic.c
+22
-17
arch/arm/mach-pxa/irq.c
arch/arm/mach-pxa/irq.c
+0
-6
arch/arm/mach-pxa/leds.c
arch/arm/mach-pxa/leds.c
+1
-1
arch/arm/mach-pxa/lubbock.c
arch/arm/mach-pxa/lubbock.c
+3
-11
include/asm-arm/arch-pxa/bitfield.h
include/asm-arm/arch-pxa/bitfield.h
+113
-0
include/asm-arm/arch-pxa/hardware.h
include/asm-arm/arch-pxa/hardware.h
+0
-1
include/asm-arm/arch-pxa/irqs.h
include/asm-arm/arch-pxa/irqs.h
+76
-75
include/asm-arm/arch-pxa/lubbock.h
include/asm-arm/arch-pxa/lubbock.h
+0
-1
include/asm-arm/arch-pxa/pxa-regs.h
include/asm-arm/arch-pxa/pxa-regs.h
+154
-68
include/asm-arm/arch-pxa/system.h
include/asm-arm/arch-pxa/system.h
+1
-1
include/asm-arm/arch-pxa/time.h
include/asm-arm/arch-pxa/time.h
+3
-1
No files found.
arch/arm/common/sa1111.c
View file @
265c60c2
...
@@ -418,6 +418,7 @@ static void sa1111_wake(struct sa1111 *sachip)
...
@@ -418,6 +418,7 @@ static void sa1111_wake(struct sa1111 *sachip)
spin_lock_irqsave
(
&
sachip
->
lock
,
flags
);
spin_lock_irqsave
(
&
sachip
->
lock
,
flags
);
#if CONFIG_ARCH_SA1100
/*
/*
* First, set up the 3.6864MHz clock on GPIO 27 for the SA-1111:
* First, set up the 3.6864MHz clock on GPIO 27 for the SA-1111:
* (SA-1110 Developer's Manual, section 9.1.2.1)
* (SA-1110 Developer's Manual, section 9.1.2.1)
...
@@ -425,6 +426,11 @@ static void sa1111_wake(struct sa1111 *sachip)
...
@@ -425,6 +426,11 @@ static void sa1111_wake(struct sa1111 *sachip)
GAFR
|=
GPIO_32_768kHz
;
GAFR
|=
GPIO_32_768kHz
;
GPDR
|=
GPIO_32_768kHz
;
GPDR
|=
GPIO_32_768kHz
;
TUCR
=
TUCR_3_6864MHz
;
TUCR
=
TUCR_3_6864MHz
;
#elif CONFIG_ARCH_PXA
pxa_gpio_mode
(
GPIO11_3_6MHz_MD
);
#else
#error missing clock setup
#endif
/*
/*
* Turn VCO on, and disable PLL Bypass.
* Turn VCO on, and disable PLL Bypass.
...
@@ -461,6 +467,8 @@ static void sa1111_wake(struct sa1111 *sachip)
...
@@ -461,6 +467,8 @@ static void sa1111_wake(struct sa1111 *sachip)
spin_unlock_irqrestore
(
&
sachip
->
lock
,
flags
);
spin_unlock_irqrestore
(
&
sachip
->
lock
,
flags
);
}
}
#ifdef CONFIG_ARCH_SA1100
/*
/*
* Configure the SA1111 shared memory controller.
* Configure the SA1111 shared memory controller.
*/
*/
...
@@ -476,6 +484,8 @@ sa1111_configure_smc(struct sa1111 *sachip, int sdram, unsigned int drac,
...
@@ -476,6 +484,8 @@ sa1111_configure_smc(struct sa1111 *sachip, int sdram, unsigned int drac,
sa1111_writel
(
smcr
,
sachip
->
base
+
SA1111_SMCR
);
sa1111_writel
(
smcr
,
sachip
->
base
+
SA1111_SMCR
);
}
}
#endif
static
void
static
void
sa1111_init_one_child
(
struct
sa1111
*
sachip
,
struct
sa1111_dev
*
sadev
,
unsigned
int
offset
)
sa1111_init_one_child
(
struct
sa1111
*
sachip
,
struct
sa1111_dev
*
sadev
,
unsigned
int
offset
)
{
{
...
@@ -569,6 +579,7 @@ __sa1111_probe(struct device *me, unsigned long phys_addr, int irq)
...
@@ -569,6 +579,7 @@ __sa1111_probe(struct device *me, unsigned long phys_addr, int irq)
*/
*/
sa1111_wake
(
sachip
);
sa1111_wake
(
sachip
);
#ifdef CONFIG_ARCH_SA1100
/*
/*
* The SDRAM configuration of the SA1110 and the SA1111 must
* The SDRAM configuration of the SA1110 and the SA1111 must
* match. This is very important to ensure that SA1111 accesses
* match. This is very important to ensure that SA1111 accesses
...
@@ -592,6 +603,7 @@ __sa1111_probe(struct device *me, unsigned long phys_addr, int irq)
...
@@ -592,6 +603,7 @@ __sa1111_probe(struct device *me, unsigned long phys_addr, int irq)
* Enable the SA1110 memory bus request and grant signals.
* Enable the SA1110 memory bus request and grant signals.
*/
*/
sa1110_mb_enable
();
sa1110_mb_enable
();
#endif
/*
/*
* The interrupt controller must be initialised before any
* The interrupt controller must be initialised before any
...
...
arch/arm/mach-pxa/Makefile
View file @
265c60c2
...
@@ -4,18 +4,17 @@
...
@@ -4,18 +4,17 @@
# Common support (must be linked before board specific support)
# Common support (must be linked before board specific support)
obj-y
+=
generic.o irq.o dma.o
obj-y
+=
generic.o irq.o dma.o
obj-$(CONFIG_SA1111)
+=
sa1111.o
# Specific board support
# Specific board support
obj-$(CONFIG_ARCH_LUBBOCK)
+=
lubbock.o
obj-$(CONFIG_ARCH_LUBBOCK)
+=
lubbock.o
obj-$(CONFIG_ARCH_PXA_IDP)
+=
idp.o
obj-$(CONFIG_ARCH_PXA_IDP)
+=
idp.o
# Support for blinky lights
# Support for blinky lights
led
s
-y
:=
leds.o
led-y
:=
leds.o
led
s
-$(CONFIG_ARCH_LUBBOCK)
+=
leds-lubbock.o
led-$(CONFIG_ARCH_LUBBOCK)
+=
leds-lubbock.o
led
s
-$(CONFIG_ARCH_PXA_IDP)
+=
leds-idp.o
led-$(CONFIG_ARCH_PXA_IDP)
+=
leds-idp.o
obj-$(CONFIG_LEDS)
+=
$
(
led
s
-y
)
obj-$(CONFIG_LEDS)
+=
$
(
led-y
)
# Misc features
# Misc features
obj-$(CONFIG_PM)
+=
pm.o sleep.o
obj-$(CONFIG_PM)
+=
pm.o sleep.o
arch/arm/mach-pxa/generic.c
View file @
265c60c2
...
@@ -38,7 +38,7 @@
...
@@ -38,7 +38,7 @@
static
unsigned
char
L_clk_mult
[
32
]
=
{
0
,
27
,
32
,
36
,
40
,
45
,
0
,
};
static
unsigned
char
L_clk_mult
[
32
]
=
{
0
,
27
,
32
,
36
,
40
,
45
,
0
,
};
/* Memory Frequency to Run Mode Frequency Multiplier (M) */
/* Memory Frequency to Run Mode Frequency Multiplier (M) */
static
unsigned
char
M_clk_mult
[
4
]
=
{
0
,
1
,
2
,
0
};
static
unsigned
char
M_clk_mult
[
4
]
=
{
0
,
1
,
2
,
4
};
/* Run Mode Frequency to Turbo Mode Frequency Multiplier (N) */
/* Run Mode Frequency to Turbo Mode Frequency Multiplier (N) */
/* Note: we store the value N * 2 here. */
/* Note: we store the value N * 2 here. */
...
@@ -47,11 +47,12 @@ static unsigned char N2_clk_mult[8] = { 0, 0, 2, 3, 4, 0, 6, 0 };
...
@@ -47,11 +47,12 @@ static unsigned char N2_clk_mult[8] = { 0, 0, 2, 3, 4, 0, 6, 0 };
/* Crystal clock */
/* Crystal clock */
#define BASE_CLK 3686400
#define BASE_CLK 3686400
/*
/*
* Display what we were booted with.
* Get the clock frequency as reflected by CCCR and the turbo flag.
* We assume these values have been applied via a fcs.
* If info is not 0 we also display the current settings.
*/
*/
static
int
__init
pxa_display_clocks
(
void
)
unsigned
int
get_clk_frequency_khz
(
int
info
)
{
{
unsigned
long
cccr
,
turbo
;
unsigned
long
cccr
,
turbo
;
unsigned
int
l
,
L
,
m
,
M
,
n2
,
N
;
unsigned
int
l
,
L
,
m
,
M
,
n2
,
N
;
...
@@ -67,20 +68,24 @@ static int __init pxa_display_clocks(void)
...
@@ -67,20 +68,24 @@ static int __init pxa_display_clocks(void)
M
=
m
*
L
;
M
=
m
*
L
;
N
=
n2
*
M
/
2
;
N
=
n2
*
M
/
2
;
L
+=
5000
;
if
(
info
)
printk
(
KERN_INFO
"Memory clock: %d.%02dMHz (*%d)
\n
"
,
{
L
/
1000000
,
(
L
%
1000000
)
/
10000
,
l
);
L
+=
5000
;
M
+=
5000
;
printk
(
KERN_INFO
"Memory clock: %d.%02dMHz (*%d)
\n
"
,
printk
(
KERN_INFO
"Run Mode clock: %d.%02dMHz (*%d)
\n
"
,
L
/
1000000
,
(
L
%
1000000
)
/
10000
,
l
);
M
/
1000000
,
(
M
%
1000000
)
/
10000
,
m
);
M
+=
5000
;
N
+=
5000
;
printk
(
KERN_INFO
"Run Mode clock: %d.%02dMHz (*%d)
\n
"
,
printk
(
KERN_INFO
"Turbo Mode clock: %d.%02dMHz (*%d.%d, %sactive)
\n
"
,
M
/
1000000
,
(
M
%
1000000
)
/
10000
,
m
);
N
/
1000000
,
(
N
%
1000000
)
/
10000
,
n2
/
2
,
(
n2
%
2
)
*
5
,
N
+=
5000
;
(
turbo
&
1
)
?
""
:
"in"
);
printk
(
KERN_INFO
"Turbo Mode clock: %d.%02dMHz (*%d.%d, %sactive)
\n
"
,
N
/
1000000
,
(
N
%
1000000
)
/
10000
,
n2
/
2
,
(
n2
%
2
)
*
5
,
return
0
;
(
turbo
&
1
)
?
""
:
"in"
);
}
return
(
turbo
&
1
)
?
(
N
/
1000
)
:
(
M
/
1000
);
}
}
EXPORT_SYMBOL
(
get_clk_frequency_khz
);
/*
/*
* Return the current lclk requency in units of 10kHz
* Return the current lclk requency in units of 10kHz
...
@@ -132,5 +137,5 @@ static struct map_desc standard_io_desc[] __initdata = {
...
@@ -132,5 +137,5 @@ static struct map_desc standard_io_desc[] __initdata = {
void
__init
pxa_map_io
(
void
)
void
__init
pxa_map_io
(
void
)
{
{
iotable_init
(
standard_io_desc
,
ARRAY_SIZE
(
standard_io_desc
));
iotable_init
(
standard_io_desc
,
ARRAY_SIZE
(
standard_io_desc
));
pxa_display_clocks
(
);
get_clk_frequency_khz
(
1
);
}
}
arch/arm/mach-pxa/irq.c
View file @
265c60c2
...
@@ -241,10 +241,4 @@ void __init pxa_init_irq(void)
...
@@ -241,10 +241,4 @@ void __init pxa_init_irq(void)
/* Install handler for GPIO 2-80 edge detect interrupts */
/* Install handler for GPIO 2-80 edge detect interrupts */
set_irq_chip
(
IRQ_GPIO_2_80
,
&
pxa_internal_chip
);
set_irq_chip
(
IRQ_GPIO_2_80
,
&
pxa_internal_chip
);
set_irq_chained_handler
(
IRQ_GPIO_2_80
,
pxa_gpio_demux_handler
);
set_irq_chained_handler
(
IRQ_GPIO_2_80
,
pxa_gpio_demux_handler
);
/*
* We generally don't want the LCD IRQ being
* enabled as soon as we request it.
*/
set_irq_flags
(
IRQ_LCD
,
IRQF_VALID
|
IRQF_NOAUTOEN
);
}
}
arch/arm/mach-pxa/leds.c
View file @
265c60c2
...
@@ -27,4 +27,4 @@ pxa_leds_init(void)
...
@@ -27,4 +27,4 @@ pxa_leds_init(void)
return
0
;
return
0
;
}
}
_
_initcall
(
pxa_leds_init
);
core
_initcall
(
pxa_leds_init
);
arch/arm/mach-pxa/lubbock.c
View file @
265c60c2
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
*/
*/
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/major.h>
#include <linux/major.h>
#include <linux/fs.h>
#include <linux/fs.h>
#include <linux/interrupt.h>
#include <linux/interrupt.h>
...
@@ -31,7 +32,6 @@
...
@@ -31,7 +32,6 @@
#include <asm/hardware/sa1111.h>
#include <asm/hardware/sa1111.h>
#include "generic.h"
#include "generic.h"
#include "sa1111.h"
static
void
lubbock_ack_irq
(
unsigned
int
irq
)
static
void
lubbock_ack_irq
(
unsigned
int
irq
)
{
{
...
@@ -106,24 +106,16 @@ static void __init lubbock_init_irq(void)
...
@@ -106,24 +106,16 @@ static void __init lubbock_init_irq(void)
static
int
__init
lubbock_init
(
void
)
static
int
__init
lubbock_init
(
void
)
{
{
int
ret
;
return
sa1111_init
(
0x10000000
,
LUBBOCK_SA1111_IRQ
);
ret
=
sa1111_probe
(
LUBBOCK_SA1111_BASE
);
if
(
ret
)
return
ret
;
sa1111_wake
();
sa1111_init_irq
(
LUBBOCK_SA1111_IRQ
);
return
0
;
}
}
_
_initcall
(
lubbock_init
);
subsys
_initcall
(
lubbock_init
);
static
struct
map_desc
lubbock_io_desc
[]
__initdata
=
{
static
struct
map_desc
lubbock_io_desc
[]
__initdata
=
{
/* virtual physical length type */
/* virtual physical length type */
{
0xf0000000
,
0x08000000
,
0x00100000
,
MT_DEVICE
},
/* CPLD */
{
0xf0000000
,
0x08000000
,
0x00100000
,
MT_DEVICE
},
/* CPLD */
{
0xf1000000
,
0x0c000000
,
0x00100000
,
MT_DEVICE
},
/* LAN91C96 IO */
{
0xf1000000
,
0x0c000000
,
0x00100000
,
MT_DEVICE
},
/* LAN91C96 IO */
{
0xf1100000
,
0x0e000000
,
0x00100000
,
MT_DEVICE
},
/* LAN91C96 Attr */
{
0xf1100000
,
0x0e000000
,
0x00100000
,
MT_DEVICE
},
/* LAN91C96 Attr */
{
0xf4000000
,
0x10000000
,
0x00400000
,
MT_DEVICE
}
/* SA1111 */
};
};
static
void
__init
lubbock_map_io
(
void
)
static
void
__init
lubbock_map_io
(
void
)
...
...
include/asm-arm/arch-pxa/bitfield.h
0 → 100644
View file @
265c60c2
/*
* FILE bitfield.h
*
* Version 1.1
* Author Copyright (c) Marc A. Viredaz, 1998
* DEC Western Research Laboratory, Palo Alto, CA
* Date April 1998 (April 1997)
* System Advanced RISC Machine (ARM)
* Language C or ARM Assembly
* Purpose Definition of macros to operate on bit fields.
*/
#ifndef __BITFIELD_H
#define __BITFIELD_H
#ifndef __ASSEMBLY__
#define UData(Data) ((unsigned long) (Data))
#else
#define UData(Data) (Data)
#endif
/*
* MACRO: Fld
*
* Purpose
* The macro "Fld" encodes a bit field, given its size and its shift value
* with respect to bit 0.
*
* Note
* A more intuitive way to encode bit fields would have been to use their
* mask. However, extracting size and shift value information from a bit
* field's mask is cumbersome and might break the assembler (255-character
* line-size limit).
*
* Input
* Size Size of the bit field, in number of bits.
* Shft Shift value of the bit field with respect to bit 0.
*
* Output
* Fld Encoded bit field.
*/
#define Fld(Size, Shft) (((Size) << 16) + (Shft))
/*
* MACROS: FSize, FShft, FMsk, FAlnMsk, F1stBit
*
* Purpose
* The macros "FSize", "FShft", "FMsk", "FAlnMsk", and "F1stBit" return
* the size, shift value, mask, aligned mask, and first bit of a
* bit field.
*
* Input
* Field Encoded bit field (using the macro "Fld").
*
* Output
* FSize Size of the bit field, in number of bits.
* FShft Shift value of the bit field with respect to bit 0.
* FMsk Mask for the bit field.
* FAlnMsk Mask for the bit field, aligned on bit 0.
* F1stBit First bit of the bit field.
*/
#define FSize(Field) ((Field) >> 16)
#define FShft(Field) ((Field) & 0x0000FFFF)
#define FMsk(Field) (((UData (1) << FSize (Field)) - 1) << FShft (Field))
#define FAlnMsk(Field) ((UData (1) << FSize (Field)) - 1)
#define F1stBit(Field) (UData (1) << FShft (Field))
/*
* MACRO: FInsrt
*
* Purpose
* The macro "FInsrt" inserts a value into a bit field by shifting the
* former appropriately.
*
* Input
* Value Bit-field value.
* Field Encoded bit field (using the macro "Fld").
*
* Output
* FInsrt Bit-field value positioned appropriately.
*/
#define FInsrt(Value, Field) \
(UData (Value) << FShft (Field))
/*
* MACRO: FExtr
*
* Purpose
* The macro "FExtr" extracts the value of a bit field by masking and
* shifting it appropriately.
*
* Input
* Data Data containing the bit-field to be extracted.
* Field Encoded bit field (using the macro "Fld").
*
* Output
* FExtr Bit-field value.
*/
#define FExtr(Data, Field) \
((UData (Data) >> FShft (Field)) & FAlnMsk (Field))
#endif
/* __BITFIELD_H */
include/asm-arm/arch-pxa/hardware.h
View file @
265c60c2
...
@@ -103,6 +103,5 @@ extern unsigned int get_lclk_frequency_10khz(void);
...
@@ -103,6 +103,5 @@ extern unsigned int get_lclk_frequency_10khz(void);
#include "lubbock.h"
#include "lubbock.h"
#include "idp.h"
#include "idp.h"
#include "cerf.h"
#endif
/* _ASM_ARCH_HARDWARE_H */
#endif
/* _ASM_ARCH_HARDWARE_H */
include/asm-arm/arch-pxa/irqs.h
View file @
265c60c2
...
@@ -44,78 +44,86 @@
...
@@ -44,78 +44,86 @@
((i) - PXA_IRQ(32) + 2)
((i) - PXA_IRQ(32) + 2)
#define IRQ_TO_GPIO(i) ((i) - (((i) > IRQ_GPIO1) ? IRQ_GPIO(2) : IRQ_GPIO(0)))
#define IRQ_TO_GPIO(i) ((i) - (((i) > IRQ_GPIO1) ? IRQ_GPIO(2) : IRQ_GPIO(0)))
#define NR_IRQS (IRQ_GPIO(80) + 1)
/*
* The next 16 interrupts are for board specific purposes. Since
#if defined(CONFIG_SA1111)
* the kernel can only run on one machine at a time, we can re-use
* these. If you need more, increase IRQ_BOARD_END, but keep it
#define IRQ_SA1111_START (IRQ_GPIO(80) + 1)
* within sensible limits.
#define SA1111_IRQ(x) (IRQ_SA1111_START + (x))
*/
#define IRQ_BOARD_START (IRQ_GPIO(80) + 1)
#define IRQ_GPAIN0 SA1111_IRQ(0)
#define IRQ_BOARD_END (IRQ_BOARD_START + 16)
#define IRQ_GPAIN1 SA1111_IRQ(1)
#define IRQ_GPAIN2 SA1111_IRQ(2)
#define IRQ_SA1111_START (IRQ_BOARD_END)
#define IRQ_GPAIN3 SA1111_IRQ(3)
#define IRQ_GPAIN0 (IRQ_BOARD_END + 0)
#define IRQ_GPBIN0 SA1111_IRQ(4)
#define IRQ_GPAIN1 (IRQ_BOARD_END + 1)
#define IRQ_GPBIN1 SA1111_IRQ(5)
#define IRQ_GPAIN2 (IRQ_BOARD_END + 2)
#define IRQ_GPBIN2 SA1111_IRQ(6)
#define IRQ_GPAIN3 (IRQ_BOARD_END + 3)
#define IRQ_GPBIN3 SA1111_IRQ(7)
#define IRQ_GPBIN0 (IRQ_BOARD_END + 4)
#define IRQ_GPBIN4 SA1111_IRQ(8)
#define IRQ_GPBIN1 (IRQ_BOARD_END + 5)
#define IRQ_GPBIN5 SA1111_IRQ(9)
#define IRQ_GPBIN2 (IRQ_BOARD_END + 6)
#define IRQ_GPCIN0 SA1111_IRQ(10)
#define IRQ_GPBIN3 (IRQ_BOARD_END + 7)
#define IRQ_GPCIN1 SA1111_IRQ(11)
#define IRQ_GPBIN4 (IRQ_BOARD_END + 8)
#define IRQ_GPCIN2 SA1111_IRQ(12)
#define IRQ_GPBIN5 (IRQ_BOARD_END + 9)
#define IRQ_GPCIN3 SA1111_IRQ(13)
#define IRQ_GPCIN0 (IRQ_BOARD_END + 10)
#define IRQ_GPCIN4 SA1111_IRQ(14)
#define IRQ_GPCIN1 (IRQ_BOARD_END + 11)
#define IRQ_GPCIN5 SA1111_IRQ(15)
#define IRQ_GPCIN2 (IRQ_BOARD_END + 12)
#define IRQ_GPCIN6 SA1111_IRQ(16)
#define IRQ_GPCIN3 (IRQ_BOARD_END + 13)
#define IRQ_GPCIN7 SA1111_IRQ(17)
#define IRQ_GPCIN4 (IRQ_BOARD_END + 14)
#define IRQ_MSTXINT SA1111_IRQ(18)
#define IRQ_GPCIN5 (IRQ_BOARD_END + 15)
#define IRQ_MSRXINT SA1111_IRQ(19)
#define IRQ_GPCIN6 (IRQ_BOARD_END + 16)
#define IRQ_MSSTOPERRINT SA1111_IRQ(20)
#define IRQ_GPCIN7 (IRQ_BOARD_END + 17)
#define IRQ_TPTXINT SA1111_IRQ(21)
#define IRQ_MSTXINT (IRQ_BOARD_END + 18)
#define IRQ_TPRXINT SA1111_IRQ(22)
#define IRQ_MSRXINT (IRQ_BOARD_END + 19)
#define IRQ_TPSTOPERRINT SA1111_IRQ(23)
#define IRQ_MSSTOPERRINT (IRQ_BOARD_END + 20)
#define SSPXMTINT SA1111_IRQ(24)
#define IRQ_TPTXINT (IRQ_BOARD_END + 21)
#define SSPRCVINT SA1111_IRQ(25)
#define IRQ_TPRXINT (IRQ_BOARD_END + 22)
#define SSPROR SA1111_IRQ(26)
#define IRQ_TPSTOPERRINT (IRQ_BOARD_END + 23)
#define AUDXMTDMADONEA SA1111_IRQ(32)
#define SSPXMTINT (IRQ_BOARD_END + 24)
#define AUDRCVDMADONEA SA1111_IRQ(33)
#define SSPRCVINT (IRQ_BOARD_END + 25)
#define AUDXMTDMADONEB SA1111_IRQ(34)
#define SSPROR (IRQ_BOARD_END + 26)
#define AUDRCVDMADONEB SA1111_IRQ(35)
#define AUDXMTDMADONEA (IRQ_BOARD_END + 32)
#define AUDTFSR SA1111_IRQ(36)
#define AUDRCVDMADONEA (IRQ_BOARD_END + 33)
#define AUDRFSR SA1111_IRQ(37)
#define AUDXMTDMADONEB (IRQ_BOARD_END + 34)
#define AUDTUR SA1111_IRQ(38)
#define AUDRCVDMADONEB (IRQ_BOARD_END + 35)
#define AUDROR SA1111_IRQ(39)
#define AUDTFSR (IRQ_BOARD_END + 36)
#define AUDDTS SA1111_IRQ(40)
#define AUDRFSR (IRQ_BOARD_END + 37)
#define AUDRDD SA1111_IRQ(41)
#define AUDTUR (IRQ_BOARD_END + 38)
#define AUDSTO SA1111_IRQ(42)
#define AUDROR (IRQ_BOARD_END + 39)
#define USBPWR SA1111_IRQ(43)
#define AUDDTS (IRQ_BOARD_END + 40)
#define NIRQHCIM SA1111_IRQ(44)
#define AUDRDD (IRQ_BOARD_END + 41)
#define HCIBUFFACC SA1111_IRQ(45)
#define AUDSTO (IRQ_BOARD_END + 42)
#define HCIRMTWKP SA1111_IRQ(46)
#define IRQ_USBPWR (IRQ_BOARD_END + 43)
#define NHCIMFCIR SA1111_IRQ(47)
#define IRQ_HCIM (IRQ_BOARD_END + 44)
#define PORT_RESUME SA1111_IRQ(48)
#define IRQ_HCIBUFFACC (IRQ_BOARD_END + 45)
#define S0_READY_NINT SA1111_IRQ(49)
#define IRQ_HCIRMTWKP (IRQ_BOARD_END + 46)
#define S1_READY_NINT SA1111_IRQ(50)
#define IRQ_NHCIMFCIR (IRQ_BOARD_END + 47)
#define S0_CD_VALID SA1111_IRQ(51)
#define IRQ_USB_PORT_RESUME (IRQ_BOARD_END + 48)
#define S1_CD_VALID SA1111_IRQ(52)
#define IRQ_S0_READY_NINT (IRQ_BOARD_END + 49)
#define S0_BVD1_STSCHG SA1111_IRQ(53)
#define IRQ_S1_READY_NINT (IRQ_BOARD_END + 50)
#define S1_BVD1_STSCHG SA1111_IRQ(54)
#define IRQ_S0_CD_VALID (IRQ_BOARD_END + 51)
#define IRQ_S1_CD_VALID (IRQ_BOARD_END + 52)
#define SA1111_IRQ_MAX SA1111_IRQ(54)
#define IRQ_S0_BVD1_STSCHG (IRQ_BOARD_END + 53)
#define IRQ_S1_BVD1_STSCHG (IRQ_BOARD_END + 54)
#undef NR_IRQS
#define NR_IRQS (SA1111_IRQ_MAX + 1)
#endif // defined(CONFIG_SA1111)
#if defined(CONFIG_ARCH_LUBBOCK) || defined(CONFIG_ARCH_PXA_IDP)
/*
#if CONFIG_SA1111
* Figure out the MAX IRQ number.
#define LUBBOCK_IRQ(x) (SA1111_IRQ_MAX + 1 + (x))
*
* If we have an SA1111, the max IRQ is S1_BVD1_STSCHG+1.
* Otherwise, we have the standard IRQs only.
*/
#ifdef CONFIG_SA1111
#define NR_IRQS (IRQ_S1_BVD1_STSCHG + 1)
#elif defined(CONFIG_ARCH_LUBBOCK)
#define NR_IRQS (IRQ_BOARD_END)
#else
#else
#define
LUBBOCK_IRQ(x) (IRQ_GPIO(80) + 1 + (x)
)
#define
NR_IRQS (IRQ_BOARD_START
)
#endif
#endif
/*
* Board specific IRQs. Define them here.
* Do not surround them with ifdefs.
*/
#define LUBBOCK_IRQ(x) (IRQ_BOARD_START + (x))
#define LUBBOCK_SD_IRQ LUBBOCK_IRQ(0)
#define LUBBOCK_SD_IRQ LUBBOCK_IRQ(0)
#define LUBBOCK_SA1111_IRQ LUBBOCK_IRQ(1)
#define LUBBOCK_SA1111_IRQ LUBBOCK_IRQ(1)
#define LUBBOCK_USB_IRQ LUBBOCK_IRQ(2)
#define LUBBOCK_USB_IRQ LUBBOCK_IRQ(2)
...
@@ -123,10 +131,3 @@
...
@@ -123,10 +131,3 @@
#define LUBBOCK_UCB1400_IRQ LUBBOCK_IRQ(4)
#define LUBBOCK_UCB1400_IRQ LUBBOCK_IRQ(4)
#define LUBBOCK_BB_IRQ LUBBOCK_IRQ(5)
#define LUBBOCK_BB_IRQ LUBBOCK_IRQ(5)
#undef NR_IRQS
#define NR_IRQS (LUBBOCK_IRQ(5) + 1)
#endif // CONFIG_ARCH_LUBBOCK
include/asm-arm/arch-pxa/lubbock.h
View file @
265c60c2
...
@@ -13,7 +13,6 @@
...
@@ -13,7 +13,6 @@
#define LUBBOCK_FPGA_PHYS PXA_CS2_PHYS
#define LUBBOCK_FPGA_PHYS PXA_CS2_PHYS
#define LUBBOCK_FPGA_VIRT (0xf0000000)
/* phys 0x08000000 */
#define LUBBOCK_FPGA_VIRT (0xf0000000)
/* phys 0x08000000 */
#define LUBBOCK_ETH_BASE (0xf1000000)
/* phys 0x0c000000 */
#define LUBBOCK_ETH_BASE (0xf1000000)
/* phys 0x0c000000 */
#define LUBBOCK_SA1111_BASE (0xf4000000)
/* phys 0x10000000 */
#define LUB_P2V(x) ((x) - LUBBOCK_FPGA_PHYS + LUBBOCK_FPGA_VIRT)
#define LUB_P2V(x) ((x) - LUBBOCK_FPGA_PHYS + LUBBOCK_FPGA_VIRT)
#define LUB_V2P(x) ((x) - LUBBOCK_FPGA_VIRT + LUBBOCK_FPGA_PHYS)
#define LUB_V2P(x) ((x) - LUBBOCK_FPGA_VIRT + LUBBOCK_FPGA_PHYS)
...
...
include/asm-arm/arch-pxa/pxa-regs.h
View file @
265c60c2
This diff is collapsed.
Click to expand it.
include/asm-arm/arch-pxa/system.h
View file @
265c60c2
...
@@ -27,7 +27,7 @@ static inline void arch_reset(char mode)
...
@@ -27,7 +27,7 @@ static inline void arch_reset(char mode)
/* Initialize the watchdog and let it fire */
/* Initialize the watchdog and let it fire */
OWER
=
OWER_WME
;
OWER
=
OWER_WME
;
OSSR
=
OSSR_M3
;
OSSR
=
OSSR_M3
;
OSMR3
=
OSCR
+
36864
;
/* ... in 1
0 ms */
OSMR3
=
OSCR
+
36864
0
;
/* ... in 10
0 ms */
}
}
}
}
include/asm-arm/arch-pxa/time.h
View file @
265c60c2
...
@@ -42,7 +42,7 @@ static unsigned long pxa_gettimeoffset (void)
...
@@ -42,7 +42,7 @@ static unsigned long pxa_gettimeoffset (void)
elapsed
=
LATCH
-
ticks_to_match
;
elapsed
=
LATCH
-
ticks_to_match
;
/* Now convert them to usec */
/* Now convert them to usec */
usec
=
(
unsigned
long
)(
elapsed
*
tick
)
/
LATCH
;
usec
=
(
unsigned
long
)(
elapsed
*
(
tick_nsec
/
1000
)
)
/
LATCH
;
return
usec
;
return
usec
;
}
}
...
@@ -52,6 +52,8 @@ static void pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -52,6 +52,8 @@ static void pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
long
flags
;
long
flags
;
int
next_match
;
int
next_match
;
do_profile
(
regs
);
/* Loop until we get ahead of the free running timer.
/* Loop until we get ahead of the free running timer.
* This ensures an exact clock tick count and time accuracy.
* This ensures an exact clock tick count and time accuracy.
* IRQs are disabled inside the loop to ensure coherence between
* IRQs are disabled inside the loop to ensure coherence between
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment