forked from mirrors/linux
		
	ARM: sirf: enable multiplatform support
All the prerequisites are there now, so we can move sirf into multiplatform. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
		
							parent
							
								
									275786b71d
								
							
						
					
					
						commit
						cf82e0e405
					
				
					 13 changed files with 18 additions and 173 deletions
				
			
		| 
						 | 
				
			
			@ -49,7 +49,6 @@ config ARM
 | 
			
		|||
	select HAVE_REGS_AND_STACK_ACCESS_API
 | 
			
		||||
	select HAVE_SYSCALL_TRACEPOINTS
 | 
			
		||||
	select HAVE_UID16
 | 
			
		||||
	select HAVE_VIRT_TO_BUS
 | 
			
		||||
	select KTIME_SCALAR
 | 
			
		||||
	select PERF_USE_VMALLOC
 | 
			
		||||
	select RTC_LIB
 | 
			
		||||
| 
						 | 
				
			
			@ -415,22 +414,6 @@ config ARCH_GEMINI
 | 
			
		|||
	help
 | 
			
		||||
	  Support for the Cortina Systems Gemini family SoCs
 | 
			
		||||
 | 
			
		||||
config ARCH_SIRF
 | 
			
		||||
	bool "CSR SiRF"
 | 
			
		||||
	select ARCH_REQUIRE_GPIOLIB
 | 
			
		||||
	select AUTO_ZRELADDR
 | 
			
		||||
	select COMMON_CLK
 | 
			
		||||
	select GENERIC_CLOCKEVENTS
 | 
			
		||||
	select GENERIC_IRQ_CHIP
 | 
			
		||||
	select MIGHT_HAVE_CACHE_L2X0
 | 
			
		||||
	select NO_IOPORT
 | 
			
		||||
	select PINCTRL
 | 
			
		||||
	select PINCTRL_SIRF
 | 
			
		||||
	select USE_OF
 | 
			
		||||
	select SPARSE_IRQ
 | 
			
		||||
	help
 | 
			
		||||
	  Support for CSR SiRFprimaII/Marco/Polo platforms
 | 
			
		||||
 | 
			
		||||
config ARCH_EBSA110
 | 
			
		||||
	bool "EBSA-110"
 | 
			
		||||
	select ARCH_USES_GETTIMEOFFSET
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,15 @@
 | 
			
		|||
config ARCH_SIRF
 | 
			
		||||
	bool "CSR SiRF" if ARCH_MULTI_V7
 | 
			
		||||
	select ARCH_REQUIRE_GPIOLIB
 | 
			
		||||
	select GENERIC_CLOCKEVENTS
 | 
			
		||||
	select GENERIC_IRQ_CHIP
 | 
			
		||||
	select MIGHT_HAVE_CACHE_L2X0
 | 
			
		||||
	select NO_IOPORT
 | 
			
		||||
	select PINCTRL
 | 
			
		||||
	select PINCTRL_SIRF
 | 
			
		||||
	help
 | 
			
		||||
	  Support for CSR SiRFprimaII/Marco/Polo platforms
 | 
			
		||||
 | 
			
		||||
if ARCH_SIRF
 | 
			
		||||
 | 
			
		||||
menu "CSR SiRF atlas6/primaII/Marco/Polo Specific Features"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,3 +6,5 @@ obj-$(CONFIG_CACHE_L2X0) += l2x0.o
 | 
			
		|||
obj-$(CONFIG_SUSPEND) += pm.o sleep.o
 | 
			
		||||
obj-$(CONFIG_SMP) += platsmp.o headsmp.o
 | 
			
		||||
obj-$(CONFIG_HOTPLUG_CPU)  += hotplug.o
 | 
			
		||||
 | 
			
		||||
CFLAGS_hotplug.o += -march=armv7-a
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,9 @@
 | 
			
		|||
#include <asm/mach/time.h>
 | 
			
		||||
#include <asm/exception.h>
 | 
			
		||||
 | 
			
		||||
#define SIRFSOC_VA_BASE		_AC(0xFEC00000, UL)
 | 
			
		||||
#define SIRFSOC_VA(x)		(SIRFSOC_VA_BASE + ((x) & 0x00FFF000))
 | 
			
		||||
 | 
			
		||||
extern struct smp_operations   sirfsoc_smp_ops;
 | 
			
		||||
extern void sirfsoc_secondary_startup(void);
 | 
			
		||||
extern void sirfsoc_cpu_die(unsigned int cpu);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,15 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * arch/arm/mach-prima2/include/mach/clkdev.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company.
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under GPLv2 or later.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __MACH_CLKDEV_H
 | 
			
		||||
#define __MACH_CLKDEV_H
 | 
			
		||||
 | 
			
		||||
#define __clk_get(clk) ({ 1; })
 | 
			
		||||
#define __clk_put(clk) do { } while (0)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,22 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * arch/arm/mach-prima2/include/mach/entry-macro.S
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company.
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under GPLv2 or later.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <mach/hardware.h>
 | 
			
		||||
 | 
			
		||||
