From: Russell King <rmk@dyn-67.arm.linux.org.uk>
Date: Thu, 7 Aug 2008 10:05:25 +0000 (+0100)
Subject: Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa... 
X-Git-Tag: firefly_0821_release~18364^2~5
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=afd2fc02ab7bae6062671c5ca80dd34c34a63fb7;p=firefly-linux-kernel-4.4.55.git

Merge branch 'for-rmk' of git://git./linux/kernel/git/ycmiao/pxa-linux-2.6

Conflicts:

	arch/arm/mach-pxa/generic.c
	arch/arm/mach-pxa/pxa25x.c
	arch/arm/mach-pxa/pxa27x.c
	arch/arm/mach-pxa/pxa2xx.c
	arch/arm/mach-pxa/pxa3xx.c
	arch/arm/mach-pxa/reset.c
	arch/arm/mach-pxa/spitz.c
	arch/arm/mach-pxa/tosa.c
	drivers/watchdog/sa1100_wdt.c
---

afd2fc02ab7bae6062671c5ca80dd34c34a63fb7
diff --cc arch/arm/mach-pxa/generic.c
index 2834b7fff78c,36638926c5ce..ceaed0076366
--- a/arch/arm/mach-pxa/generic.c
+++ b/arch/arm/mach-pxa/generic.c
@@@ -25,7 -25,8 +25,8 @@@
  #include <asm/pgtable.h>
  #include <asm/mach/map.h>
  
 -#include <asm/arch/pxa-regs.h>
 -#include <asm/arch/reset.h>
 +#include <mach/pxa-regs.h>
++#include <mach/reset.h>
  
  #include "generic.h"
  
