diff options
Diffstat (limited to 'arch/sh')
121 files changed, 1543 insertions, 4208 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 224f4bc9925..834b67c4db5 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -1,8 +1,9 @@  config SUPERH  	def_bool y +	select ARCH_MIGHT_HAVE_PC_PARPORT  	select EXPERT  	select CLKDEV_LOOKUP -	select HAVE_IDE if HAS_IOPORT +	select HAVE_IDE if HAS_IOPORT_MAP  	select HAVE_MEMBLOCK  	select HAVE_MEMBLOCK_NODE_MAP  	select ARCH_DISCARD_MEMBLOCK @@ -41,6 +42,7 @@ config SUPERH  	select MODULES_USE_ELF_RELA  	select OLD_SIGSUSPEND  	select OLD_SIGACTION +	select HAVE_ARCH_AUDITSYSCALL  	help  	  The SuperH is a RISC processor targeted for use in embedded systems  	  and consumer electronics; it was also used in the Sega Dreamcast @@ -65,6 +67,7 @@ config SUPERH32  	select PERF_EVENTS  	select ARCH_HIBERNATION_POSSIBLE if MMU  	select SPARSE_IRQ +	select HAVE_CC_STACKPROTECTOR  config SUPERH64  	def_bool ARCH = "sh64" @@ -121,15 +124,6 @@ config SYS_SUPPORTS_NUMA  config SYS_SUPPORTS_PCI  	bool -config SYS_SUPPORTS_CMT -	bool - -config SYS_SUPPORTS_MTU2 -	bool - -config SYS_SUPPORTS_TMU -	bool -  config STACKTRACE_SUPPORT  	def_bool y @@ -145,7 +139,7 @@ config ARCH_HAS_ILOG2_U32  config ARCH_HAS_ILOG2_U64  	def_bool n -config NO_IOPORT +config NO_IOPORT_MAP  	def_bool !PCI  	depends on !SH_CAYMAN && !SH_SH4202_MICRODEV && !SH_SHMIN && \  		   !SH_HP6XX && !SH_SOLUTION_ENGINE @@ -189,14 +183,14 @@ config CPU_SH3  	bool  	select CPU_HAS_INTEVT  	select CPU_HAS_SR_RB -	select SYS_SUPPORTS_TMU +	select SYS_SUPPORTS_SH_TMU  config CPU_SH4  	bool  	select CPU_HAS_INTEVT  	select CPU_HAS_SR_RB  	select CPU_HAS_FPU if !CPU_SH4AL_DSP -	select SYS_SUPPORTS_TMU +	select SYS_SUPPORTS_SH_TMU  	select SYS_SUPPORTS_HUGETLBFS if MMU  config CPU_SH4A @@ -211,7 +205,7 @@ config CPU_SH4AL_DSP  config CPU_SH5  	bool  	select CPU_HAS_FPU -	select SYS_SUPPORTS_TMU +	select SYS_SUPPORTS_SH_TMU  	select SYS_SUPPORTS_HUGETLBFS if MMU  config CPU_SHX2 @@ -248,7 +242,7 @@ choice  config CPU_SUBTYPE_SH7619  	bool "Support SH7619 processor"  	select CPU_SH2 -	select SYS_SUPPORTS_CMT +	select SYS_SUPPORTS_SH_CMT  # SH-2A Processor Support @@ -256,50 +250,50 @@ config CPU_SUBTYPE_SH7201  	bool "Support SH7201 processor"  	select CPU_SH2A  	select CPU_HAS_FPU -	select SYS_SUPPORTS_MTU2 +	select SYS_SUPPORTS_SH_MTU2  config CPU_SUBTYPE_SH7203  	bool "Support SH7203 processor"  	select CPU_SH2A  	select CPU_HAS_FPU -	select SYS_SUPPORTS_CMT -	select SYS_SUPPORTS_MTU2 +	select SYS_SUPPORTS_SH_CMT +	select SYS_SUPPORTS_SH_MTU2  	select ARCH_WANT_OPTIONAL_GPIOLIB  	select PINCTRL  config CPU_SUBTYPE_SH7206  	bool "Support SH7206 processor"  	select CPU_SH2A -	select SYS_SUPPORTS_CMT -	select SYS_SUPPORTS_MTU2 +	select SYS_SUPPORTS_SH_CMT +	select SYS_SUPPORTS_SH_MTU2  config CPU_SUBTYPE_SH7263  	bool "Support SH7263 processor"  	select CPU_SH2A  	select CPU_HAS_FPU -	select SYS_SUPPORTS_CMT -	select SYS_SUPPORTS_MTU2 +	select SYS_SUPPORTS_SH_CMT +	select SYS_SUPPORTS_SH_MTU2  config CPU_SUBTYPE_SH7264  	bool "Support SH7264 processor"  	select CPU_SH2A  	select CPU_HAS_FPU -	select SYS_SUPPORTS_CMT -	select SYS_SUPPORTS_MTU2 +	select SYS_SUPPORTS_SH_CMT +	select SYS_SUPPORTS_SH_MTU2  	select PINCTRL  config CPU_SUBTYPE_SH7269  	bool "Support SH7269 processor"  	select CPU_SH2A  	select CPU_HAS_FPU -	select SYS_SUPPORTS_CMT -	select SYS_SUPPORTS_MTU2 +	select SYS_SUPPORTS_SH_CMT +	select SYS_SUPPORTS_SH_MTU2  	select PINCTRL  config CPU_SUBTYPE_MXG  	bool "Support MX-G processor"  	select CPU_SH2A -	select SYS_SUPPORTS_MTU2 +	select SYS_SUPPORTS_SH_MTU2  	help  	  Select MX-G if running on an R8A03022BG part. @@ -352,9 +346,8 @@ config CPU_SUBTYPE_SH7720  	bool "Support SH7720 processor"  	select CPU_SH3  	select CPU_HAS_DSP -	select SYS_SUPPORTS_CMT +	select SYS_SUPPORTS_SH_CMT  	select ARCH_WANT_OPTIONAL_GPIOLIB -	select USB_ARCH_HAS_OHCI  	select USB_OHCI_SH if USB_OHCI_HCD  	select PINCTRL  	help @@ -364,8 +357,7 @@ config CPU_SUBTYPE_SH7721  	bool "Support SH7721 processor"  	select CPU_SH3  	select CPU_HAS_DSP -	select SYS_SUPPORTS_CMT -	select USB_ARCH_HAS_OHCI +	select SYS_SUPPORTS_SH_CMT  	select USB_OHCI_SH if USB_OHCI_HCD  	help  	  Select SH7721 if you have a SH3-DSP SH7721 CPU. @@ -420,7 +412,7 @@ config CPU_SUBTYPE_SH7723  	select CPU_SHX2  	select ARCH_SHMOBILE  	select ARCH_SPARSEMEM_ENABLE -	select SYS_SUPPORTS_CMT +	select SYS_SUPPORTS_SH_CMT  	select ARCH_WANT_OPTIONAL_GPIOLIB  	select PINCTRL  	help @@ -432,7 +424,7 @@ config CPU_SUBTYPE_SH7724  	select CPU_SHX2  	select ARCH_SHMOBILE  	select ARCH_SPARSEMEM_ENABLE -	select SYS_SUPPORTS_CMT +	select SYS_SUPPORTS_SH_CMT  	select ARCH_WANT_OPTIONAL_GPIOLIB  	select PINCTRL  	help @@ -443,8 +435,6 @@ config CPU_SUBTYPE_SH7734  	select CPU_SH4A  	select CPU_SHX2  	select ARCH_WANT_OPTIONAL_GPIOLIB -	select USB_ARCH_HAS_OHCI -	select USB_ARCH_HAS_EHCI  	select PINCTRL  	help  	  Select SH7734 if you have a SH4A SH7734 CPU. @@ -454,8 +444,6 @@ config CPU_SUBTYPE_SH7757  	select CPU_SH4A  	select CPU_SHX2  	select ARCH_WANT_OPTIONAL_GPIOLIB -	select USB_ARCH_HAS_OHCI -	select USB_ARCH_HAS_EHCI  	select PINCTRL  	help  	  Select SH7757 if you have a SH4A SH7757 CPU. @@ -463,7 +451,6 @@ config CPU_SUBTYPE_SH7757  config CPU_SUBTYPE_SH7763  	bool "Support SH7763 processor"  	select CPU_SH4A -	select USB_ARCH_HAS_OHCI  	select USB_OHCI_SH if USB_OHCI_HCD  	help  	  Select SH7763 if you have a SH4A SH7763(R5S77631) CPU. @@ -492,9 +479,7 @@ config CPU_SUBTYPE_SH7786  	select CPU_HAS_PTEAEX  	select GENERIC_CLOCKEVENTS_BROADCAST if SMP  	select ARCH_WANT_OPTIONAL_GPIOLIB -	select USB_ARCH_HAS_OHCI  	select USB_OHCI_SH if USB_OHCI_HCD -	select USB_ARCH_HAS_EHCI  	select USB_EHCI_SH if USB_EHCI_HCD  	select PINCTRL @@ -512,7 +497,7 @@ config CPU_SUBTYPE_SH7343  	bool "Support SH7343 processor"  	select CPU_SH4AL_DSP  	select ARCH_SHMOBILE -	select SYS_SUPPORTS_CMT +	select SYS_SUPPORTS_SH_CMT  config CPU_SUBTYPE_SH7722  	bool "Support SH7722 processor" @@ -521,7 +506,7 @@ config CPU_SUBTYPE_SH7722  	select ARCH_SHMOBILE  	select ARCH_SPARSEMEM_ENABLE  	select SYS_SUPPORTS_NUMA -	select SYS_SUPPORTS_CMT +	select SYS_SUPPORTS_SH_CMT  	select ARCH_WANT_OPTIONAL_GPIOLIB  	select PINCTRL @@ -532,7 +517,7 @@ config CPU_SUBTYPE_SH7366  	select ARCH_SHMOBILE  	select ARCH_SPARSEMEM_ENABLE  	select SYS_SUPPORTS_NUMA -	select SYS_SUPPORTS_CMT +	select SYS_SUPPORTS_SH_CMT  endchoice @@ -565,27 +550,6 @@ source "arch/sh/boards/Kconfig"  menu "Timer and clock configuration" -config SH_TIMER_TMU -	bool "TMU timer driver" -	depends on SYS_SUPPORTS_TMU -	default y -	help -	  This enables the build of the TMU timer driver. - -config SH_TIMER_CMT -	bool "CMT timer driver" -	depends on SYS_SUPPORTS_CMT -	default y -	help -	  This enables build of the CMT timer driver. - -config SH_TIMER_MTU2 -	bool "MTU2 timer driver" -	depends on SYS_SUPPORTS_MTU2 -	default y -	help -	  This enables build of the MTU2 timer driver. -  config SH_PCLK_FREQ  	int "Peripheral clock frequency (in Hz)"  	depends on SH_CLK_CPG_LEGACY @@ -694,33 +658,18 @@ config SECCOMP  	  If unsure, say N. -config CC_STACKPROTECTOR -	bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)" -	depends on SUPERH32 -	help -	  This option turns on the -fstack-protector GCC feature. This -	  feature puts, at the beginning of functions, a canary value on -	  the stack just before the return address, and validates -	  the value just before actually returning.  Stack based buffer -	  overflows (that need to overwrite this return address) now also -	  overwrite the canary, which gets detected and the attack is then -	  neutralized via a kernel panic. - -	  This feature requires gcc version 4.2 or above. -  config SMP  	bool "Symmetric multi-processing support"  	depends on SYS_SUPPORTS_SMP -	select USE_GENERIC_SMP_HELPERS  	---help---  	  This enables support for systems with more than one CPU. If you have -	  a system with only one CPU, like most personal computers, say N. If -	  you have a system with more than one CPU, say Y. +	  a system with only one CPU, say N. If you have a system with more +	  than one CPU, say Y. -	  If you say N here, the kernel will run on single and multiprocessor +	  If you say N here, the kernel will run on uni- and multiprocessor  	  machines, but will use only one CPU of a multiprocessor machine. If  	  you say Y here, the kernel will run on many, but not all, -	  singleprocessor machines. On a singleprocessor machine, the kernel +	  uniprocessor machines. On a uniprocessor machine, the kernel  	  will run faster if you say N here.  	  People using multiprocessor machines who say Y here should also say diff --git a/arch/sh/Makefile b/arch/sh/Makefile index aed701c7b11..bf5b3f5f496 100644 --- a/arch/sh/Makefile +++ b/arch/sh/Makefile @@ -32,7 +32,8 @@ endif  cflags-$(CONFIG_CPU_SH2)		:= $(call cc-option,-m2,)  cflags-$(CONFIG_CPU_SH2A)		+= $(call cc-option,-m2a,) \ -					   $(call cc-option,-m2a-nofpu,) +					   $(call cc-option,-m2a-nofpu,) \ +					   $(call cc-option,-m4-nofpu,)  cflags-$(CONFIG_CPU_SH3)		:= $(call cc-option,-m3,)  cflags-$(CONFIG_CPU_SH4)		:= $(call cc-option,-m4,) \  	$(call cc-option,-mno-implicit-fp,-m4-nofpu) @@ -199,10 +200,6 @@ ifeq ($(CONFIG_DWARF_UNWINDER),y)    KBUILD_CFLAGS += -fasynchronous-unwind-tables  endif -ifeq ($(CONFIG_CC_STACKPROTECTOR),y) -  KBUILD_CFLAGS += -fstack-protector -endif -  libs-$(CONFIG_SUPERH32)		:= arch/sh/lib/	$(libs-y)  libs-$(CONFIG_SUPERH64)		:= arch/sh/lib64/ $(libs-y) diff --git a/arch/sh/boards/Kconfig b/arch/sh/boards/Kconfig index fb5805745ac..e331e5373b8 100644 --- a/arch/sh/boards/Kconfig +++ b/arch/sh/boards/Kconfig @@ -158,7 +158,7 @@ config SH_SDK7786  	bool "SDK7786"  	depends on CPU_SUBTYPE_SH7786  	select SYS_SUPPORTS_PCI -	select NO_IOPORT if !PCI +	select NO_IOPORT_MAP if !PCI  	select ARCH_WANT_OPTIONAL_GPIOLIB  	select HAVE_SRAM_POOL  	select REGULATOR_FIXED_VOLTAGE if REGULATOR @@ -204,7 +204,7 @@ config SH_URQUELL  	depends on CPU_SUBTYPE_SH7786  	select ARCH_REQUIRE_GPIOLIB  	select SYS_SUPPORTS_PCI -	select NO_IOPORT if !PCI +	select NO_IOPORT_MAP if !PCI  config SH_MIGOR  	bool "Migo-R" @@ -306,7 +306,7 @@ config SH_LBOX_RE2  config SH_X3PROTO  	bool "SH-X3 Prototype board"  	depends on CPU_SUBTYPE_SHX3 -	select NO_IOPORT if !PCI +	select NO_IOPORT_MAP if !PCI  	select IRQ_DOMAIN  config SH_MAGIC_PANEL_R2 @@ -321,6 +321,7 @@ config SH_CAYMAN  	bool "Hitachi Cayman"  	depends on CPU_SUBTYPE_SH5_101 || CPU_SUBTYPE_SH5_103  	select SYS_SUPPORTS_PCI +	select ARCH_MIGHT_HAVE_PC_SERIO  config SH_POLARIS  	bool "SMSC Polaris" @@ -332,7 +333,7 @@ config SH_POLARIS  config SH_SH2007  	bool "SH-2007 board" -	select NO_IOPORT +	select NO_IOPORT_MAP  	select REGULATOR_FIXED_VOLTAGE if REGULATOR  	depends on CPU_SUBTYPE_SH7780  	help diff --git a/arch/sh/boards/board-sh7757lcr.c b/arch/sh/boards/board-sh7757lcr.c index 25c5a932f9f..669df51a82e 100644 --- a/arch/sh/boards/board-sh7757lcr.c +++ b/arch/sh/boards/board-sh7757lcr.c @@ -252,7 +252,7 @@ static struct sh_mobile_sdhi_info sdhi_info = {  static struct resource sdhi_resources[] = {  	[0] = {  		.start  = 0xffe50000, -		.end    = 0xffe501ff, +		.end    = 0xffe500ff,  		.flags  = IORESOURCE_MEM,  	},  	[1] = { diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c index 1fa8be40977..85d5255d259 100644 --- a/arch/sh/boards/mach-ecovec24/setup.c +++ b/arch/sh/boards/mach-ecovec24/setup.c @@ -15,6 +15,7 @@  #include <linux/mmc/sh_mmcif.h>  #include <linux/mmc/sh_mobile_sdhi.h>  #include <linux/mtd/physmap.h> +#include <linux/mfd/tmio.h>  #include <linux/gpio.h>  #include <linux/interrupt.h>  #include <linux/io.h> @@ -501,7 +502,7 @@ static struct platform_device keysc_device = {  /* TouchScreen */  #define IRQ0 evt2irq(0x600) -static int ts_get_pendown_state(void) +static int ts_get_pendown_state(struct device *dev)  {  	int val = 0;  	gpio_free(GPIO_FN_INTC_IRQ0); @@ -860,14 +861,12 @@ static struct asoc_simple_card_info fsi_da7210_info = {  	.card		= "FSIB-DA7210",  	.codec		= "da7210.0-001a",  	.platform	= "sh_fsi.0", -	.daifmt		= SND_SOC_DAIFMT_I2S, +	.daifmt		= SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,  	.cpu_dai = {  		.name	= "fsib-dai", -		.fmt	= SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_IB_NF,  	},  	.codec_dai = {  		.name	= "da7210-hifi", -		.fmt	= SND_SOC_DAIFMT_CBM_CFM,  	},  }; diff --git a/arch/sh/boards/mach-se/7724/setup.c b/arch/sh/boards/mach-se/7724/setup.c index 21e4230659a..1162bc6945a 100644 --- a/arch/sh/boards/mach-se/7724/setup.c +++ b/arch/sh/boards/mach-se/7724/setup.c @@ -304,14 +304,12 @@ static struct asoc_simple_card_info fsi_ak4642_info = {  	.card		= "FSIA-AK4642",  	.codec		= "ak4642-codec.0-0012",  	.platform	= "sh_fsi.0", -	.daifmt		= SND_SOC_DAIFMT_LEFT_J, +	.daifmt		= SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_CBM_CFM,  	.cpu_dai = {  		.name	= "fsia-dai", -		.fmt	= SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_IB_NF,  	},  	.codec_dai = {  		.name	= "ak4642-hifi", -		.fmt	= SND_SOC_DAIFMT_CBM_CFM,  		.sysclk	= 11289600,  	},  }; diff --git a/arch/sh/configs/apsh4ad0a_defconfig b/arch/sh/configs/apsh4ad0a_defconfig index 95ae23fcfdd..ec70475da89 100644 --- a/arch/sh/configs/apsh4ad0a_defconfig +++ b/arch/sh/configs/apsh4ad0a_defconfig @@ -93,7 +93,6 @@ CONFIG_FONT_8x8=y  CONFIG_FONT_8x16=y  CONFIG_LOGO=y  CONFIG_USB=y -CONFIG_USB_DEBUG=y  CONFIG_USB_MON=y  CONFIG_USB_OHCI_HCD=y  CONFIG_USB_STORAGE=y diff --git a/arch/sh/configs/ecovec24_defconfig b/arch/sh/configs/ecovec24_defconfig index c6c2becdc8a..0b364e3b0ff 100644 --- a/arch/sh/configs/ecovec24_defconfig +++ b/arch/sh/configs/ecovec24_defconfig @@ -107,7 +107,6 @@ CONFIG_SND_SOC=y  CONFIG_SND_SOC_SH4_FSI=y  CONFIG_SND_FSI_DA7210=y  CONFIG_USB=y -CONFIG_USB_DEVICEFS=y  CONFIG_USB_MON=y  CONFIG_USB_R8A66597_HCD=y  CONFIG_USB_STORAGE=y diff --git a/arch/sh/configs/landisk_defconfig b/arch/sh/configs/landisk_defconfig index 3670e937f2b..6783f31315c 100644 --- a/arch/sh/configs/landisk_defconfig +++ b/arch/sh/configs/landisk_defconfig @@ -80,7 +80,6 @@ CONFIG_HID_SAMSUNG=m  CONFIG_HID_SONY=m  CONFIG_HID_SUNPLUS=m  CONFIG_USB=y -CONFIG_USB_DEVICEFS=y  CONFIG_USB_MON=y  CONFIG_USB_EHCI_HCD=y  # CONFIG_USB_EHCI_TT_NEWSCHED is not set diff --git a/arch/sh/configs/rsk7203_defconfig b/arch/sh/configs/rsk7203_defconfig index 4e5229b0c5b..3c4f6f4d52b 100644 --- a/arch/sh/configs/rsk7203_defconfig +++ b/arch/sh/configs/rsk7203_defconfig @@ -100,7 +100,6 @@ CONFIG_HID_SONY=y  CONFIG_HID_SUNPLUS=y  CONFIG_USB=y  CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_DEVICEFS=y  CONFIG_USB_MON=y  CONFIG_USB_R8A66597_HCD=y  CONFIG_NEW_LEDS=y @@ -128,7 +127,6 @@ CONFIG_DEBUG_MUTEXES=y  CONFIG_DEBUG_SPINLOCK_SLEEP=y  CONFIG_DEBUG_INFO=y  CONFIG_DEBUG_VM=y -CONFIG_DEBUG_WRITECOUNT=y  CONFIG_DEBUG_LIST=y  CONFIG_DEBUG_SG=y  CONFIG_FRAME_POINTER=y diff --git a/arch/sh/configs/rsk7264_defconfig b/arch/sh/configs/rsk7264_defconfig index 1600426224c..eecdf65bb78 100644 --- a/arch/sh/configs/rsk7264_defconfig +++ b/arch/sh/configs/rsk7264_defconfig @@ -60,7 +60,6 @@ CONFIG_SERIAL_SH_SCI_NR_UARTS=8  CONFIG_SERIAL_SH_SCI_CONSOLE=y  # CONFIG_HWMON is not set  CONFIG_USB=y -CONFIG_USB_DEBUG=y  CONFIG_USB_ANNOUNCE_NEW_DEVICES=y  # CONFIG_USB_DEVICE_CLASS is not set  CONFIG_USB_R8A66597_HCD=y diff --git a/arch/sh/configs/rsk7269_defconfig b/arch/sh/configs/rsk7269_defconfig index 9f062b5837d..8370b10df35 100644 --- a/arch/sh/configs/rsk7269_defconfig +++ b/arch/sh/configs/rsk7269_defconfig @@ -43,7 +43,6 @@ CONFIG_SERIAL_SH_SCI_NR_UARTS=8  CONFIG_SERIAL_SH_SCI_CONSOLE=y  # CONFIG_HWMON is not set  CONFIG_USB=y -CONFIG_USB_DEBUG=y  CONFIG_USB_ANNOUNCE_NEW_DEVICES=y  # CONFIG_USB_DEVICE_CLASS is not set  CONFIG_USB_R8A66597_HCD=y diff --git a/arch/sh/configs/sdk7780_defconfig b/arch/sh/configs/sdk7780_defconfig index ae1115849dd..6a96b9a2f7a 100644 --- a/arch/sh/configs/sdk7780_defconfig +++ b/arch/sh/configs/sdk7780_defconfig @@ -100,8 +100,6 @@ CONFIG_HID_SAMSUNG=y  CONFIG_HID_SONY=y  CONFIG_HID_SUNPLUS=y  CONFIG_USB=y -CONFIG_USB_DEBUG=y -CONFIG_USB_DEVICEFS=y  # CONFIG_USB_DEVICE_CLASS is not set  CONFIG_USB_MON=y  CONFIG_USB_EHCI_HCD=y diff --git a/arch/sh/configs/se7343_defconfig b/arch/sh/configs/se7343_defconfig index be9c474197b..201acb4652f 100644 --- a/arch/sh/configs/se7343_defconfig +++ b/arch/sh/configs/se7343_defconfig @@ -92,9 +92,7 @@ CONFIG_HID_SAMSUNG=y  CONFIG_HID_SONY=y  CONFIG_HID_SUNPLUS=y  CONFIG_USB=y -CONFIG_USB_DEBUG=y  CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_DEVICEFS=y  CONFIG_USB_ISP116X_HCD=y  CONFIG_UIO=y  CONFIG_EXT2_FS=y diff --git a/arch/sh/configs/se7780_defconfig b/arch/sh/configs/se7780_defconfig index c8c5e7f7a68..b0ef63ce525 100644 --- a/arch/sh/configs/se7780_defconfig +++ b/arch/sh/configs/se7780_defconfig @@ -94,7 +94,6 @@ CONFIG_HID_SAMSUNG=y  CONFIG_HID_SONY=y  CONFIG_HID_SUNPLUS=y  CONFIG_USB=y -CONFIG_USB_DEVICEFS=y  # CONFIG_USB_DEVICE_CLASS is not set  CONFIG_USB_MON=y  CONFIG_USB_EHCI_HCD=y diff --git a/arch/sh/configs/sh2007_defconfig b/arch/sh/configs/sh2007_defconfig index 0d2f41472a1..0c08d9244c9 100644 --- a/arch/sh/configs/sh2007_defconfig +++ b/arch/sh/configs/sh2007_defconfig @@ -97,7 +97,6 @@ CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y  CONFIG_LOGO=y  # CONFIG_HID_SUPPORT is not set  CONFIG_USB=y -CONFIG_USB_DEVICEFS=y  # CONFIG_USB_DEVICE_CLASS is not set  CONFIG_USB_MON=y  CONFIG_NEW_LEDS=y diff --git a/arch/sh/configs/sh7785lcr_defconfig b/arch/sh/configs/sh7785lcr_defconfig index 51561f5677d..d29da4a0f6c 100644 --- a/arch/sh/configs/sh7785lcr_defconfig +++ b/arch/sh/configs/sh7785lcr_defconfig @@ -88,7 +88,6 @@ CONFIG_HID_SAMSUNG=y  CONFIG_HID_SONY=y  CONFIG_HID_SUNPLUS=y  CONFIG_USB=y -CONFIG_USB_DEVICEFS=y  CONFIG_USB_MON=y  CONFIG_USB_EHCI_HCD=m  # CONFIG_USB_EHCI_TT_NEWSCHED is not set diff --git a/arch/sh/configs/titan_defconfig b/arch/sh/configs/titan_defconfig index e2cbd92d520..a77b778c745 100644 --- a/arch/sh/configs/titan_defconfig +++ b/arch/sh/configs/titan_defconfig @@ -215,7 +215,6 @@ CONFIG_WATCHDOG=y  CONFIG_SH_WDT=m  # CONFIG_USB_HID is not set  CONFIG_USB=y -CONFIG_USB_DEVICEFS=y  CONFIG_USB_MON=y  CONFIG_USB_EHCI_HCD=y  CONFIG_USB_EHCI_ROOT_HUB_TT=y diff --git a/arch/sh/configs/urquell_defconfig b/arch/sh/configs/urquell_defconfig index d7f89be9f47..1e843dbed5f 100644 --- a/arch/sh/configs/urquell_defconfig +++ b/arch/sh/configs/urquell_defconfig @@ -117,7 +117,6 @@ CONFIG_HID_SONY=y  CONFIG_HID_SUNPLUS=y  CONFIG_USB=y  CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_DEVICEFS=y  CONFIG_USB_MON=y  CONFIG_USB_OHCI_HCD=y  CONFIG_USB_STORAGE=y diff --git a/arch/sh/drivers/pci/fixups-dreamcast.c b/arch/sh/drivers/pci/fixups-dreamcast.c index d6cde700e31..1d1c5a227e5 100644 --- a/arch/sh/drivers/pci/fixups-dreamcast.c +++ b/arch/sh/drivers/pci/fixups-dreamcast.c @@ -31,6 +31,8 @@  static void gapspci_fixup_resources(struct pci_dev *dev)  {  	struct pci_channel *p = dev->sysdata; +	struct resource res; +	struct pci_bus_region region;  	printk(KERN_NOTICE "PCI: Fixing up device %s\n", pci_name(dev)); @@ -50,11 +52,21 @@ static void gapspci_fixup_resources(struct pci_dev *dev)  		/*  		 * Redirect dma memory allocations to special memory window. +		 * +		 * If this GAPSPCI region were mapped by a BAR, the CPU +		 * phys_addr_t would be pci_resource_start(), and the bus +		 * address would be pci_bus_address(pci_resource_start()). +		 * But apparently there's no BAR mapping it, so we just +		 * "know" its CPU address is GAPSPCI_DMA_BASE.  		 */ +		res.start = GAPSPCI_DMA_BASE; +		res.end = GAPSPCI_DMA_BASE + GAPSPCI_DMA_SIZE - 1; +		res.flags = IORESOURCE_MEM; +		pcibios_resource_to_bus(dev->bus, ®ion, &res);  		BUG_ON(!dma_declare_coherent_memory(&dev->dev, -						GAPSPCI_DMA_BASE, -						GAPSPCI_DMA_BASE, -						GAPSPCI_DMA_SIZE, +						res.start, +						region.start, +						resource_size(&res),  						DMA_MEMORY_MAP |  						DMA_MEMORY_EXCLUSIVE));  		break; diff --git a/arch/sh/drivers/pci/pci.c b/arch/sh/drivers/pci/pci.c index 60ed3e1c4b7..1bc09ee7948 100644 --- a/arch/sh/drivers/pci/pci.c +++ b/arch/sh/drivers/pci/pci.c @@ -186,11 +186,6 @@ resource_size_t pcibios_align_resource(void *data, const struct resource *res,  	return start;  } -int pcibios_enable_device(struct pci_dev *dev, int mask) -{ -	return pci_enable_resources(dev, mask); -} -  static void __init  pcibios_bus_report_status_early(struct pci_channel *hose,  				int top_bus, int current_bus, diff --git a/arch/sh/drivers/pci/pcie-sh7786.h b/arch/sh/drivers/pci/pcie-sh7786.h index 1ee054e47ea..4a6ff55f759 100644 --- a/arch/sh/drivers/pci/pcie-sh7786.h +++ b/arch/sh/drivers/pci/pcie-sh7786.h @@ -145,9 +145,6 @@  /*	PCIERMSGIER	*/  #define	SH4A_PCIERMSGIER	(0x004040)	/* R/W - 0x0000 0000 32 */ -/*	PCIEPHYCTLR	*/ -#define SH4A_PCIEPHYCTLR	(0x010000)	/* R/W - 0x0000 0000 32 */ -  /*	PCIEPHYADRR	*/  #define	SH4A_PCIEPHYADRR	(0x010004)	/* R/W - 0x0000 0000 32 */  #define		BITS_ACK	(24)			// Rev1.171 diff --git a/arch/sh/include/asm/Kbuild b/arch/sh/include/asm/Kbuild index 280bea9e5e2..c19e47dacb3 100644 --- a/arch/sh/include/asm/Kbuild +++ b/arch/sh/include/asm/Kbuild @@ -8,18 +8,21 @@ generic-y += emergency-restart.h  generic-y += errno.h  generic-y += exec.h  generic-y += fcntl.h +generic-y += hash.h  generic-y += ioctl.h  generic-y += ipcbuf.h  generic-y += irq_regs.h  generic-y += kvm_para.h  generic-y += local.h  generic-y += local64.h +generic-y += mcs_spinlock.h +generic-y += mman.h +generic-y += msgbuf.h  generic-y += param.h  generic-y += parport.h  generic-y += percpu.h  generic-y += poll.h -generic-y += mman.h -generic-y += msgbuf.h +generic-y += preempt.h  generic-y += resource.h  generic-y += scatterlist.h  generic-y += sembuf.h diff --git a/arch/sh/include/asm/atomic.h b/arch/sh/include/asm/atomic.h index f4c1c20bcdf..f57b8a6743b 100644 --- a/arch/sh/include/asm/atomic.h +++ b/arch/sh/include/asm/atomic.h @@ -10,6 +10,7 @@  #include <linux/compiler.h>  #include <linux/types.h>  #include <asm/cmpxchg.h> +#include <asm/barrier.h>  #define ATOMIC_INIT(i)	{ (i) } @@ -62,9 +63,4 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)  	return c;  } -#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() -  #endif /* __ASM_SH_ATOMIC_H */ diff --git a/arch/sh/include/asm/barrier.h b/arch/sh/include/asm/barrier.h index 72c103dae30..43715308b06 100644 --- a/arch/sh/include/asm/barrier.h +++ b/arch/sh/include/asm/barrier.h @@ -26,29 +26,14 @@  #if defined(CONFIG_CPU_SH4A) || defined(CONFIG_CPU_SH5)  #define mb()		__asm__ __volatile__ ("synco": : :"memory")  #define rmb()		mb() -#define wmb()		__asm__ __volatile__ ("synco": : :"memory") +#define wmb()		mb()  #define ctrl_barrier()	__icbi(PAGE_OFFSET) -#define read_barrier_depends()	do { } while(0)  #else -#define mb()		__asm__ __volatile__ ("": : :"memory") -#define rmb()		mb() -#define wmb()		__asm__ __volatile__ ("": : :"memory")  #define ctrl_barrier()	__asm__ __volatile__ ("nop;nop;nop;nop;nop;nop;nop;nop") -#define read_barrier_depends()	do { } while(0) -#endif - -#ifdef CONFIG_SMP -#define smp_mb()	mb() -#define smp_rmb()	rmb() -#define smp_wmb()	wmb() -#define smp_read_barrier_depends()	read_barrier_depends() -#else -#define smp_mb()	barrier() -#define smp_rmb()	barrier() -#define smp_wmb()	barrier() -#define smp_read_barrier_depends()	do { } while(0)  #endif  #define set_mb(var, value) do { (void)xchg(&var, value); } while (0) +#include <asm-generic/barrier.h> +  #endif /* __ASM_SH_BARRIER_H */ diff --git a/arch/sh/include/asm/bitops.h b/arch/sh/include/asm/bitops.h index ea8706d94f0..fc8e652cf17 100644 --- a/arch/sh/include/asm/bitops.h +++ b/arch/sh/include/asm/bitops.h @@ -9,6 +9,7 @@  /* For __swab32 */  #include <asm/byteorder.h> +#include <asm/barrier.h>  #ifdef CONFIG_GUSA_RB  #include <asm/bitops-grb.h> @@ -22,12 +23,6 @@  #include <asm-generic/bitops/non-atomic.h>  #endif -/* - * clear_bit() doesn't provide any barrier for the compiler. - */ -#define smp_mb__before_clear_bit()	smp_mb() -#define smp_mb__after_clear_bit()	smp_mb() -  #ifdef CONFIG_SUPERH32  static inline unsigned long ffz(unsigned long word)  { diff --git a/arch/sh/include/asm/clkdev.h b/arch/sh/include/asm/clkdev.h index 6ba91868201..c41901465fb 100644 --- a/arch/sh/include/asm/clkdev.h +++ b/arch/sh/include/asm/clkdev.h @@ -25,7 +25,9 @@ static inline struct clk_lookup_alloc *__clkdev_alloc(size_t size)  		return kzalloc(size, GFP_KERNEL);  } +#ifndef CONFIG_COMMON_CLK  #define __clk_put(clk)  #define __clk_get(clk) ({ 1; }) +#endif  #endif /* __CLKDEV_H__ */ diff --git a/arch/sh/include/asm/fixmap.h b/arch/sh/include/asm/fixmap.h index cbe0186b679..4daf91c3b72 100644 --- a/arch/sh/include/asm/fixmap.h +++ b/arch/sh/include/asm/fixmap.h @@ -79,13 +79,6 @@ extern void __set_fixmap(enum fixed_addresses idx,  			 unsigned long phys, pgprot_t flags);  extern void __clear_fixmap(enum fixed_addresses idx, pgprot_t flags); -#define set_fixmap(idx, phys) \ -		__set_fixmap(idx, phys, PAGE_KERNEL) -/* - * Some hardware wants to get fixmapped without caching. - */ -#define set_fixmap_nocache(idx, phys) \ -		__set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE)  /*   * used by vmalloc.c.   * @@ -101,36 +94,8 @@ extern void __clear_fixmap(enum fixed_addresses idx, pgprot_t flags);  #define FIXADDR_SIZE	(__end_of_fixed_addresses << PAGE_SHIFT)  #define FIXADDR_START	(FIXADDR_TOP - FIXADDR_SIZE) -#define __fix_to_virt(x)	(FIXADDR_TOP - ((x) << PAGE_SHIFT)) -#define __virt_to_fix(x)	((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT) - -extern void __this_fixmap_does_not_exist(void); - -/* - * 'index to address' translation. If anyone tries to use the idx - * directly without tranlation, we catch the bug with a NULL-deference - * kernel oops. Illegal ranges of incoming indices are caught too. - */ -static inline unsigned long fix_to_virt(const unsigned int idx) -{ -	/* -	 * this branch gets completely eliminated after inlining, -	 * except when someone tries to use fixaddr indices in an -	 * illegal way. (such as mixing up address types or using -	 * out-of-range indices). -	 * -	 * If it doesn't get removed, the linker will complain -	 * loudly with a reasonably clear error message.. -	 */ -	if (idx >= __end_of_fixed_addresses) -		__this_fixmap_does_not_exist(); +#define FIXMAP_PAGE_NOCACHE PAGE_KERNEL_NOCACHE -        return __fix_to_virt(idx); -} +#include <asm-generic/fixmap.h> -static inline unsigned long virt_to_fix(const unsigned long vaddr) -{ -	BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START); -	return __virt_to_fix(vaddr); -}  #endif diff --git a/arch/sh/include/asm/fpu.h b/arch/sh/include/asm/fpu.h index 06c4281aab6..09fc2bc8a79 100644 --- a/arch/sh/include/asm/fpu.h +++ b/arch/sh/include/asm/fpu.h @@ -46,7 +46,7 @@ static inline void __unlazy_fpu(struct task_struct *tsk, struct pt_regs *regs)  		save_fpu(tsk);  		release_fpu(regs);  	} else -		tsk->fpu_counter = 0; +		tsk->thread.fpu_counter = 0;  }  static inline void unlazy_fpu(struct task_struct *tsk, struct pt_regs *regs) diff --git a/arch/sh/include/asm/ftrace.h b/arch/sh/include/asm/ftrace.h index 13e9966464c..e79fb6ebaa4 100644 --- a/arch/sh/include/asm/ftrace.h +++ b/arch/sh/include/asm/ftrace.h @@ -40,15 +40,7 @@ static inline unsigned long ftrace_call_adjust(unsigned long addr)  /* arch/sh/kernel/return_address.c */  extern void *return_address(unsigned int); -#define HAVE_ARCH_CALLER_ADDR - -#define CALLER_ADDR0 ((unsigned long)__builtin_return_address(0)) -#define CALLER_ADDR1 ((unsigned long)return_address(1)) -#define CALLER_ADDR2 ((unsigned long)return_address(2)) -#define CALLER_ADDR3 ((unsigned long)return_address(3)) -#define CALLER_ADDR4 ((unsigned long)return_address(4)) -#define CALLER_ADDR5 ((unsigned long)return_address(5)) -#define CALLER_ADDR6 ((unsigned long)return_address(6)) +#define ftrace_return_address(n) return_address(n)  #endif /* __ASSEMBLY__ */ diff --git a/arch/sh/include/asm/io.h b/arch/sh/include/asm/io.h index 629db2ad791..728c4c571f4 100644 --- a/arch/sh/include/asm/io.h +++ b/arch/sh/include/asm/io.h @@ -122,7 +122,7 @@ __BUILD_MEMORY_STRING(__raw_, l, u32)  __BUILD_MEMORY_STRING(__raw_, q, u64) -#ifdef CONFIG_HAS_IOPORT +#ifdef CONFIG_HAS_IOPORT_MAP  /*   * Slowdown I/O port space accesses for antique hardware. @@ -218,7 +218,7 @@ __BUILD_IOPORT_STRING(w, u16)  __BUILD_IOPORT_STRING(l, u32)  __BUILD_IOPORT_STRING(q, u64) -#else /* !CONFIG_HAS_IOPORT */ +#else /* !CONFIG_HAS_IOPORT_MAP */  #include <asm/io_noioport.h> diff --git a/arch/sh/include/asm/io_trapped.h b/arch/sh/include/asm/io_trapped.h index f1251d4f0ba..4ab94ef5107 100644 --- a/arch/sh/include/asm/io_trapped.h +++ b/arch/sh/include/asm/io_trapped.h @@ -36,7 +36,7 @@ __ioremap_trapped(unsigned long offset, unsigned long size)  #define __ioremap_trapped(offset, size) NULL  #endif -#ifdef CONFIG_HAS_IOPORT +#ifdef CONFIG_HAS_IOPORT_MAP  extern struct list_head trapped_io;  static inline void __iomem * diff --git a/arch/sh/include/asm/machvec.h b/arch/sh/include/asm/machvec.h index eb9c20d971d..d3324e4f372 100644 --- a/arch/sh/include/asm/machvec.h +++ b/arch/sh/include/asm/machvec.h @@ -21,7 +21,7 @@ struct sh_machine_vector {  	int (*mv_irq_demux)(int irq);  	void (*mv_init_irq)(void); -#ifdef CONFIG_HAS_IOPORT +#ifdef CONFIG_HAS_IOPORT_MAP  	void __iomem *(*mv_ioport_map)(unsigned long port, unsigned int size);  	void (*mv_ioport_unmap)(void __iomem *);  #endif diff --git a/arch/sh/include/asm/mmu_context.h b/arch/sh/include/asm/mmu_context.h index 21c5088788d..b9d9489a501 100644 --- a/arch/sh/include/asm/mmu_context.h +++ b/arch/sh/include/asm/mmu_context.h @@ -81,7 +81,7 @@ static inline void get_mmu_context(struct mm_struct *mm, unsigned int cpu)  		/*  		 * Fix version; Note that we avoid version #0 -		 * to distingush NO_CONTEXT. +		 * to distinguish NO_CONTEXT.  		 */  		if (!asid)  			asid = MMU_CONTEXT_FIRST_VERSION; diff --git a/arch/sh/include/asm/pci.h b/arch/sh/include/asm/pci.h index bff96c2e7d2..5b451155299 100644 --- a/arch/sh/include/asm/pci.h +++ b/arch/sh/include/asm/pci.h @@ -70,11 +70,6 @@ extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,  	enum pci_mmap_state mmap_state, int write_combine);  extern void pcibios_set_master(struct pci_dev *dev); -static inline void pcibios_penalize_isa_irq(int irq, int active) -{ -	/* We don't do dynamic PCI IRQ allocation */ -} -  /* Dynamic DMA mapping stuff.   * SuperH has everything mapped statically like x86.   */ diff --git a/arch/sh/include/asm/pgalloc.h b/arch/sh/include/asm/pgalloc.h index 8c00785c60d..a33673b3687 100644 --- a/arch/sh/include/asm/pgalloc.h +++ b/arch/sh/include/asm/pgalloc.h @@ -47,7 +47,10 @@ static inline pgtable_t pte_alloc_one(struct mm_struct *mm,  	if (!pg)  		return NULL;  	page = virt_to_page(pg); -	pgtable_page_ctor(page); +	if (!pgtable_page_ctor(page)) { +		quicklist_free(QUICK_PT, NULL, pg); +		return NULL; +	}  	return page;  } diff --git a/arch/sh/include/asm/processor_32.h b/arch/sh/include/asm/processor_32.h index e699a12cdcc..18e0377f72b 100644 --- a/arch/sh/include/asm/processor_32.h +++ b/arch/sh/include/asm/processor_32.h @@ -111,6 +111,16 @@ struct thread_struct {  	/* Extended processor state */  	union thread_xstate *xstate; + +	/* +	 * fpu_counter contains the number of consecutive context switches +	 * that the FPU is used. If this is over a threshold, the lazy fpu +	 * saving becomes unlazy to save the trap. This is an unsigned char +	 * so that after 256 times the counter wraps and the behavior turns +	 * lazy again; this to deal with bursty apps that only use FPU for +	 * a short time +	 */ +	unsigned char fpu_counter;  };  #define INIT_THREAD  {						\ diff --git a/arch/sh/include/asm/processor_64.h b/arch/sh/include/asm/processor_64.h index 1cc7d319714..eedd4f625d0 100644 --- a/arch/sh/include/asm/processor_64.h +++ b/arch/sh/include/asm/processor_64.h @@ -126,6 +126,16 @@ struct thread_struct {  	/* floating point info */  	union thread_xstate *xstate; + +	/* +	 * fpu_counter contains the number of consecutive context switches +	 * that the FPU is used. If this is over a threshold, the lazy fpu +	 * saving becomes unlazy to save the trap. This is an unsigned char +	 * so that after 256 times the counter wraps and the behavior turns +	 * lazy again; this to deal with bursty apps that only use FPU for +	 * a short time +	 */ +	unsigned char fpu_counter;  };  #define INIT_MMAP \ diff --git a/arch/sh/include/asm/syscalls_32.h b/arch/sh/include/asm/syscalls_32.h index 4f97df87d7d..4f643aa718e 100644 --- a/arch/sh/include/asm/syscalls_32.h +++ b/arch/sh/include/asm/syscalls_32.h @@ -9,15 +9,9 @@  struct pt_regs; -asmlinkage int sys_sigreturn(unsigned long r4, unsigned long r5, -			     unsigned long r6, unsigned long r7, -			     struct pt_regs __regs); -asmlinkage int sys_rt_sigreturn(unsigned long r4, unsigned long r5, -				unsigned long r6, unsigned long r7, -				struct pt_regs __regs); -asmlinkage int sys_sh_pipe(unsigned long r4, unsigned long r5, -			   unsigned long r6, unsigned long r7, -			   struct pt_regs __regs); +asmlinkage int sys_sigreturn(void); +asmlinkage int sys_rt_sigreturn(void); +asmlinkage int sys_sh_pipe(void);  asmlinkage ssize_t sys_pread_wrapper(unsigned int fd, char __user *buf,  				     size_t count, long dummy, loff_t pos);  asmlinkage ssize_t sys_pwrite_wrapper(unsigned int fd, const char __user *buf, diff --git a/arch/sh/include/asm/thread_info.h b/arch/sh/include/asm/thread_info.h index 45a93669289..ad27ffa65e2 100644 --- a/arch/sh/include/asm/thread_info.h +++ b/arch/sh/include/asm/thread_info.h @@ -41,8 +41,6 @@ struct thread_info {  #endif -#define PREEMPT_ACTIVE		0x10000000 -  #if defined(CONFIG_4KSTACKS)  #define THREAD_SHIFT	12  #else diff --git a/arch/sh/include/asm/tlb.h b/arch/sh/include/asm/tlb.h index 362192ed12f..62f80d2a9df 100644 --- a/arch/sh/include/asm/tlb.h +++ b/arch/sh/include/asm/tlb.h @@ -86,6 +86,14 @@ tlb_end_vma(struct mmu_gather *tlb, struct vm_area_struct *vma)  	}  } +static inline void tlb_flush_mmu_tlbonly(struct mmu_gather *tlb) +{ +} + +static inline void tlb_flush_mmu_free(struct mmu_gather *tlb) +{ +} +  static inline void tlb_flush_mmu(struct mmu_gather *tlb)  {  } diff --git a/arch/sh/include/asm/traps_32.h b/arch/sh/include/asm/traps_32.h index cfd55ff9dff..17e129fe459 100644 --- a/arch/sh/include/asm/traps_32.h +++ b/arch/sh/include/asm/traps_32.h @@ -42,18 +42,10 @@ static inline void trigger_address_error(void)  asmlinkage void do_address_error(struct pt_regs *regs,  				 unsigned long writeaccess,  				 unsigned long address); -asmlinkage void do_divide_error(unsigned long r4, unsigned long r5, -				unsigned long r6, unsigned long r7, -				struct pt_regs __regs); -asmlinkage void do_reserved_inst(unsigned long r4, unsigned long r5, -				unsigned long r6, unsigned long r7, -				struct pt_regs __regs); -asmlinkage void do_illegal_slot_inst(unsigned long r4, unsigned long r5, -				unsigned long r6, unsigned long r7, -				struct pt_regs __regs); -asmlinkage void do_exception_error(unsigned long r4, unsigned long r5, -				   unsigned long r6, unsigned long r7, -				   struct pt_regs __regs); +asmlinkage void do_divide_error(unsigned long r4); +asmlinkage void do_reserved_inst(void); +asmlinkage void do_illegal_slot_inst(void); +asmlinkage void do_exception_error(void);  #define BUILD_TRAP_HANDLER(name)					\  asmlinkage void name##_trap_handler(unsigned long r4, unsigned long r5,	\ diff --git a/arch/sh/include/asm/unistd.h b/arch/sh/include/asm/unistd.h index e77816c4b9b..126fe8340b2 100644 --- a/arch/sh/include/asm/unistd.h +++ b/arch/sh/include/asm/unistd.h @@ -11,7 +11,6 @@  # define __ARCH_WANT_SYS_GETHOSTNAME  # define __ARCH_WANT_SYS_IPC  # define __ARCH_WANT_SYS_PAUSE -# define __ARCH_WANT_SYS_SGETMASK  # define __ARCH_WANT_SYS_SIGNAL  # define __ARCH_WANT_SYS_TIME  # define __ARCH_WANT_SYS_UTIME diff --git a/arch/sh/include/cpu-sh2/cpu/cache.h b/arch/sh/include/cpu-sh2/cpu/cache.h index 673515bc413..aa1b2b9088a 100644 --- a/arch/sh/include/cpu-sh2/cpu/cache.h +++ b/arch/sh/include/cpu-sh2/cpu/cache.h @@ -18,7 +18,7 @@  #define SH_CACHE_ASSOC		8  #if defined(CONFIG_CPU_SUBTYPE_SH7619) -#define CCR		0xffffffec +#define SH_CCR		0xffffffec  #define CCR_CACHE_CE	0x01	/* Cache enable */  #define CCR_CACHE_WT	0x02    /* CCR[bit1=1,bit2=1] */ diff --git a/arch/sh/include/cpu-sh2a/cpu/cache.h b/arch/sh/include/cpu-sh2a/cpu/cache.h index defb0baa5a0..b27ce92cb60 100644 --- a/arch/sh/include/cpu-sh2a/cpu/cache.h +++ b/arch/sh/include/cpu-sh2a/cpu/cache.h @@ -17,8 +17,8 @@  #define SH_CACHE_COMBINED	4  #define SH_CACHE_ASSOC		8 -#define CCR		0xfffc1000 /* CCR1 */ -#define CCR2		0xfffc1004 +#define SH_CCR		0xfffc1000 /* CCR1 */ +#define SH_CCR2		0xfffc1004  /*   * Most of the SH-2A CCR1 definitions resemble the SH-4 ones. All others not diff --git a/arch/sh/include/cpu-sh3/cpu/cache.h b/arch/sh/include/cpu-sh3/cpu/cache.h index bee2d81c56b..29700fd88c7 100644 --- a/arch/sh/include/cpu-sh3/cpu/cache.h +++ b/arch/sh/include/cpu-sh3/cpu/cache.h @@ -17,7 +17,7 @@  #define SH_CACHE_COMBINED	4  #define SH_CACHE_ASSOC		8 -#define CCR		0xffffffec	/* Address of Cache Control Register */ +#define SH_CCR		0xffffffec	/* Address of Cache Control Register */  #define CCR_CACHE_CE	0x01	/* Cache Enable */  #define CCR_CACHE_WT	0x02	/* Write-Through (for P0,U0,P3) (else writeback) */ diff --git a/arch/sh/include/cpu-sh4/cpu/cache.h b/arch/sh/include/cpu-sh4/cpu/cache.h index 7bfb9e8b069..92c4cd119b6 100644 --- a/arch/sh/include/cpu-sh4/cpu/cache.h +++ b/arch/sh/include/cpu-sh4/cpu/cache.h @@ -17,7 +17,7 @@  #define SH_CACHE_COMBINED	4  #define SH_CACHE_ASSOC		8 -#define CCR		0xff00001c	/* Address of Cache Control Register */ +#define SH_CCR		0xff00001c	/* Address of Cache Control Register */  #define CCR_CACHE_OCE	0x0001	/* Operand Cache Enable */  #define CCR_CACHE_WT	0x0002	/* Write-Through (for P0,U0,P3) (else writeback)*/  #define CCR_CACHE_CB	0x0004	/* Copy-Back (for P1) (else writethrough) */ diff --git a/arch/sh/kernel/Makefile b/arch/sh/kernel/Makefile index 261c8bfd75c..2ccf36c824c 100644 --- a/arch/sh/kernel/Makefile +++ b/arch/sh/kernel/Makefile @@ -22,7 +22,7 @@ obj-y	:= debugtraps.o dma-nommu.o dumpstack.o 		\  ifndef CONFIG_GENERIC_IOMAP  obj-y				+= iomap.o -obj-$(CONFIG_HAS_IOPORT)	+= ioport.o +obj-$(CONFIG_HAS_IOPORT_MAP)	+= ioport.o  endif  obj-$(CONFIG_SUPERH32)		+= sys_sh32.o diff --git a/arch/sh/kernel/cpu/clock-cpg.c b/arch/sh/kernel/cpu/clock-cpg.c index f59b1f30d44..8525a671266 100644 --- a/arch/sh/kernel/cpu/clock-cpg.c +++ b/arch/sh/kernel/cpu/clock-cpg.c @@ -56,9 +56,13 @@ int __init __deprecated cpg_clk_init(void)  	clkdev_add_table(lookups, ARRAY_SIZE(lookups)); -	clk_add_alias("tmu_fck", NULL, "peripheral_clk", NULL); -	clk_add_alias("mtu2_fck", NULL, "peripheral_clk", NULL); -	clk_add_alias("cmt_fck", NULL, "peripheral_clk", NULL); +	clk_add_alias("fck", "sh-tmu-sh3.0", "peripheral_clk", NULL); +	clk_add_alias("fck", "sh-tmu.0", "peripheral_clk", NULL); +	clk_add_alias("fck", "sh-tmu.1", "peripheral_clk", NULL); +	clk_add_alias("fck", "sh-tmu.2", "peripheral_clk", NULL); +	clk_add_alias("fck", "sh-mtu2", "peripheral_clk", NULL); +	clk_add_alias("fck", "sh-cmt-16.0", "peripheral_clk", NULL); +	clk_add_alias("fck", "sh-cmt-32.0", "peripheral_clk", NULL);  	clk_add_alias("sci_ick", NULL, "peripheral_clk", NULL);  	return ret; diff --git a/arch/sh/kernel/cpu/fpu.c b/arch/sh/kernel/cpu/fpu.c index f8f7af51c12..4e332244ea7 100644 --- a/arch/sh/kernel/cpu/fpu.c +++ b/arch/sh/kernel/cpu/fpu.c @@ -44,7 +44,7 @@ void __fpu_state_restore(void)  	restore_fpu(tsk);  	task_thread_info(tsk)->status |= TS_USEDFPU; -	tsk->fpu_counter++; +	tsk->thread.fpu_counter++;  }  void fpu_state_restore(struct pt_regs *regs) diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c index ecf83cd158d..0d7360d549c 100644 --- a/arch/sh/kernel/cpu/init.c +++ b/arch/sh/kernel/cpu/init.c @@ -112,7 +112,7 @@ static void cache_init(void)  	unsigned long ccr, flags;  	jump_to_uncached(); -	ccr = __raw_readl(CCR); +	ccr = __raw_readl(SH_CCR);  	/*  	 * At this point we don't know whether the cache is enabled or not - a @@ -189,7 +189,7 @@ static void cache_init(void)  	l2_cache_init(); -	__raw_writel(flags, CCR); +	__raw_writel(flags, SH_CCR);  	back_to_cached();  }  #else diff --git a/arch/sh/kernel/cpu/sh2/setup-sh7619.c b/arch/sh/kernel/cpu/sh2/setup-sh7619.c index 4df4d4ffe39..58c19adae90 100644 --- a/arch/sh/kernel/cpu/sh2/setup-sh7619.c +++ b/arch/sh/kernel/cpu/sh2/setup-sh7619.c @@ -61,51 +61,63 @@ static DECLARE_INTC_DESC(intc_desc, "sh7619", vectors, NULL,  			 NULL, prio_registers, NULL);  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xf8400000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(88), +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xf8400000, 0x100), +	DEFINE_RES_IRQ(88),  };  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xf8410000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(92), +}; + +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xf8410000, 0x100), +	DEFINE_RES_IRQ(92),  };  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xf8420000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(96), +}; + +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xf8420000, 0x100), +	DEFINE_RES_IRQ(96),  };  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	}, @@ -140,62 +152,24 @@ static struct platform_device eth_device = {  	.resource = eth_resources,  }; -static struct sh_timer_config cmt0_platform_data = { -	.channel_offset = 0x02, -	.timer_bit = 0, -	.clockevent_rating = 125, -	.clocksource_rating = 0, /* disabled due to code generation issues */ +static struct sh_timer_config cmt_platform_data = { +	.channels_mask = 3,  }; -static struct resource cmt0_resources[] = { -	[0] = { -		.start	= 0xf84a0072, -		.end	= 0xf84a0077, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 86, -		.flags	= IORESOURCE_IRQ, -	}, +static struct resource cmt_resources[] = { +	DEFINE_RES_MEM(0xf84a0070, 0x10), +	DEFINE_RES_IRQ(86), +	DEFINE_RES_IRQ(87),  }; -static struct platform_device cmt0_device = { -	.name		= "sh_cmt", +static struct platform_device cmt_device = { +	.name		= "sh-cmt-16",  	.id		= 0,  	.dev = { -		.platform_data	= &cmt0_platform_data, -	}, -	.resource	= cmt0_resources, -	.num_resources	= ARRAY_SIZE(cmt0_resources), -}; - -static struct sh_timer_config cmt1_platform_data = { -	.channel_offset = 0x08, -	.timer_bit = 1, -	.clockevent_rating = 125, -	.clocksource_rating = 0, /* disabled due to code generation issues */ -}; - -static struct resource cmt1_resources[] = { -	[0] = { -		.start	= 0xf84a0078, -		.end	= 0xf84a007d, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 87, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt1_device = { -	.name		= "sh_cmt", -	.id		= 1, -	.dev = { -		.platform_data	= &cmt1_platform_data, +		.platform_data	= &cmt_platform_data,  	}, -	.resource	= cmt1_resources, -	.num_resources	= ARRAY_SIZE(cmt1_resources), +	.resource	= cmt_resources, +	.num_resources	= ARRAY_SIZE(cmt_resources),  };  static struct platform_device *sh7619_devices[] __initdata = { @@ -203,8 +177,7 @@ static struct platform_device *sh7619_devices[] __initdata = {  	&scif1_device,  	&scif2_device,  	ð_device, -	&cmt0_device, -	&cmt1_device, +	&cmt_device,  };  static int __init sh7619_devices_setup(void) @@ -223,8 +196,7 @@ static struct platform_device *sh7619_early_devices[] __initdata = {  	&scif0_device,  	&scif1_device,  	&scif2_device, -	&cmt0_device, -	&cmt1_device, +	&cmt_device,  };  #define STBCR3 0xf80a0000 diff --git a/arch/sh/kernel/cpu/sh2a/clock-sh7264.c b/arch/sh/kernel/cpu/sh2a/clock-sh7264.c index fdf585c9528..8638fba6cd7 100644 --- a/arch/sh/kernel/cpu/sh2a/clock-sh7264.c +++ b/arch/sh/kernel/cpu/sh2a/clock-sh7264.c @@ -117,9 +117,9 @@ static struct clk_lookup lookups[] = {  	/* MSTP clocks */  	CLKDEV_CON_ID("sci_ick", &mstp_clks[MSTP77]),  	CLKDEV_CON_ID("vdc3", &mstp_clks[MSTP74]), -	CLKDEV_CON_ID("cmt_fck", &mstp_clks[MSTP72]), +	CLKDEV_ICK_ID("fck", "sh-cmt-16.0", &mstp_clks[MSTP72]),  	CLKDEV_CON_ID("usb0", &mstp_clks[MSTP60]), -	CLKDEV_CON_ID("mtu2_fck", &mstp_clks[MSTP35]), +	CLKDEV_ICK_ID("fck", "sh-mtu2", &mstp_clks[MSTP35]),  	CLKDEV_CON_ID("sdhi0", &mstp_clks[MSTP34]),  	CLKDEV_CON_ID("sdhi1", &mstp_clks[MSTP33]),  	CLKDEV_CON_ID("adc0", &mstp_clks[MSTP32]), diff --git a/arch/sh/kernel/cpu/sh2a/clock-sh7269.c b/arch/sh/kernel/cpu/sh2a/clock-sh7269.c index 6b787620de9..f8a5c2abdfb 100644 --- a/arch/sh/kernel/cpu/sh2a/clock-sh7269.c +++ b/arch/sh/kernel/cpu/sh2a/clock-sh7269.c @@ -158,9 +158,9 @@ static struct clk_lookup lookups[] = {  	CLKDEV_ICK_ID("sci_fck", "sh-sci.5", &mstp_clks[MSTP42]),  	CLKDEV_ICK_ID("sci_fck", "sh-sci.6", &mstp_clks[MSTP41]),  	CLKDEV_ICK_ID("sci_fck", "sh-sci.7", &mstp_clks[MSTP40]), -	CLKDEV_CON_ID("cmt_fck", &mstp_clks[MSTP72]), +	CLKDEV_ICK_ID("fck", "sh-cmt-16.0", &mstp_clks[MSTP72]),  	CLKDEV_CON_ID("usb0", &mstp_clks[MSTP60]), -	CLKDEV_CON_ID("mtu2_fck", &mstp_clks[MSTP35]), +	CLKDEV_ICK_ID("fck", "sh-mtu2", &mstp_clks[MSTP35]),  	CLKDEV_CON_ID("adc0", &mstp_clks[MSTP32]),  	CLKDEV_CON_ID("rtc0", &mstp_clks[MSTP30]),  }; diff --git a/arch/sh/kernel/cpu/sh2a/setup-mxg.c b/arch/sh/kernel/cpu/sh2a/setup-mxg.c index f7f1cf2af30..26fcdbd4127 100644 --- a/arch/sh/kernel/cpu/sh2a/setup-mxg.c +++ b/arch/sh/kernel/cpu/sh2a/setup-mxg.c @@ -114,102 +114,36 @@ static struct intc_mask_reg mask_registers[] __initdata = {  static DECLARE_INTC_DESC(intc_desc, "mxg", vectors, groups,  			 mask_registers, prio_registers, NULL); -static struct sh_timer_config mtu2_0_platform_data = { -	.channel_offset = -0x80, -	.timer_bit = 0, -	.clockevent_rating = 200, +static struct resource mtu2_resources[] = { +	DEFINE_RES_MEM(0xff801000, 0x400), +	DEFINE_RES_IRQ_NAMED(228, "tgi0a"), +	DEFINE_RES_IRQ_NAMED(234, "tgi1a"), +	DEFINE_RES_IRQ_NAMED(240, "tgi2a"),  }; -static struct resource mtu2_0_resources[] = { -	[0] = { -		.start	= 0xff801300, -		.end	= 0xff801326, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 228, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device mtu2_0_device = { -	.name		= "sh_mtu2", -	.id		= 0, -	.dev = { -		.platform_data	= &mtu2_0_platform_data, -	}, -	.resource	= mtu2_0_resources, -	.num_resources	= ARRAY_SIZE(mtu2_0_resources), -}; - -static struct sh_timer_config mtu2_1_platform_data = { -	.channel_offset = -0x100, -	.timer_bit = 1, -	.clockevent_rating = 200, -}; - -static struct resource mtu2_1_resources[] = { -	[0] = { -		.start	= 0xff801380, -		.end	= 0xff801390, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 234, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device mtu2_1_device = { -	.name		= "sh_mtu2", -	.id		= 1, -	.dev = { -		.platform_data	= &mtu2_1_platform_data, -	}, -	.resource	= mtu2_1_resources, -	.num_resources	= ARRAY_SIZE(mtu2_1_resources), -}; - -static struct sh_timer_config mtu2_2_platform_data = { -	.channel_offset = 0x80, -	.timer_bit = 2, -	.clockevent_rating = 200, -}; - -static struct resource mtu2_2_resources[] = { -	[0] = { -		.start	= 0xff801000, -		.end	= 0xff80100a, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 240, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device mtu2_2_device = { -	.name		= "sh_mtu2", -	.id		= 2, -	.dev = { -		.platform_data	= &mtu2_2_platform_data, -	}, -	.resource	= mtu2_2_resources, -	.num_resources	= ARRAY_SIZE(mtu2_2_resources), +static struct platform_device mtu2_device = { +	.name		= "sh-mtu2", +	.id		= -1, +	.resource	= mtu2_resources, +	.num_resources	= ARRAY_SIZE(mtu2_resources),  };  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xff804000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(220), +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xff804000, 0x100), +	DEFINE_RES_IRQ(220),  };  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	}, @@ -217,9 +151,7 @@ static struct platform_device scif0_device = {  static struct platform_device *mxg_devices[] __initdata = {  	&scif0_device, -	&mtu2_0_device, -	&mtu2_1_device, -	&mtu2_2_device, +	&mtu2_device,  };  static int __init mxg_devices_setup(void) @@ -236,9 +168,7 @@ void __init plat_irq_setup(void)  static struct platform_device *mxg_early_devices[] __initdata = {  	&scif0_device, -	&mtu2_0_device, -	&mtu2_1_device, -	&mtu2_2_device, +	&mtu2_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7201.c b/arch/sh/kernel/cpu/sh2a/setup-sh7201.c index 7b84785b896..abc0ce9fb80 100644 --- a/arch/sh/kernel/cpu/sh2a/setup-sh7201.c +++ b/arch/sh/kernel/cpu/sh2a/setup-sh7201.c @@ -178,136 +178,168 @@ static DECLARE_INTC_DESC(intc_desc, "sh7201", vectors, groups,  			 mask_registers, prio_registers, NULL);  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xfffe8000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(180), +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xfffe8000, 0x100), +	DEFINE_RES_IRQ(180),  };  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xfffe8800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(184), +}; + +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xfffe8800, 0x100), +	DEFINE_RES_IRQ(184),  };  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xfffe9000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(188), +}; + +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xfffe9000, 0x100), +	DEFINE_RES_IRQ(188),  };  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase	= 0xfffe9800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(192), +}; + +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xfffe9800, 0x100), +	DEFINE_RES_IRQ(192),  };  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  };  static struct plat_sci_port scif4_platform_data = { -	.mapbase	= 0xfffea000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(196), +}; + +static struct resource scif4_resources[] = { +	DEFINE_RES_MEM(0xfffea000, 0x100), +	DEFINE_RES_IRQ(196),  };  static struct platform_device scif4_device = {  	.name		= "sh-sci",  	.id		= 4, +	.resource	= scif4_resources, +	.num_resources	= ARRAY_SIZE(scif4_resources),  	.dev		= {  		.platform_data	= &scif4_platform_data,  	},  };  static struct plat_sci_port scif5_platform_data = { -	.mapbase	= 0xfffea800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(200), +}; + +static struct resource scif5_resources[] = { +	DEFINE_RES_MEM(0xfffea800, 0x100), +	DEFINE_RES_IRQ(200),  };  static struct platform_device scif5_device = {  	.name		= "sh-sci",  	.id		= 5, +	.resource	= scif5_resources, +	.num_resources	= ARRAY_SIZE(scif5_resources),  	.dev		= {  		.platform_data	= &scif5_platform_data,  	},  };  static struct plat_sci_port scif6_platform_data = { -	.mapbase	= 0xfffeb000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(204), +}; + +static struct resource scif6_resources[] = { +	DEFINE_RES_MEM(0xfffeb000, 0x100), +	DEFINE_RES_IRQ(204),  };  static struct platform_device scif6_device = {  	.name		= "sh-sci",  	.id		= 6, +	.resource	= scif6_resources, +	.num_resources	= ARRAY_SIZE(scif6_resources),  	.dev		= {  		.platform_data	= &scif6_platform_data,  	},  };  static struct plat_sci_port scif7_platform_data = { -	.mapbase	= 0xfffeb800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(208), +}; + +static struct resource scif7_resources[] = { +	DEFINE_RES_MEM(0xfffeb800, 0x100), +	DEFINE_RES_IRQ(208),  };  static struct platform_device scif7_device = {  	.name		= "sh-sci",  	.id		= 7, +	.resource	= scif7_resources, +	.num_resources	= ARRAY_SIZE(scif7_resources),  	.dev		= {  		.platform_data	= &scif7_platform_data,  	}, @@ -333,88 +365,18 @@ static struct platform_device rtc_device = {  	.resource	= rtc_resources,  }; -static struct sh_timer_config mtu2_0_platform_data = { -	.channel_offset = -0x80, -	.timer_bit = 0, -	.clockevent_rating = 200, -}; - -static struct resource mtu2_0_resources[] = { -	[0] = { -		.start	= 0xfffe4300, -		.end	= 0xfffe4326, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 108, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device mtu2_0_device = { -	.name		= "sh_mtu2", -	.id		= 0, -	.dev = { -		.platform_data	= &mtu2_0_platform_data, -	}, -	.resource	= mtu2_0_resources, -	.num_resources	= ARRAY_SIZE(mtu2_0_resources), -}; - -static struct sh_timer_config mtu2_1_platform_data = { -	.channel_offset = -0x100, -	.timer_bit = 1, -	.clockevent_rating = 200, -}; - -static struct resource mtu2_1_resources[] = { -	[0] = { -		.start	= 0xfffe4380, -		.end	= 0xfffe4390, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 116, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device mtu2_1_device = { -	.name		= "sh_mtu2", -	.id		= 1, -	.dev = { -		.platform_data	= &mtu2_1_platform_data, -	}, -	.resource	= mtu2_1_resources, -	.num_resources	= ARRAY_SIZE(mtu2_1_resources), -}; - -static struct sh_timer_config mtu2_2_platform_data = { -	.channel_offset = 0x80, -	.timer_bit = 2, -	.clockevent_rating = 200, +static struct resource mtu2_resources[] = { +	DEFINE_RES_MEM(0xfffe4000, 0x400), +	DEFINE_RES_IRQ_NAMED(108, "tgi0a"), +	DEFINE_RES_IRQ_NAMED(116, "tgi1a"), +	DEFINE_RES_IRQ_NAMED(124, "tgi1b"),  }; -static struct resource mtu2_2_resources[] = { -	[0] = { -		.start	= 0xfffe4000, -		.end	= 0xfffe400a, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 124, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device mtu2_2_device = { -	.name		= "sh_mtu2", -	.id		= 2, -	.dev = { -		.platform_data	= &mtu2_2_platform_data, -	}, -	.resource	= mtu2_2_resources, -	.num_resources	= ARRAY_SIZE(mtu2_2_resources), +static struct platform_device mtu2_device = { +	.name		= "sh-mtu2", +	.id		= -1, +	.resource	= mtu2_resources, +	.num_resources	= ARRAY_SIZE(mtu2_resources),  };  static struct platform_device *sh7201_devices[] __initdata = { @@ -427,9 +389,7 @@ static struct platform_device *sh7201_devices[] __initdata = {  	&scif6_device,  	&scif7_device,  	&rtc_device, -	&mtu2_0_device, -	&mtu2_1_device, -	&mtu2_2_device, +	&mtu2_device,  };  static int __init sh7201_devices_setup(void) @@ -453,9 +413,7 @@ static struct platform_device *sh7201_early_devices[] __initdata = {  	&scif5_device,  	&scif6_device,  	&scif7_device, -	&mtu2_0_device, -	&mtu2_1_device, -	&mtu2_2_device, +	&mtu2_device,  };  #define STBCR3 0xfffe0408 diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7203.c b/arch/sh/kernel/cpu/sh2a/setup-sh7203.c index bfc33f6a28c..3b4894cba92 100644 --- a/arch/sh/kernel/cpu/sh2a/setup-sh7203.c +++ b/arch/sh/kernel/cpu/sh2a/setup-sh7203.c @@ -174,193 +174,128 @@ static DECLARE_INTC_DESC(intc_desc, "sh7203", vectors, groups,  			 mask_registers, prio_registers, NULL);  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xfffe8000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(192),  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xfffe8000, 0x100), +	DEFINE_RES_IRQ(192), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xfffe8800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(196),  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xfffe8800, 0x100), +	DEFINE_RES_IRQ(196), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xfffe9000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(200),  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xfffe9000, 0x100), +	DEFINE_RES_IRQ(200), +}; +  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase	= 0xfffe9800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(204),  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xfffe9800, 0x100), +	DEFINE_RES_IRQ(204), +}; +  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  }; -static struct sh_timer_config cmt0_platform_data = { -	.channel_offset = 0x02, -	.timer_bit = 0, -	.clockevent_rating = 125, -	.clocksource_rating = 0, /* disabled due to code generation issues */ -}; - -static struct resource cmt0_resources[] = { -	[0] = { -		.start	= 0xfffec002, -		.end	= 0xfffec007, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 142, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt0_device = { -	.name		= "sh_cmt", -	.id		= 0, -	.dev = { -		.platform_data	= &cmt0_platform_data, -	}, -	.resource	= cmt0_resources, -	.num_resources	= ARRAY_SIZE(cmt0_resources), -}; - -static struct sh_timer_config cmt1_platform_data = { -	.channel_offset = 0x08, -	.timer_bit = 1, -	.clockevent_rating = 125, -	.clocksource_rating = 0, /* disabled due to code generation issues */ -}; - -static struct resource cmt1_resources[] = { -	[0] = { -		.start	= 0xfffec008, -		.end	= 0xfffec00d, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 143, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt1_device = { -	.name		= "sh_cmt", -	.id		= 1, -	.dev = { -		.platform_data	= &cmt1_platform_data, -	}, -	.resource	= cmt1_resources, -	.num_resources	= ARRAY_SIZE(cmt1_resources), -}; - -static struct sh_timer_config mtu2_0_platform_data = { -	.channel_offset = -0x80, -	.timer_bit = 0, -	.clockevent_rating = 200, +static struct sh_timer_config cmt_platform_data = { +	.channels_mask = 3,  }; -static struct resource mtu2_0_resources[] = { -	[0] = { -		.start	= 0xfffe4300, -		.end	= 0xfffe4326, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 146, -		.flags	= IORESOURCE_IRQ, -	}, +static struct resource cmt_resources[] = { +	DEFINE_RES_MEM(0xfffec000, 0x10), +	DEFINE_RES_IRQ(142), +	DEFINE_RES_IRQ(143),  }; -static struct platform_device mtu2_0_device = { -	.name		= "sh_mtu2", +static struct platform_device cmt_device = { +	.name		= "sh-cmt-16",  	.id		= 0,  	.dev = { -		.platform_data	= &mtu2_0_platform_data, +		.platform_data	= &cmt_platform_data,  	}, -	.resource	= mtu2_0_resources, -	.num_resources	= ARRAY_SIZE(mtu2_0_resources), +	.resource	= cmt_resources, +	.num_resources	= ARRAY_SIZE(cmt_resources),  }; -static struct sh_timer_config mtu2_1_platform_data = { -	.channel_offset = -0x100, -	.timer_bit = 1, -	.clockevent_rating = 200, +static struct resource mtu2_resources[] = { +	DEFINE_RES_MEM(0xfffe4000, 0x400), +	DEFINE_RES_IRQ_NAMED(146, "tgi0a"), +	DEFINE_RES_IRQ_NAMED(153, "tgi1a"),  }; -static struct resource mtu2_1_resources[] = { -	[0] = { -		.start	= 0xfffe4380, -		.end	= 0xfffe4390, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 153, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device mtu2_1_device = { -	.name		= "sh_mtu2", -	.id		= 1, -	.dev = { -		.platform_data	= &mtu2_1_platform_data, -	}, -	.resource	= mtu2_1_resources, -	.num_resources	= ARRAY_SIZE(mtu2_1_resources), +static struct platform_device mtu2_device = { +	.name		= "sh-mtu2", +	.id		= -1, +	.resource	= mtu2_resources, +	.num_resources	= ARRAY_SIZE(mtu2_resources),  };  static struct resource rtc_resources[] = { @@ -388,10 +323,8 @@ static struct platform_device *sh7203_devices[] __initdata = {  	&scif1_device,  	&scif2_device,  	&scif3_device, -	&cmt0_device, -	&cmt1_device, -	&mtu2_0_device, -	&mtu2_1_device, +	&cmt_device, +	&mtu2_device,  	&rtc_device,  }; @@ -412,10 +345,8 @@ static struct platform_device *sh7203_early_devices[] __initdata = {  	&scif1_device,  	&scif2_device,  	&scif3_device, -	&cmt0_device, -	&cmt1_device, -	&mtu2_0_device, -	&mtu2_1_device, +	&cmt_device, +	&mtu2_device,  };  #define STBCR3 0xfffe0408 diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7206.c b/arch/sh/kernel/cpu/sh2a/setup-sh7206.c index a5010741de8..49bc5a34bec 100644 --- a/arch/sh/kernel/cpu/sh2a/setup-sh7206.c +++ b/arch/sh/kernel/cpu/sh2a/setup-sh7206.c @@ -134,213 +134,121 @@ static DECLARE_INTC_DESC(intc_desc, "sh7206", vectors, groups,  			 mask_registers, prio_registers, NULL);  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xfffe8000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(240), +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xfffe8000, 0x100), +	DEFINE_RES_IRQ(240),  };  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xfffe8800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(244), +}; + +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xfffe8800, 0x100), +	DEFINE_RES_IRQ(244),  };  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xfffe9000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(248), +}; + +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xfffe9000, 0x100), +	DEFINE_RES_IRQ(248),  };  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase	= 0xfffe9800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(252), +}; + +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xfffe9800, 0x100), +	DEFINE_RES_IRQ(252),  };  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  }; -static struct sh_timer_config cmt0_platform_data = { -	.channel_offset = 0x02, -	.timer_bit = 0, -	.clockevent_rating = 125, -	.clocksource_rating = 0, /* disabled due to code generation issues */ -}; - -static struct resource cmt0_resources[] = { -	[0] = { -		.start	= 0xfffec002, -		.end	= 0xfffec007, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 140, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt0_device = { -	.name		= "sh_cmt", -	.id		= 0, -	.dev = { -		.platform_data	= &cmt0_platform_data, -	}, -	.resource	= cmt0_resources, -	.num_resources	= ARRAY_SIZE(cmt0_resources), -}; - -static struct sh_timer_config cmt1_platform_data = { -	.channel_offset = 0x08, -	.timer_bit = 1, -	.clockevent_rating = 125, -	.clocksource_rating = 0, /* disabled due to code generation issues */ -}; - -static struct resource cmt1_resources[] = { -	[0] = { -		.start	= 0xfffec008, -		.end	= 0xfffec00d, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 144, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt1_device = { -	.name		= "sh_cmt", -	.id		= 1, -	.dev = { -		.platform_data	= &cmt1_platform_data, -	}, -	.resource	= cmt1_resources, -	.num_resources	= ARRAY_SIZE(cmt1_resources), +static struct sh_timer_config cmt_platform_data = { +	.channels_mask = 3,  }; -static struct sh_timer_config mtu2_0_platform_data = { -	.channel_offset = -0x80, -	.timer_bit = 0, -	.clockevent_rating = 200, -}; - -static struct resource mtu2_0_resources[] = { -	[0] = { -		.start	= 0xfffe4300, -		.end	= 0xfffe4326, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 156, -		.flags	= IORESOURCE_IRQ, -	}, +static struct resource cmt_resources[] = { +	DEFINE_RES_MEM(0xfffec000, 0x10), +	DEFINE_RES_IRQ(140), +	DEFINE_RES_IRQ(144),  }; -static struct platform_device mtu2_0_device = { -	.name		= "sh_mtu2", +static struct platform_device cmt_device = { +	.name		= "sh-cmt-16",  	.id		= 0,  	.dev = { -		.platform_data	= &mtu2_0_platform_data, +		.platform_data	= &cmt_platform_data,  	}, -	.resource	= mtu2_0_resources, -	.num_resources	= ARRAY_SIZE(mtu2_0_resources), +	.resource	= cmt_resources, +	.num_resources	= ARRAY_SIZE(cmt_resources),  }; -static struct sh_timer_config mtu2_1_platform_data = { -	.channel_offset = -0x100, -	.timer_bit = 1, -	.clockevent_rating = 200, +static struct resource mtu2_resources[] = { +	DEFINE_RES_MEM(0xfffe4000, 0x400), +	DEFINE_RES_IRQ_NAMED(156, "tgi0a"), +	DEFINE_RES_IRQ_NAMED(164, "tgi1a"), +	DEFINE_RES_IRQ_NAMED(180, "tgi2a"),  }; -static struct resource mtu2_1_resources[] = { -	[0] = { -		.start	= 0xfffe4380, -		.end	= 0xfffe4390, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 164, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device mtu2_1_device = { -	.name		= "sh_mtu2", -	.id		= 1, -	.dev = { -		.platform_data	= &mtu2_1_platform_data, -	}, -	.resource	= mtu2_1_resources, -	.num_resources	= ARRAY_SIZE(mtu2_1_resources), -}; - -static struct sh_timer_config mtu2_2_platform_data = { -	.channel_offset = 0x80, -	.timer_bit = 2, -	.clockevent_rating = 200, -}; - -static struct resource mtu2_2_resources[] = { -	[0] = { -		.start	= 0xfffe4000, -		.end	= 0xfffe400a, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 180, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device mtu2_2_device = { -	.name		= "sh_mtu2", -	.id		= 2, -	.dev = { -		.platform_data	= &mtu2_2_platform_data, -	}, -	.resource	= mtu2_2_resources, -	.num_resources	= ARRAY_SIZE(mtu2_2_resources), +static struct platform_device mtu2_device = { +	.name		= "sh-mtu2s", +	.id		= -1, +	.resource	= mtu2_resources, +	.num_resources	= ARRAY_SIZE(mtu2_resources),  };  static struct platform_device *sh7206_devices[] __initdata = { @@ -348,11 +256,8 @@ static struct platform_device *sh7206_devices[] __initdata = {  	&scif1_device,  	&scif2_device,  	&scif3_device, -	&cmt0_device, -	&cmt1_device, -	&mtu2_0_device, -	&mtu2_1_device, -	&mtu2_2_device, +	&cmt_device, +	&mtu2_device,  };  static int __init sh7206_devices_setup(void) @@ -372,11 +277,8 @@ static struct platform_device *sh7206_early_devices[] __initdata = {  	&scif1_device,  	&scif2_device,  	&scif3_device, -	&cmt0_device, -	&cmt1_device, -	&mtu2_0_device, -	&mtu2_1_device, -	&mtu2_2_device, +	&cmt_device, +	&mtu2_device,  };  #define STBCR3 0xfffe0408 diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7264.c b/arch/sh/kernel/cpu/sh2a/setup-sh7264.c index ce5c1b5aebf..60814645556 100644 --- a/arch/sh/kernel/cpu/sh2a/setup-sh7264.c +++ b/arch/sh/kernel/cpu/sh2a/setup-sh7264.c @@ -226,276 +226,244 @@ static DECLARE_INTC_DESC(intc_desc, "sh7264", vectors, groups,  			 mask_registers, prio_registers, NULL);  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xfffe8000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 233, 234, 235, 232 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xfffe8000, 0x100), +	DEFINE_RES_IRQ(233), +	DEFINE_RES_IRQ(234), +	DEFINE_RES_IRQ(235), +	DEFINE_RES_IRQ(232), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xfffe8800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 237, 238, 239, 236 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xfffe8800, 0x100), +	DEFINE_RES_IRQ(237), +	DEFINE_RES_IRQ(238), +	DEFINE_RES_IRQ(239), +	DEFINE_RES_IRQ(236), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xfffe9000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 241, 242, 243, 240 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xfffe9000, 0x100), +	DEFINE_RES_IRQ(241), +	DEFINE_RES_IRQ(242), +	DEFINE_RES_IRQ(243), +	DEFINE_RES_IRQ(240), +}; +  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase	= 0xfffe9800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 245, 246, 247, 244 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xfffe9800, 0x100), +	DEFINE_RES_IRQ(245), +	DEFINE_RES_IRQ(246), +	DEFINE_RES_IRQ(247), +	DEFINE_RES_IRQ(244), +}; +  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  };  static struct plat_sci_port scif4_platform_data = { -	.mapbase	= 0xfffea000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 249, 250, 251, 248 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif4_resources[] = { +	DEFINE_RES_MEM(0xfffea000, 0x100), +	DEFINE_RES_IRQ(249), +	DEFINE_RES_IRQ(250), +	DEFINE_RES_IRQ(251), +	DEFINE_RES_IRQ(248), +}; +  static struct platform_device scif4_device = {  	.name		= "sh-sci",  	.id		= 4, +	.resource	= scif4_resources, +	.num_resources	= ARRAY_SIZE(scif4_resources),  	.dev		= {  		.platform_data	= &scif4_platform_data,  	},  };  static struct plat_sci_port scif5_platform_data = { -	.mapbase	= 0xfffea800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 253, 254, 255, 252 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif5_resources[] = { +	DEFINE_RES_MEM(0xfffea800, 0x100), +	DEFINE_RES_IRQ(253), +	DEFINE_RES_IRQ(254), +	DEFINE_RES_IRQ(255), +	DEFINE_RES_IRQ(252), +}; +  static struct platform_device scif5_device = {  	.name		= "sh-sci",  	.id		= 5, +	.resource	= scif5_resources, +	.num_resources	= ARRAY_SIZE(scif5_resources),  	.dev		= {  		.platform_data	= &scif5_platform_data,  	},  };  static struct plat_sci_port scif6_platform_data = { -	.mapbase	= 0xfffeb000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 257, 258, 259, 256 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif6_resources[] = { +	DEFINE_RES_MEM(0xfffeb000, 0x100), +	DEFINE_RES_IRQ(257), +	DEFINE_RES_IRQ(258), +	DEFINE_RES_IRQ(259), +	DEFINE_RES_IRQ(256), +}; +  static struct platform_device scif6_device = {  	.name		= "sh-sci",  	.id		= 6, +	.resource	= scif6_resources, +	.num_resources	= ARRAY_SIZE(scif6_resources),  	.dev		= {  		.platform_data	= &scif6_platform_data,  	},  };  static struct plat_sci_port scif7_platform_data = { -	.mapbase	= 0xfffeb800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 261, 262, 263, 260 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif7_resources[] = { +	DEFINE_RES_MEM(0xfffeb800, 0x100), +	DEFINE_RES_IRQ(261), +	DEFINE_RES_IRQ(262), +	DEFINE_RES_IRQ(263), +	DEFINE_RES_IRQ(260), +}; +  static struct platform_device scif7_device = {  	.name		= "sh-sci",  	.id		= 7, +	.resource	= scif7_resources, +	.num_resources	= ARRAY_SIZE(scif7_resources),  	.dev		= {  		.platform_data	= &scif7_platform_data,  	},  }; -static struct sh_timer_config cmt0_platform_data = { -	.channel_offset = 0x02, -	.timer_bit = 0, -	.clockevent_rating = 125, -	.clocksource_rating = 0, /* disabled due to code generation issues */ -}; - -static struct resource cmt0_resources[] = { -	[0] = { -		.name	= "CMT0", -		.start	= 0xfffec002, -		.end	= 0xfffec007, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 175, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt0_device = { -	.name		= "sh_cmt", -	.id		= 0, -	.dev = { -		.platform_data	= &cmt0_platform_data, -	}, -	.resource	= cmt0_resources, -	.num_resources	= ARRAY_SIZE(cmt0_resources), -}; - -static struct sh_timer_config cmt1_platform_data = { -	.name = "CMT1", -	.channel_offset = 0x08, -	.timer_bit = 1, -	.clockevent_rating = 125, -	.clocksource_rating = 0, /* disabled due to code generation issues */ -}; - -static struct resource cmt1_resources[] = { -	[0] = { -		.name	= "CMT1", -		.start	= 0xfffec008, -		.end	= 0xfffec00d, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 176, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt1_device = { -	.name		= "sh_cmt", -	.id		= 1, -	.dev = { -		.platform_data	= &cmt1_platform_data, -	}, -	.resource	= cmt1_resources, -	.num_resources	= ARRAY_SIZE(cmt1_resources), -}; - -static struct sh_timer_config mtu2_0_platform_data = { -	.name = "MTU2_0", -	.channel_offset = -0x80, -	.timer_bit = 0, -	.clockevent_rating = 200, +static struct sh_timer_config cmt_platform_data = { +	.channels_mask = 3,  }; -static struct resource mtu2_0_resources[] = { -	[0] = { -		.name	= "MTU2_0", -		.start	= 0xfffe4300, -		.end	= 0xfffe4326, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 179, -		.flags	= IORESOURCE_IRQ, -	}, +static struct resource cmt_resources[] = { +	DEFINE_RES_MEM(0xfffec000, 0x10), +	DEFINE_RES_IRQ(175), +	DEFINE_RES_IRQ(176),  }; -static struct platform_device mtu2_0_device = { -	.name		= "sh_mtu2", +static struct platform_device cmt_device = { +	.name		= "sh-cmt-16",  	.id		= 0,  	.dev = { -		.platform_data	= &mtu2_0_platform_data, +		.platform_data	= &cmt_platform_data,  	}, -	.resource	= mtu2_0_resources, -	.num_resources	= ARRAY_SIZE(mtu2_0_resources), +	.resource	= cmt_resources, +	.num_resources	= ARRAY_SIZE(cmt_resources),  }; -static struct sh_timer_config mtu2_1_platform_data = { -	.name = "MTU2_1", -	.channel_offset = -0x100, -	.timer_bit = 1, -	.clockevent_rating = 200, -}; - -static struct resource mtu2_1_resources[] = { -	[0] = { -		.name	= "MTU2_1", -		.start	= 0xfffe4380, -		.end	= 0xfffe4390, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 186, -		.flags	= IORESOURCE_IRQ, -	}, +static struct resource mtu2_resources[] = { +	DEFINE_RES_MEM(0xfffe4000, 0x400), +	DEFINE_RES_IRQ_NAMED(179, "tgi0a"), +	DEFINE_RES_IRQ_NAMED(186, "tgi1a"),  }; -static struct platform_device mtu2_1_device = { -	.name		= "sh_mtu2", -	.id		= 1, -	.dev = { -		.platform_data	= &mtu2_1_platform_data, -	}, -	.resource	= mtu2_1_resources, -	.num_resources	= ARRAY_SIZE(mtu2_1_resources), +static struct platform_device mtu2_device = { +	.name		= "sh-mtu2", +	.id		= -1, +	.resource	= mtu2_resources, +	.num_resources	= ARRAY_SIZE(mtu2_resources),  };  static struct resource rtc_resources[] = { @@ -564,10 +532,8 @@ static struct platform_device *sh7264_devices[] __initdata = {  	&scif5_device,  	&scif6_device,  	&scif7_device, -	&cmt0_device, -	&cmt1_device, -	&mtu2_0_device, -	&mtu2_1_device, +	&cmt_device, +	&mtu2_device,  	&rtc_device,  	&r8a66597_usb_host_device,  }; @@ -593,10 +559,8 @@ static struct platform_device *sh7264_early_devices[] __initdata = {  	&scif5_device,  	&scif6_device,  	&scif7_device, -	&cmt0_device, -	&cmt1_device, -	&mtu2_0_device, -	&mtu2_1_device, +	&cmt_device, +	&mtu2_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7269.c b/arch/sh/kernel/cpu/sh2a/setup-sh7269.c index e82ae9d8d3b..16ce5aa77bd 100644 --- a/arch/sh/kernel/cpu/sh2a/setup-sh7269.c +++ b/arch/sh/kernel/cpu/sh2a/setup-sh7269.c @@ -248,269 +248,244 @@ static DECLARE_INTC_DESC(intc_desc, "sh7269", vectors, groups,  			 mask_registers, prio_registers, NULL);  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xe8007000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 259, 260, 261, 258 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xe8007000, 0x100), +	DEFINE_RES_IRQ(259), +	DEFINE_RES_IRQ(260), +	DEFINE_RES_IRQ(261), +	DEFINE_RES_IRQ(258), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xe8007800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 263, 264, 265, 262 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xe8007800, 0x100), +	DEFINE_RES_IRQ(263), +	DEFINE_RES_IRQ(264), +	DEFINE_RES_IRQ(265), +	DEFINE_RES_IRQ(262), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xe8008000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 267, 268, 269, 266 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xe8008000, 0x100), +	DEFINE_RES_IRQ(267), +	DEFINE_RES_IRQ(268), +	DEFINE_RES_IRQ(269), +	DEFINE_RES_IRQ(266), +}; +  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase	= 0xe8008800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 271, 272, 273, 270 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xe8008800, 0x100), +	DEFINE_RES_IRQ(271), +	DEFINE_RES_IRQ(272), +	DEFINE_RES_IRQ(273), +	DEFINE_RES_IRQ(270), +}; +  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  };  static struct plat_sci_port scif4_platform_data = { -	.mapbase	= 0xe8009000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 275, 276, 277, 274 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif4_resources[] = { +	DEFINE_RES_MEM(0xe8009000, 0x100), +	DEFINE_RES_IRQ(275), +	DEFINE_RES_IRQ(276), +	DEFINE_RES_IRQ(277), +	DEFINE_RES_IRQ(274), +}; +  static struct platform_device scif4_device = {  	.name		= "sh-sci",  	.id		= 4, +	.resource	= scif4_resources, +	.num_resources	= ARRAY_SIZE(scif4_resources),  	.dev		= {  		.platform_data	= &scif4_platform_data,  	},  };  static struct plat_sci_port scif5_platform_data = { -	.mapbase	= 0xe8009800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 279, 280, 281, 278 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif5_resources[] = { +	DEFINE_RES_MEM(0xe8009800, 0x100), +	DEFINE_RES_IRQ(279), +	DEFINE_RES_IRQ(280), +	DEFINE_RES_IRQ(281), +	DEFINE_RES_IRQ(278), +}; +  static struct platform_device scif5_device = {  	.name		= "sh-sci",  	.id		= 5, +	.resource	= scif5_resources, +	.num_resources	= ARRAY_SIZE(scif5_resources),  	.dev		= {  		.platform_data	= &scif5_platform_data,  	},  };  static struct plat_sci_port scif6_platform_data = { -	.mapbase	= 0xe800a000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 283, 284, 285, 282 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif6_resources[] = { +	DEFINE_RES_MEM(0xe800a000, 0x100), +	DEFINE_RES_IRQ(283), +	DEFINE_RES_IRQ(284), +	DEFINE_RES_IRQ(285), +	DEFINE_RES_IRQ(282), +}; +  static struct platform_device scif6_device = {  	.name		= "sh-sci",  	.id		= 6, +	.resource	= scif6_resources, +	.num_resources	= ARRAY_SIZE(scif6_resources),  	.dev		= {  		.platform_data	= &scif6_platform_data,  	},  };  static struct plat_sci_port scif7_platform_data = { -	.mapbase	= 0xe800a800,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |  			  SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		=  { 287, 288, 289, 286 },  	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif7_resources[] = { +	DEFINE_RES_MEM(0xe800a800, 0x100), +	DEFINE_RES_IRQ(287), +	DEFINE_RES_IRQ(288), +	DEFINE_RES_IRQ(289), +	DEFINE_RES_IRQ(286), +}; +  static struct platform_device scif7_device = {  	.name		= "sh-sci",  	.id		= 7, +	.resource	= scif7_resources, +	.num_resources	= ARRAY_SIZE(scif7_resources),  	.dev		= {  		.platform_data	= &scif7_platform_data,  	},  }; -static struct sh_timer_config cmt0_platform_data = { -	.channel_offset = 0x02, -	.timer_bit = 0, -	.clockevent_rating = 125, -	.clocksource_rating = 0, /* disabled due to code generation issues */ -}; - -static struct resource cmt0_resources[] = { -	[0] = { -		.start	= 0xfffec002, -		.end	= 0xfffec007, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 188, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt0_device = { -	.name		= "sh_cmt", -	.id		= 0, -	.dev = { -		.platform_data	= &cmt0_platform_data, -	}, -	.resource	= cmt0_resources, -	.num_resources	= ARRAY_SIZE(cmt0_resources), -}; - -static struct sh_timer_config cmt1_platform_data = { -	.channel_offset = 0x08, -	.timer_bit = 1, -	.clockevent_rating = 125, -	.clocksource_rating = 0, /* disabled due to code generation issues */ -}; - -static struct resource cmt1_resources[] = { -	[0] = { -		.start	= 0xfffec008, -		.end	= 0xfffec00d, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 189, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt1_device = { -	.name		= "sh_cmt", -	.id		= 1, -	.dev = { -		.platform_data	= &cmt1_platform_data, -	}, -	.resource	= cmt1_resources, -	.num_resources	= ARRAY_SIZE(cmt1_resources), -}; - -static struct sh_timer_config mtu2_0_platform_data = { -	.channel_offset = -0x80, -	.timer_bit = 0, -	.clockevent_rating = 200, +static struct sh_timer_config cmt_platform_data = { +	.channels_mask = 3,  }; -static struct resource mtu2_0_resources[] = { -	[0] = { -		.start	= 0xfffe4300, -		.end	= 0xfffe4326, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 192, -		.flags	= IORESOURCE_IRQ, -	}, +static struct resource cmt_resources[] = { +	DEFINE_RES_MEM(0xfffec000, 0x10), +	DEFINE_RES_IRQ(188), +	DEFINE_RES_IRQ(189),  }; -static struct platform_device mtu2_0_device = { -	.name		= "sh_mtu2", +static struct platform_device cmt_device = { +	.name		= "sh-cmt-16",  	.id		= 0,  	.dev = { -		.platform_data	= &mtu2_0_platform_data, +		.platform_data	= &cmt_platform_data,  	}, -	.resource	= mtu2_0_resources, -	.num_resources	= ARRAY_SIZE(mtu2_0_resources), +	.resource	= cmt_resources, +	.num_resources	= ARRAY_SIZE(cmt_resources),  }; -static struct sh_timer_config mtu2_1_platform_data = { -	.channel_offset = -0x100, -	.timer_bit = 1, -	.clockevent_rating = 200, -}; - -static struct resource mtu2_1_resources[] = { -	[0] = { -		.start	= 0xfffe4380, -		.end	= 0xfffe4390, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 203, -		.flags	= IORESOURCE_IRQ, -	}, +static struct resource mtu2_resources[] = { +	DEFINE_RES_MEM(0xfffe4000, 0x400), +	DEFINE_RES_IRQ_NAMED(192, "tgi0a"), +	DEFINE_RES_IRQ_NAMED(203, "tgi1a"),  }; -static struct platform_device mtu2_1_device = { -	.name		= "sh_mtu2", -	.id		= 1, -	.dev = { -		.platform_data	= &mtu2_1_platform_data, -	}, -	.resource	= mtu2_1_resources, -	.num_resources	= ARRAY_SIZE(mtu2_1_resources), +static struct platform_device mtu2_device = { +	.name		= "sh-mtu2", +	.id		= -1, +	.resource	= mtu2_resources, +	.num_resources	= ARRAY_SIZE(mtu2_resources),  };  static struct resource rtc_resources[] = { @@ -573,10 +548,8 @@ static struct platform_device *sh7269_devices[] __initdata = {  	&scif5_device,  	&scif6_device,  	&scif7_device, -	&cmt0_device, -	&cmt1_device, -	&mtu2_0_device, -	&mtu2_1_device, +	&cmt_device, +	&mtu2_device,  	&rtc_device,  	&r8a66597_usb_host_device,  }; @@ -602,10 +575,8 @@ static struct platform_device *sh7269_early_devices[] __initdata = {  	&scif5_device,  	&scif6_device,  	&scif7_device, -	&cmt0_device, -	&cmt1_device, -	&mtu2_0_device, -	&mtu2_1_device, +	&cmt_device, +	&mtu2_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7705.c b/arch/sh/kernel/cpu/sh3/setup-sh7705.c index 03e4c96f2b1..6a72fd14de2 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh7705.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh7705.c @@ -70,39 +70,47 @@ static DECLARE_INTC_DESC(intc_desc, "sh7705", vectors, NULL,  			 NULL, prio_registers, NULL);  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xa4410000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_TIE | SCSCR_RIE  | SCSCR_TE |  			  SCSCR_RE  | SCSCR_CKE1 | SCSCR_CKE0, -	.scbrr_algo_id	= SCBRR_ALGO_4,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x900)),  	.ops		= &sh770x_sci_port_ops,  	.regtype	= SCIx_SH7705_SCIF_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xa4410000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x900)), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xa4400000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_TIE | SCSCR_RIE | SCSCR_TE | SCSCR_RE, -	.scbrr_algo_id	= SCBRR_ALGO_4,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x880)),  	.ops		= &sh770x_sci_port_ops,  	.regtype	= SCIx_SH7705_SCIF_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xa4400000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x880)), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	}, @@ -135,25 +143,18 @@ static struct platform_device rtc_device = {  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x02, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xfffffe94, -		.end	= 0xfffffe9f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xfffffe90, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu-sh3",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -162,67 +163,10 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0xe, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xfffffea0, -		.end	= 0xfffffeab, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id		= 1, -	.dev = { -		.platform_data	= &tmu1_platform_data, -	}, -	.resource	= tmu1_resources, -	.num_resources	= ARRAY_SIZE(tmu1_resources), -}; - -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1a, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xfffffeac, -		.end	= 0xfffffebb, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; -  static struct platform_device *sh7705_devices[] __initdata = {  	&scif0_device,  	&scif1_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  	&rtc_device,  }; @@ -237,8 +181,6 @@ static struct platform_device *sh7705_early_devices[] __initdata = {  	&scif0_device,  	&scif1_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh3/setup-sh770x.c b/arch/sh/kernel/cpu/sh3/setup-sh770x.c index ba26cd9ce69..9139d14b9c5 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh770x.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh770x.c @@ -109,20 +109,24 @@ static struct platform_device rtc_device = {  };  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xfffffe80,  	.port_reg	= 0xa4000136,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_TE | SCSCR_RE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCI, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x4e0)),  	.ops		= &sh770x_sci_port_ops,  	.regshift	= 1,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xfffffe80, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x4e0)), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	}, @@ -131,19 +135,23 @@ static struct platform_device scif0_device = {      defined(CONFIG_CPU_SUBTYPE_SH7707) || \      defined(CONFIG_CPU_SUBTYPE_SH7709)  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xa4000150,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_TE | SCSCR_RE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x900)),  	.ops		= &sh770x_sci_port_ops,  	.regtype	= SCIx_SH3_SCIF_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xa4000150, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x900)), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	}, @@ -152,20 +160,24 @@ static struct platform_device scif1_device = {  #if defined(CONFIG_CPU_SUBTYPE_SH7707) || \      defined(CONFIG_CPU_SUBTYPE_SH7709)  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xa4000140,  	.port_reg	= SCIx_NOT_SUPPORTED,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_TE | SCSCR_RE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_IRDA, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x880)),  	.ops		= &sh770x_sci_port_ops,  	.regshift	= 1,  }; +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xa4000140, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x880)), +}; +  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	}, @@ -173,25 +185,18 @@ static struct platform_device scif2_device = {  #endif  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x02, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xfffffe94, -		.end	= 0xfffffe9f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xfffffe90, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu-sh3",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -200,61 +205,6 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0xe, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xfffffea0, -		.end	= 0xfffffeab, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id		= 1, -	.dev = { -		.platform_data	= &tmu1_platform_data, -	}, -	.resource	= tmu1_resources, -	.num_resources	= ARRAY_SIZE(tmu1_resources), -}; - -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1a, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xfffffeac, -		.end	= 0xfffffebb, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; -  static struct platform_device *sh770x_devices[] __initdata = {  	&scif0_device,  #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ @@ -267,8 +217,6 @@ static struct platform_device *sh770x_devices[] __initdata = {  	&scif2_device,  #endif  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  	&rtc_device,  }; @@ -291,8 +239,6 @@ static struct platform_device *sh770x_early_devices[] __initdata = {  	&scif2_device,  #endif  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7710.c b/arch/sh/kernel/cpu/sh3/setup-sh7710.c index 93c9c5e24a7..e9ed300dba5 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh7710.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh7710.c @@ -98,61 +98,62 @@ static struct platform_device rtc_device = {  };  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xa4400000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_TE | SCSCR_RE | SCSCR_REIE |  			  SCSCR_CKE1 | SCSCR_CKE0, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x880)), +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xa4400000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x880)),  };  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xa4410000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_TE | SCSCR_RE | SCSCR_REIE |  			  SCSCR_CKE1 | SCSCR_CKE0, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0x900)), +}; + +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xa4410000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x900)),  };  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x02, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xa412fe94, -		.end	= 0xa412fe9f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xa412fe90, 0x28), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu-sh3",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -161,67 +162,10 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0xe, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xa412fea0, -		.end	= 0xa412feab, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id		= 1, -	.dev = { -		.platform_data	= &tmu1_platform_data, -	}, -	.resource	= tmu1_resources, -	.num_resources	= ARRAY_SIZE(tmu1_resources), -}; - -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1a, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xa412feac, -		.end	= 0xa412feb5, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; -  static struct platform_device *sh7710_devices[] __initdata = {  	&scif0_device,  	&scif1_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  	&rtc_device,  }; @@ -236,8 +180,6 @@ static struct platform_device *sh7710_early_devices[] __initdata = {  	&scif0_device,  	&scif1_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7720.c b/arch/sh/kernel/cpu/sh3/setup-sh7720.c index 42d991f632b..84df85a5b80 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh7720.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh7720.c @@ -52,38 +52,46 @@ static struct platform_device rtc_device = {  };  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xa4430000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE, -	.scbrr_algo_id	= SCBRR_ALGO_4,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xc00)),  	.ops		= &sh7720_sci_port_ops,  	.regtype	= SCIx_SH7705_SCIF_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xa4430000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc00)), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xa4438000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE, -	.scbrr_algo_id	= SCBRR_ALGO_4,  	.type		= PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc20)),  	.ops		= &sh7720_sci_port_ops,  	.regtype	= SCIx_SH7705_SCIF_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xa4438000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc20)), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	}, @@ -144,163 +152,38 @@ static struct platform_device usbf_device = {  	.resource	= usbf_resources,  }; -static struct sh_timer_config cmt0_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 0, -	.clockevent_rating = 125, -	.clocksource_rating = 125, +static struct sh_timer_config cmt_platform_data = { +	.channels_mask = 0x1f,  }; -static struct resource cmt0_resources[] = { -	[0] = { -		.start	= 0x044a0010, -		.end	= 0x044a001b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xf00), -		.flags	= IORESOURCE_IRQ, -	}, +static struct resource cmt_resources[] = { +	DEFINE_RES_MEM(0x044a0000, 0x60), +	DEFINE_RES_IRQ(evt2irq(0xf00)),  }; -static struct platform_device cmt0_device = { -	.name		= "sh_cmt", +static struct platform_device cmt_device = { +	.name		= "sh-cmt-32",  	.id		= 0,  	.dev = { -		.platform_data	= &cmt0_platform_data, -	}, -	.resource	= cmt0_resources, -	.num_resources	= ARRAY_SIZE(cmt0_resources), -}; - -static struct sh_timer_config cmt1_platform_data = { -	.channel_offset = 0x20, -	.timer_bit = 1, -}; - -static struct resource cmt1_resources[] = { -	[0] = { -		.start	= 0x044a0020, -		.end	= 0x044a002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xf00), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt1_device = { -	.name		= "sh_cmt", -	.id		= 1, -	.dev = { -		.platform_data	= &cmt1_platform_data, -	}, -	.resource	= cmt1_resources, -	.num_resources	= ARRAY_SIZE(cmt1_resources), -}; - -static struct sh_timer_config cmt2_platform_data = { -	.channel_offset = 0x30, -	.timer_bit = 2, -}; - -static struct resource cmt2_resources[] = { -	[0] = { -		.start	= 0x044a0030, -		.end	= 0x044a003b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xf00), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt2_device = { -	.name		= "sh_cmt", -	.id		= 2, -	.dev = { -		.platform_data	= &cmt2_platform_data, -	}, -	.resource	= cmt2_resources, -	.num_resources	= ARRAY_SIZE(cmt2_resources), -}; - -static struct sh_timer_config cmt3_platform_data = { -	.channel_offset = 0x40, -	.timer_bit = 3, -}; - -static struct resource cmt3_resources[] = { -	[0] = { -		.start	= 0x044a0040, -		.end	= 0x044a004b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xf00), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt3_device = { -	.name		= "sh_cmt", -	.id		= 3, -	.dev = { -		.platform_data	= &cmt3_platform_data, -	}, -	.resource	= cmt3_resources, -	.num_resources	= ARRAY_SIZE(cmt3_resources), -}; - -static struct sh_timer_config cmt4_platform_data = { -	.channel_offset = 0x50, -	.timer_bit = 4, -}; - -static struct resource cmt4_resources[] = { -	[0] = { -		.start	= 0x044a0050, -		.end	= 0x044a005b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xf00), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device cmt4_device = { -	.name		= "sh_cmt", -	.id		= 4, -	.dev = { -		.platform_data	= &cmt4_platform_data, +		.platform_data	= &cmt_platform_data,  	}, -	.resource	= cmt4_resources, -	.num_resources	= ARRAY_SIZE(cmt4_resources), +	.resource	= cmt_resources, +	.num_resources	= ARRAY_SIZE(cmt_resources),  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x02, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xa412fe94, -		.end	= 0xa412fe9f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xa412fe90, 0x28), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu-sh3",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -309,72 +192,11 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0xe, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xa412fea0, -		.end	= 0xa412feab, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id		= 1, -	.dev = { -		.platform_data	= &tmu1_platform_data, -	}, -	.resource	= tmu1_resources, -	.num_resources	= ARRAY_SIZE(tmu1_resources), -}; - -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1a, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xa412feac, -		.end	= 0xa412feb5, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; -  static struct platform_device *sh7720_devices[] __initdata = {  	&scif0_device,  	&scif1_device, -	&cmt0_device, -	&cmt1_device, -	&cmt2_device, -	&cmt3_device, -	&cmt4_device, +	&cmt_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  	&rtc_device,  	&usb_ohci_device,  	&usbf_device, @@ -390,14 +212,8 @@ arch_initcall(sh7720_devices_setup);  static struct platform_device *sh7720_early_devices[] __initdata = {  	&scif0_device,  	&scif1_device, -	&cmt0_device, -	&cmt1_device, -	&cmt2_device, -	&cmt3_device, -	&cmt4_device, +	&cmt_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4/setup-sh4-202.c b/arch/sh/kernel/cpu/sh4/setup-sh4-202.c index 2a5320aa73b..e7a7b3cdf68 100644 --- a/arch/sh/kernel/cpu/sh4/setup-sh4-202.c +++ b/arch/sh/kernel/cpu/sh4/setup-sh4-202.c @@ -17,45 +17,42 @@  #include <linux/io.h>  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xffe80000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= { evt2irq(0x700), -			    evt2irq(0x720), -			    evt2irq(0x760), -			    evt2irq(0x740) }, +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffe80000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x700)), +	DEFINE_RES_IRQ(evt2irq(0x720)), +	DEFINE_RES_IRQ(evt2irq(0x760)), +	DEFINE_RES_IRQ(evt2irq(0x740)),  };  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -64,66 +61,9 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id		= 1, -	.dev = { -		.platform_data	= &tmu1_platform_data, -	}, -	.resource	= tmu1_resources, -	.num_resources	= ARRAY_SIZE(tmu1_resources), -}; - -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; -  static struct platform_device *sh4202_devices[] __initdata = {  	&scif0_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  static int __init sh4202_devices_setup(void) @@ -136,8 +76,6 @@ arch_initcall(sh4202_devices_setup);  static struct platform_device *sh4202_early_devices[] __initdata = {  	&scif0_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7750.c b/arch/sh/kernel/cpu/sh4/setup-sh7750.c index 04a45512596..5f08c59b9f3 100644 --- a/arch/sh/kernel/cpu/sh4/setup-sh7750.c +++ b/arch/sh/kernel/cpu/sh4/setup-sh7750.c @@ -38,61 +38,62 @@ static struct platform_device rtc_device = {  };  static struct plat_sci_port sci_platform_data = { -	.mapbase	= 0xffe00000,  	.port_reg	= 0xffe0001C,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_TE | SCSCR_RE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCI, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x4e0)),  	.regshift	= 2,  }; +static struct resource sci_resources[] = { +	DEFINE_RES_MEM(0xffe00000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x4e0)), +}; +  static struct platform_device sci_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= sci_resources, +	.num_resources	= ARRAY_SIZE(sci_resources),  	.dev		= {  		.platform_data	= &sci_platform_data,  	},  };  static struct plat_sci_port scif_platform_data = { -	.mapbase	= 0xffe80000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_TE | SCSCR_RE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x700)), +}; + +static struct resource scif_resources[] = { +	DEFINE_RES_MEM(0xffe80000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x700)),  };  static struct platform_device scif_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif_resources, +	.num_resources	= ARRAY_SIZE(scif_resources),  	.dev		= {  		.platform_data	= &scif_platform_data,  	},  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -101,26 +102,23 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; +/* SH7750R, SH7751 and SH7751R all have two extra timer channels */ +#if defined(CONFIG_CPU_SUBTYPE_SH7750R) || \ +	defined(CONFIG_CPU_SUBTYPE_SH7751) || \ +	defined(CONFIG_CPU_SUBTYPE_SH7751R) +  static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, +	.channels_mask = 3,  };  static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xfe100000, 0x20), +	DEFINE_RES_IRQ(evt2irq(0xb00)), +	DEFINE_RES_IRQ(evt2irq(0xb80)),  };  static struct platform_device tmu1_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 1,  	.dev = {  		.platform_data	= &tmu1_platform_data, @@ -129,104 +127,15 @@ static struct platform_device tmu1_device = {  	.num_resources	= ARRAY_SIZE(tmu1_resources),  }; -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; - -/* SH7750R, SH7751 and SH7751R all have two extra timer channels */ -#if defined(CONFIG_CPU_SUBTYPE_SH7750R) || \ -	defined(CONFIG_CPU_SUBTYPE_SH7751) || \ -	defined(CONFIG_CPU_SUBTYPE_SH7751R) - -static struct sh_timer_config tmu3_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -}; - -static struct resource tmu3_resources[] = { -	[0] = { -		.start	= 0xfe100008, -		.end	= 0xfe100013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xb00), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu3_device = { -	.name		= "sh_tmu", -	.id		= 3, -	.dev = { -		.platform_data	= &tmu3_platform_data, -	}, -	.resource	= tmu3_resources, -	.num_resources	= ARRAY_SIZE(tmu3_resources), -}; - -static struct sh_timer_config tmu4_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu4_resources[] = { -	[0] = { -		.start	= 0xfe100014, -		.end	= 0xfe10001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xb80), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu4_device = { -	.name		= "sh_tmu", -	.id		= 4, -	.dev = { -		.platform_data	= &tmu4_platform_data, -	}, -	.resource	= tmu4_resources, -	.num_resources	= ARRAY_SIZE(tmu4_resources), -}; -  #endif  static struct platform_device *sh7750_devices[] __initdata = {  	&rtc_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  #if defined(CONFIG_CPU_SUBTYPE_SH7750R) || \  	defined(CONFIG_CPU_SUBTYPE_SH7751) || \  	defined(CONFIG_CPU_SUBTYPE_SH7751R) -	&tmu3_device, -	&tmu4_device, +	&tmu1_device,  #endif  }; @@ -246,13 +155,10 @@ arch_initcall(sh7750_devices_setup);  static struct platform_device *sh7750_early_devices[] __initdata = {  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  #if defined(CONFIG_CPU_SUBTYPE_SH7750R) || \  	defined(CONFIG_CPU_SUBTYPE_SH7751) || \  	defined(CONFIG_CPU_SUBTYPE_SH7751R) -	&tmu3_device, -	&tmu4_device, +	&tmu1_device,  #endif  }; diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7760.c b/arch/sh/kernel/cpu/sh4/setup-sh7760.c index 98e075ada44..973b736b3b9 100644 --- a/arch/sh/kernel/cpu/sh4/setup-sh7760.c +++ b/arch/sh/kernel/cpu/sh4/setup-sh7760.c @@ -128,108 +128,117 @@ static DECLARE_INTC_DESC(intc_desc_irq, "sh7760-irq", vectors_irq, groups,  			 mask_registers, prio_registers, NULL);  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xfe600000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= { evt2irq(0x880), -			    evt2irq(0x8a0), -			    evt2irq(0x8e0), -			    evt2irq(0x8c0) },  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xfe600000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x880)), +	DEFINE_RES_IRQ(evt2irq(0x8a0)), +	DEFINE_RES_IRQ(evt2irq(0x8e0)), +	DEFINE_RES_IRQ(evt2irq(0x8c0)), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xfe610000,  	.flags		= UPF_BOOT_AUTOCONF,  	.type		= PORT_SCIF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2, -	.irqs		= { evt2irq(0xb00), -			    evt2irq(0xb20), -			    evt2irq(0xb60), -			    evt2irq(0xb40) },  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xfe610000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xb00)), +	DEFINE_RES_IRQ(evt2irq(0xb20)), +	DEFINE_RES_IRQ(evt2irq(0xb60)), +	DEFINE_RES_IRQ(evt2irq(0xb40)), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xfe620000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= { evt2irq(0xb80), -			    evt2irq(0xba0), -			    evt2irq(0xbe0), -			    evt2irq(0xbc0) },  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xfe620000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xb80)), +	DEFINE_RES_IRQ(evt2irq(0xba0)), +	DEFINE_RES_IRQ(evt2irq(0xbe0)), +	DEFINE_RES_IRQ(evt2irq(0xbc0)), +}; +  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase	= 0xfe480000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCI, -	.irqs		= { evt2irq(0xc00), -			    evt2irq(0xc20), -			    evt2irq(0xc40), },  	.regshift	= 2,  }; +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xfe480000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc00)), +	DEFINE_RES_IRQ(evt2irq(0xc20)), +	DEFINE_RES_IRQ(evt2irq(0xc40)), +}; +  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -238,61 +247,6 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id		= 1, -	.dev = { -		.platform_data	= &tmu1_platform_data, -	}, -	.resource	= tmu1_resources, -	.num_resources	= ARRAY_SIZE(tmu1_resources), -}; - -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; -  static struct platform_device *sh7760_devices[] __initdata = {  	&scif0_device, @@ -300,8 +254,6 @@ static struct platform_device *sh7760_devices[] __initdata = {  	&scif2_device,  	&scif3_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  static int __init sh7760_devices_setup(void) @@ -317,8 +269,6 @@ static struct platform_device *sh7760_early_devices[] __initdata = {  	&scif2_device,  	&scif3_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7343.c b/arch/sh/kernel/cpu/sh4a/clock-sh7343.c index 53638e231cd..9edc06c02dc 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7343.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7343.c @@ -227,7 +227,7 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("hudi0", &mstp_clks[MSTP019]),  	CLKDEV_CON_ID("ubc0", &mstp_clks[MSTP017]),  	CLKDEV_CON_ID("tmu_fck", &mstp_clks[MSTP015]), -	CLKDEV_CON_ID("cmt_fck", &mstp_clks[MSTP014]), +	CLKDEV_ICK_ID("fck", "sh-cmt-32.0", &mstp_clks[MSTP014]),  	CLKDEV_CON_ID("rwdt0", &mstp_clks[MSTP013]),  	CLKDEV_CON_ID("mfi0", &mstp_clks[MSTP011]),  	CLKDEV_CON_ID("flctl0", &mstp_clks[MSTP010]), diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7366.c b/arch/sh/kernel/cpu/sh4a/clock-sh7366.c index 22e485d1990..955b9add781 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7366.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7366.c @@ -225,7 +225,7 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("hudi0", &mstp_clks[MSTP019]),  	CLKDEV_CON_ID("ubc0", &mstp_clks[MSTP017]),  	CLKDEV_CON_ID("tmu_fck", &mstp_clks[MSTP015]), -	CLKDEV_CON_ID("cmt_fck", &mstp_clks[MSTP014]), +	CLKDEV_ICK_ID("fck", "sh-cmt-32.0", &mstp_clks[MSTP014]),  	CLKDEV_CON_ID("rwdt0", &mstp_clks[MSTP013]),  	CLKDEV_CON_ID("mfi0", &mstp_clks[MSTP011]),  	CLKDEV_CON_ID("flctl0", &mstp_clks[MSTP010]), diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7722.c b/arch/sh/kernel/cpu/sh4a/clock-sh7722.c index c4cb740e4d1..8f07a1a3869 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7722.c @@ -203,11 +203,9 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("uram0", &mstp_clks[HWBLK_URAM]),  	CLKDEV_CON_ID("xymem0", &mstp_clks[HWBLK_XYMEM]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[HWBLK_TMU]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[HWBLK_TMU]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.2", &mstp_clks[HWBLK_TMU]), +	CLKDEV_ICK_ID("fck", "sh-tmu.0", &mstp_clks[HWBLK_TMU]), -	CLKDEV_CON_ID("cmt_fck", &mstp_clks[HWBLK_CMT]), +	CLKDEV_ICK_ID("fck", "sh-cmt-32.0", &mstp_clks[HWBLK_CMT]),  	CLKDEV_DEV_ID("sh-wdt.0", &mstp_clks[HWBLK_RWDT]),  	CLKDEV_CON_ID("flctl0", &mstp_clks[HWBLK_FLCTL]), diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7723.c b/arch/sh/kernel/cpu/sh4a/clock-sh7723.c index 37c41c7747a..ccbcab550df 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7723.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7723.c @@ -236,7 +236,7 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("sh0", &mstp_clks[HWBLK_SHYWAY]),  	CLKDEV_CON_ID("hudi0", &mstp_clks[HWBLK_HUDI]),  	CLKDEV_CON_ID("ubc0", &mstp_clks[HWBLK_UBC]), -	CLKDEV_CON_ID("cmt_fck", &mstp_clks[HWBLK_CMT]), +	CLKDEV_ICK_ID("fck", "sh-cmt-32.0", &mstp_clks[HWBLK_CMT]),  	CLKDEV_DEV_ID("sh-wdt.0", &mstp_clks[HWBLK_RWDT]),  	CLKDEV_DEV_ID("sh-dma-engine.1", &mstp_clks[HWBLK_DMAC1]),  	CLKDEV_CON_ID("flctl0", &mstp_clks[HWBLK_FLCTL]), @@ -264,12 +264,8 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("veu0", &mstp_clks[HWBLK_VEU2H0]),  	CLKDEV_CON_ID("vpu0", &mstp_clks[HWBLK_VPU]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[HWBLK_TMU0]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[HWBLK_TMU0]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.2", &mstp_clks[HWBLK_TMU0]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.3", &mstp_clks[HWBLK_TMU1]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.4", &mstp_clks[HWBLK_TMU1]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.5", &mstp_clks[HWBLK_TMU1]), +	CLKDEV_ICK_ID("fck", "sh-tmu.0", &mstp_clks[HWBLK_TMU0]), +	CLKDEV_ICK_ID("fck", "sh-tmu.1", &mstp_clks[HWBLK_TMU1]),  	CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[HWBLK_SCIF0]),  	CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[HWBLK_SCIF1]), diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7724.c b/arch/sh/kernel/cpu/sh4a/clock-sh7724.c index 0128af3399b..f579dd52819 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7724.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7724.c @@ -304,17 +304,13 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("hudi0", &mstp_clks[HWBLK_HUDI]),  	CLKDEV_CON_ID("ubc0", &mstp_clks[HWBLK_UBC]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[HWBLK_TMU0]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[HWBLK_TMU0]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.2", &mstp_clks[HWBLK_TMU0]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.3", &mstp_clks[HWBLK_TMU1]), +	CLKDEV_ICK_ID("fck", "sh-tmu.0", &mstp_clks[HWBLK_TMU0]), +	CLKDEV_ICK_ID("fck", "sh-tmu.1", &mstp_clks[HWBLK_TMU1]), -	CLKDEV_CON_ID("cmt_fck", &mstp_clks[HWBLK_CMT]), +	CLKDEV_ICK_ID("fck", "sh-cmt-16.0", &mstp_clks[HWBLK_CMT]),  	CLKDEV_DEV_ID("sh-wdt.0", &mstp_clks[HWBLK_RWDT]),  	CLKDEV_DEV_ID("sh-dma-engine.1", &mstp_clks[HWBLK_DMAC1]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.4", &mstp_clks[HWBLK_TMU1]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.5", &mstp_clks[HWBLK_TMU1]),  	CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[HWBLK_SCIF0]),  	CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[HWBLK_SCIF1]),  	CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[HWBLK_SCIF2]), diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7734.c b/arch/sh/kernel/cpu/sh4a/clock-sh7734.c index ed9501519ab..1fdf1ee672d 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7734.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7734.c @@ -201,15 +201,9 @@ static struct clk_lookup lookups[] = {  	CLKDEV_ICK_ID("sci_fck", "sh-sci.4", &mstp_clks[MSTP022]),  	CLKDEV_ICK_ID("sci_fck", "sh-sci.5", &mstp_clks[MSTP021]),  	CLKDEV_CON_ID("hscif", &mstp_clks[MSTP019]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[MSTP016]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[MSTP016]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.2", &mstp_clks[MSTP016]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.3", &mstp_clks[MSTP015]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.4", &mstp_clks[MSTP015]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.5", &mstp_clks[MSTP015]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.6", &mstp_clks[MSTP014]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.7", &mstp_clks[MSTP014]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.8", &mstp_clks[MSTP014]), +	CLKDEV_ICK_ID("fck", "sh-tmu.0", &mstp_clks[MSTP016]), +	CLKDEV_ICK_ID("fck", "sh-tmu.1", &mstp_clks[MSTP015]), +	CLKDEV_ICK_ID("fck", "sh-tmu.2", &mstp_clks[MSTP014]),  	CLKDEV_CON_ID("ssi0", &mstp_clks[MSTP012]),  	CLKDEV_CON_ID("ssi1", &mstp_clks[MSTP011]),  	CLKDEV_CON_ID("ssi2", &mstp_clks[MSTP010]), diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7757.c b/arch/sh/kernel/cpu/sh4a/clock-sh7757.c index e84a43229b9..9a28fdb3638 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7757.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7757.c @@ -123,8 +123,8 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("riic6", &mstp_clks[MSTP000]),  	CLKDEV_CON_ID("riic7", &mstp_clks[MSTP000]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[MSTP113]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[MSTP114]), +	CLKDEV_ICK_ID("fck", "sh-tmu.0", &mstp_clks[MSTP113]), +	CLKDEV_ICK_ID("fck", "sh-tmu.1", &mstp_clks[MSTP114]),  	CLKDEV_ICK_ID("sci_fck", "sh-sci.2", &mstp_clks[MSTP112]),  	CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[MSTP111]),  	CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[MSTP110]), @@ -132,7 +132,7 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("usb_fck", &mstp_clks[MSTP103]),  	CLKDEV_DEV_ID("renesas_usbhs.0", &mstp_clks[MSTP102]),  	CLKDEV_CON_ID("mmc0", &mstp_clks[MSTP220]), -	CLKDEV_CON_ID("rspi2", &mstp_clks[MSTP127]), +	CLKDEV_DEV_ID("rspi.2", &mstp_clks[MSTP127]),  };  int __init arch_clk_init(void) diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c index 1c83788db76..17d0ea55a5a 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c @@ -146,12 +146,8 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("mmcif_fck", &mstp_clks[MSTP013]),  	CLKDEV_CON_ID("flctl_fck", &mstp_clks[MSTP012]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[MSTP008]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[MSTP008]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.2", &mstp_clks[MSTP008]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.3", &mstp_clks[MSTP009]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.4", &mstp_clks[MSTP009]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.5", &mstp_clks[MSTP009]), +	CLKDEV_ICK_ID("fck", "sh-tmu.0", &mstp_clks[MSTP008]), +	CLKDEV_ICK_ID("fck", "sh-tmu.1", &mstp_clks[MSTP009]),  	CLKDEV_CON_ID("siof_fck", &mstp_clks[MSTP003]),  	CLKDEV_CON_ID("hspi_fck", &mstp_clks[MSTP002]), diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7786.c b/arch/sh/kernel/cpu/sh4a/clock-sh7786.c index 8bba6f15902..bec2a83f1ba 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7786.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7786.c @@ -155,18 +155,10 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("i2c1_fck", &mstp_clks[MSTP015]),  	CLKDEV_CON_ID("i2c0_fck", &mstp_clks[MSTP014]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[MSTP008]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[MSTP008]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.2", &mstp_clks[MSTP008]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.3", &mstp_clks[MSTP009]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.4", &mstp_clks[MSTP009]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.5", &mstp_clks[MSTP009]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.6", &mstp_clks[MSTP010]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.7", &mstp_clks[MSTP010]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.8", &mstp_clks[MSTP010]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.9", &mstp_clks[MSTP011]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.10", &mstp_clks[MSTP011]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.11", &mstp_clks[MSTP011]), +	CLKDEV_ICK_ID("fck", "sh-tmu.0", &mstp_clks[MSTP008]), +	CLKDEV_ICK_ID("fck", "sh-tmu.1", &mstp_clks[MSTP009]), +	CLKDEV_ICK_ID("fck", "sh-tmu.2", &mstp_clks[MSTP010]), +	CLKDEV_ICK_ID("fck", "sh-tmu.3", &mstp_clks[MSTP011]),  	CLKDEV_CON_ID("sdif1_fck", &mstp_clks[MSTP005]),  	CLKDEV_CON_ID("sdif0_fck", &mstp_clks[MSTP004]), diff --git a/arch/sh/kernel/cpu/sh4a/clock-shx3.c b/arch/sh/kernel/cpu/sh4a/clock-shx3.c index a9422dab0ce..9a49a44f6f9 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-shx3.c +++ b/arch/sh/kernel/cpu/sh4a/clock-shx3.c @@ -124,12 +124,8 @@ static struct clk_lookup lookups[] = {  	CLKDEV_CON_ID("fe1_fck", &mstp_clks[MSTP001]),  	CLKDEV_CON_ID("fe0_fck", &mstp_clks[MSTP000]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[MSTP008]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[MSTP008]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.2", &mstp_clks[MSTP008]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.3", &mstp_clks[MSTP009]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.4", &mstp_clks[MSTP009]), -	CLKDEV_ICK_ID("tmu_fck", "sh_tmu.5", &mstp_clks[MSTP009]), +	CLKDEV_ICK_ID("fck", "sh-tmu.0", &mstp_clks[MSTP008]), +	CLKDEV_ICK_ID("fck", "sh-tmu.1", &mstp_clks[MSTP009]),  	CLKDEV_CON_ID("hudi_fck", &mstp_clks[MSTP119]),  	CLKDEV_CON_ID("dmac_11_6_fck", &mstp_clks[MSTP105]), diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c index b91ea8300a3..ceb3dedad98 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c @@ -18,68 +18,84 @@  /* Serial */  static struct plat_sci_port scif0_platform_data = { -	.mapbase        = 0xffe00000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc00)), +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffe00000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc00)),  };  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase        = 0xffe10000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc20)), +}; + +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xffe10000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc20)),  };  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase        = 0xffe20000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc40)), +}; + +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xffe20000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc40)),  };  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase        = 0xffe30000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc60)), +}; + +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xffe30000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc60)),  };  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	}, @@ -212,26 +228,16 @@ static struct platform_device jpu_device = {  };  static struct sh_timer_config cmt_platform_data = { -	.channel_offset = 0x60, -	.timer_bit = 5, -	.clockevent_rating = 125, -	.clocksource_rating = 200, +	.channels_mask = 0x20,  };  static struct resource cmt_resources[] = { -	[0] = { -		.start	= 0x044a0060, -		.end	= 0x044a006b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xf00), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0x044a0000, 0x70), +	DEFINE_RES_IRQ(evt2irq(0xf00)),  };  static struct platform_device cmt_device = { -	.name		= "sh_cmt", +	.name		= "sh-cmt-32",  	.id		= 0,  	.dev = {  		.platform_data	= &cmt_platform_data, @@ -241,25 +247,18 @@ static struct platform_device cmt_device = {  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -268,61 +267,6 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id		= 1, -	.dev = { -		.platform_data	= &tmu1_platform_data, -	}, -	.resource	= tmu1_resources, -	.num_resources	= ARRAY_SIZE(tmu1_resources), -}; - -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; -  static struct platform_device *sh7343_devices[] __initdata = {  	&scif0_device,  	&scif1_device, @@ -330,8 +274,6 @@ static struct platform_device *sh7343_devices[] __initdata = {  	&scif3_device,  	&cmt_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  	&iic0_device,  	&iic1_device,  	&vpu_device, @@ -357,8 +299,6 @@ static struct platform_device *sh7343_early_devices[] __initdata = {  	&scif3_device,  	&cmt_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c index 0bd09d51419..f75f6734313 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c @@ -20,18 +20,22 @@  #include <asm/clock.h>  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xffe00000,  	.port_reg	= 0xa405013e,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xc00)), +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffe00000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc00)),  };  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	}, @@ -172,26 +176,16 @@ static struct platform_device veu1_device = {  };  static struct sh_timer_config cmt_platform_data = { -	.channel_offset = 0x60, -	.timer_bit = 5, -	.clockevent_rating = 125, -	.clocksource_rating = 200, +	.channels_mask = 0x20,  };  static struct resource cmt_resources[] = { -	[0] = { -		.start	= 0x044a0060, -		.end	= 0x044a006b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xf00), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0x044a0000, 0x70), +	DEFINE_RES_IRQ(evt2irq(0xf00)),  };  static struct platform_device cmt_device = { -	.name		= "sh_cmt", +	.name		= "sh-cmt-32",  	.id		= 0,  	.dev = {  		.platform_data	= &cmt_platform_data, @@ -201,25 +195,18 @@ static struct platform_device cmt_device = {  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 16, -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -228,67 +215,10 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id		= 1, -	.dev = { -		.platform_data	= &tmu1_platform_data, -	}, -	.resource	= tmu1_resources, -	.num_resources	= ARRAY_SIZE(tmu1_resources), -}; - -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; -  static struct platform_device *sh7366_devices[] __initdata = {  	&scif0_device,  	&cmt_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  	&iic_device,  	&usb_host_device,  	&vpu_device, @@ -311,8 +241,6 @@ static struct platform_device *sh7366_early_devices[] __initdata = {  	&scif0_device,  	&cmt_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c index 6a868b091c2..57f83a92a50 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c @@ -179,57 +179,69 @@ struct platform_device dma_device = {  /* Serial */  static struct plat_sci_port scif0_platform_data = { -	.mapbase        = 0xffe00000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc00)),  	.ops		= &sh7722_sci_port_ops,  	.regtype	= SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffe00000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc00)), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase        = 0xffe10000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc20)),  	.ops		= &sh7722_sci_port_ops,  	.regtype	= SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xffe10000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc20)), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase        = 0xffe20000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc40)),  	.ops		= &sh7722_sci_port_ops,  	.regtype	= SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE,  }; +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xffe20000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc40)), +}; +  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	}, @@ -401,26 +413,16 @@ static struct platform_device jpu_device = {  };  static struct sh_timer_config cmt_platform_data = { -	.channel_offset = 0x60, -	.timer_bit = 5, -	.clockevent_rating = 125, -	.clocksource_rating = 125, +	.channels_mask = 0x20,  };  static struct resource cmt_resources[] = { -	[0] = { -		.start	= 0x044a0060, -		.end	= 0x044a006b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xf00), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0x044a0000, 0x70), +	DEFINE_RES_IRQ(evt2irq(0xf00)),  };  static struct platform_device cmt_device = { -	.name		= "sh_cmt", +	.name		= "sh-cmt-32",  	.id		= 0,  	.dev = {  		.platform_data	= &cmt_platform_data, @@ -430,25 +432,18 @@ static struct platform_device cmt_device = {  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -457,61 +452,6 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id		= 1, -	.dev = { -		.platform_data	= &tmu1_platform_data, -	}, -	.resource	= tmu1_resources, -	.num_resources	= ARRAY_SIZE(tmu1_resources), -}; - -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= 18, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; -  static struct siu_platform siu_platform_data = {  	.dma_slave_tx_a	= SHDMA_SLAVE_SIUA_TX,  	.dma_slave_rx_a	= SHDMA_SLAVE_SIUA_RX, @@ -547,8 +487,6 @@ static struct platform_device *sh7722_devices[] __initdata = {  	&scif2_device,  	&cmt_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  	&rtc_device,  	&usbf_device,  	&iic_device, @@ -576,8 +514,6 @@ static struct platform_device *sh7722_early_devices[] __initdata = {  	&scif2_device,  	&cmt_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c index 28d6fd835fe..3533b56dd46 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c @@ -23,111 +23,138 @@  /* Serial */  static struct plat_sci_port scif0_platform_data = { -	.mapbase        = 0xffe00000,  	.port_reg	= 0xa4050160,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc00)),  	.regtype	= SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffe00000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc00)), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase        = 0xffe10000,  	.port_reg	= SCIx_NOT_SUPPORTED,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc20)),  	.regtype	= SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xffe10000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc20)), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase        = 0xffe20000,  	.port_reg	= SCIx_NOT_SUPPORTED,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc40)),  	.regtype	= SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE,  }; +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xffe20000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc40)), +}; +  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase        = 0xa4e30000,  	.flags          = UPF_BOOT_AUTOCONF,  	.port_reg	= SCIx_NOT_SUPPORTED,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_3, +	.sampling_rate	= 8,  	.type           = PORT_SCIFA, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0x900)), +}; + +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xa4e30000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x900)),  };  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  };  static struct plat_sci_port scif4_platform_data = { -	.mapbase        = 0xa4e40000,  	.port_reg	= SCIx_NOT_SUPPORTED,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_3, +	.sampling_rate	= 8,  	.type           = PORT_SCIFA, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xd00)), +}; + +static struct resource scif4_resources[] = { +	DEFINE_RES_MEM(0xa4e40000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xd00)),  };  static struct platform_device scif4_device = {  	.name		= "sh-sci",  	.id		= 4, +	.resource	= scif4_resources, +	.num_resources	= ARRAY_SIZE(scif4_resources),  	.dev		= {  		.platform_data	= &scif4_platform_data,  	},  };  static struct plat_sci_port scif5_platform_data = { -	.mapbase        = 0xa4e50000,  	.port_reg	= SCIx_NOT_SUPPORTED,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_3, +	.sampling_rate	= 8,  	.type           = PORT_SCIFA, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xfa0)), +}; + +static struct resource scif5_resources[] = { +	DEFINE_RES_MEM(0xa4e50000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xfa0)),  };  static struct platform_device scif5_device = {  	.name		= "sh-sci",  	.id		= 5, +	.resource	= scif5_resources, +	.num_resources	= ARRAY_SIZE(scif5_resources),  	.dev		= {  		.platform_data	= &scif5_platform_data,  	}, @@ -218,26 +245,16 @@ static struct platform_device veu1_device = {  };  static struct sh_timer_config cmt_platform_data = { -	.channel_offset = 0x60, -	.timer_bit = 5, -	.clockevent_rating = 125, -	.clocksource_rating = 125, +	.channels_mask = 0x20,  };  static struct resource cmt_resources[] = { -	[0] = { -		.start	= 0x044a0060, -		.end	= 0x044a006b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xf00), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0x044a0000, 0x70), +	DEFINE_RES_IRQ(evt2irq(0xf00)),  };  static struct platform_device cmt_device = { -	.name		= "sh_cmt", +	.name		= "sh-cmt-32",  	.id		= 0,  	.dev = {  		.platform_data	= &cmt_platform_data, @@ -247,25 +264,18 @@ static struct platform_device cmt_device = {  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -275,25 +285,18 @@ static struct platform_device tmu0_device = {  };  static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd90000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x920)), +	DEFINE_RES_IRQ(evt2irq(0x940)), +	DEFINE_RES_IRQ(evt2irq(0x960)),  };  static struct platform_device tmu1_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 1,  	.dev = {  		.platform_data	= &tmu1_platform_data, @@ -302,114 +305,6 @@ static struct platform_device tmu1_device = {  	.num_resources	= ARRAY_SIZE(tmu1_resources),  }; -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; - -static struct sh_timer_config tmu3_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -}; - -static struct resource tmu3_resources[] = { -	[0] = { -		.start	= 0xffd90008, -		.end	= 0xffd90013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x920), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu3_device = { -	.name		= "sh_tmu", -	.id		= 3, -	.dev = { -		.platform_data	= &tmu3_platform_data, -	}, -	.resource	= tmu3_resources, -	.num_resources	= ARRAY_SIZE(tmu3_resources), -}; - -static struct sh_timer_config tmu4_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu4_resources[] = { -	[0] = { -		.start	= 0xffd90014, -		.end	= 0xffd9001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x940), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu4_device = { -	.name		= "sh_tmu", -	.id		= 4, -	.dev = { -		.platform_data	= &tmu4_platform_data, -	}, -	.resource	= tmu4_resources, -	.num_resources	= ARRAY_SIZE(tmu4_resources), -}; - -static struct sh_timer_config tmu5_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu5_resources[] = { -	[0] = { -		.start	= 0xffd90020, -		.end	= 0xffd9002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x920), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu5_device = { -	.name		= "sh_tmu", -	.id		= 5, -	.dev = { -		.platform_data	= &tmu5_platform_data, -	}, -	.resource	= tmu5_resources, -	.num_resources	= ARRAY_SIZE(tmu5_resources), -}; -  static struct resource rtc_resources[] = {  	[0] = {  		.start	= 0xa465fec0, @@ -500,10 +395,6 @@ static struct platform_device *sh7723_devices[] __initdata = {  	&cmt_device,  	&tmu0_device,  	&tmu1_device, -	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device,  	&rtc_device,  	&iic_device,  	&sh7723_usb_host_device, @@ -533,10 +424,6 @@ static struct platform_device *sh7723_early_devices[] __initdata = {  	&cmt_device,  	&tmu0_device,  	&tmu1_device, -	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c index 26b74c2f949..b9e84b1d3aa 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c @@ -290,111 +290,138 @@ static struct platform_device dma1_device = {  /* Serial */  static struct plat_sci_port scif0_platform_data = { -	.mapbase        = 0xffe00000,  	.port_reg	= SCIx_NOT_SUPPORTED,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc00)),  	.regtype	= SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffe00000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc00)), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase        = 0xffe10000,  	.port_reg	= SCIx_NOT_SUPPORTED,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc20)),  	.regtype	= SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xffe10000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc20)), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase        = 0xffe20000,  	.port_reg	= SCIx_NOT_SUPPORTED,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xc40)),  	.regtype	= SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE,  }; +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xffe20000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xc40)), +}; +  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase        = 0xa4e30000,  	.port_reg	= SCIx_NOT_SUPPORTED,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE, -	.scbrr_algo_id	= SCBRR_ALGO_3, +	.sampling_rate	= 8,  	.type           = PORT_SCIFA, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0x900)), +}; + +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xa4e30000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x900)),  };  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  };  static struct plat_sci_port scif4_platform_data = { -	.mapbase        = 0xa4e40000,  	.port_reg	= SCIx_NOT_SUPPORTED,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE, -	.scbrr_algo_id	= SCBRR_ALGO_3, +	.sampling_rate	= 8,  	.type           = PORT_SCIFA, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xd00)), +}; + +static struct resource scif4_resources[] = { +	DEFINE_RES_MEM(0xa4e40000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xd00)),  };  static struct platform_device scif4_device = {  	.name		= "sh-sci",  	.id		= 4, +	.resource	= scif4_resources, +	.num_resources	= ARRAY_SIZE(scif4_resources),  	.dev		= {  		.platform_data	= &scif4_platform_data,  	},  };  static struct plat_sci_port scif5_platform_data = { -	.mapbase        = 0xa4e50000,  	.port_reg	= SCIx_NOT_SUPPORTED,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE, -	.scbrr_algo_id	= SCBRR_ALGO_3, +	.sampling_rate	= 8,  	.type           = PORT_SCIFA, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0xfa0)), +}; + +static struct resource scif5_resources[] = { +	DEFINE_RES_MEM(0xa4e50000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xfa0)),  };  static struct platform_device scif5_device = {  	.name		= "sh-sci",  	.id		= 5, +	.resource	= scif5_resources, +	.num_resources	= ARRAY_SIZE(scif5_resources),  	.dev		= {  		.platform_data	= &scif5_platform_data,  	}, @@ -621,26 +648,16 @@ static struct platform_device beu1_device = {  };  static struct sh_timer_config cmt_platform_data = { -	.channel_offset = 0x60, -	.timer_bit = 5, -	.clockevent_rating = 125, -	.clocksource_rating = 200, +	.channels_mask = 0x20,  };  static struct resource cmt_resources[] = { -	[0] = { -		.start	= 0x044a0060, -		.end	= 0x044a006b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xf00), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0x044a0000, 0x70), +	DEFINE_RES_IRQ(evt2irq(0xf00)),  };  static struct platform_device cmt_device = { -	.name		= "sh_cmt", +	.name		= "sh-cmt-32",  	.id		= 0,  	.dev = {  		.platform_data	= &cmt_platform_data, @@ -650,25 +667,18 @@ static struct platform_device cmt_device = {  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -678,25 +688,18 @@ static struct platform_device tmu0_device = {  };  static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd90000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x920)), +	DEFINE_RES_IRQ(evt2irq(0x940)), +	DEFINE_RES_IRQ(evt2irq(0x960)),  };  static struct platform_device tmu1_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 1,  	.dev = {  		.platform_data	= &tmu1_platform_data, @@ -705,115 +708,6 @@ static struct platform_device tmu1_device = {  	.num_resources	= ARRAY_SIZE(tmu1_resources),  }; -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; - - -static struct sh_timer_config tmu3_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -}; - -static struct resource tmu3_resources[] = { -	[0] = { -		.start	= 0xffd90008, -		.end	= 0xffd90013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x920), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu3_device = { -	.name		= "sh_tmu", -	.id		= 3, -	.dev = { -		.platform_data	= &tmu3_platform_data, -	}, -	.resource	= tmu3_resources, -	.num_resources	= ARRAY_SIZE(tmu3_resources), -}; - -static struct sh_timer_config tmu4_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu4_resources[] = { -	[0] = { -		.start	= 0xffd90014, -		.end	= 0xffd9001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x940), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu4_device = { -	.name		= "sh_tmu", -	.id		= 4, -	.dev = { -		.platform_data	= &tmu4_platform_data, -	}, -	.resource	= tmu4_resources, -	.num_resources	= ARRAY_SIZE(tmu4_resources), -}; - -static struct sh_timer_config tmu5_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu5_resources[] = { -	[0] = { -		.start	= 0xffd90020, -		.end	= 0xffd9002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x920), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu5_device = { -	.name		= "sh_tmu", -	.id		= 5, -	.dev = { -		.platform_data	= &tmu5_platform_data, -	}, -	.resource	= tmu5_resources, -	.num_resources	= ARRAY_SIZE(tmu5_resources), -}; -  /* JPU */  static struct uio_info jpu_platform_data = {  	.name = "JPU", @@ -911,10 +805,6 @@ static struct platform_device *sh7724_devices[] __initdata = {  	&cmt_device,  	&tmu0_device,  	&tmu1_device, -	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device,  	&dma0_device,  	&dma1_device,  	&rtc_device, @@ -954,10 +844,6 @@ static struct platform_device *sh7724_early_devices[] __initdata = {  	&cmt_device,  	&tmu0_device,  	&tmu1_device, -	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7734.c b/arch/sh/kernel/cpu/sh4a/setup-sh7734.c index f799971d453..f617bcb734d 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7734.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7734.c @@ -25,108 +25,132 @@  /* SCIF */  static struct plat_sci_port scif0_platform_data = { -	.mapbase        = 0xFFE40000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr          = SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id  = SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0x8C0)),  	.regtype        = SCIx_SH4_SCIF_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffe40000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x8c0)), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci", -	.id			= 0, +	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase        = 0xFFE41000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr          = SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0x8E0)),  	.regtype        = SCIx_SH4_SCIF_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xffe41000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x8e0)), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci", -	.id         = 1, +	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data = &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase        = 0xFFE42000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr          = SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id  = SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0x900)),  	.regtype        = SCIx_SH4_SCIF_REGTYPE,  }; +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xffe42000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x900)), +}; +  static struct platform_device scif2_device = {  	.name		= "sh-sci", -	.id         = 2, +	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data = &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase        = 0xFFE43000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr          = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id  = SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0x920)),  	.regtype        = SCIx_SH4_SCIF_REGTYPE,  }; +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xffe43000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x920)), +}; +  static struct platform_device scif3_device = {  	.name		= "sh-sci", -	.id	        = 3, +	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  };  static struct plat_sci_port scif4_platform_data = { -	.mapbase        = 0xFFE44000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr          = SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0x940)),  	.regtype        = SCIx_SH4_SCIF_REGTYPE,  }; +static struct resource scif4_resources[] = { +	DEFINE_RES_MEM(0xffe44000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x940)), +}; +  static struct platform_device scif4_device = {  	.name		= "sh-sci", -	.id	        = 4, +	.id		= 4, +	.resource	= scif4_resources, +	.num_resources	= ARRAY_SIZE(scif4_resources),  	.dev		= {  		.platform_data	= &scif4_platform_data,  	},  };  static struct plat_sci_port scif5_platform_data = { -	.mapbase        = 0xFFE43000,  	.flags          = UPF_BOOT_AUTOCONF,  	.scscr          = SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type           = PORT_SCIF, -	.irqs           = SCIx_IRQ_MUXED(evt2irq(0x960)),  	.regtype		= SCIx_SH4_SCIF_REGTYPE,  }; +static struct resource scif5_resources[] = { +	DEFINE_RES_MEM(0xffe43000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x960)), +}; +  static struct platform_device scif5_device = {  	.name		= "sh-sci", -	.id	        = 5, +	.id		= 5, +	.resource	= scif5_resources, +	.num_resources	= ARRAY_SIZE(scif5_resources),  	.dev		= {  		.platform_data	= &scif5_platform_data,  	}, @@ -176,25 +200,18 @@ static struct platform_device i2c0_device = {  /* TMU */  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xFFD80008, -		.end	= 0xFFD80014 - 1, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name	= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -204,26 +221,19 @@ static struct platform_device tmu0_device = {  };  static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xFFD80014, -		.end	= 0xFFD80020 - 1, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd81000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x480)), +	DEFINE_RES_IRQ(evt2irq(0x4a0)), +	DEFINE_RES_IRQ(evt2irq(0x4c0)),  };  static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id			= 1, +	.name		= "sh-tmu", +	.id		= 1,  	.dev = {  		.platform_data	= &tmu1_platform_data,  	}, @@ -232,25 +242,19 @@ static struct platform_device tmu1_device = {  };  static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, +	.channels_mask = 7,  };  static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xFFD80020, -		.end	= 0xFFD80030 - 1, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd82000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x500)), +	DEFINE_RES_IRQ(evt2irq(0x520)), +	DEFINE_RES_IRQ(evt2irq(0x540)),  };  static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id			= 2, +	.name		= "sh-tmu", +	.id		= 2,  	.dev = {  		.platform_data	= &tmu2_platform_data,  	}, @@ -258,169 +262,6 @@ static struct platform_device tmu2_device = {  	.num_resources	= ARRAY_SIZE(tmu2_resources),  }; - -static struct sh_timer_config tmu3_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -}; - -static struct resource tmu3_resources[] = { -	[0] = { -		.start	= 0xFFD81008, -		.end	= 0xFFD81014 - 1, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x480), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu3_device = { -	.name		= "sh_tmu", -	.id			= 3, -	.dev = { -		.platform_data	= &tmu3_platform_data, -	}, -	.resource	= tmu3_resources, -	.num_resources	= ARRAY_SIZE(tmu3_resources), -}; - -static struct sh_timer_config tmu4_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu4_resources[] = { -	[0] = { -		.start	= 0xFFD81014, -		.end	= 0xFFD81020 - 1, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x4A0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu4_device = { -	.name		= "sh_tmu", -	.id			= 4, -	.dev = { -		.platform_data	= &tmu4_platform_data, -	}, -	.resource	= tmu4_resources, -	.num_resources	= ARRAY_SIZE(tmu4_resources), -}; - -static struct sh_timer_config tmu5_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu5_resources[] = { -	[0] = { -		.start	= 0xFFD81020, -		.end	= 0xFFD81030 - 1, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x4C0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu5_device = { -	.name		= "sh_tmu", -	.id			= 5, -	.dev = { -		.platform_data	= &tmu5_platform_data, -	}, -	.resource	= tmu5_resources, -	.num_resources	= ARRAY_SIZE(tmu5_resources), -}; - -static struct sh_timer_config tmu6_platform_data = { -	.channel_offset = 0x4, -	.timer_bit = 0, -}; - -static struct resource tmu6_resources[] = { -	[0] = { -		.start	= 0xFFD82008, -		.end	= 0xFFD82014 - 1, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x500), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu6_device = { -	.name		= "sh_tmu", -	.id			= 6, -	.dev = { -		.platform_data	= &tmu6_platform_data, -	}, -	.resource	= tmu6_resources, -	.num_resources	= ARRAY_SIZE(tmu6_resources), -}; - -static struct sh_timer_config tmu7_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu7_resources[] = { -	[0] = { -		.start	= 0xFFD82014, -		.end	= 0xFFD82020 - 1, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x520), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu7_device = { -	.name		= "sh_tmu", -	.id			= 7, -	.dev = { -		.platform_data	= &tmu7_platform_data, -	}, -	.resource	= tmu7_resources, -	.num_resources	= ARRAY_SIZE(tmu7_resources), -}; - -static struct sh_timer_config tmu8_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu8_resources[] = { -	[0] = { -		.start	= 0xFFD82020, -		.end	= 0xFFD82030 - 1, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x540), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu8_device = { -	.name		= "sh_tmu", -	.id			= 8, -	.dev = { -		.platform_data	= &tmu8_platform_data, -	}, -	.resource	= tmu8_resources, -	.num_resources	= ARRAY_SIZE(tmu8_resources), -}; -  static struct platform_device *sh7734_devices[] __initdata = {  	&scif0_device,  	&scif1_device, @@ -431,12 +272,6 @@ static struct platform_device *sh7734_devices[] __initdata = {  	&tmu0_device,  	&tmu1_device,  	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device, -	&tmu6_device, -	&tmu7_device, -	&tmu8_device,  	&rtc_device,  }; @@ -450,12 +285,6 @@ static struct platform_device *sh7734_early_devices[] __initdata = {  	&tmu0_device,  	&tmu1_device,  	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device, -	&tmu6_device, -	&tmu7_device, -	&tmu8_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c index 9079a0f9ea9..7b24ec4b409 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c @@ -24,76 +24,80 @@  #include <cpu/sh7757.h>  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xfe4b0000,		/* SCIF2 */  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x700)), +}; + +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xfe4b0000, 0x100),		/* SCIF2 */ +	DEFINE_RES_IRQ(evt2irq(0x700)),  };  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase	= 0xfe4c0000,		/* SCIF3 */  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xb80)), +}; + +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xfe4c0000, 0x100),		/* SCIF3 */ +	DEFINE_RES_IRQ(evt2irq(0xb80)),  };  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  };  static struct plat_sci_port scif4_platform_data = { -	.mapbase	= 0xfe4d0000,		/* SCIF4 */  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xF00)), +}; + +static struct resource scif4_resources[] = { +	DEFINE_RES_MEM(0xfe4d0000, 0x100),		/* SCIF4 */ +	DEFINE_RES_IRQ(evt2irq(0xf00)),  };  static struct platform_device scif4_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif4_resources, +	.num_resources	= ARRAY_SIZE(scif4_resources),  	.dev		= {  		.platform_data	= &scif4_platform_data,  	},  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 3,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xfe430008, -		.end	= 0xfe430013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x580), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xfe430000, 0x20), +	DEFINE_RES_IRQ(evt2irq(0x580)), +	DEFINE_RES_IRQ(evt2irq(0x5a0)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -102,34 +106,6 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xfe430014, -		.end	= 0xfe43001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x5a0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id		= 1, -	.dev = { -		.platform_data	= &tmu1_platform_data, -	}, -	.resource	= tmu1_resources, -	.num_resources	= ARRAY_SIZE(tmu1_resources), -}; -  static struct resource spi0_resources[] = {  	[0] = {  		.start	= 0xfe002000, @@ -770,7 +746,6 @@ static struct platform_device *sh7757_devices[] __initdata = {  	&scif3_device,  	&scif4_device,  	&tmu0_device, -	&tmu1_device,  	&dma0_device,  	&dma1_device,  	&dma2_device, @@ -794,7 +769,6 @@ static struct platform_device *sh7757_early_devices[] __initdata = {  	&scif3_device,  	&scif4_device,  	&tmu0_device, -	&tmu1_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c index 1686acaaf45..5a47d670dde 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c @@ -19,54 +19,66 @@  #include <linux/usb/ohci_pdriver.h>  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xffe00000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x700)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffe00000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x700)), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xffe08000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xb80)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xffe08000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xb80)), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xffe10000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xf00)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xffe10000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xf00)), +}; +  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	}, @@ -146,25 +158,18 @@ static struct platform_device usbf_device = {  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x580), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x580)), +	DEFINE_RES_IRQ(evt2irq(0x5a0)), +	DEFINE_RES_IRQ(evt2irq(0x5c0)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -174,25 +179,18 @@ static struct platform_device tmu0_device = {  };  static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x5a0), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd88000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0xe00)), +	DEFINE_RES_IRQ(evt2irq(0xe20)), +	DEFINE_RES_IRQ(evt2irq(0xe40)),  };  static struct platform_device tmu1_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 1,  	.dev = {  		.platform_data	= &tmu1_platform_data, @@ -201,124 +199,12 @@ static struct platform_device tmu1_device = {  	.num_resources	= ARRAY_SIZE(tmu1_resources),  }; -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x5c0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; - -static struct sh_timer_config tmu3_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -}; - -static struct resource tmu3_resources[] = { -	[0] = { -		.start	= 0xffd88008, -		.end	= 0xffd88013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xe00), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu3_device = { -	.name		= "sh_tmu", -	.id		= 3, -	.dev = { -		.platform_data	= &tmu3_platform_data, -	}, -	.resource	= tmu3_resources, -	.num_resources	= ARRAY_SIZE(tmu3_resources), -}; - -static struct sh_timer_config tmu4_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu4_resources[] = { -	[0] = { -		.start	= 0xffd88014, -		.end	= 0xffd8801f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xe20), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu4_device = { -	.name		= "sh_tmu", -	.id		= 4, -	.dev = { -		.platform_data	= &tmu4_platform_data, -	}, -	.resource	= tmu4_resources, -	.num_resources	= ARRAY_SIZE(tmu4_resources), -}; - -static struct sh_timer_config tmu5_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu5_resources[] = { -	[0] = { -		.start	= 0xffd88020, -		.end	= 0xffd8802b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xe40), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu5_device = { -	.name		= "sh_tmu", -	.id		= 5, -	.dev = { -		.platform_data	= &tmu5_platform_data, -	}, -	.resource	= tmu5_resources, -	.num_resources	= ARRAY_SIZE(tmu5_resources), -}; -  static struct platform_device *sh7763_devices[] __initdata = {  	&scif0_device,  	&scif1_device,  	&scif2_device,  	&tmu0_device,  	&tmu1_device, -	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device,  	&rtc_device,  	&usb_ohci_device,  	&usbf_device, @@ -337,10 +223,6 @@ static struct platform_device *sh7763_early_devices[] __initdata = {  	&scif2_device,  	&tmu0_device,  	&tmu1_device, -	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7770.c b/arch/sh/kernel/cpu/sh4a/setup-sh7770.c index 256ea7a4516..e9b532a76c3 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7770.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7770.c @@ -16,195 +16,228 @@  #include <linux/io.h>  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xff923000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x9a0)), +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xff923000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x9a0)),  };  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xff924000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x9c0)), +}; + +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xff924000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x9c0)),  };  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xff925000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x9e0)), +}; + +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xff925000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x9e0)),  };  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase	= 0xff926000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xa00)), +}; + +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xff926000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xa00)),  };  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  };  static struct plat_sci_port scif4_platform_data = { -	.mapbase	= 0xff927000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xa20)), +}; + +static struct resource scif4_resources[] = { +	DEFINE_RES_MEM(0xff927000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xa20)),  };  static struct platform_device scif4_device = {  	.name		= "sh-sci",  	.id		= 4, +	.resource	= scif4_resources, +	.num_resources	= ARRAY_SIZE(scif4_resources),  	.dev		= {  		.platform_data	= &scif4_platform_data,  	},  };  static struct plat_sci_port scif5_platform_data = { -	.mapbase	= 0xff928000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xa40)), +}; + +static struct resource scif5_resources[] = { +	DEFINE_RES_MEM(0xff928000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xa40)),  };  static struct platform_device scif5_device = {  	.name		= "sh-sci",  	.id		= 5, +	.resource	= scif5_resources, +	.num_resources	= ARRAY_SIZE(scif5_resources),  	.dev		= {  		.platform_data	= &scif5_platform_data,  	},  };  static struct plat_sci_port scif6_platform_data = { -	.mapbase	= 0xff929000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xa60)), +}; + +static struct resource scif6_resources[] = { +	DEFINE_RES_MEM(0xff929000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xa60)),  };  static struct platform_device scif6_device = {  	.name		= "sh-sci",  	.id		= 6, +	.resource	= scif6_resources, +	.num_resources	= ARRAY_SIZE(scif6_resources),  	.dev		= {  		.platform_data	= &scif6_platform_data,  	},  };  static struct plat_sci_port scif7_platform_data = { -	.mapbase	= 0xff92a000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xa80)), +}; + +static struct resource scif7_resources[] = { +	DEFINE_RES_MEM(0xff92a000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xa80)),  };  static struct platform_device scif7_device = {  	.name		= "sh-sci",  	.id		= 7, +	.resource	= scif7_resources, +	.num_resources	= ARRAY_SIZE(scif7_resources),  	.dev		= {  		.platform_data	= &scif7_platform_data,  	},  };  static struct plat_sci_port scif8_platform_data = { -	.mapbase	= 0xff92b000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xaa0)), +}; + +static struct resource scif8_resources[] = { +	DEFINE_RES_MEM(0xff92b000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xaa0)),  };  static struct platform_device scif8_device = {  	.name		= "sh-sci",  	.id		= 8, +	.resource	= scif8_resources, +	.num_resources	= ARRAY_SIZE(scif8_resources),  	.dev		= {  		.platform_data	= &scif8_platform_data,  	},  };  static struct plat_sci_port scif9_platform_data = { -	.mapbase	= 0xff92c000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xac0)), +}; + +static struct resource scif9_resources[] = { +	DEFINE_RES_MEM(0xff92c000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xac0)),  };  static struct platform_device scif9_device = {  	.name		= "sh-sci",  	.id		= 9, +	.resource	= scif9_resources, +	.num_resources	= ARRAY_SIZE(scif9_resources),  	.dev		= {  		.platform_data	= &scif9_platform_data,  	},  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -214,25 +247,18 @@ static struct platform_device tmu0_device = {  };  static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd81000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x460)), +	DEFINE_RES_IRQ(evt2irq(0x480)), +	DEFINE_RES_IRQ(evt2irq(0x4a0)),  };  static struct platform_device tmu1_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 1,  	.dev = {  		.platform_data	= &tmu1_platform_data, @@ -242,24 +268,18 @@ static struct platform_device tmu1_device = {  };  static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, +	.channels_mask = 7,  };  static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd82000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x4c0)), +	DEFINE_RES_IRQ(evt2irq(0x4e0)), +	DEFINE_RES_IRQ(evt2irq(0x500)),  };  static struct platform_device tmu2_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 2,  	.dev = {  		.platform_data	= &tmu2_platform_data, @@ -268,168 +288,6 @@ static struct platform_device tmu2_device = {  	.num_resources	= ARRAY_SIZE(tmu2_resources),  }; -static struct sh_timer_config tmu3_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -}; - -static struct resource tmu3_resources[] = { -	[0] = { -		.start	= 0xffd81008, -		.end	= 0xffd81013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x460), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu3_device = { -	.name		= "sh_tmu", -	.id		= 3, -	.dev = { -		.platform_data	= &tmu3_platform_data, -	}, -	.resource	= tmu3_resources, -	.num_resources	= ARRAY_SIZE(tmu3_resources), -}; - -static struct sh_timer_config tmu4_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu4_resources[] = { -	[0] = { -		.start	= 0xffd81014, -		.end	= 0xffd8101f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x480), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu4_device = { -	.name		= "sh_tmu", -	.id		= 4, -	.dev = { -		.platform_data	= &tmu4_platform_data, -	}, -	.resource	= tmu4_resources, -	.num_resources	= ARRAY_SIZE(tmu4_resources), -}; - -static struct sh_timer_config tmu5_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu5_resources[] = { -	[0] = { -		.start	= 0xffd81020, -		.end	= 0xffd8102f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x4a0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu5_device = { -	.name		= "sh_tmu", -	.id		= 5, -	.dev = { -		.platform_data	= &tmu5_platform_data, -	}, -	.resource	= tmu5_resources, -	.num_resources	= ARRAY_SIZE(tmu5_resources), -}; - -static struct sh_timer_config tmu6_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -}; - -static struct resource tmu6_resources[] = { -	[0] = { -		.start	= 0xffd82008, -		.end	= 0xffd82013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x4c0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu6_device = { -	.name		= "sh_tmu", -	.id		= 6, -	.dev = { -		.platform_data	= &tmu6_platform_data, -	}, -	.resource	= tmu6_resources, -	.num_resources	= ARRAY_SIZE(tmu6_resources), -}; - -static struct sh_timer_config tmu7_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu7_resources[] = { -	[0] = { -		.start	= 0xffd82014, -		.end	= 0xffd8201f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x4e0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu7_device = { -	.name		= "sh_tmu", -	.id		= 7, -	.dev = { -		.platform_data	= &tmu7_platform_data, -	}, -	.resource	= tmu7_resources, -	.num_resources	= ARRAY_SIZE(tmu7_resources), -}; - -static struct sh_timer_config tmu8_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu8_resources[] = { -	[0] = { -		.start	= 0xffd82020, -		.end	= 0xffd8202b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x500), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu8_device = { -	.name		= "sh_tmu", -	.id		= 8, -	.dev = { -		.platform_data	= &tmu8_platform_data, -	}, -	.resource	= tmu8_resources, -	.num_resources	= ARRAY_SIZE(tmu8_resources), -}; -  static struct platform_device *sh7770_devices[] __initdata = {  	&scif0_device,  	&scif1_device, @@ -444,12 +302,6 @@ static struct platform_device *sh7770_devices[] __initdata = {  	&tmu0_device,  	&tmu1_device,  	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device, -	&tmu6_device, -	&tmu7_device, -	&tmu8_device,  };  static int __init sh7770_devices_setup(void) @@ -473,12 +325,6 @@ static struct platform_device *sh7770_early_devices[] __initdata = {  	&tmu0_device,  	&tmu1_device,  	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device, -	&tmu6_device, -	&tmu7_device, -	&tmu8_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c index de45b704687..3ee7dd9b3a6 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c @@ -18,61 +18,62 @@  #include <cpu/dma-register.h>  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xffe00000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x700)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffe00000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x700)), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xffe10000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0xb80)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xffe10000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0xb80)), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x580), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x580)), +	DEFINE_RES_IRQ(evt2irq(0x5a0)), +	DEFINE_RES_IRQ(evt2irq(0x5c0)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -82,25 +83,18 @@ static struct platform_device tmu0_device = {  };  static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x5a0), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffdc0000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0xe00)), +	DEFINE_RES_IRQ(evt2irq(0xe20)), +	DEFINE_RES_IRQ(evt2irq(0xe40)),  };  static struct platform_device tmu1_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 1,  	.dev = {  		.platform_data	= &tmu1_platform_data, @@ -109,114 +103,6 @@ static struct platform_device tmu1_device = {  	.num_resources	= ARRAY_SIZE(tmu1_resources),  }; -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x5c0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; - -static struct sh_timer_config tmu3_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -}; - -static struct resource tmu3_resources[] = { -	[0] = { -		.start	= 0xffdc0008, -		.end	= 0xffdc0013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xe00), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu3_device = { -	.name		= "sh_tmu", -	.id		= 3, -	.dev = { -		.platform_data	= &tmu3_platform_data, -	}, -	.resource	= tmu3_resources, -	.num_resources	= ARRAY_SIZE(tmu3_resources), -}; - -static struct sh_timer_config tmu4_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu4_resources[] = { -	[0] = { -		.start	= 0xffdc0014, -		.end	= 0xffdc001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xe20), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu4_device = { -	.name		= "sh_tmu", -	.id		= 4, -	.dev = { -		.platform_data	= &tmu4_platform_data, -	}, -	.resource	= tmu4_resources, -	.num_resources	= ARRAY_SIZE(tmu4_resources), -}; - -static struct sh_timer_config tmu5_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu5_resources[] = { -	[0] = { -		.start	= 0xffdc0020, -		.end	= 0xffdc002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xe40), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu5_device = { -	.name		= "sh_tmu", -	.id		= 5, -	.dev = { -		.platform_data	= &tmu5_platform_data, -	}, -	.resource	= tmu5_resources, -	.num_resources	= ARRAY_SIZE(tmu5_resources), -}; -  static struct resource rtc_resources[] = {  	[0] = {  		.start	= 0xffe80000, @@ -378,10 +264,6 @@ static struct platform_device *sh7780_devices[] __initdata = {  	&scif1_device,  	&tmu0_device,  	&tmu1_device, -	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device,  	&rtc_device,  	&dma0_device,  	&dma1_device, @@ -399,19 +281,13 @@ static struct platform_device *sh7780_early_devices[] __initdata = {  	&scif1_device,  	&tmu0_device,  	&tmu1_device, -	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device,  };  void __init plat_early_device_setup(void)  {  	if (mach_is_sh2007()) {  		scif0_platform_data.scscr &= ~SCSCR_CKE1; -		scif0_platform_data.scbrr_algo_id = SCBRR_ALGO_2;  		scif1_platform_data.scscr &= ~SCSCR_CKE1; -		scif1_platform_data.scbrr_algo_id = SCBRR_ALGO_2;  	}  	early_platform_add_devices(sh7780_early_devices, diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c index 0968ecb962e..c72d5a5d099 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c @@ -20,133 +20,150 @@  #include <cpu/dma-register.h>  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xffea0000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x700)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffea0000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x700)), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xffeb0000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x780)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xffeb0000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x780)), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xffec0000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x980)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xffec0000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x980)), +}; +  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase	= 0xffed0000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x9a0)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xffed0000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x9a0)), +}; +  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  };  static struct plat_sci_port scif4_platform_data = { -	.mapbase	= 0xffee0000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x9c0)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif4_resources[] = { +	DEFINE_RES_MEM(0xffee0000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x9c0)), +}; +  static struct platform_device scif4_device = {  	.name		= "sh-sci",  	.id		= 4, +	.resource	= scif4_resources, +	.num_resources	= ARRAY_SIZE(scif4_resources),  	.dev		= {  		.platform_data	= &scif4_platform_data,  	},  };  static struct plat_sci_port scif5_platform_data = { -	.mapbase	= 0xffef0000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x9e0)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif5_resources[] = { +	DEFINE_RES_MEM(0xffef0000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x9e0)), +}; +  static struct platform_device scif5_device = {  	.name		= "sh-sci",  	.id		= 5, +	.resource	= scif5_resources, +	.num_resources	= ARRAY_SIZE(scif5_resources),  	.dev		= {  		.platform_data	= &scif5_platform_data,  	},  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x580), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x580)), +	DEFINE_RES_IRQ(evt2irq(0x5a0)), +	DEFINE_RES_IRQ(evt2irq(0x5c0)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -156,25 +173,18 @@ static struct platform_device tmu0_device = {  };  static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x5a0), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffdc0000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0xe00)), +	DEFINE_RES_IRQ(evt2irq(0xe20)), +	DEFINE_RES_IRQ(evt2irq(0xe40)),  };  static struct platform_device tmu1_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 1,  	.dev = {  		.platform_data	= &tmu1_platform_data, @@ -183,114 +193,6 @@ static struct platform_device tmu1_device = {  	.num_resources	= ARRAY_SIZE(tmu1_resources),  }; -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x5c0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; - -static struct sh_timer_config tmu3_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -}; - -static struct resource tmu3_resources[] = { -	[0] = { -		.start	= 0xffdc0008, -		.end	= 0xffdc0013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xe00), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu3_device = { -	.name		= "sh_tmu", -	.id		= 3, -	.dev = { -		.platform_data	= &tmu3_platform_data, -	}, -	.resource	= tmu3_resources, -	.num_resources	= ARRAY_SIZE(tmu3_resources), -}; - -static struct sh_timer_config tmu4_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu4_resources[] = { -	[0] = { -		.start	= 0xffdc0014, -		.end	= 0xffdc001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xe20), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu4_device = { -	.name		= "sh_tmu", -	.id		= 4, -	.dev = { -		.platform_data	= &tmu4_platform_data, -	}, -	.resource	= tmu4_resources, -	.num_resources	= ARRAY_SIZE(tmu4_resources), -}; - -static struct sh_timer_config tmu5_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu5_resources[] = { -	[0] = { -		.start	= 0xffdc0020, -		.end	= 0xffdc002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0xe40), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu5_device = { -	.name		= "sh_tmu", -	.id		= 5, -	.dev = { -		.platform_data	= &tmu5_platform_data, -	}, -	.resource	= tmu5_resources, -	.num_resources	= ARRAY_SIZE(tmu5_resources), -}; -  /* DMA */  static const struct sh_dmae_channel sh7785_dmae0_channels[] = {  	{ @@ -436,10 +338,6 @@ static struct platform_device *sh7785_devices[] __initdata = {  	&scif5_device,  	&tmu0_device,  	&tmu1_device, -	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device,  	&dma0_device,  	&dma1_device,  }; @@ -460,10 +358,6 @@ static struct platform_device *sh7785_early_devices[] __initdata = {  	&scif5_device,  	&tmu0_device,  	&tmu1_device, -	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device,  };  void __init plat_early_device_setup(void) diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7786.c b/arch/sh/kernel/cpu/sh4a/setup-sh7786.c index ab52d4d4484..479e79bdd3d 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7786.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7786.c @@ -28,21 +28,25 @@  #include <asm/mmzone.h>  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xffea0000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= { evt2irq(0x700), -			    evt2irq(0x720), -			    evt2irq(0x760), -			    evt2irq(0x740) },  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffea0000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x700)), +	DEFINE_RES_IRQ(evt2irq(0x720)), +	DEFINE_RES_IRQ(evt2irq(0x760)), +	DEFINE_RES_IRQ(evt2irq(0x740)), +}; +  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	}, @@ -52,115 +56,137 @@ static struct platform_device scif0_device = {   * The rest of these all have multiplexed IRQs   */  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xffeb0000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x780)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xffeb0000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x780)), +}; + +static struct resource scif1_demux_resources[] = { +	DEFINE_RES_MEM(0xffeb0000, 0x100), +	/* Placeholders, see sh7786_devices_setup() */ +	DEFINE_RES_IRQ(0), +	DEFINE_RES_IRQ(0), +	DEFINE_RES_IRQ(0), +	DEFINE_RES_IRQ(0), +}; +  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xffec0000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x840)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xffec0000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x840)), +}; +  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct plat_sci_port scif3_platform_data = { -	.mapbase	= 0xffed0000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x860)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif3_resources[] = { +	DEFINE_RES_MEM(0xffed0000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x860)), +}; +  static struct platform_device scif3_device = {  	.name		= "sh-sci",  	.id		= 3, +	.resource	= scif3_resources, +	.num_resources	= ARRAY_SIZE(scif3_resources),  	.dev		= {  		.platform_data	= &scif3_platform_data,  	},  };  static struct plat_sci_port scif4_platform_data = { -	.mapbase	= 0xffee0000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x880)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif4_resources[] = { +	DEFINE_RES_MEM(0xffee0000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x880)), +}; +  static struct platform_device scif4_device = {  	.name		= "sh-sci",  	.id		= 4, +	.resource	= scif4_resources, +	.num_resources	= ARRAY_SIZE(scif4_resources),  	.dev		= {  		.platform_data	= &scif4_platform_data,  	},  };  static struct plat_sci_port scif5_platform_data = { -	.mapbase	= 0xffef0000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, -	.scbrr_algo_id	= SCBRR_ALGO_1,  	.type		= PORT_SCIF, -	.irqs		= SCIx_IRQ_MUXED(evt2irq(0x8a0)),  	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,  }; +static struct resource scif5_resources[] = { +	DEFINE_RES_MEM(0xffef0000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x8a0)), +}; +  static struct platform_device scif5_device = {  	.name		= "sh-sci",  	.id		= 5, +	.resource	= scif5_resources, +	.num_resources	= ARRAY_SIZE(scif5_resources),  	.dev		= {  		.platform_data	= &scif5_platform_data,  	},  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffd80008, -		.end	= 0xffd80013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffd80000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -170,25 +196,18 @@ static struct platform_device tmu0_device = {  };  static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffd80014, -		.end	= 0xffd8001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffda0000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x480)), +	DEFINE_RES_IRQ(evt2irq(0x4a0)), +	DEFINE_RES_IRQ(evt2irq(0x4c0)),  };  static struct platform_device tmu1_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 1,  	.dev = {  		.platform_data	= &tmu1_platform_data, @@ -198,24 +217,18 @@ static struct platform_device tmu1_device = {  };  static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, +	.channels_mask = 7,  };  static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffd80020, -		.end	= 0xffd8002f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffdc0000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x7a0)), +	DEFINE_RES_IRQ(evt2irq(0x7a0)), +	DEFINE_RES_IRQ(evt2irq(0x7a0)),  };  static struct platform_device tmu2_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 2,  	.dev = {  		.platform_data	= &tmu2_platform_data, @@ -225,24 +238,18 @@ static struct platform_device tmu2_device = {  };  static struct sh_timer_config tmu3_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, +	.channels_mask = 7,  };  static struct resource tmu3_resources[] = { -	[0] = { -		.start	= 0xffda0008, -		.end	= 0xffda0013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x480), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffde0000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x7c0)), +	DEFINE_RES_IRQ(evt2irq(0x7c0)), +	DEFINE_RES_IRQ(evt2irq(0x7c0)),  };  static struct platform_device tmu3_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 3,  	.dev = {  		.platform_data	= &tmu3_platform_data, @@ -251,222 +258,6 @@ static struct platform_device tmu3_device = {  	.num_resources	= ARRAY_SIZE(tmu3_resources),  }; -static struct sh_timer_config tmu4_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu4_resources[] = { -	[0] = { -		.start	= 0xffda0014, -		.end	= 0xffda001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x4a0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu4_device = { -	.name		= "sh_tmu", -	.id		= 4, -	.dev = { -		.platform_data	= &tmu4_platform_data, -	}, -	.resource	= tmu4_resources, -	.num_resources	= ARRAY_SIZE(tmu4_resources), -}; - -static struct sh_timer_config tmu5_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu5_resources[] = { -	[0] = { -		.start	= 0xffda0020, -		.end	= 0xffda002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x4c0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu5_device = { -	.name		= "sh_tmu", -	.id		= 5, -	.dev = { -		.platform_data	= &tmu5_platform_data, -	}, -	.resource	= tmu5_resources, -	.num_resources	= ARRAY_SIZE(tmu5_resources), -}; - -static struct sh_timer_config tmu6_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -}; - -static struct resource tmu6_resources[] = { -	[0] = { -		.start	= 0xffdc0008, -		.end	= 0xffdc0013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x7a0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu6_device = { -	.name		= "sh_tmu", -	.id		= 6, -	.dev = { -		.platform_data	= &tmu6_platform_data, -	}, -	.resource	= tmu6_resources, -	.num_resources	= ARRAY_SIZE(tmu6_resources), -}; - -static struct sh_timer_config tmu7_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu7_resources[] = { -	[0] = { -		.start	= 0xffdc0014, -		.end	= 0xffdc001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x7a0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu7_device = { -	.name		= "sh_tmu", -	.id		= 7, -	.dev = { -		.platform_data	= &tmu7_platform_data, -	}, -	.resource	= tmu7_resources, -	.num_resources	= ARRAY_SIZE(tmu7_resources), -}; - -static struct sh_timer_config tmu8_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu8_resources[] = { -	[0] = { -		.start	= 0xffdc0020, -		.end	= 0xffdc002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x7a0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu8_device = { -	.name		= "sh_tmu", -	.id		= 8, -	.dev = { -		.platform_data	= &tmu8_platform_data, -	}, -	.resource	= tmu8_resources, -	.num_resources	= ARRAY_SIZE(tmu8_resources), -}; - -static struct sh_timer_config tmu9_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -}; - -static struct resource tmu9_resources[] = { -	[0] = { -		.start	= 0xffde0008, -		.end	= 0xffde0013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x7c0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu9_device = { -	.name		= "sh_tmu", -	.id		= 9, -	.dev = { -		.platform_data	= &tmu9_platform_data, -	}, -	.resource	= tmu9_resources, -	.num_resources	= ARRAY_SIZE(tmu9_resources), -}; - -static struct sh_timer_config tmu10_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu10_resources[] = { -	[0] = { -		.start	= 0xffde0014, -		.end	= 0xffde001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x7c0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu10_device = { -	.name		= "sh_tmu", -	.id		= 10, -	.dev = { -		.platform_data	= &tmu10_platform_data, -	}, -	.resource	= tmu10_resources, -	.num_resources	= ARRAY_SIZE(tmu10_resources), -}; - -static struct sh_timer_config tmu11_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu11_resources[] = { -	[0] = { -		.start	= 0xffde0020, -		.end	= 0xffde002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x7c0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu11_device = { -	.name		= "sh_tmu", -	.id		= 11, -	.dev = { -		.platform_data	= &tmu11_platform_data, -	}, -	.resource	= tmu11_resources, -	.num_resources	= ARRAY_SIZE(tmu11_resources), -}; -  static const struct sh_dmae_channel dmac0_channels[] = {  	{  		.offset = 0, @@ -608,15 +399,6 @@ static struct platform_device *sh7786_early_devices[] __initdata = {  	&tmu0_device,  	&tmu1_device,  	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device, -	&tmu6_device, -	&tmu7_device, -	&tmu8_device, -	&tmu9_device, -	&tmu10_device, -	&tmu11_device,  };  static struct platform_device *sh7786_devices[] __initdata = { @@ -1037,13 +819,16 @@ static int __init sh7786_devices_setup(void)  	 */  	irq = intc_irq_lookup(sh7786_intc_desc.name, TXI1);  	if (irq > 0) { -		scif1_platform_data.irqs[SCIx_TXI_IRQ] = irq; -		scif1_platform_data.irqs[SCIx_ERI_IRQ] = +		scif1_demux_resources[1].start =  			intc_irq_lookup(sh7786_intc_desc.name, ERI1); -		scif1_platform_data.irqs[SCIx_BRI_IRQ] = -			intc_irq_lookup(sh7786_intc_desc.name, BRI1); -		scif1_platform_data.irqs[SCIx_RXI_IRQ] = +		scif1_demux_resources[2].start =  			intc_irq_lookup(sh7786_intc_desc.name, RXI1); +		scif1_demux_resources[3].start = irq; +		scif1_demux_resources[4].start = +			intc_irq_lookup(sh7786_intc_desc.name, BRI1); + +		scif1_device.resource = scif1_demux_resources; +		scif1_device.num_resources = ARRAY_SIZE(scif1_demux_resources);  	}  	ret = platform_add_devices(sh7786_early_devices, diff --git a/arch/sh/kernel/cpu/sh4a/setup-shx3.c b/arch/sh/kernel/cpu/sh4a/setup-shx3.c index 688f7ed1bab..a78c5feb4e3 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-shx3.c +++ b/arch/sh/kernel/cpu/sh4a/setup-shx3.c @@ -28,85 +28,90 @@   * all rather than adding infrastructure to hack around it.   */  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= 0xffc30000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= { evt2irq(0x700), -			    evt2irq(0x720), -			    evt2irq(0x760), -			    evt2irq(0x740) }, +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(0xffc30000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x700)), +	DEFINE_RES_IRQ(evt2irq(0x720)), +	DEFINE_RES_IRQ(evt2irq(0x760)), +	DEFINE_RES_IRQ(evt2irq(0x740)),  };  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	},  };  static struct plat_sci_port scif1_platform_data = { -	.mapbase	= 0xffc40000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= { evt2irq(0x780), -			    evt2irq(0x7a0), -			    evt2irq(0x7e0), -			    evt2irq(0x7c0) }, +}; + +static struct resource scif1_resources[] = { +	DEFINE_RES_MEM(0xffc40000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x780)), +	DEFINE_RES_IRQ(evt2irq(0x7a0)), +	DEFINE_RES_IRQ(evt2irq(0x7e0)), +	DEFINE_RES_IRQ(evt2irq(0x7c0)),  };  static struct platform_device scif1_device = {  	.name		= "sh-sci",  	.id		= 1, +	.resource	= scif1_resources, +	.num_resources	= ARRAY_SIZE(scif1_resources),  	.dev		= {  		.platform_data	= &scif1_platform_data,  	},  };  static struct plat_sci_port scif2_platform_data = { -	.mapbase	= 0xffc60000,  	.flags		= UPF_BOOT_AUTOCONF,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= { evt2irq(0x880), -			    evt2irq(0x8a0), -			    evt2irq(0x8e0), -			    evt2irq(0x8c0) }, +}; + +static struct resource scif2_resources[] = { +	DEFINE_RES_MEM(0xffc60000, 0x100), +	DEFINE_RES_IRQ(evt2irq(0x880)), +	DEFINE_RES_IRQ(evt2irq(0x8a0)), +	DEFINE_RES_IRQ(evt2irq(0x8e0)), +	DEFINE_RES_IRQ(evt2irq(0x8c0)),  };  static struct platform_device scif2_device = {  	.name		= "sh-sci",  	.id		= 2, +	.resource	= scif2_resources, +	.num_resources	= ARRAY_SIZE(scif2_resources),  	.dev		= {  		.platform_data	= &scif2_platform_data,  	},  };  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= 0xffc10008, -		.end	= 0xffc10013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x400), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffc10000, 0x30), +	DEFINE_RES_IRQ(evt2irq(0x400)), +	DEFINE_RES_IRQ(evt2irq(0x420)), +	DEFINE_RES_IRQ(evt2irq(0x440)),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -116,25 +121,18 @@ static struct platform_device tmu0_device = {  };  static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu1_resources[] = { -	[0] = { -		.start	= 0xffc10014, -		.end	= 0xffc1001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x420), -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(0xffc20000, 0x2c), +	DEFINE_RES_IRQ(evt2irq(0x460)), +	DEFINE_RES_IRQ(evt2irq(0x480)), +	DEFINE_RES_IRQ(evt2irq(0x4a0)),  };  static struct platform_device tmu1_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 1,  	.dev = {  		.platform_data	= &tmu1_platform_data, @@ -143,124 +141,12 @@ static struct platform_device tmu1_device = {  	.num_resources	= ARRAY_SIZE(tmu1_resources),  }; -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= 0xffc10020, -		.end	= 0xffc1002f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x440), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; - -static struct sh_timer_config tmu3_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -}; - -static struct resource tmu3_resources[] = { -	[0] = { -		.start	= 0xffc20008, -		.end	= 0xffc20013, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x460), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu3_device = { -	.name		= "sh_tmu", -	.id		= 3, -	.dev = { -		.platform_data	= &tmu3_platform_data, -	}, -	.resource	= tmu3_resources, -	.num_resources	= ARRAY_SIZE(tmu3_resources), -}; - -static struct sh_timer_config tmu4_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -}; - -static struct resource tmu4_resources[] = { -	[0] = { -		.start	= 0xffc20014, -		.end	= 0xffc2001f, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x480), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu4_device = { -	.name		= "sh_tmu", -	.id		= 4, -	.dev = { -		.platform_data	= &tmu4_platform_data, -	}, -	.resource	= tmu4_resources, -	.num_resources	= ARRAY_SIZE(tmu4_resources), -}; - -static struct sh_timer_config tmu5_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu5_resources[] = { -	[0] = { -		.start	= 0xffc20020, -		.end	= 0xffc2002b, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= evt2irq(0x4a0), -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu5_device = { -	.name		= "sh_tmu", -	.id		= 5, -	.dev = { -		.platform_data	= &tmu5_platform_data, -	}, -	.resource	= tmu5_resources, -	.num_resources	= ARRAY_SIZE(tmu5_resources), -}; -  static struct platform_device *shx3_early_devices[] __initdata = {  	&scif0_device,  	&scif1_device,  	&scif2_device,  	&tmu0_device,  	&tmu1_device, -	&tmu2_device, -	&tmu3_device, -	&tmu4_device, -	&tmu5_device,  };  static int __init shx3_devices_setup(void) diff --git a/arch/sh/kernel/cpu/sh5/setup-sh5.c b/arch/sh/kernel/cpu/sh5/setup-sh5.c index 18419f1de96..1bf0b2cf665 100644 --- a/arch/sh/kernel/cpu/sh5/setup-sh5.c +++ b/arch/sh/kernel/cpu/sh5/setup-sh5.c @@ -17,17 +17,23 @@  #include <asm/addrspace.h>  static struct plat_sci_port scif0_platform_data = { -	.mapbase	= PHYS_PERIPHERAL_BLOCK + 0x01030000,  	.flags		= UPF_BOOT_AUTOCONF | UPF_IOREMAP,  	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE, -	.scbrr_algo_id	= SCBRR_ALGO_2,  	.type		= PORT_SCIF, -	.irqs		= { 39, 40, 42, 0 }, +}; + +static struct resource scif0_resources[] = { +	DEFINE_RES_MEM(PHYS_PERIPHERAL_BLOCK + 0x01030000, 0x100), +	DEFINE_RES_IRQ(39), +	DEFINE_RES_IRQ(40), +	DEFINE_RES_IRQ(42),  };  static struct platform_device scif0_device = {  	.name		= "sh-sci",  	.id		= 0, +	.resource	= scif0_resources, +	.num_resources	= ARRAY_SIZE(scif0_resources),  	.dev		= {  		.platform_data	= &scif0_platform_data,  	}, @@ -65,30 +71,20 @@ static struct platform_device rtc_device = {  #define	TMU_BLOCK_OFF	0x01020000  #define TMU_BASE	PHYS_PERIPHERAL_BLOCK + TMU_BLOCK_OFF -#define TMU0_BASE	(TMU_BASE + 0x8 + (0xc * 0x0)) -#define TMU1_BASE	(TMU_BASE + 0x8 + (0xc * 0x1)) -#define TMU2_BASE	(TMU_BASE + 0x8 + (0xc * 0x2))  static struct sh_timer_config tmu0_platform_data = { -	.channel_offset = 0x04, -	.timer_bit = 0, -	.clockevent_rating = 200, +	.channels_mask = 7,  };  static struct resource tmu0_resources[] = { -	[0] = { -		.start	= TMU0_BASE, -		.end	= TMU0_BASE + 0xc - 1, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= IRQ_TUNI0, -		.flags	= IORESOURCE_IRQ, -	}, +	DEFINE_RES_MEM(TMU_BASE, 0x30), +	DEFINE_RES_IRQ(IRQ_TUNI0), +	DEFINE_RES_IRQ(IRQ_TUNI1), +	DEFINE_RES_IRQ(IRQ_TUNI2),  };  static struct platform_device tmu0_device = { -	.name		= "sh_tmu", +	.name		= "sh-tmu",  	.id		= 0,  	.dev = {  		.platform_data	= &tmu0_platform_data, @@ -97,66 +93,9 @@ static struct platform_device tmu0_device = {  	.num_resources	= ARRAY_SIZE(tmu0_resources),  }; -static struct sh_timer_config tmu1_platform_data = { -	.channel_offset = 0x10, -	.timer_bit = 1, -	.clocksource_rating = 200, -}; - -static struct resource tmu1_resources[] = { -	[0] = { -		.start	= TMU1_BASE, -		.end	= TMU1_BASE + 0xc - 1, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= IRQ_TUNI1, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu1_device = { -	.name		= "sh_tmu", -	.id		= 1, -	.dev = { -		.platform_data	= &tmu1_platform_data, -	}, -	.resource	= tmu1_resources, -	.num_resources	= ARRAY_SIZE(tmu1_resources), -}; - -static struct sh_timer_config tmu2_platform_data = { -	.channel_offset = 0x1c, -	.timer_bit = 2, -}; - -static struct resource tmu2_resources[] = { -	[0] = { -		.start	= TMU2_BASE, -		.end	= TMU2_BASE + 0xc - 1, -		.flags	= IORESOURCE_MEM, -	}, -	[1] = { -		.start	= IRQ_TUNI2, -		.flags	= IORESOURCE_IRQ, -	}, -}; - -static struct platform_device tmu2_device = { -	.name		= "sh_tmu", -	.id		= 2, -	.dev = { -		.platform_data	= &tmu2_platform_data, -	}, -	.resource	= tmu2_resources, -	.num_resources	= ARRAY_SIZE(tmu2_resources), -}; -  static struct platform_device *sh5_early_devices[] __initdata = {  	&scif0_device,  	&tmu0_device, -	&tmu1_device, -	&tmu2_device,  };  static struct platform_device *sh5_devices[] __initdata = { diff --git a/arch/sh/kernel/dumpstack.c b/arch/sh/kernel/dumpstack.c index b959f559260..8dfe645bcc4 100644 --- a/arch/sh/kernel/dumpstack.c +++ b/arch/sh/kernel/dumpstack.c @@ -115,7 +115,7 @@ static int print_trace_stack(void *data, char *name)   */  static void print_trace_address(void *data, unsigned long addr, int reliable)  { -	printk(data); +	printk("%s", (char *)data);  	printk_address(addr, reliable);  } diff --git a/arch/sh/kernel/dwarf.c b/arch/sh/kernel/dwarf.c index 49c09c7d5b7..67a049e75ec 100644 --- a/arch/sh/kernel/dwarf.c +++ b/arch/sh/kernel/dwarf.c @@ -995,29 +995,19 @@ static struct unwinder dwarf_unwinder = {  static void dwarf_unwinder_cleanup(void)  { -	struct rb_node **fde_rb_node = &fde_root.rb_node; -	struct rb_node **cie_rb_node = &cie_root.rb_node; +	struct dwarf_fde *fde, *next_fde; +	struct dwarf_cie *cie, *next_cie;  	/*  	 * Deallocate all the memory allocated for the DWARF unwinder.  	 * Traverse all the FDE/CIE lists and remove and free all the  	 * memory associated with those data structures.  	 */ -	while (*fde_rb_node) { -		struct dwarf_fde *fde; - -		fde = rb_entry(*fde_rb_node, struct dwarf_fde, node); -		rb_erase(*fde_rb_node, &fde_root); +	rbtree_postorder_for_each_entry_safe(fde, next_fde, &fde_root, node)  		kfree(fde); -	} -	while (*cie_rb_node) { -		struct dwarf_cie *cie; - -		cie = rb_entry(*cie_rb_node, struct dwarf_cie, node); -		rb_erase(*cie_rb_node, &cie_root); +	rbtree_postorder_for_each_entry_safe(cie, next_cie, &cie_root, node)  		kfree(cie); -	}  	kmem_cache_destroy(dwarf_reg_cachep);  	kmem_cache_destroy(dwarf_frame_cachep); diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S index 9b6e4beeb29..13047a4facd 100644 --- a/arch/sh/kernel/entry-common.S +++ b/arch/sh/kernel/entry-common.S @@ -108,7 +108,7 @@ need_resched:  	and	#(0xf0>>1), r0		! interrupts off (exception path)?  	cmp/eq	#(0xf0>>1), r0  	bt	noresched -	mov.l	3f, r0 +	mov.l	1f, r0  	jsr	@r0			! call preempt_schedule_irq  	 nop  	bra	need_resched @@ -119,9 +119,7 @@ noresched:  	 nop  	.align 2 -1:	.long	PREEMPT_ACTIVE -2:	.long	schedule -3:	.long	preempt_schedule_irq +1:	.long	preempt_schedule_irq  #endif  ENTRY(resume_userspace) @@ -195,10 +193,10 @@ syscall_trace_entry:  	!			Reload R0-R4 from kernel stack, where the  	!   	    	    	parent may have modified them using  	!   	    	    	ptrace(POKEUSR).  (Note that R0-R2 are -	!   	    	    	used by the system call handler directly -	!   	    	    	from the kernel stack anyway, so don't need -	!   	    	    	to be reloaded here.)  This allows the parent -	!   	    	    	to rewrite system calls and args on the fly. +	!   	    	    	reloaded from the kernel stack by syscall_call +	!   	    	    	below, so don't need to be reloaded here.) +	!   	    	    	This allows the parent to rewrite system calls +	!   	    	    	and args on the fly.  	mov.l	@(OFF_R4,r15), r4   ! arg0  	mov.l	@(OFF_R5,r15), r5  	mov.l	@(OFF_R6,r15), r6 @@ -359,8 +357,15 @@ syscall_call:  	mov.l	3f, r8		! Load the address of sys_call_table  	add	r8, r3  	mov.l	@r3, r8 +	mov.l	@(OFF_R2,r15), r2 +	mov.l	@(OFF_R1,r15), r1 +	mov.l	@(OFF_R0,r15), r0 +	mov.l	r2, @-r15 +	mov.l	r1, @-r15 +	mov.l	r0, @-r15  	jsr	@r8	    	! jump to specific syscall handler  	 nop +	add	#12, r15  	mov.l	@(OFF_R0,r15), r12		! save r0  	mov.l	r0, @(OFF_R0,r15)		! save the return value  	! diff --git a/arch/sh/kernel/ftrace.c b/arch/sh/kernel/ftrace.c index 30e13196d35..3c74f53db6d 100644 --- a/arch/sh/kernel/ftrace.c +++ b/arch/sh/kernel/ftrace.c @@ -272,11 +272,8 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)  	return ftrace_modify_code(rec->ip, old, new);  } -int __init ftrace_dyn_arch_init(void *data) +int __init ftrace_dyn_arch_init(void)  { -	/* The return code is retured via data */ -	__raw_writel(0, (unsigned long)data); -  	return 0;  }  #endif /* CONFIG_DYNAMIC_FTRACE */ diff --git a/arch/sh/kernel/hw_breakpoint.c b/arch/sh/kernel/hw_breakpoint.c index f9173766ec4..2197fc58418 100644 --- a/arch/sh/kernel/hw_breakpoint.c +++ b/arch/sh/kernel/hw_breakpoint.c @@ -52,7 +52,7 @@ int arch_install_hw_breakpoint(struct perf_event *bp)  	int i;  	for (i = 0; i < sh_ubc->num_events; i++) { -		struct perf_event **slot = &__get_cpu_var(bp_per_reg[i]); +		struct perf_event **slot = this_cpu_ptr(&bp_per_reg[i]);  		if (!*slot) {  			*slot = bp; @@ -84,7 +84,7 @@ void arch_uninstall_hw_breakpoint(struct perf_event *bp)  	int i;  	for (i = 0; i < sh_ubc->num_events; i++) { -		struct perf_event **slot = &__get_cpu_var(bp_per_reg[i]); +		struct perf_event **slot = this_cpu_ptr(&bp_per_reg[i]);  		if (*slot == bp) {  			*slot = NULL; diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c index 2ea4483fd72..be616ee0cf8 100644 --- a/arch/sh/kernel/idle.c +++ b/arch/sh/kernel/idle.c @@ -16,7 +16,6 @@  #include <linux/thread_info.h>  #include <linux/irqflags.h>  #include <linux/smp.h> -#include <linux/cpuidle.h>  #include <linux/atomic.h>  #include <asm/pgalloc.h>  #include <asm/smp.h> @@ -40,8 +39,7 @@ void arch_cpu_idle_dead(void)  void arch_cpu_idle(void)  { -	if (cpuidle_idle_call()) -		sh_idle(); +	sh_idle();  }  void __init select_idle_routine(void) diff --git a/arch/sh/kernel/io_trapped.c b/arch/sh/kernel/io_trapped.c index c0a9761f2f8..f8ce36286ce 100644 --- a/arch/sh/kernel/io_trapped.c +++ b/arch/sh/kernel/io_trapped.c @@ -22,7 +22,7 @@  #define TRAPPED_PAGES_MAX 16 -#ifdef CONFIG_HAS_IOPORT +#ifdef CONFIG_HAS_IOPORT_MAP  LIST_HEAD(trapped_io);  EXPORT_SYMBOL_GPL(trapped_io);  #endif @@ -90,7 +90,7 @@ int register_trapped_io(struct trapped_io *tiop)  	tiop->magic = IO_TRAPPED_MAGIC;  	INIT_LIST_HEAD(&tiop->list);  	spin_lock_irq(&trapped_lock); -#ifdef CONFIG_HAS_IOPORT +#ifdef CONFIG_HAS_IOPORT_MAP  	if (flags & IORESOURCE_IO)  		list_add(&tiop->list, &trapped_io);  #endif diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c index 063af10ff3c..65a1ecd77f9 100644 --- a/arch/sh/kernel/irq.c +++ b/arch/sh/kernel/irq.c @@ -149,47 +149,32 @@ void irq_ctx_exit(int cpu)  	hardirq_ctx[cpu] = NULL;  } -asmlinkage void do_softirq(void) +void do_softirq_own_stack(void)  { -	unsigned long flags;  	struct thread_info *curctx;  	union irq_ctx *irqctx;  	u32 *isp; -	if (in_interrupt()) -		return; - -	local_irq_save(flags); - -	if (local_softirq_pending()) { -		curctx = current_thread_info(); -		irqctx = softirq_ctx[smp_processor_id()]; -		irqctx->tinfo.task = curctx->task; -		irqctx->tinfo.previous_sp = current_stack_pointer; - -		/* build the stack frame on the softirq stack */ -		isp = (u32 *)((char *)irqctx + sizeof(*irqctx)); - -		__asm__ __volatile__ ( -			"mov	r15, r9		\n" -			"jsr	@%0		\n" -			/* switch to the softirq stack */ -			" mov	%1, r15		\n" -			/* restore the thread stack */ -			"mov	r9, r15		\n" -			: /* no outputs */ -			: "r" (__do_softirq), "r" (isp) -			: "memory", "r0", "r1", "r2", "r3", "r4", -			  "r5", "r6", "r7", "r8", "r9", "r15", "t", "pr" -		); - -		/* -		 * Shouldn't happen, we returned above if in_interrupt(): -		 */ -		WARN_ON_ONCE(softirq_count()); -	} - -	local_irq_restore(flags); +	curctx = current_thread_info(); +	irqctx = softirq_ctx[smp_processor_id()]; +	irqctx->tinfo.task = curctx->task; +	irqctx->tinfo.previous_sp = current_stack_pointer; + +	/* build the stack frame on the softirq stack */ +	isp = (u32 *)((char *)irqctx + sizeof(*irqctx)); + +	__asm__ __volatile__ ( +		"mov	r15, r9		\n" +		"jsr	@%0		\n" +		/* switch to the softirq stack */ +		" mov	%1, r15		\n" +		/* restore the thread stack */ +		"mov	r9, r15		\n" +		: /* no outputs */ +		: "r" (__do_softirq), "r" (isp) +		: "memory", "r0", "r1", "r2", "r3", "r4", +		  "r5", "r6", "r7", "r8", "r9", "r15", "t", "pr" +	);  }  #else  static inline void handle_one_irq(unsigned int irq) @@ -232,19 +217,6 @@ void __init init_IRQ(void)  }  #ifdef CONFIG_HOTPLUG_CPU -static void route_irq(struct irq_data *data, unsigned int irq, unsigned int cpu) -{ -	struct irq_desc *desc = irq_to_desc(irq); -	struct irq_chip *chip = irq_data_get_irq_chip(data); - -	printk(KERN_INFO "IRQ%u: moving from cpu%u to cpu%u\n", -	       irq, data->node, cpu); - -	raw_spin_lock_irq(&desc->lock); -	chip->irq_set_affinity(data, cpumask_of(cpu), false); -	raw_spin_unlock_irq(&desc->lock); -} -  /*   * The CPU has been marked offline.  Migrate IRQs off this CPU.  If   * the affinity settings do not allow other CPUs, force them onto any @@ -265,11 +237,8 @@ void migrate_irqs(void)  						    irq, cpu);  				cpumask_setall(data->affinity); -				newcpu = cpumask_any_and(data->affinity, -							 cpu_online_mask);  			} - -			route_irq(data, irq, newcpu); +			irq_set_affinity(irq, data->affinity);  		}  	}  } diff --git a/arch/sh/kernel/kgdb.c b/arch/sh/kernel/kgdb.c index 38b313909ac..adad46e41a1 100644 --- a/arch/sh/kernel/kgdb.c +++ b/arch/sh/kernel/kgdb.c @@ -13,6 +13,7 @@  #include <linux/kdebug.h>  #include <linux/irq.h>  #include <linux/io.h> +#include <linux/sched.h>  #include <asm/cacheflush.h>  #include <asm/traps.h> diff --git a/arch/sh/kernel/kprobes.c b/arch/sh/kernel/kprobes.c index 42b46e61a2d..83acbf3f6de 100644 --- a/arch/sh/kernel/kprobes.c +++ b/arch/sh/kernel/kprobes.c @@ -102,7 +102,7 @@ int __kprobes kprobe_handle_illslot(unsigned long pc)  void __kprobes arch_remove_kprobe(struct kprobe *p)  { -	struct kprobe *saved = &__get_cpu_var(saved_next_opcode); +	struct kprobe *saved = this_cpu_ptr(&saved_next_opcode);  	if (saved->addr) {  		arch_disarm_kprobe(p); @@ -111,7 +111,7 @@ void __kprobes arch_remove_kprobe(struct kprobe *p)  		saved->addr = NULL;  		saved->opcode = 0; -		saved = &__get_cpu_var(saved_next_opcode2); +		saved = this_cpu_ptr(&saved_next_opcode2);  		if (saved->addr) {  			arch_disarm_kprobe(saved); @@ -129,14 +129,14 @@ static void __kprobes save_previous_kprobe(struct kprobe_ctlblk *kcb)  static void __kprobes restore_previous_kprobe(struct kprobe_ctlblk *kcb)  { -	__get_cpu_var(current_kprobe) = kcb->prev_kprobe.kp; +	__this_cpu_write(current_kprobe, kcb->prev_kprobe.kp);  	kcb->kprobe_status = kcb->prev_kprobe.status;  }  static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs,  					 struct kprobe_ctlblk *kcb)  { -	__get_cpu_var(current_kprobe) = p; +	__this_cpu_write(current_kprobe, p);  }  /* @@ -146,15 +146,15 @@ static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs,   */  static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs)  { -	__get_cpu_var(saved_current_opcode).addr = (kprobe_opcode_t *)regs->pc; +	__this_cpu_write(saved_current_opcode.addr, (kprobe_opcode_t *)regs->pc);  	if (p != NULL) {  		struct kprobe *op1, *op2;  		arch_disarm_kprobe(p); -		op1 = &__get_cpu_var(saved_next_opcode); -		op2 = &__get_cpu_var(saved_next_opcode2); +		op1 = this_cpu_ptr(&saved_next_opcode); +		op2 = this_cpu_ptr(&saved_next_opcode2);  		if (OPCODE_JSR(p->opcode) || OPCODE_JMP(p->opcode)) {  			unsigned int reg_nr = ((p->opcode >> 8) & 0x000F); @@ -249,7 +249,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)  			kcb->kprobe_status = KPROBE_REENTER;  			return 1;  		} else { -			p = __get_cpu_var(current_kprobe); +			p = __this_cpu_read(current_kprobe);  			if (p->break_handler && p->break_handler(p, regs)) {  				goto ss_probe;  			} @@ -336,9 +336,9 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)  			continue;  		if (ri->rp && ri->rp->handler) { -			__get_cpu_var(current_kprobe) = &ri->rp->kp; +			__this_cpu_write(current_kprobe, &ri->rp->kp);  			ri->rp->handler(ri, regs); -			__get_cpu_var(current_kprobe) = NULL; +			__this_cpu_write(current_kprobe, NULL);  		}  		orig_ret_address = (unsigned long)ri->ret_addr; @@ -383,19 +383,19 @@ static int __kprobes post_kprobe_handler(struct pt_regs *regs)  		cur->post_handler(cur, regs, 0);  	} -	p = &__get_cpu_var(saved_next_opcode); +	p = this_cpu_ptr(&saved_next_opcode);  	if (p->addr) {  		arch_disarm_kprobe(p);  		p->addr = NULL;  		p->opcode = 0; -		addr = __get_cpu_var(saved_current_opcode).addr; -		__get_cpu_var(saved_current_opcode).addr = NULL; +		addr = __this_cpu_read(saved_current_opcode.addr); +		__this_cpu_write(saved_current_opcode.addr, NULL);  		p = get_kprobe(addr);  		arch_arm_kprobe(p); -		p = &__get_cpu_var(saved_next_opcode2); +		p = this_cpu_ptr(&saved_next_opcode2);  		if (p->addr) {  			arch_disarm_kprobe(p);  			p->addr = NULL; @@ -511,7 +511,7 @@ int __kprobes kprobe_exceptions_notify(struct notifier_block *self,  				if (kprobe_handler(args->regs)) {  					ret = NOTIFY_STOP;  				} else { -					p = __get_cpu_var(current_kprobe); +					p = __this_cpu_read(current_kprobe);  					if (p->break_handler &&  					    p->break_handler(p, args->regs))  						ret = NOTIFY_STOP; diff --git a/arch/sh/kernel/localtimer.c b/arch/sh/kernel/localtimer.c index 8bfc6dfa8b9..b880a7e2ace 100644 --- a/arch/sh/kernel/localtimer.c +++ b/arch/sh/kernel/localtimer.c @@ -32,7 +32,7 @@ static DEFINE_PER_CPU(struct clock_event_device, local_clockevent);   */  void local_timer_interrupt(void)  { -	struct clock_event_device *clk = &__get_cpu_var(local_clockevent); +	struct clock_event_device *clk = this_cpu_ptr(&local_clockevent);  	irq_enter();  	clk->event_handler(clk); diff --git a/arch/sh/kernel/perf_event.c b/arch/sh/kernel/perf_event.c index b9cefebda55..02331672b6d 100644 --- a/arch/sh/kernel/perf_event.c +++ b/arch/sh/kernel/perf_event.c @@ -227,7 +227,7 @@ again:  static void sh_pmu_stop(struct perf_event *event, int flags)  { -	struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); +	struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);  	struct hw_perf_event *hwc = &event->hw;  	int idx = hwc->idx; @@ -245,7 +245,7 @@ static void sh_pmu_stop(struct perf_event *event, int flags)  static void sh_pmu_start(struct perf_event *event, int flags)  { -	struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); +	struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);  	struct hw_perf_event *hwc = &event->hw;  	int idx = hwc->idx; @@ -262,7 +262,7 @@ static void sh_pmu_start(struct perf_event *event, int flags)  static void sh_pmu_del(struct perf_event *event, int flags)  { -	struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); +	struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);  	sh_pmu_stop(event, PERF_EF_UPDATE);  	__clear_bit(event->hw.idx, cpuc->used_mask); @@ -272,7 +272,7 @@ static void sh_pmu_del(struct perf_event *event, int flags)  static int sh_pmu_add(struct perf_event *event, int flags)  { -	struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); +	struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);  	struct hw_perf_event *hwc = &event->hw;  	int idx = hwc->idx;  	int ret = -EAGAIN; diff --git a/arch/sh/kernel/process_32.c b/arch/sh/kernel/process_32.c index ebd3933005b..2885fc9d9dc 100644 --- a/arch/sh/kernel/process_32.c +++ b/arch/sh/kernel/process_32.c @@ -156,7 +156,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,  #endif  		ti->addr_limit = KERNEL_DS;  		ti->status &= ~TS_USEDFPU; -		p->fpu_counter = 0; +		p->thread.fpu_counter = 0;  		return 0;  	}  	*childregs = *current_pt_regs(); @@ -189,7 +189,7 @@ __switch_to(struct task_struct *prev, struct task_struct *next)  	unlazy_fpu(prev, task_pt_regs(prev));  	/* we're going to use this soon, after a few expensive things */ -	if (next->fpu_counter > 5) +	if (next->thread.fpu_counter > 5)  		prefetch(next_t->xstate);  #ifdef CONFIG_MMU @@ -207,7 +207,7 @@ __switch_to(struct task_struct *prev, struct task_struct *next)  	 * restore of the math state immediately to avoid the trap; the  	 * chances of needing FPU soon are obviously high now  	 */ -	if (next->fpu_counter > 5) +	if (next->thread.fpu_counter > 5)  		__fpu_state_restore();  	return prev; diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c index 174d124b419..e2062e64334 100644 --- a/arch/sh/kernel/process_64.c +++ b/arch/sh/kernel/process_64.c @@ -374,7 +374,7 @@ asmlinkage void ret_from_kernel_thread(void);  int copy_thread(unsigned long clone_flags, unsigned long usp,  		unsigned long arg, struct task_struct *p)  { -	struct pt_regs *childregs, *regs = current_pt_regs(); +	struct pt_regs *childregs;  #ifdef CONFIG_SH_FPU  	/* can't happen for a kernel thread */ @@ -393,7 +393,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,  	if (unlikely(p->flags & PF_KTHREAD)) {  		memset(childregs, 0, sizeof(struct pt_regs));  		childregs->regs[2] = (unsigned long)arg; -		childregs->regs[3] = (unsigned long)fn; +		childregs->regs[3] = (unsigned long)usp;  		childregs->sr = (1 << 30); /* not user_mode */  		childregs->sr |= SR_FD; /* Invalidate FPU flag */  		p->thread.pc = (unsigned long) ret_from_kernel_thread; diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index 1cf90e947db..de19cfa768f 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c @@ -230,8 +230,8 @@ void __init __add_active_range(unsigned int nid, unsigned long start_pfn,  	pmb_bolt_mapping((unsigned long)__va(start), start, end - start,  			 PAGE_KERNEL); -	memblock_set_node(PFN_PHYS(start_pfn), -			  PFN_PHYS(end_pfn - start_pfn), nid); +	memblock_set_node(PFN_PHYS(start_pfn), PFN_PHYS(end_pfn - start_pfn), +			  &memblock.memory, nid);  }  void __init __weak plat_early_device_setup(void) diff --git a/arch/sh/kernel/sh_ksyms_32.c b/arch/sh/kernel/sh_ksyms_32.c index 2a0a596ebf6..d77f2f6c7ff 100644 --- a/arch/sh/kernel/sh_ksyms_32.c +++ b/arch/sh/kernel/sh_ksyms_32.c @@ -20,6 +20,11 @@ EXPORT_SYMBOL(csum_partial_copy_generic);  EXPORT_SYMBOL(copy_page);  EXPORT_SYMBOL(__clear_user);  EXPORT_SYMBOL(empty_zero_page); +#ifdef CONFIG_FLATMEM +/* need in pfn_valid macro */ +EXPORT_SYMBOL(min_low_pfn); +EXPORT_SYMBOL(max_low_pfn); +#endif  #define DECLARE_EXPORT(name)		\  	extern void name(void);EXPORT_SYMBOL(name) diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c index 6af6e7c5cac..594cd371aa2 100644 --- a/arch/sh/kernel/signal_32.c +++ b/arch/sh/kernel/signal_32.c @@ -148,11 +148,9 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *r0_p  	return err;  } -asmlinkage int sys_sigreturn(unsigned long r4, unsigned long r5, -			     unsigned long r6, unsigned long r7, -			     struct pt_regs __regs) +asmlinkage int sys_sigreturn(void)  { -	struct pt_regs *regs = RELOC_HIDE(&__regs, 0); +	struct pt_regs *regs = current_pt_regs();  	struct sigframe __user *frame = (struct sigframe __user *)regs->regs[15];  	sigset_t set;  	int r0; @@ -180,11 +178,9 @@ badframe:  	return 0;  } -asmlinkage int sys_rt_sigreturn(unsigned long r4, unsigned long r5, -				unsigned long r6, unsigned long r7, -				struct pt_regs __regs) +asmlinkage int sys_rt_sigreturn(void)  { -	struct pt_regs *regs = RELOC_HIDE(&__regs, 0); +	struct pt_regs *regs = current_pt_regs();  	struct rt_sigframe __user *frame = (struct rt_sigframe __user *)regs->regs[15];  	sigset_t set;  	int r0; diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index 86a7936a980..fc5acfc93c9 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c @@ -111,7 +111,7 @@ void play_dead_common(void)  	irq_ctx_exit(raw_smp_processor_id());  	mb(); -	__get_cpu_var(cpu_state) = CPU_DEAD; +	__this_cpu_write(cpu_state, CPU_DEAD);  	local_irq_disable();  } diff --git a/arch/sh/kernel/sys_sh32.c b/arch/sh/kernel/sys_sh32.c index 497bab3a040..b66d1c62eb1 100644 --- a/arch/sh/kernel/sys_sh32.c +++ b/arch/sh/kernel/sys_sh32.c @@ -21,17 +21,14 @@   * sys_pipe() is the normal C calling standard for creating   * a pipe. It's not the way Unix traditionally does this, though.   */ -asmlinkage int sys_sh_pipe(unsigned long r4, unsigned long r5, -	unsigned long r6, unsigned long r7, -	struct pt_regs __regs) +asmlinkage int sys_sh_pipe(void)  { -	struct pt_regs *regs = RELOC_HIDE(&__regs, 0);  	int fd[2];  	int error;  	error = do_pipe_flags(fd, 0);  	if (!error) { -		regs->regs[1] = fd[1]; +		current_pt_regs()->regs[1] = fd[1];  		return fd[0];  	}  	return error; diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c index 68e99f09171..ff639342a8b 100644 --- a/arch/sh/kernel/traps_32.c +++ b/arch/sh/kernel/traps_32.c @@ -594,9 +594,7 @@ int is_dsp_inst(struct pt_regs *regs)  #endif /* CONFIG_SH_DSP */  #ifdef CONFIG_CPU_SH2A -asmlinkage void do_divide_error(unsigned long r4, unsigned long r5, -				unsigned long r6, unsigned long r7, -				struct pt_regs __regs) +asmlinkage void do_divide_error(unsigned long r4)  {  	siginfo_t info; @@ -613,11 +611,9 @@ asmlinkage void do_divide_error(unsigned long r4, unsigned long r5,  }  #endif -asmlinkage void do_reserved_inst(unsigned long r4, unsigned long r5, -				unsigned long r6, unsigned long r7, -				struct pt_regs __regs) +asmlinkage void do_reserved_inst(void)  { -	struct pt_regs *regs = RELOC_HIDE(&__regs, 0); +	struct pt_regs *regs = current_pt_regs();  	unsigned long error_code;  	struct task_struct *tsk = current; @@ -701,11 +697,9 @@ static int emulate_branch(unsigned short inst, struct pt_regs *regs)  }  #endif -asmlinkage void do_illegal_slot_inst(unsigned long r4, unsigned long r5, -				unsigned long r6, unsigned long r7, -				struct pt_regs __regs) +asmlinkage void do_illegal_slot_inst(void)  { -	struct pt_regs *regs = RELOC_HIDE(&__regs, 0); +	struct pt_regs *regs = current_pt_regs();  	unsigned long inst;  	struct task_struct *tsk = current; @@ -730,15 +724,12 @@ asmlinkage void do_illegal_slot_inst(unsigned long r4, unsigned long r5,  	die_if_no_fixup("illegal slot instruction", regs, inst);  } -asmlinkage void do_exception_error(unsigned long r4, unsigned long r5, -				   unsigned long r6, unsigned long r7, -				   struct pt_regs __regs) +asmlinkage void do_exception_error(void)  { -	struct pt_regs *regs = RELOC_HIDE(&__regs, 0);  	long ex;  	ex = lookup_exception_vector(); -	die_if_kernel("exception", regs, ex); +	die_if_kernel("exception", current_pt_regs(), ex);  }  void per_cpu_trap_init(void) diff --git a/arch/sh/lib/Makefile b/arch/sh/lib/Makefile index 7b95f29e317..3baff31e58c 100644 --- a/arch/sh/lib/Makefile +++ b/arch/sh/lib/Makefile @@ -6,7 +6,7 @@ lib-y  = delay.o memmove.o memchr.o \  	 checksum.o strlen.o div64.o div64-generic.o  # Extracted from libgcc -lib-y += movmem.o ashldi3.o ashrdi3.o lshrdi3.o \ +obj-y += movmem.o ashldi3.o ashrdi3.o lshrdi3.o \  	 ashlsi3.o ashrsi3.o ashiftrt.o lshrsi3.o \  	 udiv_qrnnd.o diff --git a/arch/sh/math-emu/math.c b/arch/sh/math-emu/math.c index b876780c1e1..04aa55fa8c7 100644 --- a/arch/sh/math-emu/math.c +++ b/arch/sh/math-emu/math.c @@ -574,24 +574,6 @@ static int ieee_fpe_handler(struct pt_regs *regs)  	return 0;  } -asmlinkage void do_fpu_error(unsigned long r4, unsigned long r5, -			     unsigned long r6, unsigned long r7, -			     struct pt_regs regs) -{ -	struct task_struct *tsk = current; -	siginfo_t info; - -	if (ieee_fpe_handler (®s)) -		return; - -	regs.pc += 2; -	info.si_signo = SIGFPE; -	info.si_errno = 0; -	info.si_code = FPE_FLTINV; -	info.si_addr = (void __user *)regs.pc; -	force_sig_info(SIGFPE, &info, tsk); -} -  /**   * fpu_init - Initialize FPU registers   * @fpu: Pointer to software emulated FPU registers. diff --git a/arch/sh/mm/cache-debugfs.c b/arch/sh/mm/cache-debugfs.c index 11572519803..777e50f33c0 100644 --- a/arch/sh/mm/cache-debugfs.c +++ b/arch/sh/mm/cache-debugfs.c @@ -36,7 +36,7 @@ static int cache_seq_show(struct seq_file *file, void *iter)  	 */  	jump_to_uncached(); -	ccr = __raw_readl(CCR); +	ccr = __raw_readl(SH_CCR);  	if ((ccr & CCR_CACHE_ENABLE) == 0) {  		back_to_cached(); diff --git a/arch/sh/mm/cache-sh2.c b/arch/sh/mm/cache-sh2.c index defcf719f2e..a74259f2f98 100644 --- a/arch/sh/mm/cache-sh2.c +++ b/arch/sh/mm/cache-sh2.c @@ -63,9 +63,9 @@ static void sh2__flush_invalidate_region(void *start, int size)  	local_irq_save(flags);  	jump_to_uncached(); -	ccr = __raw_readl(CCR); +	ccr = __raw_readl(SH_CCR);  	ccr |= CCR_CACHE_INVALIDATE; -	__raw_writel(ccr, CCR); +	__raw_writel(ccr, SH_CCR);  	back_to_cached();  	local_irq_restore(flags); diff --git a/arch/sh/mm/cache-sh2a.c b/arch/sh/mm/cache-sh2a.c index 949e2d3138a..ee87d081259 100644 --- a/arch/sh/mm/cache-sh2a.c +++ b/arch/sh/mm/cache-sh2a.c @@ -134,7 +134,8 @@ static void sh2a__flush_invalidate_region(void *start, int size)  	/* If there are too many pages then just blow the cache */  	if (((end - begin) >> PAGE_SHIFT) >= MAX_OCACHE_PAGES) { -		__raw_writel(__raw_readl(CCR) | CCR_OCACHE_INVALIDATE, CCR); +		__raw_writel(__raw_readl(SH_CCR) | CCR_OCACHE_INVALIDATE, +			     SH_CCR);  	} else {  		for (v = begin; v < end; v += L1_CACHE_BYTES)  			sh2a_invalidate_line(CACHE_OC_ADDRESS_ARRAY, v); @@ -167,7 +168,8 @@ static void sh2a_flush_icache_range(void *args)  	/* I-Cache invalidate */  	/* If there are too many pages then just blow the cache */  	if (((end - start) >> PAGE_SHIFT) >= MAX_ICACHE_PAGES) { -		__raw_writel(__raw_readl(CCR) | CCR_ICACHE_INVALIDATE, CCR); +		__raw_writel(__raw_readl(SH_CCR) | CCR_ICACHE_INVALIDATE, +			     SH_CCR);  	} else {  		for (v = start; v < end; v += L1_CACHE_BYTES)  			sh2a_invalidate_line(CACHE_IC_ADDRESS_ARRAY, v); diff --git a/arch/sh/mm/cache-sh4.c b/arch/sh/mm/cache-sh4.c index 0e529285b28..51d8f7f31d1 100644 --- a/arch/sh/mm/cache-sh4.c +++ b/arch/sh/mm/cache-sh4.c @@ -133,9 +133,9 @@ static void flush_icache_all(void)  	jump_to_uncached();  	/* Flush I-cache */ -	ccr = __raw_readl(CCR); +	ccr = __raw_readl(SH_CCR);  	ccr |= CCR_CACHE_ICI; -	__raw_writel(ccr, CCR); +	__raw_writel(ccr, SH_CCR);  	/*  	 * back_to_cached() will take care of the barrier for us, don't add diff --git a/arch/sh/mm/cache-shx3.c b/arch/sh/mm/cache-shx3.c index c0adbee97b5..24c58b7dc02 100644 --- a/arch/sh/mm/cache-shx3.c +++ b/arch/sh/mm/cache-shx3.c @@ -19,7 +19,7 @@ void __init shx3_cache_init(void)  {  	unsigned int ccr; -	ccr = __raw_readl(CCR); +	ccr = __raw_readl(SH_CCR);  	/*  	 * If we've got cache aliases, resolve them in hardware. @@ -40,5 +40,5 @@ void __init shx3_cache_init(void)  	ccr |= CCR_CACHE_IBE;  #endif -	writel_uncached(ccr, CCR); +	writel_uncached(ccr, SH_CCR);  } diff --git a/arch/sh/mm/cache.c b/arch/sh/mm/cache.c index 616966a96cb..097c2cdd117 100644 --- a/arch/sh/mm/cache.c +++ b/arch/sh/mm/cache.c @@ -285,8 +285,8 @@ void __init cpu_cache_init(void)  {  	unsigned int cache_disabled = 0; -#ifdef CCR -	cache_disabled = !(__raw_readl(CCR) & CCR_CACHE_ENABLE); +#ifdef SH_CCR +	cache_disabled = !(__raw_readl(SH_CCR) & CCR_CACHE_ENABLE);  #endif  	compute_alias(&boot_cpu_data.icache); diff --git a/arch/sh/mm/hugetlbpage.c b/arch/sh/mm/hugetlbpage.c index 0d676a41081..d7762349ea4 100644 --- a/arch/sh/mm/hugetlbpage.c +++ b/arch/sh/mm/hugetlbpage.c @@ -83,11 +83,6 @@ int pud_huge(pud_t pud)  	return 0;  } -int pmd_huge_support(void) -{ -	return 0; -} -  struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address,  			     pmd_t *pmd, int write)  { diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c index 33890fd267c..2d089fe2cba 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c @@ -231,7 +231,7 @@ static void __init bootmem_init_one_node(unsigned int nid)  	if (!p->node_spanned_pages)  		return; -	end_pfn = p->node_start_pfn + p->node_spanned_pages; +	end_pfn = pgdat_end_pfn(p);  	total_pages = bootmem_bootmap_pages(p->node_spanned_pages);  | 
