You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'linus' into perfcounters/core
Merge reason: Pick up the latest fixes before the -v8 perfcounters release. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
@@ -150,6 +150,11 @@ fan[1-*]_min Fan minimum value
|
||||
Unit: revolution/min (RPM)
|
||||
RW
|
||||
|
||||
fan[1-*]_max Fan maximum value
|
||||
Unit: revolution/min (RPM)
|
||||
Only rarely supported by the hardware.
|
||||
RW
|
||||
|
||||
fan[1-*]_input Fan input value.
|
||||
Unit: revolution/min (RPM)
|
||||
RO
|
||||
@@ -390,6 +395,7 @@ OR
|
||||
in[0-*]_min_alarm
|
||||
in[0-*]_max_alarm
|
||||
fan[1-*]_min_alarm
|
||||
fan[1-*]_max_alarm
|
||||
temp[1-*]_min_alarm
|
||||
temp[1-*]_max_alarm
|
||||
temp[1-*]_crit_alarm
|
||||
|
||||
+10
-1
@@ -624,6 +624,7 @@ M: paulius.zaleckas@teltonika.lt
|
||||
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
|
||||
T: git git://gitorious.org/linux-gemini/mainline.git
|
||||
S: Maintained
|
||||
F: arch/arm/mach-gemini/
|
||||
|
||||
ARM/EBSA110 MACHINE SUPPORT
|
||||
P: Russell King
|
||||
@@ -650,6 +651,7 @@ P: Paulius Zaleckas
|
||||
M: paulius.zaleckas@teltonika.lt
|
||||
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
|
||||
S: Maintained
|
||||
F: arch/arm/mm/*-fa*
|
||||
|
||||
ARM/FOOTBRIDGE ARCHITECTURE
|
||||
P: Russell King
|
||||
@@ -1540,6 +1542,13 @@ W: http://www.fi.muni.cz/~kas/cosa/
|
||||
S: Maintained
|
||||
F: drivers/net/wan/cosa*
|
||||
|
||||
CPMAC ETHERNET DRIVER
|
||||
P: Florian Fainelli
|
||||
M: florian@openwrt.org
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/net/cpmac.c
|
||||
|
||||
CPU FREQUENCY DRIVERS
|
||||
P: Dave Jones
|
||||
M: davej@redhat.com
|
||||
@@ -2249,7 +2258,7 @@ P: Li Yang
|
||||
M: leoli@freescale.com
|
||||
P: Zhang Wei
|
||||
M: zw@zh-kernel.org
|
||||
L: linuxppc-embedded@ozlabs.org
|
||||
L: linuxppc-dev@ozlabs.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/dma/fsldma.*
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 30
|
||||
EXTRAVERSION = -rc7
|
||||
EXTRAVERSION = -rc8
|
||||
NAME = Man-Eating Seals of Antiquity
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
||||
@@ -114,3 +114,16 @@
|
||||
.align 3; \
|
||||
.long 9999b,9001f; \
|
||||
.previous
|
||||
|
||||
/*
|
||||
* SMP data memory barrier
|
||||
*/
|
||||
.macro smp_dmb
|
||||
#ifdef CONFIG_SMP
|
||||
#if __LINUX_ARM_ARCH__ >= 7
|
||||
dmb
|
||||
#elif __LINUX_ARM_ARCH__ == 6
|
||||
mcr p15, 0, r0, c7, c10, 5 @ dmb
|
||||
#endif
|
||||
#endif
|
||||
.endm
|
||||
|
||||
@@ -44,11 +44,29 @@ static inline void atomic_set(atomic_t *v, int i)
|
||||
: "cc");
|
||||
}
|
||||
|
||||
static inline void atomic_add(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long tmp;
|
||||
int result;
|
||||
|
||||
__asm__ __volatile__("@ atomic_add\n"
|
||||
"1: ldrex %0, [%2]\n"
|
||||
" add %0, %0, %3\n"
|
||||
" strex %1, %0, [%2]\n"
|
||||
" teq %1, #0\n"
|
||||
" bne 1b"
|
||||
: "=&r" (result), "=&r" (tmp)
|
||||
: "r" (&v->counter), "Ir" (i)
|
||||
: "cc");
|
||||
}
|
||||
|
||||
static inline int atomic_add_return(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long tmp;
|
||||
int result;
|
||||
|
||||
smp_mb();
|
||||
|
||||
__asm__ __volatile__("@ atomic_add_return\n"
|
||||
"1: ldrex %0, [%2]\n"
|
||||
" add %0, %0, %3\n"
|
||||
@@ -59,14 +77,34 @@ static inline int atomic_add_return(int i, atomic_t *v)
|
||||
: "r" (&v->counter), "Ir" (i)
|
||||
: "cc");
|
||||
|
||||
smp_mb();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static inline void atomic_sub(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long tmp;
|
||||
int result;
|
||||
|
||||
__asm__ __volatile__("@ atomic_sub\n"
|
||||
"1: ldrex %0, [%2]\n"
|
||||
" sub %0, %0, %3\n"
|
||||
" strex %1, %0, [%2]\n"
|
||||
" teq %1, #0\n"
|
||||
" bne 1b"
|
||||
: "=&r" (result), "=&r" (tmp)
|
||||
: "r" (&v->counter), "Ir" (i)
|
||||
: "cc");
|
||||
}
|
||||
|
||||
static inline int atomic_sub_return(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long tmp;
|
||||
int result;
|
||||
|
||||
smp_mb();
|
||||
|
||||
__asm__ __volatile__("@ atomic_sub_return\n"
|
||||
"1: ldrex %0, [%2]\n"
|
||||
" sub %0, %0, %3\n"
|
||||
@@ -77,6 +115,8 @@ static inline int atomic_sub_return(int i, atomic_t *v)
|
||||
: "r" (&v->counter), "Ir" (i)
|
||||
: "cc");
|
||||
|
||||
smp_mb();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -84,6 +124,8 @@ static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new)
|
||||
{
|
||||
unsigned long oldval, res;
|
||||
|
||||
smp_mb();
|
||||
|
||||
do {
|
||||
__asm__ __volatile__("@ atomic_cmpxchg\n"
|
||||
"ldrex %1, [%2]\n"
|
||||
@@ -95,6 +137,8 @@ static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new)
|
||||
: "cc");
|
||||
} while (res);
|
||||
|
||||
smp_mb();
|
||||
|
||||
return oldval;
|
||||
}
|
||||
|
||||
@@ -135,6 +179,7 @@ static inline int atomic_add_return(int i, atomic_t *v)
|
||||
|
||||
return val;
|
||||
}
|
||||
#define atomic_add(i, v) (void) atomic_add_return(i, v)
|
||||
|
||||
static inline int atomic_sub_return(int i, atomic_t *v)
|
||||
{
|
||||
@@ -148,6 +193,7 @@ static inline int atomic_sub_return(int i, atomic_t *v)
|
||||
|
||||
return val;
|
||||
}
|
||||
#define atomic_sub(i, v) (void) atomic_sub_return(i, v)
|
||||
|
||||
static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
|
||||
{
|
||||
@@ -187,10 +233,8 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
|
||||
}
|
||||
#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
|
||||
|
||||
#define atomic_add(i, v) (void) atomic_add_return(i, v)
|
||||
#define atomic_inc(v) (void) atomic_add_return(1, v)
|
||||
#define atomic_sub(i, v) (void) atomic_sub_return(i, v)
|
||||
#define atomic_dec(v) (void) atomic_sub_return(1, v)
|
||||
#define atomic_inc(v) atomic_add(1, v)
|
||||
#define atomic_dec(v) atomic_sub(1, v)
|
||||
|
||||
#define atomic_inc_and_test(v) (atomic_add_return(1, v) == 0)
|
||||
#define atomic_dec_and_test(v) (atomic_sub_return(1, v) == 0)
|
||||
@@ -200,11 +244,10 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
|
||||
|
||||
#define atomic_add_negative(i,v) (atomic_add_return(i, v) < 0)
|
||||
|
||||
/* Atomic operations are already serializing on ARM */
|
||||
#define smp_mb__before_atomic_dec() barrier()
|
||||
#define smp_mb__after_atomic_dec() barrier()
|
||||
#define smp_mb__before_atomic_inc() barrier()
|
||||
#define smp_mb__after_atomic_inc() barrier()
|
||||
#define smp_mb__before_atomic_dec() smp_mb()
|
||||
#define smp_mb__after_atomic_dec() smp_mb()
|
||||
#define smp_mb__before_atomic_inc() smp_mb()
|
||||
#define smp_mb__after_atomic_inc() smp_mb()
|
||||
|
||||
#include <asm-generic/atomic.h>
|
||||
#endif
|
||||
|
||||
@@ -248,6 +248,8 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size
|
||||
unsigned int tmp;
|
||||
#endif
|
||||
|
||||
smp_mb();
|
||||
|
||||
switch (size) {
|
||||
#if __LINUX_ARM_ARCH__ >= 6
|
||||
case 1:
|
||||
@@ -307,6 +309,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size
|
||||
__bad_xchg(ptr, size), ret = 0;
|
||||
break;
|
||||
}
|
||||
smp_mb();
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -316,6 +319,12 @@ extern void enable_hlt(void);
|
||||
|
||||
#include <asm-generic/cmpxchg-local.h>
|
||||
|
||||
#if __LINUX_ARM_ARCH__ < 6
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
#error "SMP is not supported on this platform"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make
|
||||
* them available.
|
||||
@@ -329,6 +338,173 @@ extern void enable_hlt(void);
|
||||
#include <asm-generic/cmpxchg.h>
|
||||
#endif
|
||||
|
||||
#else /* __LINUX_ARM_ARCH__ >= 6 */
|
||||
|
||||
extern void __bad_cmpxchg(volatile void *ptr, int size);
|
||||
|
||||
/*
|
||||
* cmpxchg only support 32-bits operands on ARMv6.
|
||||
*/
|
||||
|
||||
static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
|
||||
unsigned long new, int size)
|
||||
{
|
||||
unsigned long oldval, res;
|
||||
|
||||
switch (size) {
|
||||
#ifdef CONFIG_CPU_32v6K
|
||||
case 1:
|
||||
do {
|
||||
asm volatile("@ __cmpxchg1\n"
|
||||
" ldrexb %1, [%2]\n"
|
||||
" mov %0, #0\n"
|
||||
" teq %1, %3\n"
|
||||
" strexbeq %0, %4, [%2]\n"
|
||||
: "=&r" (res), "=&r" (oldval)
|
||||
: "r" (ptr), "Ir" (old), "r" (new)
|
||||
: "memory", "cc");
|
||||
} while (res);
|
||||
break;
|
||||
case 2:
|
||||
do {
|
||||
asm volatile("@ __cmpxchg1\n"
|
||||
" ldrexh %1, [%2]\n"
|
||||
" mov %0, #0\n"
|
||||
" teq %1, %3\n"
|
||||
" strexheq %0, %4, [%2]\n"
|
||||
: "=&r" (res), "=&r" (oldval)
|
||||
: "r" (ptr), "Ir" (old), "r" (new)
|
||||
: "memory", "cc");
|
||||
} while (res);
|
||||
break;
|
||||
#endif /* CONFIG_CPU_32v6K */
|
||||
case 4:
|
||||
do {
|
||||
asm volatile("@ __cmpxchg4\n"
|
||||
" ldrex %1, [%2]\n"
|
||||
" mov %0, #0\n"
|
||||
" teq %1, %3\n"
|
||||
" strexeq %0, %4, [%2]\n"
|
||||
: "=&r" (res), "=&r" (oldval)
|
||||
: "r" (ptr), "Ir" (old), "r" (new)
|
||||
: "memory", "cc");
|
||||
} while (res);
|
||||
break;
|
||||
default:
|
||||
__bad_cmpxchg(ptr, size);
|
||||
oldval = 0;
|
||||
}
|
||||
|
||||
return oldval;
|
||||
}
|
||||
|
||||
static inline unsigned long __cmpxchg_mb(volatile void *ptr, unsigned long old,
|
||||
unsigned long new, int size)
|
||||
{
|
||||
unsigned long ret;
|
||||
|
||||
smp_mb();
|
||||
ret = __cmpxchg(ptr, old, new, size);
|
||||
smp_mb();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define cmpxchg(ptr,o,n) \
|
||||
((__typeof__(*(ptr)))__cmpxchg_mb((ptr), \
|
||||
(unsigned long)(o), \
|
||||
(unsigned long)(n), \
|
||||
sizeof(*(ptr))))
|
||||
|
||||
static inline unsigned long __cmpxchg_local(volatile void *ptr,
|
||||
unsigned long old,
|
||||
unsigned long new, int size)
|
||||
{
|
||||
unsigned long ret;
|
||||
|
||||
switch (size) {
|
||||
#ifndef CONFIG_CPU_32v6K
|
||||
case 1:
|
||||
case 2:
|
||||
ret = __cmpxchg_local_generic(ptr, old, new, size);
|
||||
break;
|
||||
#endif /* !CONFIG_CPU_32v6K */
|
||||
default:
|
||||
ret = __cmpxchg(ptr, old, new, size);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define cmpxchg_local(ptr,o,n) \
|
||||
((__typeof__(*(ptr)))__cmpxchg_local((ptr), \
|
||||
(unsigned long)(o), \
|
||||
(unsigned long)(n), \
|
||||
sizeof(*(ptr))))
|
||||
|
||||
#ifdef CONFIG_CPU_32v6K
|
||||
|
||||
/*
|
||||
* Note : ARMv7-M (currently unsupported by Linux) does not support
|
||||
* ldrexd/strexd. If ARMv7-M is ever supported by the Linux kernel, it should
|
||||
* not be allowed to use __cmpxchg64.
|
||||
*/
|
||||
static inline unsigned long long __cmpxchg64(volatile void *ptr,
|
||||
unsigned long long old,
|
||||
unsigned long long new)
|
||||
{
|
||||
register unsigned long long oldval asm("r0");
|
||||
register unsigned long long __old asm("r2") = old;
|
||||
register unsigned long long __new asm("r4") = new;
|
||||
unsigned long res;
|
||||
|
||||
do {
|
||||
asm volatile(
|
||||
" @ __cmpxchg8\n"
|
||||
" ldrexd %1, %H1, [%2]\n"
|
||||
" mov %0, #0\n"
|
||||
" teq %1, %3\n"
|
||||
" teqeq %H1, %H3\n"
|
||||
" strexdeq %0, %4, %H4, [%2]\n"
|
||||
: "=&r" (res), "=&r" (oldval)
|
||||
: "r" (ptr), "Ir" (__old), "r" (__new)
|
||||
: "memory", "cc");
|
||||
} while (res);
|
||||
|
||||
return oldval;
|
||||
}
|
||||
|
||||
static inline unsigned long long __cmpxchg64_mb(volatile void *ptr,
|
||||
unsigned long long old,
|
||||
unsigned long long new)
|
||||
{
|
||||
unsigned long long ret;
|
||||
|
||||
smp_mb();
|
||||
ret = __cmpxchg64(ptr, old, new);
|
||||
smp_mb();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define cmpxchg64(ptr,o,n) \
|
||||
((__typeof__(*(ptr)))__cmpxchg64_mb((ptr), \
|
||||
(unsigned long long)(o), \
|
||||
(unsigned long long)(n)))
|
||||
|
||||
#define cmpxchg64_local(ptr,o,n) \
|
||||
((__typeof__(*(ptr)))__cmpxchg64((ptr), \
|
||||
(unsigned long long)(o), \
|
||||
(unsigned long long)(n)))
|
||||
|
||||
#else /* !CONFIG_CPU_32v6K */
|
||||
|
||||
#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
|
||||
|
||||
#endif /* CONFIG_CPU_32v6K */
|
||||
|
||||
#endif /* __LINUX_ARM_ARCH__ >= 6 */
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#define arch_align_stack(x) (x)
|
||||
|
||||
@@ -78,6 +78,15 @@ int arm_elf_read_implies_exec(const struct elf32_hdr *x, int executable_stack)
|
||||
return 1;
|
||||
if (cpu_architecture() < CPU_ARCH_ARMv6)
|
||||
return 1;
|
||||
#if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT)
|
||||
/*
|
||||
* If we have support for OABI programs, we can never allow NX
|
||||
* support - our signal syscall restart mechanism relies upon
|
||||
* being able to execute code placed on the user stack.
|
||||
*/
|
||||
return 1;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
EXPORT_SYMBOL(arm_elf_read_implies_exec);
|
||||
|
||||
@@ -815,10 +815,7 @@ __kuser_helper_start:
|
||||
*/
|
||||
|
||||
__kuser_memory_barrier: @ 0xffff0fa0
|
||||
|
||||
#if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_SMP)
|
||||
mcr p15, 0, r0, c7, c10, 5 @ dmb
|
||||
#endif
|
||||
smp_dmb
|
||||
usr_ret lr
|
||||
|
||||
.align 5
|
||||
|
||||
@@ -18,12 +18,14 @@
|
||||
mov r2, #1
|
||||
add r1, r1, r0, lsr #3 @ Get byte offset
|
||||
mov r3, r2, lsl r3 @ create mask
|
||||
smp_dmb
|
||||
1: ldrexb r2, [r1]
|
||||
ands r0, r2, r3 @ save old value of bit
|
||||
\instr r2, r2, r3 @ toggle bit
|
||||
strexb ip, r2, [r1]
|
||||
cmp ip, #0
|
||||
bne 1b
|
||||
smp_dmb
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
2: mov pc, lr
|
||||
|
||||
@@ -15,10 +15,9 @@
|
||||
/*
|
||||
* Memory Map definitions
|
||||
*/
|
||||
/* FIXME: Does it really swap SRAM like this? */
|
||||
#ifdef CONFIG_GEMINI_MEM_SWAP
|
||||
# define GEMINI_DRAM_BASE 0x00000000
|
||||
# define GEMINI_SRAM_BASE 0x20000000
|
||||
# define GEMINI_SRAM_BASE 0x70000000
|
||||
#else
|
||||
# define GEMINI_SRAM_BASE 0x00000000
|
||||
# define GEMINI_DRAM_BASE 0x10000000
|
||||
|
||||
@@ -144,6 +144,9 @@ static struct platform_device kirkwood_ge00 = {
|
||||
.id = 0,
|
||||
.num_resources = 1,
|
||||
.resource = kirkwood_ge00_resources,
|
||||
.dev = {
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
};
|
||||
|
||||
void __init kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
@@ -202,6 +205,9 @@ static struct platform_device kirkwood_ge01 = {
|
||||
.id = 1,
|
||||
.num_resources = 1,
|
||||
.resource = kirkwood_ge01_resources,
|
||||
.dev = {
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
};
|
||||
|
||||
void __init kirkwood_ge01_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
@@ -386,12 +392,10 @@ static struct mv64xxx_i2c_pdata kirkwood_i2c_pdata = {
|
||||
|
||||
static struct resource kirkwood_i2c_resources[] = {
|
||||
{
|
||||
.name = "i2c",
|
||||
.start = I2C_PHYS_BASE,
|
||||
.end = I2C_PHYS_BASE + 0x1f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.name = "i2c",
|
||||
.start = IRQ_KIRKWOOD_TWSI,
|
||||
.end = IRQ_KIRKWOOD_TWSI,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
|
||||
@@ -142,6 +142,8 @@ static unsigned int qnap_ts219_mpp_config[] __initdata = {
|
||||
MPP1_SPI_MOSI,
|
||||
MPP2_SPI_SCK,
|
||||
MPP3_SPI_MISO,
|
||||
MPP4_SATA1_ACTn,
|
||||
MPP5_SATA0_ACTn,
|
||||
MPP8_TW_SDA,
|
||||
MPP9_TW_SCK,
|
||||
MPP10_UART0_TXD,
|
||||
@@ -150,10 +152,6 @@ static unsigned int qnap_ts219_mpp_config[] __initdata = {
|
||||
MPP14_UART1_RXD, /* PIC controller */
|
||||
MPP15_GPIO, /* USB Copy button */
|
||||
MPP16_GPIO, /* Reset button */
|
||||
MPP20_SATA1_ACTn,
|
||||
MPP21_SATA0_ACTn,
|
||||
MPP22_SATA1_PRESENTn,
|
||||
MPP23_SATA0_PRESENTn,
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
@@ -82,6 +82,9 @@ static struct platform_device loki_ge0 = {
|
||||
.id = 0,
|
||||
.num_resources = 1,
|
||||
.resource = loki_ge0_resources,
|
||||
.dev = {
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
};
|
||||
|
||||
void __init loki_ge0_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
@@ -136,6 +139,9 @@ static struct platform_device loki_ge1 = {
|
||||
.id = 1,
|
||||
.num_resources = 1,
|
||||
.resource = loki_ge1_resources,
|
||||
.dev = {
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
};
|
||||
|
||||
void __init loki_ge1_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
|
||||
@@ -3,6 +3,11 @@
|
||||
|
||||
#include <mach/mfp.h>
|
||||
|
||||
#define MFP_DRIVE_VERY_SLOW (0x0 << 13)
|
||||
#define MFP_DRIVE_SLOW (0x1 << 13)
|
||||
#define MFP_DRIVE_MEDIUM (0x2 << 13)
|
||||
#define MFP_DRIVE_FAST (0x3 << 13)
|
||||
|
||||
/* GPIO */
|
||||
#define GPIO0_GPIO MFP_CFG(GPIO0, AF5)
|
||||
#define GPIO1_GPIO MFP_CFG(GPIO1, AF5)
|
||||
|
||||
@@ -3,6 +3,11 @@
|
||||
|
||||
#include <mach/mfp.h>
|
||||
|
||||
#define MFP_DRIVE_VERY_SLOW (0x0 << 13)
|
||||
#define MFP_DRIVE_SLOW (0x2 << 13)
|
||||
#define MFP_DRIVE_MEDIUM (0x4 << 13)
|
||||
#define MFP_DRIVE_FAST (0x8 << 13)
|
||||
|
||||
/* UART2 */
|
||||
#define GPIO47_UART2_RXD MFP_CFG(GPIO47, AF6)
|
||||
#define GPIO48_UART2_TXD MFP_CFG(GPIO48, AF6)
|
||||
|
||||
@@ -12,16 +12,13 @@
|
||||
* possible, we make the following compromise:
|
||||
*
|
||||
* 1. SLEEP_OE_N will always be programmed to '1' (by MFP_LPM_FLOAT)
|
||||
* 2. DRIVE strength definitions redefined to include the reserved bit10
|
||||
* 2. DRIVE strength definitions redefined to include the reserved bit
|
||||
* - the reserved bit differs between pxa168 and pxa910, and the
|
||||
* MFP_DRIVE_* macros are individually defined in mfp-pxa{168,910}.h
|
||||
* 3. Override MFP_CFG() and MFP_CFG_DRV()
|
||||
* 4. Drop the use of MFP_CFG_LPM() and MFP_CFG_X()
|
||||
*/
|
||||
|
||||
#define MFP_DRIVE_VERY_SLOW (0x0 << 13)
|
||||
#define MFP_DRIVE_SLOW (0x2 << 13)
|
||||
#define MFP_DRIVE_MEDIUM (0x4 << 13)
|
||||
#define MFP_DRIVE_FAST (0x8 << 13)
|
||||
|
||||
#undef MFP_CFG
|
||||
#undef MFP_CFG_DRV
|
||||
#undef MFP_CFG_LPM
|
||||
|
||||
@@ -136,7 +136,7 @@ static struct clock_event_device ckevt = {
|
||||
.set_mode = timer_set_mode,
|
||||
};
|
||||
|
||||
static cycle_t clksrc_read(void)
|
||||
static cycle_t clksrc_read(struct clocksource *cs)
|
||||
{
|
||||
return timer_read();
|
||||
}
|
||||
|
||||
@@ -321,6 +321,9 @@ static struct platform_device mv78xx0_ge00 = {
|
||||
.id = 0,
|
||||
.num_resources = 1,
|
||||
.resource = mv78xx0_ge00_resources,
|
||||
.dev = {
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
};
|
||||
|
||||
void __init mv78xx0_ge00_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
@@ -375,6 +378,9 @@ static struct platform_device mv78xx0_ge01 = {
|
||||
.id = 1,
|
||||
.num_resources = 1,
|
||||
.resource = mv78xx0_ge01_resources,
|
||||
.dev = {
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
};
|
||||
|
||||
void __init mv78xx0_ge01_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
@@ -429,6 +435,9 @@ static struct platform_device mv78xx0_ge10 = {
|
||||
.id = 2,
|
||||
.num_resources = 1,
|
||||
.resource = mv78xx0_ge10_resources,
|
||||
.dev = {
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
};
|
||||
|
||||
void __init mv78xx0_ge10_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
@@ -496,6 +505,9 @@ static struct platform_device mv78xx0_ge11 = {
|
||||
.id = 3,
|
||||
.num_resources = 1,
|
||||
.resource = mv78xx0_ge11_resources,
|
||||
.dev = {
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
};
|
||||
|
||||
void __init mv78xx0_ge11_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
@@ -532,12 +544,10 @@ static struct mv64xxx_i2c_pdata mv78xx0_i2c_0_pdata = {
|
||||
|
||||
static struct resource mv78xx0_i2c_0_resources[] = {
|
||||
{
|
||||
.name = "i2c 0 base",
|
||||
.start = I2C_0_PHYS_BASE,
|
||||
.end = I2C_0_PHYS_BASE + 0x1f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.name = "i2c 0 irq",
|
||||
.start = IRQ_MV78XX0_I2C_0,
|
||||
.end = IRQ_MV78XX0_I2C_0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
@@ -567,12 +577,10 @@ static struct mv64xxx_i2c_pdata mv78xx0_i2c_1_pdata = {
|
||||
|
||||
static struct resource mv78xx0_i2c_1_resources[] = {
|
||||
{
|
||||
.name = "i2c 1 base",
|
||||
.start = I2C_1_PHYS_BASE,
|
||||
.end = I2C_1_PHYS_BASE + 0x1f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.name = "i2c 1 irq",
|
||||
.start = IRQ_MV78XX0_I2C_1,
|
||||
.end = IRQ_MV78XX0_I2C_1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
|
||||
@@ -188,6 +188,9 @@ static struct platform_device orion5x_eth = {
|
||||
.id = 0,
|
||||
.num_resources = 1,
|
||||
.resource = orion5x_eth_resources,
|
||||
.dev = {
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
};
|
||||
|
||||
void __init orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data)
|
||||
@@ -248,12 +251,10 @@ static struct mv64xxx_i2c_pdata orion5x_i2c_pdata = {
|
||||
|
||||
static struct resource orion5x_i2c_resources[] = {
|
||||
{
|
||||
.name = "i2c base",
|
||||
.start = I2C_PHYS_BASE,
|
||||
.end = I2C_PHYS_BASE + 0x1f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.name = "i2c irq",
|
||||
.start = IRQ_ORION5X_I2C,
|
||||
.end = IRQ_ORION5X_I2C,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
|
||||
+18
-18
@@ -111,9 +111,9 @@ static unsigned long ezx_pin_config[] __initdata = {
|
||||
GPIO25_SSP1_TXD,
|
||||
GPIO26_SSP1_RXD,
|
||||
GPIO24_GPIO, /* pcap chip select */
|
||||
GPIO1_GPIO, /* pcap interrupt */
|
||||
GPIO4_GPIO, /* WDI_AP */
|
||||
GPIO55_GPIO, /* SYS_RESTART */
|
||||
GPIO1_GPIO | WAKEUP_ON_EDGE_RISE, /* pcap interrupt */
|
||||
GPIO4_GPIO | MFP_LPM_DRIVE_HIGH, /* WDI_AP */
|
||||
GPIO55_GPIO | MFP_LPM_DRIVE_HIGH, /* SYS_RESTART */
|
||||
|
||||
/* MMC */
|
||||
GPIO32_MMC_CLK,
|
||||
@@ -144,20 +144,20 @@ static unsigned long ezx_pin_config[] __initdata = {
|
||||
#if defined(CONFIG_MACH_EZX_A780) || defined(CONFIG_MACH_EZX_E680)
|
||||
static unsigned long gen1_pin_config[] __initdata = {
|
||||
/* flip / lockswitch */
|
||||
GPIO12_GPIO,
|
||||
GPIO12_GPIO | WAKEUP_ON_EDGE_BOTH,
|
||||
|
||||
/* bluetooth (bcm2035) */
|
||||
GPIO14_GPIO | WAKEUP_ON_LEVEL_HIGH, /* HOSTWAKE */
|
||||
GPIO14_GPIO | WAKEUP_ON_EDGE_RISE, /* HOSTWAKE */
|
||||
GPIO48_GPIO, /* RESET */
|
||||
GPIO28_GPIO, /* WAKEUP */
|
||||
|
||||
/* Neptune handshake */
|
||||
GPIO0_GPIO | WAKEUP_ON_LEVEL_HIGH, /* BP_RDY */
|
||||
GPIO57_GPIO, /* AP_RDY */
|
||||
GPIO13_GPIO | WAKEUP_ON_LEVEL_HIGH, /* WDI */
|
||||
GPIO3_GPIO | WAKEUP_ON_LEVEL_HIGH, /* WDI2 */
|
||||
GPIO82_GPIO, /* RESET */
|
||||
GPIO99_GPIO, /* TC_MM_EN */
|
||||
GPIO0_GPIO | WAKEUP_ON_EDGE_FALL, /* BP_RDY */
|
||||
GPIO57_GPIO | MFP_LPM_DRIVE_HIGH, /* AP_RDY */
|
||||
GPIO13_GPIO | WAKEUP_ON_EDGE_BOTH, /* WDI */
|
||||
GPIO3_GPIO | WAKEUP_ON_EDGE_BOTH, /* WDI2 */
|
||||
GPIO82_GPIO | MFP_LPM_DRIVE_HIGH, /* RESET */
|
||||
GPIO99_GPIO | MFP_LPM_DRIVE_HIGH, /* TC_MM_EN */
|
||||
|
||||
/* sound */
|
||||
GPIO52_SSP3_SCLK,
|
||||
@@ -199,21 +199,21 @@ static unsigned long gen1_pin_config[] __initdata = {
|
||||
defined(CONFIG_MACH_EZX_E2) || defined(CONFIG_MACH_EZX_E6)
|
||||
static unsigned long gen2_pin_config[] __initdata = {
|
||||
/* flip / lockswitch */
|
||||
GPIO15_GPIO,
|
||||
GPIO15_GPIO | WAKEUP_ON_EDGE_BOTH,
|
||||
|
||||
/* EOC */
|
||||
GPIO10_GPIO,
|
||||
GPIO10_GPIO | WAKEUP_ON_EDGE_RISE,
|
||||
|
||||
/* bluetooth (bcm2045) */
|
||||
GPIO13_GPIO | WAKEUP_ON_LEVEL_HIGH, /* HOSTWAKE */
|
||||
GPIO13_GPIO | WAKEUP_ON_EDGE_RISE, /* HOSTWAKE */
|
||||
GPIO37_GPIO, /* RESET */
|
||||
GPIO57_GPIO, /* WAKEUP */
|
||||
|
||||
/* Neptune handshake */
|
||||
GPIO0_GPIO | WAKEUP_ON_LEVEL_HIGH, /* BP_RDY */
|
||||
GPIO96_GPIO, /* AP_RDY */
|
||||
GPIO3_GPIO | WAKEUP_ON_LEVEL_HIGH, /* WDI */
|
||||
GPIO116_GPIO, /* RESET */
|
||||
GPIO0_GPIO | WAKEUP_ON_EDGE_FALL, /* BP_RDY */
|
||||
GPIO96_GPIO | MFP_LPM_DRIVE_HIGH, /* AP_RDY */
|
||||
GPIO3_GPIO | WAKEUP_ON_EDGE_FALL, /* WDI */
|
||||
GPIO116_GPIO | MFP_LPM_DRIVE_HIGH, /* RESET */
|
||||
GPIO41_GPIO, /* BP_FLASH */
|
||||
|
||||
/* sound */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user