diff --cc arch/arm/mach-pxa/include/mach/hardware.h
index f8fb1e75997f,000000000000..e89df4d0d239
mode 100644,000000..100644
--- a/arch/arm/mach-pxa/include/mach/hardware.h
+++ b/arch/arm/mach-pxa/include/mach/hardware.h
@@@ -1,240 -1,0 +1,235 @@@
 +/*
 + *  arch/arm/mach-pxa/include/mach/hardware.h
 + *
 + *  Author:	Nicolas Pitre
 + *  Created:	Jun 15, 2001
 + *  Copyright:	MontaVista Software Inc.
 + *
 + * 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.
 + */
 +
 +#ifndef __ASM_ARCH_HARDWARE_H
 +#define __ASM_ARCH_HARDWARE_H
 +
 +/*
 + * We requires absolute addresses.
 + */
 +#define PCIO_BASE		0
 +
 +/*
 + * Workarounds for at least 2 errata so far require this.
 + * The mapping is set in mach-pxa/generic.c.
 + */
 +#define UNCACHED_PHYS_0		0xff000000
 +#define UNCACHED_ADDR		UNCACHED_PHYS_0
 +
 +/*
 + * Intel PXA2xx internal register mapping:
 + *
 + * 0x40000000 - 0x41ffffff <--> 0xf2000000 - 0xf3ffffff
 + * 0x44000000 - 0x45ffffff <--> 0xf4000000 - 0xf5ffffff
 + * 0x48000000 - 0x49ffffff <--> 0xf6000000 - 0xf7ffffff
 + * 0x4c000000 - 0x4dffffff <--> 0xf8000000 - 0xf9ffffff
 + * 0x50000000 - 0x51ffffff <--> 0xfa000000 - 0xfbffffff
 + * 0x54000000 - 0x55ffffff <--> 0xfc000000 - 0xfdffffff
 + * 0x58000000 - 0x59ffffff <--> 0xfe000000 - 0xffffffff
 + *
 + * Note that not all PXA2xx chips implement all those addresses, and the
 + * kernel only maps the minimum needed range of this mapping.
 + */
 +#define io_p2v(x) (0xf2000000 + ((x) & 0x01ffffff) + (((x) & 0x1c000000) >> 1))
 +#define io_v2p(x) (0x3c000000 + ((x) & 0x01ffffff) + (((x) & 0x0e000000) << 1))
 +
 +#ifndef __ASSEMBLY__
 +
 +# define __REG(x)	(*((volatile u32 *)io_p2v(x)))
 +
 +/* With indexed regs we don't want to feed the index through io_p2v()
 +   especially if it is a variable, otherwise horrible code will result. */
 +# define __REG2(x,y)	\
 +	(*(volatile u32 *)((u32)&__REG(x) + (y)))
 +
 +# define __PREG(x)	(io_v2p((u32)&(x)))
 +
 +#else
 +
 +# define __REG(x)	io_p2v(x)
 +# define __PREG(x)	io_v2p(x)
 +
 +#endif
 +
 +#ifndef __ASSEMBLY__
 +
 +#ifdef CONFIG_PXA25x
 +#define __cpu_is_pxa21x(id)				\
 +	({						\
 +		unsigned int _id = (id) >> 4 & 0xf3f;	\
 +		_id == 0x212;				\
 +	})
 +
 +#define __cpu_is_pxa255(id)                             \
 +	({                                              \
 +		unsigned int _id = (id) >> 4 & 0xfff;   \
 +		_id == 0x2d0;                           \
 +	 })
 +
 +#define __cpu_is_pxa25x(id)				\
 +	({						\
 +		unsigned int _id = (id) >> 4 & 0xfff;	\
 +		_id == 0x2d0 || _id == 0x290;		\
 +	})
 +#else
 +#define __cpu_is_pxa21x(id)	(0)
 +#define __cpu_is_pxa255(id)	(0)
 +#define __cpu_is_pxa25x(id)	(0)
 +#endif
 +
 +#ifdef CONFIG_PXA27x
 +#define __cpu_is_pxa27x(id)				\
 +	({						\
 +		unsigned int _id = (id) >> 4 & 0xfff;	\
 +		_id == 0x411;				\
 +	})
 +#else
 +#define __cpu_is_pxa27x(id)	(0)
 +#endif
 +
 +#ifdef CONFIG_CPU_PXA300
 +#define __cpu_is_pxa300(id)				\
 +	({						\
 +		unsigned int _id = (id) >> 4 & 0xfff;	\
 +		_id == 0x688;				\
 +	 })
 +#else
 +#define __cpu_is_pxa300(id)	(0)
 +#endif
 +
 +#ifdef CONFIG_CPU_PXA310
 +#define __cpu_is_pxa310(id)				\
 +	({						\
 +		unsigned int _id = (id) >> 4 & 0xfff;	\
 +		_id == 0x689;				\
 +	 })
 +#else
 +#define __cpu_is_pxa310(id)	(0)
 +#endif
 +
 +#ifdef CONFIG_CPU_PXA320
 +#define __cpu_is_pxa320(id)				\
 +	({						\
 +		unsigned int _id = (id) >> 4 & 0xfff;	\
 +		_id == 0x603 || _id == 0x682;		\
 +	 })
 +#else
 +#define __cpu_is_pxa320(id)	(0)
 +#endif
 +
 +#ifdef CONFIG_CPU_PXA930
 +#define __cpu_is_pxa930(id)				\
 +	({						\
 +		unsigned int _id = (id) >> 4 & 0xfff;	\
 +		_id == 0x683;		\
 +	 })
 +#else
 +#define __cpu_is_pxa930(id)	(0)
 +#endif
 +
 +#define cpu_is_pxa21x()					\
 +	({						\
 +		__cpu_is_pxa21x(read_cpuid_id());	\
 +	})
 +
 +#define cpu_is_pxa255()                                 \
 +	({                                              \
 +		__cpu_is_pxa255(read_cpuid_id());       \
 +	})
 +
 +#define cpu_is_pxa25x()					\
 +	({						\
 +		__cpu_is_pxa25x(read_cpuid_id());	\
 +	})
 +
 +#define cpu_is_pxa27x()					\
 +	({						\
 +		__cpu_is_pxa27x(read_cpuid_id());	\
 +	})
 +
 +#define cpu_is_pxa300()					\
 +	({						\
 +		__cpu_is_pxa300(read_cpuid_id());	\
 +	 })
 +
 +#define cpu_is_pxa310()					\
 +	({						\
 +		__cpu_is_pxa310(read_cpuid_id());	\
 +	 })
 +
 +#define cpu_is_pxa320()					\
 +	({						\
 +		__cpu_is_pxa320(read_cpuid_id());	\
 +	 })
 +
 +#define cpu_is_pxa930()					\
 +	({						\
 +		unsigned int id = read_cpuid(CPUID_ID);	\
 +		__cpu_is_pxa930(id);			\
 +	 })
 +
 +/*
 + * CPUID Core Generation Bit
 + * <= 0x2 for pxa21x/pxa25x/pxa26x/pxa27x
 + * == 0x3 for pxa300/pxa310/pxa320
 + */
 +#define __cpu_is_pxa2xx(id)				\
 +	({						\
 +		unsigned int _id = (id) >> 13 & 0x7;	\
 +		_id <= 0x2;				\
 +	 })
 +
 +#define __cpu_is_pxa3xx(id)				\
 +	({						\
 +		unsigned int _id = (id) >> 13 & 0x7;	\
 +		_id == 0x3;				\
 +	 })
 +
 +#define cpu_is_pxa2xx()					\
 +	({						\
 +		__cpu_is_pxa2xx(read_cpuid_id());	\
 +	 })
 +
 +#define cpu_is_pxa3xx()					\
 +	({						\
 +		__cpu_is_pxa3xx(read_cpuid_id());	\
 +	 })
 +
 +/*
 + * Handy routine to set GPIO alternate functions
 + */
 +extern int pxa_gpio_mode( int gpio_mode );
 +
 +/*
 + * Return GPIO level, nonzero means high, zero is low
 + */
 +extern int pxa_gpio_get_value(unsigned gpio);
 +
 +/*
 + * Set output GPIO level
 + */
 +extern void pxa_gpio_set_value(unsigned gpio, int value);
 +
 +/*
 + * return current memory and LCD clock frequency in units of 10kHz
 + */
 +extern unsigned int get_memclk_frequency_10khz(void);
 +
