diff options
Diffstat (limited to 'arch/arm/include')
| -rw-r--r-- | arch/arm/include/asm/Kbuild | 1 | ||||
| -rw-r--r-- | arch/arm/include/asm/dma-mapping.h | 1 | ||||
| -rw-r--r-- | arch/arm/include/asm/hardware/sp810.h | 2 | ||||
| -rw-r--r-- | arch/arm/include/asm/io.h | 6 | ||||
| -rw-r--r-- | arch/arm/include/asm/prom.h | 2 | ||||
| -rw-r--r-- | arch/arm/include/asm/sched_clock.h | 2 | ||||
| -rw-r--r-- | arch/arm/include/asm/vfpmacros.h | 12 | ||||
| -rw-r--r-- | arch/arm/include/debug/8250_32.S | 27 | ||||
| -rw-r--r-- | arch/arm/include/debug/picoxcell.S | 18 | ||||
| -rw-r--r-- | arch/arm/include/debug/socfpga.S | 5 | ||||
| -rw-r--r-- | arch/arm/include/uapi/asm/hwcap.h | 3 | 
11 files changed, 49 insertions, 30 deletions
diff --git a/arch/arm/include/asm/Kbuild b/arch/arm/include/asm/Kbuild index f70ae175a3d..514e398f1a0 100644 --- a/arch/arm/include/asm/Kbuild +++ b/arch/arm/include/asm/Kbuild @@ -31,5 +31,6 @@ generic-y += sockios.h  generic-y += termbits.h  generic-y += termios.h  generic-y += timex.h +generic-y += trace_clock.h  generic-y += types.h  generic-y += unaligned.h diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h index 78d8e9b5544..23004847bb0 100644 --- a/arch/arm/include/asm/dma-mapping.h +++ b/arch/arm/include/asm/dma-mapping.h @@ -91,7 +91,6 @@ static inline dma_addr_t virt_to_dma(struct device *dev, void *addr)   */  static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)  { -	debug_dma_mapping_error(dev, dma_addr);  	return dma_addr == DMA_ERROR_CODE;  } diff --git a/arch/arm/include/asm/hardware/sp810.h b/arch/arm/include/asm/hardware/sp810.h index 6b9b077d86b..afd7e916472 100644 --- a/arch/arm/include/asm/hardware/sp810.h +++ b/arch/arm/include/asm/hardware/sp810.h @@ -56,6 +56,8 @@  #define SCCTRL_TIMEREN1SEL_REFCLK	(0 << 17)  #define SCCTRL_TIMEREN1SEL_TIMCLK	(1 << 17) +#define SCCTRL_TIMERENnSEL_SHIFT(n)	(15 + ((n) * 2)) +  static inline void sysctl_soft_reset(void __iomem *base)  {  	/* switch to slow mode */ diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h index 35c1ed89b93..652b56086de 100644 --- a/arch/arm/include/asm/io.h +++ b/arch/arm/include/asm/io.h @@ -64,7 +64,7 @@ extern void __raw_readsl(const void __iomem *addr, void *data, int longlen);  static inline void __raw_writew(u16 val, volatile void __iomem *addr)  {  	asm volatile("strh %1, %0" -		     : "+Qo" (*(volatile u16 __force *)addr) +		     : "+Q" (*(volatile u16 __force *)addr)  		     : "r" (val));  } @@ -72,7 +72,7 @@ static inline u16 __raw_readw(const volatile void __iomem *addr)  {  	u16 val;  	asm volatile("ldrh %1, %0" -		     : "+Qo" (*(volatile u16 __force *)addr), +		     : "+Q" (*(volatile u16 __force *)addr),  		       "=r" (val));  	return val;  } @@ -374,7 +374,7 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *addr);  #ifdef CONFIG_MMU  #define ARCH_HAS_VALID_PHYS_ADDR_RANGE -extern int valid_phys_addr_range(unsigned long addr, size_t size); +extern int valid_phys_addr_range(phys_addr_t addr, size_t size);  extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size);  extern int devmem_is_allowed(unsigned long pfn);  #endif diff --git a/arch/arm/include/asm/prom.h b/arch/arm/include/asm/prom.h index aeae9c609df..6d65ba222db 100644 --- a/arch/arm/include/asm/prom.h +++ b/arch/arm/include/asm/prom.h @@ -11,6 +11,8 @@  #ifndef __ASMARM_PROM_H  #define __ASMARM_PROM_H +#define HAVE_ARCH_DEVTREE_FIXUPS +  #ifdef CONFIG_OF  extern struct machine_desc *setup_machine_fdt(unsigned int dt_phys); diff --git a/arch/arm/include/asm/sched_clock.h b/arch/arm/include/asm/sched_clock.h index 05b8e82ec9f..e3f75726343 100644 --- a/arch/arm/include/asm/sched_clock.h +++ b/arch/arm/include/asm/sched_clock.h @@ -10,7 +10,5 @@  extern void sched_clock_postinit(void);  extern void setup_sched_clock(u32 (*read)(void), int bits, unsigned long rate); -extern void setup_sched_clock_needs_suspend(u32 (*read)(void), int bits, -		unsigned long rate);  #endif diff --git a/arch/arm/include/asm/vfpmacros.h b/arch/arm/include/asm/vfpmacros.h index 6a6f1e485f4..301c1db3e99 100644 --- a/arch/arm/include/asm/vfpmacros.h +++ b/arch/arm/include/asm/vfpmacros.h @@ -27,9 +27,9 @@  #if __LINUX_ARM_ARCH__ <= 6  	ldr	\tmp, =elf_hwcap		    @ may not have MVFR regs  	ldr	\tmp, [\tmp, #0] -	tst	\tmp, #HWCAP_VFPv3D16 -	ldceql	p11, cr0, [\base],#32*4		    @ FLDMIAD \base!, {d16-d31} -	addne	\base, \base, #32*4		    @ step over unused register space +	tst	\tmp, #HWCAP_VFPD32 +	ldcnel	p11, cr0, [\base],#32*4		    @ FLDMIAD \base!, {d16-d31} +	addeq	\base, \base, #32*4		    @ step over unused register space  #else  	VFPFMRX	\tmp, MVFR0			    @ Media and VFP Feature Register 0  	and	\tmp, \tmp, #MVFR0_A_SIMD_MASK	    @ A_SIMD field @@ -51,9 +51,9 @@  #if __LINUX_ARM_ARCH__ <= 6  	ldr	\tmp, =elf_hwcap		    @ may not have MVFR regs  	ldr	\tmp, [\tmp, #0] -	tst	\tmp, #HWCAP_VFPv3D16 -	stceql	p11, cr0, [\base],#32*4		    @ FSTMIAD \base!, {d16-d31} -	addne	\base, \base, #32*4		    @ step over unused register space +	tst	\tmp, #HWCAP_VFPD32 +	stcnel	p11, cr0, [\base],#32*4		    @ FSTMIAD \base!, {d16-d31} +	addeq	\base, \base, #32*4		    @ step over unused register space  #else  	VFPFMRX	\tmp, MVFR0			    @ Media and VFP Feature Register 0  	and	\tmp, \tmp, #MVFR0_A_SIMD_MASK	    @ A_SIMD field diff --git a/arch/arm/include/debug/8250_32.S b/arch/arm/include/debug/8250_32.S new file mode 100644 index 00000000000..8db01eeabbb --- /dev/null +++ b/arch/arm/include/debug/8250_32.S @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2011 Picochip Ltd., Jamie Iles + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * Derived from arch/arm/mach-davinci/include/mach/debug-macro.S to use 32-bit + * accesses to the 8250. + */ + +#include <linux/serial_reg.h> + +		.macro	senduart,rd,rx +		str	\rd, [\rx, #UART_TX << UART_SHIFT] +		.endm + +		.macro	busyuart,rd,rx +1002:		ldr	\rd, [\rx, #UART_LSR << UART_SHIFT] +		and	\rd, \rd, #UART_LSR_TEMT | UART_LSR_THRE +		teq	\rd, #UART_LSR_TEMT | UART_LSR_THRE +		bne	1002b +		.endm + +		/* The UART's don't have any flow control IO's wired up. */ +		.macro	waituart,rd,rx +		.endm diff --git a/arch/arm/include/debug/picoxcell.S b/arch/arm/include/debug/picoxcell.S index 7419deb1b94..bc1f07c49cd 100644 --- a/arch/arm/include/debug/picoxcell.S +++ b/arch/arm/include/debug/picoxcell.S @@ -5,10 +5,7 @@   * it under the terms of the GNU General Public License version 2 as   * published by the Free Software Foundation.   * - * Derived from arch/arm/mach-davinci/include/mach/debug-macro.S to use 32-bit - * accesses to the 8250.   */ -#include <linux/serial_reg.h>  #define UART_SHIFT 2  #define PICOXCELL_UART1_BASE		0x80230000 @@ -19,17 +16,4 @@  		ldr	\rp, =PICOXCELL_UART1_BASE  		.endm -		.macro	senduart,rd,rx -		str	\rd, [\rx, #UART_TX << UART_SHIFT] -		.endm - -		.macro	busyuart,rd,rx -1002:		ldr	\rd, [\rx, #UART_LSR << UART_SHIFT] -		and	\rd, \rd, #UART_LSR_TEMT | UART_LSR_THRE -		teq	\rd, #UART_LSR_TEMT | UART_LSR_THRE -		bne	1002b -		.endm - -		/* The UART's don't have any flow control IO's wired up. */ -		.macro	waituart,rd,rx -		.endm +#include "8250_32.S" diff --git a/arch/arm/include/debug/socfpga.S b/arch/arm/include/debug/socfpga.S index d6f26d23374..966b2f99494 100644 --- a/arch/arm/include/debug/socfpga.S +++ b/arch/arm/include/debug/socfpga.S @@ -7,6 +7,9 @@   * published by the Free Software Foundation.   */ +#define UART_SHIFT 2 +#define DEBUG_LL_UART_OFFSET	0x00002000 +  		.macro	addruart, rp, rv, tmp  		mov	\rp, #DEBUG_LL_UART_OFFSET  		orr	\rp, \rp, #0x00c00000 @@ -14,3 +17,5 @@  		orr	\rp, \rp, #0xff000000	@ physical base  		.endm +#include "8250_32.S" + diff --git a/arch/arm/include/uapi/asm/hwcap.h b/arch/arm/include/uapi/asm/hwcap.h index f254f6503cc..3688fd15a32 100644 --- a/arch/arm/include/uapi/asm/hwcap.h +++ b/arch/arm/include/uapi/asm/hwcap.h @@ -18,11 +18,12 @@  #define HWCAP_THUMBEE	(1 << 11)  #define HWCAP_NEON	(1 << 12)  #define HWCAP_VFPv3	(1 << 13) -#define HWCAP_VFPv3D16	(1 << 14) +#define HWCAP_VFPv3D16	(1 << 14)	/* also set for VFPv4-D16 */  #define HWCAP_TLS	(1 << 15)  #define HWCAP_VFPv4	(1 << 16)  #define HWCAP_IDIVA	(1 << 17)  #define HWCAP_IDIVT	(1 << 18) +#define HWCAP_VFPD32	(1 << 19)	/* set if VFP has 32 regs (not 16) */  #define HWCAP_IDIV	(HWCAP_IDIVA | HWCAP_IDIVT)  |