diff options
Diffstat (limited to 'arch/sh/include')
29 files changed, 657 insertions, 285 deletions
| diff --git a/arch/sh/include/asm/Kbuild b/arch/sh/include/asm/Kbuild index 0eed47b236ab..7beb42322f60 100644 --- a/arch/sh/include/asm/Kbuild +++ b/arch/sh/include/asm/Kbuild @@ -5,5 +5,7 @@ header-y += cpu-features.h  header-y += hw_breakpoint.h  header-y += posix_types_32.h  header-y += posix_types_64.h +header-y += ptrace_32.h +header-y += ptrace_64.h  header-y += unistd_32.h  header-y += unistd_64.h diff --git a/arch/sh/include/asm/elf.h b/arch/sh/include/asm/elf.h index ce830faeebbf..f38112be67d2 100644 --- a/arch/sh/include/asm/elf.h +++ b/arch/sh/include/asm/elf.h @@ -50,25 +50,14 @@  #define	R_SH_GOTPC		167  /* FDPIC relocs */ -#define R_SH_GOT20		70 -#define R_SH_GOTOFF20		71 -#define R_SH_GOTFUNCDESC	72 -#define R_SH_GOTFUNCDESC20	73 -#define R_SH_GOTOFFFUNCDESC	74 -#define R_SH_GOTOFFFUNCDESC20	75 -#define R_SH_FUNCDESC		76 -#define R_SH_FUNCDESC_VALUE	77 - -#if 0 /* XXX - later .. */ -#define R_SH_GOT20		198 -#define R_SH_GOTOFF20		199 -#define R_SH_GOTFUNCDESC	200 -#define R_SH_GOTFUNCDESC20	201 -#define R_SH_GOTOFFFUNCDESC	202 -#define R_SH_GOTOFFFUNCDESC20	203 -#define R_SH_FUNCDESC		204 -#define R_SH_FUNCDESC_VALUE	205 -#endif +#define R_SH_GOT20		201 +#define R_SH_GOTOFF20		202 +#define R_SH_GOTFUNCDESC	203 +#define R_SH_GOTFUNCDESC20	204 +#define R_SH_GOTOFFFUNCDESC	205 +#define R_SH_GOTOFFFUNCDESC20	206 +#define R_SH_FUNCDESC		207 +#define R_SH_FUNCDESC_VALUE	208  /* SHmedia relocs */  #define R_SH_IMM_LOW16		246 diff --git a/arch/sh/include/asm/fixmap.h b/arch/sh/include/asm/fixmap.h index 6e7cea453895..bd7e79a12653 100644 --- a/arch/sh/include/asm/fixmap.h +++ b/arch/sh/include/asm/fixmap.h @@ -58,7 +58,7 @@ enum fixed_addresses {  #ifdef CONFIG_HIGHMEM  	FIX_KMAP_BEGIN,	/* reserved pte's for temporary kernel mappings */ -	FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1, +	FIX_KMAP_END = FIX_KMAP_BEGIN + (KM_TYPE_NR * NR_CPUS) - 1,  #endif  #ifdef CONFIG_IOREMAP_FIXED @@ -69,7 +69,7 @@ enum fixed_addresses {  	 */  #define FIX_N_IOREMAPS	32  	FIX_IOREMAP_BEGIN, -	FIX_IOREMAP_END = FIX_IOREMAP_BEGIN + FIX_N_IOREMAPS, +	FIX_IOREMAP_END = FIX_IOREMAP_BEGIN + FIX_N_IOREMAPS - 1,  #endif  	__end_of_fixed_addresses diff --git a/arch/sh/include/asm/gpio.h b/arch/sh/include/asm/gpio.h index f8d9a731e903..04f53d31489f 100644 --- a/arch/sh/include/asm/gpio.h +++ b/arch/sh/include/asm/gpio.h @@ -41,14 +41,12 @@ static inline int gpio_cansleep(unsigned gpio)  static inline int gpio_to_irq(unsigned gpio)  { -	WARN_ON(1); -	return -ENOSYS; +	return __gpio_to_irq(gpio);  }  static inline int irq_to_gpio(unsigned int irq)  { -	WARN_ON(1); -	return -EINVAL; +	return -ENOSYS;  }  #endif /* CONFIG_GPIOLIB */ diff --git a/arch/sh/include/asm/irq.h b/arch/sh/include/asm/irq.h index 02c2f0102cfa..45d08b6a5ef7 100644 --- a/arch/sh/include/asm/irq.h +++ b/arch/sh/include/asm/irq.h @@ -9,7 +9,7 @@   * advised to cap this at the hard limit that they're interested in   * through the machvec.   */ -#define NR_IRQS			256 +#define NR_IRQS			512  #define NR_IRQS_LEGACY		8	/* Legacy external IRQ0-7 */  /* diff --git a/arch/sh/include/asm/kprobes.h b/arch/sh/include/asm/kprobes.h index 036c3311233c..134f3980e44a 100644 --- a/arch/sh/include/asm/kprobes.h +++ b/arch/sh/include/asm/kprobes.h @@ -16,7 +16,6 @@ typedef insn_size_t kprobe_opcode_t;  	? (MAX_STACK_SIZE) \  	: (((unsigned long)current_thread_info()) + THREAD_SIZE - (ADDR))) -#define regs_return_value(_regs)		((_regs)->regs[0])  #define flush_insn_slot(p)		do { } while (0)  #define kretprobe_blacklist_size	0 diff --git a/arch/sh/include/asm/pci.h b/arch/sh/include/asm/pci.h index 8bd952fcf3ba..f0efe97f1750 100644 --- a/arch/sh/include/asm/pci.h +++ b/arch/sh/include/asm/pci.h @@ -37,6 +37,8 @@ struct pci_channel {  };  /* arch/sh/drivers/pci/pci.c */ +extern raw_spinlock_t pci_config_lock; +  extern int register_pci_controller(struct pci_channel *hose);  extern void pcibios_report_status(unsigned int status_mask, int warn); diff --git a/arch/sh/include/asm/pgtable_32.h b/arch/sh/include/asm/pgtable_32.h index e172d696e52b..69fdfbf14ea5 100644 --- a/arch/sh/include/asm/pgtable_32.h +++ b/arch/sh/include/asm/pgtable_32.h @@ -429,10 +429,7 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)  #define pte_offset_kernel(dir, address) \  	((pte_t *) pmd_page_vaddr(*(dir)) + pte_index(address))  #define pte_offset_map(dir, address)		pte_offset_kernel(dir, address) -#define pte_offset_map_nested(dir, address)	pte_offset_kernel(dir, address) -  #define pte_unmap(pte)		do { } while (0) -#define pte_unmap_nested(pte)	do { } while (0)  #ifdef CONFIG_X2TLB  #define pte_ERROR(e) \ diff --git a/arch/sh/include/asm/pgtable_64.h b/arch/sh/include/asm/pgtable_64.h index 0ee46776dad6..10a48111226d 100644 --- a/arch/sh/include/asm/pgtable_64.h +++ b/arch/sh/include/asm/pgtable_64.h @@ -84,9 +84,7 @@ static __inline__ void set_pte(pte_t *pteptr, pte_t pteval)  		((pte_t *) ((pmd_val(*(dir))) & PAGE_MASK) + pte_index((addr)))  #define pte_offset_map(dir,addr)	pte_offset_kernel(dir, addr) -#define pte_offset_map_nested(dir,addr)	pte_offset_kernel(dir, addr)  #define pte_unmap(pte)		do { } while (0) -#define pte_unmap_nested(pte)	do { } while (0)  #ifndef __ASSEMBLY__  #define IOBASE_VADDR	0xff000000 diff --git a/arch/sh/include/asm/processor_32.h b/arch/sh/include/asm/processor_32.h index 61a445d2d02a..46d5179c9f49 100644 --- a/arch/sh/include/asm/processor_32.h +++ b/arch/sh/include/asm/processor_32.h @@ -13,7 +13,6 @@  #include <linux/linkage.h>  #include <asm/page.h>  #include <asm/types.h> -#include <asm/ptrace.h>  #include <asm/hw_breakpoint.h>  /* @@ -194,8 +193,6 @@ extern unsigned long get_wchan(struct task_struct *p);  #define KSTK_EIP(tsk)  (task_pt_regs(tsk)->pc)  #define KSTK_ESP(tsk)  (task_pt_regs(tsk)->regs[15]) -#define user_stack_pointer(_regs)	((_regs)->regs[15]) -  #if defined(CONFIG_CPU_SH2A) || defined(CONFIG_CPU_SH4)  #define PREFETCH_STRIDE		L1_CACHE_BYTES  #define ARCH_HAS_PREFETCH diff --git a/arch/sh/include/asm/processor_64.h b/arch/sh/include/asm/processor_64.h index 621bc4618c6b..2a541ddb5a1b 100644 --- a/arch/sh/include/asm/processor_64.h +++ b/arch/sh/include/asm/processor_64.h @@ -17,7 +17,6 @@  #include <linux/compiler.h>  #include <asm/page.h>  #include <asm/types.h> -#include <asm/ptrace.h>  #include <cpu/registers.h>  /* @@ -231,7 +230,5 @@ extern unsigned long get_wchan(struct task_struct *p);  #define KSTK_EIP(tsk)  ((tsk)->thread.pc)  #define KSTK_ESP(tsk)  ((tsk)->thread.sp) -#define user_stack_pointer(_regs)	((_regs)->regs[15]) -  #endif	/* __ASSEMBLY__ */  #endif /* __ASM_SH_PROCESSOR_64_H */ diff --git a/arch/sh/include/asm/ptrace.h b/arch/sh/include/asm/ptrace.h index 2168fde25611..f6edc10aa0d3 100644 --- a/arch/sh/include/asm/ptrace.h +++ b/arch/sh/include/asm/ptrace.h @@ -3,90 +3,7 @@  /*   * Copyright (C) 1999, 2000  Niibe Yutaka - * - */ -#if defined(__SH5__) -struct pt_regs { -	unsigned long long pc; -	unsigned long long sr; -	long long syscall_nr; -	unsigned long long regs[63]; -	unsigned long long tregs[8]; -	unsigned long long pad[2]; -}; -#else -/* - * GCC defines register number like this: - * ----------------------------- - *	 0 - 15 are integer registers - *	17 - 22 are control/special registers - *	24 - 39 fp registers - *	40 - 47 xd registers - *	48 -    fpscr register - * ----------------------------- - * - * We follows above, except: - *	16 --- program counter (PC) - *	22 --- syscall # - *	23 --- floating point communication register   */ -#define REG_REG0	 0 -#define REG_REG15	15 - -#define REG_PC		16 - -#define REG_PR		17 -#define REG_SR		18 -#define REG_GBR		19 -#define REG_MACH	20 -#define REG_MACL	21 - -#define REG_SYSCALL	22 - -#define REG_FPREG0	23 -#define REG_FPREG15	38 -#define REG_XFREG0	39 -#define REG_XFREG15	54 - -#define REG_FPSCR	55 -#define REG_FPUL	56 - -/* - * This struct defines the way the registers are stored on the - * kernel stack during a system call or other kernel entry. - */ -struct pt_regs { -	unsigned long regs[16]; -	unsigned long pc; -	unsigned long pr; -	unsigned long sr; -	unsigned long gbr; -	unsigned long mach; -	unsigned long macl; -	long tra; -}; - -/* - * This struct defines the way the DSP registers are stored on the - * kernel stack during a system call or other kernel entry. - */ -struct pt_dspregs { -	unsigned long	a1; -	unsigned long	a0g; -	unsigned long	a1g; -	unsigned long	m0; -	unsigned long	m1; -	unsigned long	a0; -	unsigned long	x0; -	unsigned long	x1; -	unsigned long	y0; -	unsigned long	y1; -	unsigned long	dsr; -	unsigned long	rs; -	unsigned long	re; -	unsigned long	mod; -}; -#endif  #define PTRACE_GETREGS		12	/* General registers */  #define PTRACE_SETREGS		13 @@ -107,22 +24,102 @@ struct pt_dspregs {  #define PT_DATA_ADDR		248	/* &(struct user)->start_data */  #define PT_TEXT_LEN		252 +#if defined(__SH5__) || defined(CONFIG_CPU_SH5) +#include "ptrace_64.h" +#else +#include "ptrace_32.h" +#endif +  #ifdef __KERNEL__ + +#include <linux/stringify.h> +#include <linux/stddef.h> +#include <linux/thread_info.h>  #include <asm/addrspace.h>  #include <asm/page.h>  #include <asm/system.h>  #define user_mode(regs)			(((regs)->sr & 0x40000000)==0) +#define user_stack_pointer(regs)	((unsigned long)(regs)->regs[15]) +#define kernel_stack_pointer(regs)	((unsigned long)(regs)->regs[15])  #define instruction_pointer(regs)	((unsigned long)(regs)->pc)  extern void show_regs(struct pt_regs *); +#define arch_has_single_step()	(1) +  /* - * These are defined as per linux/ptrace.h. + * kprobe-based event tracer support   */ -struct task_struct; +struct pt_regs_offset { +	const char *name; +	int offset; +}; -#define arch_has_single_step()	(1) +#define REG_OFFSET_NAME(r) {.name = #r, .offset = offsetof(struct pt_regs, r)} +#define REGS_OFFSET_NAME(num)	\ +	{.name = __stringify(r##num), .offset = offsetof(struct pt_regs, regs[num])} +#define TREGS_OFFSET_NAME(num)	\ +	{.name = __stringify(tr##num), .offset = offsetof(struct pt_regs, tregs[num])} +#define REG_OFFSET_END {.name = NULL, .offset = 0} + +/* Query offset/name of register from its name/offset */ +extern int regs_query_register_offset(const char *name); +extern const char *regs_query_register_name(unsigned int offset); + +extern const struct pt_regs_offset regoffset_table[]; + +/** + * regs_get_register() - get register value from its offset + * @regs:	pt_regs from which register value is gotten. + * @offset:	offset number of the register. + * + * regs_get_register returns the value of a register. The @offset is the + * offset of the register in struct pt_regs address which specified by @regs. + * If @offset is bigger than MAX_REG_OFFSET, this returns 0. + */ +static inline unsigned long regs_get_register(struct pt_regs *regs, +					      unsigned int offset) +{ +	if (unlikely(offset > MAX_REG_OFFSET)) +		return 0; +	return *(unsigned long *)((unsigned long)regs + offset); +} + +/** + * regs_within_kernel_stack() - check the address in the stack + * @regs:	pt_regs which contains kernel stack pointer. + * @addr:	address which is checked. + * + * regs_within_kernel_stack() checks @addr is within the kernel stack page(s). + * If @addr is within the kernel stack, it returns true. If not, returns false. + */ +static inline int regs_within_kernel_stack(struct pt_regs *regs, +					   unsigned long addr) +{ +	return ((addr & ~(THREAD_SIZE - 1))  == +		(kernel_stack_pointer(regs) & ~(THREAD_SIZE - 1))); +} + +/** + * regs_get_kernel_stack_nth() - get Nth entry of the stack + * @regs:	pt_regs which contains kernel stack pointer. + * @n:		stack entry number. + * + * regs_get_kernel_stack_nth() returns @n th entry of the kernel stack which + * is specified by @regs. If the @n th entry is NOT in the kernel stack, + * this returns 0. + */ +static inline unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, +						      unsigned int n) +{ +	unsigned long *addr = (unsigned long *)kernel_stack_pointer(regs); +	addr += n; +	if (regs_within_kernel_stack(regs, (unsigned long)addr)) +		return *addr; +	else +		return 0; +}  struct perf_event;  struct perf_sample_data; diff --git a/arch/sh/include/asm/ptrace_32.h b/arch/sh/include/asm/ptrace_32.h new file mode 100644 index 000000000000..35d9e257558c --- /dev/null +++ b/arch/sh/include/asm/ptrace_32.h @@ -0,0 +1,83 @@ +#ifndef __ASM_SH_PTRACE_32_H +#define __ASM_SH_PTRACE_32_H + +/* + * GCC defines register number like this: + * ----------------------------- + *	 0 - 15 are integer registers + *	17 - 22 are control/special registers + *	24 - 39 fp registers + *	40 - 47 xd registers + *	48 -    fpscr register + * ----------------------------- + * + * We follows above, except: + *	16 --- program counter (PC) + *	22 --- syscall # + *	23 --- floating point communication register + */ +#define REG_REG0	 0 +#define REG_REG15	15 + +#define REG_PC		16 + +#define REG_PR		17 +#define REG_SR		18 +#define REG_GBR		19 +#define REG_MACH	20 +#define REG_MACL	21 + +#define REG_SYSCALL	22 + +#define REG_FPREG0	23 +#define REG_FPREG15	38 +#define REG_XFREG0	39 +#define REG_XFREG15	54 + +#define REG_FPSCR	55 +#define REG_FPUL	56 + +/* + * This struct defines the way the registers are stored on the + * kernel stack during a system call or other kernel entry. + */ +struct pt_regs { +	unsigned long regs[16]; +	unsigned long pc; +	unsigned long pr; +	unsigned long sr; +	unsigned long gbr; +	unsigned long mach; +	unsigned long macl; +	long tra; +}; + +/* + * This struct defines the way the DSP registers are stored on the + * kernel stack during a system call or other kernel entry. + */ +struct pt_dspregs { +	unsigned long	a1; +	unsigned long	a0g; +	unsigned long	a1g; +	unsigned long	m0; +	unsigned long	m1; +	unsigned long	a0; +	unsigned long	x0; +	unsigned long	x1; +	unsigned long	y0; +	unsigned long	y1; +	unsigned long	dsr; +	unsigned long	rs; +	unsigned long	re; +	unsigned long	mod; +}; + +#ifdef __KERNEL__ + +#define MAX_REG_OFFSET		offsetof(struct pt_regs, tra) +#define regs_return_value(regs)	((regs)->regs[0]) + +#endif /* __KERNEL__ */ + +#endif /* __ASM_SH_PTRACE_32_H */ diff --git a/arch/sh/include/asm/ptrace_64.h b/arch/sh/include/asm/ptrace_64.h new file mode 100644 index 000000000000..d43c1cb0bbe7 --- /dev/null +++ b/arch/sh/include/asm/ptrace_64.h @@ -0,0 +1,20 @@ +#ifndef __ASM_SH_PTRACE_64_H +#define __ASM_SH_PTRACE_64_H + +struct pt_regs { +	unsigned long long pc; +	unsigned long long sr; +	long long syscall_nr; +	unsigned long long regs[63]; +	unsigned long long tregs[8]; +	unsigned long long pad[2]; +}; + +#ifdef __KERNEL__ + +#define MAX_REG_OFFSET		offsetof(struct pt_regs, tregs[7]) +#define regs_return_value(regs)	((regs)->regs[3]) + +#endif /* __KERNEL__ */ + +#endif /* __ASM_SH_PTRACE_64_H */ diff --git a/arch/sh/include/asm/sizes.h b/arch/sh/include/asm/sizes.h index 3a1fb97770f1..0b9fe2d5c36d 100644 --- a/arch/sh/include/asm/sizes.h +++ b/arch/sh/include/asm/sizes.h @@ -32,6 +32,7 @@  #define SZ_512				0x00000200  #define SZ_1K                           0x00000400 +#define SZ_2K                           0x00000800  #define SZ_4K                           0x00001000  #define SZ_8K                           0x00002000  #define SZ_16K                          0x00004000 diff --git a/arch/sh/include/asm/sram.h b/arch/sh/include/asm/sram.h new file mode 100644 index 000000000000..a2808ce4c0aa --- /dev/null +++ b/arch/sh/include/asm/sram.h @@ -0,0 +1,38 @@ +#ifndef __ASM_SRAM_H +#define __ASM_SRAM_H + +#ifdef CONFIG_HAVE_SRAM_POOL + +#include <linux/spinlock.h> +#include <linux/genalloc.h> + +/* arch/sh/mm/sram.c */ +extern struct gen_pool *sram_pool; + +static inline unsigned long sram_alloc(size_t len) +{ +	if (!sram_pool) +		return 0UL; + +	return gen_pool_alloc(sram_pool, len); +} + +static inline void sram_free(unsigned long addr, size_t len) +{ +	return gen_pool_free(sram_pool, addr, len); +} + +#else + +static inline unsigned long sram_alloc(size_t len) +{ +	return 0; +} + +static inline void sram_free(unsigned long addr, size_t len) +{ +} + +#endif /* CONFIG_HAVE_SRAM_POOL */ + +#endif /* __ASM_SRAM_H */ diff --git a/arch/sh/include/asm/system.h b/arch/sh/include/asm/system.h index 0bd7a17d5e1a..1f1af5afff03 100644 --- a/arch/sh/include/asm/system.h +++ b/arch/sh/include/asm/system.h @@ -140,8 +140,6 @@ extern unsigned int instruction_size(unsigned int insn);  extern unsigned long cached_to_uncached;  extern unsigned long uncached_size; -extern struct dentry *sh_debugfs_root; -  void per_cpu_trap_init(void);  void default_idle(void);  void cpu_idle_wait(void); diff --git a/arch/sh/include/asm/system_32.h b/arch/sh/include/asm/system_32.h index 51296b36770e..c941b2739405 100644 --- a/arch/sh/include/asm/system_32.h +++ b/arch/sh/include/asm/system_32.h @@ -212,17 +212,16 @@ static inline reg_size_t register_align(void *val)  }  int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, -			    struct mem_access *ma, int); +			    struct mem_access *ma, int, unsigned long address);  static inline void trigger_address_error(void)  { -	if (__in_29bit_mode()) -		__asm__ __volatile__ ( -			"ldc %0, sr\n\t" -			"mov.l @%1, %0" -			: -			: "r" (0x10000000), "r" (0x80000001) -		); +	__asm__ __volatile__ ( +		"ldc %0, sr\n\t" +		"mov.l @%1, %0" +		: +		: "r" (0x10000000), "r" (0x80000001) +	);  }  asmlinkage void do_address_error(struct pt_regs *regs, diff --git a/arch/sh/include/asm/tlbflush.h b/arch/sh/include/asm/tlbflush.h index e0ac97221ae6..0df66f0c7284 100644 --- a/arch/sh/include/asm/tlbflush.h +++ b/arch/sh/include/asm/tlbflush.h @@ -21,6 +21,8 @@ extern void local_flush_tlb_kernel_range(unsigned long start,  					 unsigned long end);  extern void local_flush_tlb_one(unsigned long asid, unsigned long page); +extern void __flush_tlb_global(void); +  #ifdef CONFIG_SMP  extern void flush_tlb_all(void); diff --git a/arch/sh/include/asm/unistd_32.h b/arch/sh/include/asm/unistd_32.h index 0e7f0fc8f086..903cd618eb74 100644 --- a/arch/sh/include/asm/unistd_32.h +++ b/arch/sh/include/asm/unistd_32.h @@ -345,12 +345,33 @@  #define __NR_pwritev		334  #define __NR_rt_tgsigqueueinfo	335  #define __NR_perf_event_open	336 +#define __NR_fanotify_init	337 +#define __NR_fanotify_mark	338 +#define __NR_prlimit64		339 -#define NR_syscalls 337 +/* Non-multiplexed socket family */ +#define __NR_socket		340 +#define __NR_bind		341 +#define __NR_connect		342 +#define __NR_listen		343 +#define __NR_accept		344 +#define __NR_getsockname	345 +#define __NR_getpeername	346 +#define __NR_socketpair		347 +#define __NR_send		348 +#define __NR_sendto		349 +#define __NR_recv		350 +#define __NR_recvfrom		351 +#define __NR_shutdown		352 +#define __NR_setsockopt		353 +#define __NR_getsockopt		354 +#define __NR_sendmsg		355 +#define __NR_recvmsg		356 +#define __NR_recvmmsg		357 -#ifdef __KERNEL__ +#define NR_syscalls 358 -#define __IGNORE_recvmmsg +#ifdef __KERNEL__  #define __ARCH_WANT_IPC_PARSE_VERSION  #define __ARCH_WANT_OLD_READDIR diff --git a/arch/sh/include/asm/unistd_64.h b/arch/sh/include/asm/unistd_64.h index 0580c33a1e04..09aa93f9eb70 100644 --- a/arch/sh/include/asm/unistd_64.h +++ b/arch/sh/include/asm/unistd_64.h @@ -387,10 +387,13 @@  #define __NR_perf_event_open	364  #define __NR_recvmmsg		365  #define __NR_accept4		366 +#define __NR_fanotify_init	367 +#define __NR_fanotify_mark	368 +#define __NR_prlimit64		369  #ifdef __KERNEL__ -#define NR_syscalls 367 +#define NR_syscalls 370  #define __ARCH_WANT_IPC_PARSE_VERSION  #define __ARCH_WANT_OLD_READDIR diff --git a/arch/sh/include/cpu-sh3/cpu/mmu_context.h b/arch/sh/include/cpu-sh3/cpu/mmu_context.h index ab09da73ce77..0c7c735ea82a 100644 --- a/arch/sh/include/cpu-sh3/cpu/mmu_context.h +++ b/arch/sh/include/cpu-sh3/cpu/mmu_context.h @@ -16,6 +16,7 @@  #define MMU_TEA		0xFFFFFFFC	/* TLB Exception Address */  #define MMUCR		0xFFFFFFE0	/* MMU Control Register */ +#define MMUCR_TI	(1 << 2)	/* TLB flush bit */  #define MMU_TLB_ADDRESS_ARRAY	0xF2000000  #define MMU_PAGE_ASSOC_BIT	0x80 diff --git a/arch/sh/include/cpu-sh4/cpu/freq.h b/arch/sh/include/cpu-sh4/cpu/freq.h index e1e90960ee9a..cffd25ed0240 100644 --- a/arch/sh/include/cpu-sh4/cpu/freq.h +++ b/arch/sh/include/cpu-sh4/cpu/freq.h @@ -56,7 +56,9 @@  #define FRQCR1			0xffc40004  #define FRQMR1			0xffc40014  #elif defined(CONFIG_CPU_SUBTYPE_SHX3) -#define FRQCR			0xffc00014 +#define FRQCR0			0xffc00000 +#define FRQCR1			0xffc00004 +#define FRQMR1			0xffc00014  #else  #define FRQCR			0xffc00000  #define FRQCR_PSTBY		0x0200 diff --git a/arch/sh/include/cpu-sh4/cpu/sh7757.h b/arch/sh/include/cpu-sh4/cpu/sh7757.h index f4d267efad71..15f3de11c55a 100644 --- a/arch/sh/include/cpu-sh4/cpu/sh7757.h +++ b/arch/sh/include/cpu-sh4/cpu/sh7757.h @@ -3,241 +3,252 @@  enum {  	/* PTA */ -	GPIO_PTA7, GPIO_PTA6, GPIO_PTA5, GPIO_PTA4, -	GPIO_PTA3, GPIO_PTA2, GPIO_PTA1, GPIO_PTA0, +	GPIO_PTA0, GPIO_PTA1, GPIO_PTA2, GPIO_PTA3, +	GPIO_PTA4, GPIO_PTA5, GPIO_PTA6, GPIO_PTA7,  	/* PTB */ -	GPIO_PTB7, GPIO_PTB6, GPIO_PTB5, GPIO_PTB4, -	GPIO_PTB3, GPIO_PTB2, GPIO_PTB1, GPIO_PTB0, +	GPIO_PTB0, GPIO_PTB1, GPIO_PTB2, GPIO_PTB3, +	GPIO_PTB4, GPIO_PTB5, GPIO_PTB6, GPIO_PTB7,  	/* PTC */ -	GPIO_PTC7, GPIO_PTC6, GPIO_PTC5, GPIO_PTC4, -	GPIO_PTC3, GPIO_PTC2, GPIO_PTC1, GPIO_PTC0, +	GPIO_PTC0, GPIO_PTC1, GPIO_PTC2, GPIO_PTC3, +	GPIO_PTC4, GPIO_PTC5, GPIO_PTC6, GPIO_PTC7,  	/* PTD */ -	GPIO_PTD7, GPIO_PTD6, GPIO_PTD5, GPIO_PTD4, -	GPIO_PTD3, GPIO_PTD2, GPIO_PTD1, GPIO_PTD0, +	GPIO_PTD0, GPIO_PTD1, GPIO_PTD2, GPIO_PTD3, +	GPIO_PTD4, GPIO_PTD5, GPIO_PTD6, GPIO_PTD7,  	/* PTE */ -	GPIO_PTE7, GPIO_PTE6, GPIO_PTE5, GPIO_PTE4, -	GPIO_PTE3, GPIO_PTE2, GPIO_PTE1, GPIO_PTE0, +	GPIO_PTE0, GPIO_PTE1, GPIO_PTE2, GPIO_PTE3, +	GPIO_PTE4, GPIO_PTE5, GPIO_PTE6, GPIO_PTE7,  	/* PTF */ -	GPIO_PTF7, GPIO_PTF6, GPIO_PTF5, GPIO_PTF4, -	GPIO_PTF3, GPIO_PTF2, GPIO_PTF1, GPIO_PTF0, +	GPIO_PTF0, GPIO_PTF1, GPIO_PTF2, GPIO_PTF3, +	GPIO_PTF4, GPIO_PTF5, GPIO_PTF6, GPIO_PTF7,  	/* PTG */ -	GPIO_PTG7, GPIO_PTG6, GPIO_PTG5, GPIO_PTG4, -	GPIO_PTG3, GPIO_PTG2, GPIO_PTG1, GPIO_PTG0, +	GPIO_PTG0, GPIO_PTG1, GPIO_PTG2, GPIO_PTG3, +	GPIO_PTG4, GPIO_PTG5, GPIO_PTG6, GPIO_PTG7,  	/* PTH */ -	GPIO_PTH7, GPIO_PTH6, GPIO_PTH5, GPIO_PTH4, -	GPIO_PTH3, GPIO_PTH2, GPIO_PTH1, GPIO_PTH0, +	GPIO_PTH0, GPIO_PTH1, GPIO_PTH2, GPIO_PTH3, +	GPIO_PTH4, GPIO_PTH5, GPIO_PTH6, GPIO_PTH7,  	/* PTI */ -	GPIO_PTI7, GPIO_PTI6, GPIO_PTI5, GPIO_PTI4, -	GPIO_PTI3, GPIO_PTI2, GPIO_PTI1, GPIO_PTI0, +	GPIO_PTI0, GPIO_PTI1, GPIO_PTI2, GPIO_PTI3, +	GPIO_PTI4, GPIO_PTI5, GPIO_PTI6, GPIO_PTI7,  	/* PTJ */ -	GPIO_PTJ7, GPIO_PTJ6, GPIO_PTJ5, GPIO_PTJ4, -	GPIO_PTJ3, GPIO_PTJ2, GPIO_PTJ1, GPIO_PTJ0, +	GPIO_PTJ0, GPIO_PTJ1, GPIO_PTJ2, GPIO_PTJ3, +	GPIO_PTJ4, GPIO_PTJ5, GPIO_PTJ6, GPIO_PTJ7_RESV,  	/* PTK */ -	GPIO_PTK7, GPIO_PTK6, GPIO_PTK5, GPIO_PTK4, -	GPIO_PTK3, GPIO_PTK2, GPIO_PTK1, GPIO_PTK0, +	GPIO_PTK0, GPIO_PTK1, GPIO_PTK2, GPIO_PTK3, +	GPIO_PTK4, GPIO_PTK5, GPIO_PTK6, GPIO_PTK7,  	/* PTL */ -	GPIO_PTL7, GPIO_PTL6, GPIO_PTL5, GPIO_PTL4, -	GPIO_PTL3, GPIO_PTL2, GPIO_PTL1, GPIO_PTL0, +	GPIO_PTL0, GPIO_PTL1, GPIO_PTL2, GPIO_PTL3, +	GPIO_PTL4, GPIO_PTL5, GPIO_PTL6, GPIO_PTL7_RESV,  	/* PTM */ -		   GPIO_PTM6, GPIO_PTM5, GPIO_PTM4, -	GPIO_PTM3, GPIO_PTM2, GPIO_PTM1, GPIO_PTM0, +	GPIO_PTM0, GPIO_PTM1, GPIO_PTM2, GPIO_PTM3, +	GPIO_PTM4, GPIO_PTM5, GPIO_PTM6, GPIO_PTM7,  	/* PTN */ -	GPIO_PTN7, GPIO_PTN6, GPIO_PTN5, GPIO_PTN4, -	GPIO_PTN3, GPIO_PTN2, GPIO_PTN1, GPIO_PTN0, +	GPIO_PTN0, GPIO_PTN1, GPIO_PTN2, GPIO_PTN3, +	GPIO_PTN4, GPIO_PTN5, GPIO_PTN6, GPIO_PTN7_RESV,  	/* PTO */ -	GPIO_PTO7, GPIO_PTO6, GPIO_PTO5, GPIO_PTO4, -	GPIO_PTO3, GPIO_PTO2, GPIO_PTO1, GPIO_PTO0, +	GPIO_PTO0, GPIO_PTO1, GPIO_PTO2, GPIO_PTO3, +	GPIO_PTO4, GPIO_PTO5, GPIO_PTO6, GPIO_PTO7,  	/* PTP */ -		   GPIO_PTP6, GPIO_PTP5, GPIO_PTP4, -	GPIO_PTP3, GPIO_PTP2, GPIO_PTP1, GPIO_PTP0, +	GPIO_PTP0, GPIO_PTP1, GPIO_PTP2, GPIO_PTP3, +	GPIO_PTP4, GPIO_PTP5, GPIO_PTP6, GPIO_PTP7,  	/* PTQ */ -		   GPIO_PTQ6, GPIO_PTQ5, GPIO_PTQ4, -	GPIO_PTQ3, GPIO_PTQ2, GPIO_PTQ1, GPIO_PTQ0, +	GPIO_PTQ0, GPIO_PTQ1, GPIO_PTQ2, GPIO_PTQ3, +	GPIO_PTQ4, GPIO_PTQ5, GPIO_PTQ6, GPIO_PTQ7_RESV,  	/* PTR */ -	GPIO_PTR7, GPIO_PTR6, GPIO_PTR5, GPIO_PTR4, -	GPIO_PTR3, GPIO_PTR2, GPIO_PTR1, GPIO_PTR0, +	GPIO_PTR0, GPIO_PTR1, GPIO_PTR2, GPIO_PTR3, +	GPIO_PTR4, GPIO_PTR5, GPIO_PTR6, GPIO_PTR7,  	/* PTS */ -	GPIO_PTS7, GPIO_PTS6, GPIO_PTS5, GPIO_PTS4, -	GPIO_PTS3, GPIO_PTS2, GPIO_PTS1, GPIO_PTS0, +	GPIO_PTS0, GPIO_PTS1, GPIO_PTS2, GPIO_PTS3, +	GPIO_PTS4, GPIO_PTS5, GPIO_PTS6, GPIO_PTS7,  	/* PTT */ -			      GPIO_PTT5, GPIO_PTT4, -	GPIO_PTT3, GPIO_PTT2, GPIO_PTT1, GPIO_PTT0, +	GPIO_PTT0, GPIO_PTT1, GPIO_PTT2, GPIO_PTT3, +	GPIO_PTT4, GPIO_PTT5, GPIO_PTT6, GPIO_PTT7,  	/* PTU */ -	GPIO_PTU7, GPIO_PTU6, GPIO_PTU5, GPIO_PTU4, -	GPIO_PTU3, GPIO_PTU2, GPIO_PTU1, GPIO_PTU0, +	GPIO_PTU0, GPIO_PTU1, GPIO_PTU2, GPIO_PTU3, +	GPIO_PTU4, GPIO_PTU5, GPIO_PTU6, GPIO_PTU7,  	/* PTV */ -	GPIO_PTV7, GPIO_PTV6, GPIO_PTV5, GPIO_PTV4, -	GPIO_PTV3, GPIO_PTV2, GPIO_PTV1, GPIO_PTV0, +	GPIO_PTV0, GPIO_PTV1, GPIO_PTV2, GPIO_PTV3, +	GPIO_PTV4, GPIO_PTV5, GPIO_PTV6, GPIO_PTV7,  	/* PTW */ -	GPIO_PTW7, GPIO_PTW6, GPIO_PTW5, GPIO_PTW4, -	GPIO_PTW3, GPIO_PTW2, GPIO_PTW1, GPIO_PTW0, +	GPIO_PTW0, GPIO_PTW1, GPIO_PTW2, GPIO_PTW3, +	GPIO_PTW4, GPIO_PTW5, GPIO_PTW6, GPIO_PTW7,  	/* PTX */ -	GPIO_PTX7, GPIO_PTX6, GPIO_PTX5, GPIO_PTX4, -	GPIO_PTX3, GPIO_PTX2, GPIO_PTX1, GPIO_PTX0, +	GPIO_PTX0, GPIO_PTX1, GPIO_PTX2, GPIO_PTX3, +	GPIO_PTX4, GPIO_PTX5, GPIO_PTX6, GPIO_PTX7,  	/* PTY */ -	GPIO_PTY7, GPIO_PTY6, GPIO_PTY5, GPIO_PTY4, -	GPIO_PTY3, GPIO_PTY2, GPIO_PTY1, GPIO_PTY0, +	GPIO_PTY0, GPIO_PTY1, GPIO_PTY2, GPIO_PTY3, +	GPIO_PTY4, GPIO_PTY5, GPIO_PTY6, GPIO_PTY7,  	/* PTZ */ -	GPIO_PTZ7, GPIO_PTZ6, GPIO_PTZ5, GPIO_PTZ4, -	GPIO_PTZ3, GPIO_PTZ2, GPIO_PTZ1, GPIO_PTZ0, +	GPIO_PTZ0, GPIO_PTZ1, GPIO_PTZ2, GPIO_PTZ3, +	GPIO_PTZ4, GPIO_PTZ5, GPIO_PTZ6, GPIO_PTZ7, -	/* PTA (mobule: LBSC, CPG, LPC) */ +	/* PTA (mobule: LBSC, RGMII) */  	GPIO_FN_BS,	GPIO_FN_RDWR,	GPIO_FN_WE1,	GPIO_FN_RDY, -	GPIO_FN_MD10,	GPIO_FN_MD9,	GPIO_FN_MD8, -	GPIO_FN_LGPIO7,	GPIO_FN_LGPIO6,	GPIO_FN_LGPIO5,	GPIO_FN_LGPIO4, -	GPIO_FN_LGPIO3,	GPIO_FN_LGPIO2,	GPIO_FN_LGPIO1,	GPIO_FN_LGPIO0, - -	/* PTB (mobule: LBSC, EtherC, SIM, LPC) */ -	GPIO_FN_D15,	GPIO_FN_D14,	GPIO_FN_D13,	GPIO_FN_D12, -	GPIO_FN_D11,	GPIO_FN_D10,	GPIO_FN_D9,	GPIO_FN_D8, -	GPIO_FN_ET0_MDC,		GPIO_FN_ET0_MDIO, -	GPIO_FN_ET1_MDC,		GPIO_FN_ET1_MDIO, -	GPIO_FN_SIM_D,	GPIO_FN_SIM_CLK,		GPIO_FN_SIM_RST, -	GPIO_FN_WPSZ1,	GPIO_FN_WPSZ0,	GPIO_FN_FWID,	GPIO_FN_FLSHSZ, -	GPIO_FN_LPC_SPIEN,		GPIO_FN_BASEL, +	GPIO_FN_ET0_MDC,	GPIO_FN_ET0_MDIO, +	GPIO_FN_ET1_MDC,	GPIO_FN_ET1_MDIO, -	/* PTC (mobule: SD) */ -	GPIO_FN_SD_WP,	GPIO_FN_SD_CD,	GPIO_FN_SD_CLK,	GPIO_FN_SD_CMD, -	GPIO_FN_SD_D3,	GPIO_FN_SD_D2,	GPIO_FN_SD_D1,	GPIO_FN_SD_D0, +	/* PTB (mobule: INTC, ONFI, TMU) */ +	GPIO_FN_IRQ15,	GPIO_FN_IRQ14,	GPIO_FN_IRQ13,	GPIO_FN_IRQ12, +	GPIO_FN_IRQ11,	GPIO_FN_IRQ10,	GPIO_FN_IRQ9,	GPIO_FN_IRQ8, +	GPIO_FN_ON_NRE,	GPIO_FN_ON_NWE,	GPIO_FN_ON_NWP,	GPIO_FN_ON_NCE0, +	GPIO_FN_ON_R_B0,	GPIO_FN_ON_ALE,	GPIO_FN_ON_CLE, +	GPIO_FN_TCLK, -	/* PTD (mobule: INTC, SPI0, LBSC, CPG, ADC) */ +	/* PTC (mobule: IRQ, PWMU) */  	GPIO_FN_IRQ7,	GPIO_FN_IRQ6,	GPIO_FN_IRQ5,	GPIO_FN_IRQ4,  	GPIO_FN_IRQ3,	GPIO_FN_IRQ2,	GPIO_FN_IRQ1,	GPIO_FN_IRQ0, -	GPIO_FN_MD6,	GPIO_FN_MD5,	GPIO_FN_MD3,	GPIO_FN_MD2, -	GPIO_FN_MD1,	GPIO_FN_MD0,	GPIO_FN_ADTRG1,	GPIO_FN_ADTRG0, - -	/* PTE (mobule: EtherC) */ -	GPIO_FN_ET0_CRS_DV,		GPIO_FN_ET0_TXD1, -	GPIO_FN_ET0_TXD0,		GPIO_FN_ET0_TX_EN, -	GPIO_FN_ET0_REF_CLK,		GPIO_FN_ET0_RXD1, -	GPIO_FN_ET0_RXD0,		GPIO_FN_ET0_RX_ER, - -	/* PTF (mobule: EtherC) */ -	GPIO_FN_ET1_CRS_DV,		GPIO_FN_ET1_TXD1, -	GPIO_FN_ET1_TXD0,		GPIO_FN_ET1_TX_EN, -	GPIO_FN_ET1_REF_CLK,		GPIO_FN_ET1_RXD1, -	GPIO_FN_ET1_RXD0,		GPIO_FN_ET1_RX_ER, - -	/* PTG (mobule: SYSTEM, PWMX, LPC) */ -	GPIO_FN_STATUS0,		GPIO_FN_STATUS1, -	GPIO_FN_PWX0,	GPIO_FN_PWX1,	GPIO_FN_PWX2,	GPIO_FN_PWX3, -	GPIO_FN_SERIRQ,	GPIO_FN_CLKRUN,	GPIO_FN_LPCPD,	GPIO_FN_LDRQ, - -	/* PTH (mobule: TMU, SCIF234, SPI1, SPI0) */ -	GPIO_FN_TCLK,	GPIO_FN_RXD4,	GPIO_FN_TXD4, +	GPIO_FN_PWMU0,	GPIO_FN_PWMU1,	GPIO_FN_PWMU2,	GPIO_FN_PWMU3, +	GPIO_FN_PWMU4,	GPIO_FN_PWMU5, + +	/* PTD (mobule: SPI0, DMAC) */ +	GPIO_FN_SP0_MOSI,	GPIO_FN_SP0_MISO,	GPIO_FN_SP0_SCK, +	GPIO_FN_SP0_SCK_FB,	GPIO_FN_SP0_SS0,	GPIO_FN_SP0_SS1, +	GPIO_FN_SP0_SS2,	GPIO_FN_SP0_SS3,	GPIO_FN_DREQ0, +	GPIO_FN_DACK0,		GPIO_FN_TEND0, + +	/* PTE (mobule: RMII) */ +	GPIO_FN_RMII0_CRS_DV,	GPIO_FN_RMII0_TXD1,	GPIO_FN_RMII0_TXD0, +	GPIO_FN_RMII0_TXEN,	GPIO_FN_RMII0_REFCLK,	GPIO_FN_RMII0_RXD1, +	GPIO_FN_RMII0_RXD0,	GPIO_FN_RMII0_RX_ER, + +	/* PTF (mobule: RMII, SerMux) */ +	GPIO_FN_RMII1_CRS_DV,	GPIO_FN_RMII1_TXD1,	GPIO_FN_RMII1_TXD0, +	GPIO_FN_RMII1_TXEN,	GPIO_FN_RMII1_REFCLK,	GPIO_FN_RMII1_RXD1, +	GPIO_FN_RMII1_RXD0,	GPIO_FN_RMII1_RX_ER,	GPIO_FN_RAC_RI, + +	/* PTG (mobule: system, LBSC, LPC, WDT, LPC, eMMC) */ +	GPIO_FN_BOOTFMS,		GPIO_FN_BOOTWP, +	GPIO_FN_A25,	GPIO_FN_A24,	GPIO_FN_SERIRQ,	GPIO_FN_WDTOVF, +	GPIO_FN_LPCPD,	GPIO_FN_LDRQ,	GPIO_FN_MMCCLK,	GPIO_FN_MMCCMD, + +	/* PTH (mobule: SPI1, LPC, DMAC, ADC) */  	GPIO_FN_SP1_MOSI,		GPIO_FN_SP1_MISO,  	GPIO_FN_SP1_SCK,		GPIO_FN_SP1_SCK_FB,  	GPIO_FN_SP1_SS0,		GPIO_FN_SP1_SS1, -	GPIO_FN_SP0_SS1, - -	/* PTI (mobule: INTC) */ -	GPIO_FN_IRQ15,	GPIO_FN_IRQ14,	GPIO_FN_IRQ13,	GPIO_FN_IRQ12, -	GPIO_FN_IRQ11,	GPIO_FN_IRQ10,	GPIO_FN_IRQ9,	GPIO_FN_IRQ8, - -	/* PTJ (mobule: SCIF234, SERMUX) */ -	GPIO_FN_RXD3,	GPIO_FN_TXD3,	GPIO_FN_RXD2,	GPIO_FN_TXD2, -	GPIO_FN_COM1_TXD,		GPIO_FN_COM1_RXD, -	GPIO_FN_COM1_RTS,		GPIO_FN_COM1_CTS, - -	/* PTK (mobule: SERMUX) */ -	GPIO_FN_COM2_TXD,		GPIO_FN_COM2_RXD, -	GPIO_FN_COM2_RTS,		GPIO_FN_COM2_CTS, -	GPIO_FN_COM2_DTR,		GPIO_FN_COM2_DSR, -	GPIO_FN_COM2_DCD,		GPIO_FN_COM2_RI, +	GPIO_FN_WP,	GPIO_FN_FMS0,	GPIO_FN_TEND1,	GPIO_FN_DREQ1, +	GPIO_FN_DACK1,	GPIO_FN_ADTRG1,	GPIO_FN_ADTRG0, -	/* PTL (mobule: SERMUX) */ -	GPIO_FN_RAC_TXD,		GPIO_FN_RAC_RXD, -	GPIO_FN_RAC_RTS,		GPIO_FN_RAC_CTS, -	GPIO_FN_RAC_DTR,		GPIO_FN_RAC_DSR, -	GPIO_FN_RAC_DCD,		GPIO_FN_RAC_RI, +	/* PTI (mobule: LBSC, SDHI) */ +	GPIO_FN_D15,	GPIO_FN_D14,	GPIO_FN_D13,	GPIO_FN_D12, +	GPIO_FN_D11,	GPIO_FN_D10,	GPIO_FN_D9,	GPIO_FN_D8, +	GPIO_FN_SD_WP,	GPIO_FN_SD_CD,	GPIO_FN_SD_CLK,	GPIO_FN_SD_CMD, +	GPIO_FN_SD_D3,	GPIO_FN_SD_D2,	GPIO_FN_SD_D1,	GPIO_FN_SD_D0, -	/* PTM (mobule: IIC, LPC) */ +	/* PTJ (mobule: SCIF234) */ +	GPIO_FN_RTS3,	GPIO_FN_CTS3,	GPIO_FN_TXD3,	GPIO_FN_RXD3, +	GPIO_FN_RTS4,	GPIO_FN_RXD4,	GPIO_FN_TXD4, + +	/* PTK (mobule: SERMUX, LBSC, SCIF) */ +	GPIO_FN_COM2_TXD,	GPIO_FN_COM2_RXD,	GPIO_FN_COM2_RTS, +	GPIO_FN_COM2_CTS,	GPIO_FN_COM2_DTR,	GPIO_FN_COM2_DSR, +	GPIO_FN_COM2_DCD,	GPIO_FN_CLKOUT, +	GPIO_FN_SCK2,		GPIO_FN_SCK4,	GPIO_FN_SCK3, + +	/* PTL (mobule: SERMUX, SCIF, LBSC, AUD) */ +	GPIO_FN_RAC_RXD,	GPIO_FN_RAC_RTS,	GPIO_FN_RAC_CTS, +	GPIO_FN_RAC_DTR,	GPIO_FN_RAC_DSR,	GPIO_FN_RAC_DCD, +	GPIO_FN_RAC_TXD,	GPIO_FN_RXD2,		GPIO_FN_CS5, +	GPIO_FN_CS6,		GPIO_FN_AUDSYNC,	GPIO_FN_AUDCK, +	GPIO_FN_TXD2, + +	/* PTM (mobule: LBSC, IIC) */ +	GPIO_FN_CS4,	GPIO_FN_RD,	GPIO_FN_WE0,	GPIO_FN_CS0,  	GPIO_FN_SDA6,	GPIO_FN_SCL6,	GPIO_FN_SDA7,	GPIO_FN_SCL7, -	GPIO_FN_WP,	GPIO_FN_FMS0,	GPIO_FN_FMS1, - -	/* PTN (mobule: SCIF234, EVC) */ -	GPIO_FN_SCK2,	GPIO_FN_RTS4,	GPIO_FN_RTS3,	GPIO_FN_RTS2, -	GPIO_FN_CTS4,	GPIO_FN_CTS3,	GPIO_FN_CTS2, -	GPIO_FN_EVENT7,	GPIO_FN_EVENT6,	GPIO_FN_EVENT5,	GPIO_FN_EVENT4, -	GPIO_FN_EVENT3,	GPIO_FN_EVENT2,	GPIO_FN_EVENT1,	GPIO_FN_EVENT0, -	/* PTO (mobule: SGPIO) */ -	GPIO_FN_SGPIO0_CLK,		GPIO_FN_SGPIO0_LOAD, -	GPIO_FN_SGPIO0_DI,		GPIO_FN_SGPIO0_DO, -	GPIO_FN_SGPIO1_CLK,		GPIO_FN_SGPIO1_LOAD, -	GPIO_FN_SGPIO1_DI,		GPIO_FN_SGPIO1_DO, +	/* PTN (mobule: USB, JMC, SGPIO, WDT) */ +	GPIO_FN_VBUS_EN,	GPIO_FN_VBUS_OC,	GPIO_FN_JMCTCK, +	GPIO_FN_JMCTMS,		GPIO_FN_JMCTDO,		GPIO_FN_JMCTDI, +	GPIO_FN_JMCTRST, +	GPIO_FN_SGPIO1_CLK,	GPIO_FN_SGPIO1_LOAD,	GPIO_FN_SGPIO1_DI, +	GPIO_FN_SGPIO1_DO,	GPIO_FN_SUB_CLKIN, -	/* PTP (mobule: JMC, SCIF234) */ -	GPIO_FN_JMCTCK,	GPIO_FN_JMCTMS,	GPIO_FN_JMCTDO,	GPIO_FN_JMCTDI, -	GPIO_FN_JMCRST,	GPIO_FN_SCK4,	GPIO_FN_SCK3, +	/* PTO (mobule: SGPIO, SerMux) */ +	GPIO_FN_SGPIO0_CLK,	GPIO_FN_SGPIO0_LOAD,	GPIO_FN_SGPIO0_DI, +	GPIO_FN_SGPIO0_DO,	GPIO_FN_SGPIO2_CLK,	GPIO_FN_SGPIO2_LOAD, +	GPIO_FN_SGPIO2_DI,	GPIO_FN_SGPIO2_DO,	GPIO_FN_COM1_TXD, +	GPIO_FN_COM1_RXD,	GPIO_FN_COM1_RTS,	GPIO_FN_COM1_CTS,  	/* PTQ (mobule: LPC) */  	GPIO_FN_LAD3,	GPIO_FN_LAD2,	GPIO_FN_LAD1,	GPIO_FN_LAD0,  	GPIO_FN_LFRAME,	GPIO_FN_LRESET,	GPIO_FN_LCLK,  	/* PTR (mobule: GRA, IIC) */ -	GPIO_FN_DDC3,	GPIO_FN_DDC2, -	GPIO_FN_SDA8,	GPIO_FN_SCL8,	GPIO_FN_SDA2,	GPIO_FN_SCL2, +	GPIO_FN_DDC3,	GPIO_FN_DDC2,	GPIO_FN_SDA2,	GPIO_FN_SCL2,  	GPIO_FN_SDA1,	GPIO_FN_SCL1,	GPIO_FN_SDA0,	GPIO_FN_SCL0, +	GPIO_FN_SDA8,	GPIO_FN_SCL8,  	/* PTS (mobule: GRA, IIC) */ -	GPIO_FN_DDC1,	GPIO_FN_DDC0, -	GPIO_FN_SDA9,	GPIO_FN_SCL9,	GPIO_FN_SDA5,	GPIO_FN_SCL5, +	GPIO_FN_DDC1,	GPIO_FN_DDC0,	GPIO_FN_SDA5,	GPIO_FN_SCL5,  	GPIO_FN_SDA4,	GPIO_FN_SCL4,	GPIO_FN_SDA3,	GPIO_FN_SCL3, +	GPIO_FN_SDA9,	GPIO_FN_SCL9, -	/* PTT (mobule: SYSTEM, PWMX) */ -	GPIO_FN_AUDSYNC,		GPIO_FN_AUDCK, -	GPIO_FN_AUDATA3,		GPIO_FN_AUDATA2, -	GPIO_FN_AUDATA1,		GPIO_FN_AUDATA0, -	GPIO_FN_PWX7,	GPIO_FN_PWX6,	GPIO_FN_PWX5,	GPIO_FN_PWX4, +	/* PTT (mobule: PWMX, AUD) */ +	GPIO_FN_PWMX7,	GPIO_FN_PWMX6,	GPIO_FN_PWMX5,	GPIO_FN_PWMX4, +	GPIO_FN_PWMX3,	GPIO_FN_PWMX2,	GPIO_FN_PWMX1,	GPIO_FN_PWMX0, +	GPIO_FN_AUDATA3,	GPIO_FN_AUDATA2,	GPIO_FN_AUDATA1, +	GPIO_FN_AUDATA0,	GPIO_FN_STATUS1,	GPIO_FN_STATUS0, -	/* PTU (mobule: LBSC, DMAC) */ -	GPIO_FN_CS6,	GPIO_FN_CS5,	GPIO_FN_CS4,	GPIO_FN_CS0, -	GPIO_FN_RD,	GPIO_FN_WE0,	GPIO_FN_A25,	GPIO_FN_A24, -	GPIO_FN_DREQ0,	GPIO_FN_DACK0, +	/* PTU (mobule: LPC, APM) */ +	GPIO_FN_LGPIO7,	GPIO_FN_LGPIO6,	GPIO_FN_LGPIO5,	GPIO_FN_LGPIO4, +	GPIO_FN_LGPIO3,	GPIO_FN_LGPIO2,	GPIO_FN_LGPIO1,	GPIO_FN_LGPIO0, +	GPIO_FN_APMONCTL_O,	GPIO_FN_APMPWBTOUT_O,	GPIO_FN_APMSCI_O, +	GPIO_FN_APMVDDON,	GPIO_FN_APMSLPBTN,	GPIO_FN_APMPWRBTN, +	GPIO_FN_APMS5N,		GPIO_FN_APMS3N, -	/* PTV (mobule: LBSC, DMAC) */ +	/* PTV (mobule: LBSC, SerMux, R-SPI, EVC, GRA) */  	GPIO_FN_A23,	GPIO_FN_A22,	GPIO_FN_A21,	GPIO_FN_A20,  	GPIO_FN_A19,	GPIO_FN_A18,	GPIO_FN_A17,	GPIO_FN_A16, -	GPIO_FN_TEND0,	GPIO_FN_DREQ1,	GPIO_FN_DACK1,	GPIO_FN_TEND1, +	GPIO_FN_COM2_RI,	GPIO_FN_R_SPI_MOSI,	GPIO_FN_R_SPI_MISO, +	GPIO_FN_R_SPI_RSPCK,	GPIO_FN_R_SPI_SSL0,	GPIO_FN_R_SPI_SSL1, +	GPIO_FN_EVENT7,		GPIO_FN_EVENT6,		GPIO_FN_VBIOS_DI, +	GPIO_FN_VBIOS_DO,	GPIO_FN_VBIOS_CLK,	GPIO_FN_VBIOS_CS, -	/* PTW (mobule: LBSC) */ +	/* PTW (mobule: LBSC, EVC, SCIF) */  	GPIO_FN_A15,	GPIO_FN_A14,	GPIO_FN_A13,	GPIO_FN_A12,  	GPIO_FN_A11,	GPIO_FN_A10,	GPIO_FN_A9,	GPIO_FN_A8, +	GPIO_FN_EVENT5,	GPIO_FN_EVENT4,	GPIO_FN_EVENT3,	GPIO_FN_EVENT2, +	GPIO_FN_EVENT1,	GPIO_FN_EVENT0,	GPIO_FN_CTS4,	GPIO_FN_CTS2, -	/* PTX (mobule: LBSC) */ +	/* PTX (mobule: LBSC, SCIF, SIM) */  	GPIO_FN_A7,	GPIO_FN_A6,	GPIO_FN_A5,	GPIO_FN_A4,  	GPIO_FN_A3,	GPIO_FN_A2,	GPIO_FN_A1,	GPIO_FN_A0, +	GPIO_FN_RTS2,	GPIO_FN_SIM_D,	GPIO_FN_SIM_CLK, GPIO_FN_SIM_RST,  	/* PTY (mobule: LBSC) */  	GPIO_FN_D7,	GPIO_FN_D6,	GPIO_FN_D5,	GPIO_FN_D4,  	GPIO_FN_D3,	GPIO_FN_D2,	GPIO_FN_D1,	GPIO_FN_D0, + +	/* PTZ (mobule: eMMC, ONFI) */ +	GPIO_FN_MMCDAT7,	GPIO_FN_MMCDAT6,	GPIO_FN_MMCDAT5, +	GPIO_FN_MMCDAT4,	GPIO_FN_MMCDAT3,	GPIO_FN_MMCDAT2, +	GPIO_FN_MMCDAT1,	GPIO_FN_MMCDAT0, +	GPIO_FN_ON_DQ7,	GPIO_FN_ON_DQ6,	GPIO_FN_ON_DQ5,	GPIO_FN_ON_DQ4, +	GPIO_FN_ON_DQ3,	GPIO_FN_ON_DQ2,	GPIO_FN_ON_DQ1,	GPIO_FN_ON_DQ0,  };  #endif /* __ASM_SH7757_H__ */ diff --git a/arch/sh/include/cpu-sh4/cpu/shx3.h b/arch/sh/include/cpu-sh4/cpu/shx3.h new file mode 100644 index 000000000000..68d9080a8da9 --- /dev/null +++ b/arch/sh/include/cpu-sh4/cpu/shx3.h @@ -0,0 +1,64 @@ +#ifndef __CPU_SHX3_H +#define __CPU_SHX3_H + +enum { +	/* PA */ +	GPIO_PA7, GPIO_PA6, GPIO_PA5, GPIO_PA4, +	GPIO_PA3, GPIO_PA2, GPIO_PA1, GPIO_PA0, + +	/* PB */ +	GPIO_PB7, GPIO_PB6, GPIO_PB5, GPIO_PB4, +	GPIO_PB3, GPIO_PB2, GPIO_PB1, GPIO_PB0, + +	/* PC */ +	GPIO_PC7, GPIO_PC6, GPIO_PC5, GPIO_PC4, +	GPIO_PC3, GPIO_PC2, GPIO_PC1, GPIO_PC0, + +	/* PD */ +	GPIO_PD7, GPIO_PD6, GPIO_PD5, GPIO_PD4, +	GPIO_PD3, GPIO_PD2, GPIO_PD1, GPIO_PD0, + +	/* PE */ +	GPIO_PE7, GPIO_PE6, GPIO_PE5, GPIO_PE4, +	GPIO_PE3, GPIO_PE2, GPIO_PE1, GPIO_PE0, + +	/* PF */ +	GPIO_PF7, GPIO_PF6, GPIO_PF5, GPIO_PF4, +	GPIO_PF3, GPIO_PF2, GPIO_PF1, GPIO_PF0, + +	/* PG */ +	GPIO_PG7, GPIO_PG6, GPIO_PG5, GPIO_PG4, +	GPIO_PG3, GPIO_PG2, GPIO_PG1, GPIO_PG0, + +	/* PH */ +	GPIO_PH5, GPIO_PH4, +	GPIO_PH3, GPIO_PH2, GPIO_PH1, GPIO_PH0, + +	/* SCIF */ +	GPIO_FN_SCK3, GPIO_FN_TXD3, GPIO_FN_RXD3, +	GPIO_FN_SCK2, GPIO_FN_TXD2, GPIO_FN_RXD2, +	GPIO_FN_SCK1, GPIO_FN_TXD1, GPIO_FN_RXD1, +	GPIO_FN_SCK0, GPIO_FN_TXD0, GPIO_FN_RXD0, + +	/* LBSC */ +	GPIO_FN_D31, GPIO_FN_D30, GPIO_FN_D29, GPIO_FN_D28, +	GPIO_FN_D27, GPIO_FN_D26, GPIO_FN_D25, GPIO_FN_D24, +	GPIO_FN_D23, GPIO_FN_D22, GPIO_FN_D21, GPIO_FN_D20, +	GPIO_FN_D19, GPIO_FN_D18, GPIO_FN_D17, GPIO_FN_D16, +	GPIO_FN_WE3, GPIO_FN_WE2, GPIO_FN_CS6, GPIO_FN_CS5, +	GPIO_FN_CS4, GPIO_FN_CLKOUTENB, GPIO_FN_BREQ, +	GPIO_FN_IOIS16, GPIO_FN_CE2B, GPIO_FN_CE2A, GPIO_FN_BACK, + +	/* DMAC */ +	GPIO_FN_DACK0, GPIO_FN_DREQ0, GPIO_FN_DRAK0, +	GPIO_FN_DACK1, GPIO_FN_DREQ1, GPIO_FN_DRAK1, +	GPIO_FN_DACK2, GPIO_FN_DREQ2, GPIO_FN_DRAK2, +	GPIO_FN_DACK3, GPIO_FN_DREQ3, GPIO_FN_DRAK3, + +	/* INTC */ +	GPIO_FN_IRQ3, GPIO_FN_IRQ2, GPIO_FN_IRQ1, GPIO_FN_IRQ0, +	GPIO_FN_IRL3, GPIO_FN_IRL2, GPIO_FN_IRL1, GPIO_FN_IRL0, +	GPIO_FN_IRQOUT, GPIO_FN_STATUS1, GPIO_FN_STATUS0, +}; + +#endif /* __CPU_SHX3_H */ diff --git a/arch/sh/include/mach-common/mach/sh2007.h b/arch/sh/include/mach-common/mach/sh2007.h new file mode 100644 index 000000000000..48180b9aa03d --- /dev/null +++ b/arch/sh/include/mach-common/mach/sh2007.h @@ -0,0 +1,117 @@ +#ifndef __MACH_SH2007_H +#define __MACH_SH2007_H + +#define CS5BCR		0xff802050 +#define CS5WCR		0xff802058 +#define CS5PCR		0xff802070 + +#define BUS_SZ8		1 +#define BUS_SZ16	2 +#define BUS_SZ32	3 + +#define PCMCIA_IODYN	1 +#define PCMCIA_ATA	0 +#define PCMCIA_IO8	2 +#define PCMCIA_IO16	3 +#define PCMCIA_COMM8	4 +#define PCMCIA_COMM16	5 +#define PCMCIA_ATTR8	6 +#define PCMCIA_ATTR16	7 + +#define TYPE_SRAM	0 +#define TYPE_PCMCIA	4 + +/* write-read/write-write delay (0-7:0,1,2,3,4,5,6,7) */ +#define IWW5		0 +#define IWW6		3 +/* different area, read-write delay (0-7:0,1,2,3,4,5,6,7) */ +#define IWRWD5		2 +#define IWRWD6		2 +/* same area, read-write delay (0-7:0,1,2,3,4,5,6,7) */ +#define IWRWS5		2 +#define IWRWS6		2 +/* different area, read-read delay (0-7:0,1,2,3,4,5,6,7) */ +#define IWRRD5		2 +#define IWRRD6		2 +/* same area, read-read delay (0-7:0,1,2,3,4,5,6,7) */ +#define IWRRS5		0 +#define IWRRS6		2 +/* burst count (0-3:4,8,16,32) */ +#define BST5		0 +#define BST6		0 +/* bus size */ +#define SZ5		BUS_SZ16 +#define SZ6		BUS_SZ16 +/* RD hold for SRAM (0-1:0,1) */ +#define RDSPL5		0 +#define RDSPL6		0 +/* Burst pitch (0-7:0,1,2,3,4,5,6,7) */ +#define BW5		0 +#define BW6		0 +/* Multiplex (0-1:0,1) */ +#define MPX5		0 +#define MPX6		0 +/* device type */ +#define TYPE5		TYPE_PCMCIA +#define TYPE6		TYPE_PCMCIA +/* address setup before assert CSn for SRAM (0-7:0,1,2,3,4,5,6,7) */ +#define ADS5		0 +#define ADS6		0 +/* address hold after negate CSn for SRAM (0-7:0,1,2,3,4,5,6,7) */ +#define ADH5		0 +#define ADH6		0 +/* CSn assert to RD assert delay for SRAM (0-7:0,1,2,3,4,5,6,7) */ +#define RDS5		0 +#define RDS6		0 +/* RD negate to CSn negate delay for SRAM (0-7:0,1,2,3,4,5,6,7) */ +#define RDH5		0 +#define RDH6		0 +/* CSn assert to WE assert delay for SRAM (0-7:0,1,2,3,4,5,6,7) */ +#define WTS5		0 +#define WTS6		0 +/* WE negate to CSn negate delay for SRAM (0-7:0,1,2,3,4,5,6,7) */ +#define WTH5		0 +#define WTH6		0 +/* BS hold (0-1:1,2) */ +#define BSH5		0 +#define BSH6		0 +/* wait cycle (0-15:0,1,2,3,4,5,6,7,8,9,11,13,15,17,21,25) */ +#define IW5		6	/* 60ns PIO mode 4 */ +#define IW6		15	/* 250ns */ + +#define SAA5		PCMCIA_IODYN	/* IDE area b4000000-b5ffffff */ +#define SAB5		PCMCIA_IODYN	/* CF  area b6000000-b7ffffff */ +#define PCWA5		0	/* additional wait A (0-3:0,15,30,50) */ +#define PCWB5		0	/* additional wait B (0-3:0,15,30,50) */ +/* wait B (0-15:0,1,2,3,4,5,6,7,8,9,11,13,15,17,21,25) */ +#define PCIW5		12 +/* Address->OE/WE assert delay A (0-7:0,1,2,3,6,9,12,15) */ +#define TEDA5		2 +/* Address->OE/WE assert delay B (0-7:0,1,2,3,6,9,12,15) */ +#define TEDB5		4 +/* OE/WE negate->Address delay A (0-7:0,1,2,3,6,9,12,15) */ +#define TEHA5		2 +/* OE/WE negate->Address delay B (0-7:0,1,2,3,6,9,12,15) */ +#define TEHB5		3 + +#define CS5BCR_D	((IWW5<<28)|(IWRWD5<<24)|(IWRWS5<<20)|		\ +			(IWRRD5<<16)|(IWRRS5<<12)|(BST5<<10)|		\ +			(SZ5<<8)|(RDSPL5<<7)|(BW5<<4)|(MPX5<<3)|TYPE5) +#define CS5WCR_D	((ADS5<<28)|(ADH5<<24)|(RDS5<<20)|	\ +			(RDH5<<16)|(WTS5<<12)|(WTH5<<8)|(BSH5<<4)|IW5) +#define CS5PCR_D	((SAA5<<28)|(SAB5<<24)|(PCWA5<<22)|		\ +			(PCWB5<<20)|(PCIW5<<16)|(TEDA5<<12)|		\ +			(TEDB5<<8)|(TEHA5<<4)|TEHB5) + +#define SMC0_BASE       0xb0800000      /* eth0 */ +#define SMC1_BASE       0xb0900000      /* eth1 */ +#define CF_BASE         0xb6100000      /* Compact Flash (I/O area) */ +#define IDE_BASE        0xb4000000      /* IDE */ +#define PC104_IO_BASE   0xb8000000 +#define PC104_MEM_BASE  0xba000000 +#define SMC_IO_SIZE     0x100 + +#define CF_OFFSET       0x1f0 +#define IDE_OFFSET      0x170 + +#endif /* __MACH_SH2007_H */ diff --git a/arch/sh/include/mach-sdk7786/mach/fpga.h b/arch/sh/include/mach-sdk7786/mach/fpga.h index 416b621d94d1..40f0c2d3690c 100644 --- a/arch/sh/include/mach-sdk7786/mach/fpga.h +++ b/arch/sh/include/mach-sdk7786/mach/fpga.h @@ -31,11 +31,35 @@  #define EXTASR		0x110  #define SPCAR		0x120  #define INTMSR		0x130 +  #define PCIECR		0x140 +#define  PCIECR_PCIEMUX1	BIT(15) +#define  PCIECR_PCIEMUX0	BIT(14) +#define  PCIECR_PRST4		BIT(12) /* slot 4 card present */ +#define  PCIECR_PRST3		BIT(11) /* slot 3 card present */ +#define  PCIECR_PRST2		BIT(10) /* slot 2 card present */ +#define  PCIECR_PRST1		BIT(9)  /* slot 1 card present */ +#define  PCIECR_CLKEN		BIT(4)	/* oscillator enable */ +  #define FAER		0x150  #define USRGPIR		0x160 +  /* 0x170 reserved */ -#define LCLASR		0x180 + +#define LCLASR			0x180 +#define  LCLASR_FRAMEN		BIT(15) + +#define  LCLASR_FPGA_SEL_SHIFT	12 +#define  LCLASR_NAND_SEL_SHIFT	8 +#define  LCLASR_NORB_SEL_SHIFT	4 +#define  LCLASR_NORA_SEL_SHIFT	0 + +#define  LCLASR_AREA_MASK	0x7 + +#define  LCLASR_FPGA_SEL_MASK	(LCLASR_AREA_MASK << LCLASR_FPGA_SEL_SHIFT) +#define  LCLASR_NAND_SEL_MASK	(LCLASR_AREA_MASK << LCLASR_NAND_SEL_SHIFT) +#define  LCLASR_NORB_SEL_MASK	(LCLASR_AREA_MASK << LCLASR_NORB_SEL_SHIFT) +#define  LCLASR_NORA_SEL_MASK	(LCLASR_AREA_MASK << LCLASR_NORA_SEL_SHIFT)  #define SBCR		0x190  #define  SCBR_I2CMEN	BIT(0)	/* FPGA I2C master enable */ diff --git a/arch/sh/include/mach-x3proto/mach/hardware.h b/arch/sh/include/mach-x3proto/mach/hardware.h new file mode 100644 index 000000000000..52bca57bfeb6 --- /dev/null +++ b/arch/sh/include/mach-x3proto/mach/hardware.h @@ -0,0 +1,12 @@ +#ifndef __MACH_X3PROTO_HARDWARE_H +#define __MACH_X3PROTO_HARDWARE_H + +struct gpio_chip; + +/* arch/sh/boards/mach-x3proto/gpio.c */ +int x3proto_gpio_setup(void); +extern struct gpio_chip x3proto_gpio_chip; + +#define NR_BASEBOARD_GPIOS	16 + +#endif /* __MACH_X3PROTO_HARDWARE_H */ diff --git a/arch/sh/include/asm/ilsel.h b/arch/sh/include/mach-x3proto/mach/ilsel.h index e3d304b280f6..e3d304b280f6 100644 --- a/arch/sh/include/asm/ilsel.h +++ b/arch/sh/include/mach-x3proto/mach/ilsel.h |