ARM: global cleanups
Quite a bit of code gets removed, and some stuff moved around, mostly the old samsung s3c24xx stuff. There should be no functional changes in this series otherwise. Some cleanups have dependencies on other arm-soc branches and will be sent in the second round. Signed-off-by: Arnd Bergmann <arnd@arndb.de> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIVAwUAT2pCjGCrR//JCVInAQLd8RAAqCxhzSc4ewTUP/974gVhujj3TrpiEQcS FKvYWF76yP38Lbf3CJZBZaONRtrQNOhYpVQ0jb3WCV4F8mEH9PCes2q9RObeBYiY TNX8VdcuVjX2U9HaH0+RQtBUdujNLHpEOqtO57un7T5UDNssR5JOive1tNAooRv1 pL0Hgx3AVqUbNOPpqQqHzy/MDdd67S6dX80yysANjFGMX87Nvp/ztYAdNnIdta+Z pDJt+DPlmK8LvjoSL3SEUN0p3Thk75621cCuauGq88PLIB2w62tzF0NFFbvIAgJT 3aMlHM2flOiTJAWkUvA8zJiUzwv/0vYvH3xPoTo84abve3lVfZcY+fHNcfxE/Gge ri2MmkHyimVP3rNeyM0GbN1RTej1TN1MezeQW3nq2wP6nvS2k0/t32ObLLtWU7XA 6iA0hKVMSnhqj4ln6jPAmyaDkaWHyYz97urhgetHqGadvLTiGPXCSBPalSiFmyMo 11tvuqwUNz9tw4nsvGboFQwS2ZoVquC5inoHp5seqZETkGCB67JyeRGxtAM4gbP/ wIRa3OBLY99yo1on6QovWNnSOMC6X4cOvBI/qHIjSEY/T9JVkslY87gRg3LkxCBR XpXfZ6iuLHoSRUGcIjE8D6KHjMgWIDPRnLkIliK4H+3Jn08g0R1MxCplevFCRtis egswZ8C24Xw= =o5Xl -----END PGP SIGNATURE----- Merge tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc Pull "ARM: global cleanups" from Arnd Bergmann: "Quite a bit of code gets removed, and some stuff moved around, mostly the old samsung s3c24xx stuff. There should be no functional changes in this series otherwise. Some cleanups have dependencies on other arm-soc branches and will be sent in the second round. Signed-off-by: Arnd Bergmann <arnd@arndb.de>" Fixed up trivial conflicts mainly due to #include's being changes on both sides. * tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (121 commits) ep93xx: Remove unnecessary includes of ep93xx-regs.h ep93xx: Move EP93XX_SYSCON defines to SoC private header ep93xx: Move crunch code to mach-ep93xx directory ep93xx: Make syscon access functions private to SoC ep93xx: Configure GPIO ports in core code ep93xx: Move peripheral defines to local SoC header ep93xx: Convert the watchdog driver into a platform device. ep93xx: Use ioremap for backlight driver ep93xx: Move GPIO defines to gpio-ep93xx.h ep93xx: Don't use system controller defines in audio drivers ep93xx: Move PHYS_BASE defines to local SoC header file ARM: EXYNOS: Add clock register addresses for EXYNOS4X12 bus devfreq driver ARM: EXYNOS: add clock registers for exynos4x12-cpufreq PM / devfreq: update the name of EXYNOS clock registers that were omitted PM / devfreq: update the name of EXYNOS clock register ARM: EXYNOS: change the prefix S5P_ to EXYNOS4_ for clock ARM: EXYNOS: use static declaration on regarding clock ARM: EXYNOS: replace clock.c for other new EXYNOS SoCs ARM: OMAP2+: Fix build error after merge ARM: S3C24XX: remove call to s3c24xx_setup_clocks ...
This commit is contained in:
		
				commit
				
					
						d61b7a572b
					
				
			
		
					 379 changed files with 4796 additions and 7619 deletions
				
			
		|  | @ -513,20 +513,6 @@ Who:	Bjorn Helgaas <bhelgaas@google.com> | |||
| 
 | ||||
| ---------------------------- | ||||
| 
 | ||||
| What:	The CAP9 SoC family will be removed | ||||
| When:	3.4 | ||||
| Files:	arch/arm/mach-at91/at91cap9.c | ||||
| 	arch/arm/mach-at91/at91cap9_devices.c | ||||
| 	arch/arm/mach-at91/include/mach/at91cap9.h | ||||
| 	arch/arm/mach-at91/include/mach/at91cap9_matrix.h | ||||
| 	arch/arm/mach-at91/include/mach/at91cap9_ddrsdr.h | ||||
| 	arch/arm/mach-at91/board-cap9adk.c | ||||
| Why:	The code is not actively maintained and platforms are now hard to find. | ||||
| Who:	Nicolas Ferre <nicolas.ferre@atmel.com> | ||||
| 	Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | ||||
| 
 | ||||
| ---------------------------- | ||||
| 
 | ||||
| What:	Low Performance USB Block driver ("CONFIG_BLK_DEV_UB") | ||||
| When:	3.6 | ||||
| Why:	This driver provides support for USB storage devices like "USB | ||||
|  |  | |||
|  | @ -327,7 +327,7 @@ config ARCH_AT91 | |||
| 	select CLKDEV_LOOKUP | ||||
| 	help | ||||
| 	  This enables support for systems based on the Atmel AT91RM9200, | ||||
| 	  AT91SAM9 and AT91CAP9 processors. | ||||
| 	  AT91SAM9 processors. | ||||
| 
 | ||||
| config ARCH_BCMRING | ||||
| 	bool "Broadcom BCMRING" | ||||
|  | @ -769,22 +769,21 @@ config ARCH_SA1100 | |||
| 	help | ||||
| 	  Support for StrongARM 11x0 based boards. | ||||
| 
 | ||||
| config ARCH_S3C2410 | ||||
| 	bool "Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443, S3C2450" | ||||
| config ARCH_S3C24XX | ||||
| 	bool "Samsung S3C24XX SoCs" | ||||
| 	select GENERIC_GPIO | ||||
| 	select ARCH_HAS_CPUFREQ | ||||
| 	select HAVE_CLK | ||||
| 	select CLKDEV_LOOKUP | ||||
| 	select ARCH_USES_GETTIMEOFFSET | ||||
| 	select HAVE_S3C2410_I2C if I2C | ||||
| 	select HAVE_S3C_RTC if RTC_CLASS | ||||
| 	select HAVE_S3C2410_WATCHDOG if WATCHDOG | ||||
| 	help | ||||
| 	  Samsung S3C2410X CPU based systems, such as the Simtec Electronics | ||||
| 	  BAST (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or | ||||
| 	  the Samsung SMDK2410 development board (and derivatives). | ||||
| 
 | ||||
| 	  Note, the S3C2416 and the S3C2450 are so close that they even share | ||||
| 	  the same SoC ID code. This means that there is no separate machine | ||||
| 	  directory (no arch/arm/mach-s3c2450) as the S3C2416 was first. | ||||
| 	  Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443 | ||||
| 	  and S3C2450 SoCs based systems, such as the Simtec Electronics BAST | ||||
| 	  (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or the | ||||
| 	  Samsung SMDK2410 development board (and derivatives). | ||||
| 
 | ||||
| config ARCH_S3C64XX | ||||
| 	bool "Samsung S3C64XX" | ||||
|  | @ -1073,12 +1072,10 @@ source "arch/arm/plat-s5p/Kconfig" | |||
| 
 | ||||
| source "arch/arm/plat-spear/Kconfig" | ||||
| 
 | ||||
| if ARCH_S3C2410 | ||||
| source "arch/arm/mach-s3c2410/Kconfig" | ||||
| source "arch/arm/mach-s3c24xx/Kconfig" | ||||
| if ARCH_S3C24XX | ||||
| source "arch/arm/mach-s3c2412/Kconfig" | ||||
| source "arch/arm/mach-s3c2416/Kconfig" | ||||
| source "arch/arm/mach-s3c2440/Kconfig" | ||||
| source "arch/arm/mach-s3c2443/Kconfig" | ||||
| endif | ||||
| 
 | ||||
| if ARCH_S3C64XX | ||||
|  | @ -1595,7 +1592,7 @@ source kernel/Kconfig.preempt | |||
| 
 | ||||
| config HZ | ||||
| 	int | ||||
| 	default 200 if ARCH_EBSA110 || ARCH_S3C2410 || ARCH_S5P64X0 || \ | ||||
| 	default 200 if ARCH_EBSA110 || ARCH_S3C24XX || ARCH_S5P64X0 || \ | ||||
| 		ARCH_S5PV210 || ARCH_EXYNOS4 | ||||
| 	default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER | ||||
| 	default AT91_TIMER_HZ if ARCH_AT91 | ||||
|  | @ -2121,7 +2118,7 @@ config CPU_FREQ_S3C | |||
| 
 | ||||
| config CPU_FREQ_S3C24XX | ||||
| 	bool "CPUfreq driver for Samsung S3C24XX series CPUs (EXPERIMENTAL)" | ||||
| 	depends on ARCH_S3C2410 && CPU_FREQ && EXPERIMENTAL | ||||
| 	depends on ARCH_S3C24XX && CPU_FREQ && EXPERIMENTAL | ||||
| 	select CPU_FREQ_S3C | ||||
| 	help | ||||
| 	  This enables the CPUfreq driver for the Samsung S3C24XX family | ||||
|  |  | |||
|  | @ -86,7 +86,7 @@ choice | |||
| 		depends on HAVE_AT91_DBGU0 | ||||
| 
 | ||||
| 	config AT91_DEBUG_LL_DBGU1 | ||||
| 		bool "Kernel low-level debugging on 9263, 9g45 and cap9" | ||||
| 		bool "Kernel low-level debugging on 9263 and 9g45" | ||||
| 		depends on HAVE_AT91_DBGU1 | ||||
| 
 | ||||
| 	config DEBUG_CLPS711X_UART1 | ||||
|  |  | |||
|  | @ -174,7 +174,7 @@ machine-$(CONFIG_ARCH_PRIMA2)		:= prima2 | |||
| machine-$(CONFIG_ARCH_PXA)		:= pxa | ||||
| machine-$(CONFIG_ARCH_REALVIEW)		:= realview | ||||
| machine-$(CONFIG_ARCH_RPC)		:= rpc | ||||
| machine-$(CONFIG_ARCH_S3C2410)		:= s3c2410 s3c2412 s3c2416 s3c2440 s3c2443 | ||||
| machine-$(CONFIG_ARCH_S3C24XX)		:= s3c24xx s3c2412 s3c2440 | ||||
| machine-$(CONFIG_ARCH_S3C64XX)		:= s3c64xx | ||||
| machine-$(CONFIG_ARCH_S5P64X0)		:= s5p64x0 | ||||
| machine-$(CONFIG_ARCH_S5PC100)		:= s5pc100 | ||||
|  |  | |||
|  | @ -58,7 +58,7 @@ | |||
| 		add	\rb, \rb, #0x00010000	@ Ser1
 | ||||
| #endif | ||||
| 		.endm | ||||
| #elif defined(CONFIG_ARCH_S3C2410) | ||||
| #elif defined(CONFIG_ARCH_S3C24XX) | ||||
| 		.macro loadsp, rb, tmp | ||||
| 		mov	\rb, #0x50000000 | ||||
| 		add	\rb, \rb, #0x4000 * CONFIG_S3C_LOWLEVEL_UART_PORT | ||||
|  |  | |||
|  | @ -1,108 +0,0 @@ | |||
| CONFIG_EXPERIMENTAL=y | ||||
| # CONFIG_LOCALVERSION_AUTO is not set | ||||
| # CONFIG_SWAP is not set | ||||
| CONFIG_SYSVIPC=y | ||||
| CONFIG_LOG_BUF_SHIFT=14 | ||||
| CONFIG_BLK_DEV_INITRD=y | ||||
| CONFIG_SLAB=y | ||||
| CONFIG_MODULES=y | ||||
| CONFIG_MODULE_UNLOAD=y | ||||
| # CONFIG_BLK_DEV_BSG is not set | ||||
| # CONFIG_IOSCHED_DEADLINE is not set | ||||
| # CONFIG_IOSCHED_CFQ is not set | ||||
| CONFIG_ARCH_AT91=y | ||||
| CONFIG_ARCH_AT91CAP9=y | ||||
| CONFIG_MACH_AT91CAP9ADK=y | ||||
| CONFIG_MTD_AT91_DATAFLASH_CARD=y | ||||
| CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | ||||
| # CONFIG_ARM_THUMB is not set | ||||
| CONFIG_AEABI=y | ||||
| CONFIG_LEDS=y | ||||
| CONFIG_LEDS_CPU=y | ||||
| CONFIG_ZBOOT_ROM_TEXT=0x0 | ||||
| CONFIG_ZBOOT_ROM_BSS=0x0 | ||||
| CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/ram0 rw" | ||||
| CONFIG_FPE_NWFPE=y | ||||
| CONFIG_NET=y | ||||
| CONFIG_PACKET=y | ||||
| CONFIG_UNIX=y | ||||
| CONFIG_INET=y | ||||
| CONFIG_IP_PNP=y | ||||
| CONFIG_IP_PNP_BOOTP=y | ||||
| CONFIG_IP_PNP_RARP=y | ||||
| # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||||
| # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||||
| # CONFIG_INET_XFRM_MODE_BEET is not set | ||||
| # CONFIG_INET_LRO is not set | ||||
| # CONFIG_INET_DIAG is not set | ||||
| # CONFIG_IPV6 is not set | ||||
| CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||||
| CONFIG_MTD=y | ||||
| CONFIG_MTD_CMDLINE_PARTS=y | ||||
| CONFIG_MTD_CHAR=y | ||||
| CONFIG_MTD_BLOCK=y | ||||
| CONFIG_MTD_CFI=y | ||||
| CONFIG_MTD_JEDECPROBE=y | ||||
| CONFIG_MTD_CFI_AMDSTD=y | ||||
| CONFIG_MTD_PHYSMAP=y | ||||
| CONFIG_MTD_DATAFLASH=y | ||||
| CONFIG_MTD_NAND=y | ||||
| CONFIG_MTD_NAND_ATMEL=y | ||||
| CONFIG_BLK_DEV_LOOP=y | ||||
| CONFIG_BLK_DEV_RAM=y | ||||
| CONFIG_BLK_DEV_RAM_SIZE=8192 | ||||
| CONFIG_SCSI=y | ||||
| CONFIG_BLK_DEV_SD=y | ||||
| CONFIG_SCSI_MULTI_LUN=y | ||||
| CONFIG_NETDEVICES=y | ||||
| CONFIG_MII=y | ||||
| CONFIG_MACB=y | ||||
| # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||||
| CONFIG_INPUT_EVDEV=y | ||||
| # CONFIG_INPUT_KEYBOARD is not set | ||||
| # CONFIG_INPUT_MOUSE is not set | ||||
| CONFIG_INPUT_TOUCHSCREEN=y | ||||
| CONFIG_TOUCHSCREEN_ADS7846=y | ||||
| # CONFIG_SERIO is not set | ||||
| CONFIG_SERIAL_ATMEL=y | ||||
| CONFIG_SERIAL_ATMEL_CONSOLE=y | ||||
| CONFIG_HW_RANDOM=y | ||||
| CONFIG_I2C=y | ||||
| CONFIG_I2C_CHARDEV=y | ||||
| CONFIG_SPI=y | ||||
| CONFIG_SPI_ATMEL=y | ||||
| # CONFIG_HWMON is not set | ||||
| CONFIG_WATCHDOG=y | ||||
| CONFIG_WATCHDOG_NOWAYOUT=y | ||||
| CONFIG_FB=y | ||||
| CONFIG_FB_ATMEL=y | ||||
| CONFIG_LOGO=y | ||||
| # CONFIG_LOGO_LINUX_MONO is not set | ||||
| # CONFIG_LOGO_LINUX_CLUT224 is not set | ||||
| # CONFIG_USB_HID is not set | ||||
| CONFIG_USB=y | ||||
| CONFIG_USB_DEVICEFS=y | ||||
| CONFIG_USB_MON=y | ||||
| CONFIG_USB_OHCI_HCD=y | ||||
| CONFIG_USB_STORAGE=y | ||||
| CONFIG_USB_GADGET=y | ||||
| CONFIG_USB_ETH=m | ||||
| CONFIG_USB_FILE_STORAGE=m | ||||
| CONFIG_MMC=y | ||||
| CONFIG_MMC_AT91=m | ||||
| CONFIG_RTC_CLASS=y | ||||
| CONFIG_RTC_DRV_AT91SAM9=y | ||||
| CONFIG_EXT2_FS=y | ||||
| CONFIG_VFAT_FS=y | ||||
| CONFIG_TMPFS=y | ||||
| CONFIG_JFFS2_FS=y | ||||
| CONFIG_CRAMFS=y | ||||
| CONFIG_NFS_FS=y | ||||
| CONFIG_ROOT_NFS=y | ||||
| CONFIG_NLS_CODEPAGE_437=y | ||||
| CONFIG_NLS_CODEPAGE_850=y | ||||
| CONFIG_NLS_ISO8859_1=y | ||||
| CONFIG_DEBUG_FS=y | ||||
| CONFIG_DEBUG_KERNEL=y | ||||
| CONFIG_DEBUG_INFO=y | ||||
| CONFIG_DEBUG_USER=y | ||||
|  | @ -13,7 +13,7 @@ CONFIG_MODULE_UNLOAD=y | |||
| CONFIG_MODULE_FORCE_UNLOAD=y | ||||
| # CONFIG_BLK_DEV_BSG is not set | ||||
| CONFIG_BLK_DEV_INTEGRITY=y | ||||
| CONFIG_ARCH_S3C2410=y | ||||
| CONFIG_ARCH_S3C24XX=y | ||||
| CONFIG_S3C_ADC=y | ||||
| CONFIG_S3C24XX_PWM=y | ||||
| CONFIG_MACH_MINI2440=y | ||||
|  |  | |||
|  | @ -3,40 +3,47 @@ CONFIG_SYSVIPC=y | |||
| CONFIG_IKCONFIG=m | ||||
| CONFIG_IKCONFIG_PROC=y | ||||
| CONFIG_LOG_BUF_SHIFT=16 | ||||
| CONFIG_SYSFS_DEPRECATED_V2=y | ||||
| CONFIG_BLK_DEV_INITRD=y | ||||
| CONFIG_SLAB=y | ||||
| CONFIG_MODULES=y | ||||
| CONFIG_MODULE_UNLOAD=y | ||||
| # CONFIG_BLK_DEV_BSG is not set | ||||
| CONFIG_ARCH_S3C2410=y | ||||
| CONFIG_PARTITION_ADVANCED=y | ||||
| CONFIG_BSD_DISKLABEL=y | ||||
| CONFIG_SOLARIS_X86_PARTITION=y | ||||
| CONFIG_ARCH_S3C24XX=y | ||||
| CONFIG_S3C_BOOT_ERROR_RESET=y | ||||
| CONFIG_S3C_ADC=y | ||||
| CONFIG_S3C24XX_PWM=y | ||||
| CONFIG_ARCH_SMDK2410=y | ||||
| CONFIG_CPU_S3C2412=y | ||||
| CONFIG_CPU_S3C2416=y | ||||
| CONFIG_CPU_S3C2440=y | ||||
| CONFIG_CPU_S3C2442=y | ||||
| CONFIG_CPU_S3C2443=y | ||||
| CONFIG_MACH_AML_M5900=y | ||||
| CONFIG_ARCH_BAST=y | ||||
| CONFIG_ARCH_H1940=y | ||||
| CONFIG_MACH_N30=y | ||||
| CONFIG_ARCH_BAST=y | ||||
| CONFIG_MACH_OTOM=y | ||||
| CONFIG_MACH_AML_M5900=y | ||||
| CONFIG_MACH_QT2410=y | ||||
| CONFIG_ARCH_SMDK2410=y | ||||
| CONFIG_MACH_TCT_HAMMER=y | ||||
| CONFIG_MACH_VR1000=y | ||||
| CONFIG_MACH_QT2410=y | ||||
| CONFIG_MACH_JIVE=y | ||||
| CONFIG_MACH_SMDK2412=y | ||||
| CONFIG_MACH_VSTMS=y | ||||
| CONFIG_MACH_SMDK2416=y | ||||
| CONFIG_MACH_ANUBIS=y | ||||
| CONFIG_MACH_NEO1973_GTA02=y | ||||
| CONFIG_MACH_AT2440EVB=y | ||||
| CONFIG_MACH_MINI2440=y | ||||
| CONFIG_MACH_NEXCODER_2440=y | ||||
| CONFIG_MACH_OSIRIS=y | ||||
| CONFIG_MACH_OSIRIS_DVS=m | ||||
| CONFIG_MACH_RX3715=y | ||||
| CONFIG_ARCH_S3C2440=y | ||||
| CONFIG_MACH_NEXCODER_2440=y | ||||
| CONFIG_SMDK2440_CPU2442=y | ||||
| CONFIG_MACH_AT2440EVB=y | ||||
| CONFIG_MACH_MINI2440=y | ||||
| CONFIG_MACH_NEO1973_GTA02=y | ||||
| CONFIG_MACH_RX1950=y | ||||
| CONFIG_SMDK2440_CPU2442=y | ||||
| CONFIG_MACH_SMDK2443=y | ||||
| # CONFIG_ARM_THUMB is not set | ||||
| CONFIG_ZBOOT_ROM_TEXT=0x0 | ||||
|  | @ -45,7 +52,6 @@ CONFIG_CMDLINE="root=/dev/hda1 ro init=/bin/bash console=ttySAC0" | |||
| CONFIG_FPE_NWFPE=y | ||||
| CONFIG_FPE_NWFPE_XP=y | ||||
| CONFIG_BINFMT_AOUT=y | ||||
| CONFIG_PM=y | ||||
| CONFIG_APM_EMULATION=m | ||||
| CONFIG_NET=y | ||||
| CONFIG_PACKET=y | ||||
|  | @ -58,7 +64,6 @@ CONFIG_IP_PNP=y | |||
| CONFIG_IP_PNP_DHCP=y | ||||
| CONFIG_IP_PNP_BOOTP=y | ||||
| CONFIG_NET_IPIP=m | ||||
| CONFIG_NET_IPGRE=m | ||||
| CONFIG_INET_AH=m | ||||
| CONFIG_INET_ESP=m | ||||
| CONFIG_INET_IPCOMP=m | ||||
|  | @ -80,7 +85,6 @@ CONFIG_IPV6_MIP6=m | |||
| CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||||
| CONFIG_IPV6_TUNNEL=m | ||||
| CONFIG_NETFILTER=y | ||||
| CONFIG_NETFILTER_NETLINK_QUEUE=m | ||||
| CONFIG_NF_CONNTRACK=m | ||||
| CONFIG_NF_CONNTRACK_EVENTS=y | ||||
| CONFIG_NF_CT_PROTO_DCCP=m | ||||
|  | @ -138,7 +142,6 @@ CONFIG_IP_VS=m | |||
| CONFIG_NF_CONNTRACK_IPV4=m | ||||
| CONFIG_IP_NF_QUEUE=m | ||||
| CONFIG_IP_NF_IPTABLES=m | ||||
| CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||||
| CONFIG_IP_NF_MATCH_AH=m | ||||
| CONFIG_IP_NF_MATCH_ECN=m | ||||
| CONFIG_IP_NF_MATCH_TTL=m | ||||
|  | @ -150,7 +153,6 @@ CONFIG_NF_NAT=m | |||
| CONFIG_IP_NF_TARGET_MASQUERADE=m | ||||
| CONFIG_IP_NF_TARGET_NETMAP=m | ||||
| CONFIG_IP_NF_TARGET_REDIRECT=m | ||||
| CONFIG_NF_NAT_SNMP_BASIC=m | ||||
| CONFIG_IP_NF_MANGLE=m | ||||
| CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||||
| CONFIG_IP_NF_TARGET_ECN=m | ||||
|  | @ -177,8 +179,6 @@ CONFIG_IP6_NF_TARGET_REJECT=m | |||
| CONFIG_IP6_NF_MANGLE=m | ||||
| CONFIG_IP6_NF_RAW=m | ||||
| CONFIG_BT=m | ||||
| CONFIG_BT_L2CAP=m | ||||
| CONFIG_BT_SCO=m | ||||
| CONFIG_BT_RFCOMM=m | ||||
| CONFIG_BT_RFCOMM_TTY=y | ||||
| CONFIG_BT_BNEP=m | ||||
|  | @ -199,7 +199,6 @@ CONFIG_MAC80211_MESH=y | |||
| CONFIG_MAC80211_LEDS=y | ||||
| CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||||
| CONFIG_MTD=y | ||||
| CONFIG_MTD_PARTITIONS=y | ||||
| CONFIG_MTD_REDBOOT_PARTS=y | ||||
| CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y | ||||
| CONFIG_MTD_CMDLINE_PARTS=y | ||||
|  | @ -221,9 +220,6 @@ CONFIG_BLK_DEV_NBD=m | |||
| CONFIG_BLK_DEV_UB=m | ||||
| CONFIG_BLK_DEV_RAM=y | ||||
| CONFIG_ATA_OVER_ETH=m | ||||
| CONFIG_EEPROM_AT25=m | ||||
| CONFIG_EEPROM_LEGACY=m | ||||
| CONFIG_EEPROM_93CX6=m | ||||
| CONFIG_IDE=y | ||||
| CONFIG_BLK_DEV_IDECD=y | ||||
| CONFIG_BLK_DEV_IDETAPE=m | ||||
|  | @ -240,7 +236,6 @@ CONFIG_SCSI_MULTI_LUN=y | |||
| CONFIG_SCSI_CONSTANTS=y | ||||
| CONFIG_SCSI_SCAN_ASYNC=y | ||||
| CONFIG_NETDEVICES=y | ||||
| CONFIG_NET_ETHERNET=y | ||||
| CONFIG_DM9000=y | ||||
| CONFIG_INPUT_EVDEV=y | ||||
| CONFIG_MOUSE_APPLETOUCH=m | ||||
|  | @ -274,7 +269,6 @@ CONFIG_JOYSTICK_XPAD_LEDS=y | |||
| CONFIG_INPUT_TOUCHSCREEN=y | ||||
| CONFIG_TOUCHSCREEN_USB_COMPOSITE=m | ||||
| CONFIG_INPUT_MISC=y | ||||
| CONFIG_INPUT_ATI_REMOTE=m | ||||
| CONFIG_INPUT_ATI_REMOTE2=m | ||||
| CONFIG_INPUT_KEYSPAN_REMOTE=m | ||||
| CONFIG_INPUT_POWERMATE=m | ||||
|  | @ -300,7 +294,6 @@ CONFIG_I2C_SIMTEC=y | |||
| CONFIG_SPI=y | ||||
| CONFIG_SPI_GPIO=m | ||||
| CONFIG_SPI_S3C24XX=m | ||||
| CONFIG_SPI_S3C24XX_GPIO=m | ||||
| CONFIG_SPI_SPIDEV=m | ||||
| CONFIG_SPI_TLE62X0=m | ||||
| CONFIG_SENSORS_LM75=m | ||||
|  | @ -315,7 +308,6 @@ CONFIG_FB_MODE_HELPERS=y | |||
| CONFIG_FB_S3C2410=y | ||||
| CONFIG_FB_SM501=y | ||||
| CONFIG_BACKLIGHT_PWM=m | ||||
| # CONFIG_VGA_CONSOLE is not set | ||||
| CONFIG_FRAMEBUFFER_CONSOLE=y | ||||
| CONFIG_SOUND=y | ||||
| CONFIG_SND=y | ||||
|  | @ -330,10 +322,6 @@ CONFIG_SND_VERBOSE_PRINTK=y | |||
| CONFIG_SND_USB_AUDIO=m | ||||
| CONFIG_SND_USB_CAIAQ=m | ||||
| CONFIG_SND_SOC=y | ||||
| CONFIG_SND_S3C24XX_SOC=y | ||||
| CONFIG_SND_S3C24XX_SOC_JIVE_WM8750=m | ||||
| CONFIG_SND_S3C24XX_SOC_SMDK2443_WM9710=m | ||||
| CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650=m | ||||
| # CONFIG_USB_HID is not set | ||||
| CONFIG_USB=y | ||||
| CONFIG_USB_DEVICEFS=y | ||||
|  | @ -387,9 +375,7 @@ CONFIG_MMC_TEST=m | |||
| CONFIG_MMC_SDHCI=m | ||||
| CONFIG_MMC_SPI=m | ||||
| CONFIG_MMC_S3C=y | ||||
| CONFIG_LEDS_CLASS=m | ||||
| CONFIG_LEDS_S3C24XX=m | ||||
| CONFIG_LEDS_H1940=m | ||||
| CONFIG_LEDS_PCA9532=m | ||||
| CONFIG_LEDS_GPIO=m | ||||
| CONFIG_LEDS_PCA955X=m | ||||
|  | @ -410,8 +396,6 @@ CONFIG_EXT3_FS=y | |||
| CONFIG_EXT3_FS_POSIX_ACL=y | ||||
| CONFIG_EXT4_FS=m | ||||
| CONFIG_EXT4_FS_POSIX_ACL=y | ||||
| CONFIG_INOTIFY=y | ||||
| CONFIG_AUTOFS_FS=m | ||||
| CONFIG_AUTOFS4_FS=m | ||||
| CONFIG_FUSE_FS=m | ||||
| CONFIG_ISO9660_FS=y | ||||
|  | @ -436,9 +420,6 @@ CONFIG_NFSD=m | |||
| CONFIG_NFSD_V3_ACL=y | ||||
| CONFIG_NFSD_V4=y | ||||
| CONFIG_CIFS=m | ||||
| CONFIG_PARTITION_ADVANCED=y | ||||
| CONFIG_BSD_DISKLABEL=y | ||||
| CONFIG_SOLARIS_X86_PARTITION=y | ||||
| CONFIG_NLS_CODEPAGE_437=y | ||||
| CONFIG_NLS_CODEPAGE_737=m | ||||
| CONFIG_NLS_CODEPAGE_775=m | ||||
|  | @ -481,9 +462,7 @@ CONFIG_MAGIC_SYSRQ=y | |||
| CONFIG_DEBUG_KERNEL=y | ||||
| CONFIG_DEBUG_MUTEXES=y | ||||
| CONFIG_DEBUG_INFO=y | ||||
| # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||||
| CONFIG_SYSCTL_SYSCALL_CHECK=y | ||||
| CONFIG_DEBUG_USER=y | ||||
| CONFIG_DEBUG_ERRORS=y | ||||
| CONFIG_DEBUG_LL=y | ||||
| # CONFIG_CRYPTO_ANSI_CPRNG is not set | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ CONFIG_SLOB=y | |||
| CONFIG_MODULES=y | ||||
| CONFIG_MODULE_UNLOAD=y | ||||
| # CONFIG_BLK_DEV_BSG is not set | ||||
| CONFIG_ARCH_S3C2410=y | ||||
| CONFIG_ARCH_S3C24XX=y | ||||
| CONFIG_MACH_TCT_HAMMER=y | ||||
| CONFIG_ZBOOT_ROM_TEXT=0x0 | ||||
| CONFIG_ZBOOT_ROM_BSS=0x0 | ||||
|  |  | |||
|  | @ -62,9 +62,6 @@ obj-$(CONFIG_SWP_EMULATE)	+= swp_emulate.o | |||
| CFLAGS_swp_emulate.o		:= -Wa,-march=armv7-a | ||||
| obj-$(CONFIG_HAVE_HW_BREAKPOINT)	+= hw_breakpoint.o | ||||
| 
 | ||||
| obj-$(CONFIG_CRUNCH)		+= crunch.o crunch-bits.o | ||||
| AFLAGS_crunch-bits.o		:= -Wa,-mcpu=ep9312 | ||||
| 
 | ||||
| obj-$(CONFIG_CPU_XSCALE)	+= xscale-cp0.o | ||||
| obj-$(CONFIG_CPU_XSC3)		+= xscale-cp0.o | ||||
| obj-$(CONFIG_CPU_MOHAWK)	+= xscale-cp0.o | ||||
|  |  | |||
|  | @ -102,15 +102,6 @@ config ARCH_AT91SAM9G45 | |||
| 	select HAVE_AT91_DBGU1 | ||||
| 	select AT91_SAM9G45_RESET | ||||
| 
 | ||||
| config ARCH_AT91CAP9 | ||||
| 	bool "AT91CAP9" | ||||
| 	select CPU_ARM926T | ||||
| 	select GENERIC_CLOCKEVENTS | ||||
| 	select HAVE_FB_ATMEL | ||||
| 	select HAVE_NET_MACB | ||||
| 	select HAVE_AT91_DBGU1 | ||||
| 	select AT91_SAM9G45_RESET | ||||
| 
 | ||||
| config ARCH_AT91X40 | ||||
| 	bool "AT91x40" | ||||
| 	select ARCH_USES_GETTIMEOFFSET | ||||
|  | @ -447,21 +438,6 @@ endif | |||
| 
 | ||||
| # ---------------------------------------------------------- | ||||
| 
 | ||||
| if ARCH_AT91CAP9 | ||||
| 
 | ||||
| comment "AT91CAP9 Board Type" | ||||
| 
 | ||||
| config MACH_AT91CAP9ADK | ||||
| 	bool "Atmel AT91CAP9A-DK Evaluation Kit" | ||||
| 	select HAVE_AT91_DATAFLASH_CARD | ||||
| 	help | ||||
| 	  Select this if you are using Atmel's AT91CAP9A-DK Evaluation Kit. | ||||
| 	  <http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4138> | ||||
| 
 | ||||
| endif | ||||
| 
 | ||||
| # ---------------------------------------------------------- | ||||
| 
 | ||||
| if ARCH_AT91X40 | ||||
| 
 | ||||
| comment "AT91X40 Board Type" | ||||
|  | @ -544,7 +520,7 @@ config AT91_EARLY_DBGU0 | |||
| 	depends on HAVE_AT91_DBGU0 | ||||
| 
 | ||||
| config AT91_EARLY_DBGU1 | ||||
| 	bool "DBGU on 9263, 9g45 and cap9" | ||||
| 	bool "DBGU on 9263 and 9g45" | ||||
| 	depends on HAVE_AT91_DBGU1 | ||||
| 
 | ||||
| config AT91_EARLY_USART0 | ||||
|  |  | |||
|  | @ -20,7 +20,6 @@ obj-$(CONFIG_ARCH_AT91SAM9263)	+= at91sam9263.o at91sam926x_time.o at91sam9263_d | |||
| obj-$(CONFIG_ARCH_AT91SAM9RL)	+= at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o | ||||
| obj-$(CONFIG_ARCH_AT91SAM9G20)	+= at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o | ||||
| obj-$(CONFIG_ARCH_AT91SAM9G45)	+= at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o | ||||
| obj-$(CONFIG_ARCH_AT91CAP9)	+= at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o | ||||
| obj-$(CONFIG_ARCH_AT91X40)	+= at91x40.o at91x40_time.o | ||||
| 
 | ||||
| # AT91RM9200 board-specific support
 | ||||
|  | @ -81,9 +80,6 @@ obj-$(CONFIG_MACH_AT91SAM9M10G45EK) += board-sam9m10g45ek.o | |||
| # AT91SAM board with device-tree
 | ||||
| obj-$(CONFIG_MACH_AT91SAM_DT) += board-dt.o | ||||
| 
 | ||||
| # AT91CAP9 board-specific support
 | ||||
| obj-$(CONFIG_MACH_AT91CAP9ADK)	+= board-cap9adk.o | ||||
| 
 | ||||
| # AT91X40 board-specific support
 | ||||
| obj-$(CONFIG_MACH_AT91EB01)	+= board-eb01.o | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,11 +3,7 @@ | |||
| #   PARAMS_PHYS must be within 4MB of ZRELADDR | ||||
| #   INITRD_PHYS must be in RAM | ||||
| 
 | ||||
| ifeq ($(CONFIG_ARCH_AT91CAP9),y) | ||||
|    zreladdr-y	+= 0x70008000 | ||||
| params_phys-y	:= 0x70000100 | ||||
| initrd_phys-y	:= 0x70410000 | ||||
| else ifeq ($(CONFIG_ARCH_AT91SAM9G45),y) | ||||
| ifeq ($(CONFIG_ARCH_AT91SAM9G45),y) | ||||
|    zreladdr-y	+= 0x70008000 | ||||
| params_phys-y	:= 0x70000100 | ||||
| initrd_phys-y	:= 0x70410000 | ||||
|  |  | |||
|  | @ -1,404 +0,0 @@ | |||
| /*
 | ||||
|  * arch/arm/mach-at91/at91cap9.c | ||||
|  * | ||||
|  *  Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com> | ||||
|  *  Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com> | ||||
|  *  Copyright (C) 2007 Atmel Corporation. | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/module.h> | ||||
| 
 | ||||
| #include <asm/proc-fns.h> | ||||
| #include <asm/irq.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
| 
 | ||||
| #include <mach/cpu.h> | ||||
| #include <mach/at91cap9.h> | ||||
| #include <mach/at91_pmc.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| #include "generic.h" | ||||
| #include "clock.h" | ||||
| #include "sam9_smc.h" | ||||
| 
 | ||||
| /* --------------------------------------------------------------------
 | ||||
|  *  Clocks | ||||
|  * -------------------------------------------------------------------- */ | ||||
| 
 | ||||
| /*
 | ||||
|  * The peripheral clocks. | ||||
|  */ | ||||
| static struct clk pioABCD_clk = { | ||||
| 	.name		= "pioABCD_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_PIOABCD, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk mpb0_clk = { | ||||
| 	.name		= "mpb0_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_MPB0, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk mpb1_clk = { | ||||
| 	.name		= "mpb1_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_MPB1, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk mpb2_clk = { | ||||
| 	.name		= "mpb2_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_MPB2, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk mpb3_clk = { | ||||
| 	.name		= "mpb3_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_MPB3, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk mpb4_clk = { | ||||
| 	.name		= "mpb4_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_MPB4, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk usart0_clk = { | ||||
| 	.name		= "usart0_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_US0, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk usart1_clk = { | ||||
| 	.name		= "usart1_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_US1, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk usart2_clk = { | ||||
| 	.name		= "usart2_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_US2, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk mmc0_clk = { | ||||
| 	.name		= "mci0_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_MCI0, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk mmc1_clk = { | ||||
| 	.name		= "mci1_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_MCI1, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk can_clk = { | ||||
| 	.name		= "can_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_CAN, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk twi_clk = { | ||||
| 	.name		= "twi_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_TWI, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk spi0_clk = { | ||||
| 	.name		= "spi0_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_SPI0, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk spi1_clk = { | ||||
| 	.name		= "spi1_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_SPI1, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk ssc0_clk = { | ||||
| 	.name		= "ssc0_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_SSC0, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk ssc1_clk = { | ||||
| 	.name		= "ssc1_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_SSC1, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk ac97_clk = { | ||||
| 	.name		= "ac97_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_AC97C, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk tcb_clk = { | ||||
| 	.name		= "tcb_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_TCB, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk pwm_clk = { | ||||
| 	.name		= "pwm_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_PWMC, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk macb_clk = { | ||||
| 	.name		= "pclk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_EMAC, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk aestdes_clk = { | ||||
| 	.name		= "aestdes_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_AESTDES, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk adc_clk = { | ||||
| 	.name		= "adc_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_ADC, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk isi_clk = { | ||||
| 	.name		= "isi_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_ISI, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk lcdc_clk = { | ||||
| 	.name		= "lcdc_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_LCDC, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk dma_clk = { | ||||
| 	.name		= "dma_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_DMA, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk udphs_clk = { | ||||
| 	.name		= "udphs_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_UDPHS, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| static struct clk ohci_clk = { | ||||
| 	.name		= "ohci_clk", | ||||
| 	.pmc_mask	= 1 << AT91CAP9_ID_UHP, | ||||
| 	.type		= CLK_TYPE_PERIPHERAL, | ||||
| }; | ||||
| 
 | ||||
| static struct clk *periph_clocks[] __initdata = { | ||||
| 	&pioABCD_clk, | ||||
| 	&mpb0_clk, | ||||
| 	&mpb1_clk, | ||||
| 	&mpb2_clk, | ||||
| 	&mpb3_clk, | ||||
| 	&mpb4_clk, | ||||
| 	&usart0_clk, | ||||
| 	&usart1_clk, | ||||
| 	&usart2_clk, | ||||
| 	&mmc0_clk, | ||||
| 	&mmc1_clk, | ||||
| 	&can_clk, | ||||
| 	&twi_clk, | ||||
| 	&spi0_clk, | ||||
| 	&spi1_clk, | ||||
| 	&ssc0_clk, | ||||
| 	&ssc1_clk, | ||||
| 	&ac97_clk, | ||||
| 	&tcb_clk, | ||||
| 	&pwm_clk, | ||||
| 	&macb_clk, | ||||
| 	&aestdes_clk, | ||||
| 	&adc_clk, | ||||
| 	&isi_clk, | ||||
| 	&lcdc_clk, | ||||
| 	&dma_clk, | ||||
| 	&udphs_clk, | ||||
| 	&ohci_clk, | ||||
| 	// irq0 .. irq1
 | ||||
| }; | ||||
| 
 | ||||
| static struct clk_lookup periph_clocks_lookups[] = { | ||||
| 	/* One additional fake clock for macb_hclk */ | ||||
| 	CLKDEV_CON_ID("hclk", &macb_clk), | ||||
| 	CLKDEV_CON_DEV_ID("hclk", "atmel_usba_udc", &utmi_clk), | ||||
| 	CLKDEV_CON_DEV_ID("pclk", "atmel_usba_udc", &udphs_clk), | ||||
| 	CLKDEV_CON_DEV_ID("mci_clk", "at91_mci.0", &mmc0_clk), | ||||
| 	CLKDEV_CON_DEV_ID("mci_clk", "at91_mci.1", &mmc1_clk), | ||||
| 	CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.0", &spi0_clk), | ||||
| 	CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.1", &spi1_clk), | ||||
| 	CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tcb_clk), | ||||
| 	CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk), | ||||
| 	CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), | ||||
| 	/* fake hclk clock */ | ||||
| 	CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), | ||||
| 	CLKDEV_CON_ID("pioA", &pioABCD_clk), | ||||
| 	CLKDEV_CON_ID("pioB", &pioABCD_clk), | ||||
| 	CLKDEV_CON_ID("pioC", &pioABCD_clk), | ||||
| 	CLKDEV_CON_ID("pioD", &pioABCD_clk), | ||||
| }; | ||||
| 
 | ||||
| static struct clk_lookup usart_clocks_lookups[] = { | ||||
| 	CLKDEV_CON_DEV_ID("usart", "atmel_usart.0", &mck), | ||||
| 	CLKDEV_CON_DEV_ID("usart", "atmel_usart.1", &usart0_clk), | ||||
| 	CLKDEV_CON_DEV_ID("usart", "atmel_usart.2", &usart1_clk), | ||||
| 	CLKDEV_CON_DEV_ID("usart", "atmel_usart.3", &usart2_clk), | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  * The four programmable clocks. | ||||
|  * You must configure pin multiplexing to bring these signals out. | ||||
|  */ | ||||
| static struct clk pck0 = { | ||||
| 	.name		= "pck0", | ||||
| 	.pmc_mask	= AT91_PMC_PCK0, | ||||
| 	.type		= CLK_TYPE_PROGRAMMABLE, | ||||
| 	.id		= 0, | ||||
| }; | ||||
| static struct clk pck1 = { | ||||
| 	.name		= "pck1", | ||||
| 	.pmc_mask	= AT91_PMC_PCK1, | ||||
| 	.type		= CLK_TYPE_PROGRAMMABLE, | ||||
| 	.id		= 1, | ||||
| }; | ||||
| static struct clk pck2 = { | ||||
| 	.name		= "pck2", | ||||
| 	.pmc_mask	= AT91_PMC_PCK2, | ||||
| 	.type		= CLK_TYPE_PROGRAMMABLE, | ||||
| 	.id		= 2, | ||||
| }; | ||||
| static struct clk pck3 = { | ||||
| 	.name		= "pck3", | ||||
| 	.pmc_mask	= AT91_PMC_PCK3, | ||||
| 	.type		= CLK_TYPE_PROGRAMMABLE, | ||||
| 	.id		= 3, | ||||
| }; | ||||
| 
 | ||||
| static void __init at91cap9_register_clocks(void) | ||||
| { | ||||
| 	int i; | ||||
| 
 | ||||
| 	for (i = 0; i < ARRAY_SIZE(periph_clocks); i++) | ||||
| 		clk_register(periph_clocks[i]); | ||||
| 
 | ||||
| 	clkdev_add_table(periph_clocks_lookups, | ||||
| 			 ARRAY_SIZE(periph_clocks_lookups)); | ||||
| 	clkdev_add_table(usart_clocks_lookups, | ||||
| 			 ARRAY_SIZE(usart_clocks_lookups)); | ||||
| 
 | ||||
| 	clk_register(&pck0); | ||||
| 	clk_register(&pck1); | ||||
| 	clk_register(&pck2); | ||||
| 	clk_register(&pck3); | ||||
| } | ||||
| 
 | ||||
| static struct clk_lookup console_clock_lookup; | ||||
| 
 | ||||
| void __init at91cap9_set_console_clock(int id) | ||||
| { | ||||
| 	if (id >= ARRAY_SIZE(usart_clocks_lookups)) | ||||
| 		return; | ||||
| 
 | ||||
| 	console_clock_lookup.con_id = "usart"; | ||||
| 	console_clock_lookup.clk = usart_clocks_lookups[id].clk; | ||||
| 	clkdev_add(&console_clock_lookup); | ||||
| } | ||||
| 
 | ||||
| /* --------------------------------------------------------------------
 | ||||
|  *  GPIO | ||||
|  * -------------------------------------------------------------------- */ | ||||
| 
 | ||||
| static struct at91_gpio_bank at91cap9_gpio[] __initdata = { | ||||
| 	{ | ||||
| 		.id		= AT91CAP9_ID_PIOABCD, | ||||
| 		.regbase	= AT91CAP9_BASE_PIOA, | ||||
| 	}, { | ||||
| 		.id		= AT91CAP9_ID_PIOABCD, | ||||
| 		.regbase	= AT91CAP9_BASE_PIOB, | ||||
| 	}, { | ||||
| 		.id		= AT91CAP9_ID_PIOABCD, | ||||
| 		.regbase	= AT91CAP9_BASE_PIOC, | ||||
| 	}, { | ||||
| 		.id		= AT91CAP9_ID_PIOABCD, | ||||
| 		.regbase	= AT91CAP9_BASE_PIOD, | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| static void at91cap9_idle(void) | ||||
| { | ||||
| 	at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); | ||||
| 	cpu_do_idle(); | ||||
| } | ||||
| 
 | ||||
| /* --------------------------------------------------------------------
 | ||||
|  *  AT91CAP9 processor initialization | ||||
|  * -------------------------------------------------------------------- */ | ||||
| 
 | ||||
| static void __init at91cap9_map_io(void) | ||||
| { | ||||
| 	at91_init_sram(0, AT91CAP9_SRAM_BASE, AT91CAP9_SRAM_SIZE); | ||||
| } | ||||
| 
 | ||||
| static void __init at91cap9_ioremap_registers(void) | ||||
| { | ||||
| 	at91_ioremap_shdwc(AT91CAP9_BASE_SHDWC); | ||||
| 	at91_ioremap_rstc(AT91CAP9_BASE_RSTC); | ||||
| 	at91sam926x_ioremap_pit(AT91CAP9_BASE_PIT); | ||||
| 	at91sam9_ioremap_smc(0, AT91CAP9_BASE_SMC); | ||||
| } | ||||
| 
 | ||||
| static void __init at91cap9_initialize(void) | ||||
| { | ||||
| 	arm_pm_idle = at91cap9_idle; | ||||
| 	arm_pm_restart = at91sam9g45_restart; | ||||
| 	at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1); | ||||
| 
 | ||||
| 	/* Register GPIO subsystem */ | ||||
| 	at91_gpio_init(at91cap9_gpio, 4); | ||||
| 
 | ||||
| 	/* Remember the silicon revision */ | ||||
| 	if (cpu_is_at91cap9_revB()) | ||||
| 		system_rev = 0xB; | ||||
| 	else if (cpu_is_at91cap9_revC()) | ||||
| 		system_rev = 0xC; | ||||
| } | ||||
| 
 | ||||
| /* --------------------------------------------------------------------
 | ||||
|  *  Interrupt initialization | ||||
|  * -------------------------------------------------------------------- */ | ||||
| 
 | ||||
| /*
 | ||||
|  * The default interrupt priority levels (0 = lowest, 7 = highest). | ||||
|  */ | ||||
| static unsigned int at91cap9_default_irq_priority[NR_AIC_IRQS] __initdata = { | ||||
| 	7,	/* Advanced Interrupt Controller (FIQ) */ | ||||
| 	7,	/* System Peripherals */ | ||||
| 	1,	/* Parallel IO Controller A, B, C and D */ | ||||
| 	0,	/* MP Block Peripheral 0 */ | ||||
| 	0,	/* MP Block Peripheral 1 */ | ||||
| 	0,	/* MP Block Peripheral 2 */ | ||||
| 	0,	/* MP Block Peripheral 3 */ | ||||
| 	0,	/* MP Block Peripheral 4 */ | ||||
| 	5,	/* USART 0 */ | ||||
| 	5,	/* USART 1 */ | ||||
| 	5,	/* USART 2 */ | ||||
| 	0,	/* Multimedia Card Interface 0 */ | ||||
| 	0,	/* Multimedia Card Interface 1 */ | ||||
| 	3,	/* CAN */ | ||||
| 	6,	/* Two-Wire Interface */ | ||||
| 	5,	/* Serial Peripheral Interface 0 */ | ||||
| 	5,	/* Serial Peripheral Interface 1 */ | ||||
| 	4,	/* Serial Synchronous Controller 0 */ | ||||
| 	4,	/* Serial Synchronous Controller 1 */ | ||||
| 	5,	/* AC97 Controller */ | ||||
| 	0,	/* Timer Counter 0, 1 and 2 */ | ||||
| 	0,	/* Pulse Width Modulation Controller */ | ||||
| 	3,	/* Ethernet */ | ||||
| 	0,	/* Advanced Encryption Standard, Triple DES*/ | ||||
| 	0,	/* Analog-to-Digital Converter */ | ||||
| 	0,	/* Image Sensor Interface */ | ||||
| 	3,	/* LCD Controller */ | ||||
| 	0,	/* DMA Controller */ | ||||
| 	2,	/* USB Device Port */ | ||||
| 	2,	/* USB Host port */ | ||||
| 	0,	/* Advanced Interrupt Controller (IRQ0) */ | ||||
| 	0,	/* Advanced Interrupt Controller (IRQ1) */ | ||||
| }; | ||||
| 
 | ||||
| struct at91_init_soc __initdata at91cap9_soc = { | ||||
| 	.map_io = at91cap9_map_io, | ||||
| 	.default_irq_priority = at91cap9_default_irq_priority, | ||||
| 	.ioremap_registers = at91cap9_ioremap_registers, | ||||
| 	.register_clocks = at91cap9_register_clocks, | ||||
| 	.init = at91cap9_initialize, | ||||
| }; | ||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -1,396 +0,0 @@ | |||
| /*
 | ||||
|  * linux/arch/arm/mach-at91/board-cap9adk.c | ||||
|  * | ||||
|  *  Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com> | ||||
|  *  Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com> | ||||
|  *  Copyright (C) 2005 SAN People | ||||
|  *  Copyright (C) 2007 Atmel Corporation. | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/types.h> | ||||
| #include <linux/gpio.h> | ||||
| #include <linux/init.h> | ||||
| #include <linux/mm.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/platform_device.h> | ||||
| #include <linux/spi/spi.h> | ||||
| #include <linux/spi/ads7846.h> | ||||
| #include <linux/fb.h> | ||||
| #include <linux/mtd/physmap.h> | ||||
| 
 | ||||
| #include <video/atmel_lcdc.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <asm/setup.h> | ||||
| #include <asm/mach-types.h> | ||||
| 
 | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
| 
 | ||||
| #include <mach/board.h> | ||||
| #include <mach/at91cap9_matrix.h> | ||||
| #include <mach/at91sam9_smc.h> | ||||
| #include <mach/system_rev.h> | ||||
| 
 | ||||
| #include "sam9_smc.h" | ||||
| #include "generic.h" | ||||
| 
 | ||||
| 
 | ||||
| static void __init cap9adk_init_early(void) | ||||
| { | ||||
| 	/* Initialize processor: 12 MHz crystal */ | ||||
| 	at91_initialize(12000000); | ||||
| 
 | ||||
| 	/* Setup the LEDs: USER1 and USER2 LED for cpu/timer... */ | ||||
| 	at91_init_leds(AT91_PIN_PA10, AT91_PIN_PA11); | ||||
| 	/* ... POWER LED always on */ | ||||
| 	at91_set_gpio_output(AT91_PIN_PC29, 1); | ||||
| 
 | ||||
| 	/* Setup the serial ports and console */ | ||||
| 	at91_register_uart(0, 0, 0);		/* DBGU = ttyS0 */ | ||||
| 	at91_set_serial_console(0); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * USB Host port | ||||
|  */ | ||||
| static struct at91_usbh_data __initdata cap9adk_usbh_data = { | ||||
| 	.ports		= 2, | ||||
| 	.vbus_pin	= {-EINVAL, -EINVAL}, | ||||
| 	.overcurrent_pin= {-EINVAL, -EINVAL}, | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  * USB HS Device port | ||||
|  */ | ||||
| static struct usba_platform_data __initdata cap9adk_usba_udc_data = { | ||||
| 	.vbus_pin	= AT91_PIN_PB31, | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  * ADS7846 Touchscreen | ||||
|  */ | ||||
| #if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) | ||||
| static int ads7843_pendown_state(void) | ||||
| { | ||||
| 	return !at91_get_gpio_value(AT91_PIN_PC4);	/* Touchscreen PENIRQ */ | ||||
| } | ||||
| 
 | ||||
| static struct ads7846_platform_data ads_info = { | ||||
| 	.model			= 7843, | ||||
| 	.x_min			= 150, | ||||
| 	.x_max			= 3830, | ||||
| 	.y_min			= 190, | ||||
| 	.y_max			= 3830, | ||||
| 	.vref_delay_usecs	= 100, | ||||
| 	.x_plate_ohms		= 450, | ||||
| 	.y_plate_ohms		= 250, | ||||
| 	.pressure_max		= 15000, | ||||
| 	.debounce_max		= 1, | ||||
| 	.debounce_rep		= 0, | ||||
| 	.debounce_tol		= (~0), | ||||
| 	.get_pendown_state	= ads7843_pendown_state, | ||||
| }; | ||||
| 
 | ||||
| static void __init cap9adk_add_device_ts(void) | ||||
| { | ||||
| 	at91_set_gpio_input(AT91_PIN_PC4, 1);	/* Touchscreen PENIRQ */ | ||||
| 	at91_set_gpio_input(AT91_PIN_PC5, 1);	/* Touchscreen BUSY */ | ||||
| } | ||||
| #else | ||||
| static void __init cap9adk_add_device_ts(void) {} | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  * SPI devices. | ||||
|  */ | ||||
| static struct spi_board_info cap9adk_spi_devices[] = { | ||||
| #if defined(CONFIG_MTD_AT91_DATAFLASH_CARD) | ||||
| 	{	/* DataFlash card */ | ||||
| 		.modalias	= "mtd_dataflash", | ||||
| 		.chip_select	= 0, | ||||
| 		.max_speed_hz	= 15 * 1000 * 1000, | ||||
| 		.bus_num	= 0, | ||||
| 	}, | ||||
| #endif | ||||
| #if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) | ||||
| 	{ | ||||
| 		.modalias	= "ads7846", | ||||
| 		.chip_select	= 3,		/* can be 2 or 3, depending on J2 jumper */ | ||||
| 		.max_speed_hz	= 125000 * 26,	/* (max sample rate @ 3V) * (cmd + data + overhead) */ | ||||
| 		.bus_num	= 0, | ||||
| 		.platform_data	= &ads_info, | ||||
| 		.irq		= AT91_PIN_PC4, | ||||
| 	}, | ||||
| #endif | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  * MCI (SD/MMC) | ||||
|  */ | ||||
| static struct at91_mmc_data __initdata cap9adk_mmc_data = { | ||||
| 	.wire4		= 1, | ||||
| 	.det_pin	= -EINVAL, | ||||
| 	.wp_pin		= -EINVAL, | ||||
| 	.vcc_pin	= -EINVAL, | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  * MACB Ethernet device | ||||
|  */ | ||||
| static struct macb_platform_data __initdata cap9adk_macb_data = { | ||||
| 	.phy_irq_pin	= -EINVAL, | ||||
| 	.is_rmii	= 1, | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  * NAND flash | ||||
|  */ | ||||
| static struct mtd_partition __initdata cap9adk_nand_partitions[] = { | ||||
| 	{ | ||||
| 		.name	= "NAND partition", | ||||
| 		.offset	= 0, | ||||
| 		.size	= MTDPART_SIZ_FULL, | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| static struct atmel_nand_data __initdata cap9adk_nand_data = { | ||||
| 	.ale		= 21, | ||||
| 	.cle		= 22, | ||||
| 	.det_pin	= -EINVAL, | ||||
| 	.rdy_pin	= -EINVAL, | ||||
| 	.enable_pin	= AT91_PIN_PD15, | ||||
| 	.parts		= cap9adk_nand_partitions, | ||||
| 	.num_parts	= ARRAY_SIZE(cap9adk_nand_partitions), | ||||
| }; | ||||
| 
 | ||||
| static struct sam9_smc_config __initdata cap9adk_nand_smc_config = { | ||||
| 	.ncs_read_setup		= 1, | ||||
| 	.nrd_setup		= 2, | ||||
| 	.ncs_write_setup	= 1, | ||||
| 	.nwe_setup		= 2, | ||||
| 
 | ||||
| 	.ncs_read_pulse		= 6, | ||||
| 	.nrd_pulse		= 4, | ||||
| 	.ncs_write_pulse	= 6, | ||||
| 	.nwe_pulse		= 4, | ||||
| 
 | ||||
| 	.read_cycle		= 8, | ||||
| 	.write_cycle		= 8, | ||||
| 
 | ||||
| 	.mode			= AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE, | ||||
| 	.tdf_cycles		= 1, | ||||
| }; | ||||
| 
 | ||||
| static void __init cap9adk_add_device_nand(void) | ||||
| { | ||||
| 	unsigned long csa; | ||||
| 
 | ||||
| 	csa = at91_sys_read(AT91_MATRIX_EBICSA); | ||||
| 	at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_VDDIOMSEL_3_3V); | ||||
| 
 | ||||
| 	cap9adk_nand_data.bus_width_16 = board_have_nand_16bit(); | ||||
| 	/* setup bus-width (8 or 16) */ | ||||
| 	if (cap9adk_nand_data.bus_width_16) | ||||
| 		cap9adk_nand_smc_config.mode |= AT91_SMC_DBW_16; | ||||
| 	else | ||||
| 		cap9adk_nand_smc_config.mode |= AT91_SMC_DBW_8; | ||||
| 
 | ||||
| 	/* configure chip-select 3 (NAND) */ | ||||
| 	sam9_smc_configure(0, 3, &cap9adk_nand_smc_config); | ||||
| 
 | ||||
| 	at91_add_device_nand(&cap9adk_nand_data); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  * NOR flash | ||||
|  */ | ||||
| static struct mtd_partition cap9adk_nor_partitions[] = { | ||||
| 	{ | ||||
| 		.name		= "NOR partition", | ||||
| 		.offset		= 0, | ||||
| 		.size		= MTDPART_SIZ_FULL, | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| static struct physmap_flash_data cap9adk_nor_data = { | ||||
| 	.width		= 2, | ||||
| 	.parts		= cap9adk_nor_partitions, | ||||
| 	.nr_parts	= ARRAY_SIZE(cap9adk_nor_partitions), | ||||
| }; | ||||
| 
 | ||||
| #define NOR_BASE	AT91_CHIPSELECT_0 | ||||
| #define NOR_SIZE	SZ_8M | ||||
| 
 | ||||
| static struct resource nor_flash_resources[] = { | ||||
| 	{ | ||||
| 		.start	= NOR_BASE, | ||||
| 		.end	= NOR_BASE + NOR_SIZE - 1, | ||||
| 		.flags	= IORESOURCE_MEM, | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| static struct platform_device cap9adk_nor_flash = { | ||||
| 	.name		= "physmap-flash", | ||||
| 	.id		= 0, | ||||
| 	.dev		= { | ||||
| 				.platform_data	= &cap9adk_nor_data, | ||||
| 	}, | ||||
| 	.resource	= nor_flash_resources, | ||||
| 	.num_resources	= ARRAY_SIZE(nor_flash_resources), | ||||
| }; | ||||
| 
 | ||||
| static struct sam9_smc_config __initdata cap9adk_nor_smc_config = { | ||||
| 	.ncs_read_setup		= 2, | ||||
| 	.nrd_setup		= 4, | ||||
| 	.ncs_write_setup	= 2, | ||||
| 	.nwe_setup		= 4, | ||||
| 
 | ||||
| 	.ncs_read_pulse		= 10, | ||||
| 	.nrd_pulse		= 8, | ||||
| 	.ncs_write_pulse	= 10, | ||||
| 	.nwe_pulse		= 8, | ||||
| 
 | ||||
| 	.read_cycle		= 16, | ||||
| 	.write_cycle		= 16, | ||||
| 
 | ||||
| 	.mode			= AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_BAT_WRITE | AT91_SMC_DBW_16, | ||||
| 	.tdf_cycles		= 1, | ||||
| }; | ||||
| 
 | ||||
| static __init void cap9adk_add_device_nor(void) | ||||
| { | ||||
| 	unsigned long csa; | ||||
| 
 | ||||
| 	csa = at91_sys_read(AT91_MATRIX_EBICSA); | ||||
| 	at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_EBI_VDDIOMSEL_3_3V); | ||||
| 
 | ||||
| 	/* configure chip-select 0 (NOR) */ | ||||
| 	sam9_smc_configure(0, 0, &cap9adk_nor_smc_config); | ||||
| 
 | ||||
| 	platform_device_register(&cap9adk_nor_flash); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  * LCD Controller | ||||
|  */ | ||||
| #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) | ||||
| static struct fb_videomode at91_tft_vga_modes[] = { | ||||
| 	{ | ||||
| 	        .name           = "TX09D50VM1CCA @ 60", | ||||
| 		.refresh	= 60, | ||||
| 		.xres		= 240,		.yres		= 320, | ||||
| 		.pixclock	= KHZ2PICOS(4965), | ||||
| 
 | ||||
| 		.left_margin	= 1,		.right_margin	= 33, | ||||
| 		.upper_margin	= 1,		.lower_margin	= 0, | ||||
| 		.hsync_len	= 5,		.vsync_len	= 1, | ||||
| 
 | ||||
| 		.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, | ||||
| 		.vmode		= FB_VMODE_NONINTERLACED, | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| static struct fb_monspecs at91fb_default_monspecs = { | ||||
| 	.manufacturer	= "HIT", | ||||
| 	.monitor        = "TX09D70VM1CCA", | ||||
| 
 | ||||
| 	.modedb		= at91_tft_vga_modes, | ||||
| 	.modedb_len	= ARRAY_SIZE(at91_tft_vga_modes), | ||||
| 	.hfmin		= 15000, | ||||
| 	.hfmax		= 64000, | ||||
| 	.vfmin		= 50, | ||||
| 	.vfmax		= 150, | ||||
| }; | ||||
| 
 | ||||
| #define AT91CAP9_DEFAULT_LCDCON2 	(ATMEL_LCDC_MEMOR_LITTLE \ | ||||
| 					| ATMEL_LCDC_DISTYPE_TFT    \ | ||||
| 					| ATMEL_LCDC_CLKMOD_ALWAYSACTIVE) | ||||
| 
 | ||||
| static void at91_lcdc_power_control(int on) | ||||
| { | ||||
| 	if (on) | ||||
| 		at91_set_gpio_value(AT91_PIN_PC0, 0);	/* power up */ | ||||
| 	else | ||||
| 		at91_set_gpio_value(AT91_PIN_PC0, 1);	/* power down */ | ||||
| } | ||||
| 
 | ||||
| /* Driver datas */ | ||||
| static struct atmel_lcdfb_info __initdata cap9adk_lcdc_data = { | ||||
| 	.default_bpp			= 16, | ||||
| 	.default_dmacon			= ATMEL_LCDC_DMAEN, | ||||
| 	.default_lcdcon2		= AT91CAP9_DEFAULT_LCDCON2, | ||||
| 	.default_monspecs		= &at91fb_default_monspecs, | ||||
| 	.atmel_lcdfb_power_control	= at91_lcdc_power_control, | ||||
| 	.guard_time			= 1, | ||||
| }; | ||||
| 
 | ||||
| #else | ||||
| static struct atmel_lcdfb_info __initdata cap9adk_lcdc_data; | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  * AC97 | ||||
|  */ | ||||
| static struct ac97c_platform_data cap9adk_ac97_data = { | ||||
| 	.reset_pin	= -EINVAL, | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| static void __init cap9adk_board_init(void) | ||||
| { | ||||
| 	/* Serial */ | ||||
| 	at91_add_device_serial(); | ||||
| 	/* USB Host */ | ||||
| 	at91_add_device_usbh(&cap9adk_usbh_data); | ||||
| 	/* USB HS */ | ||||
| 	at91_add_device_usba(&cap9adk_usba_udc_data); | ||||
| 	/* SPI */ | ||||
| 	at91_add_device_spi(cap9adk_spi_devices, ARRAY_SIZE(cap9adk_spi_devices)); | ||||
| 	/* Touchscreen */ | ||||
| 	cap9adk_add_device_ts(); | ||||
| 	/* MMC */ | ||||
| 	at91_add_device_mmc(1, &cap9adk_mmc_data); | ||||
| 	/* Ethernet */ | ||||
| 	at91_add_device_eth(&cap9adk_macb_data); | ||||
| 	/* NAND */ | ||||
| 	cap9adk_add_device_nand(); | ||||
| 	/* NOR Flash */ | ||||
| 	cap9adk_add_device_nor(); | ||||
| 	/* I2C */ | ||||
| 	at91_add_device_i2c(NULL, 0); | ||||
| 	/* LCD Controller */ | ||||
| 	at91_add_device_lcdc(&cap9adk_lcdc_data); | ||||
| 	/* AC97 */ | ||||
| 	at91_add_device_ac97(&cap9adk_ac97_data); | ||||
| } | ||||
| 
 | ||||
| MACHINE_START(AT91CAP9ADK, "Atmel AT91CAP9A-DK") | ||||
| 	/* Maintainer: Stelian Pop <stelian.pop@leadtechdesign.com> */ | ||||
| 	.timer		= &at91sam926x_timer, | ||||
| 	.map_io		= at91_map_io, | ||||
| 	.init_early	= cap9adk_init_early, | ||||
| 	.init_irq	= at91_init_irq_default, | ||||
| 	.init_machine	= cap9adk_board_init, | ||||
| MACHINE_END | ||||
|  | @ -47,8 +47,7 @@ | |||
| /*
 | ||||
|  * Chips have some kind of clocks : group them by functionality | ||||
|  */ | ||||
| #define cpu_has_utmi()		(  cpu_is_at91cap9() \ | ||||
| 				|| cpu_is_at91sam9rl() \ | ||||
| #define cpu_has_utmi()		(  cpu_is_at91sam9rl() \ | ||||
| 				|| cpu_is_at91sam9g45()) | ||||
| 
 | ||||
| #define cpu_has_800M_plla()	(  cpu_is_at91sam9g20() \ | ||||
|  | @ -602,8 +601,6 @@ static void __init at91_pllb_usbfs_clock_init(unsigned long main_clock) | |||
| 		   cpu_is_at91sam9g10()) { | ||||
| 		uhpck.pmc_mask = AT91SAM926x_PMC_UHP; | ||||
| 		udpck.pmc_mask = AT91SAM926x_PMC_UDP; | ||||
| 	} else if (cpu_is_at91cap9()) { | ||||
| 		uhpck.pmc_mask = AT91CAP9_PMC_UHP; | ||||
| 	} | ||||
| 	at91_sys_write(AT91_CKGR_PLLBR, 0); | ||||
| 
 | ||||
|  |  | |||
|  | @ -39,20 +39,15 @@ static int at91_enter_idle(struct cpuidle_device *dev, | |||
| { | ||||
| 	struct timeval before, after; | ||||
| 	int idle_time; | ||||
| 	u32 saved_lpr; | ||||
| 
 | ||||
| 	local_irq_disable(); | ||||
| 	do_gettimeofday(&before); | ||||
| 	if (index == 0) | ||||
| 		/* Wait for interrupt state */ | ||||
| 		cpu_do_idle(); | ||||
| 	else if (index == 1) { | ||||
| 		asm("b 1f; .align 5; 1:"); | ||||
| 		asm("mcr p15, 0, r0, c7, c10, 4");	/* drain write buffer */ | ||||
| 		saved_lpr = sdram_selfrefresh_enable(); | ||||
| 		cpu_do_idle(); | ||||
| 		sdram_selfrefresh_disable(saved_lpr); | ||||
| 	} | ||||
| 	else if (index == 1) | ||||
| 		at91_standby(); | ||||
| 
 | ||||
| 	do_gettimeofday(&after); | ||||
| 	local_irq_enable(); | ||||
| 	idle_time = (after.tv_sec - before.tv_sec) * USEC_PER_SEC + | ||||
|  |  | |||
|  | @ -45,7 +45,6 @@ extern void __init at91sam9261_set_console_clock(int id); | |||
| extern void __init at91sam9263_set_console_clock(int id); | ||||
| extern void __init at91sam9rl_set_console_clock(int id); | ||||
| extern void __init at91sam9g45_set_console_clock(int id); | ||||
| extern void __init at91cap9_set_console_clock(int id); | ||||
| #ifdef CONFIG_AT91_PMC_UNIT | ||||
| extern int __init at91_clock_init(unsigned long main_clock); | ||||
| #else | ||||
|  |  | |||
|  | @ -23,10 +23,8 @@ | |||
| #define		AT91_PMC_PCK		(1 <<  0)		/* Processor Clock */ | ||||
| #define		AT91RM9200_PMC_UDP	(1 <<  1)		/* USB Devcice Port Clock [AT91RM9200 only] */ | ||||
| #define		AT91RM9200_PMC_MCKUDP	(1 <<  2)		/* USB Device Port Master Clock Automatic Disable on Suspend [AT91RM9200 only] */ | ||||
| #define		AT91CAP9_PMC_DDR	(1 <<  2)		/* DDR Clock [CAP9 revC & some SAM9 only] */ | ||||
| #define		AT91RM9200_PMC_UHP	(1 <<  4)		/* USB Host Port Clock [AT91RM9200 only] */ | ||||
| #define		AT91SAM926x_PMC_UHP	(1 <<  6)		/* USB Host Port Clock [AT91SAM926x only] */ | ||||
| #define		AT91CAP9_PMC_UHP	(1 <<  6)		/* USB Host Port Clock [AT91CAP9 only] */ | ||||
| #define		AT91SAM926x_PMC_UDP	(1 <<  7)		/* USB Devcice Port Clock [AT91SAM926x only] */ | ||||
| #define		AT91_PMC_PCK0		(1 <<  8)		/* Programmable Clock 0 */ | ||||
| #define		AT91_PMC_PCK1		(1 <<  9)		/* Programmable Clock 1 */ | ||||
|  | @ -40,7 +38,7 @@ | |||
| #define	AT91_PMC_PCDR		(AT91_PMC + 0x14)	/* Peripheral Clock Disable Register */ | ||||
| #define	AT91_PMC_PCSR		(AT91_PMC + 0x18)	/* Peripheral Clock Status Register */ | ||||
| 
 | ||||
| #define	AT91_CKGR_UCKR		(AT91_PMC + 0x1C)	/* UTMI Clock Register [some SAM9, CAP9] */ | ||||
| #define	AT91_CKGR_UCKR		(AT91_PMC + 0x1C)	/* UTMI Clock Register [some SAM9] */ | ||||
| #define		AT91_PMC_UPLLEN		(1   << 16)		/* UTMI PLL Enable */ | ||||
| #define		AT91_PMC_UPLLCOUNT	(0xf << 20)		/* UTMI PLL Start-up Time */ | ||||
| #define		AT91_PMC_BIASEN		(1   << 24)		/* UTMI BIAS Enable */ | ||||
|  | @ -48,7 +46,7 @@ | |||
| 
 | ||||
| #define	AT91_CKGR_MOR		(AT91_PMC + 0x20)	/* Main Oscillator Register [not on SAM9RL] */ | ||||
| #define		AT91_PMC_MOSCEN		(1    << 0)		/* Main Oscillator Enable */ | ||||
| #define		AT91_PMC_OSCBYPASS	(1    << 1)		/* Oscillator Bypass [SAM9x, CAP9] */ | ||||
| #define		AT91_PMC_OSCBYPASS	(1    << 1)		/* Oscillator Bypass [SAM9x] */ | ||||
| #define		AT91_PMC_OSCOUNT	(0xff << 8)		/* Main Oscillator Start-up Time */ | ||||
| 
 | ||||
| #define	AT91_CKGR_MCFR		(AT91_PMC + 0x24)	/* Main Clock Frequency Register */ | ||||
|  | @ -87,7 +85,7 @@ | |||
| #define			AT91RM9200_PMC_MDIV_2		(1 << 8) | ||||
| #define			AT91RM9200_PMC_MDIV_3		(2 << 8) | ||||
| #define			AT91RM9200_PMC_MDIV_4		(3 << 8) | ||||
| #define			AT91SAM9_PMC_MDIV_1		(0 << 8)	/* [SAM9,CAP9 only] */ | ||||
| #define			AT91SAM9_PMC_MDIV_1		(0 << 8)	/* [SAM9 only] */ | ||||
| #define			AT91SAM9_PMC_MDIV_2		(1 << 8) | ||||
| #define			AT91SAM9_PMC_MDIV_4		(2 << 8) | ||||
| #define			AT91SAM9_PMC_MDIV_6		(3 << 8)	/* [some SAM9 only] */ | ||||
|  | @ -117,17 +115,15 @@ | |||
| #define		AT91_PMC_LOCKA		(1 <<  1)		/* PLLA Lock */ | ||||
| #define		AT91_PMC_LOCKB		(1 <<  2)		/* PLLB Lock */ | ||||
| #define		AT91_PMC_MCKRDY		(1 <<  3)		/* Master Clock */ | ||||
| #define		AT91_PMC_LOCKU		(1 <<  6)		/* UPLL Lock [some SAM9, AT91CAP9 only] */ | ||||
| #define		AT91_PMC_OSCSEL		(1 <<  7)		/* Slow Clock Oscillator [AT91CAP9 revC only] */ | ||||
| #define		AT91_PMC_LOCKU		(1 <<  6)		/* UPLL Lock [some SAM9] */ | ||||
| #define		AT91_PMC_PCK0RDY	(1 <<  8)		/* Programmable Clock 0 */ | ||||
| #define		AT91_PMC_PCK1RDY	(1 <<  9)		/* Programmable Clock 1 */ | ||||
| #define		AT91_PMC_PCK2RDY	(1 << 10)		/* Programmable Clock 2 */ | ||||
| #define		AT91_PMC_PCK3RDY	(1 << 11)		/* Programmable Clock 3 */ | ||||
| #define	AT91_PMC_IMR		(AT91_PMC + 0x6c)	/* Interrupt Mask Register */ | ||||
| 
 | ||||
| #define AT91_PMC_PROT		(AT91_PMC + 0xe4)	/* Protect Register [AT91CAP9 revC only] */ | ||||
| #define AT91_PMC_PROT		(AT91_PMC + 0xe4)	/* Write Protect Mode Register [some SAM9] */ | ||||
| #define		AT91_PMC_PROTKEY	0x504d4301	/* Activation Code */ | ||||
| 
 | ||||
| #define AT91_PMC_VER		(AT91_PMC + 0xfc)	/* PMC Module Version [AT91CAP9 only] */ | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -1,122 +0,0 @@ | |||
| /*
 | ||||
|  * arch/arm/mach-at91/include/mach/at91cap9.h | ||||
|  * | ||||
|  *  Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com> | ||||
|  *  Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com> | ||||
|  *  Copyright (C) 2007 Atmel Corporation. | ||||
|  * | ||||
|  * Common definitions. | ||||
|  * Based on AT91CAP9 datasheet revision B (Preliminary). | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef AT91CAP9_H | ||||
| #define AT91CAP9_H | ||||
| 
 | ||||
| /*
 | ||||
|  * Peripheral identifiers/interrupts. | ||||
|  */ | ||||
| #define AT91CAP9_ID_PIOABCD	2	/* Parallel IO Controller A, B, C and D */ | ||||
| #define AT91CAP9_ID_MPB0	3	/* MP Block Peripheral 0 */ | ||||
| #define AT91CAP9_ID_MPB1	4	/* MP Block Peripheral 1 */ | ||||
| #define AT91CAP9_ID_MPB2	5	/* MP Block Peripheral 2 */ | ||||
| #define AT91CAP9_ID_MPB3	6	/* MP Block Peripheral 3 */ | ||||
| #define AT91CAP9_ID_MPB4	7	/* MP Block Peripheral 4 */ | ||||
| #define AT91CAP9_ID_US0		8	/* USART 0 */ | ||||
| #define AT91CAP9_ID_US1		9	/* USART 1 */ | ||||
| #define AT91CAP9_ID_US2		10	/* USART 2 */ | ||||
| #define AT91CAP9_ID_MCI0	11	/* Multimedia Card Interface 0 */ | ||||
| #define AT91CAP9_ID_MCI1	12	/* Multimedia Card Interface 1 */ | ||||
| #define AT91CAP9_ID_CAN		13	/* CAN */ | ||||
| #define AT91CAP9_ID_TWI		14	/* Two-Wire Interface */ | ||||
| #define AT91CAP9_ID_SPI0	15	/* Serial Peripheral Interface 0 */ | ||||
| #define AT91CAP9_ID_SPI1	16	/* Serial Peripheral Interface 0 */ | ||||
| #define AT91CAP9_ID_SSC0	17	/* Serial Synchronous Controller 0 */ | ||||
| #define AT91CAP9_ID_SSC1	18	/* Serial Synchronous Controller 1 */ | ||||
| #define AT91CAP9_ID_AC97C	19	/* AC97 Controller */ | ||||
| #define AT91CAP9_ID_TCB		20	/* Timer Counter 0, 1 and 2 */ | ||||
| #define AT91CAP9_ID_PWMC	21	/* Pulse Width Modulation Controller */ | ||||
| #define AT91CAP9_ID_EMAC	22	/* Ethernet */ | ||||
| #define AT91CAP9_ID_AESTDES	23	/* Advanced Encryption Standard, Triple DES */ | ||||
| #define AT91CAP9_ID_ADC		24	/* Analog-to-Digital Converter */ | ||||
| #define AT91CAP9_ID_ISI		25	/* Image Sensor Interface */ | ||||
| #define AT91CAP9_ID_LCDC	26	/* LCD Controller */ | ||||
| #define AT91CAP9_ID_DMA		27	/* DMA Controller */ | ||||
| #define AT91CAP9_ID_UDPHS	28	/* USB High Speed Device Port */ | ||||
| #define AT91CAP9_ID_UHP		29	/* USB Host Port */ | ||||
| #define AT91CAP9_ID_IRQ0	30	/* Advanced Interrupt Controller (IRQ0) */ | ||||
| #define AT91CAP9_ID_IRQ1	31	/* Advanced Interrupt Controller (IRQ1) */ | ||||
| 
 | ||||
| /*
 | ||||
|  * User Peripheral physical base addresses. | ||||
|  */ | ||||
| #define AT91CAP9_BASE_UDPHS		0xfff78000 | ||||
| #define AT91CAP9_BASE_TCB0		0xfff7c000 | ||||
| #define AT91CAP9_BASE_TC0		0xfff7c000 | ||||
| #define AT91CAP9_BASE_TC1		0xfff7c040 | ||||
| #define AT91CAP9_BASE_TC2		0xfff7c080 | ||||
| #define AT91CAP9_BASE_MCI0		0xfff80000 | ||||
| #define AT91CAP9_BASE_MCI1		0xfff84000 | ||||
| #define AT91CAP9_BASE_TWI		0xfff88000 | ||||
| #define AT91CAP9_BASE_US0		0xfff8c000 | ||||
| #define AT91CAP9_BASE_US1		0xfff90000 | ||||
| #define AT91CAP9_BASE_US2		0xfff94000 | ||||
| #define AT91CAP9_BASE_SSC0		0xfff98000 | ||||
| #define AT91CAP9_BASE_SSC1		0xfff9c000 | ||||
| #define AT91CAP9_BASE_AC97C		0xfffa0000 | ||||
| #define AT91CAP9_BASE_SPI0		0xfffa4000 | ||||
| #define AT91CAP9_BASE_SPI1		0xfffa8000 | ||||
| #define AT91CAP9_BASE_CAN		0xfffac000 | ||||
| #define AT91CAP9_BASE_PWMC		0xfffb8000 | ||||
| #define AT91CAP9_BASE_EMAC		0xfffbc000 | ||||
| #define AT91CAP9_BASE_ADC		0xfffc0000 | ||||
| #define AT91CAP9_BASE_ISI		0xfffc4000 | ||||
| 
 | ||||
| /*
 | ||||
|  * System Peripherals (offset from AT91_BASE_SYS) | ||||
|  */ | ||||
| #define AT91_BCRAMC	(0xffffe400 - AT91_BASE_SYS) | ||||
| #define AT91_DDRSDRC0	(0xffffe600 - AT91_BASE_SYS) | ||||
| #define AT91_MATRIX	(0xffffea00 - AT91_BASE_SYS) | ||||
| #define AT91_PMC	(0xfffffc00 - AT91_BASE_SYS) | ||||
| #define AT91_GPBR	(cpu_is_at91cap9_revB() ?	\ | ||||
| 			(0xfffffd50 - AT91_BASE_SYS) :	\ | ||||
| 			(0xfffffd60 - AT91_BASE_SYS)) | ||||
| 
 | ||||
| #define AT91CAP9_BASE_ECC	0xffffe200 | ||||
| #define AT91CAP9_BASE_DMA	0xffffec00 | ||||
| #define AT91CAP9_BASE_SMC	0xffffe800 | ||||
| #define AT91CAP9_BASE_DBGU	AT91_BASE_DBGU1 | ||||
| #define AT91CAP9_BASE_PIOA	0xfffff200 | ||||
| #define AT91CAP9_BASE_PIOB	0xfffff400 | ||||
| #define AT91CAP9_BASE_PIOC	0xfffff600 | ||||
| #define AT91CAP9_BASE_PIOD	0xfffff800 | ||||
| #define AT91CAP9_BASE_RSTC	0xfffffd00 | ||||
| #define AT91CAP9_BASE_SHDWC	0xfffffd10 | ||||
| #define AT91CAP9_BASE_RTT	0xfffffd20 | ||||
| #define AT91CAP9_BASE_PIT	0xfffffd30 | ||||
| #define AT91CAP9_BASE_WDT	0xfffffd40 | ||||
| 
 | ||||
| #define AT91_USART0	AT91CAP9_BASE_US0 | ||||
| #define AT91_USART1	AT91CAP9_BASE_US1 | ||||
| #define AT91_USART2	AT91CAP9_BASE_US2 | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  * Internal Memory. | ||||
|  */ | ||||
| #define AT91CAP9_SRAM_BASE	0x00100000	/* Internal SRAM base address */ | ||||
| #define AT91CAP9_SRAM_SIZE	(32 * SZ_1K)	/* Internal SRAM size (32Kb) */ | ||||
| 
 | ||||
| #define AT91CAP9_ROM_BASE	0x00400000	/* Internal ROM base address */ | ||||
| #define AT91CAP9_ROM_SIZE	(32 * SZ_1K)	/* Internal ROM size (32Kb) */ | ||||
| 
 | ||||
| #define AT91CAP9_LCDC_BASE	0x00500000	/* LCD Controller */ | ||||
| #define AT91CAP9_UDPHS_FIFO	0x00600000	/* USB High Speed Device Port */ | ||||
| #define AT91CAP9_UHP_BASE	0x00700000	/* USB Host controller */ | ||||
| 
 | ||||
| #endif | ||||
|  | @ -1,137 +0,0 @@ | |||
| /*
 | ||||
|  * arch/arm/mach-at91/include/mach/at91cap9_matrix.h | ||||
|  * | ||||
|  *  Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com> | ||||
|  *  Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com> | ||||
|  *  Copyright (C) 2006 Atmel Corporation. | ||||
|  * | ||||
|  * Memory Controllers (MATRIX, EBI) - System peripherals registers. | ||||
|  * Based on AT91CAP9 datasheet revision B (Preliminary). | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef AT91CAP9_MATRIX_H | ||||
| #define AT91CAP9_MATRIX_H | ||||
| 
 | ||||
| #define AT91_MATRIX_MCFG0	(AT91_MATRIX + 0x00)	/* Master Configuration Register 0 */ | ||||
| #define AT91_MATRIX_MCFG1	(AT91_MATRIX + 0x04)	/* Master Configuration Register 1 */ | ||||
| #define AT91_MATRIX_MCFG2	(AT91_MATRIX + 0x08)	/* Master Configuration Register 2 */ | ||||
| #define AT91_MATRIX_MCFG3	(AT91_MATRIX + 0x0C)	/* Master Configuration Register 3 */ | ||||
| #define AT91_MATRIX_MCFG4	(AT91_MATRIX + 0x10)	/* Master Configuration Register 4 */ | ||||
| #define AT91_MATRIX_MCFG5	(AT91_MATRIX + 0x14)	/* Master Configuration Register 5 */ | ||||
| #define AT91_MATRIX_MCFG6	(AT91_MATRIX + 0x18)	/* Master Configuration Register 6 */ | ||||
| #define AT91_MATRIX_MCFG7	(AT91_MATRIX + 0x1C)	/* Master Configuration Register 7 */ | ||||
| #define AT91_MATRIX_MCFG8	(AT91_MATRIX + 0x20)	/* Master Configuration Register 8 */ | ||||
| #define AT91_MATRIX_MCFG9	(AT91_MATRIX + 0x24)	/* Master Configuration Register 9 */ | ||||
| #define AT91_MATRIX_MCFG10	(AT91_MATRIX + 0x28)	/* Master Configuration Register 10 */ | ||||
| #define AT91_MATRIX_MCFG11	(AT91_MATRIX + 0x2C)	/* Master Configuration Register 11 */ | ||||
| #define		AT91_MATRIX_ULBT	(7 << 0)	/* Undefined Length Burst Type */ | ||||
| #define			AT91_MATRIX_ULBT_INFINITE	(0 << 0) | ||||
| #define			AT91_MATRIX_ULBT_SINGLE		(1 << 0) | ||||
| #define			AT91_MATRIX_ULBT_FOUR		(2 << 0) | ||||
| #define			AT91_MATRIX_ULBT_EIGHT		(3 << 0) | ||||
| #define			AT91_MATRIX_ULBT_SIXTEEN	(4 << 0) | ||||
| 
 | ||||
| #define AT91_MATRIX_SCFG0	(AT91_MATRIX + 0x40)	/* Slave Configuration Register 0 */ | ||||
| #define AT91_MATRIX_SCFG1	(AT91_MATRIX + 0x44)	/* Slave Configuration Register 1 */ | ||||
| #define AT91_MATRIX_SCFG2	(AT91_MATRIX + 0x48)	/* Slave Configuration Register 2 */ | ||||
| #define AT91_MATRIX_SCFG3	(AT91_MATRIX + 0x4C)	/* Slave Configuration Register 3 */ | ||||
| #define AT91_MATRIX_SCFG4	(AT91_MATRIX + 0x50)	/* Slave Configuration Register 4 */ | ||||
| #define AT91_MATRIX_SCFG5	(AT91_MATRIX + 0x54)	/* Slave Configuration Register 5 */ | ||||
| #define AT91_MATRIX_SCFG6	(AT91_MATRIX + 0x58)	/* Slave Configuration Register 6 */ | ||||
| #define AT91_MATRIX_SCFG7	(AT91_MATRIX + 0x5C)	/* Slave Configuration Register 7 */ | ||||
| #define AT91_MATRIX_SCFG8	(AT91_MATRIX + 0x60)	/* Slave Configuration Register 8 */ | ||||
| #define AT91_MATRIX_SCFG9	(AT91_MATRIX + 0x64)	/* Slave Configuration Register 9 */ | ||||
| #define		AT91_MATRIX_SLOT_CYCLE		(0xff << 0)	/* Maximum Number of Allowed Cycles for a Burst */ | ||||
| #define		AT91_MATRIX_DEFMSTR_TYPE	(3    << 16)	/* Default Master Type */ | ||||
| #define			AT91_MATRIX_DEFMSTR_TYPE_NONE	(0 << 16) | ||||
| #define			AT91_MATRIX_DEFMSTR_TYPE_LAST	(1 << 16) | ||||
| #define			AT91_MATRIX_DEFMSTR_TYPE_FIXED	(2 << 16) | ||||
| #define		AT91_MATRIX_FIXED_DEFMSTR	(0xf  << 18)	/* Fixed Index of Default Master */ | ||||
| #define		AT91_MATRIX_ARBT		(3    << 24)	/* Arbitration Type */ | ||||
| #define			AT91_MATRIX_ARBT_ROUND_ROBIN	(0 << 24) | ||||
| #define			AT91_MATRIX_ARBT_FIXED_PRIORITY	(1 << 24) | ||||
| 
 | ||||
| #define AT91_MATRIX_PRAS0	(AT91_MATRIX + 0x80)	/* Priority Register A for Slave 0 */ | ||||
| #define AT91_MATRIX_PRBS0	(AT91_MATRIX + 0x84)	/* Priority Register B for Slave 0 */ | ||||
| #define AT91_MATRIX_PRAS1	(AT91_MATRIX + 0x88)	/* Priority Register A for Slave 1 */ | ||||
| #define AT91_MATRIX_PRBS1	(AT91_MATRIX + 0x8C)	/* Priority Register B for Slave 1 */ | ||||
| #define AT91_MATRIX_PRAS2	(AT91_MATRIX + 0x90)	/* Priority Register A for Slave 2 */ | ||||
| #define AT91_MATRIX_PRBS2	(AT91_MATRIX + 0x94)	/* Priority Register B for Slave 2 */ | ||||
| #define AT91_MATRIX_PRAS3	(AT91_MATRIX + 0x98)	/* Priority Register A for Slave 3 */ | ||||
| #define AT91_MATRIX_PRBS3	(AT91_MATRIX + 0x9C)	/* Priority Register B for Slave 3 */ | ||||
| #define AT91_MATRIX_PRAS4	(AT91_MATRIX + 0xA0)	/* Priority Register A for Slave 4 */ | ||||
| #define AT91_MATRIX_PRBS4	(AT91_MATRIX + 0xA4)	/* Priority Register B for Slave 4 */ | ||||
| #define AT91_MATRIX_PRAS5	(AT91_MATRIX + 0xA8)	/* Priority Register A for Slave 5 */ | ||||
| #define AT91_MATRIX_PRBS5	(AT91_MATRIX + 0xAC)	/* Priority Register B for Slave 5 */ | ||||
| #define AT91_MATRIX_PRAS6	(AT91_MATRIX + 0xB0)	/* Priority Register A for Slave 6 */ | ||||
| #define AT91_MATRIX_PRBS6	(AT91_MATRIX + 0xB4)	/* Priority Register B for Slave 6 */ | ||||
| #define AT91_MATRIX_PRAS7	(AT91_MATRIX + 0xB8)	/* Priority Register A for Slave 7 */ | ||||
| #define AT91_MATRIX_PRBS7	(AT91_MATRIX + 0xBC)	/* Priority Register B for Slave 7 */ | ||||
| #define AT91_MATRIX_PRAS8	(AT91_MATRIX + 0xC0)	/* Priority Register A for Slave 8 */ | ||||
| #define AT91_MATRIX_PRBS8	(AT91_MATRIX + 0xC4)	/* Priority Register B for Slave 8 */ | ||||
| #define AT91_MATRIX_PRAS9	(AT91_MATRIX + 0xC8)	/* Priority Register A for Slave 9 */ | ||||
| #define AT91_MATRIX_PRBS9	(AT91_MATRIX + 0xCC)	/* Priority Register B for Slave 9 */ | ||||
| #define		AT91_MATRIX_M0PR		(3 << 0)	/* Master 0 Priority */ | ||||
| #define		AT91_MATRIX_M1PR		(3 << 4)	/* Master 1 Priority */ | ||||
| #define		AT91_MATRIX_M2PR		(3 << 8)	/* Master 2 Priority */ | ||||
| #define		AT91_MATRIX_M3PR		(3 << 12)	/* Master 3 Priority */ | ||||
| #define		AT91_MATRIX_M4PR		(3 << 16)	/* Master 4 Priority */ | ||||
| #define		AT91_MATRIX_M5PR		(3 << 20)	/* Master 5 Priority */ | ||||
| #define		AT91_MATRIX_M6PR		(3 << 24)	/* Master 6 Priority */ | ||||
| #define		AT91_MATRIX_M7PR		(3 << 28)	/* Master 7 Priority */ | ||||
| #define		AT91_MATRIX_M8PR		(3 << 0)	/* Master 8 Priority (in Register B) */ | ||||
| #define		AT91_MATRIX_M9PR		(3 << 4)	/* Master 9 Priority (in Register B) */ | ||||
| #define		AT91_MATRIX_M10PR		(3 << 8)	/* Master 10 Priority (in Register B) */ | ||||
| #define		AT91_MATRIX_M11PR		(3 << 12)	/* Master 11 Priority (in Register B) */ | ||||
| 
 | ||||
| #define AT91_MATRIX_MRCR	(AT91_MATRIX + 0x100)	/* Master Remap Control Register */ | ||||
| #define		AT91_MATRIX_RCB0		(1 << 0)	/* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ | ||||
| #define		AT91_MATRIX_RCB1		(1 << 1)	/* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ | ||||
| #define		AT91_MATRIX_RCB2		(1 << 2) | ||||
| #define		AT91_MATRIX_RCB3		(1 << 3) | ||||
| #define		AT91_MATRIX_RCB4		(1 << 4) | ||||
| #define		AT91_MATRIX_RCB5		(1 << 5) | ||||
| #define		AT91_MATRIX_RCB6		(1 << 6) | ||||
| #define		AT91_MATRIX_RCB7		(1 << 7) | ||||
| #define		AT91_MATRIX_RCB8		(1 << 8) | ||||
| #define		AT91_MATRIX_RCB9		(1 << 9) | ||||
| #define		AT91_MATRIX_RCB10		(1 << 10) | ||||
| #define		AT91_MATRIX_RCB11		(1 << 11) | ||||
| 
 | ||||
| #define AT91_MPBS0_SFR		(AT91_MATRIX + 0x114)	/* MPBlock Slave 0 Special Function Register */ | ||||
| #define AT91_MPBS1_SFR		(AT91_MATRIX + 0x11C)	/* MPBlock Slave 1 Special Function Register */ | ||||
| 
 | ||||
| #define AT91_MATRIX_UDPHS	(AT91_MATRIX + 0x118)	/* USBHS Special Function Register [AT91CAP9 only] */ | ||||
| #define		AT91_MATRIX_SELECT_UDPHS	(0 << 31)	/* select High Speed UDP */ | ||||
| #define		AT91_MATRIX_SELECT_UDP		(1 << 31)	/* select standard UDP */ | ||||
| #define		AT91_MATRIX_UDPHS_BYPASS_LOCK	(1 << 30)	/* bypass lock bit */ | ||||
| 
 | ||||
| #define AT91_MATRIX_EBICSA	(AT91_MATRIX + 0x120)	/* EBI Chip Select Assignment Register */ | ||||
| #define		AT91_MATRIX_EBI_CS1A		(1 << 1)	/* Chip Select 1 Assignment */ | ||||
| #define			AT91_MATRIX_EBI_CS1A_SMC		(0 << 1) | ||||
| #define			AT91_MATRIX_EBI_CS1A_BCRAMC		(1 << 1) | ||||
| #define		AT91_MATRIX_EBI_CS3A		(1 << 3)	/* Chip Select 3 Assignment */ | ||||
| #define			AT91_MATRIX_EBI_CS3A_SMC		(0 << 3) | ||||
| #define			AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA	(1 << 3) | ||||
| #define		AT91_MATRIX_EBI_CS4A		(1 << 4)	/* Chip Select 4 Assignment */ | ||||
| #define			AT91_MATRIX_EBI_CS4A_SMC		(0 << 4) | ||||
| #define			AT91_MATRIX_EBI_CS4A_SMC_CF1		(1 << 4) | ||||
| #define		AT91_MATRIX_EBI_CS5A		(1 << 5)	/* Chip Select 5 Assignment */ | ||||
| #define			AT91_MATRIX_EBI_CS5A_SMC		(0 << 5) | ||||
| #define			AT91_MATRIX_EBI_CS5A_SMC_CF2		(1 << 5) | ||||
| #define		AT91_MATRIX_EBI_DBPUC		(1 << 8)	/* Data Bus Pull-up Configuration */ | ||||
| #define		AT91_MATRIX_EBI_DQSPDC		(1 << 9)	/* Data Qualifier Strobe Pull-Down Configuration */ | ||||
| #define		AT91_MATRIX_EBI_VDDIOMSEL	(1 << 16)	/* Memory voltage selection */ | ||||
| #define			AT91_MATRIX_EBI_VDDIOMSEL_1_8V		(0 << 16) | ||||
| #define			AT91_MATRIX_EBI_VDDIOMSEL_3_3V		(1 << 16) | ||||
| 
 | ||||
| #define AT91_MPBS2_SFR		(AT91_MATRIX + 0x12C)	/* MPBlock Slave 2 Special Function Register */ | ||||
| #define AT91_MPBS3_SFR		(AT91_MATRIX + 0x130)	/* MPBlock Slave 3 Special Function Register */ | ||||
| #define AT91_APB_SFR		(AT91_MATRIX + 0x134)	/* APB Bridge Special Function Register */ | ||||
| 
 | ||||
| #endif | ||||
|  | @ -59,7 +59,6 @@ | |||
| #define		AT91_DDRSDRC_TRP	(0xf << 16)		/* Row precharge delay */ | ||||
| #define		AT91_DDRSDRC_TRRD	(0xf << 20)		/* Active BankA to BankB */ | ||||
| #define		AT91_DDRSDRC_TWTR	(0x7 << 24)		/* Internal Write to Read delay */ | ||||
| #define		AT91CAP9_DDRSDRC_TWTR	(1   << 24)		/* Internal Write to Read delay */ | ||||
| #define		AT91_DDRSDRC_RED_WRRD	(0x1 << 27)		/* Reduce Write to Read Delay [SAM9 Only] */ | ||||
| #define		AT91_DDRSDRC_TMRD	(0xf << 28)		/* Load mode to active/refresh delay */ | ||||
| 
 | ||||
|  | @ -76,7 +75,6 @@ | |||
| #define		AT91_DDRSDRC_TRTP	(0x7  << 12)		/* Read to Precharge delay */ | ||||
| 
 | ||||
| #define AT91_DDRSDRC_LPR	0x1C	/* Low Power Register */ | ||||
| #define AT91CAP9_DDRSDRC_LPR	0x18	/* Low Power Register */ | ||||
| #define		AT91_DDRSDRC_LPCB	(3 << 0)		/* Low-power Configurations */ | ||||
| #define			AT91_DDRSDRC_LPCB_DISABLE		0 | ||||
| #define			AT91_DDRSDRC_LPCB_SELF_REFRESH		1 | ||||
|  | @ -94,11 +92,9 @@ | |||
| #define		AT91_DDRSDRC_UPD_MR	(3 << 20)	 /* Update load mode register and extended mode register */ | ||||
| 
 | ||||
| #define AT91_DDRSDRC_MDR	0x20	/* Memory Device Register */ | ||||
| #define AT91CAP9_DDRSDRC_MDR	0x1C	/* Memory Device Register */ | ||||
| #define		AT91_DDRSDRC_MD		(3 << 0)		/* Memory Device Type */ | ||||
| #define			AT91_DDRSDRC_MD_SDR		0 | ||||
| #define			AT91_DDRSDRC_MD_LOW_POWER_SDR	1 | ||||
| #define			AT91CAP9_DDRSDRC_MD_DDR		2 | ||||
| #define			AT91_DDRSDRC_MD_LOW_POWER_DDR	3 | ||||
| #define			AT91_DDRSDRC_MD_DDR2		6	/* [SAM9 Only] */ | ||||
| #define		AT91_DDRSDRC_DBW	(1 << 4)		/* Data Bus Width */ | ||||
|  | @ -106,16 +102,10 @@ | |||
| #define			AT91_DDRSDRC_DBW_16BITS		(1 <<  4) | ||||
| 
 | ||||
| #define AT91_DDRSDRC_DLL	0x24	/* DLL Information Register */ | ||||
| #define AT91CAP9_DDRSDRC_DLL	0x20	/* DLL Information Register */ | ||||
| #define		AT91_DDRSDRC_MDINC	(1 << 0)		/* Master Delay increment */ | ||||
| #define		AT91_DDRSDRC_MDDEC	(1 << 1)		/* Master Delay decrement */ | ||||
| #define		AT91_DDRSDRC_MDOVF	(1 << 2)		/* Master Delay Overflow */ | ||||
| #define		AT91CAP9_DDRSDRC_SDCOVF	(1 << 3)		/* Slave Delay Correction Overflow */ | ||||
| #define		AT91CAP9_DDRSDRC_SDCUDF	(1 << 4)		/* Slave Delay Correction Underflow */ | ||||
| #define		AT91CAP9_DDRSDRC_SDERF	(1 << 5)		/* Slave Delay Correction error */ | ||||
| #define		AT91_DDRSDRC_MDVAL	(0xff <<  8)		/* Master Delay value */ | ||||
| #define		AT91CAP9_DDRSDRC_SDVAL	(0xff << 16)		/* Slave Delay value */ | ||||
| #define		AT91CAP9_DDRSDRC_SDCVAL	(0xff << 24)		/* Slave Delay Correction value */ | ||||
| 
 | ||||
| #define AT91_DDRSDRC_HS		0x2C	/* High Speed Register [SAM9 Only] */ | ||||
| #define		AT91_DDRSDRC_DIS_ATCP_RD	(1 << 2)	/* Anticip read access is disabled */ | ||||
|  |  | |||
|  | @ -25,7 +25,6 @@ | |||
| #define ARCH_ID_AT91SAM9G45MRL	0x819b05a2	/* aka 9G45-ES2 & non ES lots */ | ||||
| #define ARCH_ID_AT91SAM9G45ES	0x819b05a1	/* 9G45-ES (Engineering Sample) */ | ||||
| #define ARCH_ID_AT91SAM9X5	0x819a05a0 | ||||
| #define ARCH_ID_AT91CAP9	0x039A03A0 | ||||
| 
 | ||||
| #define ARCH_ID_AT91SAM9XE128	0x329973a0 | ||||
| #define ARCH_ID_AT91SAM9XE256	0x329a93a0 | ||||
|  | @ -51,10 +50,6 @@ | |||
| #define ARCH_FAMILY_AT91SAM9	0x01900000 | ||||
| #define ARCH_FAMILY_AT91SAM9XE	0x02900000 | ||||
| 
 | ||||
| /* PMC revision */ | ||||
| #define ARCH_REVISION_CAP9_B	0x399 | ||||
| #define ARCH_REVISION_CAP9_C	0x601 | ||||
| 
 | ||||
| /* RM9200 type */ | ||||
| #define ARCH_REVISON_9200_BGA	(0 << 0) | ||||
| #define ARCH_REVISON_9200_PQFP	(1 << 0) | ||||
|  | @ -63,9 +58,6 @@ enum at91_soc_type { | |||
| 	/* 920T */ | ||||
| 	AT91_SOC_RM9200, | ||||
| 
 | ||||
| 	/* CAP */ | ||||
| 	AT91_SOC_CAP9, | ||||
| 
 | ||||
| 	/* SAM92xx */ | ||||
| 	AT91_SOC_SAM9260, AT91_SOC_SAM9261, AT91_SOC_SAM9263, | ||||
| 
 | ||||
|  | @ -86,9 +78,6 @@ enum at91_soc_subtype { | |||
| 	/* RM9200 */ | ||||
| 	AT91_SOC_RM9200_BGA, AT91_SOC_RM9200_PQFP, | ||||
| 
 | ||||
| 	/* CAP9 */ | ||||
| 	AT91_SOC_CAP9_REV_B, AT91_SOC_CAP9_REV_C, | ||||
| 
 | ||||
| 	/* SAM9260 */ | ||||
| 	AT91_SOC_SAM9XE, | ||||
| 
 | ||||
|  | @ -195,16 +184,6 @@ static inline int at91_soc_is_detected(void) | |||
| #define cpu_is_at91sam9x25()	(0) | ||||
| #endif | ||||
| 
 | ||||
| #ifdef CONFIG_ARCH_AT91CAP9 | ||||
| #define cpu_is_at91cap9()	(at91_soc_initdata.type == AT91_SOC_CAP9) | ||||
| #define cpu_is_at91cap9_revB()	(at91_soc_initdata.subtype == AT91_SOC_CAP9_REV_B) | ||||
| #define cpu_is_at91cap9_revC()	(at91_soc_initdata.subtype == AT91_SOC_CAP9_REV_C) | ||||
| #else | ||||
| #define cpu_is_at91cap9()	(0) | ||||
| #define cpu_is_at91cap9_revB()	(0) | ||||
| #define cpu_is_at91cap9_revC()	(0) | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  * Since this is ARM, we will never run on any AVR32 CPU. But these | ||||
|  * definitions may reduce clutter in common drivers. | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ | |||
| /* DBGU base */ | ||||
| /* rm9200, 9260/9g20, 9261/9g10, 9rl */ | ||||
| #define AT91_BASE_DBGU0	0xfffff200 | ||||
| /* 9263, 9g45, cap9 */ | ||||
| /* 9263, 9g45 */ | ||||
| #define AT91_BASE_DBGU1	0xffffee00 | ||||
| 
 | ||||
| #if defined(CONFIG_ARCH_AT91RM9200) | ||||
|  | @ -34,8 +34,6 @@ | |||
| #include <mach/at91sam9rl.h> | ||||
| #elif defined(CONFIG_ARCH_AT91SAM9G45) | ||||
| #include <mach/at91sam9g45.h> | ||||
| #elif defined(CONFIG_ARCH_AT91CAP9) | ||||
| #include <mach/at91cap9.h> | ||||
| #elif defined(CONFIG_ARCH_AT91X40) | ||||
| #include <mach/at91x40.h> | ||||
| #else | ||||
|  |  | |||
|  | @ -150,11 +150,6 @@ static int at91_pm_verify_clocks(void) | |||
| 			pr_err("AT91: PM - Suspend-to-RAM with USB still active\n"); | ||||
| 			return 0; | ||||
| 		} | ||||
| 	} else if (cpu_is_at91cap9()) { | ||||
| 		if ((scsr & AT91CAP9_PMC_UHP) != 0) { | ||||
| 			pr_err("AT91: PM - Suspend-to-RAM with USB still active\n"); | ||||
| 			return 0; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| #ifdef CONFIG_AT91_PROGRAMMABLE_CLOCKS | ||||
|  | @ -203,7 +198,6 @@ extern u32 at91_slow_clock_sz; | |||
| 
 | ||||
| static int at91_pm_enter(suspend_state_t state) | ||||
| { | ||||
| 	u32 saved_lpr; | ||||
| 	at91_gpio_suspend(); | ||||
| 	at91_irq_suspend(); | ||||
| 
 | ||||
|  | @ -259,16 +253,7 @@ static int at91_pm_enter(suspend_state_t state) | |||
| 			 * For ARM 926 based chips, this requirement is weaker | ||||
| 			 * as at91sam9 can access a RAM in self-refresh mode. | ||||
| 			 */ | ||||
| 			asm volatile (	"mov r0, #0\n\t" | ||||
| 					"b 1f\n\t" | ||||
| 					".align 5\n\t" | ||||
| 					"1: mcr p15, 0, r0, c7, c10, 4\n\t" | ||||
| 					: /* no output */ | ||||
| 					: /* no input */ | ||||
| 					: "r0"); | ||||
| 			saved_lpr = sdram_selfrefresh_enable(); | ||||
| 			wait_for_interrupt_enable(); | ||||
| 			sdram_selfrefresh_disable(saved_lpr); | ||||
| 			at91_standby(); | ||||
| 			break; | ||||
| 
 | ||||
| 		case PM_SUSPEND_ON: | ||||
|  |  | |||
|  | @ -1,3 +1,16 @@ | |||
| /*
 | ||||
|  * AT91 Power Management | ||||
|  * | ||||
|  * Copyright (C) 2005 David Brownell | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  */ | ||||
| #ifndef __ARCH_ARM_MACH_AT91_PM | ||||
| #define __ARCH_ARM_MACH_AT91_PM | ||||
| 
 | ||||
| #ifdef CONFIG_ARCH_AT91RM9200 | ||||
| #include <mach/at91rm9200_mc.h> | ||||
| 
 | ||||
|  | @ -11,36 +24,25 @@ | |||
|  * still in self-refresh is "not recommended", but seems to work. | ||||
|  */ | ||||
| 
 | ||||
| static inline u32 sdram_selfrefresh_enable(void) | ||||
| static inline void at91rm9200_standby(void) | ||||
| { | ||||
| 	u32 saved_lpr = at91_sys_read(AT91_SDRAMC_LPR); | ||||
| 	u32 lpr = at91_sys_read(AT91_SDRAMC_LPR); | ||||
| 
 | ||||
| 	at91_sys_write(AT91_SDRAMC_LPR, 0); | ||||
| 	at91_sys_write(AT91_SDRAMC_SRR, 1); | ||||
| 	return saved_lpr; | ||||
| 	asm volatile( | ||||
| 		"b    1f\n\t" | ||||
| 		".align    5\n\t" | ||||
| 		"1:  mcr    p15, 0, %0, c7, c10, 4\n\t" | ||||
| 		"    str    %0, [%1, %2]\n\t" | ||||
| 		"    str    %3, [%1, %4]\n\t" | ||||
| 		"    mcr    p15, 0, %0, c7, c0, 4\n\t" | ||||
| 		"    str    %5, [%1, %2]" | ||||
| 		: | ||||
| 		: "r" (0), "r" (AT91_BASE_SYS), "r" (AT91_SDRAMC_LPR), | ||||
| 		  "r" (1), "r" (AT91_SDRAMC_SRR), | ||||
| 		  "r" (lpr)); | ||||
| } | ||||
| 
 | ||||
| #define sdram_selfrefresh_disable(saved_lpr)	at91_sys_write(AT91_SDRAMC_LPR, saved_lpr) | ||||
| #define wait_for_interrupt_enable()		asm volatile ("mcr p15, 0, %0, c7, c0, 4" \ | ||||
| 								: : "r" (0)) | ||||
| 
 | ||||
| #elif defined(CONFIG_ARCH_AT91CAP9) | ||||
| #include <mach/at91sam9_ddrsdr.h> | ||||
| 
 | ||||
| 
 | ||||
| static inline u32 sdram_selfrefresh_enable(void) | ||||
| { | ||||
| 	u32 saved_lpr, lpr; | ||||
| 
 | ||||
| 	saved_lpr = at91_ramc_read(0, AT91CAP9_DDRSDRC_LPR); | ||||
| 
 | ||||
| 	lpr = saved_lpr & ~AT91_DDRSDRC_LPCB; | ||||
| 	at91_ramc_write(0, AT91CAP9_DDRSDRC_LPR, lpr | AT91_DDRSDRC_LPCB_SELF_REFRESH); | ||||
| 	return saved_lpr; | ||||
| } | ||||
| 
 | ||||
| #define sdram_selfrefresh_disable(saved_lpr)	at91_ramc_write(0, AT91CAP9_DDRSDRC_LPR, saved_lpr) | ||||
| #define wait_for_interrupt_enable()		cpu_do_idle() | ||||
| #define at91_standby at91rm9200_standby | ||||
| 
 | ||||
| #elif defined(CONFIG_ARCH_AT91SAM9G45) | ||||
| #include <mach/at91sam9_ddrsdr.h> | ||||
|  | @ -48,14 +50,12 @@ static inline u32 sdram_selfrefresh_enable(void) | |||
| /* We manage both DDRAM/SDRAM controllers, we need more than one value to
 | ||||
|  * remember. | ||||
|  */ | ||||
| static u32 saved_lpr1; | ||||
| 
 | ||||
| static inline u32 sdram_selfrefresh_enable(void) | ||||
| static inline void at91sam9g45_standby(void) | ||||
| { | ||||
| 	/* Those tow values allow us to delay self-refresh activation
 | ||||
| 	/* Those two values allow us to delay self-refresh activation
 | ||||
| 	 * to the maximum. */ | ||||
| 	u32 lpr0, lpr1; | ||||
| 	u32 saved_lpr0; | ||||
| 	u32 saved_lpr0, saved_lpr1; | ||||
| 
 | ||||
| 	saved_lpr1 = at91_ramc_read(1, AT91_DDRSDRC_LPR); | ||||
| 	lpr1 = saved_lpr1 & ~AT91_DDRSDRC_LPCB; | ||||
|  | @ -69,15 +69,13 @@ static inline u32 sdram_selfrefresh_enable(void) | |||
| 	at91_ramc_write(0, AT91_DDRSDRC_LPR, lpr0); | ||||
| 	at91_ramc_write(1, AT91_DDRSDRC_LPR, lpr1); | ||||
| 
 | ||||
| 	return saved_lpr0; | ||||
| 	cpu_do_idle(); | ||||
| 
 | ||||
| 	at91_ramc_write(0, AT91_DDRSDRC_LPR, saved_lpr0); | ||||
| 	at91_ramc_write(1, AT91_DDRSDRC_LPR, saved_lpr1); | ||||
| } | ||||
| 
 | ||||
| #define sdram_selfrefresh_disable(saved_lpr0)	\ | ||||
| 	do { \ | ||||
| 		at91_ramc_write(0, AT91_DDRSDRC_LPR, saved_lpr0); \ | ||||
| 		at91_ramc_write(1, AT91_DDRSDRC_LPR, saved_lpr1); \ | ||||
| 	} while (0) | ||||
| #define wait_for_interrupt_enable()		cpu_do_idle() | ||||
| #define at91_standby at91sam9g45_standby | ||||
| 
 | ||||
| #else | ||||
| #include <mach/at91sam9_sdramc.h> | ||||
|  | @ -90,18 +88,23 @@ static inline u32 sdram_selfrefresh_enable(void) | |||
| #warning Assuming EB1 SDRAM controller is *NOT* used | ||||
| #endif | ||||
| 
 | ||||
| static inline u32 sdram_selfrefresh_enable(void) | ||||
| static inline void at91sam9_standby(void) | ||||
| { | ||||
| 	u32 saved_lpr, lpr; | ||||
| 
 | ||||
| 	saved_lpr = at91_ramc_read(0, AT91_SDRAMC_LPR); | ||||
| 
 | ||||
| 	lpr = saved_lpr & ~AT91_SDRAMC_LPCB; | ||||
| 	at91_ramc_write(0, AT91_SDRAMC_LPR, lpr | AT91_SDRAMC_LPCB_SELF_REFRESH); | ||||
| 	return saved_lpr; | ||||
| 	at91_ramc_write(0, AT91_SDRAMC_LPR, lpr | | ||||
| 			AT91_SDRAMC_LPCB_SELF_REFRESH); | ||||
| 
 | ||||
| 	cpu_do_idle(); | ||||
| 
 | ||||
| 	at91_ramc_write(0, AT91_SDRAMC_LPR, saved_lpr); | ||||
| } | ||||
| 
 | ||||
| #define sdram_selfrefresh_disable(saved_lpr)	at91_ramc_write(0, AT91_SDRAMC_LPR, saved_lpr) | ||||
| #define wait_for_interrupt_enable()		cpu_do_idle() | ||||
| #define at91_standby at91sam9_standby | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -18,8 +18,7 @@ | |||
| 
 | ||||
| #if defined(CONFIG_ARCH_AT91RM9200) | ||||
| #include <mach/at91rm9200_mc.h> | ||||
| #elif defined(CONFIG_ARCH_AT91CAP9) \ | ||||
| 	|| defined(CONFIG_ARCH_AT91SAM9G45) | ||||
| #elif defined(CONFIG_ARCH_AT91SAM9G45) | ||||
| #include <mach/at91sam9_ddrsdr.h> | ||||
| #else | ||||
| #include <mach/at91sam9_sdramc.h> | ||||
|  | @ -130,8 +129,7 @@ ENTRY(at91_slow_clock) | |||
| 	/* Put SDRAM in self-refresh mode */ | ||||
| 	mov	r3, #1 | ||||
| 	str	r3, [r2, #AT91_SDRAMC_SRR] | ||||
| #elif defined(CONFIG_ARCH_AT91CAP9) \ | ||||
| 	|| defined(CONFIG_ARCH_AT91SAM9G45) | ||||
| #elif defined(CONFIG_ARCH_AT91SAM9G45) | ||||
| 
 | ||||
| 	/* prepare for DDRAM self-refresh mode */ | ||||
| 	ldr	r3, [r2, #AT91_DDRSDRC_LPR] | ||||
|  | @ -263,8 +261,7 @@ ENTRY(at91_slow_clock) | |||
| 
 | ||||
| #ifdef CONFIG_ARCH_AT91RM9200 | ||||
| 	/* Do nothing - self-refresh is automatically disabled. */ | ||||
| #elif defined(CONFIG_ARCH_AT91CAP9) \ | ||||
| 	|| defined(CONFIG_ARCH_AT91SAM9G45) | ||||
| #elif defined(CONFIG_ARCH_AT91SAM9G45) | ||||
| 	/* Restore LPR on AT91 with DDRAM */ | ||||
| 	ldr	r3, .saved_sam9_lpr | ||||
| 	str	r3, [r2, #AT91_DDRSDRC_LPR] | ||||
|  | @ -305,8 +302,7 @@ ENTRY(at91_slow_clock) | |||
| #ifdef CONFIG_ARCH_AT91RM9200 | ||||
| .at91_va_base_sdramc: | ||||
| 	.word AT91_VA_BASE_SYS
 | ||||
| #elif defined(CONFIG_ARCH_AT91CAP9) \ | ||||
| 	|| defined(CONFIG_ARCH_AT91SAM9G45) | ||||
| #elif defined(CONFIG_ARCH_AT91SAM9G45) | ||||
| .at91_va_base_sdramc: | ||||
| 	.word AT91_VA_BASE_SYS + AT91_DDRSDRC0 | ||||
| #else | ||||
|  |  | |||
|  | @ -86,20 +86,6 @@ static void __init soc_detect(u32 dbgu_base) | |||
| 	socid = cidr & ~AT91_CIDR_VERSION; | ||||
| 
 | ||||
| 	switch (socid) { | ||||
| 	case ARCH_ID_AT91CAP9: { | ||||
| #ifdef CONFIG_AT91_PMC_UNIT | ||||
| 		u32 pmc_ver = at91_sys_read(AT91_PMC_VER); | ||||
| 
 | ||||
| 		if (pmc_ver == ARCH_REVISION_CAP9_B) | ||||
| 			at91_soc_initdata.subtype = AT91_SOC_CAP9_REV_B; | ||||
| 		else if (pmc_ver == ARCH_REVISION_CAP9_C) | ||||
| 			at91_soc_initdata.subtype = AT91_SOC_CAP9_REV_C; | ||||
| #endif | ||||
| 		at91_soc_initdata.type = AT91_SOC_CAP9; | ||||
| 		at91_boot_soc = at91cap9_soc; | ||||
| 		break; | ||||
| 	} | ||||
| 
 | ||||
| 	case ARCH_ID_AT91RM9200: | ||||
| 		at91_soc_initdata.type = AT91_SOC_RM9200; | ||||
| 		at91_boot_soc = at91rm9200_soc; | ||||
|  | @ -200,7 +186,6 @@ static void __init soc_detect(u32 dbgu_base) | |||
| 
 | ||||
| static const char *soc_name[] = { | ||||
| 	[AT91_SOC_RM9200]	= "at91rm9200", | ||||
| 	[AT91_SOC_CAP9]		= "at91cap9", | ||||
| 	[AT91_SOC_SAM9260]	= "at91sam9260", | ||||
| 	[AT91_SOC_SAM9261]	= "at91sam9261", | ||||
| 	[AT91_SOC_SAM9263]	= "at91sam9263", | ||||
|  | @ -221,8 +206,6 @@ EXPORT_SYMBOL(at91_get_soc_type); | |||
| static const char *soc_subtype_name[] = { | ||||
| 	[AT91_SOC_RM9200_BGA]	= "at91rm9200 BGA", | ||||
| 	[AT91_SOC_RM9200_PQFP]	= "at91rm9200 PQFP", | ||||
| 	[AT91_SOC_CAP9_REV_B]	= "at91cap9 revB", | ||||
| 	[AT91_SOC_CAP9_REV_C]	= "at91cap9 revC", | ||||
| 	[AT91_SOC_SAM9XE]	= "at91sam9xe", | ||||
| 	[AT91_SOC_SAM9G45ES]	= "at91sam9g45es", | ||||
| 	[AT91_SOC_SAM9M10]	= "at91sam9m10", | ||||
|  |  | |||
|  | @ -13,7 +13,6 @@ struct at91_init_soc { | |||
| }; | ||||
| 
 | ||||
| extern struct at91_init_soc at91_boot_soc; | ||||
| extern struct at91_init_soc at91cap9_soc; | ||||
| extern struct at91_init_soc at91rm9200_soc; | ||||
| extern struct at91_init_soc at91sam9260_soc; | ||||
| extern struct at91_init_soc at91sam9261_soc; | ||||
|  | @ -27,10 +26,6 @@ static inline int at91_soc_is_enabled(void) | |||
| 	return at91_boot_soc.init != NULL; | ||||
| } | ||||
| 
 | ||||
| #if !defined(CONFIG_ARCH_AT91CAP9) | ||||
| #define at91cap9_soc	at91_boot_soc | ||||
| #endif | ||||
| 
 | ||||
| #if !defined(CONFIG_ARCH_AT91RM9200) | ||||
| #define at91rm9200_soc	at91_boot_soc | ||||
| #endif | ||||
|  |  | |||
|  | @ -26,13 +26,14 @@ | |||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include <mach/dm355.h> | ||||
| #include <mach/i2c.h> | ||||
| #include <mach/serial.h> | ||||
| #include <mach/nand.h> | ||||
| #include <mach/mmc.h> | ||||
| #include <mach/usb.h> | ||||
| 
 | ||||
| #include "davinci.h" | ||||
| 
 | ||||
| /* NOTE:  this is geared for the standard config, with a socketed
 | ||||
|  * 2 GByte Micron NAND (MT29F16G08FAA) using 128KB sectors.  If you | ||||
|  * swap chips, maybe with a different block size, partitioning may | ||||
|  |  | |||
|  | @ -23,13 +23,14 @@ | |||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include <mach/dm355.h> | ||||
| #include <mach/i2c.h> | ||||
| #include <mach/serial.h> | ||||
| #include <mach/nand.h> | ||||
| #include <mach/mmc.h> | ||||
| #include <mach/usb.h> | ||||
| 
 | ||||
| #include "davinci.h" | ||||
| 
 | ||||
| /* NOTE:  this is geared for the standard config, with a socketed
 | ||||
|  * 2 GByte Micron NAND (MT29F16G08FAA) using 128KB sectors.  If you | ||||
|  * swap chips, maybe with a different block size, partitioning may | ||||
|  |  | |||
|  | @ -32,7 +32,6 @@ | |||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include <mach/mux.h> | ||||
| #include <mach/dm365.h> | ||||
| #include <mach/common.h> | ||||
| #include <mach/i2c.h> | ||||
| #include <mach/serial.h> | ||||
|  | @ -42,6 +41,8 @@ | |||
| 
 | ||||
| #include <media/tvp514x.h> | ||||
| 
 | ||||
| #include "davinci.h" | ||||
| 
 | ||||
| static inline int have_imager(void) | ||||
| { | ||||
| 	/* REVISIT when it's supported, trigger via Kconfig */ | ||||
|  |  | |||
|  | @ -30,7 +30,6 @@ | |||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include <mach/dm644x.h> | ||||
| #include <mach/common.h> | ||||
| #include <mach/i2c.h> | ||||
| #include <mach/serial.h> | ||||
|  | @ -40,6 +39,8 @@ | |||
| #include <mach/usb.h> | ||||
| #include <mach/aemif.h> | ||||
| 
 | ||||
| #include "davinci.h" | ||||
| 
 | ||||
| #define DM644X_EVM_PHY_ID		"davinci_mdio-0:01" | ||||
| #define LXT971_PHY_ID	(0x001378e2) | ||||
| #define LXT971_PHY_MASK	(0xfffffff0) | ||||
|  | @ -189,7 +190,7 @@ static struct platform_device davinci_fb_device = { | |||
| 	.num_resources = 0, | ||||
| }; | ||||
| 
 | ||||
| static struct tvp514x_platform_data tvp5146_pdata = { | ||||
| static struct tvp514x_platform_data dm644xevm_tvp5146_pdata = { | ||||
| 	.clk_polarity = 0, | ||||
| 	.hs_polarity = 1, | ||||
| 	.vs_polarity = 1 | ||||
|  | @ -197,7 +198,7 @@ static struct tvp514x_platform_data tvp5146_pdata = { | |||
| 
 | ||||
| #define TVP514X_STD_ALL	(V4L2_STD_NTSC | V4L2_STD_PAL) | ||||
| /* Inputs available at the TVP5146 */ | ||||
| static struct v4l2_input tvp5146_inputs[] = { | ||||
| static struct v4l2_input dm644xevm_tvp5146_inputs[] = { | ||||
| 	{ | ||||
| 		.index = 0, | ||||
| 		.name = "Composite", | ||||
|  | @ -217,7 +218,7 @@ static struct v4l2_input tvp5146_inputs[] = { | |||
|  * ouput that goes to vpfe. There is a one to one correspondence | ||||
|  * with tvp5146_inputs | ||||
|  */ | ||||
| static struct vpfe_route tvp5146_routes[] = { | ||||
| static struct vpfe_route dm644xevm_tvp5146_routes[] = { | ||||
| 	{ | ||||
| 		.input = INPUT_CVBS_VI2B, | ||||
| 		.output = OUTPUT_10BIT_422_EMBEDDED_SYNC, | ||||
|  | @ -228,13 +229,13 @@ static struct vpfe_route tvp5146_routes[] = { | |||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| static struct vpfe_subdev_info vpfe_sub_devs[] = { | ||||
| static struct vpfe_subdev_info dm644xevm_vpfe_sub_devs[] = { | ||||
| 	{ | ||||
| 		.name = "tvp5146", | ||||
| 		.grp_id = 0, | ||||
| 		.num_inputs = ARRAY_SIZE(tvp5146_inputs), | ||||
| 		.inputs = tvp5146_inputs, | ||||
| 		.routes = tvp5146_routes, | ||||
| 		.num_inputs = ARRAY_SIZE(dm644xevm_tvp5146_inputs), | ||||
| 		.inputs = dm644xevm_tvp5146_inputs, | ||||
| 		.routes = dm644xevm_tvp5146_routes, | ||||
| 		.can_route = 1, | ||||
| 		.ccdc_if_params = { | ||||
| 			.if_type = VPFE_BT656, | ||||
|  | @ -243,15 +244,15 @@ static struct vpfe_subdev_info vpfe_sub_devs[] = { | |||
| 		}, | ||||
| 		.board_info = { | ||||
| 			I2C_BOARD_INFO("tvp5146", 0x5d), | ||||
| 			.platform_data = &tvp5146_pdata, | ||||
| 			.platform_data = &dm644xevm_tvp5146_pdata, | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| static struct vpfe_config vpfe_cfg = { | ||||
| 	.num_subdevs = ARRAY_SIZE(vpfe_sub_devs), | ||||
| static struct vpfe_config dm644xevm_capture_cfg = { | ||||
| 	.num_subdevs = ARRAY_SIZE(dm644xevm_vpfe_sub_devs), | ||||
| 	.i2c_adapter_id = 1, | ||||
| 	.sub_devs = vpfe_sub_devs, | ||||
| 	.sub_devs = dm644xevm_vpfe_sub_devs, | ||||
| 	.card_name = "DM6446 EVM", | ||||
| 	.ccdc = "DM6446 CCDC", | ||||
| }; | ||||
|  | @ -624,8 +625,6 @@ static struct davinci_uart_config uart_config __initdata = { | |||
| static void __init | ||||
| davinci_evm_map_io(void) | ||||
| { | ||||
| 	/* setup input configuration for VPFE input devices */ | ||||
| 	dm644x_set_vpfe_config(&vpfe_cfg); | ||||
| 	dm644x_init(); | ||||
| } | ||||
| 
 | ||||
|  | @ -697,6 +696,7 @@ static __init void davinci_evm_init(void) | |||
| 	evm_init_i2c(); | ||||
| 
 | ||||
| 	davinci_setup_mmc(0, &dm6446evm_mmc_config); | ||||
| 	dm644x_init_video(&dm644xevm_capture_cfg); | ||||
| 
 | ||||
| 	davinci_serial_init(&uart_config); | ||||
| 	dm644x_init_asp(&dm644x_evm_snd_data); | ||||
|  |  | |||
|  | @ -36,7 +36,6 @@ | |||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include <mach/dm646x.h> | ||||
| #include <mach/common.h> | ||||
| #include <mach/serial.h> | ||||
| #include <mach/i2c.h> | ||||
|  | @ -45,6 +44,7 @@ | |||
| #include <mach/cdce949.h> | ||||
| #include <mach/aemif.h> | ||||
| 
 | ||||
| #include "davinci.h" | ||||
| #include "clock.h" | ||||
| 
 | ||||
| #define NAND_BLOCK_SIZE		SZ_128K | ||||
|  | @ -410,8 +410,6 @@ static struct davinci_i2c_platform_data i2c_pdata = { | |||
| 	.bus_delay      = 0 /* usec */, | ||||
| }; | ||||
| 
 | ||||
| #define VIDCLKCTL_OFFSET	(DAVINCI_SYSTEM_MODULE_BASE + 0x38) | ||||
| #define VSCLKDIS_OFFSET		(DAVINCI_SYSTEM_MODULE_BASE + 0x6c) | ||||
| #define VCH2CLK_MASK		(BIT_MASK(10) | BIT_MASK(9) | BIT_MASK(8)) | ||||
| #define VCH2CLK_SYSCLK8		(BIT(9)) | ||||
| #define VCH2CLK_AUXCLK		(BIT(9) | BIT(8)) | ||||
|  | @ -429,8 +427,6 @@ static struct davinci_i2c_platform_data i2c_pdata = { | |||
| #define TVP5147_CH0		"tvp514x-0" | ||||
| #define TVP5147_CH1		"tvp514x-1" | ||||
| 
 | ||||
| static void __iomem *vpif_vidclkctl_reg; | ||||
| static void __iomem *vpif_vsclkdis_reg; | ||||
| /* spin lock for updating above registers */ | ||||
| static spinlock_t vpif_reg_lock; | ||||
| 
 | ||||
|  | @ -441,14 +437,14 @@ static int set_vpif_clock(int mux_mode, int hd) | |||
| 	int val = 0; | ||||
| 	int err = 0; | ||||
| 
 | ||||
| 	if (!vpif_vidclkctl_reg || !vpif_vsclkdis_reg || !cpld_client) | ||||
| 	if (!cpld_client) | ||||
| 		return -ENXIO; | ||||
| 
 | ||||
| 	/* disable the clock */ | ||||
| 	spin_lock_irqsave(&vpif_reg_lock, flags); | ||||
| 	value = __raw_readl(vpif_vsclkdis_reg); | ||||
| 	value = __raw_readl(DAVINCI_SYSMOD_VIRT(SYSMOD_VSCLKDIS)); | ||||
| 	value |= (VIDCH3CLK | VIDCH2CLK); | ||||
| 	__raw_writel(value, vpif_vsclkdis_reg); | ||||
| 	__raw_writel(value, DAVINCI_SYSMOD_VIRT(SYSMOD_VSCLKDIS)); | ||||
| 	spin_unlock_irqrestore(&vpif_reg_lock, flags); | ||||
| 
 | ||||
| 	val = i2c_smbus_read_byte(cpld_client); | ||||
|  | @ -464,7 +460,7 @@ static int set_vpif_clock(int mux_mode, int hd) | |||
| 	if (err) | ||||
| 		return err; | ||||
| 
 | ||||
| 	value = __raw_readl(vpif_vidclkctl_reg); | ||||
| 	value = __raw_readl(DAVINCI_SYSMOD_VIRT(SYSMOD_VIDCLKCTL)); | ||||
| 	value &= ~(VCH2CLK_MASK); | ||||
| 	value &= ~(VCH3CLK_MASK); | ||||
| 
 | ||||
|  | @ -473,13 +469,13 @@ static int set_vpif_clock(int mux_mode, int hd) | |||
| 	else | ||||
| 		value |= (VCH2CLK_AUXCLK | VCH3CLK_AUXCLK); | ||||
| 
 | ||||
| 	__raw_writel(value, vpif_vidclkctl_reg); | ||||
| 	__raw_writel(value, DAVINCI_SYSMOD_VIRT(SYSMOD_VIDCLKCTL)); | ||||
| 
 | ||||
| 	spin_lock_irqsave(&vpif_reg_lock, flags); | ||||
| 	value = __raw_readl(vpif_vsclkdis_reg); | ||||
| 	value = __raw_readl(DAVINCI_SYSMOD_VIRT(SYSMOD_VSCLKDIS)); | ||||
| 	/* enable the clock */ | ||||
| 	value &= ~(VIDCH3CLK | VIDCH2CLK); | ||||
| 	__raw_writel(value, vpif_vsclkdis_reg); | ||||
| 	__raw_writel(value, DAVINCI_SYSMOD_VIRT(SYSMOD_VSCLKDIS)); | ||||
| 	spin_unlock_irqrestore(&vpif_reg_lock, flags); | ||||
| 
 | ||||
| 	return 0; | ||||
|  | @ -564,7 +560,7 @@ static int setup_vpif_input_channel_mode(int mux_mode) | |||
| 	int val; | ||||
| 	u32 value; | ||||
| 
 | ||||
| 	if (!vpif_vidclkctl_reg || !cpld_client) | ||||
| 	if (!cpld_client) | ||||
| 		return -ENXIO; | ||||
| 
 | ||||
| 	val = i2c_smbus_read_byte(cpld_client); | ||||
|  | @ -572,7 +568,7 @@ static int setup_vpif_input_channel_mode(int mux_mode) | |||
| 		return val; | ||||
| 
 | ||||
| 	spin_lock_irqsave(&vpif_reg_lock, flags); | ||||
| 	value = __raw_readl(vpif_vidclkctl_reg); | ||||
| 	value = __raw_readl(DAVINCI_SYSMOD_VIRT(SYSMOD_VIDCLKCTL)); | ||||
| 	if (mux_mode) { | ||||
| 		val &= VPIF_INPUT_TWO_CHANNEL; | ||||
| 		value |= VIDCH1CLK; | ||||
|  | @ -580,7 +576,7 @@ static int setup_vpif_input_channel_mode(int mux_mode) | |||
| 		val |= VPIF_INPUT_ONE_CHANNEL; | ||||
| 		value &= ~VIDCH1CLK; | ||||
| 	} | ||||
| 	__raw_writel(value, vpif_vidclkctl_reg); | ||||
| 	__raw_writel(value, DAVINCI_SYSMOD_VIRT(SYSMOD_VIDCLKCTL)); | ||||
| 	spin_unlock_irqrestore(&vpif_reg_lock, flags); | ||||
| 
 | ||||
| 	err = i2c_smbus_write_byte(cpld_client, val); | ||||
|  | @ -674,12 +670,6 @@ static struct vpif_capture_config dm646x_vpif_capture_cfg = { | |||
| 
 | ||||
| static void __init evm_init_video(void) | ||||
| { | ||||
| 	vpif_vidclkctl_reg = ioremap(VIDCLKCTL_OFFSET, 4); | ||||
| 	vpif_vsclkdis_reg = ioremap(VSCLKDIS_OFFSET, 4); | ||||
| 	if (!vpif_vidclkctl_reg || !vpif_vsclkdis_reg) { | ||||
| 		pr_err("Can't map VPIF VIDCLKCTL or VSCLKDIS registers\n"); | ||||
| 		return; | ||||
| 	} | ||||
| 	spin_lock_init(&vpif_reg_lock); | ||||
| 
 | ||||
| 	dm646x_setup_vpif(&dm646x_vpif_display_config, | ||||
|  |  | |||
|  | @ -30,7 +30,6 @@ | |||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include <mach/dm644x.h> | ||||
| #include <mach/common.h> | ||||
| #include <mach/i2c.h> | ||||
| #include <mach/serial.h> | ||||
|  | @ -39,6 +38,8 @@ | |||
| #include <mach/mmc.h> | ||||
| #include <mach/usb.h> | ||||
| 
 | ||||
| #include "davinci.h" | ||||
| 
 | ||||
| #define NEUROS_OSD2_PHY_ID		"davinci_mdio-0:01" | ||||
| #define LXT971_PHY_ID			0x001378e2 | ||||
| #define LXT971_PHY_MASK			0xfffffff0 | ||||
|  |  | |||
|  | @ -35,13 +35,14 @@ | |||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/flash.h> | ||||
| 
 | ||||
| #include <mach/dm644x.h> | ||||
| #include <mach/common.h> | ||||
| #include <mach/i2c.h> | ||||
| #include <mach/serial.h> | ||||
| #include <mach/mux.h> | ||||
| #include <mach/usb.h> | ||||
| 
 | ||||
| #include "davinci.h" | ||||
| 
 | ||||
| #define SFFSDR_PHY_ID		"davinci_mdio-0:01" | ||||
| static struct mtd_partition davinci_sffsdr_nandflash_partition[] = { | ||||
| 	/* U-Boot Environment: Block 0
 | ||||
|  |  | |||
							
								
								
									
										96
									
								
								arch/arm/mach-davinci/davinci.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								arch/arm/mach-davinci/davinci.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,96 @@ | |||
| /*
 | ||||
|  * This file contains the processor specific definitions | ||||
|  * of the TI DM644x, DM355, DM365, and DM646x. | ||||
|  * | ||||
|  * Copyright (C) 2011 Texas Instruments Incorporated | ||||
|  * Copyright (c) 2007 Deep Root Systems, LLC | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License as | ||||
|  * published by the Free Software Foundation version 2. | ||||
|  * | ||||
|  * This program is distributed "as is" WITHOUT ANY WARRANTY of any | ||||
|  * kind, whether express or implied; without even the implied warranty | ||||
|  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  */ | ||||
| #ifndef __DAVINCI_H | ||||
| #define __DAVINCI_H | ||||
| 
 | ||||
| #include <linux/clk.h> | ||||
| #include <linux/videodev2.h> | ||||
| #include <linux/davinci_emac.h> | ||||
| #include <linux/platform_device.h> | ||||
| #include <linux/spi/spi.h> | ||||
| 
 | ||||
| #include <mach/asp.h> | ||||
| #include <mach/keyscan.h> | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include <media/davinci/vpfe_capture.h> | ||||
| #include <media/davinci/vpif_types.h> | ||||
| 
 | ||||
| #define DAVINCI_SYSTEM_MODULE_BASE	0x01c40000 | ||||
| #define SYSMOD_VIDCLKCTL		0x38 | ||||
| #define SYSMOD_VDD3P3VPWDN		0x48 | ||||
| #define SYSMOD_VSCLKDIS			0x6c | ||||
| #define SYSMOD_PUPDCTL1			0x7c | ||||
| 
 | ||||
| extern void __iomem *davinci_sysmod_base; | ||||
| #define DAVINCI_SYSMOD_VIRT(x)	(davinci_sysmod_base + (x)) | ||||
| void davinci_map_sysmod(void); | ||||
| 
 | ||||
| /* DM355 base addresses */ | ||||
| #define DM355_ASYNC_EMIF_CONTROL_BASE	0x01e10000 | ||||
| #define DM355_ASYNC_EMIF_DATA_CE0_BASE	0x02000000 | ||||
| 
 | ||||
| #define ASP1_TX_EVT_EN	1 | ||||
| #define ASP1_RX_EVT_EN	2 | ||||
| 
 | ||||
| /* DM365 base addresses */ | ||||
| #define DM365_ASYNC_EMIF_CONTROL_BASE	0x01d10000 | ||||
| #define DM365_ASYNC_EMIF_DATA_CE0_BASE	0x02000000 | ||||
| #define DM365_ASYNC_EMIF_DATA_CE1_BASE	0x04000000 | ||||
| 
 | ||||
| /* DM644x base addresses */ | ||||
| #define DM644X_ASYNC_EMIF_CONTROL_BASE	0x01e00000 | ||||
| #define DM644X_ASYNC_EMIF_DATA_CE0_BASE 0x02000000 | ||||
| #define DM644X_ASYNC_EMIF_DATA_CE1_BASE 0x04000000 | ||||
| #define DM644X_ASYNC_EMIF_DATA_CE2_BASE 0x06000000 | ||||
| #define DM644X_ASYNC_EMIF_DATA_CE3_BASE 0x08000000 | ||||
| 
 | ||||
| /* DM646x base addresses */ | ||||
| #define DM646X_ASYNC_EMIF_CONTROL_BASE	0x20008000 | ||||
| #define DM646X_ASYNC_EMIF_CS2_SPACE_BASE 0x42000000 | ||||
| 
 | ||||
| /* DM355 function declarations */ | ||||
| void __init dm355_init(void); | ||||
| void dm355_init_spi0(unsigned chipselect_mask, | ||||
| 		struct spi_board_info *info, unsigned len); | ||||
| void __init dm355_init_asp1(u32 evt_enable, struct snd_platform_data *pdata); | ||||
| void dm355_set_vpfe_config(struct vpfe_config *cfg); | ||||
| 
 | ||||
| /* DM365 function declarations */ | ||||
| void __init dm365_init(void); | ||||
| void __init dm365_init_asp(struct snd_platform_data *pdata); | ||||
| void __init dm365_init_vc(struct snd_platform_data *pdata); | ||||
| void __init dm365_init_ks(struct davinci_ks_platform_data *pdata); | ||||
| void __init dm365_init_rtc(void); | ||||
| void dm365_init_spi0(unsigned chipselect_mask, | ||||
| 			struct spi_board_info *info, unsigned len); | ||||
| void dm365_set_vpfe_config(struct vpfe_config *cfg); | ||||
| 
 | ||||
| /* DM644x function declarations */ | ||||
| void __init dm644x_init(void); | ||||
| void __init dm644x_init_asp(struct snd_platform_data *pdata); | ||||
| int __init dm644x_init_video(struct vpfe_config *); | ||||
| 
 | ||||
| /* DM646x function declarations */ | ||||
| void __init dm646x_init(void); | ||||
| void __init dm646x_init_mcasp0(struct snd_platform_data *pdata); | ||||
| void __init dm646x_init_mcasp1(struct snd_platform_data *pdata); | ||||
| int __init dm646x_init_edma(struct edma_rsv_info *rsv); | ||||
| void dm646x_video_init(void); | ||||
| void dm646x_setup_vpif(struct vpif_display_config *, | ||||
| 		       struct vpif_capture_config *); | ||||
| #endif /*__DAVINCI_H */ | ||||
|  | @ -23,6 +23,7 @@ | |||
| #include <mach/mmc.h> | ||||
| #include <mach/time.h> | ||||
| 
 | ||||
| #include "davinci.h" | ||||
| #include "clock.h" | ||||
| 
 | ||||
| #define DAVINCI_I2C_BASE	     0x01C21000 | ||||
|  | @ -33,8 +34,19 @@ | |||
| #define DM365_MMCSD0_BASE	     0x01D11000 | ||||
| #define DM365_MMCSD1_BASE	     0x01D00000 | ||||
| 
 | ||||
| /* System control register offsets */ | ||||
| #define DM64XX_VDD3P3V_PWDN	0x48 | ||||
| void __iomem  *davinci_sysmod_base; | ||||
| 
 | ||||
| void davinci_map_sysmod(void) | ||||
| { | ||||
| 	davinci_sysmod_base = ioremap_nocache(DAVINCI_SYSTEM_MODULE_BASE, | ||||
| 					      0x800); | ||||
| 	/*
 | ||||
| 	 * Throw a bug since a lot of board initialization code depends | ||||
| 	 * on system module availability. ioremap() failing this early | ||||
| 	 * need careful looking into anyway. | ||||
| 	 */ | ||||
| 	BUG_ON(!davinci_sysmod_base); | ||||
| } | ||||
| 
 | ||||
| static struct resource i2c_resources[] = { | ||||
| 	{ | ||||
|  | @ -212,12 +224,12 @@ void __init davinci_setup_mmc(int module, struct davinci_mmc_config *config) | |||
| 			davinci_cfg_reg(DM355_SD1_DATA2); | ||||
| 			davinci_cfg_reg(DM355_SD1_DATA3); | ||||
| 		} else if (cpu_is_davinci_dm365()) { | ||||
| 			void __iomem *pupdctl1 = | ||||
| 				IO_ADDRESS(DAVINCI_SYSTEM_MODULE_BASE + 0x7c); | ||||
| 
 | ||||
| 			/* Configure pull down control */ | ||||
| 			__raw_writel((__raw_readl(pupdctl1) & ~0xfc0), | ||||
| 					pupdctl1); | ||||
| 			unsigned v; | ||||
| 
 | ||||
| 			v = __raw_readl(DAVINCI_SYSMOD_VIRT(SYSMOD_PUPDCTL1)); | ||||
| 			__raw_writel(v & ~0xfc0, | ||||
| 					DAVINCI_SYSMOD_VIRT(SYSMOD_PUPDCTL1)); | ||||
| 
 | ||||
| 			mmcsd1_resources[0].start = DM365_MMCSD1_BASE; | ||||
| 			mmcsd1_resources[0].end = DM365_MMCSD1_BASE + | ||||
|  | @ -246,11 +258,9 @@ void __init davinci_setup_mmc(int module, struct davinci_mmc_config *config) | |||
| 			mmcsd0_resources[2].start = IRQ_DM365_SDIOINT0; | ||||
| 		} else if (cpu_is_davinci_dm644x()) { | ||||
| 			/* REVISIT: should this be in board-init code? */ | ||||
| 			void __iomem *base = | ||||
| 				IO_ADDRESS(DAVINCI_SYSTEM_MODULE_BASE); | ||||
| 
 | ||||
| 			/* Power-on 3.3V IO cells */ | ||||
| 			__raw_writel(0, base + DM64XX_VDD3P3V_PWDN); | ||||
| 			__raw_writel(0, | ||||
| 				DAVINCI_SYSMOD_VIRT(SYSMOD_VDD3P3VPWDN)); | ||||
| 			/*Set up the pull regiter for MMC */ | ||||
| 			davinci_cfg_reg(DM644X_MSTK); | ||||
| 		} | ||||
|  |  | |||
|  | @ -18,7 +18,6 @@ | |||
| 
 | ||||
| #include <asm/mach/map.h> | ||||
| 
 | ||||
| #include <mach/dm355.h> | ||||
| #include <mach/cputype.h> | ||||
| #include <mach/edma.h> | ||||
| #include <mach/psc.h> | ||||
|  | @ -31,6 +30,7 @@ | |||
| #include <mach/spi.h> | ||||
| #include <mach/gpio-davinci.h> | ||||
| 
 | ||||
| #include "davinci.h" | ||||
| #include "clock.h" | ||||
| #include "mux.h" | ||||
| 
 | ||||
|  | @ -871,6 +871,7 @@ void __init dm355_init_asp1(u32 evt_enable, struct snd_platform_data *pdata) | |||
| void __init dm355_init(void) | ||||
| { | ||||
| 	davinci_common_init(&davinci_soc_info_dm355); | ||||
| 	davinci_map_sysmod(); | ||||
| } | ||||
| 
 | ||||
| static int __init dm355_init_devices(void) | ||||
|  |  | |||
|  | @ -21,7 +21,6 @@ | |||
| 
 | ||||
| #include <asm/mach/map.h> | ||||
| 
 | ||||
| #include <mach/dm365.h> | ||||
| #include <mach/cputype.h> | ||||
| #include <mach/edma.h> | ||||
| #include <mach/psc.h> | ||||
|  | @ -35,11 +34,28 @@ | |||
| #include <mach/spi.h> | ||||
| #include <mach/gpio-davinci.h> | ||||
| 
 | ||||
| #include "davinci.h" | ||||
| #include "clock.h" | ||||
| #include "mux.h" | ||||
| 
 | ||||
| #define DM365_REF_FREQ		24000000	/* 24 MHz on the DM365 EVM */ | ||||
| 
 | ||||
| /* Base of key scan register bank */ | ||||
| #define DM365_KEYSCAN_BASE		0x01c69400 | ||||
| 
 | ||||
| #define DM365_RTC_BASE			0x01c69000 | ||||
| 
 | ||||
| #define DAVINCI_DM365_VC_BASE		0x01d0c000 | ||||
| #define DAVINCI_DMA_VC_TX		2 | ||||
| #define DAVINCI_DMA_VC_RX		3 | ||||
| 
 | ||||
| #define DM365_EMAC_BASE			0x01d07000 | ||||
| #define DM365_EMAC_MDIO_BASE		(DM365_EMAC_BASE + 0x4000) | ||||
| #define DM365_EMAC_CNTRL_OFFSET		0x0000 | ||||
| #define DM365_EMAC_CNTRL_MOD_OFFSET	0x3000 | ||||
| #define DM365_EMAC_CNTRL_RAM_OFFSET	0x1000 | ||||
| #define DM365_EMAC_CNTRL_RAM_SIZE	0x2000 | ||||
| 
 | ||||
| static struct pll_data pll1_data = { | ||||
| 	.num		= 1, | ||||
| 	.phys_base	= DAVINCI_PLL1_BASE, | ||||
|  | @ -1122,6 +1138,7 @@ void __init dm365_init_rtc(void) | |||
| void __init dm365_init(void) | ||||
| { | ||||
| 	davinci_common_init(&davinci_soc_info_dm365); | ||||
| 	davinci_map_sysmod(); | ||||
| } | ||||
| 
 | ||||
| static struct resource dm365_vpss_resources[] = { | ||||
|  |  | |||
|  | @ -15,7 +15,6 @@ | |||
| 
 | ||||
| #include <asm/mach/map.h> | ||||
| 
 | ||||
| #include <mach/dm644x.h> | ||||
| #include <mach/cputype.h> | ||||
| #include <mach/edma.h> | ||||
| #include <mach/irqs.h> | ||||
|  | @ -27,6 +26,7 @@ | |||
| #include <mach/asp.h> | ||||
| #include <mach/gpio-davinci.h> | ||||
| 
 | ||||
| #include "davinci.h" | ||||
| #include "clock.h" | ||||
| #include "mux.h" | ||||
| 
 | ||||
|  | @ -35,6 +35,13 @@ | |||
|  */ | ||||
| #define DM644X_REF_FREQ		27000000 | ||||
| 
 | ||||
| #define DM644X_EMAC_BASE		0x01c80000 | ||||
| #define DM644X_EMAC_MDIO_BASE		(DM644X_EMAC_BASE + 0x4000) | ||||
| #define DM644X_EMAC_CNTRL_OFFSET	0x0000 | ||||
| #define DM644X_EMAC_CNTRL_MOD_OFFSET	0x1000 | ||||
| #define DM644X_EMAC_CNTRL_RAM_OFFSET	0x2000 | ||||
| #define DM644X_EMAC_CNTRL_RAM_SIZE	0x2000 | ||||
| 
 | ||||
| static struct pll_data pll1_data = { | ||||
| 	.num       = 1, | ||||
| 	.phys_base = DAVINCI_PLL1_BASE, | ||||
|  | @ -587,13 +594,15 @@ static struct platform_device dm644x_asp_device = { | |||
| 	.resource	= dm644x_asp_resources, | ||||
| }; | ||||
| 
 | ||||
| #define DM644X_VPSS_BASE	0x01c73400 | ||||
| 
 | ||||
| static struct resource dm644x_vpss_resources[] = { | ||||
| 	{ | ||||
| 		/* VPSS Base address */ | ||||
| 		.name		= "vpss", | ||||
| 		.start          = 0x01c73400, | ||||
| 		.end            = 0x01c73400 + 0xff, | ||||
| 		.flags          = IORESOURCE_MEM, | ||||
| 		.start		= DM644X_VPSS_BASE, | ||||
| 		.end		= DM644X_VPSS_BASE + 0xff, | ||||
| 		.flags		= IORESOURCE_MEM, | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
|  | @ -605,7 +614,7 @@ static struct platform_device dm644x_vpss_device = { | |||
| 	.resource		= dm644x_vpss_resources, | ||||
| }; | ||||
| 
 | ||||
| static struct resource vpfe_resources[] = { | ||||
| static struct resource dm644x_vpfe_resources[] = { | ||||
| 	{ | ||||
| 		.start          = IRQ_VDINT0, | ||||
| 		.end            = IRQ_VDINT0, | ||||
|  | @ -639,22 +648,17 @@ static struct platform_device dm644x_ccdc_dev = { | |||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| static struct platform_device vpfe_capture_dev = { | ||||
| static struct platform_device dm644x_vpfe_dev = { | ||||
| 	.name		= CAPTURE_DRV_NAME, | ||||
| 	.id		= -1, | ||||
| 	.num_resources	= ARRAY_SIZE(vpfe_resources), | ||||
| 	.resource	= vpfe_resources, | ||||
| 	.num_resources	= ARRAY_SIZE(dm644x_vpfe_resources), | ||||
| 	.resource	= dm644x_vpfe_resources, | ||||
| 	.dev = { | ||||
| 		.dma_mask		= &vpfe_capture_dma_mask, | ||||
| 		.coherent_dma_mask	= DMA_BIT_MASK(32), | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| void dm644x_set_vpfe_config(struct vpfe_config *cfg) | ||||
| { | ||||
| 	vpfe_capture_dev.dev.platform_data = cfg; | ||||
| } | ||||
| 
 | ||||
| /*----------------------------------------------------------------------*/ | ||||
| 
 | ||||
| static struct map_desc dm644x_io_desc[] = { | ||||
|  | @ -779,6 +783,22 @@ void __init dm644x_init_asp(struct snd_platform_data *pdata) | |||
| void __init dm644x_init(void) | ||||
| { | ||||
| 	davinci_common_init(&davinci_soc_info_dm644x); | ||||
| 	davinci_map_sysmod(); | ||||
| } | ||||
| 
 | ||||
| int __init dm644x_init_video(struct vpfe_config *vpfe_cfg) | ||||
| { | ||||
| 	dm644x_vpfe_dev.dev.platform_data = vpfe_cfg; | ||||
| 
 | ||||
| 	/* Add ccdc clock aliases */ | ||||
| 	clk_add_alias("master", dm644x_ccdc_dev.name, "vpss_master", NULL); | ||||
| 	clk_add_alias("slave", dm644x_ccdc_dev.name, "vpss_slave", NULL); | ||||
| 
 | ||||
| 	platform_device_register(&dm644x_vpss_device); | ||||
| 	platform_device_register(&dm644x_ccdc_dev); | ||||
| 	platform_device_register(&dm644x_vpfe_dev); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static int __init dm644x_init_devices(void) | ||||
|  | @ -786,9 +806,6 @@ static int __init dm644x_init_devices(void) | |||
| 	if (!cpu_is_davinci_dm644x()) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	/* Add ccdc clock aliases */ | ||||
| 	clk_add_alias("master", dm644x_ccdc_dev.name, "vpss_master", NULL); | ||||
| 	clk_add_alias("slave", dm644x_ccdc_dev.name, "vpss_slave", NULL); | ||||
| 	platform_device_register(&dm644x_edma_device); | ||||
| 
 | ||||
| 	platform_device_register(&dm644x_mdio_device); | ||||
|  | @ -796,10 +813,6 @@ static int __init dm644x_init_devices(void) | |||
| 	clk_add_alias(NULL, dev_name(&dm644x_mdio_device.dev), | ||||
| 		      NULL, &dm644x_emac_device.dev); | ||||
| 
 | ||||
| 	platform_device_register(&dm644x_vpss_device); | ||||
| 	platform_device_register(&dm644x_ccdc_dev); | ||||
| 	platform_device_register(&vpfe_capture_dev); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| postcore_initcall(dm644x_init_devices); | ||||
|  |  | |||
|  | @ -16,7 +16,6 @@ | |||
| 
 | ||||
| #include <asm/mach/map.h> | ||||
| 
 | ||||
| #include <mach/dm646x.h> | ||||
| #include <mach/cputype.h> | ||||
| #include <mach/edma.h> | ||||
| #include <mach/irqs.h> | ||||
|  | @ -28,12 +27,11 @@ | |||
| #include <mach/asp.h> | ||||
| #include <mach/gpio-davinci.h> | ||||
| 
 | ||||
| #include "davinci.h" | ||||
| #include "clock.h" | ||||
| #include "mux.h" | ||||
| 
 | ||||
| #define DAVINCI_VPIF_BASE       (0x01C12000) | ||||
| #define VDD3P3V_PWDN_OFFSET	(0x48) | ||||
| #define VSCLKDIS_OFFSET		(0x6C) | ||||
| 
 | ||||
| #define VDD3P3V_VID_MASK	(BIT_MASK(3) | BIT_MASK(2) | BIT_MASK(1) |\ | ||||
| 					BIT_MASK(0)) | ||||
|  | @ -46,6 +44,13 @@ | |||
| #define DM646X_REF_FREQ		27000000 | ||||
| #define DM646X_AUX_FREQ		24000000 | ||||
| 
 | ||||
| #define DM646X_EMAC_BASE		0x01c80000 | ||||
| #define DM646X_EMAC_MDIO_BASE		(DM646X_EMAC_BASE + 0x4000) | ||||
| #define DM646X_EMAC_CNTRL_OFFSET	0x0000 | ||||
| #define DM646X_EMAC_CNTRL_MOD_OFFSET	0x1000 | ||||
| #define DM646X_EMAC_CNTRL_RAM_OFFSET	0x2000 | ||||
| #define DM646X_EMAC_CNTRL_RAM_SIZE	0x2000 | ||||
| 
 | ||||
| static struct pll_data pll1_data = { | ||||
| 	.num       = 1, | ||||
| 	.phys_base = DAVINCI_PLL1_BASE, | ||||
|  | @ -873,15 +878,14 @@ void dm646x_setup_vpif(struct vpif_display_config *display_config, | |||
| 		       struct vpif_capture_config *capture_config) | ||||
| { | ||||
| 	unsigned int value; | ||||
| 	void __iomem *base = IO_ADDRESS(DAVINCI_SYSTEM_MODULE_BASE); | ||||
| 
 | ||||
| 	value = __raw_readl(base + VSCLKDIS_OFFSET); | ||||
| 	value = __raw_readl(DAVINCI_SYSMOD_VIRT(SYSMOD_VSCLKDIS)); | ||||
| 	value &= ~VSCLKDIS_MASK; | ||||
| 	__raw_writel(value, base + VSCLKDIS_OFFSET); | ||||
| 	__raw_writel(value, DAVINCI_SYSMOD_VIRT(SYSMOD_VSCLKDIS)); | ||||
| 
 | ||||
| 	value = __raw_readl(base + VDD3P3V_PWDN_OFFSET); | ||||
| 	value = __raw_readl(DAVINCI_SYSMOD_VIRT(SYSMOD_VDD3P3VPWDN)); | ||||
| 	value &= ~VDD3P3V_VID_MASK; | ||||
| 	__raw_writel(value, base + VDD3P3V_PWDN_OFFSET); | ||||
| 	__raw_writel(value, DAVINCI_SYSMOD_VIRT(SYSMOD_VDD3P3VPWDN)); | ||||
| 
 | ||||
| 	davinci_cfg_reg(DM646X_STSOMUX_DISABLE); | ||||
| 	davinci_cfg_reg(DM646X_STSIMUX_DISABLE); | ||||
|  | @ -905,6 +909,7 @@ int __init dm646x_init_edma(struct edma_rsv_info *rsv) | |||
| void __init dm646x_init(void) | ||||
| { | ||||
| 	davinci_common_init(&davinci_soc_info_dm646x); | ||||
| 	davinci_map_sysmod(); | ||||
| } | ||||
| 
 | ||||
| static int __init dm646x_init_devices(void) | ||||
|  |  | |||
|  | @ -1,32 +0,0 @@ | |||
| /*
 | ||||
|  * Chip specific defines for DM355 SoC | ||||
|  * | ||||
|  * Author: Kevin Hilman, Deep Root Systems, LLC | ||||
|  * | ||||
|  * 2007 (c) Deep Root Systems, LLC. This file is licensed under | ||||
|  * the terms of the GNU General Public License version 2. This program | ||||
|  * is licensed "as is" without any warranty of any kind, whether express | ||||
|  * or implied. | ||||
|  */ | ||||
| #ifndef __ASM_ARCH_DM355_H | ||||
| #define __ASM_ARCH_DM355_H | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <mach/asp.h> | ||||
| #include <media/davinci/vpfe_capture.h> | ||||
| 
 | ||||
| #define DM355_ASYNC_EMIF_CONTROL_BASE	0x01E10000 | ||||
| #define DM355_ASYNC_EMIF_DATA_CE0_BASE	0x02000000 | ||||
| 
 | ||||
| #define ASP1_TX_EVT_EN	1 | ||||
| #define ASP1_RX_EVT_EN	2 | ||||
| 
 | ||||
| struct spi_board_info; | ||||
| 
 | ||||
| void __init dm355_init(void); | ||||
| void dm355_init_spi0(unsigned chipselect_mask, | ||||
| 		struct spi_board_info *info, unsigned len); | ||||
| void __init dm355_init_asp1(u32 evt_enable, struct snd_platform_data *pdata); | ||||
| void dm355_set_vpfe_config(struct vpfe_config *cfg); | ||||
| 
 | ||||
| #endif /* __ASM_ARCH_DM355_H */ | ||||
|  | @ -1,52 +1 @@ | |||
| /*
 | ||||
|  * Copyright (C) 2009 Texas Instruments Incorporated | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License as | ||||
|  * published by the Free Software Foundation version 2. | ||||
|  * | ||||
|  * This program is distributed "as is" WITHOUT ANY WARRANTY of any | ||||
|  * kind, whether express or implied; without even the implied warranty | ||||
|  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  */ | ||||
| #ifndef __ASM_ARCH_DM365_H | ||||
| #define __ASM_ARCH_DM665_H | ||||
| 
 | ||||
| #include <linux/platform_device.h> | ||||
| #include <linux/davinci_emac.h> | ||||
| #include <mach/hardware.h> | ||||
| #include <mach/asp.h> | ||||
| #include <mach/keyscan.h> | ||||
| #include <media/davinci/vpfe_capture.h> | ||||
| 
 | ||||
| #define DM365_EMAC_BASE			(0x01D07000) | ||||
| #define DM365_EMAC_MDIO_BASE		(DM365_EMAC_BASE + 0x4000) | ||||
| #define DM365_EMAC_CNTRL_OFFSET		(0x0000) | ||||
| #define DM365_EMAC_CNTRL_MOD_OFFSET	(0x3000) | ||||
| #define DM365_EMAC_CNTRL_RAM_OFFSET	(0x1000) | ||||
| #define DM365_EMAC_CNTRL_RAM_SIZE	(0x2000) | ||||
| 
 | ||||
| /* Base of key scan register bank */ | ||||
| #define DM365_KEYSCAN_BASE		(0x01C69400) | ||||
| 
 | ||||
| #define DM365_RTC_BASE			(0x01C69000) | ||||
| 
 | ||||
| #define DAVINCI_DM365_VC_BASE		(0x01D0C000) | ||||
| #define DAVINCI_DMA_VC_TX		2 | ||||
| #define DAVINCI_DMA_VC_RX		3 | ||||
| 
 | ||||
| #define DM365_ASYNC_EMIF_CONTROL_BASE	0x01D10000 | ||||
| #define DM365_ASYNC_EMIF_DATA_CE0_BASE	0x02000000 | ||||
| #define DM365_ASYNC_EMIF_DATA_CE1_BASE	0x04000000 | ||||
| 
 | ||||
| void __init dm365_init(void); | ||||
| void __init dm365_init_asp(struct snd_platform_data *pdata); | ||||
| void __init dm365_init_vc(struct snd_platform_data *pdata); | ||||
| void __init dm365_init_ks(struct davinci_ks_platform_data *pdata); | ||||
| void __init dm365_init_rtc(void); | ||||
| void dm365_init_spi0(unsigned chipselect_mask, | ||||
| 			struct spi_board_info *info, unsigned len); | ||||
| 
 | ||||
| void dm365_set_vpfe_config(struct vpfe_config *cfg); | ||||
| #endif /* __ASM_ARCH_DM365_H */ | ||||
| /* empty, remove once unused */ | ||||
|  |  | |||
|  | @ -1,47 +0,0 @@ | |||
| /*
 | ||||
|  * This file contains the processor specific definitions | ||||
|  * of the TI DM644x. | ||||
|  * | ||||
|  * Copyright (C) 2008 Texas Instruments. | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | ||||
|  * | ||||
|  */ | ||||
| #ifndef __ASM_ARCH_DM644X_H | ||||
| #define __ASM_ARCH_DM644X_H | ||||
| 
 | ||||
| #include <linux/davinci_emac.h> | ||||
| #include <mach/hardware.h> | ||||
| #include <mach/asp.h> | ||||
| #include <media/davinci/vpfe_capture.h> | ||||
| 
 | ||||
| #define DM644X_EMAC_BASE		(0x01C80000) | ||||
| #define DM644X_EMAC_MDIO_BASE		(DM644X_EMAC_BASE + 0x4000) | ||||
| #define DM644X_EMAC_CNTRL_OFFSET	(0x0000) | ||||
| #define DM644X_EMAC_CNTRL_MOD_OFFSET	(0x1000) | ||||
| #define DM644X_EMAC_CNTRL_RAM_OFFSET	(0x2000) | ||||
| #define DM644X_EMAC_CNTRL_RAM_SIZE	(0x2000) | ||||
| 
 | ||||
| #define DM644X_ASYNC_EMIF_CONTROL_BASE	0x01E00000 | ||||
| #define DM644X_ASYNC_EMIF_DATA_CE0_BASE 0x02000000 | ||||
| #define DM644X_ASYNC_EMIF_DATA_CE1_BASE 0x04000000 | ||||
| #define DM644X_ASYNC_EMIF_DATA_CE2_BASE 0x06000000 | ||||
| #define DM644X_ASYNC_EMIF_DATA_CE3_BASE 0x08000000 | ||||
| 
 | ||||
| void __init dm644x_init(void); | ||||
| void __init dm644x_init_asp(struct snd_platform_data *pdata); | ||||
| void dm644x_set_vpfe_config(struct vpfe_config *cfg); | ||||
| 
 | ||||
| #endif /* __ASM_ARCH_DM644X_H */ | ||||
|  | @ -1,41 +1 @@ | |||
| /*
 | ||||
|  * Chip specific defines for DM646x SoC | ||||
|  * | ||||
|  * Author: Kevin Hilman, Deep Root Systems, LLC | ||||
|  * | ||||
|  * 2007 (c) Deep Root Systems, LLC. This file is licensed under | ||||
|  * the terms of the GNU General Public License version 2. This program | ||||
|  * is licensed "as is" without any warranty of any kind, whether express | ||||
|  * or implied. | ||||
|  */ | ||||
| #ifndef __ASM_ARCH_DM646X_H | ||||
| #define __ASM_ARCH_DM646X_H | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <mach/asp.h> | ||||
| #include <linux/i2c.h> | ||||
| #include <linux/videodev2.h> | ||||
| #include <linux/davinci_emac.h> | ||||
| #include <media/davinci/vpif_types.h> | ||||
| 
 | ||||
| #define DM646X_EMAC_BASE		(0x01C80000) | ||||
| #define DM646X_EMAC_MDIO_BASE		(DM646X_EMAC_BASE + 0x4000) | ||||
| #define DM646X_EMAC_CNTRL_OFFSET	(0x0000) | ||||
| #define DM646X_EMAC_CNTRL_MOD_OFFSET	(0x1000) | ||||
| #define DM646X_EMAC_CNTRL_RAM_OFFSET	(0x2000) | ||||
| #define DM646X_EMAC_CNTRL_RAM_SIZE	(0x2000) | ||||
| 
 | ||||
| #define DM646X_ASYNC_EMIF_CONTROL_BASE	0x20008000 | ||||
| #define DM646X_ASYNC_EMIF_CS2_SPACE_BASE 0x42000000 | ||||
| 
 | ||||
| void __init dm646x_init(void); | ||||
| void __init dm646x_init_mcasp0(struct snd_platform_data *pdata); | ||||
| void __init dm646x_init_mcasp1(struct snd_platform_data *pdata); | ||||
| int __init dm646x_init_edma(struct edma_rsv_info *rsv); | ||||
| 
 | ||||
| void dm646x_video_init(void); | ||||
| 
 | ||||
| void dm646x_setup_vpif(struct vpif_display_config *, | ||||
| 		       struct vpif_capture_config *); | ||||
| 
 | ||||
| #endif /* __ASM_ARCH_DM646X_H */ | ||||
| /* empty, remove once unused */ | ||||
|  |  | |||
|  | @ -19,8 +19,6 @@ | |||
|  * and the chip/board init code should then explicitly include | ||||
|  * <chipname>.h | ||||
|  */ | ||||
| #define DAVINCI_SYSTEM_MODULE_BASE        0x01C40000 | ||||
| 
 | ||||
| /*
 | ||||
|  * I/O mapping | ||||
|  */ | ||||
|  |  | |||
|  | @ -8,6 +8,9 @@ obj-			:= | |||
| 
 | ||||
| obj-$(CONFIG_EP93XX_DMA)	+= dma.o | ||||
| 
 | ||||
| obj-$(CONFIG_CRUNCH)		+= crunch.o crunch-bits.o | ||||
| AFLAGS_crunch-bits.o		:= -Wa,-mcpu=ep9312 | ||||
| 
 | ||||
| obj-$(CONFIG_MACH_ADSSPHERE)	+= adssphere.o | ||||
| obj-$(CONFIG_MACH_EDB93XX)	+= edb93xx.o | ||||
| obj-$(CONFIG_MACH_GESBC9312)	+= gesbc9312.o | ||||
|  |  | |||
|  | @ -20,6 +20,7 @@ | |||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| 
 | ||||
| static struct ep93xx_eth_data __initdata adssphere_eth_data = { | ||||
| 	.phy_id		= 1, | ||||
|  |  | |||
|  | @ -25,6 +25,7 @@ | |||
| 
 | ||||
| #include <asm/div64.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| 
 | ||||
| struct clk { | ||||
| 	struct clk	*parent; | ||||
|  |  | |||
|  | @ -46,6 +46,7 @@ | |||
| 
 | ||||
| #include <asm/hardware/vic.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| 
 | ||||
| /*************************************************************************
 | ||||
|  * Static I/O mappings that are needed for all EP93xx platforms | ||||
|  | @ -204,7 +205,6 @@ void ep93xx_syscon_swlocked_write(unsigned int val, void __iomem *reg) | |||
| 
 | ||||
| 	spin_unlock_irqrestore(&syscon_swlock, flags); | ||||
| } | ||||
| EXPORT_SYMBOL(ep93xx_syscon_swlocked_write); | ||||
| 
 | ||||
| void ep93xx_devcfg_set_clear(unsigned int set_bits, unsigned int clear_bits) | ||||
| { | ||||
|  | @ -221,7 +221,6 @@ void ep93xx_devcfg_set_clear(unsigned int set_bits, unsigned int clear_bits) | |||
| 
 | ||||
| 	spin_unlock_irqrestore(&syscon_swlock, flags); | ||||
| } | ||||
| EXPORT_SYMBOL(ep93xx_devcfg_set_clear); | ||||
| 
 | ||||
| /**
 | ||||
|  * ep93xx_chip_revision() - returns the EP93xx chip revision | ||||
|  | @ -648,9 +647,19 @@ static struct platform_device ep93xx_fb_device = { | |||
| 	.resource		= ep93xx_fb_resource, | ||||
| }; | ||||
| 
 | ||||
| /* The backlight use a single register in the framebuffer's register space */ | ||||
| #define EP93XX_RASTER_REG_BRIGHTNESS 0x20 | ||||
| 
 | ||||
| static struct resource ep93xx_bl_resources[] = { | ||||
| 	DEFINE_RES_MEM(EP93XX_RASTER_PHYS_BASE + | ||||
| 		       EP93XX_RASTER_REG_BRIGHTNESS, 0x04), | ||||
| }; | ||||
| 
 | ||||
| static struct platform_device ep93xx_bl_device = { | ||||
| 	.name		= "ep93xx-bl", | ||||
| 	.id		= -1, | ||||
| 	.num_resources	= ARRAY_SIZE(ep93xx_bl_resources), | ||||
| 	.resource	= ep93xx_bl_resources, | ||||
| }; | ||||
| 
 | ||||
| /**
 | ||||
|  | @ -845,11 +854,32 @@ void __init ep93xx_register_ac97(void) | |||
| 	platform_device_register(&ep93xx_pcm_device); | ||||
| } | ||||
| 
 | ||||
| /*************************************************************************
 | ||||
|  * EP93xx Watchdog | ||||
|  *************************************************************************/ | ||||
| static struct resource ep93xx_wdt_resources[] = { | ||||
| 	DEFINE_RES_MEM(EP93XX_WATCHDOG_PHYS_BASE, 0x08), | ||||
| }; | ||||
| 
 | ||||
| static struct platform_device ep93xx_wdt_device = { | ||||
| 	.name		= "ep93xx-wdt", | ||||
| 	.id		= -1, | ||||
| 	.num_resources	= ARRAY_SIZE(ep93xx_wdt_resources), | ||||
| 	.resource	= ep93xx_wdt_resources, | ||||
| }; | ||||
| 
 | ||||
| void __init ep93xx_init_devices(void) | ||||
| { | ||||
| 	/* Disallow access to MaverickCrunch initially */ | ||||
| 	ep93xx_devcfg_clear_bits(EP93XX_SYSCON_DEVCFG_CPENA); | ||||
| 
 | ||||
| 	/* Default all ports to GPIO */ | ||||
| 	ep93xx_devcfg_set_bits(EP93XX_SYSCON_DEVCFG_KEYS | | ||||
| 			       EP93XX_SYSCON_DEVCFG_GONK | | ||||
| 			       EP93XX_SYSCON_DEVCFG_EONIDE | | ||||
| 			       EP93XX_SYSCON_DEVCFG_GONIDE | | ||||
| 			       EP93XX_SYSCON_DEVCFG_HONIDE); | ||||
| 
 | ||||
| 	/* Get the GPIO working early, other devices need it */ | ||||
| 	platform_device_register(&ep93xx_gpio_device); | ||||
| 
 | ||||
|  | @ -860,6 +890,7 @@ void __init ep93xx_init_devices(void) | |||
| 	platform_device_register(&ep93xx_rtc_device); | ||||
| 	platform_device_register(&ep93xx_ohci_device); | ||||
| 	platform_device_register(&ep93xx_leds); | ||||
| 	platform_device_register(&ep93xx_wdt_device); | ||||
| } | ||||
| 
 | ||||
| void ep93xx_restart(char mode, const char *cmd) | ||||
|  |  | |||
|  | @ -16,9 +16,11 @@ | |||
| #include <linux/sched.h> | ||||
| #include <linux/init.h> | ||||
| #include <linux/io.h> | ||||
| #include <mach/ep93xx-regs.h> | ||||
| 
 | ||||
| #include <asm/thread_notify.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| 
 | ||||
| struct crunch_state *crunch_owner; | ||||
| 
 | ||||
| void crunch_task_release(struct thread_info *thread) | ||||
|  | @ -28,6 +28,8 @@ | |||
| #include <mach/dma.h> | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| 
 | ||||
| #define DMA_CHANNEL(_name, _base, _irq) \ | ||||
| 	{ .name = (_name), .base = (_base), .irq = (_irq) } | ||||
| 
 | ||||
|  |  | |||
|  | @ -43,6 +43,7 @@ | |||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| 
 | ||||
| static void __init edb93xx_register_flash(void) | ||||
| { | ||||
|  |  | |||
|  | @ -20,6 +20,7 @@ | |||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| 
 | ||||
| static struct ep93xx_eth_data __initdata gesbc9312_eth_data = { | ||||
| 	.phy_id		= 1, | ||||
|  |  | |||
|  | @ -5,40 +5,6 @@ | |||
| #ifndef __ASM_ARCH_EP93XX_REGS_H | ||||
| #define __ASM_ARCH_EP93XX_REGS_H | ||||
| 
 | ||||
| /*
 | ||||
|  * EP93xx Physical Memory Map: | ||||
|  * | ||||
|  * The ASDO pin is sampled at system reset to select a synchronous or | ||||
|  * asynchronous boot configuration.  When ASDO is "1" (i.e. pulled-up) | ||||
|  * the synchronous boot mode is selected.  When ASDO is "0" (i.e | ||||
|  * pulled-down) the asynchronous boot mode is selected. | ||||
|  * | ||||
|  * In synchronous boot mode nSDCE3 is decoded starting at physical address | ||||
|  * 0x00000000 and nCS0 is decoded starting at 0xf0000000.  For asynchronous | ||||
|  * boot mode they are swapped with nCS0 decoded at 0x00000000 ann nSDCE3 | ||||
|  * decoded at 0xf0000000. | ||||
|  * | ||||
|  * There is known errata for the EP93xx dealing with External Memory | ||||
|  * Configurations.  Please refer to "AN273: EP93xx Silicon Rev E Design | ||||
|  * Guidelines" for more information.  This document can be found at: | ||||
|  * | ||||
|  *	http://www.cirrus.com/en/pubs/appNote/AN273REV4.pdf
 | ||||
|  */ | ||||
| 
 | ||||
| #define EP93XX_CS0_PHYS_BASE_ASYNC	0x00000000	/* ASDO Pin = 0 */ | ||||
| #define EP93XX_SDCE3_PHYS_BASE_SYNC	0x00000000	/* ASDO Pin = 1 */ | ||||
| #define EP93XX_CS1_PHYS_BASE		0x10000000 | ||||
| #define EP93XX_CS2_PHYS_BASE		0x20000000 | ||||
| #define EP93XX_CS3_PHYS_BASE		0x30000000 | ||||
| #define EP93XX_PCMCIA_PHYS_BASE		0x40000000 | ||||
| #define EP93XX_CS6_PHYS_BASE		0x60000000 | ||||
| #define EP93XX_CS7_PHYS_BASE		0x70000000 | ||||
| #define EP93XX_SDCE0_PHYS_BASE		0xc0000000 | ||||
| #define EP93XX_SDCE1_PHYS_BASE		0xd0000000 | ||||
| #define EP93XX_SDCE2_PHYS_BASE		0xe0000000 | ||||
| #define EP93XX_SDCE3_PHYS_BASE_ASYNC	0xf0000000	/* ASDO Pin = 0 */ | ||||
| #define EP93XX_CS0_PHYS_BASE_SYNC	0xf0000000	/* ASDO Pin = 1 */ | ||||
| 
 | ||||
| /*
 | ||||
|  * EP93xx linux memory map: | ||||
|  * | ||||
|  | @ -62,58 +28,7 @@ | |||
| #define EP93XX_APB_PHYS(x)		(EP93XX_APB_PHYS_BASE + (x)) | ||||
| #define EP93XX_APB_IOMEM(x)		IOMEM(EP93XX_APB_VIRT_BASE + (x)) | ||||
| 
 | ||||
| 
 | ||||
| /* AHB peripherals */ | ||||
| #define EP93XX_DMA_BASE			EP93XX_AHB_IOMEM(0x00000000) | ||||
| 
 | ||||
| #define EP93XX_ETHERNET_PHYS_BASE	EP93XX_AHB_PHYS(0x00010000) | ||||
| #define EP93XX_ETHERNET_BASE		EP93XX_AHB_IOMEM(0x00010000) | ||||
| 
 | ||||
| #define EP93XX_USB_PHYS_BASE		EP93XX_AHB_PHYS(0x00020000) | ||||
| #define EP93XX_USB_BASE			EP93XX_AHB_IOMEM(0x00020000) | ||||
| 
 | ||||
| #define EP93XX_RASTER_PHYS_BASE		EP93XX_AHB_PHYS(0x00030000) | ||||
| #define EP93XX_RASTER_BASE		EP93XX_AHB_IOMEM(0x00030000) | ||||
| 
 | ||||
| #define EP93XX_GRAPHICS_ACCEL_BASE	EP93XX_AHB_IOMEM(0x00040000) | ||||
| 
 | ||||
| #define EP93XX_SDRAM_CONTROLLER_BASE	EP93XX_AHB_IOMEM(0x00060000) | ||||
| 
 | ||||
| #define EP93XX_PCMCIA_CONTROLLER_BASE	EP93XX_AHB_IOMEM(0x00080000) | ||||
| 
 | ||||
| #define EP93XX_BOOT_ROM_BASE		EP93XX_AHB_IOMEM(0x00090000) | ||||
| 
 | ||||
| #define EP93XX_IDE_BASE			EP93XX_AHB_IOMEM(0x000a0000) | ||||
| 
 | ||||
| #define EP93XX_VIC1_BASE		EP93XX_AHB_IOMEM(0x000b0000) | ||||
| 
 | ||||
| #define EP93XX_VIC2_BASE		EP93XX_AHB_IOMEM(0x000c0000) | ||||
| 
 | ||||
| 
 | ||||
| /* APB peripherals */ | ||||
| #define EP93XX_TIMER_BASE		EP93XX_APB_IOMEM(0x00010000) | ||||
| 
 | ||||
| #define EP93XX_I2S_PHYS_BASE		EP93XX_APB_PHYS(0x00020000) | ||||
| #define EP93XX_I2S_BASE			EP93XX_APB_IOMEM(0x00020000) | ||||
| 
 | ||||
| #define EP93XX_SECURITY_BASE		EP93XX_APB_IOMEM(0x00030000) | ||||
| 
 | ||||
| #define EP93XX_GPIO_PHYS_BASE		EP93XX_APB_PHYS(0x00040000) | ||||
| #define EP93XX_GPIO_BASE		EP93XX_APB_IOMEM(0x00040000) | ||||
| #define EP93XX_GPIO_REG(x)		(EP93XX_GPIO_BASE + (x)) | ||||
| #define EP93XX_GPIO_F_INT_STATUS	EP93XX_GPIO_REG(0x5c) | ||||
| #define EP93XX_GPIO_A_INT_STATUS	EP93XX_GPIO_REG(0xa0) | ||||
| #define EP93XX_GPIO_B_INT_STATUS	EP93XX_GPIO_REG(0xbc) | ||||
| #define EP93XX_GPIO_EEDRIVE		EP93XX_GPIO_REG(0xc8) | ||||
| 
 | ||||
| #define EP93XX_AAC_PHYS_BASE		EP93XX_APB_PHYS(0x00080000) | ||||
| #define EP93XX_AAC_BASE			EP93XX_APB_IOMEM(0x00080000) | ||||
| 
 | ||||
| #define EP93XX_SPI_PHYS_BASE		EP93XX_APB_PHYS(0x000a0000) | ||||
| #define EP93XX_SPI_BASE			EP93XX_APB_IOMEM(0x000a0000) | ||||
| 
 | ||||
| #define EP93XX_IRDA_BASE		EP93XX_APB_IOMEM(0x000b0000) | ||||
| 
 | ||||
| /* APB UARTs */ | ||||
| #define EP93XX_UART1_PHYS_BASE		EP93XX_APB_PHYS(0x000c0000) | ||||
| #define EP93XX_UART1_BASE		EP93XX_APB_IOMEM(0x000c0000) | ||||
| 
 | ||||
|  | @ -123,108 +38,4 @@ | |||
| #define EP93XX_UART3_PHYS_BASE		EP93XX_APB_PHYS(0x000e0000) | ||||
| #define EP93XX_UART3_BASE		EP93XX_APB_IOMEM(0x000e0000) | ||||
| 
 | ||||
| #define EP93XX_KEY_MATRIX_PHYS_BASE	EP93XX_APB_PHYS(0x000f0000) | ||||
| #define EP93XX_KEY_MATRIX_BASE		EP93XX_APB_IOMEM(0x000f0000) | ||||
| 
 | ||||
| #define EP93XX_ADC_BASE			EP93XX_APB_IOMEM(0x00100000) | ||||
| #define EP93XX_TOUCHSCREEN_BASE		EP93XX_APB_IOMEM(0x00100000) | ||||
| 
 | ||||
| #define EP93XX_PWM_PHYS_BASE		EP93XX_APB_PHYS(0x00110000) | ||||
| #define EP93XX_PWM_BASE			EP93XX_APB_IOMEM(0x00110000) | ||||
| 
 | ||||
| #define EP93XX_RTC_PHYS_BASE		EP93XX_APB_PHYS(0x00120000) | ||||
| #define EP93XX_RTC_BASE			EP93XX_APB_IOMEM(0x00120000) | ||||
| 
 | ||||
| #define EP93XX_SYSCON_BASE		EP93XX_APB_IOMEM(0x00130000) | ||||
| #define EP93XX_SYSCON_REG(x)		(EP93XX_SYSCON_BASE + (x)) | ||||
| #define EP93XX_SYSCON_POWER_STATE	EP93XX_SYSCON_REG(0x00) | ||||
| #define EP93XX_SYSCON_PWRCNT		EP93XX_SYSCON_REG(0x04) | ||||
| #define EP93XX_SYSCON_PWRCNT_FIR_EN	(1<<31) | ||||
| #define EP93XX_SYSCON_PWRCNT_UARTBAUD	(1<<29) | ||||
| #define EP93XX_SYSCON_PWRCNT_USH_EN	(1<<28) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2M1	(1<<27) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2M0	(1<<26) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P8	(1<<25) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P9	(1<<24) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P6	(1<<23) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P7	(1<<22) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P4	(1<<21) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P5	(1<<20) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P2	(1<<19) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P3	(1<<18) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P0	(1<<17) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P1	(1<<16) | ||||
| #define EP93XX_SYSCON_HALT		EP93XX_SYSCON_REG(0x08) | ||||
| #define EP93XX_SYSCON_STANDBY		EP93XX_SYSCON_REG(0x0c) | ||||
| #define EP93XX_SYSCON_CLKSET1		EP93XX_SYSCON_REG(0x20) | ||||
| #define EP93XX_SYSCON_CLKSET1_NBYP1	(1<<23) | ||||
| #define EP93XX_SYSCON_CLKSET2		EP93XX_SYSCON_REG(0x24) | ||||
| #define EP93XX_SYSCON_CLKSET2_NBYP2	(1<<19) | ||||
| #define EP93XX_SYSCON_CLKSET2_PLL2_EN	(1<<18) | ||||
| #define EP93XX_SYSCON_DEVCFG		EP93XX_SYSCON_REG(0x80) | ||||
| #define EP93XX_SYSCON_DEVCFG_SWRST	(1<<31) | ||||
| #define EP93XX_SYSCON_DEVCFG_D1ONG	(1<<30) | ||||
| #define EP93XX_SYSCON_DEVCFG_D0ONG	(1<<29) | ||||
| #define EP93XX_SYSCON_DEVCFG_IONU2	(1<<28) | ||||
| #define EP93XX_SYSCON_DEVCFG_GONK	(1<<27) | ||||
| #define EP93XX_SYSCON_DEVCFG_TONG	(1<<26) | ||||
| #define EP93XX_SYSCON_DEVCFG_MONG	(1<<25) | ||||
| #define EP93XX_SYSCON_DEVCFG_U3EN	(1<<24) | ||||
| #define EP93XX_SYSCON_DEVCFG_CPENA	(1<<23) | ||||
| #define EP93XX_SYSCON_DEVCFG_A2ONG	(1<<22) | ||||
| #define EP93XX_SYSCON_DEVCFG_A1ONG	(1<<21) | ||||
| #define EP93XX_SYSCON_DEVCFG_U2EN	(1<<20) | ||||
| #define EP93XX_SYSCON_DEVCFG_EXVC	(1<<19) | ||||
| #define EP93XX_SYSCON_DEVCFG_U1EN	(1<<18) | ||||
| #define EP93XX_SYSCON_DEVCFG_TIN	(1<<17) | ||||
| #define EP93XX_SYSCON_DEVCFG_HC3IN	(1<<15) | ||||
| #define EP93XX_SYSCON_DEVCFG_HC3EN	(1<<14) | ||||
| #define EP93XX_SYSCON_DEVCFG_HC1IN	(1<<13) | ||||
| #define EP93XX_SYSCON_DEVCFG_HC1EN	(1<<12) | ||||
| #define EP93XX_SYSCON_DEVCFG_HONIDE	(1<<11) | ||||
| #define EP93XX_SYSCON_DEVCFG_GONIDE	(1<<10) | ||||
| #define EP93XX_SYSCON_DEVCFG_PONG	(1<<9) | ||||
| #define EP93XX_SYSCON_DEVCFG_EONIDE	(1<<8) | ||||
| #define EP93XX_SYSCON_DEVCFG_I2SONSSP	(1<<7) | ||||
| #define EP93XX_SYSCON_DEVCFG_I2SONAC97	(1<<6) | ||||
| #define EP93XX_SYSCON_DEVCFG_RASONP3	(1<<4) | ||||
| #define EP93XX_SYSCON_DEVCFG_RAS	(1<<3) | ||||
| #define EP93XX_SYSCON_DEVCFG_ADCPD	(1<<2) | ||||
| #define EP93XX_SYSCON_DEVCFG_KEYS	(1<<1) | ||||
| #define EP93XX_SYSCON_DEVCFG_SHENA	(1<<0) | ||||
| #define EP93XX_SYSCON_VIDCLKDIV		EP93XX_SYSCON_REG(0x84) | ||||
| #define EP93XX_SYSCON_CLKDIV_ENABLE	(1<<15) | ||||
| #define EP93XX_SYSCON_CLKDIV_ESEL	(1<<14) | ||||
| #define EP93XX_SYSCON_CLKDIV_PSEL	(1<<13) | ||||
| #define EP93XX_SYSCON_CLKDIV_PDIV_SHIFT	8 | ||||
| #define EP93XX_SYSCON_I2SCLKDIV		EP93XX_SYSCON_REG(0x8c) | ||||
| #define EP93XX_SYSCON_I2SCLKDIV_SENA	(1<<31) | ||||
| #define EP93XX_SYSCON_I2SCLKDIV_ORIDE   (1<<29) | ||||
| #define EP93XX_SYSCON_I2SCLKDIV_SPOL	(1<<19) | ||||
| #define EP93XX_I2SCLKDIV_SDIV		(1 << 16) | ||||
| #define EP93XX_I2SCLKDIV_LRDIV32	(0 << 17) | ||||
| #define EP93XX_I2SCLKDIV_LRDIV64	(1 << 17) | ||||
| #define EP93XX_I2SCLKDIV_LRDIV128 	(2 << 17) | ||||
| #define EP93XX_I2SCLKDIV_LRDIV_MASK 	(3 << 17) | ||||
| #define EP93XX_SYSCON_KEYTCHCLKDIV	EP93XX_SYSCON_REG(0x90) | ||||
| #define EP93XX_SYSCON_KEYTCHCLKDIV_TSEN	(1<<31) | ||||
| #define EP93XX_SYSCON_KEYTCHCLKDIV_ADIV	(1<<16) | ||||
| #define EP93XX_SYSCON_KEYTCHCLKDIV_KEN	(1<<15) | ||||
| #define EP93XX_SYSCON_KEYTCHCLKDIV_KDIV	(1<<0) | ||||
| #define EP93XX_SYSCON_SYSCFG		EP93XX_SYSCON_REG(0x9c) | ||||
| #define EP93XX_SYSCON_SYSCFG_REV_MASK	(0xf0000000) | ||||
| #define EP93XX_SYSCON_SYSCFG_REV_SHIFT	(28) | ||||
| #define EP93XX_SYSCON_SYSCFG_SBOOT	(1<<8) | ||||
| #define EP93XX_SYSCON_SYSCFG_LCSN7	(1<<7) | ||||
| #define EP93XX_SYSCON_SYSCFG_LCSN6	(1<<6) | ||||
| #define EP93XX_SYSCON_SYSCFG_LASDO	(1<<5) | ||||
| #define EP93XX_SYSCON_SYSCFG_LEEDA	(1<<4) | ||||
| #define EP93XX_SYSCON_SYSCFG_LEECLK	(1<<3) | ||||
| #define EP93XX_SYSCON_SYSCFG_LCSN2	(1<<1) | ||||
| #define EP93XX_SYSCON_SYSCFG_LCSN1	(1<<0) | ||||
| #define EP93XX_SYSCON_SWLOCK		EP93XX_SYSCON_REG(0xc0) | ||||
| 
 | ||||
| #define EP93XX_WATCHDOG_BASE		EP93XX_APB_IOMEM(0x00140000) | ||||
| 
 | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -3,6 +3,16 @@ | |||
| #ifndef __GPIO_EP93XX_H | ||||
| #define __GPIO_EP93XX_H | ||||
| 
 | ||||
| #include <mach/ep93xx-regs.h> | ||||
| 
 | ||||
| #define EP93XX_GPIO_PHYS_BASE		EP93XX_APB_PHYS(0x00040000) | ||||
| #define EP93XX_GPIO_BASE		EP93XX_APB_IOMEM(0x00040000) | ||||
| #define EP93XX_GPIO_REG(x)		(EP93XX_GPIO_BASE + (x)) | ||||
| #define EP93XX_GPIO_F_INT_STATUS	EP93XX_GPIO_REG(0x5c) | ||||
| #define EP93XX_GPIO_A_INT_STATUS	EP93XX_GPIO_REG(0xa0) | ||||
| #define EP93XX_GPIO_B_INT_STATUS	EP93XX_GPIO_REG(0xbc) | ||||
| #define EP93XX_GPIO_EEDRIVE		EP93XX_GPIO_REG(0xc8) | ||||
| 
 | ||||
| /* GPIO port A.  */ | ||||
| #define EP93XX_GPIO_LINE_A(x)		((x) + 0) | ||||
| #define EP93XX_GPIO_LINE_EGPIO0		EP93XX_GPIO_LINE_A(0) | ||||
|  |  | |||
|  | @ -5,7 +5,6 @@ | |||
| #ifndef __ASM_ARCH_HARDWARE_H | ||||
| #define __ASM_ARCH_HARDWARE_H | ||||
| 
 | ||||
| #include <mach/ep93xx-regs.h> | ||||
| #include <mach/platform.h> | ||||
| 
 | ||||
| /*
 | ||||
|  |  | |||
|  | @ -21,20 +21,6 @@ struct ep93xx_eth_data | |||
| void ep93xx_map_io(void); | ||||
| void ep93xx_init_irq(void); | ||||
| 
 | ||||
| /* EP93xx System Controller software locked register write */ | ||||
| void ep93xx_syscon_swlocked_write(unsigned int val, void __iomem *reg); | ||||
| void ep93xx_devcfg_set_clear(unsigned int set_bits, unsigned int clear_bits); | ||||
| 
 | ||||
| static inline void ep93xx_devcfg_set_bits(unsigned int bits) | ||||
| { | ||||
| 	ep93xx_devcfg_set_clear(bits, 0x00); | ||||
| } | ||||
| 
 | ||||
| static inline void ep93xx_devcfg_clear_bits(unsigned int bits) | ||||
| { | ||||
| 	ep93xx_devcfg_set_clear(0x00, bits); | ||||
| } | ||||
| 
 | ||||
| #define EP93XX_CHIP_REV_D0	3 | ||||
| #define EP93XX_CHIP_REV_D1	4 | ||||
| #define EP93XX_CHIP_REV_E0	5 | ||||
|  |  | |||
|  | @ -22,6 +22,7 @@ | |||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| 
 | ||||
| /*************************************************************************
 | ||||
|  * Micro9 NOR Flash | ||||
|  |  | |||
|  | @ -29,6 +29,8 @@ | |||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| 
 | ||||
| static struct ep93xx_eth_data __initdata simone_eth_data = { | ||||
| 	.phy_id		= 1, | ||||
| }; | ||||
|  |  | |||
|  | @ -35,6 +35,8 @@ | |||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| 
 | ||||
| #define SNAPPERCL15_NAND_BASE	(EP93XX_CS7_PHYS_BASE + SZ_16M) | ||||
| 
 | ||||
| #define SNAPPERCL15_NAND_WPN	(1 << 8)  /* Write protect (active low) */ | ||||
|  |  | |||
							
								
								
									
										213
									
								
								arch/arm/mach-ep93xx/soc.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										213
									
								
								arch/arm/mach-ep93xx/soc.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,213 @@ | |||
| /*
 | ||||
|  * arch/arm/mach-ep93xx/soc.h | ||||
|  * | ||||
|  * Copyright (C) 2012 Open Kernel Labs <www.ok-labs.com> | ||||
|  * Copyright (C) 2012 Ryan Mallon <rmallon@gmail.com> | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or (at | ||||
|  * your option) any later version. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef _EP93XX_SOC_H | ||||
| #define _EP93XX_SOC_H | ||||
| 
 | ||||
| #include <mach/ep93xx-regs.h> | ||||
| 
 | ||||
| /*
 | ||||
|  * EP93xx Physical Memory Map: | ||||
|  * | ||||
|  * The ASDO pin is sampled at system reset to select a synchronous or | ||||
|  * asynchronous boot configuration.  When ASDO is "1" (i.e. pulled-up) | ||||
|  * the synchronous boot mode is selected.  When ASDO is "0" (i.e | ||||
|  * pulled-down) the asynchronous boot mode is selected. | ||||
|  * | ||||
|  * In synchronous boot mode nSDCE3 is decoded starting at physical address | ||||
|  * 0x00000000 and nCS0 is decoded starting at 0xf0000000.  For asynchronous | ||||
|  * boot mode they are swapped with nCS0 decoded at 0x00000000 ann nSDCE3 | ||||
|  * decoded at 0xf0000000. | ||||
|  * | ||||
|  * There is known errata for the EP93xx dealing with External Memory | ||||
|  * Configurations.  Please refer to "AN273: EP93xx Silicon Rev E Design | ||||
|  * Guidelines" for more information.  This document can be found at: | ||||
|  * | ||||
|  *	http://www.cirrus.com/en/pubs/appNote/AN273REV4.pdf
 | ||||
|  */ | ||||
| 
 | ||||
| #define EP93XX_CS0_PHYS_BASE_ASYNC	0x00000000	/* ASDO Pin = 0 */ | ||||
| #define EP93XX_SDCE3_PHYS_BASE_SYNC	0x00000000	/* ASDO Pin = 1 */ | ||||
| #define EP93XX_CS1_PHYS_BASE		0x10000000 | ||||
| #define EP93XX_CS2_PHYS_BASE		0x20000000 | ||||
| #define EP93XX_CS3_PHYS_BASE		0x30000000 | ||||
| #define EP93XX_PCMCIA_PHYS_BASE		0x40000000 | ||||
| #define EP93XX_CS6_PHYS_BASE		0x60000000 | ||||
| #define EP93XX_CS7_PHYS_BASE		0x70000000 | ||||
| #define EP93XX_SDCE0_PHYS_BASE		0xc0000000 | ||||
| #define EP93XX_SDCE1_PHYS_BASE		0xd0000000 | ||||
| #define EP93XX_SDCE2_PHYS_BASE		0xe0000000 | ||||
| #define EP93XX_SDCE3_PHYS_BASE_ASYNC	0xf0000000	/* ASDO Pin = 0 */ | ||||
| #define EP93XX_CS0_PHYS_BASE_SYNC	0xf0000000	/* ASDO Pin = 1 */ | ||||
| 
 | ||||
| /* AHB peripherals */ | ||||
| #define EP93XX_DMA_BASE			EP93XX_AHB_IOMEM(0x00000000) | ||||
| 
 | ||||
| #define EP93XX_ETHERNET_PHYS_BASE	EP93XX_AHB_PHYS(0x00010000) | ||||
| #define EP93XX_ETHERNET_BASE		EP93XX_AHB_IOMEM(0x00010000) | ||||
| 
 | ||||
| #define EP93XX_USB_PHYS_BASE		EP93XX_AHB_PHYS(0x00020000) | ||||
| #define EP93XX_USB_BASE			EP93XX_AHB_IOMEM(0x00020000) | ||||
| 
 | ||||
| #define EP93XX_RASTER_PHYS_BASE		EP93XX_AHB_PHYS(0x00030000) | ||||
| #define EP93XX_RASTER_BASE		EP93XX_AHB_IOMEM(0x00030000) | ||||
| 
 | ||||
| #define EP93XX_GRAPHICS_ACCEL_BASE	EP93XX_AHB_IOMEM(0x00040000) | ||||
| 
 | ||||
| #define EP93XX_SDRAM_CONTROLLER_BASE	EP93XX_AHB_IOMEM(0x00060000) | ||||
| 
 | ||||
| #define EP93XX_PCMCIA_CONTROLLER_BASE	EP93XX_AHB_IOMEM(0x00080000) | ||||
| 
 | ||||
| #define EP93XX_BOOT_ROM_BASE		EP93XX_AHB_IOMEM(0x00090000) | ||||
| 
 | ||||
| #define EP93XX_IDE_BASE			EP93XX_AHB_IOMEM(0x000a0000) | ||||
| 
 | ||||
| #define EP93XX_VIC1_BASE		EP93XX_AHB_IOMEM(0x000b0000) | ||||
| 
 | ||||
| #define EP93XX_VIC2_BASE		EP93XX_AHB_IOMEM(0x000c0000) | ||||
| 
 | ||||
| /* APB peripherals */ | ||||
| #define EP93XX_TIMER_BASE		EP93XX_APB_IOMEM(0x00010000) | ||||
| 
 | ||||
| #define EP93XX_I2S_PHYS_BASE		EP93XX_APB_PHYS(0x00020000) | ||||
| #define EP93XX_I2S_BASE			EP93XX_APB_IOMEM(0x00020000) | ||||
| 
 | ||||
| #define EP93XX_SECURITY_BASE		EP93XX_APB_IOMEM(0x00030000) | ||||
| 
 | ||||
| #define EP93XX_AAC_PHYS_BASE		EP93XX_APB_PHYS(0x00080000) | ||||
| #define EP93XX_AAC_BASE			EP93XX_APB_IOMEM(0x00080000) | ||||
| 
 | ||||
| #define EP93XX_SPI_PHYS_BASE		EP93XX_APB_PHYS(0x000a0000) | ||||
| #define EP93XX_SPI_BASE			EP93XX_APB_IOMEM(0x000a0000) | ||||
| 
 | ||||
| #define EP93XX_IRDA_BASE		EP93XX_APB_IOMEM(0x000b0000) | ||||
| 
 | ||||
| #define EP93XX_KEY_MATRIX_PHYS_BASE	EP93XX_APB_PHYS(0x000f0000) | ||||
| #define EP93XX_KEY_MATRIX_BASE		EP93XX_APB_IOMEM(0x000f0000) | ||||
| 
 | ||||
| #define EP93XX_ADC_BASE			EP93XX_APB_IOMEM(0x00100000) | ||||
| #define EP93XX_TOUCHSCREEN_BASE		EP93XX_APB_IOMEM(0x00100000) | ||||
| 
 | ||||
| #define EP93XX_PWM_PHYS_BASE		EP93XX_APB_PHYS(0x00110000) | ||||
| #define EP93XX_PWM_BASE			EP93XX_APB_IOMEM(0x00110000) | ||||
| 
 | ||||
| #define EP93XX_RTC_PHYS_BASE		EP93XX_APB_PHYS(0x00120000) | ||||
| #define EP93XX_RTC_BASE			EP93XX_APB_IOMEM(0x00120000) | ||||
| 
 | ||||
| #define EP93XX_WATCHDOG_PHYS_BASE	EP93XX_APB_PHYS(0x00140000) | ||||
| #define EP93XX_WATCHDOG_BASE		EP93XX_APB_IOMEM(0x00140000) | ||||
| 
 | ||||
| /* System controller */ | ||||
| #define EP93XX_SYSCON_BASE		EP93XX_APB_IOMEM(0x00130000) | ||||
| #define EP93XX_SYSCON_REG(x)		(EP93XX_SYSCON_BASE + (x)) | ||||
| #define EP93XX_SYSCON_POWER_STATE	EP93XX_SYSCON_REG(0x00) | ||||
| #define EP93XX_SYSCON_PWRCNT		EP93XX_SYSCON_REG(0x04) | ||||
| #define EP93XX_SYSCON_PWRCNT_FIR_EN	(1<<31) | ||||
| #define EP93XX_SYSCON_PWRCNT_UARTBAUD	(1<<29) | ||||
| #define EP93XX_SYSCON_PWRCNT_USH_EN	(1<<28) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2M1	(1<<27) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2M0	(1<<26) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P8	(1<<25) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P9	(1<<24) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P6	(1<<23) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P7	(1<<22) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P4	(1<<21) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P5	(1<<20) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P2	(1<<19) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P3	(1<<18) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P0	(1<<17) | ||||
| #define EP93XX_SYSCON_PWRCNT_DMA_M2P1	(1<<16) | ||||
| #define EP93XX_SYSCON_HALT		EP93XX_SYSCON_REG(0x08) | ||||
| #define EP93XX_SYSCON_STANDBY		EP93XX_SYSCON_REG(0x0c) | ||||
| #define EP93XX_SYSCON_CLKSET1		EP93XX_SYSCON_REG(0x20) | ||||
| #define EP93XX_SYSCON_CLKSET1_NBYP1	(1<<23) | ||||
| #define EP93XX_SYSCON_CLKSET2		EP93XX_SYSCON_REG(0x24) | ||||
| #define EP93XX_SYSCON_CLKSET2_NBYP2	(1<<19) | ||||
| #define EP93XX_SYSCON_CLKSET2_PLL2_EN	(1<<18) | ||||
| #define EP93XX_SYSCON_DEVCFG		EP93XX_SYSCON_REG(0x80) | ||||
| #define EP93XX_SYSCON_DEVCFG_SWRST	(1<<31) | ||||
| #define EP93XX_SYSCON_DEVCFG_D1ONG	(1<<30) | ||||
| #define EP93XX_SYSCON_DEVCFG_D0ONG	(1<<29) | ||||
| #define EP93XX_SYSCON_DEVCFG_IONU2	(1<<28) | ||||
| #define EP93XX_SYSCON_DEVCFG_GONK	(1<<27) | ||||
| #define EP93XX_SYSCON_DEVCFG_TONG	(1<<26) | ||||
| #define EP93XX_SYSCON_DEVCFG_MONG	(1<<25) | ||||
| #define EP93XX_SYSCON_DEVCFG_U3EN	(1<<24) | ||||
| #define EP93XX_SYSCON_DEVCFG_CPENA	(1<<23) | ||||
| #define EP93XX_SYSCON_DEVCFG_A2ONG	(1<<22) | ||||
| #define EP93XX_SYSCON_DEVCFG_A1ONG	(1<<21) | ||||
| #define EP93XX_SYSCON_DEVCFG_U2EN	(1<<20) | ||||
| #define EP93XX_SYSCON_DEVCFG_EXVC	(1<<19) | ||||
| #define EP93XX_SYSCON_DEVCFG_U1EN	(1<<18) | ||||
| #define EP93XX_SYSCON_DEVCFG_TIN	(1<<17) | ||||
| #define EP93XX_SYSCON_DEVCFG_HC3IN	(1<<15) | ||||
| #define EP93XX_SYSCON_DEVCFG_HC3EN	(1<<14) | ||||
| #define EP93XX_SYSCON_DEVCFG_HC1IN	(1<<13) | ||||
| #define EP93XX_SYSCON_DEVCFG_HC1EN	(1<<12) | ||||
| #define EP93XX_SYSCON_DEVCFG_HONIDE	(1<<11) | ||||
| #define EP93XX_SYSCON_DEVCFG_GONIDE	(1<<10) | ||||
| #define EP93XX_SYSCON_DEVCFG_PONG	(1<<9) | ||||
| #define EP93XX_SYSCON_DEVCFG_EONIDE	(1<<8) | ||||
| #define EP93XX_SYSCON_DEVCFG_I2SONSSP	(1<<7) | ||||
| #define EP93XX_SYSCON_DEVCFG_I2SONAC97	(1<<6) | ||||
| #define EP93XX_SYSCON_DEVCFG_RASONP3	(1<<4) | ||||
| #define EP93XX_SYSCON_DEVCFG_RAS	(1<<3) | ||||
| #define EP93XX_SYSCON_DEVCFG_ADCPD	(1<<2) | ||||
| #define EP93XX_SYSCON_DEVCFG_KEYS	(1<<1) | ||||
| #define EP93XX_SYSCON_DEVCFG_SHENA	(1<<0) | ||||
| #define EP93XX_SYSCON_VIDCLKDIV		EP93XX_SYSCON_REG(0x84) | ||||
| #define EP93XX_SYSCON_CLKDIV_ENABLE	(1<<15) | ||||
| #define EP93XX_SYSCON_CLKDIV_ESEL	(1<<14) | ||||
| #define EP93XX_SYSCON_CLKDIV_PSEL	(1<<13) | ||||
| #define EP93XX_SYSCON_CLKDIV_PDIV_SHIFT	8 | ||||
| #define EP93XX_SYSCON_I2SCLKDIV		EP93XX_SYSCON_REG(0x8c) | ||||
| #define EP93XX_SYSCON_I2SCLKDIV_SENA	(1<<31) | ||||
| #define EP93XX_SYSCON_I2SCLKDIV_ORIDE   (1<<29) | ||||
| #define EP93XX_SYSCON_I2SCLKDIV_SPOL	(1<<19) | ||||
| #define EP93XX_I2SCLKDIV_SDIV		(1 << 16) | ||||
| #define EP93XX_I2SCLKDIV_LRDIV32	(0 << 17) | ||||
| #define EP93XX_I2SCLKDIV_LRDIV64	(1 << 17) | ||||
| #define EP93XX_I2SCLKDIV_LRDIV128	(2 << 17) | ||||
| #define EP93XX_I2SCLKDIV_LRDIV_MASK	(3 << 17) | ||||
| #define EP93XX_SYSCON_KEYTCHCLKDIV	EP93XX_SYSCON_REG(0x90) | ||||
| #define EP93XX_SYSCON_KEYTCHCLKDIV_TSEN	(1<<31) | ||||
| #define EP93XX_SYSCON_KEYTCHCLKDIV_ADIV	(1<<16) | ||||
| #define EP93XX_SYSCON_KEYTCHCLKDIV_KEN	(1<<15) | ||||
| #define EP93XX_SYSCON_KEYTCHCLKDIV_KDIV	(1<<0) | ||||
| #define EP93XX_SYSCON_SYSCFG		EP93XX_SYSCON_REG(0x9c) | ||||
| #define EP93XX_SYSCON_SYSCFG_REV_MASK	(0xf0000000) | ||||
| #define EP93XX_SYSCON_SYSCFG_REV_SHIFT	(28) | ||||
| #define EP93XX_SYSCON_SYSCFG_SBOOT	(1<<8) | ||||
| #define EP93XX_SYSCON_SYSCFG_LCSN7	(1<<7) | ||||
| #define EP93XX_SYSCON_SYSCFG_LCSN6	(1<<6) | ||||
| #define EP93XX_SYSCON_SYSCFG_LASDO	(1<<5) | ||||
| #define EP93XX_SYSCON_SYSCFG_LEEDA	(1<<4) | ||||
| #define EP93XX_SYSCON_SYSCFG_LEECLK	(1<<3) | ||||
| #define EP93XX_SYSCON_SYSCFG_LCSN2	(1<<1) | ||||
| #define EP93XX_SYSCON_SYSCFG_LCSN1	(1<<0) | ||||
| #define EP93XX_SYSCON_SWLOCK		EP93XX_SYSCON_REG(0xc0) | ||||
| 
 | ||||
| /* EP93xx System Controller software locked register write */ | ||||
| void ep93xx_syscon_swlocked_write(unsigned int val, void __iomem *reg); | ||||
| void ep93xx_devcfg_set_clear(unsigned int set_bits, unsigned int clear_bits); | ||||
| 
 | ||||
| static inline void ep93xx_devcfg_set_bits(unsigned int bits) | ||||
| { | ||||
| 	ep93xx_devcfg_set_clear(bits, 0x00); | ||||
| } | ||||
| 
 | ||||
| static inline void ep93xx_devcfg_clear_bits(unsigned int bits) | ||||
| { | ||||
| 	ep93xx_devcfg_set_clear(0x00, bits); | ||||
| } | ||||
| 
 | ||||
| #endif /* _EP93XX_SOC_H */ | ||||
|  | @ -28,6 +28,7 @@ | |||
| #include <asm/mach/map.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| 
 | ||||
| static struct map_desc ts72xx_io_desc[] __initdata = { | ||||
| 	{ | ||||
|  |  | |||
|  | @ -39,6 +39,8 @@ | |||
| #include <asm/mach/map.h> | ||||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include "soc.h" | ||||
| 
 | ||||
| /*************************************************************************
 | ||||
|  * Static I/O mappings for the FPGA | ||||
|  *************************************************************************/ | ||||
|  |  | |||
|  | @ -12,7 +12,8 @@ obj-				:= | |||
| 
 | ||||
| # Core
 | ||||
| 
 | ||||
| obj-$(CONFIG_ARCH_EXYNOS4)	+= common.o clock.o | ||||
| obj-$(CONFIG_ARCH_EXYNOS)	+= common.o | ||||
| obj-$(CONFIG_ARCH_EXYNOS4)	+= clock-exynos4.o | ||||
| obj-$(CONFIG_CPU_EXYNOS4210)	+= clock-exynos4210.o | ||||
| obj-$(CONFIG_SOC_EXYNOS4212)	+= clock-exynos4212.o | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										1563
									
								
								arch/arm/mach-exynos/clock-exynos4.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1563
									
								
								arch/arm/mach-exynos/clock-exynos4.c
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										30
									
								
								arch/arm/mach-exynos/clock-exynos4.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								arch/arm/mach-exynos/clock-exynos4.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,30 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2011-2012 Samsung Electronics Co., Ltd. | ||||
|  *		http://www.samsung.com
 | ||||
|  * | ||||
|  * Header file for exynos4 clock support | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License version 2 as | ||||
|  * published by the Free Software Foundation. | ||||
| */ | ||||
| 
 | ||||
| #ifndef __ASM_ARCH_CLOCK_H | ||||
| #define __ASM_ARCH_CLOCK_H __FILE__ | ||||
| 
 | ||||
| #include <linux/clk.h> | ||||
| 
 | ||||
| extern struct clksrc_clk exynos4_clk_aclk_133; | ||||
| extern struct clksrc_clk exynos4_clk_mout_mpll; | ||||
| 
 | ||||
| extern struct clksrc_sources exynos4_clkset_mout_corebus; | ||||
| extern struct clksrc_sources exynos4_clkset_group; | ||||
| 
 | ||||
| extern struct clk *exynos4_clkset_aclk_top_list[]; | ||||
| extern struct clk *exynos4_clkset_group_list[]; | ||||
| 
 | ||||
| extern int exynos4_clksrc_mask_fsys_ctrl(struct clk *clk, int enable); | ||||
| extern int exynos4_clk_ip_fsys_ctrl(struct clk *clk, int enable); | ||||
| extern int exynos4_clk_ip_lcd1_ctrl(struct clk *clk, int enable); | ||||
| 
 | ||||
| #endif /* __ASM_ARCH_CLOCK_H */ | ||||
|  | @ -1,7 +1,5 @@ | |||
| /*
 | ||||
|  * linux/arch/arm/mach-exynos4/clock-exynos4210.c | ||||
|  * | ||||
|  * Copyright (c) 2011 Samsung Electronics Co., Ltd. | ||||
|  * Copyright (c) 2011-2012 Samsung Electronics Co., Ltd. | ||||
|  *		http://www.samsung.com
 | ||||
|  * | ||||
|  * EXYNOS4210 - Clock support | ||||
|  | @ -28,20 +26,20 @@ | |||
| #include <mach/hardware.h> | ||||
| #include <mach/map.h> | ||||
| #include <mach/regs-clock.h> | ||||
| #include <mach/exynos4-clock.h> | ||||
| 
 | ||||
| #include "common.h" | ||||
| #include "clock-exynos4.h" | ||||
| 
 | ||||
| #ifdef CONFIG_PM_SLEEP | ||||
| static struct sleep_save exynos4210_clock_save[] = { | ||||
| 	SAVE_ITEM(S5P_CLKSRC_IMAGE), | ||||
| 	SAVE_ITEM(S5P_CLKSRC_LCD1), | ||||
| 	SAVE_ITEM(S5P_CLKDIV_IMAGE), | ||||
| 	SAVE_ITEM(S5P_CLKDIV_LCD1), | ||||
| 	SAVE_ITEM(S5P_CLKSRC_MASK_LCD1), | ||||
| 	SAVE_ITEM(S5P_CLKGATE_IP_IMAGE_4210), | ||||
| 	SAVE_ITEM(S5P_CLKGATE_IP_LCD1), | ||||
| 	SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4210), | ||||
| 	SAVE_ITEM(EXYNOS4_CLKSRC_IMAGE), | ||||
| 	SAVE_ITEM(EXYNOS4_CLKDIV_IMAGE), | ||||
| 	SAVE_ITEM(EXYNOS4210_CLKSRC_LCD1), | ||||
| 	SAVE_ITEM(EXYNOS4210_CLKDIV_LCD1), | ||||
| 	SAVE_ITEM(EXYNOS4210_CLKSRC_MASK_LCD1), | ||||
| 	SAVE_ITEM(EXYNOS4210_CLKGATE_IP_IMAGE), | ||||
| 	SAVE_ITEM(EXYNOS4210_CLKGATE_IP_LCD1), | ||||
| 	SAVE_ITEM(EXYNOS4210_CLKGATE_IP_PERIR), | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
|  | @ -51,7 +49,7 @@ static struct clksrc_clk *sysclks[] = { | |||
| 
 | ||||
| static int exynos4_clksrc_mask_lcd1_ctrl(struct clk *clk, int enable) | ||||
| { | ||||
| 	return s5p_gatectrl(S5P_CLKSRC_MASK_LCD1, clk, enable); | ||||
| 	return s5p_gatectrl(EXYNOS4210_CLKSRC_MASK_LCD1, clk, enable); | ||||
| } | ||||
| 
 | ||||
| static struct clksrc_clk clksrcs[] = { | ||||
|  | @ -62,9 +60,9 @@ static struct clksrc_clk clksrcs[] = { | |||
| 			.enable		= exynos4_clksrc_mask_fsys_ctrl, | ||||
| 			.ctrlbit	= (1 << 24), | ||||
| 		}, | ||||
| 		.sources = &clkset_mout_corebus, | ||||
| 		.reg_src = { .reg = S5P_CLKSRC_FSYS, .shift = 24, .size = 1 }, | ||||
| 		.reg_div = { .reg = S5P_CLKDIV_FSYS0, .shift = 20, .size = 4 }, | ||||
| 		.sources = &exynos4_clkset_mout_corebus, | ||||
| 		.reg_src = { .reg = EXYNOS4_CLKSRC_FSYS, .shift = 24, .size = 1 }, | ||||
| 		.reg_div = { .reg = EXYNOS4_CLKDIV_FSYS0, .shift = 20, .size = 4 }, | ||||
| 	}, { | ||||
| 		.clk		= { | ||||
| 			.name		= "sclk_fimd", | ||||
|  | @ -72,9 +70,9 @@ static struct clksrc_clk clksrcs[] = { | |||
| 			.enable		= exynos4_clksrc_mask_lcd1_ctrl, | ||||
| 			.ctrlbit	= (1 << 0), | ||||
| 		}, | ||||
| 		.sources = &clkset_group, | ||||
| 		.reg_src = { .reg = S5P_CLKSRC_LCD1, .shift = 0, .size = 4 }, | ||||
| 		.reg_div = { .reg = S5P_CLKDIV_LCD1, .shift = 0, .size = 4 }, | ||||
| 		.sources = &exynos4_clkset_group, | ||||
| 		.reg_src = { .reg = EXYNOS4210_CLKSRC_LCD1, .shift = 0, .size = 4 }, | ||||
| 		.reg_div = { .reg = EXYNOS4210_CLKDIV_LCD1, .shift = 0, .size = 4 }, | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
|  | @ -82,13 +80,13 @@ static struct clk init_clocks_off[] = { | |||
| 	{ | ||||
| 		.name		= "sataphy", | ||||
| 		.id		= -1, | ||||
| 		.parent		= &clk_aclk_133.clk, | ||||
| 		.parent		= &exynos4_clk_aclk_133.clk, | ||||
| 		.enable		= exynos4_clk_ip_fsys_ctrl, | ||||
| 		.ctrlbit	= (1 << 3), | ||||
| 	}, { | ||||
| 		.name		= "sata", | ||||
| 		.id		= -1, | ||||
| 		.parent		= &clk_aclk_133.clk, | ||||
| 		.parent		= &exynos4_clk_aclk_133.clk, | ||||
| 		.enable		= exynos4_clk_ip_fsys_ctrl, | ||||
| 		.ctrlbit	= (1 << 10), | ||||
| 	}, { | ||||
|  | @ -117,7 +115,7 @@ static void exynos4210_clock_resume(void) | |||
| #define exynos4210_clock_resume NULL | ||||
| #endif | ||||
| 
 | ||||
| struct syscore_ops exynos4210_clock_syscore_ops = { | ||||
| static struct syscore_ops exynos4210_clock_syscore_ops = { | ||||
| 	.suspend	= exynos4210_clock_suspend, | ||||
| 	.resume		= exynos4210_clock_resume, | ||||
| }; | ||||
|  | @ -126,9 +124,9 @@ void __init exynos4210_register_clocks(void) | |||
| { | ||||
| 	int ptr; | ||||
| 
 | ||||
| 	clk_mout_mpll.reg_src.reg = S5P_CLKSRC_CPU; | ||||
| 	clk_mout_mpll.reg_src.shift = 8; | ||||
| 	clk_mout_mpll.reg_src.size = 1; | ||||
| 	exynos4_clk_mout_mpll.reg_src.reg = EXYNOS4_CLKSRC_CPU; | ||||
| 	exynos4_clk_mout_mpll.reg_src.shift = 8; | ||||
| 	exynos4_clk_mout_mpll.reg_src.size = 1; | ||||
| 
 | ||||
| 	for (ptr = 0; ptr < ARRAY_SIZE(sysclks); ptr++) | ||||
| 		s3c_register_clksrc(sysclks[ptr], 1); | ||||
|  |  | |||
|  | @ -1,7 +1,5 @@ | |||
| /*
 | ||||
|  * linux/arch/arm/mach-exynos4/clock-exynos4212.c | ||||
|  * | ||||
|  * Copyright (c) 2011 Samsung Electronics Co., Ltd. | ||||
|  * Copyright (c) 2011-2012 Samsung Electronics Co., Ltd. | ||||
|  *		http://www.samsung.com
 | ||||
|  * | ||||
|  * EXYNOS4212 - Clock support | ||||
|  | @ -28,22 +26,22 @@ | |||
| #include <mach/hardware.h> | ||||
| #include <mach/map.h> | ||||
| #include <mach/regs-clock.h> | ||||
| #include <mach/exynos4-clock.h> | ||||
| 
 | ||||
| #include "common.h" | ||||
| #include "clock-exynos4.h" | ||||
| 
 | ||||
| #ifdef CONFIG_PM_SLEEP | ||||
| static struct sleep_save exynos4212_clock_save[] = { | ||||
| 	SAVE_ITEM(S5P_CLKSRC_IMAGE), | ||||
| 	SAVE_ITEM(S5P_CLKDIV_IMAGE), | ||||
| 	SAVE_ITEM(S5P_CLKGATE_IP_IMAGE_4212), | ||||
| 	SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4212), | ||||
| 	SAVE_ITEM(EXYNOS4_CLKSRC_IMAGE), | ||||
| 	SAVE_ITEM(EXYNOS4_CLKDIV_IMAGE), | ||||
| 	SAVE_ITEM(EXYNOS4212_CLKGATE_IP_IMAGE), | ||||
| 	SAVE_ITEM(EXYNOS4212_CLKGATE_IP_PERIR), | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| static struct clk *clk_src_mpll_user_list[] = { | ||||
| 	[0] = &clk_fin_mpll, | ||||
| 	[1] = &clk_mout_mpll.clk, | ||||
| 	[1] = &exynos4_clk_mout_mpll.clk, | ||||
| }; | ||||
| 
 | ||||
| static struct clksrc_sources clk_src_mpll_user = { | ||||
|  | @ -56,7 +54,7 @@ static struct clksrc_clk clk_mout_mpll_user = { | |||
| 		.name		= "mout_mpll_user", | ||||
| 	}, | ||||
| 	.sources	= &clk_src_mpll_user, | ||||
| 	.reg_src	= { .reg = S5P_CLKSRC_CPU, .shift = 24, .size = 1 }, | ||||
| 	.reg_src	= { .reg = EXYNOS4_CLKSRC_CPU, .shift = 24, .size = 1 }, | ||||
| }; | ||||
| 
 | ||||
| static struct clksrc_clk *sysclks[] = { | ||||
|  | @ -89,7 +87,7 @@ static void exynos4212_clock_resume(void) | |||
| #define exynos4212_clock_resume NULL | ||||
| #endif | ||||
| 
 | ||||
| struct syscore_ops exynos4212_clock_syscore_ops = { | ||||
| static struct syscore_ops exynos4212_clock_syscore_ops = { | ||||
| 	.suspend	= exynos4212_clock_suspend, | ||||
| 	.resume		= exynos4212_clock_resume, | ||||
| }; | ||||
|  | @ -99,15 +97,15 @@ void __init exynos4212_register_clocks(void) | |||
| 	int ptr; | ||||
| 
 | ||||
| 	/* usbphy1 is removed */ | ||||
| 	clkset_group_list[4] = NULL; | ||||
| 	exynos4_clkset_group_list[4] = NULL; | ||||
| 
 | ||||
| 	/* mout_mpll_user is used */ | ||||
| 	clkset_group_list[6] = &clk_mout_mpll_user.clk; | ||||
| 	clkset_aclk_top_list[0] = &clk_mout_mpll_user.clk; | ||||
| 	exynos4_clkset_group_list[6] = &clk_mout_mpll_user.clk; | ||||
| 	exynos4_clkset_aclk_top_list[0] = &clk_mout_mpll_user.clk; | ||||
| 
 | ||||
| 	clk_mout_mpll.reg_src.reg = S5P_CLKSRC_DMC; | ||||
| 	clk_mout_mpll.reg_src.shift = 12; | ||||
| 	clk_mout_mpll.reg_src.size = 1; | ||||
| 	exynos4_clk_mout_mpll.reg_src.reg = EXYNOS4_CLKSRC_DMC; | ||||
| 	exynos4_clk_mout_mpll.reg_src.shift = 12; | ||||
| 	exynos4_clk_mout_mpll.reg_src.size = 1; | ||||
| 
 | ||||
| 	for (ptr = 0; ptr < ARRAY_SIZE(sysclks); ptr++) | ||||
| 		s3c_register_clksrc(sysclks[ptr], 1); | ||||
|  |  | |||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -661,7 +661,7 @@ static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc) | |||
| 	chained_irq_exit(chip, desc); | ||||
| } | ||||
| 
 | ||||
| int __init exynos4_init_irq_eint(void) | ||||
| static int __init exynos4_init_irq_eint(void) | ||||
| { | ||||
| 	int irq; | ||||
| 
 | ||||
|  |  | |||
|  | @ -15,12 +15,21 @@ | |||
| void exynos_init_io(struct map_desc *mach_desc, int size); | ||||
| void exynos4_init_irq(void); | ||||
| 
 | ||||
| #ifdef CONFIG_ARCH_EXYNOS4 | ||||
| void exynos4_register_clocks(void); | ||||
| void exynos4_setup_clocks(void); | ||||
| 
 | ||||
| void exynos4210_register_clocks(void); | ||||
| void exynos4212_register_clocks(void); | ||||
| 
 | ||||
| #else | ||||
| #define exynos4_register_clocks() | ||||
| #define exynos4_setup_clocks() | ||||
| 
 | ||||
| #define exynos4210_register_clocks() | ||||
| #define exynos4212_register_clocks() | ||||
| #endif | ||||
| 
 | ||||
| void exynos4_restart(char mode, const char *cmd); | ||||
| 
 | ||||
| extern struct sys_timer exynos4_timer; | ||||
|  |  | |||
|  | @ -36,7 +36,7 @@ | |||
| 
 | ||||
| static u64 dma_dmamask = DMA_BIT_MASK(32); | ||||
| 
 | ||||
| u8 pdma0_peri[] = { | ||||
| static u8 pdma0_peri[] = { | ||||
| 	DMACH_PCM0_RX, | ||||
| 	DMACH_PCM0_TX, | ||||
| 	DMACH_PCM2_RX, | ||||
|  | @ -69,15 +69,15 @@ u8 pdma0_peri[] = { | |||
| 	DMACH_AC97_PCMOUT, | ||||
| }; | ||||
| 
 | ||||
| struct dma_pl330_platdata exynos4_pdma0_pdata = { | ||||
| static struct dma_pl330_platdata exynos4_pdma0_pdata = { | ||||
| 	.nr_valid_peri = ARRAY_SIZE(pdma0_peri), | ||||
| 	.peri_id = pdma0_peri, | ||||
| }; | ||||
| 
 | ||||
| AMBA_AHB_DEVICE(exynos4_pdma0, "dma-pl330.0", 0x00041330, EXYNOS4_PA_PDMA0, | ||||
| 	{IRQ_PDMA0}, &exynos4_pdma0_pdata); | ||||
| static AMBA_AHB_DEVICE(exynos4_pdma0, "dma-pl330.0", 0x00041330, | ||||
| 	EXYNOS4_PA_PDMA0, {IRQ_PDMA0}, &exynos4_pdma0_pdata); | ||||
| 
 | ||||
| u8 pdma1_peri[] = { | ||||
| static u8 pdma1_peri[] = { | ||||
| 	DMACH_PCM0_RX, | ||||
| 	DMACH_PCM0_TX, | ||||
| 	DMACH_PCM1_RX, | ||||
|  | @ -105,13 +105,13 @@ u8 pdma1_peri[] = { | |||
| 	DMACH_SLIMBUS5_TX, | ||||
| }; | ||||
| 
 | ||||
| struct dma_pl330_platdata exynos4_pdma1_pdata = { | ||||
| static struct dma_pl330_platdata exynos4_pdma1_pdata = { | ||||
| 	.nr_valid_peri = ARRAY_SIZE(pdma1_peri), | ||||
| 	.peri_id = pdma1_peri, | ||||
| }; | ||||
| 
 | ||||
| AMBA_AHB_DEVICE(exynos4_pdma1,  "dma-pl330.1", 0x00041330, EXYNOS4_PA_PDMA1, | ||||
| 	{IRQ_PDMA1}, &exynos4_pdma1_pdata); | ||||
| static AMBA_AHB_DEVICE(exynos4_pdma1,  "dma-pl330.1", 0x00041330, | ||||
| 	EXYNOS4_PA_PDMA1, {IRQ_PDMA1}, &exynos4_pdma1_pdata); | ||||
| 
 | ||||
| static int __init exynos4_dma_init(void) | ||||
| { | ||||
|  |  | |||
|  | @ -1,43 +0,0 @@ | |||
| /*
 | ||||
|  * linux/arch/arm/mach-exynos4/include/mach/exynos4-clock.h | ||||
|  * | ||||
|  * Copyright (c) 2011 Samsung Electronics Co., Ltd. | ||||
|  *		http://www.samsung.com
 | ||||
|  * | ||||
|  * Header file for exynos4 clock support | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License version 2 as | ||||
|  * published by the Free Software Foundation. | ||||
| */ | ||||
| 
 | ||||
| #ifndef __ASM_ARCH_CLOCK_H | ||||
| #define __ASM_ARCH_CLOCK_H __FILE__ | ||||
| 
 | ||||
| #include <linux/clk.h> | ||||
| 
 | ||||
| extern struct clk clk_sclk_hdmi27m; | ||||
| extern struct clk clk_sclk_usbphy0; | ||||
| extern struct clk clk_sclk_usbphy1; | ||||
| extern struct clk clk_sclk_hdmiphy; | ||||
| 
 | ||||
| extern struct clksrc_clk clk_sclk_apll; | ||||
| extern struct clksrc_clk clk_mout_mpll; | ||||
| extern struct clksrc_clk clk_aclk_133; | ||||
| extern struct clksrc_clk clk_mout_epll; | ||||
| extern struct clksrc_clk clk_sclk_vpll; | ||||
| 
 | ||||
| extern struct clk *clkset_corebus_list[]; | ||||
| extern struct clksrc_sources clkset_mout_corebus; | ||||
| 
 | ||||
| extern struct clk *clkset_aclk_top_list[]; | ||||
| extern struct clksrc_sources clkset_aclk; | ||||
| 
 | ||||
| extern struct clk *clkset_group_list[]; | ||||
| extern struct clksrc_sources clkset_group; | ||||
| 
 | ||||
| extern int exynos4_clksrc_mask_fsys_ctrl(struct clk *clk, int enable); | ||||
| extern int exynos4_clk_ip_fsys_ctrl(struct clk *clk, int enable); | ||||
| extern int exynos4_clk_ip_lcd1_ctrl(struct clk *clk, int enable); | ||||
| 
 | ||||
| #endif /* __ASM_ARCH_CLOCK_H */ | ||||
|  | @ -16,195 +16,247 @@ | |||
| #include <plat/cpu.h> | ||||
| #include <mach/map.h> | ||||
| 
 | ||||
| #define S5P_CLKREG(x)			(S5P_VA_CMU + (x)) | ||||
| #define EXYNOS_CLKREG(x)			(S5P_VA_CMU + (x)) | ||||
| 
 | ||||
| #define S5P_CLKDIV_LEFTBUS		S5P_CLKREG(0x04500) | ||||
| #define S5P_CLKDIV_STAT_LEFTBUS		S5P_CLKREG(0x04600) | ||||
| #define S5P_CLKGATE_IP_LEFTBUS		S5P_CLKREG(0x04800) | ||||
| #define EXYNOS4_CLKDIV_LEFTBUS			EXYNOS_CLKREG(0x04500) | ||||
| #define EXYNOS4_CLKDIV_STAT_LEFTBUS		EXYNOS_CLKREG(0x04600) | ||||
| #define EXYNOS4_CLKGATE_IP_LEFTBUS		EXYNOS_CLKREG(0x04800) | ||||
| 
 | ||||
| #define S5P_CLKDIV_RIGHTBUS		S5P_CLKREG(0x08500) | ||||
| #define S5P_CLKDIV_STAT_RIGHTBUS	S5P_CLKREG(0x08600) | ||||
| #define S5P_CLKGATE_IP_RIGHTBUS		S5P_CLKREG(0x08800) | ||||
| #define EXYNOS4_CLKDIV_RIGHTBUS			EXYNOS_CLKREG(0x08500) | ||||
| #define EXYNOS4_CLKDIV_STAT_RIGHTBUS		EXYNOS_CLKREG(0x08600) | ||||
| #define EXYNOS4_CLKGATE_IP_RIGHTBUS		EXYNOS_CLKREG(0x08800) | ||||
| 
 | ||||
| #define S5P_EPLL_LOCK			S5P_CLKREG(0x0C010) | ||||
| #define S5P_VPLL_LOCK			S5P_CLKREG(0x0C020) | ||||
| #define EXYNOS4_EPLL_LOCK			EXYNOS_CLKREG(0x0C010) | ||||
| #define EXYNOS4_VPLL_LOCK			EXYNOS_CLKREG(0x0C020) | ||||
| 
 | ||||
| #define S5P_EPLL_CON0			S5P_CLKREG(0x0C110) | ||||
| #define S5P_EPLL_CON1			S5P_CLKREG(0x0C114) | ||||
| #define S5P_VPLL_CON0			S5P_CLKREG(0x0C120) | ||||
| #define S5P_VPLL_CON1			S5P_CLKREG(0x0C124) | ||||
| #define EXYNOS4_EPLL_CON0			EXYNOS_CLKREG(0x0C110) | ||||
| #define EXYNOS4_EPLL_CON1			EXYNOS_CLKREG(0x0C114) | ||||
| #define EXYNOS4_VPLL_CON0			EXYNOS_CLKREG(0x0C120) | ||||
| #define EXYNOS4_VPLL_CON1			EXYNOS_CLKREG(0x0C124) | ||||
| 
 | ||||
| #define S5P_CLKSRC_TOP0			S5P_CLKREG(0x0C210) | ||||
| #define S5P_CLKSRC_TOP1			S5P_CLKREG(0x0C214) | ||||
| #define S5P_CLKSRC_CAM			S5P_CLKREG(0x0C220) | ||||
| #define S5P_CLKSRC_TV			S5P_CLKREG(0x0C224) | ||||
| #define S5P_CLKSRC_MFC			S5P_CLKREG(0x0C228) | ||||
| #define S5P_CLKSRC_G3D			S5P_CLKREG(0x0C22C) | ||||
| #define S5P_CLKSRC_IMAGE		S5P_CLKREG(0x0C230) | ||||
| #define S5P_CLKSRC_LCD0			S5P_CLKREG(0x0C234) | ||||
| #define S5P_CLKSRC_MAUDIO		S5P_CLKREG(0x0C23C) | ||||
| #define S5P_CLKSRC_FSYS			S5P_CLKREG(0x0C240) | ||||
| #define S5P_CLKSRC_PERIL0		S5P_CLKREG(0x0C250) | ||||
| #define S5P_CLKSRC_PERIL1		S5P_CLKREG(0x0C254) | ||||
| #define EXYNOS4_CLKSRC_TOP0			EXYNOS_CLKREG(0x0C210) | ||||
| #define EXYNOS4_CLKSRC_TOP1			EXYNOS_CLKREG(0x0C214) | ||||
| #define EXYNOS4_CLKSRC_CAM			EXYNOS_CLKREG(0x0C220) | ||||
| #define EXYNOS4_CLKSRC_TV			EXYNOS_CLKREG(0x0C224) | ||||
| #define EXYNOS4_CLKSRC_MFC			EXYNOS_CLKREG(0x0C228) | ||||
| #define EXYNOS4_CLKSRC_G3D			EXYNOS_CLKREG(0x0C22C) | ||||
| #define EXYNOS4_CLKSRC_IMAGE			EXYNOS_CLKREG(0x0C230) | ||||
| #define EXYNOS4_CLKSRC_LCD0			EXYNOS_CLKREG(0x0C234) | ||||
| #define EXYNOS4_CLKSRC_MAUDIO			EXYNOS_CLKREG(0x0C23C) | ||||
| #define EXYNOS4_CLKSRC_FSYS			EXYNOS_CLKREG(0x0C240) | ||||
| #define EXYNOS4_CLKSRC_PERIL0			EXYNOS_CLKREG(0x0C250) | ||||
| #define EXYNOS4_CLKSRC_PERIL1			EXYNOS_CLKREG(0x0C254) | ||||
| 
 | ||||
| #define S5P_CLKSRC_MASK_TOP		S5P_CLKREG(0x0C310) | ||||
| #define S5P_CLKSRC_MASK_CAM		S5P_CLKREG(0x0C320) | ||||
| #define S5P_CLKSRC_MASK_TV		S5P_CLKREG(0x0C324) | ||||
| #define S5P_CLKSRC_MASK_LCD0		S5P_CLKREG(0x0C334) | ||||
| #define S5P_CLKSRC_MASK_MAUDIO		S5P_CLKREG(0x0C33C) | ||||
| #define S5P_CLKSRC_MASK_FSYS		S5P_CLKREG(0x0C340) | ||||
| #define S5P_CLKSRC_MASK_PERIL0		S5P_CLKREG(0x0C350) | ||||
| #define S5P_CLKSRC_MASK_PERIL1		S5P_CLKREG(0x0C354) | ||||
| #define EXYNOS4_CLKSRC_MASK_TOP			EXYNOS_CLKREG(0x0C310) | ||||
| #define EXYNOS4_CLKSRC_MASK_CAM			EXYNOS_CLKREG(0x0C320) | ||||
| #define EXYNOS4_CLKSRC_MASK_TV			EXYNOS_CLKREG(0x0C324) | ||||
| #define EXYNOS4_CLKSRC_MASK_LCD0		EXYNOS_CLKREG(0x0C334) | ||||
| #define EXYNOS4_CLKSRC_MASK_MAUDIO		EXYNOS_CLKREG(0x0C33C) | ||||
| #define EXYNOS4_CLKSRC_MASK_FSYS		EXYNOS_CLKREG(0x0C340) | ||||
| #define EXYNOS4_CLKSRC_MASK_PERIL0		EXYNOS_CLKREG(0x0C350) | ||||
| #define EXYNOS4_CLKSRC_MASK_PERIL1		EXYNOS_CLKREG(0x0C354) | ||||
| 
 | ||||
| #define S5P_CLKDIV_TOP			S5P_CLKREG(0x0C510) | ||||
| #define S5P_CLKDIV_CAM			S5P_CLKREG(0x0C520) | ||||
| #define S5P_CLKDIV_TV			S5P_CLKREG(0x0C524) | ||||
| #define S5P_CLKDIV_MFC			S5P_CLKREG(0x0C528) | ||||
| #define S5P_CLKDIV_G3D			S5P_CLKREG(0x0C52C) | ||||
| #define S5P_CLKDIV_IMAGE		S5P_CLKREG(0x0C530) | ||||
| #define S5P_CLKDIV_LCD0			S5P_CLKREG(0x0C534) | ||||
| #define S5P_CLKDIV_MAUDIO		S5P_CLKREG(0x0C53C) | ||||
| #define S5P_CLKDIV_FSYS0		S5P_CLKREG(0x0C540) | ||||
| #define S5P_CLKDIV_FSYS1		S5P_CLKREG(0x0C544) | ||||
| #define S5P_CLKDIV_FSYS2		S5P_CLKREG(0x0C548) | ||||
| #define S5P_CLKDIV_FSYS3		S5P_CLKREG(0x0C54C) | ||||
| #define S5P_CLKDIV_PERIL0		S5P_CLKREG(0x0C550) | ||||
| #define S5P_CLKDIV_PERIL1		S5P_CLKREG(0x0C554) | ||||
| #define S5P_CLKDIV_PERIL2		S5P_CLKREG(0x0C558) | ||||
| #define S5P_CLKDIV_PERIL3		S5P_CLKREG(0x0C55C) | ||||
| #define S5P_CLKDIV_PERIL4		S5P_CLKREG(0x0C560) | ||||
| #define S5P_CLKDIV_PERIL5		S5P_CLKREG(0x0C564) | ||||
| #define S5P_CLKDIV2_RATIO		S5P_CLKREG(0x0C580) | ||||
| #define EXYNOS4_CLKDIV_TOP			EXYNOS_CLKREG(0x0C510) | ||||
| #define EXYNOS4_CLKDIV_CAM			EXYNOS_CLKREG(0x0C520) | ||||
| #define EXYNOS4_CLKDIV_TV			EXYNOS_CLKREG(0x0C524) | ||||
| #define EXYNOS4_CLKDIV_MFC			EXYNOS_CLKREG(0x0C528) | ||||
| #define EXYNOS4_CLKDIV_G3D			EXYNOS_CLKREG(0x0C52C) | ||||
| #define EXYNOS4_CLKDIV_IMAGE			EXYNOS_CLKREG(0x0C530) | ||||
| #define EXYNOS4_CLKDIV_LCD0			EXYNOS_CLKREG(0x0C534) | ||||
| #define EXYNOS4_CLKDIV_MAUDIO			EXYNOS_CLKREG(0x0C53C) | ||||
| #define EXYNOS4_CLKDIV_FSYS0			EXYNOS_CLKREG(0x0C540) | ||||
| #define EXYNOS4_CLKDIV_FSYS1			EXYNOS_CLKREG(0x0C544) | ||||
| #define EXYNOS4_CLKDIV_FSYS2			EXYNOS_CLKREG(0x0C548) | ||||
| #define EXYNOS4_CLKDIV_FSYS3			EXYNOS_CLKREG(0x0C54C) | ||||
| #define EXYNOS4_CLKDIV_PERIL0			EXYNOS_CLKREG(0x0C550) | ||||
| #define EXYNOS4_CLKDIV_PERIL1			EXYNOS_CLKREG(0x0C554) | ||||
| #define EXYNOS4_CLKDIV_PERIL2			EXYNOS_CLKREG(0x0C558) | ||||
| #define EXYNOS4_CLKDIV_PERIL3			EXYNOS_CLKREG(0x0C55C) | ||||
| #define EXYNOS4_CLKDIV_PERIL4			EXYNOS_CLKREG(0x0C560) | ||||
| #define EXYNOS4_CLKDIV_PERIL5			EXYNOS_CLKREG(0x0C564) | ||||
| #define EXYNOS4_CLKDIV2_RATIO			EXYNOS_CLKREG(0x0C580) | ||||
| 
 | ||||
| #define S5P_CLKDIV_STAT_TOP		S5P_CLKREG(0x0C610) | ||||
| #define EXYNOS4_CLKDIV_STAT_TOP			EXYNOS_CLKREG(0x0C610) | ||||
| #define EXYNOS4_CLKDIV_STAT_MFC			EXYNOS_CLKREG(0x0C628) | ||||
| 
 | ||||
| #define S5P_CLKGATE_SCLKCAM		S5P_CLKREG(0x0C820) | ||||
| #define S5P_CLKGATE_IP_CAM		S5P_CLKREG(0x0C920) | ||||
| #define S5P_CLKGATE_IP_TV		S5P_CLKREG(0x0C924) | ||||
| #define S5P_CLKGATE_IP_MFC		S5P_CLKREG(0x0C928) | ||||
| #define S5P_CLKGATE_IP_G3D		S5P_CLKREG(0x0C92C) | ||||
| #define S5P_CLKGATE_IP_IMAGE		(soc_is_exynos4210() ? \ | ||||
| 					S5P_CLKREG(0x0C930) : \ | ||||
| 					S5P_CLKREG(0x04930)) | ||||
| #define S5P_CLKGATE_IP_IMAGE_4210	S5P_CLKREG(0x0C930) | ||||
| #define S5P_CLKGATE_IP_IMAGE_4212	S5P_CLKREG(0x04930) | ||||
| #define S5P_CLKGATE_IP_LCD0		S5P_CLKREG(0x0C934) | ||||
| #define S5P_CLKGATE_IP_FSYS		S5P_CLKREG(0x0C940) | ||||
| #define S5P_CLKGATE_IP_GPS		S5P_CLKREG(0x0C94C) | ||||
| #define S5P_CLKGATE_IP_PERIL		S5P_CLKREG(0x0C950) | ||||
| #define S5P_CLKGATE_IP_PERIR		(soc_is_exynos4210() ? \ | ||||
| 					S5P_CLKREG(0x0C960) : \ | ||||
| 					S5P_CLKREG(0x08960)) | ||||
| #define S5P_CLKGATE_IP_PERIR_4210	S5P_CLKREG(0x0C960) | ||||
| #define S5P_CLKGATE_IP_PERIR_4212	S5P_CLKREG(0x08960) | ||||
| #define S5P_CLKGATE_BLOCK		S5P_CLKREG(0x0C970) | ||||
| #define EXYNOS4_CLKGATE_SCLKCAM			EXYNOS_CLKREG(0x0C820) | ||||
| #define EXYNOS4_CLKGATE_IP_CAM			EXYNOS_CLKREG(0x0C920) | ||||
| #define EXYNOS4_CLKGATE_IP_TV			EXYNOS_CLKREG(0x0C924) | ||||
| #define EXYNOS4_CLKGATE_IP_MFC			EXYNOS_CLKREG(0x0C928) | ||||
| #define EXYNOS4_CLKGATE_IP_G3D			EXYNOS_CLKREG(0x0C92C) | ||||
| #define EXYNOS4_CLKGATE_IP_IMAGE		(soc_is_exynos4210() ? \ | ||||
| 						EXYNOS_CLKREG(0x0C930) : \ | ||||
| 						EXYNOS_CLKREG(0x04930)) | ||||
| #define EXYNOS4210_CLKGATE_IP_IMAGE		EXYNOS_CLKREG(0x0C930) | ||||
| #define EXYNOS4212_CLKGATE_IP_IMAGE		EXYNOS_CLKREG(0x04930) | ||||
| #define EXYNOS4_CLKGATE_IP_LCD0			EXYNOS_CLKREG(0x0C934) | ||||
| #define EXYNOS4_CLKGATE_IP_FSYS			EXYNOS_CLKREG(0x0C940) | ||||
| #define EXYNOS4_CLKGATE_IP_GPS			EXYNOS_CLKREG(0x0C94C) | ||||
| #define EXYNOS4_CLKGATE_IP_PERIL		EXYNOS_CLKREG(0x0C950) | ||||
| #define EXYNOS4_CLKGATE_IP_PERIR		(soc_is_exynos4210() ? \ | ||||
| 						EXYNOS_CLKREG(0x0C960) : \ | ||||
| 						EXYNOS_CLKREG(0x08960)) | ||||
| #define EXYNOS4210_CLKGATE_IP_PERIR		EXYNOS_CLKREG(0x0C960) | ||||
| #define EXYNOS4212_CLKGATE_IP_PERIR		EXYNOS_CLKREG(0x08960) | ||||
| #define EXYNOS4_CLKGATE_BLOCK			EXYNOS_CLKREG(0x0C970) | ||||
| 
 | ||||
| #define S5P_CLKSRC_MASK_DMC		S5P_CLKREG(0x10300) | ||||
| #define S5P_CLKSRC_DMC			S5P_CLKREG(0x10200) | ||||
| #define S5P_CLKDIV_DMC0			S5P_CLKREG(0x10500) | ||||
| #define S5P_CLKDIV_DMC1			S5P_CLKREG(0x10504) | ||||
| #define S5P_CLKDIV_STAT_DMC0		S5P_CLKREG(0x10600) | ||||
| #define S5P_CLKGATE_IP_DMC		S5P_CLKREG(0x10900) | ||||
| #define EXYNOS4_CLKSRC_MASK_DMC			EXYNOS_CLKREG(0x10300) | ||||
| #define EXYNOS4_CLKSRC_DMC			EXYNOS_CLKREG(0x10200) | ||||
| #define EXYNOS4_CLKDIV_DMC0			EXYNOS_CLKREG(0x10500) | ||||
| #define EXYNOS4_CLKDIV_DMC1			EXYNOS_CLKREG(0x10504) | ||||
| #define EXYNOS4_CLKDIV_STAT_DMC0		EXYNOS_CLKREG(0x10600) | ||||
| #define EXYNOS4_CLKDIV_STAT_DMC1		EXYNOS_CLKREG(0x10604) | ||||
| #define EXYNOS4_CLKGATE_IP_DMC			EXYNOS_CLKREG(0x10900) | ||||
| 
 | ||||
| #define S5P_APLL_LOCK			S5P_CLKREG(0x14000) | ||||
| #define S5P_MPLL_LOCK			(soc_is_exynos4210() ? \ | ||||
| 					S5P_CLKREG(0x14004) :  \ | ||||
| 					S5P_CLKREG(0x10008)) | ||||
| #define S5P_APLL_CON0			S5P_CLKREG(0x14100) | ||||
| #define S5P_APLL_CON1			S5P_CLKREG(0x14104) | ||||
| #define S5P_MPLL_CON0			(soc_is_exynos4210() ? \ | ||||
| 					S5P_CLKREG(0x14108) : \ | ||||
| 					S5P_CLKREG(0x10108)) | ||||
| #define S5P_MPLL_CON1			(soc_is_exynos4210() ? \ | ||||
| 					S5P_CLKREG(0x1410C) : \ | ||||
| 					S5P_CLKREG(0x1010C)) | ||||
| #define EXYNOS4_DMC_PAUSE_CTRL			EXYNOS_CLKREG(0x11094) | ||||
| #define EXYNOS4_DMC_PAUSE_ENABLE		(1 << 0) | ||||
| 
 | ||||
| #define S5P_CLKSRC_CPU			S5P_CLKREG(0x14200) | ||||
| #define S5P_CLKMUX_STATCPU		S5P_CLKREG(0x14400) | ||||
| #define EXYNOS4_APLL_LOCK			EXYNOS_CLKREG(0x14000) | ||||
| #define EXYNOS4_MPLL_LOCK			(soc_is_exynos4210() ? \ | ||||
| 						EXYNOS_CLKREG(0x14004) :  \ | ||||
| 						EXYNOS_CLKREG(0x10008)) | ||||
| #define EXYNOS4_APLL_CON0			EXYNOS_CLKREG(0x14100) | ||||
| #define EXYNOS4_APLL_CON1			EXYNOS_CLKREG(0x14104) | ||||
| #define EXYNOS4_MPLL_CON0			(soc_is_exynos4210() ? \ | ||||
| 						EXYNOS_CLKREG(0x14108) : \ | ||||
| 						EXYNOS_CLKREG(0x10108)) | ||||
| #define EXYNOS4_MPLL_CON1			(soc_is_exynos4210() ? \ | ||||
| 						EXYNOS_CLKREG(0x1410C) : \ | ||||
| 						EXYNOS_CLKREG(0x1010C)) | ||||
| 
 | ||||
| #define S5P_CLKDIV_CPU			S5P_CLKREG(0x14500) | ||||
| #define S5P_CLKDIV_CPU1			S5P_CLKREG(0x14504) | ||||
| #define S5P_CLKDIV_STATCPU		S5P_CLKREG(0x14600) | ||||
| #define S5P_CLKDIV_STATCPU1		S5P_CLKREG(0x14604) | ||||
| #define EXYNOS4_CLKSRC_CPU			EXYNOS_CLKREG(0x14200) | ||||
| #define EXYNOS4_CLKMUX_STATCPU			EXYNOS_CLKREG(0x14400) | ||||
| 
 | ||||
| #define S5P_CLKGATE_SCLKCPU		S5P_CLKREG(0x14800) | ||||
| #define S5P_CLKGATE_IP_CPU		S5P_CLKREG(0x14900) | ||||
| #define EXYNOS4_CLKDIV_CPU			EXYNOS_CLKREG(0x14500) | ||||
| #define EXYNOS4_CLKDIV_CPU1			EXYNOS_CLKREG(0x14504) | ||||
| #define EXYNOS4_CLKDIV_STATCPU			EXYNOS_CLKREG(0x14600) | ||||
| #define EXYNOS4_CLKDIV_STATCPU1			EXYNOS_CLKREG(0x14604) | ||||
| 
 | ||||
| #define S5P_APLL_LOCKTIME		(0x1C20)	/* 300us */ | ||||
| #define EXYNOS4_CLKGATE_SCLKCPU			EXYNOS_CLKREG(0x14800) | ||||
| #define EXYNOS4_CLKGATE_IP_CPU			EXYNOS_CLKREG(0x14900) | ||||
| 
 | ||||
| #define S5P_APLLCON0_ENABLE_SHIFT	(31) | ||||
| #define S5P_APLLCON0_LOCKED_SHIFT	(29) | ||||
| #define S5P_APLL_VAL_1000		((250 << 16) | (6 << 8) | 1) | ||||
| #define S5P_APLL_VAL_800		((200 << 16) | (6 << 8) | 1) | ||||
| #define EXYNOS4_APLL_LOCKTIME			(0x1C20)	/* 300us */ | ||||
| 
 | ||||
| #define S5P_EPLLCON0_ENABLE_SHIFT	(31) | ||||
| #define S5P_EPLLCON0_LOCKED_SHIFT	(29) | ||||
| #define EXYNOS4_APLLCON0_ENABLE_SHIFT		(31) | ||||
| #define EXYNOS4_APLLCON0_LOCKED_SHIFT		(29) | ||||
| #define EXYNOS4_APLL_VAL_1000			((250 << 16) | (6 << 8) | 1) | ||||
| #define EXYNOS4_APLL_VAL_800			((200 << 16) | (6 << 8) | 1) | ||||
| 
 | ||||
| #define S5P_VPLLCON0_ENABLE_SHIFT	(31) | ||||
| #define S5P_VPLLCON0_LOCKED_SHIFT	(29) | ||||
| #define EXYNOS4_EPLLCON0_ENABLE_SHIFT		(31) | ||||
| #define EXYNOS4_EPLLCON0_LOCKED_SHIFT		(29) | ||||
| 
 | ||||
| #define S5P_CLKSRC_CPU_MUXCORE_SHIFT	(16) | ||||
| #define S5P_CLKMUX_STATCPU_MUXCORE_MASK	(0x7 << S5P_CLKSRC_CPU_MUXCORE_SHIFT) | ||||
| #define EXYNOS4_VPLLCON0_ENABLE_SHIFT		(31) | ||||
| #define EXYNOS4_VPLLCON0_LOCKED_SHIFT		(29) | ||||
| 
 | ||||
| #define S5P_CLKDIV_CPU0_CORE_SHIFT	(0) | ||||
| #define S5P_CLKDIV_CPU0_CORE_MASK	(0x7 << S5P_CLKDIV_CPU0_CORE_SHIFT) | ||||
| #define S5P_CLKDIV_CPU0_COREM0_SHIFT	(4) | ||||
| #define S5P_CLKDIV_CPU0_COREM0_MASK	(0x7 << S5P_CLKDIV_CPU0_COREM0_SHIFT) | ||||
| #define S5P_CLKDIV_CPU0_COREM1_SHIFT	(8) | ||||
| #define S5P_CLKDIV_CPU0_COREM1_MASK	(0x7 << S5P_CLKDIV_CPU0_COREM1_SHIFT) | ||||
| #define S5P_CLKDIV_CPU0_PERIPH_SHIFT	(12) | ||||
| #define S5P_CLKDIV_CPU0_PERIPH_MASK	(0x7 << S5P_CLKDIV_CPU0_PERIPH_SHIFT) | ||||
| #define S5P_CLKDIV_CPU0_ATB_SHIFT	(16) | ||||
| #define S5P_CLKDIV_CPU0_ATB_MASK	(0x7 << S5P_CLKDIV_CPU0_ATB_SHIFT) | ||||
| #define S5P_CLKDIV_CPU0_PCLKDBG_SHIFT	(20) | ||||
| #define S5P_CLKDIV_CPU0_PCLKDBG_MASK	(0x7 << S5P_CLKDIV_CPU0_PCLKDBG_SHIFT) | ||||
| #define S5P_CLKDIV_CPU0_APLL_SHIFT	(24) | ||||
| #define S5P_CLKDIV_CPU0_APLL_MASK	(0x7 << S5P_CLKDIV_CPU0_APLL_SHIFT) | ||||
| #define EXYNOS4_CLKSRC_CPU_MUXCORE_SHIFT	(16) | ||||
| #define EXYNOS4_CLKMUX_STATCPU_MUXCORE_MASK	(0x7 << EXYNOS4_CLKSRC_CPU_MUXCORE_SHIFT) | ||||
| 
 | ||||
| #define S5P_CLKDIV_DMC0_ACP_SHIFT	(0) | ||||
| #define S5P_CLKDIV_DMC0_ACP_MASK	(0x7 << S5P_CLKDIV_DMC0_ACP_SHIFT) | ||||
| #define S5P_CLKDIV_DMC0_ACPPCLK_SHIFT	(4) | ||||
| #define S5P_CLKDIV_DMC0_ACPPCLK_MASK	(0x7 << S5P_CLKDIV_DMC0_ACPPCLK_SHIFT) | ||||
| #define S5P_CLKDIV_DMC0_DPHY_SHIFT	(8) | ||||
| #define S5P_CLKDIV_DMC0_DPHY_MASK	(0x7 << S5P_CLKDIV_DMC0_DPHY_SHIFT) | ||||
| #define S5P_CLKDIV_DMC0_DMC_SHIFT	(12) | ||||
| #define S5P_CLKDIV_DMC0_DMC_MASK	(0x7 << S5P_CLKDIV_DMC0_DMC_SHIFT) | ||||
| #define S5P_CLKDIV_DMC0_DMCD_SHIFT	(16) | ||||
| #define S5P_CLKDIV_DMC0_DMCD_MASK	(0x7 << S5P_CLKDIV_DMC0_DMCD_SHIFT) | ||||
| #define S5P_CLKDIV_DMC0_DMCP_SHIFT	(20) | ||||
| #define S5P_CLKDIV_DMC0_DMCP_MASK	(0x7 << S5P_CLKDIV_DMC0_DMCP_SHIFT) | ||||
| #define S5P_CLKDIV_DMC0_COPY2_SHIFT	(24) | ||||
| #define S5P_CLKDIV_DMC0_COPY2_MASK	(0x7 << S5P_CLKDIV_DMC0_COPY2_SHIFT) | ||||
| #define S5P_CLKDIV_DMC0_CORETI_SHIFT	(28) | ||||
| #define S5P_CLKDIV_DMC0_CORETI_MASK	(0x7 << S5P_CLKDIV_DMC0_CORETI_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CPU0_CORE_SHIFT		(0) | ||||
| #define EXYNOS4_CLKDIV_CPU0_CORE_MASK		(0x7 << EXYNOS4_CLKDIV_CPU0_CORE_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CPU0_COREM0_SHIFT	(4) | ||||
| #define EXYNOS4_CLKDIV_CPU0_COREM0_MASK		(0x7 << EXYNOS4_CLKDIV_CPU0_COREM0_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CPU0_COREM1_SHIFT	(8) | ||||
| #define EXYNOS4_CLKDIV_CPU0_COREM1_MASK		(0x7 << EXYNOS4_CLKDIV_CPU0_COREM1_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CPU0_PERIPH_SHIFT	(12) | ||||
| #define EXYNOS4_CLKDIV_CPU0_PERIPH_MASK		(0x7 << EXYNOS4_CLKDIV_CPU0_PERIPH_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CPU0_ATB_SHIFT		(16) | ||||
| #define EXYNOS4_CLKDIV_CPU0_ATB_MASK		(0x7 << EXYNOS4_CLKDIV_CPU0_ATB_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CPU0_PCLKDBG_SHIFT	(20) | ||||
| #define EXYNOS4_CLKDIV_CPU0_PCLKDBG_MASK	(0x7 << EXYNOS4_CLKDIV_CPU0_PCLKDBG_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CPU0_APLL_SHIFT		(24) | ||||
| #define EXYNOS4_CLKDIV_CPU0_APLL_MASK		(0x7 << EXYNOS4_CLKDIV_CPU0_APLL_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CPU0_CORE2_SHIFT		28 | ||||
| #define EXYNOS4_CLKDIV_CPU0_CORE2_MASK		(0x7 << EXYNOS4_CLKDIV_CPU0_CORE2_SHIFT) | ||||
| 
 | ||||
| #define S5P_CLKDIV_TOP_ACLK200_SHIFT	(0) | ||||
| #define S5P_CLKDIV_TOP_ACLK200_MASK	(0x7 << S5P_CLKDIV_TOP_ACLK200_SHIFT) | ||||
| #define S5P_CLKDIV_TOP_ACLK100_SHIFT	(4) | ||||
| #define S5P_CLKDIV_TOP_ACLK100_MASK	(0xf << S5P_CLKDIV_TOP_ACLK100_SHIFT) | ||||
| #define S5P_CLKDIV_TOP_ACLK160_SHIFT	(8) | ||||
| #define S5P_CLKDIV_TOP_ACLK160_MASK	(0x7 << S5P_CLKDIV_TOP_ACLK160_SHIFT) | ||||
| #define S5P_CLKDIV_TOP_ACLK133_SHIFT	(12) | ||||
| #define S5P_CLKDIV_TOP_ACLK133_MASK	(0x7 << S5P_CLKDIV_TOP_ACLK133_SHIFT) | ||||
| #define S5P_CLKDIV_TOP_ONENAND_SHIFT	(16) | ||||
| #define S5P_CLKDIV_TOP_ONENAND_MASK	(0x7 << S5P_CLKDIV_TOP_ONENAND_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CPU1_COPY_SHIFT		0 | ||||
| #define EXYNOS4_CLKDIV_CPU1_COPY_MASK		(0x7 << EXYNOS4_CLKDIV_CPU1_COPY_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CPU1_HPM_SHIFT		4 | ||||
| #define EXYNOS4_CLKDIV_CPU1_HPM_MASK		(0x7 << EXYNOS4_CLKDIV_CPU1_HPM_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CPU1_CORES_SHIFT		8 | ||||
| #define EXYNOS4_CLKDIV_CPU1_CORES_MASK		(0x7 << EXYNOS4_CLKDIV_CPU1_CORES_SHIFT) | ||||
| 
 | ||||
| #define S5P_CLKDIV_BUS_GDLR_SHIFT	(0) | ||||
| #define S5P_CLKDIV_BUS_GDLR_MASK	(0x7 << S5P_CLKDIV_BUS_GDLR_SHIFT) | ||||
| #define S5P_CLKDIV_BUS_GPLR_SHIFT	(4) | ||||
| #define S5P_CLKDIV_BUS_GPLR_MASK	(0x7 << S5P_CLKDIV_BUS_GPLR_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC0_ACP_SHIFT		(0) | ||||
| #define EXYNOS4_CLKDIV_DMC0_ACP_MASK		(0x7 << EXYNOS4_CLKDIV_DMC0_ACP_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC0_ACPPCLK_SHIFT	(4) | ||||
| #define EXYNOS4_CLKDIV_DMC0_ACPPCLK_MASK	(0x7 << EXYNOS4_CLKDIV_DMC0_ACPPCLK_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC0_DPHY_SHIFT		(8) | ||||
| #define EXYNOS4_CLKDIV_DMC0_DPHY_MASK		(0x7 << EXYNOS4_CLKDIV_DMC0_DPHY_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC0_DMC_SHIFT		(12) | ||||
| #define EXYNOS4_CLKDIV_DMC0_DMC_MASK		(0x7 << EXYNOS4_CLKDIV_DMC0_DMC_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC0_DMCD_SHIFT		(16) | ||||
| #define EXYNOS4_CLKDIV_DMC0_DMCD_MASK		(0x7 << EXYNOS4_CLKDIV_DMC0_DMCD_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC0_DMCP_SHIFT		(20) | ||||
| #define EXYNOS4_CLKDIV_DMC0_DMCP_MASK		(0x7 << EXYNOS4_CLKDIV_DMC0_DMCP_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC0_COPY2_SHIFT		(24) | ||||
| #define EXYNOS4_CLKDIV_DMC0_COPY2_MASK		(0x7 << EXYNOS4_CLKDIV_DMC0_COPY2_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC0_CORETI_SHIFT	(28) | ||||
| #define EXYNOS4_CLKDIV_DMC0_CORETI_MASK		(0x7 << EXYNOS4_CLKDIV_DMC0_CORETI_SHIFT) | ||||
| 
 | ||||
| #define EXYNOS4_CLKDIV_DMC1_G2D_ACP_SHIFT	(0) | ||||
| #define EXYNOS4_CLKDIV_DMC1_G2D_ACP_MASK	(0xf << EXYNOS4_CLKDIV_DMC1_G2D_ACP_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC1_C2C_SHIFT		(4) | ||||
| #define EXYNOS4_CLKDIV_DMC1_C2C_MASK		(0x7 << EXYNOS4_CLKDIV_DMC1_C2C_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC1_PWI_SHIFT		(8) | ||||
| #define EXYNOS4_CLKDIV_DMC1_PWI_MASK		(0xf << EXYNOS4_CLKDIV_DMC1_PWI_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC1_C2CACLK_SHIFT	(12) | ||||
| #define EXYNOS4_CLKDIV_DMC1_C2CACLK_MASK	(0x7 << EXYNOS4_CLKDIV_DMC1_C2CACLK_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC1_DVSEM_SHIFT		(16) | ||||
| #define EXYNOS4_CLKDIV_DMC1_DVSEM_MASK		(0x7f << EXYNOS4_CLKDIV_DMC1_DVSEM_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_DMC1_DPM_SHIFT		(24) | ||||
| #define EXYNOS4_CLKDIV_DMC1_DPM_MASK		(0x7f << EXYNOS4_CLKDIV_DMC1_DPM_SHIFT) | ||||
| 
 | ||||
| #define EXYNOS4_CLKDIV_MFC_SHIFT		(0) | ||||
| #define EXYNOS4_CLKDIV_MFC_MASK			(0x7 << EXYNOS4_CLKDIV_MFC_SHIFT) | ||||
| 
 | ||||
| #define EXYNOS4_CLKDIV_TOP_ACLK200_SHIFT	(0) | ||||
| #define EXYNOS4_CLKDIV_TOP_ACLK200_MASK		(0x7 << EXYNOS4_CLKDIV_TOP_ACLK200_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_TOP_ACLK100_SHIFT	(4) | ||||
| #define EXYNOS4_CLKDIV_TOP_ACLK100_MASK		(0xF << EXYNOS4_CLKDIV_TOP_ACLK100_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_TOP_ACLK160_SHIFT	(8) | ||||
| #define EXYNOS4_CLKDIV_TOP_ACLK160_MASK		(0x7 << EXYNOS4_CLKDIV_TOP_ACLK160_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_TOP_ACLK133_SHIFT	(12) | ||||
| #define EXYNOS4_CLKDIV_TOP_ACLK133_MASK		(0x7 << EXYNOS4_CLKDIV_TOP_ACLK133_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_TOP_ONENAND_SHIFT	(16) | ||||
| #define EXYNOS4_CLKDIV_TOP_ONENAND_MASK		(0x7 << EXYNOS4_CLKDIV_TOP_ONENAND_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_TOP_ACLK266_GPS_SHIFT	(20) | ||||
| #define EXYNOS4_CLKDIV_TOP_ACLK266_GPS_MASK	(0x7 << EXYNOS4_CLKDIV_TOP_ACLK266_GPS_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_TOP_ACLK400_MCUISP_SHIFT	(24) | ||||
| #define EXYNOS4_CLKDIV_TOP_ACLK400_MCUISP_MASK	(0x7 << EXYNOS4_CLKDIV_TOP_ACLK400_MCUISP_SHIFT) | ||||
| 
 | ||||
| #define EXYNOS4_CLKDIV_BUS_GDLR_SHIFT		(0) | ||||
| #define EXYNOS4_CLKDIV_BUS_GDLR_MASK		(0x7 << EXYNOS4_CLKDIV_BUS_GDLR_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_BUS_GPLR_SHIFT		(4) | ||||
| #define EXYNOS4_CLKDIV_BUS_GPLR_MASK		(0x7 << EXYNOS4_CLKDIV_BUS_GPLR_SHIFT) | ||||
| 
 | ||||
| #define EXYNOS4_CLKDIV_CAM_FIMC0_SHIFT		(0) | ||||
| #define EXYNOS4_CLKDIV_CAM_FIMC0_MASK		(0xf << EXYNOS4_CLKDIV_CAM_FIMC0_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CAM_FIMC1_SHIFT		(4) | ||||
| #define EXYNOS4_CLKDIV_CAM_FIMC1_MASK		(0xf << EXYNOS4_CLKDIV_CAM_FIMC1_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CAM_FIMC2_SHIFT		(8) | ||||
| #define EXYNOS4_CLKDIV_CAM_FIMC2_MASK		(0xf << EXYNOS4_CLKDIV_CAM_FIMC2_SHIFT) | ||||
| #define EXYNOS4_CLKDIV_CAM_FIMC3_SHIFT		(12) | ||||
| #define EXYNOS4_CLKDIV_CAM_FIMC3_MASK		(0xf << EXYNOS4_CLKDIV_CAM_FIMC3_SHIFT) | ||||
| 
 | ||||
| /* Only for EXYNOS4210 */ | ||||
| 
 | ||||
| #define S5P_CLKSRC_LCD1			S5P_CLKREG(0x0C238) | ||||
| #define S5P_CLKSRC_MASK_LCD1		S5P_CLKREG(0x0C338) | ||||
| #define S5P_CLKDIV_LCD1			S5P_CLKREG(0x0C538) | ||||
| #define S5P_CLKGATE_IP_LCD1		S5P_CLKREG(0x0C938) | ||||
| #define EXYNOS4210_CLKSRC_LCD1			EXYNOS_CLKREG(0x0C238) | ||||
| #define EXYNOS4210_CLKSRC_MASK_LCD1		EXYNOS_CLKREG(0x0C338) | ||||
| #define EXYNOS4210_CLKDIV_LCD1			EXYNOS_CLKREG(0x0C538) | ||||
| #define EXYNOS4210_CLKGATE_IP_LCD1		EXYNOS_CLKREG(0x0C938) | ||||
| 
 | ||||
| /* Only for EXYNOS4212 */ | ||||
| 
 | ||||
| #define EXYNOS4_CLKDIV_CAM1			EXYNOS_CLKREG(0x0C568) | ||||
| 
 | ||||
| #define EXYNOS4_CLKDIV_STAT_CAM1		EXYNOS_CLKREG(0x0C668) | ||||
| 
 | ||||
| #define EXYNOS4_CLKDIV_CAM1_JPEG_SHIFT		(0) | ||||
| #define EXYNOS4_CLKDIV_CAM1_JPEG_MASK		(0xf << EXYNOS4_CLKDIV_CAM1_JPEG_SHIFT) | ||||
| 
 | ||||
| /* Compatibility defines and inclusion */ | ||||
| 
 | ||||
| #include <mach/regs-pmu.h> | ||||
| 
 | ||||
| #define S5P_EPLL_CON			S5P_EPLL_CON0 | ||||
| #define S5P_EPLL_CON				EXYNOS4_EPLL_CON0 | ||||
| 
 | ||||
| #endif /* __ASM_ARCH_REGS_CLOCK_H */ | ||||
|  |  | |||
|  | @ -412,7 +412,7 @@ static struct max8997_regulator_data __initdata origen_max8997_regulators[] = { | |||
| 	{ MAX8997_BUCK7,	&max8997_buck7_data }, | ||||
| }; | ||||
| 
 | ||||
| struct max8997_platform_data __initdata origen_max8997_pdata = { | ||||
| static struct max8997_platform_data __initdata origen_max8997_pdata = { | ||||
| 	.num_regulators = ARRAY_SIZE(origen_max8997_regulators), | ||||
| 	.regulators	= origen_max8997_regulators, | ||||
| 
 | ||||
|  |  | |||
|  | @ -995,7 +995,7 @@ static void __init universal_map_io(void) | |||
| 	s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs)); | ||||
| } | ||||
| 
 | ||||
| void s5p_tv_setup(void) | ||||
| static void s5p_tv_setup(void) | ||||
| { | ||||
| 	/* direct HPD to HDMI chip */ | ||||
| 	gpio_request_one(EXYNOS4_GPX3(7), GPIOF_IN, "hpd-plug"); | ||||
|  |  | |||
|  | @ -38,29 +38,29 @@ | |||
| #include <mach/pmu.h> | ||||
| 
 | ||||
| static struct sleep_save exynos4_set_clksrc[] = { | ||||
| 	{ .reg = S5P_CLKSRC_MASK_TOP			, .val = 0x00000001, }, | ||||
| 	{ .reg = S5P_CLKSRC_MASK_CAM			, .val = 0x11111111, }, | ||||
| 	{ .reg = S5P_CLKSRC_MASK_TV			, .val = 0x00000111, }, | ||||
| 	{ .reg = S5P_CLKSRC_MASK_LCD0			, .val = 0x00001111, }, | ||||
| 	{ .reg = S5P_CLKSRC_MASK_MAUDIO			, .val = 0x00000001, }, | ||||
| 	{ .reg = S5P_CLKSRC_MASK_FSYS			, .val = 0x01011111, }, | ||||
| 	{ .reg = S5P_CLKSRC_MASK_PERIL0			, .val = 0x01111111, }, | ||||
| 	{ .reg = S5P_CLKSRC_MASK_PERIL1			, .val = 0x01110111, }, | ||||
| 	{ .reg = S5P_CLKSRC_MASK_DMC			, .val = 0x00010000, }, | ||||
| 	{ .reg = EXYNOS4_CLKSRC_MASK_TOP		, .val = 0x00000001, }, | ||||
| 	{ .reg = EXYNOS4_CLKSRC_MASK_CAM		, .val = 0x11111111, }, | ||||
| 	{ .reg = EXYNOS4_CLKSRC_MASK_TV			, .val = 0x00000111, }, | ||||
| 	{ .reg = EXYNOS4_CLKSRC_MASK_LCD0		, .val = 0x00001111, }, | ||||
| 	{ .reg = EXYNOS4_CLKSRC_MASK_MAUDIO		, .val = 0x00000001, }, | ||||
| 	{ .reg = EXYNOS4_CLKSRC_MASK_FSYS		, .val = 0x01011111, }, | ||||
| 	{ .reg = EXYNOS4_CLKSRC_MASK_PERIL0		, .val = 0x01111111, }, | ||||
| 	{ .reg = EXYNOS4_CLKSRC_MASK_PERIL1		, .val = 0x01110111, }, | ||||
| 	{ .reg = EXYNOS4_CLKSRC_MASK_DMC		, .val = 0x00010000, }, | ||||
| }; | ||||
| 
 | ||||
| static struct sleep_save exynos4210_set_clksrc[] = { | ||||
| 	{ .reg = S5P_CLKSRC_MASK_LCD1			, .val = 0x00001111, }, | ||||
| 	{ .reg = EXYNOS4210_CLKSRC_MASK_LCD1		, .val = 0x00001111, }, | ||||
| }; | ||||
| 
 | ||||
| static struct sleep_save exynos4_epll_save[] = { | ||||
| 	SAVE_ITEM(S5P_EPLL_CON0), | ||||
| 	SAVE_ITEM(S5P_EPLL_CON1), | ||||
| 	SAVE_ITEM(EXYNOS4_EPLL_CON0), | ||||
| 	SAVE_ITEM(EXYNOS4_EPLL_CON1), | ||||
| }; | ||||
| 
 | ||||
| static struct sleep_save exynos4_vpll_save[] = { | ||||
| 	SAVE_ITEM(S5P_VPLL_CON0), | ||||
| 	SAVE_ITEM(S5P_VPLL_CON1), | ||||
| 	SAVE_ITEM(EXYNOS4_VPLL_CON0), | ||||
| 	SAVE_ITEM(EXYNOS4_VPLL_CON1), | ||||
| }; | ||||
| 
 | ||||
| static struct sleep_save exynos4_core_save[] = { | ||||
|  | @ -239,7 +239,7 @@ static void exynos4_restore_pll(void) | |||
| 		locktime = (3000 / pll_in_rate) * p_div; | ||||
| 		lockcnt = locktime * 10000 / (10000 / pll_in_rate); | ||||
| 
 | ||||
| 		__raw_writel(lockcnt, S5P_EPLL_LOCK); | ||||
| 		__raw_writel(lockcnt, EXYNOS4_EPLL_LOCK); | ||||
| 
 | ||||
| 		s3c_pm_do_restore_core(exynos4_epll_save, | ||||
| 					ARRAY_SIZE(exynos4_epll_save)); | ||||
|  | @ -257,7 +257,7 @@ static void exynos4_restore_pll(void) | |||
| 		locktime = 750; | ||||
| 		lockcnt = locktime * 10000 / (10000 / pll_in_rate); | ||||
| 
 | ||||
| 		__raw_writel(lockcnt, S5P_VPLL_LOCK); | ||||
| 		__raw_writel(lockcnt, EXYNOS4_VPLL_LOCK); | ||||
| 
 | ||||
| 		s3c_pm_do_restore_core(exynos4_vpll_save, | ||||
| 					ARRAY_SIZE(exynos4_vpll_save)); | ||||
|  | @ -268,14 +268,14 @@ static void exynos4_restore_pll(void) | |||
| 
 | ||||
| 	do { | ||||
| 		if (epll_wait) { | ||||
| 			pll_con = __raw_readl(S5P_EPLL_CON0); | ||||
| 			if (pll_con & (1 << S5P_EPLLCON0_LOCKED_SHIFT)) | ||||
| 			pll_con = __raw_readl(EXYNOS4_EPLL_CON0); | ||||
| 			if (pll_con & (1 << EXYNOS4_EPLLCON0_LOCKED_SHIFT)) | ||||
| 				epll_wait = 0; | ||||
| 		} | ||||
| 
 | ||||
| 		if (vpll_wait) { | ||||
| 			pll_con = __raw_readl(S5P_VPLL_CON0); | ||||
| 			if (pll_con & (1 << S5P_VPLLCON0_LOCKED_SHIFT)) | ||||
| 			pll_con = __raw_readl(EXYNOS4_VPLL_CON0); | ||||
| 			if (pll_con & (1 << EXYNOS4_VPLLCON0_LOCKED_SHIFT)) | ||||
| 				vpll_wait = 0; | ||||
| 		} | ||||
| 	} while (epll_wait || vpll_wait); | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ | |||
| #include <mach/mx31.h> | ||||
| #include <mach/common.h> | ||||
| 
 | ||||
| #include "crmregs-imx31.h" | ||||
| #include "crmregs-imx3.h" | ||||
| 
 | ||||
| #define PRE_DIV_MIN_FREQ    10000000 /* Minimum Frequency after Predivider */ | ||||
| 
 | ||||
|  |  | |||
|  | @ -27,23 +27,7 @@ | |||
| #include <mach/hardware.h> | ||||
| #include <mach/common.h> | ||||
| 
 | ||||
| #define CCM_BASE	MX35_IO_ADDRESS(MX35_CCM_BASE_ADDR) | ||||
| 
 | ||||
| #define CCM_CCMR        0x00 | ||||
| #define CCM_PDR0        0x04 | ||||
| #define CCM_PDR1        0x08 | ||||
| #define CCM_PDR2        0x0C | ||||
| #define CCM_PDR3        0x10 | ||||
| #define CCM_PDR4        0x14 | ||||
| #define CCM_RCSR        0x18 | ||||
| #define CCM_MPCTL       0x1C | ||||
| #define CCM_PPCTL       0x20 | ||||
| #define CCM_ACMR        0x24 | ||||
| #define CCM_COSR        0x28 | ||||
| #define CCM_CGR0        0x2C | ||||
| #define CCM_CGR1        0x30 | ||||
| #define CCM_CGR2        0x34 | ||||
| #define CCM_CGR3        0x38 | ||||
| #include "crmregs-imx3.h" | ||||
| 
 | ||||
| #ifdef HAVE_SET_RATE_SUPPORT | ||||
| static void calc_dividers(u32 div, u32 *pre, u32 *post, u32 maxpost) | ||||
|  | @ -111,14 +95,14 @@ static void calc_dividers_3_3(u32 div, u32 *pre, u32 *post) | |||
| 
 | ||||
| static unsigned long get_rate_mpll(void) | ||||
| { | ||||
| 	ulong mpctl = __raw_readl(CCM_BASE + CCM_MPCTL); | ||||
| 	ulong mpctl = __raw_readl(MX35_CCM_MPCTL); | ||||
| 
 | ||||
| 	return mxc_decode_pll(mpctl, 24000000); | ||||
| } | ||||
| 
 | ||||
| static unsigned long get_rate_ppll(void) | ||||
| { | ||||
| 	ulong ppctl = __raw_readl(CCM_BASE + CCM_PPCTL); | ||||
| 	ulong ppctl = __raw_readl(MX35_CCM_PPCTL); | ||||
| 
 | ||||
| 	return mxc_decode_pll(ppctl, 24000000); | ||||
| } | ||||
|  | @ -148,7 +132,7 @@ static struct arm_ahb_div clk_consumer[] = { | |||
| 
 | ||||
| static unsigned long get_rate_arm(void) | ||||
| { | ||||
| 	unsigned long pdr0 = __raw_readl(CCM_BASE + CCM_PDR0); | ||||
| 	unsigned long pdr0 = __raw_readl(MXC_CCM_PDR0); | ||||
| 	struct arm_ahb_div *aad; | ||||
| 	unsigned long fref = get_rate_mpll(); | ||||
| 
 | ||||
|  | @ -161,7 +145,7 @@ static unsigned long get_rate_arm(void) | |||
| 
 | ||||
| static unsigned long get_rate_ahb(struct clk *clk) | ||||
| { | ||||
| 	unsigned long pdr0 = __raw_readl(CCM_BASE + CCM_PDR0); | ||||
| 	unsigned long pdr0 = __raw_readl(MXC_CCM_PDR0); | ||||
| 	struct arm_ahb_div *aad; | ||||
| 	unsigned long fref = get_rate_arm(); | ||||
| 
 | ||||
|  | @ -177,8 +161,8 @@ static unsigned long get_rate_ipg(struct clk *clk) | |||
| 
 | ||||
| static unsigned long get_rate_uart(struct clk *clk) | ||||
| { | ||||
| 	unsigned long pdr3 = __raw_readl(CCM_BASE + CCM_PDR3); | ||||
| 	unsigned long pdr4 = __raw_readl(CCM_BASE + CCM_PDR4); | ||||
| 	unsigned long pdr3 = __raw_readl(MX35_CCM_PDR3); | ||||
| 	unsigned long pdr4 = __raw_readl(MX35_CCM_PDR4); | ||||
| 	unsigned long div = ((pdr4 >> 10) & 0x3f) + 1; | ||||
| 
 | ||||
| 	if (pdr3 & (1 << 14)) | ||||
|  | @ -189,7 +173,7 @@ static unsigned long get_rate_uart(struct clk *clk) | |||
| 
 | ||||
| static unsigned long get_rate_sdhc(struct clk *clk) | ||||
| { | ||||
| 	unsigned long pdr3 = __raw_readl(CCM_BASE + CCM_PDR3); | ||||
| 	unsigned long pdr3 = __raw_readl(MX35_CCM_PDR3); | ||||
| 	unsigned long div, rate; | ||||
| 
 | ||||
| 	if (pdr3 & (1 << 6)) | ||||
|  | @ -215,7 +199,7 @@ static unsigned long get_rate_sdhc(struct clk *clk) | |||
| 
 | ||||
| static unsigned long get_rate_mshc(struct clk *clk) | ||||
| { | ||||
| 	unsigned long pdr1 = __raw_readl(CCM_BASE + CCM_PDR1); | ||||
| 	unsigned long pdr1 = __raw_readl(MXC_CCM_PDR1); | ||||
| 	unsigned long div1, div2, rate; | ||||
| 
 | ||||
| 	if (pdr1 & (1 << 7)) | ||||
|  | @ -231,7 +215,7 @@ static unsigned long get_rate_mshc(struct clk *clk) | |||
| 
 | ||||
| static unsigned long get_rate_ssi(struct clk *clk) | ||||
| { | ||||
| 	unsigned long pdr2 = __raw_readl(CCM_BASE + CCM_PDR2); | ||||
| 	unsigned long pdr2 = __raw_readl(MX35_CCM_PDR2); | ||||
| 	unsigned long div1, div2, rate; | ||||
| 
 | ||||
| 	if (pdr2 & (1 << 6)) | ||||
|  | @ -256,7 +240,7 @@ static unsigned long get_rate_ssi(struct clk *clk) | |||
| 
 | ||||
| static unsigned long get_rate_csi(struct clk *clk) | ||||
| { | ||||
| 	unsigned long pdr2 = __raw_readl(CCM_BASE + CCM_PDR2); | ||||
| 	unsigned long pdr2 = __raw_readl(MX35_CCM_PDR2); | ||||
| 	unsigned long rate; | ||||
| 
 | ||||
| 	if (pdr2 & (1 << 7)) | ||||
|  | @ -269,7 +253,7 @@ static unsigned long get_rate_csi(struct clk *clk) | |||
| 
 | ||||
| static unsigned long get_rate_otg(struct clk *clk) | ||||
| { | ||||
| 	unsigned long pdr4 = __raw_readl(CCM_BASE + CCM_PDR4); | ||||
| 	unsigned long pdr4 = __raw_readl(MX35_CCM_PDR4); | ||||
| 	unsigned long rate; | ||||
| 
 | ||||
| 	if (pdr4 & (1 << 9)) | ||||
|  | @ -282,8 +266,8 @@ static unsigned long get_rate_otg(struct clk *clk) | |||
| 
 | ||||
| static unsigned long get_rate_ipg_per(struct clk *clk) | ||||
| { | ||||
| 	unsigned long pdr0 = __raw_readl(CCM_BASE + CCM_PDR0); | ||||
| 	unsigned long pdr4 = __raw_readl(CCM_BASE + CCM_PDR4); | ||||
| 	unsigned long pdr0 = __raw_readl(MXC_CCM_PDR0); | ||||
| 	unsigned long pdr4 = __raw_readl(MX35_CCM_PDR4); | ||||
| 	unsigned long div; | ||||
| 
 | ||||
| 	if (pdr0 & (1 << 26)) { | ||||
|  | @ -297,7 +281,7 @@ static unsigned long get_rate_ipg_per(struct clk *clk) | |||
| 
 | ||||
| static unsigned long get_rate_hsp(struct clk *clk) | ||||
| { | ||||
| 	unsigned long hsp_podf = (__raw_readl(CCM_BASE + CCM_PDR0) >> 20) & 0x03; | ||||
| 	unsigned long hsp_podf = (__raw_readl(MXC_CCM_PDR0) >> 20) & 0x03; | ||||
| 	unsigned long fref = get_rate_mpll(); | ||||
| 
 | ||||
| 	if (fref > 400 * 1000 * 1000) { | ||||
|  | @ -345,7 +329,7 @@ static void clk_cgr_disable(struct clk *clk) | |||
| #define DEFINE_CLOCK(name, i, er, es, gr, sr)		\ | ||||
| 	static struct clk name = {			\ | ||||
| 		.id		= i,			\ | ||||
| 		.enable_reg	= CCM_BASE + er,	\ | ||||
| 		.enable_reg	= er,			\ | ||||
| 		.enable_shift	= es,			\ | ||||
| 		.get_rate	= gr,			\ | ||||
| 		.set_rate	= sr,			\ | ||||
|  | @ -353,59 +337,59 @@ static void clk_cgr_disable(struct clk *clk) | |||
| 		.disable	= clk_cgr_disable,	\ | ||||
| 	} | ||||
| 
 | ||||
| DEFINE_CLOCK(asrc_clk,   0, CCM_CGR0,  0, NULL, NULL); | ||||
| DEFINE_CLOCK(pata_clk,    0, CCM_CGR0,  2, get_rate_ipg, NULL); | ||||
| /* DEFINE_CLOCK(audmux_clk, 0, CCM_CGR0,  4, NULL, NULL); */ | ||||
| DEFINE_CLOCK(can1_clk,   0, CCM_CGR0,  6, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(can2_clk,   1, CCM_CGR0,  8, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(cspi1_clk,  0, CCM_CGR0, 10, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(cspi2_clk,  1, CCM_CGR0, 12, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(ect_clk,    0, CCM_CGR0, 14, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(edio_clk,   0, CCM_CGR0, 16, NULL, NULL); | ||||
| DEFINE_CLOCK(emi_clk,    0, CCM_CGR0, 18, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(epit1_clk,  0, CCM_CGR0, 20, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(epit2_clk,  1, CCM_CGR0, 22, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(esai_clk,   0, CCM_CGR0, 24, NULL, NULL); | ||||
| DEFINE_CLOCK(esdhc1_clk, 0, CCM_CGR0, 26, get_rate_sdhc, NULL); | ||||
| DEFINE_CLOCK(esdhc2_clk, 1, CCM_CGR0, 28, get_rate_sdhc, NULL); | ||||
| DEFINE_CLOCK(esdhc3_clk, 2, CCM_CGR0, 30, get_rate_sdhc, NULL); | ||||
| DEFINE_CLOCK(asrc_clk,   0, MX35_CCM_CGR0,  0, NULL, NULL); | ||||
| DEFINE_CLOCK(pata_clk,    0, MX35_CCM_CGR0,  2, get_rate_ipg, NULL); | ||||
| /* DEFINE_CLOCK(audmux_clk, 0, MX35_CCM_CGR0,  4, NULL, NULL); */ | ||||
| DEFINE_CLOCK(can1_clk,   0, MX35_CCM_CGR0,  6, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(can2_clk,   1, MX35_CCM_CGR0,  8, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(cspi1_clk,  0, MX35_CCM_CGR0, 10, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(cspi2_clk,  1, MX35_CCM_CGR0, 12, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(ect_clk,    0, MX35_CCM_CGR0, 14, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(edio_clk,   0, MX35_CCM_CGR0, 16, NULL, NULL); | ||||
| DEFINE_CLOCK(emi_clk,    0, MX35_CCM_CGR0, 18, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(epit1_clk,  0, MX35_CCM_CGR0, 20, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(epit2_clk,  1, MX35_CCM_CGR0, 22, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(esai_clk,   0, MX35_CCM_CGR0, 24, NULL, NULL); | ||||
| DEFINE_CLOCK(esdhc1_clk, 0, MX35_CCM_CGR0, 26, get_rate_sdhc, NULL); | ||||
| DEFINE_CLOCK(esdhc2_clk, 1, MX35_CCM_CGR0, 28, get_rate_sdhc, NULL); | ||||
| DEFINE_CLOCK(esdhc3_clk, 2, MX35_CCM_CGR0, 30, get_rate_sdhc, NULL); | ||||
| 
 | ||||
| DEFINE_CLOCK(fec_clk,    0, CCM_CGR1,  0, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(gpio1_clk,  0, CCM_CGR1,  2, NULL, NULL); | ||||
| DEFINE_CLOCK(gpio2_clk,  1, CCM_CGR1,  4, NULL, NULL); | ||||
| DEFINE_CLOCK(gpio3_clk,  2, CCM_CGR1,  6, NULL, NULL); | ||||
| DEFINE_CLOCK(gpt_clk,    0, CCM_CGR1,  8, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(i2c1_clk,   0, CCM_CGR1, 10, get_rate_ipg_per, NULL); | ||||
| DEFINE_CLOCK(i2c2_clk,   1, CCM_CGR1, 12, get_rate_ipg_per, NULL); | ||||
| DEFINE_CLOCK(i2c3_clk,   2, CCM_CGR1, 14, get_rate_ipg_per, NULL); | ||||
| DEFINE_CLOCK(iomuxc_clk, 0, CCM_CGR1, 16, NULL, NULL); | ||||
| DEFINE_CLOCK(ipu_clk,    0, CCM_CGR1, 18, get_rate_hsp, NULL); | ||||
| DEFINE_CLOCK(kpp_clk,    0, CCM_CGR1, 20, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(mlb_clk,    0, CCM_CGR1, 22, get_rate_ahb, NULL); | ||||
| DEFINE_CLOCK(mshc_clk,   0, CCM_CGR1, 24, get_rate_mshc, NULL); | ||||
| DEFINE_CLOCK(owire_clk,  0, CCM_CGR1, 26, get_rate_ipg_per, NULL); | ||||
| DEFINE_CLOCK(pwm_clk,    0, CCM_CGR1, 28, get_rate_ipg_per, NULL); | ||||
| DEFINE_CLOCK(rngc_clk,   0, CCM_CGR1, 30, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(fec_clk,    0, MX35_CCM_CGR1,  0, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(gpio1_clk,  0, MX35_CCM_CGR1,  2, NULL, NULL); | ||||
| DEFINE_CLOCK(gpio2_clk,  1, MX35_CCM_CGR1,  4, NULL, NULL); | ||||
| DEFINE_CLOCK(gpio3_clk,  2, MX35_CCM_CGR1,  6, NULL, NULL); | ||||
| DEFINE_CLOCK(gpt_clk,    0, MX35_CCM_CGR1,  8, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(i2c1_clk,   0, MX35_CCM_CGR1, 10, get_rate_ipg_per, NULL); | ||||
| DEFINE_CLOCK(i2c2_clk,   1, MX35_CCM_CGR1, 12, get_rate_ipg_per, NULL); | ||||
| DEFINE_CLOCK(i2c3_clk,   2, MX35_CCM_CGR1, 14, get_rate_ipg_per, NULL); | ||||
| DEFINE_CLOCK(iomuxc_clk, 0, MX35_CCM_CGR1, 16, NULL, NULL); | ||||
| DEFINE_CLOCK(ipu_clk,    0, MX35_CCM_CGR1, 18, get_rate_hsp, NULL); | ||||
| DEFINE_CLOCK(kpp_clk,    0, MX35_CCM_CGR1, 20, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(mlb_clk,    0, MX35_CCM_CGR1, 22, get_rate_ahb, NULL); | ||||
| DEFINE_CLOCK(mshc_clk,   0, MX35_CCM_CGR1, 24, get_rate_mshc, NULL); | ||||
| DEFINE_CLOCK(owire_clk,  0, MX35_CCM_CGR1, 26, get_rate_ipg_per, NULL); | ||||
| DEFINE_CLOCK(pwm_clk,    0, MX35_CCM_CGR1, 28, get_rate_ipg_per, NULL); | ||||
| DEFINE_CLOCK(rngc_clk,   0, MX35_CCM_CGR1, 30, get_rate_ipg, NULL); | ||||
| 
 | ||||
| DEFINE_CLOCK(rtc_clk,    0, CCM_CGR2,  0, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(rtic_clk,   0, CCM_CGR2,  2, get_rate_ahb, NULL); | ||||
| DEFINE_CLOCK(scc_clk,    0, CCM_CGR2,  4, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(sdma_clk,   0, CCM_CGR2,  6, NULL, NULL); | ||||
| DEFINE_CLOCK(spba_clk,   0, CCM_CGR2,  8, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(spdif_clk,  0, CCM_CGR2, 10, NULL, NULL); | ||||
| DEFINE_CLOCK(ssi1_clk,   0, CCM_CGR2, 12, get_rate_ssi, NULL); | ||||
| DEFINE_CLOCK(ssi2_clk,   1, CCM_CGR2, 14, get_rate_ssi, NULL); | ||||
| DEFINE_CLOCK(uart1_clk,  0, CCM_CGR2, 16, get_rate_uart, NULL); | ||||
| DEFINE_CLOCK(uart2_clk,  1, CCM_CGR2, 18, get_rate_uart, NULL); | ||||
| DEFINE_CLOCK(uart3_clk,  2, CCM_CGR2, 20, get_rate_uart, NULL); | ||||
| DEFINE_CLOCK(usbotg_clk, 0, CCM_CGR2, 22, get_rate_otg, NULL); | ||||
| DEFINE_CLOCK(wdog_clk,   0, CCM_CGR2, 24, NULL, NULL); | ||||
| DEFINE_CLOCK(max_clk,    0, CCM_CGR2, 26, NULL, NULL); | ||||
| DEFINE_CLOCK(audmux_clk, 0, CCM_CGR2, 30, NULL, NULL); | ||||
| DEFINE_CLOCK(rtc_clk,    0, MX35_CCM_CGR2,  0, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(rtic_clk,   0, MX35_CCM_CGR2,  2, get_rate_ahb, NULL); | ||||
| DEFINE_CLOCK(scc_clk,    0, MX35_CCM_CGR2,  4, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(sdma_clk,   0, MX35_CCM_CGR2,  6, NULL, NULL); | ||||
| DEFINE_CLOCK(spba_clk,   0, MX35_CCM_CGR2,  8, get_rate_ipg, NULL); | ||||
| DEFINE_CLOCK(spdif_clk,  0, MX35_CCM_CGR2, 10, NULL, NULL); | ||||
| DEFINE_CLOCK(ssi1_clk,   0, MX35_CCM_CGR2, 12, get_rate_ssi, NULL); | ||||
| DEFINE_CLOCK(ssi2_clk,   1, MX35_CCM_CGR2, 14, get_rate_ssi, NULL); | ||||
| DEFINE_CLOCK(uart1_clk,  0, MX35_CCM_CGR2, 16, get_rate_uart, NULL); | ||||
| DEFINE_CLOCK(uart2_clk,  1, MX35_CCM_CGR2, 18, get_rate_uart, NULL); | ||||
| DEFINE_CLOCK(uart3_clk,  2, MX35_CCM_CGR2, 20, get_rate_uart, NULL); | ||||
| DEFINE_CLOCK(usbotg_clk, 0, MX35_CCM_CGR2, 22, get_rate_otg, NULL); | ||||
| DEFINE_CLOCK(wdog_clk,   0, MX35_CCM_CGR2, 24, NULL, NULL); | ||||
| DEFINE_CLOCK(max_clk,    0, MX35_CCM_CGR2, 26, NULL, NULL); | ||||
| DEFINE_CLOCK(audmux_clk, 0, MX35_CCM_CGR2, 30, NULL, NULL); | ||||
| 
 | ||||
| DEFINE_CLOCK(csi_clk,    0, CCM_CGR3,  0, get_rate_csi, NULL); | ||||
| DEFINE_CLOCK(iim_clk,    0, CCM_CGR3,  2, NULL, NULL); | ||||
| DEFINE_CLOCK(gpu2d_clk,  0, CCM_CGR3,  4, NULL, NULL); | ||||
| DEFINE_CLOCK(csi_clk,    0, MX35_CCM_CGR3,  0, get_rate_csi, NULL); | ||||
| DEFINE_CLOCK(iim_clk,    0, MX35_CCM_CGR3,  2, NULL, NULL); | ||||
| DEFINE_CLOCK(gpu2d_clk,  0, MX35_CCM_CGR3,  4, NULL, NULL); | ||||
| 
 | ||||
| DEFINE_CLOCK(usbahb_clk, 0, 0,         0, get_rate_ahb, NULL); | ||||
| 
 | ||||
|  | @ -422,7 +406,7 @@ static unsigned long get_rate_nfc(struct clk *clk) | |||
| { | ||||
| 	unsigned long div1; | ||||
| 
 | ||||
| 	div1 = (__raw_readl(CCM_BASE + CCM_PDR4) >> 28) + 1; | ||||
| 	div1 = (__raw_readl(MX35_CCM_PDR4) >> 28) + 1; | ||||
| 
 | ||||
| 	return get_rate_ahb(NULL) / div1; | ||||
| } | ||||
|  | @ -518,11 +502,11 @@ int __init mx35_clocks_init() | |||
| 	/* Turn off all clocks except the ones we need to survive, namely:
 | ||||
| 	 * EMI, GPIO1/2/3, GPT, IOMUX, MAX and eventually uart | ||||
| 	 */ | ||||
| 	__raw_writel((3 << 18), CCM_BASE + CCM_CGR0); | ||||
| 	__raw_writel((3 << 18), MX35_CCM_CGR0); | ||||
| 	__raw_writel((3 << 2) | (3 << 4) | (3 << 6) | (3 << 8) | (3 << 16), | ||||
| 			CCM_BASE + CCM_CGR1); | ||||
| 	__raw_writel(cgr2, CCM_BASE + CCM_CGR2); | ||||
| 	__raw_writel(0, CCM_BASE + CCM_CGR3); | ||||
| 			MX35_CCM_CGR1); | ||||
| 	__raw_writel(cgr2, MX35_CCM_CGR2); | ||||
| 	__raw_writel(0, MX35_CCM_CGR3); | ||||
| 
 | ||||
| 	clk_enable(&iim_clk); | ||||
| 	imx_print_silicon_rev("i.MX35", mx35_revision()); | ||||
|  | @ -533,7 +517,7 @@ int __init mx35_clocks_init() | |||
| 	 * extra clocks turned on, otherwise the MX35 boot ROM code will | ||||
| 	 * hang after a watchdog reset. | ||||
| 	 */ | ||||
| 	if (!(__raw_readl(CCM_BASE + CCM_RCSR) & (3 << 10))) { | ||||
| 	if (!(__raw_readl(MX35_CCM_RCSR) & (3 << 10))) { | ||||
| 		/* Additionally turn on UART1, SCC, and IIM clocks */ | ||||
| 		clk_enable(&iim_clk); | ||||
| 		clk_enable(&uart1_clk); | ||||
|  |  | |||
|  | @ -24,23 +24,36 @@ | |||
| #define CKIH_CLK_FREQ_27MHZ     27000000 | ||||
| #define CKIL_CLK_FREQ           32768 | ||||
| 
 | ||||
| #define MXC_CCM_BASE		MX31_IO_ADDRESS(MX31_CCM_BASE_ADDR) | ||||
| #define MXC_CCM_BASE		(cpu_is_mx31() ? \ | ||||
| MX31_IO_ADDRESS(MX31_CCM_BASE_ADDR) : MX35_IO_ADDRESS(MX35_CCM_BASE_ADDR)) | ||||
| 
 | ||||
| /* Register addresses */ | ||||
| #define MXC_CCM_CCMR		(MXC_CCM_BASE + 0x00) | ||||
| #define MXC_CCM_PDR0		(MXC_CCM_BASE + 0x04) | ||||
| #define MXC_CCM_PDR1		(MXC_CCM_BASE + 0x08) | ||||
| #define MX35_CCM_PDR2		(MXC_CCM_BASE + 0x0C) | ||||
| #define MXC_CCM_RCSR		(MXC_CCM_BASE + 0x0C) | ||||
| #define MX35_CCM_PDR3		(MXC_CCM_BASE + 0x10) | ||||
| #define MXC_CCM_MPCTL		(MXC_CCM_BASE + 0x10) | ||||
| #define MX35_CCM_PDR4		(MXC_CCM_BASE + 0x14) | ||||
| #define MXC_CCM_UPCTL		(MXC_CCM_BASE + 0x14) | ||||
| #define MX35_CCM_RCSR		(MXC_CCM_BASE + 0x18) | ||||
| #define MXC_CCM_SRPCTL		(MXC_CCM_BASE + 0x18) | ||||
| #define MX35_CCM_MPCTL		(MXC_CCM_BASE + 0x1C) | ||||
| #define MXC_CCM_COSR		(MXC_CCM_BASE + 0x1C) | ||||
| #define MX35_CCM_PPCTL		(MXC_CCM_BASE + 0x20) | ||||
| #define MXC_CCM_CGR0		(MXC_CCM_BASE + 0x20) | ||||
| #define MX35_CCM_ACMR		(MXC_CCM_BASE + 0x24) | ||||
| #define MXC_CCM_CGR1		(MXC_CCM_BASE + 0x24) | ||||
| #define MX35_CCM_COSR		(MXC_CCM_BASE + 0x28) | ||||
| #define MXC_CCM_CGR2		(MXC_CCM_BASE + 0x28) | ||||
| #define MX35_CCM_CGR0		(MXC_CCM_BASE + 0x2C) | ||||
| #define MXC_CCM_WIMR		(MXC_CCM_BASE + 0x2C) | ||||
| #define MX35_CCM_CGR1		(MXC_CCM_BASE + 0x30) | ||||
| #define MXC_CCM_LDC		(MXC_CCM_BASE + 0x30) | ||||
| #define MX35_CCM_CGR2		(MXC_CCM_BASE + 0x34) | ||||
| #define MXC_CCM_DCVR0		(MXC_CCM_BASE + 0x34) | ||||
| #define MX35_CCM_CGR3		(MXC_CCM_BASE + 0x38) | ||||
| #define MXC_CCM_DCVR1		(MXC_CCM_BASE + 0x38) | ||||
| #define MXC_CCM_DCVR2		(MXC_CCM_BASE + 0x3C) | ||||
| #define MXC_CCM_DCVR3		(MXC_CCM_BASE + 0x40) | ||||
|  | @ -51,7 +51,7 @@ | |||
| #include <mach/ulpi.h> | ||||
| 
 | ||||
| #include "devices-imx31.h" | ||||
| #include "crmregs-imx31.h" | ||||
| #include "crmregs-imx3.h" | ||||
| 
 | ||||
| static int armadillo5x0_pins[] = { | ||||
| 	/* UART1 */ | ||||
|  |  | |||
|  | @ -15,11 +15,12 @@ | |||
| 
 | ||||
| #include <linux/linkage.h> | ||||
| 
 | ||||
| #include <plat/io.h> | ||||
| #include <plat/board-ams-delta.h> | ||||
| 
 | ||||
| #include <mach/ams-delta-fiq.h> | ||||
| 
 | ||||
| #include "iomap.h" | ||||
| 
 | ||||
| /* | ||||
|  * GPIO related definitions, copied from arch/arm/plat-omap/gpio.c. | ||||
|  * Unfortunately, those were not placed in a separate header file. | ||||
|  |  | |||
|  | @ -22,6 +22,7 @@ | |||
| #include <plat/board-ams-delta.h> | ||||
| 
 | ||||
| #include <asm/fiq.h> | ||||
| 
 | ||||
| #include <mach/ams-delta-fiq.h> | ||||
| 
 | ||||
| static struct fiq_handler fh = { | ||||
|  |  | |||
|  | @ -21,25 +21,27 @@ | |||
| #include <linux/serial_8250.h> | ||||
| #include <linux/export.h> | ||||
| #include <linux/omapfb.h> | ||||
| #include <linux/io.h> | ||||
| 
 | ||||
| #include <media/soc_camera.h> | ||||
| 
 | ||||
| #include <asm/serial.h> | ||||
| #include <mach/hardware.h> | ||||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
| 
 | ||||
| #include <plat/io.h> | ||||
| #include <plat/board-ams-delta.h> | ||||
| #include <plat/keypad.h> | ||||
| #include <plat/mux.h> | ||||
| #include <plat/usb.h> | ||||
| #include <plat/board.h> | ||||
| #include "common.h" | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <mach/ams-delta-fiq.h> | ||||
| #include <mach/camera.h> | ||||
| 
 | ||||
| #include <mach/ams-delta-fiq.h> | ||||
| #include "iomap.h" | ||||
| #include "common.h" | ||||
| 
 | ||||
| static u8 ams_delta_latch1_reg; | ||||
| static u16 ams_delta_latch2_reg; | ||||
|  |  | |||
|  | @ -23,7 +23,6 @@ | |||
| #include <linux/smc91x.h> | ||||
| #include <linux/omapfb.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
|  | @ -33,9 +32,13 @@ | |||
| #include <plat/flash.h> | ||||
| #include <plat/fpga.h> | ||||
| #include <plat/keypad.h> | ||||
| #include "common.h" | ||||
| #include <plat/board.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include "iomap.h" | ||||
| #include "common.h" | ||||
| 
 | ||||
| /* fsample is pretty close to p2-sample */ | ||||
| 
 | ||||
| #define fsample_cpld_read(reg) __raw_readb(reg) | ||||
|  |  | |||
|  | @ -32,8 +32,6 @@ | |||
| #include <linux/smc91x.h> | ||||
| #include <linux/omapfb.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
|  | @ -44,9 +42,11 @@ | |||
| #include <plat/irda.h> | ||||
| #include <plat/usb.h> | ||||
| #include <plat/keypad.h> | ||||
| #include "common.h" | ||||
| #include <plat/flash.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include "common.h" | ||||
| #include "board-h2.h" | ||||
| 
 | ||||
| /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ | ||||
|  |  | |||
|  | @ -34,21 +34,21 @@ | |||
| 
 | ||||
| #include <asm/setup.h> | ||||
| #include <asm/page.h> | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
| 
 | ||||
| #include <mach/irqs.h> | ||||
| #include <plat/mux.h> | ||||
| #include <plat/tc.h> | ||||
| #include <plat/usb.h> | ||||
| #include <plat/keypad.h> | ||||
| #include <plat/dma.h> | ||||
| #include "common.h" | ||||
| #include <plat/flash.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <mach/irqs.h> | ||||
| 
 | ||||
| #include "common.h" | ||||
| #include "board-h3.h" | ||||
| 
 | ||||
| /* In OMAP1710 H3 the Ethernet is directly connected to CS1 */ | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ | |||
| #include <linux/init.h> | ||||
| #include <linux/platform_device.h> | ||||
| #include <linux/input.h> | ||||
| #include <linux/io.h> | ||||
| #include <linux/delay.h> | ||||
| #include <linux/gpio.h> | ||||
| #include <linux/gpio_keys.h> | ||||
| #include <linux/i2c.h> | ||||
|  | @ -42,7 +42,6 @@ | |||
| #include <asm/mach/arch.h> | ||||
| 
 | ||||
| #include <plat/omap7xx.h> | ||||
| #include "common.h" | ||||
| #include <plat/board.h> | ||||
| #include <plat/keypad.h> | ||||
| #include <plat/usb.h> | ||||
|  | @ -50,7 +49,7 @@ | |||
| 
 | ||||
| #include <mach/irqs.h> | ||||
| 
 | ||||
| #include <linux/delay.h> | ||||
| #include "common.h" | ||||
| 
 | ||||
| /* LCD register definition */ | ||||
| #define       OMAP_LCDC_CONTROL               (0xfffec000 + 0x00) | ||||
|  |  | |||
|  | @ -27,7 +27,6 @@ | |||
| #include <linux/smc91x.h> | ||||
| #include <linux/omapfb.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
|  | @ -38,9 +37,13 @@ | |||
| #include <plat/tc.h> | ||||
| #include <plat/usb.h> | ||||
| #include <plat/keypad.h> | ||||
| #include "common.h" | ||||
| #include <plat/mmc.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include "iomap.h" | ||||
| #include "common.h" | ||||
| 
 | ||||
| /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ | ||||
| #define INNOVATOR1610_ETHR_START	0x04000300 | ||||
| 
 | ||||
|  |  | |||
|  | @ -21,7 +21,6 @@ | |||
| #include <linux/workqueue.h> | ||||
| #include <linux/delay.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
|  | @ -30,11 +29,14 @@ | |||
| #include <plat/usb.h> | ||||
| #include <plat/board.h> | ||||
| #include <plat/keypad.h> | ||||
| #include "common.h" | ||||
| #include <plat/lcd_mipid.h> | ||||
| #include <plat/mmc.h> | ||||
| #include <plat/clock.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include "common.h" | ||||
| 
 | ||||
| #define ADS7846_PENDOWN_GPIO	15 | ||||
| 
 | ||||
| static const unsigned int nokia770_keymap[] = { | ||||
|  |  | |||
|  | @ -35,15 +35,11 @@ | |||
| #include <linux/leds.h> | ||||
| #include <linux/smc91x.h> | ||||
| #include <linux/omapfb.h> | ||||
| 
 | ||||
| #include <linux/mtd/mtd.h> | ||||
| #include <linux/mtd/partitions.h> | ||||
| #include <linux/mtd/physmap.h> | ||||
| 
 | ||||
| #include <linux/i2c/tps65010.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
|  | @ -52,6 +48,9 @@ | |||
| #include <plat/usb.h> | ||||
| #include <plat/mux.h> | ||||
| #include <plat/tc.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include "common.h" | ||||
| 
 | ||||
| /* At OMAP5912 OSK the Ethernet is directly connected to CS1 */ | ||||
|  |  | |||
|  | @ -29,7 +29,6 @@ | |||
| #include <linux/apm-emulation.h> | ||||
| #include <linux/omapfb.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
|  | @ -42,6 +41,9 @@ | |||
| #include <plat/board.h> | ||||
| #include <plat/irda.h> | ||||
| #include <plat/keypad.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include "common.h" | ||||
| 
 | ||||
| #define PALMTE_USBDETECT_GPIO	0 | ||||
|  |  | |||
|  | @ -25,8 +25,9 @@ | |||
| #include <linux/mtd/physmap.h> | ||||
| #include <linux/leds.h> | ||||
| #include <linux/omapfb.h> | ||||
| #include <linux/spi/spi.h> | ||||
| #include <linux/spi/ads7846.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
|  | @ -40,10 +41,10 @@ | |||
| #include <plat/board.h> | ||||
| #include <plat/irda.h> | ||||
| #include <plat/keypad.h> | ||||
| #include "common.h" | ||||
| 
 | ||||
| #include <linux/spi/spi.h> | ||||
| #include <linux/spi/ads7846.h> | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include "common.h" | ||||
| 
 | ||||
| #define PALMTT_USBDETECT_GPIO	0 | ||||
| #define PALMTT_CABLE_GPIO	1 | ||||
|  |  | |||
|  | @ -28,8 +28,9 @@ | |||
| #include <linux/mtd/partitions.h> | ||||
| #include <linux/mtd/physmap.h> | ||||
| #include <linux/omapfb.h> | ||||
| #include <linux/spi/spi.h> | ||||
| #include <linux/spi/ads7846.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
|  | @ -42,10 +43,10 @@ | |||
| #include <plat/board.h> | ||||
| #include <plat/irda.h> | ||||
| #include <plat/keypad.h> | ||||
| #include "common.h" | ||||
| 
 | ||||
| #include <linux/spi/spi.h> | ||||
| #include <linux/spi/ads7846.h> | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include "common.h" | ||||
| 
 | ||||
| #define PALMZ71_USBDETECT_GPIO	0 | ||||
| #define PALMZ71_PENIRQ_GPIO	6 | ||||
|  |  | |||
|  | @ -23,7 +23,6 @@ | |||
| #include <linux/smc91x.h> | ||||
| #include <linux/omapfb.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
|  | @ -33,9 +32,13 @@ | |||
| #include <plat/fpga.h> | ||||
| #include <plat/flash.h> | ||||
| #include <plat/keypad.h> | ||||
| #include "common.h" | ||||
| #include <plat/board.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include "iomap.h" | ||||
| #include "common.h" | ||||
| 
 | ||||
| static const unsigned int p2_keymap[] = { | ||||
| 	KEY(0, 0, KEY_UP), | ||||
| 	KEY(1, 0, KEY_RIGHT), | ||||
|  |  | |||
|  | @ -29,7 +29,6 @@ | |||
| #include <linux/export.h> | ||||
| #include <linux/omapfb.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| #include <asm/mach-types.h> | ||||
| #include <asm/mach/arch.h> | ||||
| #include <asm/mach/map.h> | ||||
|  | @ -41,10 +40,13 @@ | |||
| #include <plat/usb.h> | ||||
| #include <plat/tc.h> | ||||
| #include <plat/board.h> | ||||
| #include "common.h" | ||||
| #include <plat/keypad.h> | ||||
| #include <plat/board-sx1.h> | ||||
| 
 | ||||
| #include <mach/hardware.h> | ||||
| 
 | ||||
| #include "common.h" | ||||
| 
 | ||||
| /* Write to I2C device */ | ||||
| int sx1_i2c_write_byte(u8 devaddr, u8 regoffset, u8 value) | ||||
| { | ||||
|  |  | |||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Linus Torvalds
				Linus Torvalds