- /*
-  * register GPIO as reset generator
-  */
- extern int init_gpio_reset(int gpio);
- 
 +#endif
 +
 +#if defined(CONFIG_MACH_ARMCORE) && defined(CONFIG_PCI)
 +#define PCIBIOS_MIN_IO		0
 +#define PCIBIOS_MIN_MEM		0
 +#define pcibios_assign_all_busses()	1
 +#endif
 +
 +#endif  /* _ASM_ARCH_HARDWARE_H */
diff --cc arch/arm/mach-pxa/include/mach/reset.h
index 000000000000,000000000000..9489a48871a8
new file mode 100644
--- /dev/null
+++ b/arch/arm/mach-pxa/include/mach/reset.h
@@@ -1,0 -1,0 +1,18 @@@
++#ifndef __ASM_ARCH_RESET_H
++#define __ASM_ARCH_RESET_H
++
++#define RESET_STATUS_HARDWARE	(1 << 0)	/* Hardware Reset */
++#define RESET_STATUS_WATCHDOG	(1 << 1)	/* Watchdog Reset */
++#define RESET_STATUS_LOWPOWER	(1 << 2)	/* Low Power/Sleep Exit */
++#define RESET_STATUS_GPIO	(1 << 3)	/* GPIO Reset */
++#define RESET_STATUS_ALL	(0xf)
++
++extern unsigned int reset_status;
++extern void clear_reset_status(unsigned int mask);
++
++/*
++ * register GPIO as reset generator
++ */
++extern int init_gpio_reset(int gpio);
++
++#endif /* __ASM_ARCH_RESET_H */
diff --cc arch/arm/mach-pxa/pxa25x.c
index 3c2d22de9a13,49a7a296ff31..9e5d8a8c6424
--- a/arch/arm/mach-pxa/pxa25x.c
+++ b/arch/arm/mach-pxa/pxa25x.c
@@@ -23,13 -23,14 +23,14 @@@
  #include <linux/suspend.h>
  #include <linux/sysdev.h>
  
 -#include <asm/hardware.h>
 -#include <asm/arch/irqs.h>
 -#include <asm/arch/pxa-regs.h>
 -#include <asm/arch/pxa2xx-regs.h>
 -#include <asm/arch/mfp-pxa25x.h>
 -#include <asm/arch/reset.h>
 -#include <asm/arch/pm.h>
 -#include <asm/arch/dma.h>
 +#include <mach/hardware.h>
 +#include <mach/irqs.h>
 +#include <mach/pxa-regs.h>
 +#include <mach/pxa2xx-regs.h>
 +#include <mach/mfp-pxa25x.h>
++#include <mach/reset.h>
 +#include <mach/pm.h>
 +#include <mach/dma.h>
  
  #include "generic.h"
  #include "devices.h"
diff --cc arch/arm/mach-pxa/pxa27x.c
index 6bec43484ba7,a8c12347a5a9..f9f6a9c31f4b
--- a/arch/arm/mach-pxa/pxa27x.c
+++ b/arch/arm/mach-pxa/pxa27x.c
@@@ -18,16 -18,17 +18,17 @@@
  #include <linux/platform_device.h>
  #include <linux/sysdev.h>
  
 -#include <asm/hardware.h>
 +#include <mach/hardware.h>
  #include <asm/irq.h>
 -#include <asm/arch/irqs.h>
 -#include <asm/arch/pxa-regs.h>
 -#include <asm/arch/pxa2xx-regs.h>
 -#include <asm/arch/mfp-pxa27x.h>
 -#include <asm/arch/reset.h>
 -#include <asm/arch/ohci.h>
 -#include <asm/arch/pm.h>
 -#include <asm/arch/dma.h>
 -#include <asm/arch/i2c.h>
 +#include <mach/irqs.h>
 +#include <mach/pxa-regs.h>
 +#include <mach/pxa2xx-regs.h>
 +#include <mach/mfp-pxa27x.h>
++#include <mach/reset.h>
 +#include <mach/ohci.h>
 +#include <mach/pm.h>
 +#include <mach/dma.h>
 +#include <mach/i2c.h>
  
  #include "generic.h"
  #include "devices.h"
diff --cc arch/arm/mach-pxa/pxa2xx.c
index 00b4de6d6bdd,d93d3e6a6e27..73d04d81c75a
--- a/arch/arm/mach-pxa/pxa2xx.c
+++ b/arch/arm/mach-pxa/pxa2xx.c
@@@ -14,10 -14,19 +14,19 @@@
  #include <linux/kernel.h>
  #include <linux/device.h>
  
 -#include <asm/hardware.h>
 -#include <asm/arch/pxa2xx-regs.h>
 -#include <asm/arch/mfp-pxa2xx.h>
 -#include <asm/arch/mfp-pxa25x.h>
 -#include <asm/arch/reset.h>
 -#include <asm/arch/irda.h>
++#include <mach/hardware.h>
++#include <mach/pxa2xx-regs.h>
 +#include <mach/mfp-pxa2xx.h>
 +#include <mach/mfp-pxa25x.h>
++#include <mach/reset.h>
 +#include <mach/irda.h>
  
+ void pxa2xx_clear_reset_status(unsigned int mask)
+ {
+ 	/* RESET_STATUS_* has a 1:1 mapping with RCSR */
+ 	RCSR = mask;
+ }
+ 
  static unsigned long pxa2xx_mfp_fir[] = {
  	GPIO46_FICP_RXD,
  	GPIO47_FICP_TXD,
diff --cc arch/arm/mach-pxa/pxa3xx.c
index 37b07212b5a5,3d36c790f5ce..03cbc38103ed
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@@ -22,12 -22,13 +22,13 @@@
  #include <linux/io.h>
  #include <linux/sysdev.h>
  
 -#include <asm/hardware.h>
 -#include <asm/arch/pxa3xx-regs.h>
 -#include <asm/arch/reset.h>
 -#include <asm/arch/ohci.h>
 -#include <asm/arch/pm.h>
 -#include <asm/arch/dma.h>
 -#include <asm/arch/ssp.h>
 +#include <mach/hardware.h>
 +#include <mach/pxa3xx-regs.h>
++#include <mach/reset.h>
 +#include <mach/ohci.h>
 +#include <mach/pm.h>
 +#include <mach/dma.h>
 +#include <mach/ssp.h>
  
  #include "generic.h"
  #include "devices.h"
diff --cc arch/arm/mach-pxa/reset.c
index fabead71d681,56f60d923a9d..9996c612c3d6
--- a/arch/arm/mach-pxa/reset.c
+++ b/arch/arm/mach-pxa/reset.c
@@@ -10,8 -10,11 +10,11 @@@
  #include <asm/io.h>
  #include <asm/proc-fns.h>
  
 -#include <asm/arch/pxa-regs.h>
 -#include <asm/arch/reset.h>
 +#include <mach/pxa-regs.h>
- #include <mach/pxa2xx-regs.h>
++#include <mach/reset.h>
+ 
+ unsigned int reset_status;
+ EXPORT_SYMBOL(reset_status);
  
  static void do_hw_reset(void);
  
diff --cc arch/arm/mach-pxa/spitz.c
index 26b9fa56cffd,207fe3e6a3d2..cd39005c98ff
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@@ -35,18 -35,19 +35,19 @@@
  #include <asm/mach/map.h>
  #include <asm/mach/irq.h>
  
 -#include <asm/arch/pxa-regs.h>
 -#include <asm/arch/pxa2xx-regs.h>
 -#include <asm/arch/pxa2xx-gpio.h>
 -#include <asm/arch/pxa27x-udc.h>
 -#include <asm/arch/reset.h>
 -#include <asm/arch/irda.h>
 -#include <asm/arch/mmc.h>
 -#include <asm/arch/ohci.h>
 -#include <asm/arch/udc.h>
 -#include <asm/arch/pxafb.h>
 -#include <asm/arch/akita.h>
 -#include <asm/arch/spitz.h>
 -#include <asm/arch/sharpsl.h>
 +#include <mach/pxa-regs.h>
 +#include <mach/pxa2xx-regs.h>
 +#include <mach/pxa2xx-gpio.h>
 +#include <mach/pxa27x-udc.h>
++#include <mach/reset.h>
 +#include <mach/irda.h>
 +#include <mach/mmc.h>
 +#include <mach/ohci.h>
 +#include <mach/udc.h>
 +#include <mach/pxafb.h>
 +#include <mach/akita.h>
 +#include <mach/spitz.h>
 +#include <mach/sharpsl.h>
  
  #include <asm/mach/sharpsl_param.h>
  #include <asm/hardware/scoop.h>
diff --cc arch/arm/mach-pxa/tosa.c
index 38bc59c44110,4bd7d4f006e2..5dab30eafddc
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@@ -34,16 -34,17 +34,17 @@@
  
  #include <asm/setup.h>
  #include <asm/mach-types.h>
 -#include <asm/arch/pxa2xx-regs.h>
 -#include <asm/arch/mfp-pxa25x.h>
 -#include <asm/arch/reset.h>
 -#include <asm/arch/irda.h>
 -#include <asm/arch/i2c.h>
 -#include <asm/arch/mmc.h>
 -#include <asm/arch/udc.h>
 -#include <asm/arch/tosa_bt.h>
 +#include <mach/pxa2xx-regs.h>
 +#include <mach/mfp-pxa25x.h>
++#include <mach/reset.h>
 +#include <mach/irda.h>
 +#include <mach/i2c.h>
 +#include <mach/mmc.h>
 +#include <mach/udc.h>
 +#include <mach/tosa_bt.h>
  
  #include <asm/mach/arch.h>
 -#include <asm/arch/tosa.h>
 +#include <mach/tosa.h>
  
  #include <asm/hardware/scoop.h>
  #include <asm/mach/sharpsl_param.h>
diff --cc arch/arm/mach-sa1100/include/mach/reset.h
index 000000000000,000000000000..f61957e6842a
new file mode 100644
--- /dev/null
+++ b/arch/arm/mach-sa1100/include/mach/reset.h
@@@ -1,0 -1,0 +1,18 @@@
++#ifndef __ASM_ARCH_RESET_H
++#define __ASM_ARCH_RESET_H
++
++#include "hardware.h"
++
++#define RESET_STATUS_HARDWARE	(1 << 0)	/* Hardware Reset */
++#define RESET_STATUS_WATCHDOG	(1 << 1)	/* Watchdog Reset */
++#define RESET_STATUS_LOWPOWER	(1 << 2)	/* Exit from Low Power/Sleep */
++#define RESET_STATUS_GPIO	(1 << 3)	/* GPIO Reset */
++#define RESET_STATUS_ALL	(0xf)
++
++extern unsigned int reset_status;
++static inline void clear_reset_status(unsigned int mask)
++{
++	RCSR = mask;
++}
++
++#endif /* __ASM_ARCH_RESET_H */
diff --cc drivers/watchdog/sa1100_wdt.c
index 52a533c274fd,e42002d2f815..97d9da758dcc
--- a/drivers/watchdog/sa1100_wdt.c
+++ b/drivers/watchdog/sa1100_wdt.c
@@@ -28,10 -28,12 +28,11 @@@
  #include <linux/bitops.h>
  
  #ifdef CONFIG_ARCH_PXA
 -#include <asm/arch/pxa-regs.h>
 +#include <mach/pxa-regs.h>
  #endif
  
 -#include <asm/arch/reset.h>
 -
 -#include <asm/hardware.h>
++#include <mach/reset.h>
 +#include <mach/hardware.h>
  #include <asm/uaccess.h>
  
  #define OSCR_FREQ		CLOCK_TICK_RATE