#define SIRFSOC_INT_ID 0x38
 | 
			
		||||
 | 
			
		||||
	.macro  get_irqnr_preamble, base, tmp
 | 
			
		||||
	ldr     \base, =sirfsoc_intc_base
 | 
			
		||||
	ldr     \base, [\base]
 | 
			
		||||
	.endm
 | 
			
		||||
 | 
			
		||||
	.macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
 | 
			
		||||
	ldr \irqnr, [\base, #SIRFSOC_INT_ID]	@ Get the highest priority irq
 | 
			
		||||
	cmp \irqnr, #0x40			@ the irq num can't be larger than 0x3f
 | 
			
		||||
	movges \irqnr, #0
 | 
			
		||||
	.endm
 | 
			
		||||
| 
						 | 
				
			
			@ -1,15 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * arch/arm/mach-prima2/include/mach/hardware.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company.
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under GPLv2 or later.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __MACH_HARDWARE_H__
 | 
			
		||||
#define __MACH_HARDWARE_H__
 | 
			
		||||
 | 
			
		||||
#include <asm/sizes.h>
 | 
			
		||||
#include <mach/map.h>
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,18 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * memory & I/O static mapping definitions for CSR SiRFprimaII
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company.
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under GPLv2 or later.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __MACH_PRIMA2_MAP_H__
 | 
			
		||||
#define __MACH_PRIMA2_MAP_H__
 | 
			
		||||
 | 
			
		||||
#include <linux/const.h>
 | 
			
		||||
 | 
			
		||||
#define SIRFSOC_VA_BASE		_AC(0xFEC00000, UL)
 | 
			
		||||
 | 
			
		||||
#define SIRFSOC_VA(x)		(SIRFSOC_VA_BASE + ((x) & 0x00FFF000))
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,14 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * arch/arm/mach-prima2/include/mach/timex.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company.
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under GPLv2 or later.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __MACH_TIMEX_H__
 | 
			
		||||
#define __MACH_TIMEX_H__
 | 
			
		||||
 | 
			
		||||
#define CLOCK_TICK_RATE  1000000
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,29 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * arch/arm/mach-prima2/include/mach/uart.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company.
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under GPLv2 or later.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __MACH_PRIMA2_SIRFSOC_UART_H
 | 
			
		||||
#define __MACH_PRIMA2_SIRFSOC_UART_H
 | 
			
		||||
 | 
			
		||||
/* UART-1: used as serial debug port */
 | 
			
		||||
#if defined(CONFIG_DEBUG_SIRFPRIMA2_UART1)
 | 
			
		||||
#define SIRFSOC_UART1_PA_BASE          0xb0060000
 | 
			
		||||
#elif defined(CONFIG_DEBUG_SIRFMARCO_UART1)
 | 
			
		||||
#define SIRFSOC_UART1_PA_BASE          0xcc060000
 | 
			
		||||
#else
 | 
			
		||||
#define SIRFSOC_UART1_PA_BASE          0
 | 
			
		||||
#endif
 | 
			
		||||
#define SIRFSOC_UART1_VA_BASE          SIRFSOC_VA(0x060000)
 | 
			
		||||
#define SIRFSOC_UART1_SIZE		SZ_4K
 | 
			
		||||
 | 
			
		||||
#define SIRFSOC_UART_TXFIFO_STATUS	0x0114
 | 
			
		||||
#define SIRFSOC_UART_TXFIFO_DATA	0x0118
 | 
			
		||||
 | 
			
		||||
#define SIRFSOC_UART1_TXFIFO_FULL                       (1 << 5)
 | 
			
		||||
#define SIRFSOC_UART1_TXFIFO_EMPTY			(1 << 6)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,41 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * arch/arm/mach-prima2/include/mach/uncompress.h
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company.
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under GPLv2 or later.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __ASM_ARCH_UNCOMPRESS_H
 | 
			
		||||
#define __ASM_ARCH_UNCOMPRESS_H
 | 
			
		||||
 | 
			
		||||
#include <linux/io.h>
 | 
			
		||||
#include <mach/hardware.h>
 | 
			
		||||
#include <mach/uart.h>
 | 
			
		||||
 | 
			
		||||
void arch_decomp_setup(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static __inline__ void putc(char c)
 | 
			
		||||
{
 | 
			
		||||
	/*
 | 
			
		||||
	 * during kernel decompression, all mappings are flat:
 | 
			
		||||
	 *  virt_addr == phys_addr
 | 
			
		||||
	 */
 | 
			
		||||
	if (!SIRFSOC_UART1_PA_BASE)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	while (__raw_readl((void __iomem *)SIRFSOC_UART1_PA_BASE + SIRFSOC_UART_TXFIFO_STATUS)
 | 
			
		||||
		& SIRFSOC_UART1_TXFIFO_FULL)
 | 
			
		||||
		barrier();
 | 
			
		||||
 | 
			
		||||
	__raw_writel(c, (void __iomem *)SIRFSOC_UART1_PA_BASE + SIRFSOC_UART_TXFIFO_DATA);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void flush(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -9,7 +9,7 @@
 | 
			
		|||
#include <linux/kernel.h>
 | 
			
		||||
#include <asm/page.h>
 | 
			
		||||
#include <asm/mach/map.h>
 | 
			
		||||
#include <mach/map.h>
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
#if defined(CONFIG_DEBUG_SIRFPRIMA2_UART1)
 | 
			
		||||
#define SIRFSOC_UART1_PA_BASE          0xb0060000
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,6 @@
 | 
			
		|||
#include <asm/smp_scu.h>
 | 
			
		||||
#include <asm/cacheflush.h>
 | 
			
		||||
#include <asm/cputype.h>
 | 
			
		||||
#include <mach/map.h>
 | 
			
		||||
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue