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
36b963a6
Commit
36b963a6
authored
Jan 19, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bk.arm.linux.org.uk/linux-2.6-rmk
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
8522703f
912eb572
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
131 additions
and
180 deletions
+131
-180
arch/arm/Kconfig
arch/arm/Kconfig
+1
-1
arch/arm/kernel/head.S
arch/arm/kernel/head.S
+23
-4
arch/arm/kernel/setup.c
arch/arm/kernel/setup.c
+22
-31
arch/arm/kernel/smp.c
arch/arm/kernel/smp.c
+40
-50
arch/arm/mach-s3c2410/mach-vr1000.c
arch/arm/mach-s3c2410/mach-vr1000.c
+5
-13
arch/arm/mach-sa1100/collie.c
arch/arm/mach-sa1100/collie.c
+26
-30
include/asm-arm/arch-sa1100/collie.h
include/asm-arm/arch-sa1100/collie.h
+12
-49
include/asm-arm/bitops.h
include/asm-arm/bitops.h
+2
-2
No files found.
arch/arm/Kconfig
View file @
36b963a6
...
...
@@ -236,7 +236,7 @@ config SHARP_LOCOMO
config SHARP_SCOOP
bool
depends on PXA_SHARPSL
depends on PXA_SHARPSL
|| SA1100_COLLIE
default y
config FORCE_MAX_ZONEORDER
...
...
arch/arm/kernel/head.S
View file @
36b963a6
...
...
@@ -406,7 +406,7 @@ err_str:
*
calculate
the
offset
.
*
*
Returns
:
*
r3
,
r6
corrupted
*
r3
,
r
4
,
r
6
corrupted
*
r5
=
proc_info
pointer
in
physical
address
space
*
r9
=
cpuid
*/
...
...
@@ -418,9 +418,9 @@ __lookup_processor_type:
add
r5
,
r5
,
r3
@
convert
virt
addresses
to
add
r6
,
r6
,
r3
@
physical
address
space
mrc
p15
,
0
,
r9
,
c0
,
c0
@
get
processor
id
1
:
ldmia
r5
,
{
r3
,
r
10
}
@
value
,
mask
and
r
10
,
r10
,
r9
@
mask
wanted
bits
teq
r3
,
r
10
1
:
ldmia
r5
,
{
r3
,
r
4
}
@
value
,
mask
and
r
4
,
r4
,
r9
@
mask
wanted
bits
teq
r3
,
r
4
beq
2
f
add
r5
,
r5
,
#
PROC_INFO_SZ
@
sizeof
(
proc_info_list
)
cmp
r5
,
r6
...
...
@@ -428,6 +428,15 @@ __lookup_processor_type:
mov
r5
,
#
0
@
unknown
processor
2
:
mov
pc
,
lr
/*
*
This
provides
a
C
-
API
version
of
the
above
function
.
*/
ENTRY
(
lookup_processor_type
)
stmfd
sp
!,
{
r4
-
r6
,
r9
,
lr
}
bl
__lookup_processor_type
mov
r0
,
r5
ldmfd
sp
!,
{
r4
-
r6
,
r9
,
pc
}
/*
*
Look
in
include
/
asm
-
arm
/
procinfo
.
h
and
arch
/
arm
/
kernel
/
arch
.
[
ch
]
for
*
more
information
about
the
__proc_info
and
__arch_info
structures
.
...
...
@@ -464,3 +473,13 @@ __lookup_machine_type:
blt
1
b
mov
r5
,
#
0
@
unknown
machine
2
:
mov
pc
,
lr
/*
*
This
provides
a
C
-
API
version
of
the
above
function
.
*/
ENTRY
(
lookup_machine_type
)
stmfd
sp
!,
{
r4
-
r6
,
lr
}
mov
r1
,
r0
bl
__lookup_machine_type
mov
r0
,
r5
ldmfd
sp
!,
{
r4
-
r6
,
pc
}
arch/arm/kernel/setup.c
View file @
36b963a6
...
...
@@ -221,12 +221,12 @@ static const char *proc_arch[] = {
#define CACHE_M(y) ((y) & (1 << 2))
#define CACHE_LINE(y) ((y) & 3)
static
inline
void
dump_cache
(
const
char
*
prefix
,
unsigned
int
cache
)
static
inline
void
dump_cache
(
const
char
*
prefix
,
int
cpu
,
unsigned
int
cache
)
{
unsigned
int
mult
=
2
+
(
CACHE_M
(
cache
)
?
1
:
0
);
printk
(
"%s: %d bytes, associativity %d, %d byte lines, %d sets
\n
"
,
prefix
,
printk
(
"
CPU%u:
%s: %d bytes, associativity %d, %d byte lines, %d sets
\n
"
,
cpu
,
prefix
,
mult
<<
(
8
+
CACHE_SIZE
(
cache
)),
(
mult
<<
CACHE_ASSOC
(
cache
))
>>
1
,
8
<<
CACHE_LINE
(
cache
),
...
...
@@ -234,18 +234,18 @@ static inline void dump_cache(const char *prefix, unsigned int cache)
CACHE_LINE
(
cache
)));
}
static
void
__init
dump_cpu_info
(
void
)
static
void
__init
dump_cpu_info
(
int
cpu
)
{
unsigned
int
info
=
read_cpuid
(
CPUID_CACHETYPE
);
if
(
info
!=
processor_id
)
{
printk
(
"CPU
: D %s %s cache
\n
"
,
cache_is_vivt
()
?
"VIVT"
:
"VIPT"
,
printk
(
"CPU
%u: D %s %s cache
\n
"
,
cpu
,
cache_is_vivt
()
?
"VIVT"
:
"VIPT"
,
cache_types
[
CACHE_TYPE
(
info
)]);
if
(
CACHE_S
(
info
))
{
dump_cache
(
"
CPU: I cache"
,
CACHE_ISIZE
(
info
));
dump_cache
(
"
CPU: D cache"
,
CACHE_DSIZE
(
info
));
dump_cache
(
"
I cache"
,
cpu
,
CACHE_ISIZE
(
info
));
dump_cache
(
"
D cache"
,
cpu
,
CACHE_DSIZE
(
info
));
}
else
{
dump_cache
(
"
CPU: cache"
,
CACHE_ISIZE
(
info
));
dump_cache
(
"
cache"
,
cpu
,
CACHE_ISIZE
(
info
));
}
}
}
...
...
@@ -267,9 +267,15 @@ int cpu_architecture(void)
return
cpu_arch
;
}
/*
* These functions re-use the assembly code in head.S, which
* already provide the required functionality.
*/
extern
struct
proc_info_list
*
lookup_processor_type
(
void
);
extern
struct
machine_desc
*
lookup_machine_type
(
unsigned
int
);
static
void
__init
setup_processor
(
void
)
{
extern
struct
proc_info_list
__proc_info_begin
,
__proc_info_end
;
struct
proc_info_list
*
list
;
/*
...
...
@@ -277,15 +283,8 @@ static void __init setup_processor(void)
* types. The linker builds this table for us from the
* entries in arch/arm/mm/proc-*.S
*/
for
(
list
=
&
__proc_info_begin
;
list
<
&
__proc_info_end
;
list
++
)
if
((
processor_id
&
list
->
cpu_mask
)
==
list
->
cpu_val
)
break
;
/*
* If processor type is unrecognised, then we
* can do nothing...
*/
if
(
list
>=
&
__proc_info_end
)
{
list
=
lookup_processor_type
();
if
(
!
list
)
{
printk
(
"CPU configuration botched (ID %08x), unable "
"to continue.
\n
"
,
processor_id
);
while
(
1
);
...
...
@@ -310,7 +309,7 @@ static void __init setup_processor(void)
cpu_name
,
processor_id
,
(
int
)
processor_id
&
15
,
proc_arch
[
cpu_architecture
()]);
dump_cpu_info
();
dump_cpu_info
(
smp_processor_id
()
);
sprintf
(
system_utsname
.
machine
,
"%s%c"
,
list
->
arch_name
,
ENDIANNESS
);
sprintf
(
elf_platform
,
"%s%c"
,
list
->
elf_name
,
ENDIANNESS
);
...
...
@@ -321,22 +320,14 @@ static void __init setup_processor(void)
static
struct
machine_desc
*
__init
setup_machine
(
unsigned
int
nr
)
{
extern
struct
machine_desc
__arch_info_begin
,
__arch_info_end
;
struct
machine_desc
*
list
;
/*
* locate architecture in the list of supported architectures.
*/
for
(
list
=
&
__arch_info_begin
;
list
<
&
__arch_info_end
;
list
++
)
if
(
list
->
nr
==
nr
)
break
;
/*
* If the architecture type is not recognised, then we
* can co nothing...
* locate machine in the list of supported machines.
*/
if
(
list
>=
&
__arch_info_end
)
{
printk
(
"Architecture configuration botched (nr %d), unable "
list
=
lookup_machine_type
(
nr
);
if
(
!
list
)
{
printk
(
"Machine configuration botched (nr %d), unable "
"to continue.
\n
"
,
nr
);
while
(
1
);
}
...
...
arch/arm/kernel/smp.c
View file @
36b963a6
...
...
@@ -314,67 +314,57 @@ static void ipi_cpu_stop(unsigned int cpu)
*
* Bit 0 - Inter-processor function call
*/
void
do_IPI
(
unsigned
int
ipimask
,
struct
pt_regs
*
regs
)
void
do_IPI
(
struct
pt_regs
*
regs
)
{
unsigned
int
cpu
=
smp_processor_id
();
struct
ipi_data
*
ipi
=
&
per_cpu
(
ipi_data
,
cpu
);
ipi
->
ipi_count
++
;
if
(
ipimask
&
(
1
<<
0
))
{
for
(;;)
{
unsigned
long
msgs
;
for
(;;)
{
unsigned
long
msgs
;
spin_lock
(
&
ipi
->
lock
);
msgs
=
ipi
->
bits
;
ipi
->
bits
=
0
;
spin_unlock
(
&
ipi
->
lock
);
spin_lock
(
&
ipi
->
lock
);
msgs
=
ipi
->
bits
;
ipi
->
bits
=
0
;
spin_unlock
(
&
ipi
->
lock
);
if
(
!
msgs
)
break
;
if
(
!
msgs
)
do
{
unsigned
nextmsg
;
nextmsg
=
msgs
&
-
msgs
;
msgs
&=
~
nextmsg
;
nextmsg
=
ffz
(
~
nextmsg
);
switch
(
nextmsg
)
{
case
IPI_TIMER
:
ipi_timer
(
regs
);
break
;
do
{
unsigned
nextmsg
;
nextmsg
=
msgs
&
-
msgs
;
msgs
&=
~
nextmsg
;
nextmsg
=
ffz
(
~
nextmsg
);
switch
(
nextmsg
)
{
case
IPI_TIMER
:
ipi_timer
(
regs
);
break
;
case
IPI_RESCHEDULE
:
/*
* nothing more to do - eveything is
* done on the interrupt return path
*/
break
;
case
IPI_CALL_FUNC
:
ipi_call_function
(
cpu
);
break
;
case
IPI_CPU_STOP
:
ipi_cpu_stop
(
cpu
);
break
;
default:
printk
(
KERN_CRIT
"CPU%u: Unknown IPI message 0x%x
\n
"
,
cpu
,
nextmsg
);
break
;
}
}
while
(
msgs
);
}
ipimask
&=
~
0x01
;
}
case
IPI_RESCHEDULE
:
/*
* nothing more to do - eveything is
* done on the interrupt return path
*/
break
;
case
IPI_CALL_FUNC
:
ipi_call_function
(
cpu
);
break
;
if
(
ipimask
)
{
printk
(
KERN_CRIT
"CPU %d: Unknown IPI signal %x!
\n
"
,
cpu
,
ipimask
);
BUG
();
case
IPI_CPU_STOP
:
ipi_cpu_stop
(
cpu
);
break
;
default:
printk
(
KERN_CRIT
"CPU%u: Unknown IPI message 0x%x
\n
"
,
cpu
,
nextmsg
);
break
;
}
}
while
(
msgs
);
}
}
...
...
arch/arm/mach-s3c2410/mach-vr1000.c
View file @
36b963a6
...
...
@@ -23,6 +23,7 @@
* 10-Jan-2005 BJD Removed include of s3c2410.h
* 14-Jan-2005 BJD Added clock init
* 15-Jan-2005 BJD Add serial port device definition
* 20-Jan-2005 BJD Use UPF_IOREMAP for ports
*/
#include <linux/kernel.h>
...
...
@@ -78,10 +79,6 @@ static struct map_desc vr1000_iodesc[] __initdata = {
{
S3C2410_VA_ISA_BYTE
,
PA_CS2
(
BAST_PA_ISAIO
),
SZ_16M
,
MT_DEVICE
},
{
S3C2410_VA_ISA_WORD
,
PA_CS3
(
BAST_PA_ISAIO
),
SZ_16M
,
MT_DEVICE
},
/* serial ports */
{
VR1000_VA_SERIAL
,
VR1000_PA_SERIAL
,
SZ_1M
,
MT_DEVICE
},
/* we could possibly compress the next set down into a set of smaller tables
* pagetables, but that would mean using an L2 section, and it still means
* we cannot actually feed the same register to an LDR due to 16K spacing
...
...
@@ -183,42 +180,37 @@ static struct s3c2410_uartcfg vr1000_uartcfgs[] = {
#define VR1000_BAUDBASE (3692307)
#define VR1000_SERIAL_MEMBASE(x) ((void __iomem *)VR1000_VA_SERIAL + 0x80 + ((x) << 5))
#define VR1000_SERIAL_MAPBASE(x) (VR1000_PA_SERIAL + 0x80 + ((x) << 5))
static
struct
plat_serial8250_port
serial_platform_data
[]
=
{
[
0
]
=
{
.
membase
=
VR1000_SERIAL_MEMBASE
(
0
),
.
mapbase
=
VR1000_SERIAL_MAPBASE
(
0
),
.
irq
=
IRQ_VR1000_SERIAL
+
0
,
.
flags
=
UPF_BOOT_AUTOCONF
,
.
flags
=
UPF_BOOT_AUTOCONF
|
UPF_IOREMAP
,
.
iotype
=
UPIO_MEM
,
.
regshift
=
0
,
.
uartclk
=
VR1000_BAUDBASE
,
},
[
1
]
=
{
.
membase
=
VR1000_SERIAL_MEMBASE
(
1
),
.
mapbase
=
VR1000_SERIAL_MAPBASE
(
1
),
.
irq
=
IRQ_VR1000_SERIAL
+
1
,
.
flags
=
UPF_BOOT_AUTOCONF
,
.
flags
=
UPF_BOOT_AUTOCONF
|
UPF_IOREMAP
,
.
iotype
=
UPIO_MEM
,
.
regshift
=
0
,
.
uartclk
=
VR1000_BAUDBASE
,
},
[
2
]
=
{
.
membase
=
VR1000_SERIAL_MEMBASE
(
2
),
.
mapbase
=
VR1000_SERIAL_MAPBASE
(
2
),
.
irq
=
IRQ_VR1000_SERIAL
+
2
,
.
flags
=
UPF_BOOT_AUTOCONF
,
.
flags
=
UPF_BOOT_AUTOCONF
|
UPF_IOREMAP
,
.
iotype
=
UPIO_MEM
,
.
regshift
=
0
,
.
uartclk
=
VR1000_BAUDBASE
,
},
[
3
]
=
{
.
membase
=
VR1000_SERIAL_MEMBASE
(
3
),
.
mapbase
=
VR1000_SERIAL_MAPBASE
(
3
),
.
irq
=
IRQ_VR1000_SERIAL
+
3
,
.
flags
=
UPF_BOOT_AUTOCONF
,
.
flags
=
UPF_BOOT_AUTOCONF
|
UPF_IOREMAP
,
.
iotype
=
UPIO_MEM
,
.
regshift
=
0
,
.
uartclk
=
VR1000_BAUDBASE
,
...
...
arch/arm/mach-sa1100/collie.c
View file @
36b963a6
...
...
@@ -37,36 +37,34 @@
#include <asm/mach/map.h>
#include <asm/mach/serial_sa1100.h>
#include <asm/hardware/scoop.h>
#include <asm/hardware/locomo.h>
#include "generic.h"
static
void
__init
scoop_init
(
void
)
{
static
struct
resource
collie_scoop_resources
[]
=
{
[
0
]
=
{
.
start
=
0x40800000
,
.
end
=
0x40800fff
,
.
flags
=
IORESOURCE_MEM
,
},
};
#define COLLIE_SCP_INIT_DATA(adr,dat) (((adr)<<16)|(dat))
#define COLLIE_SCP_INIT_DATA_END ((unsigned long)-1)
static
const
unsigned
long
scp_init
[]
=
{
COLLIE_SCP_INIT_DATA
(
COLLIE_SCP_MCR
,
0x0140
),
// 00
COLLIE_SCP_INIT_DATA
(
COLLIE_SCP_MCR
,
0x0100
),
COLLIE_SCP_INIT_DATA
(
COLLIE_SCP_CDR
,
0x0000
),
// 04
COLLIE_SCP_INIT_DATA
(
COLLIE_SCP_CPR
,
0x0000
),
// 0C
COLLIE_SCP_INIT_DATA
(
COLLIE_SCP_CCR
,
0x0000
),
// 10
COLLIE_SCP_INIT_DATA
(
COLLIE_SCP_IMR
,
0x0000
),
// 18
COLLIE_SCP_INIT_DATA
(
COLLIE_SCP_IRM
,
0x00FF
),
// 14
COLLIE_SCP_INIT_DATA
(
COLLIE_SCP_ISR
,
0x0000
),
// 1C
COLLIE_SCP_INIT_DATA
(
COLLIE_SCP_IRM
,
0x0000
),
COLLIE_SCP_INIT_DATA
(
COLLIE_SCP_GPCR
,
COLLIE_SCP_IO_DIR
),
// 20
COLLIE_SCP_INIT_DATA
(
COLLIE_SCP_GPWR
,
COLLIE_SCP_IO_OUT
),
// 24
COLLIE_SCP_INIT_DATA_END
};
int
i
;
for
(
i
=
0
;
scp_init
[
i
]
!=
COLLIE_SCP_INIT_DATA_END
;
i
++
)
{
int
adr
=
scp_init
[
i
]
>>
16
;
COLLIE_SCP_REG
(
adr
)
=
scp_init
[
i
]
&
0xFFFF
;
}
static
struct
scoop_config
collie_scoop_setup
=
{
.
io_dir
=
COLLIE_SCOOP_IO_DIR
,
.
io_out
=
COLLIE_SCOOP_IO_OUT
,
};
static
struct
platform_device
colliescoop_device
=
{
.
name
=
"sharp-scoop"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
collie_scoop_setup
,
},
.
num_resources
=
ARRAY_SIZE
(
collie_scoop_resources
),
.
resource
=
collie_scoop_resources
,
};
}
static
struct
resource
locomo_resources
[]
=
{
[
0
]
=
{
...
...
@@ -90,6 +88,7 @@ static struct platform_device locomo_device = {
static
struct
platform_device
*
devices
[]
__initdata
=
{
&
locomo_device
,
&
colliescoop_device
,
};
static
struct
mtd_partition
collie_partitions
[]
=
{
...
...
@@ -111,11 +110,11 @@ static struct mtd_partition collie_partitions[] = {
static
void
collie_set_vpp
(
int
vpp
)
{
COLLIE_SCP_REG_GPCR
|=
COLLIE_SCP_VPEN
;
write_scoop_reg
(
SCOOP_GPCR
,
read_scoop_reg
(
SCOOP_GPCR
)
|
COLLIE_SCP_VPEN
)
;
if
(
vpp
)
{
COLLIE_SCP_REG_GPWR
|=
COLLIE_SCP_VPEN
;
write_scoop_reg
(
SCOOP_GPWR
,
read_scoop_reg
(
SCOOP_GPWR
)
|
COLLIE_SCP_VPEN
)
;
}
else
{
COLLIE_SCP_REG_GPWR
&=
~
COLLIE_SCP_VPEN
;
write_scoop_reg
(
SCOOP_GPWR
,
read_scoop_reg
(
SCOOP_GPWR
)
&
~
COLLIE_SCP_VPEN
)
;
}
}
...
...
@@ -160,8 +159,6 @@ static void __init collie_init(void)
GPDR
|=
GPIO_32_768kHz
;
TUCR
=
TUCR_32_768kHz
;
scoop_init
();
ret
=
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
if
(
ret
)
{
printk
(
KERN_WARNING
"collie: Unable to register LoCoMo device
\n
"
);
...
...
@@ -175,7 +172,6 @@ static struct map_desc collie_io_desc[] __initdata = {
/* virtual physical length type */
{
0xe8000000
,
0x00000000
,
0x02000000
,
MT_DEVICE
},
/* 32M main flash (cs0) */
{
0xea000000
,
0x08000000
,
0x02000000
,
MT_DEVICE
},
/* 32M boot flash (cs1) */
{
0xf0000000
,
0x40000000
,
0x01000000
,
MT_DEVICE
},
/* 16M LOCOMO & SCOOP (cs4) */
};
static
void
__init
collie_map_io
(
void
)
...
...
include/asm-arm/arch-sa1100/collie.h
View file @
36b963a6
...
...
@@ -15,57 +15,20 @@
#include <linux/config.h>
#define CF_BUF_CTRL_BASE 0xF0800000
#define COLLIE_SCP_REG(adr) (*(volatile unsigned short*)(CF_BUF_CTRL_BASE+(adr)))
#define COLLIE_SCP_MCR 0x00
#define COLLIE_SCP_CDR 0x04
#define COLLIE_SCP_CSR 0x08
#define COLLIE_SCP_CPR 0x0C
#define COLLIE_SCP_CCR 0x10
#define COLLIE_SCP_IRR 0x14
#define COLLIE_SCP_IRM 0x14
#define COLLIE_SCP_IMR 0x18
#define COLLIE_SCP_ISR 0x1C
#define COLLIE_SCP_GPCR 0x20
#define COLLIE_SCP_GPWR 0x24
#define COLLIE_SCP_GPRR 0x28
#define COLLIE_SCP_REG_MCR COLLIE_SCP_REG(COLLIE_SCP_MCR)
#define COLLIE_SCP_REG_CDR COLLIE_SCP_REG(COLLIE_SCP_CDR)
#define COLLIE_SCP_REG_CSR COLLIE_SCP_REG(COLLIE_SCP_CSR)
#define COLLIE_SCP_REG_CPR COLLIE_SCP_REG(COLLIE_SCP_CPR)
#define COLLIE_SCP_REG_CCR COLLIE_SCP_REG(COLLIE_SCP_CCR)
#define COLLIE_SCP_REG_IRR COLLIE_SCP_REG(COLLIE_SCP_IRR)
#define COLLIE_SCP_REG_IRM COLLIE_SCP_REG(COLLIE_SCP_IRM)
#define COLLIE_SCP_REG_IMR COLLIE_SCP_REG(COLLIE_SCP_IMR)
#define COLLIE_SCP_REG_ISR COLLIE_SCP_REG(COLLIE_SCP_ISR)
#define COLLIE_SCP_REG_GPCR COLLIE_SCP_REG(COLLIE_SCP_GPCR)
#define COLLIE_SCP_REG_GPWR COLLIE_SCP_REG(COLLIE_SCP_GPWR)
#define COLLIE_SCP_REG_GPRR COLLIE_SCP_REG(COLLIE_SCP_GPRR)
#define COLLIE_SCP_GPCR_PA19 ( 1 << 9 )
#define COLLIE_SCP_GPCR_PA18 ( 1 << 8 )
#define COLLIE_SCP_GPCR_PA17 ( 1 << 7 )
#define COLLIE_SCP_GPCR_PA16 ( 1 << 6 )
#define COLLIE_SCP_GPCR_PA15 ( 1 << 5 )
#define COLLIE_SCP_GPCR_PA14 ( 1 << 4 )
#define COLLIE_SCP_GPCR_PA13 ( 1 << 3 )
#define COLLIE_SCP_GPCR_PA12 ( 1 << 2 )
#define COLLIE_SCP_GPCR_PA11 ( 1 << 1 )
#define COLLIE_SCP_CHARGE_ON COLLIE_SCP_GPCR_PA11
#define COLLIE_SCP_DIAG_BOOT1 COLLIE_SCP_GPCR_PA12
#define COLLIE_SCP_DIAG_BOOT2 COLLIE_SCP_GPCR_PA13
#define COLLIE_SCP_MUTE_L COLLIE_SCP_GPCR_PA14
#define COLLIE_SCP_MUTE_R COLLIE_SCP_GPCR_PA15
#define COLLIE_SCP_5VON COLLIE_SCP_GPCR_PA16
#define COLLIE_SCP_AMP_ON COLLIE_SCP_GPCR_PA17
#define COLLIE_SCP_VPEN COLLIE_SCP_GPCR_PA18
#define COLLIE_SCP_LB_VOL_CHG COLLIE_SCP_GPCR_PA19
#define COLLIE_SCP_IO_DIR ( COLLIE_SCP_CHARGE_ON | COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R | \
#define COLLIE_SCP_CHARGE_ON SCOOP_GPCR_PA11
#define COLLIE_SCP_DIAG_BOOT1 SCOOP_GPCR_PA12
#define COLLIE_SCP_DIAG_BOOT2 SCOOP_GPCR_PA13
#define COLLIE_SCP_MUTE_L SCOOP_GPCR_PA14
#define COLLIE_SCP_MUTE_R SCOOP_GPCR_PA15
#define COLLIE_SCP_5VON SCOOP_GPCR_PA16
#define COLLIE_SCP_AMP_ON SCOOP_GPCR_PA17
#define COLLIE_SCP_VPEN SCOOP_GPCR_PA18
#define COLLIE_SCP_LB_VOL_CHG SCOOP_GPCR_PA19
#define COLLIE_SCOOP_IO_DIR ( COLLIE_SCP_CHARGE_ON | COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R | \
COLLIE_SCP_5VON | COLLIE_SCP_AMP_ON | COLLIE_SCP_VPEN | \
COLLIE_SCP_LB_VOL_CHG )
#define COLLIE_SCP_IO_OUT ( COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R | COLLIE_SCP_VPEN | \
#define COLLIE_SC
OO
P_IO_OUT ( COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R | COLLIE_SCP_VPEN | \
COLLIE_SCP_CHARGE_ON )
/* GPIOs for which the generic definition doesn't say much */
...
...
include/asm-arm/bitops.h
View file @
36b963a6
...
...
@@ -210,8 +210,8 @@ extern void _change_bit_le(int nr, volatile unsigned long * p);
extern
int
_test_and_set_bit_le
(
int
nr
,
volatile
unsigned
long
*
p
);
extern
int
_test_and_clear_bit_le
(
int
nr
,
volatile
unsigned
long
*
p
);
extern
int
_test_and_change_bit_le
(
int
nr
,
volatile
unsigned
long
*
p
);
extern
int
_find_first_zero_bit_le
(
void
*
p
,
unsigned
size
);
extern
int
_find_next_zero_bit_le
(
void
*
p
,
int
size
,
int
offset
);
extern
int
_find_first_zero_bit_le
(
const
void
*
p
,
unsigned
size
);
extern
int
_find_next_zero_bit_le
(
const
void
*
p
,
int
size
,
int
offset
);
extern
int
_find_first_bit_le
(
const
unsigned
long
*
p
,
unsigned
size
);
extern
int
_find_next_bit_le
(
const
unsigned
long
*
p
,
int
size
,
int
offset
);
...
...
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