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
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)
spin_lock_irqsave
(
&
sachip
->
lock
,
flags
);
#if CONFIG_ARCH_SA1100
/*
* First, set up the 3.6864MHz clock on GPIO 27 for the SA-1111:
* (SA-1110 Developer's Manual, section 9.1.2.1)
...
...
@@ -425,6 +426,11 @@ static void sa1111_wake(struct sa1111 *sachip)
GAFR
|=
GPIO_32_768kHz
;
GPDR
|=
GPIO_32_768kHz
;
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.
...
...
@@ -461,6 +467,8 @@ static void sa1111_wake(struct sa1111 *sachip)
spin_unlock_irqrestore
(
&
sachip
->
lock
,
flags
);
}
#ifdef CONFIG_ARCH_SA1100
/*
* Configure the SA1111 shared memory controller.
*/
...
...
@@ -476,6 +484,8 @@ sa1111_configure_smc(struct sa1111 *sachip, int sdram, unsigned int drac,
sa1111_writel
(
smcr
,
sachip
->
base
+
SA1111_SMCR
);
}
#endif
static
void
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)
*/
sa1111_wake
(
sachip
);
#ifdef CONFIG_ARCH_SA1100
/*
* The SDRAM configuration of the SA1110 and the SA1111 must
* 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)
* Enable the SA1110 memory bus request and grant signals.
*/
sa1110_mb_enable
();
#endif
/*
* The interrupt controller must be initialised before any
...
...
arch/arm/mach-pxa/Makefile
View file @
265c60c2
...
...
@@ -4,18 +4,17 @@
# Common support (must be linked before board specific support)
obj-y
+=
generic.o irq.o dma.o
obj-$(CONFIG_SA1111)
+=
sa1111.o
# Specific board support
obj-$(CONFIG_ARCH_LUBBOCK)
+=
lubbock.o
obj-$(CONFIG_ARCH_PXA_IDP)
+=
idp.o
# Support for blinky lights
led
s
-y
:=
leds.o
led
s
-$(CONFIG_ARCH_LUBBOCK)
+=
leds-lubbock.o
led
s
-$(CONFIG_ARCH_PXA_IDP)
+=
leds-idp.o
led-y
:=
leds.o
led-$(CONFIG_ARCH_LUBBOCK)
+=
leds-lubbock.o
led-$(CONFIG_ARCH_PXA_IDP)
+=
leds-idp.o
obj-$(CONFIG_LEDS)
+=
$
(
led
s
-y
)
obj-$(CONFIG_LEDS)
+=
$
(
led-y
)
# Misc features
obj-$(CONFIG_PM)
+=
pm.o sleep.o
arch/arm/mach-pxa/generic.c
View file @
265c60c2
...
...
@@ -38,7 +38,7 @@
static
unsigned
char
L_clk_mult
[
32
]
=
{
0
,
27
,
32
,
36
,
40
,
45
,
0
,
};
/* 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) */
/* 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 };
/* Crystal clock */
#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
int
l
,
L
,
m
,
M
,
n2
,
N
;
...
...
@@ -67,20 +68,24 @@ static int __init pxa_display_clocks(void)
M
=
m
*
L
;
N
=
n2
*
M
/
2
;
L
+=
5000
;
printk
(
KERN_INFO
"Memory clock: %d.%02dMHz (*%d)
\n
"
,
L
/
1000000
,
(
L
%
1000000
)
/
10000
,
l
);
M
+=
5000
;
printk
(
KERN_INFO
"Run Mode clock: %d.%02dMHz (*%d)
\n
"
,
M
/
1000000
,
(
M
%
1000000
)
/
10000
,
m
);
N
+=
5000
;
printk
(
KERN_INFO
"Turbo Mode clock: %d.%02dMHz (*%d.%d, %sactive)
\n
"
,
N
/
1000000
,
(
N
%
1000000
)
/
10000
,
n2
/
2
,
(
n2
%
2
)
*
5
,
(
turbo
&
1
)
?
""
:
"in"
);
return
0
;
if
(
info
)
{
L
+=
5000
;
printk
(
KERN_INFO
"Memory clock: %d.%02dMHz (*%d)
\n
"
,
L
/
1000000
,
(
L
%
1000000
)
/
10000
,
l
);
M
+=
5000
;
printk
(
KERN_INFO
"Run Mode clock: %d.%02dMHz (*%d)
\n
"
,
M
/
1000000
,
(
M
%
1000000
)
/
10000
,
m
);
N
+=
5000
;
printk
(
KERN_INFO
"Turbo Mode clock: %d.%02dMHz (*%d.%d, %sactive)
\n
"
,
N
/
1000000
,
(
N
%
1000000
)
/
10000
,
n2
/
2
,
(
n2
%
2
)
*
5
,
(
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
...
...
@@ -132,5 +137,5 @@ static struct map_desc standard_io_desc[] __initdata = {
void
__init
pxa_map_io
(
void
)
{
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)
/* Install handler for GPIO 2-80 edge detect interrupts */
set_irq_chip
(
IRQ_GPIO_2_80
,
&
pxa_internal_chip
);
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)
return
0
;
}
_
_initcall
(
pxa_leds_init
);
core
_initcall
(
pxa_leds_init
);
arch/arm/mach-pxa/lubbock.c
View file @
265c60c2
...
...
@@ -13,6 +13,7 @@
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/major.h>
#include <linux/fs.h>
#include <linux/interrupt.h>
...
...
@@ -31,7 +32,6 @@
#include <asm/hardware/sa1111.h>
#include "generic.h"
#include "sa1111.h"
static
void
lubbock_ack_irq
(
unsigned
int
irq
)
{
...
...
@@ -106,24 +106,16 @@ static void __init lubbock_init_irq(void)
static
int
__init
lubbock_init
(
void
)
{
int
ret
;
ret
=
sa1111_probe
(
LUBBOCK_SA1111_BASE
);
if
(
ret
)
return
ret
;
sa1111_wake
();
sa1111_init_irq
(
LUBBOCK_SA1111_IRQ
);
return
0
;
return
sa1111_init
(
0x10000000
,
LUBBOCK_SA1111_IRQ
);
}
_
_initcall
(
lubbock_init
);
subsys
_initcall
(
lubbock_init
);
static
struct
map_desc
lubbock_io_desc
[]
__initdata
=
{
/* virtual physical length type */
{
0xf0000000
,
0x08000000
,
0x00100000
,
MT_DEVICE
},
/* CPLD */
{
0xf1000000
,
0x0c000000
,
0x00100000
,
MT_DEVICE
},
/* LAN91C96 IO */
{
0xf1100000
,
0x0e000000
,
0x00100000
,
MT_DEVICE
},
/* LAN91C96 Attr */
{
0xf4000000
,
0x10000000
,
0x00400000
,
MT_DEVICE
}
/* SA1111 */
};
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);
#include "lubbock.h"
#include "idp.h"
#include "cerf.h"
#endif
/* _ASM_ARCH_HARDWARE_H */
include/asm-arm/arch-pxa/irqs.h
View file @
265c60c2
...
...
@@ -44,78 +44,86 @@
((i) - PXA_IRQ(32) + 2)
#define IRQ_TO_GPIO(i) ((i) - (((i) > IRQ_GPIO1) ? IRQ_GPIO(2) : IRQ_GPIO(0)))
#define NR_IRQS (IRQ_GPIO(80) + 1)
#if defined(CONFIG_SA1111)
#define IRQ_SA1111_START (IRQ_GPIO(80) + 1)
#define SA1111_IRQ(x) (IRQ_SA1111_START + (x))
#define IRQ_GPAIN0 SA1111_IRQ(0)
#define IRQ_GPAIN1 SA1111_IRQ(1)
#define IRQ_GPAIN2 SA1111_IRQ(2)
#define IRQ_GPAIN3 SA1111_IRQ(3)
#define IRQ_GPBIN0 SA1111_IRQ(4)
#define IRQ_GPBIN1 SA1111_IRQ(5)
#define IRQ_GPBIN2 SA1111_IRQ(6)
#define IRQ_GPBIN3 SA1111_IRQ(7)
#define IRQ_GPBIN4 SA1111_IRQ(8)
#define IRQ_GPBIN5 SA1111_IRQ(9)
#define IRQ_GPCIN0 SA1111_IRQ(10)
#define IRQ_GPCIN1 SA1111_IRQ(11)
#define IRQ_GPCIN2 SA1111_IRQ(12)
#define IRQ_GPCIN3 SA1111_IRQ(13)
#define IRQ_GPCIN4 SA1111_IRQ(14)
#define IRQ_GPCIN5 SA1111_IRQ(15)
#define IRQ_GPCIN6 SA1111_IRQ(16)
#define IRQ_GPCIN7 SA1111_IRQ(17)
#define IRQ_MSTXINT SA1111_IRQ(18)
#define IRQ_MSRXINT SA1111_IRQ(19)
#define IRQ_MSSTOPERRINT SA1111_IRQ(20)
#define IRQ_TPTXINT SA1111_IRQ(21)
#define IRQ_TPRXINT SA1111_IRQ(22)
#define IRQ_TPSTOPERRINT SA1111_IRQ(23)
#define SSPXMTINT SA1111_IRQ(24)
#define SSPRCVINT SA1111_IRQ(25)
#define SSPROR SA1111_IRQ(26)
#define AUDXMTDMADONEA SA1111_IRQ(32)
#define AUDRCVDMADONEA SA1111_IRQ(33)
#define AUDXMTDMADONEB SA1111_IRQ(34)
#define AUDRCVDMADONEB SA1111_IRQ(35)
#define AUDTFSR SA1111_IRQ(36)
#define AUDRFSR SA1111_IRQ(37)
#define AUDTUR SA1111_IRQ(38)
#define AUDROR SA1111_IRQ(39)
#define AUDDTS SA1111_IRQ(40)
#define AUDRDD SA1111_IRQ(41)
#define AUDSTO SA1111_IRQ(42)
#define USBPWR SA1111_IRQ(43)
#define NIRQHCIM SA1111_IRQ(44)
#define HCIBUFFACC SA1111_IRQ(45)
#define HCIRMTWKP SA1111_IRQ(46)
#define NHCIMFCIR SA1111_IRQ(47)
#define PORT_RESUME SA1111_IRQ(48)
#define S0_READY_NINT SA1111_IRQ(49)
#define S1_READY_NINT SA1111_IRQ(50)
#define S0_CD_VALID SA1111_IRQ(51)
#define S1_CD_VALID SA1111_IRQ(52)
#define S0_BVD1_STSCHG SA1111_IRQ(53)
#define S1_BVD1_STSCHG SA1111_IRQ(54)
#define SA1111_IRQ_MAX SA1111_IRQ(54)
#undef NR_IRQS
#define NR_IRQS (SA1111_IRQ_MAX + 1)
#endif // defined(CONFIG_SA1111)
/*
* The next 16 interrupts are for board specific purposes. Since
* 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
* within sensible limits.
*/
#define IRQ_BOARD_START (IRQ_GPIO(80) + 1)
#define IRQ_BOARD_END (IRQ_BOARD_START + 16)
#define IRQ_SA1111_START (IRQ_BOARD_END)
#define IRQ_GPAIN0 (IRQ_BOARD_END + 0)
#define IRQ_GPAIN1 (IRQ_BOARD_END + 1)
#define IRQ_GPAIN2 (IRQ_BOARD_END + 2)
#define IRQ_GPAIN3 (IRQ_BOARD_END + 3)
#define IRQ_GPBIN0 (IRQ_BOARD_END + 4)
#define IRQ_GPBIN1 (IRQ_BOARD_END + 5)
#define IRQ_GPBIN2 (IRQ_BOARD_END + 6)
#define IRQ_GPBIN3 (IRQ_BOARD_END + 7)
#define IRQ_GPBIN4 (IRQ_BOARD_END + 8)
#define IRQ_GPBIN5 (IRQ_BOARD_END + 9)
#define IRQ_GPCIN0 (IRQ_BOARD_END + 10)
#define IRQ_GPCIN1 (IRQ_BOARD_END + 11)
#define IRQ_GPCIN2 (IRQ_BOARD_END + 12)
#define IRQ_GPCIN3 (IRQ_BOARD_END + 13)
#define IRQ_GPCIN4 (IRQ_BOARD_END + 14)
#define IRQ_GPCIN5 (IRQ_BOARD_END + 15)
#define IRQ_GPCIN6 (IRQ_BOARD_END + 16)
#define IRQ_GPCIN7 (IRQ_BOARD_END + 17)
#define IRQ_MSTXINT (IRQ_BOARD_END + 18)
#define IRQ_MSRXINT (IRQ_BOARD_END + 19)
#define IRQ_MSSTOPERRINT (IRQ_BOARD_END + 20)
#define IRQ_TPTXINT (IRQ_BOARD_END + 21)
#define IRQ_TPRXINT (IRQ_BOARD_END + 22)
#define IRQ_TPSTOPERRINT (IRQ_BOARD_END + 23)
#define SSPXMTINT (IRQ_BOARD_END + 24)
#define SSPRCVINT (IRQ_BOARD_END + 25)
#define SSPROR (IRQ_BOARD_END + 26)
#define AUDXMTDMADONEA (IRQ_BOARD_END + 32)
#define AUDRCVDMADONEA (IRQ_BOARD_END + 33)
#define AUDXMTDMADONEB (IRQ_BOARD_END + 34)
#define AUDRCVDMADONEB (IRQ_BOARD_END + 35)
#define AUDTFSR (IRQ_BOARD_END + 36)
#define AUDRFSR (IRQ_BOARD_END + 37)
#define AUDTUR (IRQ_BOARD_END + 38)
#define AUDROR (IRQ_BOARD_END + 39)
#define AUDDTS (IRQ_BOARD_END + 40)
#define AUDRDD (IRQ_BOARD_END + 41)
#define AUDSTO (IRQ_BOARD_END + 42)
#define IRQ_USBPWR (IRQ_BOARD_END + 43)
#define IRQ_HCIM (IRQ_BOARD_END + 44)
#define IRQ_HCIBUFFACC (IRQ_BOARD_END + 45)
#define IRQ_HCIRMTWKP (IRQ_BOARD_END + 46)
#define IRQ_NHCIMFCIR (IRQ_BOARD_END + 47)
#define IRQ_USB_PORT_RESUME (IRQ_BOARD_END + 48)
#define IRQ_S0_READY_NINT (IRQ_BOARD_END + 49)
#define IRQ_S1_READY_NINT (IRQ_BOARD_END + 50)
#define IRQ_S0_CD_VALID (IRQ_BOARD_END + 51)
#define IRQ_S1_CD_VALID (IRQ_BOARD_END + 52)
#define IRQ_S0_BVD1_STSCHG (IRQ_BOARD_END + 53)
#define IRQ_S1_BVD1_STSCHG (IRQ_BOARD_END + 54)
#if defined(CONFIG_ARCH_LUBBOCK) || defined(CONFIG_ARCH_PXA_IDP)
#if CONFIG_SA1111
#define LUBBOCK_IRQ(x) (SA1111_IRQ_MAX + 1 + (x))
/*
* Figure out the MAX IRQ number.
*
* 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
#define
LUBBOCK_IRQ(x) (IRQ_GPIO(80) + 1 + (x)
)
#define
NR_IRQS (IRQ_BOARD_START
)
#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_SA1111_IRQ LUBBOCK_IRQ(1)
#define LUBBOCK_USB_IRQ LUBBOCK_IRQ(2)
...
...
@@ -123,10 +131,3 @@
#define LUBBOCK_UCB1400_IRQ LUBBOCK_IRQ(4)
#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 @@
#define LUBBOCK_FPGA_PHYS PXA_CS2_PHYS
#define LUBBOCK_FPGA_VIRT (0xf0000000)
/* phys 0x08000000 */
#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_V2P(x) ((x) - LUBBOCK_FPGA_VIRT + LUBBOCK_FPGA_PHYS)
...
...
include/asm-arm/arch-pxa/pxa-regs.h
View file @
265c60c2
...
...
@@ -380,32 +380,12 @@ typedef void (*ExcpHndlr) (void) ;
/*
* IrSR (Infrared Selection Register)
*/
#define IrSR_OFFSET 0x20
#define IrSR_RXPL_NEG_IS_ZERO (1<<4)
#define IrSR_RXPL_POS_IS_ZERO 0x0
#define IrSR_TXPL_NEG_IS_ZERO (1<<3)
#define IrSR_TXPL_POS_IS_ZERO 0x0
#define IrSR_XMODE_PULSE_1_6 (1<<2)
#define IrSR_XMODE_PULSE_3_16 0x0
#define IrSR_RCVEIR_IR_MODE (1<<1)
#define IrSR_RCVEIR_UART_MODE 0x0
#define IrSR_XMITIR_IR_MODE (1<<0)
#define IrSR_XMITIR_UART_MODE 0x0
#define IrSR_IR_RECEIVE_ON (\
IrSR_RXPL_NEG_IS_ZERO | \
IrSR_TXPL_POS_IS_ZERO | \
IrSR_XMODE_PULSE_3_16 | \
IrSR_RCVEIR_IR_MODE | \
IrSR_XMITIR_UART_MODE)
#define IrSR_IR_TRANSMIT_ON (\
IrSR_RXPL_NEG_IS_ZERO | \
IrSR_TXPL_POS_IS_ZERO | \
IrSR_XMODE_PULSE_3_16 | \
IrSR_RCVEIR_UART_MODE | \
IrSR_XMITIR_IR_MODE)
#define STISR_RXPL (1 << 4)
/* Receive Data Polarity */
#define STISR_TXPL (1 << 3)
/* Transmit Data Polarity */
#define STISR_XMODE (1 << 2)
/* Transmit Pulse Width Select */
#define STISR_RCVEIR (1 << 1)
/* Receiver SIR Enable */
#define STISR_XMITIR (1 << 0)
/* Transmitter SIR Enable */
/*
* I2C registers
...
...
@@ -417,53 +397,49 @@ typedef void (*ExcpHndlr) (void) ;
#define ISR __REG(0x40301698)
/* I2C Status Register - ISR */
#define ISAR __REG(0x403016A0)
/* I2C Slave Address Register - ISAR */
/* ----- Control register bits ---------------------------------------- */
#define ICR_START 0x1
/* start bit */
#define ICR_STOP 0x2
/* stop bit */
#define ICR_ACKNAK 0x4
/* send ACK(0) or NAK(1) */
#define ICR_TB 0x8
/* transfer byte bit */
#define ICR_MA 0x10
/* master abort */
#define ICR_SCLE 0x20
/* master clock enable */
#define ICR_IUE 0x40
/* unit enable */
#define ICR_GCD 0x80
/* general call disable */
#define ICR_ITEIE 0x100
/* enable tx interrupts */
#define ICR_IRFIE 0x200
/* enable rx interrupts */
#define ICR_BEIE 0x400
/* enable bus error ints */
#define ICR_SSDIE 0x800
/* slave STOP detected int enable */
#define ICR_ALDIE 0x1000
/* enable arbitration interrupt */
#define ICR_SADIE 0x2000
/* slave address detected int enable */
#define ICR_UR 0x4000
/* unit reset */
/* ----- Status register bits ----------------------------------------- */
#define ISR_RWM 0x1
/* read/write mode */
#define ISR_ACKNAK 0x2
/* ack/nak status */
#define ISR_UB 0x4
/* unit busy */
#define ISR_IBB 0x8
/* bus busy */
#define ISR_SSD 0x10
/* slave stop detected */
#define ISR_ALD 0x20
/* arbitration loss detected */
#define ISR_ITE 0x40
/* tx buffer empty */
#define ISR_IRF 0x80
/* rx buffer full */
#define ISR_GCAD 0x100
/* general call address detected */
#define ISR_SAD 0x200
/* slave address detected */
#define ISR_BED 0x400
/* bus error no ACK/NAK */
#define ICR_START (1 << 0)
/* start bit */
#define ICR_STOP (1 << 1)
/* stop bit */
#define ICR_ACKNAK (1 << 2)
/* send ACK(0) or NAK(1) */
#define ICR_TB (1 << 3)
/* transfer byte bit */
#define ICR_MA (1 << 4)
/* master abort */
#define ICR_SCLE (1 << 5)
/* master clock enable */
#define ICR_IUE (1 << 6)
/* unit enable */
#define ICR_GCD (1 << 7)
/* general call disable */
#define ICR_ITEIE (1 << 8)
/* enable tx interrupts */
#define ICR_IRFIE (1 << 9)
/* enable rx interrupts */
#define ICR_BEIE (1 << 10)
/* enable bus error ints */
#define ICR_SSDIE (1 << 11)
/* slave STOP detected int enable */
#define ICR_ALDIE (1 << 12)
/* enable arbitration interrupt */
#define ICR_SADIE (1 << 13)
/* slave address detected int enable */
#define ICR_UR (1 << 14)
/* unit reset */
#define ISR_RWM (1 << 0)
/* read/write mode */
#define ISR_ACKNAK (1 << 1)
/* ack/nak status */
#define ISR_UB (1 << 2)
/* unit busy */
#define ISR_IBB (1 << 3)
/* bus busy */
#define ISR_SSD (1 << 4)
/* slave stop detected */
#define ISR_ALD (1 << 5)
/* arbitration loss detected */
#define ISR_ITE (1 << 6)
/* tx buffer empty */
#define ISR_IRF (1 << 7)
/* rx buffer full */
#define ISR_GCAD (1 << 8)
/* general call address detected */
#define ISR_SAD (1 << 9)
/* slave address detected */
#define ISR_BED (1 << 10)
/* bus error no ACK/NAK */
/*
* Serial Audio Controller
*/
/* FIXME the audio defines collide w/ the SA1111 defines. I don't like these
* short defines because there is too much chance of namespace collision */
//#define SACR0 __REG(0x40400000) /* Global Control Register */
//#define SACR1 __REG(0x40400004) /* Serial Audio I 2 S/MSB-Justified Control Register */
//#define SASR0 __REG(0x4040000C) /* Serial Audio I 2 S/MSB-Justified Interface and FIFO Status Register */
//#define SAIMR __REG(0x40400014) /* Serial Audio Interrupt Mask Register */
//#define SAICR __REG(0x40400018) /* Serial Audio Interrupt Clear Register */
//#define SADIV __REG(0x40400060) /* Audio Clock Divider Register. */
//#define SADR __REG(0x40400080) /* Serial Audio Data Register (TX and RX FIFO access Register). */
/* FIXME: This clash with SA1111 defines */
#ifndef CONFIG_SA1111
#define SACR0 __REG(0x40400000)
/* Global Control Register */
#define SACR1 __REG(0x40400004)
/* Serial Audio I 2 S/MSB-Justified Control Register */
#define SASR0 __REG(0x4040000C)
/* Serial Audio I 2 S/MSB-Justified Interface and FIFO Status Register */
#define SAIMR __REG(0x40400014)
/* Serial Audio Interrupt Mask Register */
#define SAICR __REG(0x40400018)
/* Serial Audio Interrupt Clear Register */
#define SADIV __REG(0x40400060)
/* Audio Clock Divider Register. */
#define SADR __REG(0x40400080)
/* Serial Audio Data Register (TX and RX FIFO access Register). */
#endif
/*
...
...
@@ -714,6 +690,30 @@ typedef void (*ExcpHndlr) (void) ;
#define ICSR0 __REG(0x40800014)
/* ICP Status Register 0 */
#define ICSR1 __REG(0x40800018)
/* ICP Status Register 1 */
#define ICCR0_AME (1 << 7)
/* Adress match enable */
#define ICCR0_TIE (1 << 6)
/* Transmit FIFO interrupt enable */
#define ICCR0_RIE (1 << 5)
/* Recieve FIFO interrupt enable */
#define ICCR0_RXE (1 << 4)
/* Receive enable */
#define ICCR0_TXE (1 << 3)
/* Transmit enable */
#define ICCR0_TUS (1 << 2)
/* Transmit FIFO underrun select */
#define ICCR0_LBM (1 << 1)
/* Loopback mode */
#define ICCR0_ITR (1 << 0)
/* IrDA transmission */
#define ICSR0_FRE (1 << 5)
/* Framing error */
#define ICSR0_RFS (1 << 4)
/* Receive FIFO service request */
#define ICSR0_TFS (1 << 3)
/* Transnit FIFO service request */
#define ICSR0_RAB (1 << 2)
/* Receiver abort */
#define ICSR0_TUR (1 << 1)
/* Trunsmit FIFO underun */
#define ICSR0_EIF (1 << 0)
/* End/Error in FIFO */
#define ICSR1_ROR (1 << 6)
/* Receiver FIFO underrun */
#define ICSR1_CRE (1 << 5)
/* CRC error */
#define ICSR1_EOF (1 << 4)
/* End of frame */
#define ICSR1_TNF (1 << 3)
/* Transmit FIFO not full */
#define ICSR1_RNE (1 << 2)
/* Receive FIFO not empty */
#define ICSR1_TBY (1 << 1)
/* Tramsmiter busy flag */
#define ICSR1_RSY (1 << 0)
/* Recevier synchronized flag */
/*
* Real Time Clock
...
...
@@ -1171,19 +1171,105 @@ typedef void (*ExcpHndlr) (void) ;
#define LCCR0_BM (1 << 20)
/* Branch mask */
#define LCCR0_OUM (1 << 21)
/* Output FIFO underrun mask */
#define LCCR1_PPL Fld (10, 0)
/* Pixels Per Line - 1 */
#define LCCR1_DisWdth(Pixel)
/* Display Width [1..800 pix.] */
\
(((Pixel) - 1) << FShft (LCCR1_PPL))
#define LCCR1_HSW Fld (6, 10)
/* Horizontal Synchronization */
#define LCCR1_HorSnchWdth(Tpix)
/* Horizontal Synchronization */
\
/* pulse Width [1..64 Tpix] */
\
(((Tpix) - 1) << FShft (LCCR1_HSW))
#define LCCR1_ELW Fld (8, 16)
/* End-of-Line pixel clock Wait */
/* count - 1 [Tpix] */
#define LCCR1_EndLnDel(Tpix)
/* End-of-Line Delay */
\
/* [1..256 Tpix] */
\
(((Tpix) - 1) << FShft (LCCR1_ELW))
#define LCCR1_BLW Fld (8, 24)
/* Beginning-of-Line pixel clock */
/* Wait count - 1 [Tpix] */
#define LCCR1_BegLnDel(Tpix)
/* Beginning-of-Line Delay */
\
/* [1..256 Tpix] */
\
(((Tpix) - 1) << FShft (LCCR1_BLW))
#define LCCR2_LPP Fld (10, 0)
/* Line Per Panel - 1 */
#define LCCR2_DisHght(Line)
/* Display Height [1..1024 lines] */
\
(((Line) - 1) << FShft (LCCR2_LPP))
#define LCCR2_VSW Fld (6, 10)
/* Vertical Synchronization pulse */
/* Width - 1 [Tln] (L_FCLK) */
#define LCCR2_VrtSnchWdth(Tln)
/* Vertical Synchronization pulse */
\
/* Width [1..64 Tln] */
\
(((Tln) - 1) << FShft (LCCR2_VSW))
#define LCCR2_EFW Fld (8, 16)
/* End-of-Frame line clock Wait */
/* count [Tln] */
#define LCCR2_EndFrmDel(Tln)
/* End-of-Frame Delay */
\
/* [0..255 Tln] */
\
((Tln) << FShft (LCCR2_EFW))
#define LCCR2_BFW Fld (8, 24)
/* Beginning-of-Frame line clock */
/* Wait count [Tln] */
#define LCCR2_BegFrmDel(Tln)
/* Beginning-of-Frame Delay */
\
/* [0..255 Tln] */
\
((Tln) << FShft (LCCR2_BFW))
#if 0
#define LCCR3_PCD (0xff) /* Pixel clock divisor */
#define LCCR3_ACB (0xff << 8) /* AC Bias pin frequency */
#define LCCR3_ACB_S 8
#endif
#define LCCR3_API (0xf << 16)
/* AC Bias pin trasitions per interrupt */
#define LCCR3_API_S 16
#define LCCR3_VSP (1 << 20)
/* vertical sync polarity */
#define LCCR3_HSP (1 << 21)
/* horizontal sync polarity */
#define LCCR3_PCP (1 << 22)
/* pixel clock polarity */
#define LCCR3_OEP (1 << 23)
/* output enable polarity */
#if 0
#define LCCR3_BPP (7 << 24) /* bits per pixel */
#define LCCR3_BPP_S 24
#endif
#define LCCR3_DPC (1 << 27)
/* double pixel clock mode */
#define LCCR3_PCD Fld (8, 0)
/* Pixel Clock Divisor */
#define LCCR3_PixClkDiv(Div)
/* Pixel Clock Divisor */
\
(((Div) << FShft (LCCR3_PCD)))
#define LCCR3_BPP Fld (3, 24)
/* Bit Per Pixel */
#define LCCR3_Bpp(Bpp)
/* Bit Per Pixel */
\
(((Bpp) << FShft (LCCR3_BPP)))
#define LCCR3_ACB Fld (8, 8)
/* AC Bias */
#define LCCR3_Acb(Acb)
/* BAC Bias */
\
(((Acb) << FShft (LCCR3_ACB)))
#define LCCR3_HorSnchH (LCCR3_HSP*0)
/* Horizontal Synchronization */
/* pulse active High */
#define LCCR3_HorSnchL (LCCR3_HSP*1)
/* Horizontal Synchronization */
#define LCCR3_VrtSnchH (LCCR3_VSP*0)
/* Vertical Synchronization pulse */
/* active High */
#define LCCR3_VrtSnchL (LCCR3_VSP*1)
/* Vertical Synchronization pulse */
/* active Low */
#define LCSR_LDD (1 << 0)
/* LCD Disable Done */
#define LCSR_SOF (1 << 1)
/* Start of frame */
#define LCSR_BER (1 << 2)
/* Bus error */
#define LCSR_ABC (1 << 3)
/* AC Bias count */
#define LCSR_IUL (1 << 4)
/* input FIFO underrun Lower panel */
#define LCSR_IUU (1 << 5)
/* input FIFO underrun Upper panel */
#define LCSR_OU (1 << 6)
/* output FIFO underrun */
#define LCSR_QD (1 << 7)
/* quick disable */
#define LCSR_EOF (1 << 8)
/* end of frame */
#define LCSR_BS (1 << 9)
/* branch status */
#define LCSR_SINT (1 << 10)
/* subsequent interrupt */
#define LDCMD_PAL (1 << 26)
/* instructs DMA to load palette buffer */
#define LCSR_LDD (1 << 0)
/* LCD Disable Done */
#define LCSR_SOF (1 << 1)
/* Start of frame */
#define LCSR_BER (1 << 2)
/* Bus error */
...
...
include/asm-arm/arch-pxa/system.h
View file @
265c60c2
...
...
@@ -27,7 +27,7 @@ static inline void arch_reset(char mode)
/* Initialize the watchdog and let it fire */
OWER
=
OWER_WME
;
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)
elapsed
=
LATCH
-
ticks_to_match
;
/* Now convert them to usec */
usec
=
(
unsigned
long
)(
elapsed
*
tick
)
/
LATCH
;
usec
=
(
unsigned
long
)(
elapsed
*
(
tick_nsec
/
1000
)
)
/
LATCH
;
return
usec
;
}
...
...
@@ -52,6 +52,8 @@ static void pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
long
flags
;
int
next_match
;
do_profile
(
regs
);
/* Loop until we get ahead of the free running timer.
* This ensures an exact clock tick count and time accuracy.
* 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