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
nexedi
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