diff options
Diffstat (limited to 'arch/arm')
126 files changed, 1046 insertions, 971 deletions
diff --git a/arch/arm/boot/Makefile b/arch/arm/boot/Makefile index 176062ac7f07..5df26a9976a2 100644 --- a/arch/arm/boot/Makefile +++ b/arch/arm/boot/Makefile | |||
| @@ -65,6 +65,8 @@ $(obj)/%.dtb: $(src)/dts/%.dts | |||
| 65 | 65 | ||
| 66 | $(obj)/dtbs: $(addprefix $(obj)/, $(dtb-y)) | 66 | $(obj)/dtbs: $(addprefix $(obj)/, $(dtb-y)) |
| 67 | 67 | ||
| 68 | clean-files := *.dtb | ||
| 69 | |||
| 68 | quiet_cmd_uimage = UIMAGE $@ | 70 | quiet_cmd_uimage = UIMAGE $@ |
| 69 | cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \ | 71 | cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \ |
| 70 | -C none -a $(LOADADDR) -e $(STARTADDR) \ | 72 | -C none -a $(LOADADDR) -e $(STARTADDR) \ |
diff --git a/arch/arm/boot/dts/tegra-ventana.dts b/arch/arm/boot/dts/tegra-ventana.dts index 9b29a623aaf1..3f9abd6b6964 100644 --- a/arch/arm/boot/dts/tegra-ventana.dts +++ b/arch/arm/boot/dts/tegra-ventana.dts | |||
| @@ -22,11 +22,10 @@ | |||
| 22 | sdhci@c8000400 { | 22 | sdhci@c8000400 { |
| 23 | cd-gpios = <&gpio 69 0>; /* gpio PI5 */ | 23 | cd-gpios = <&gpio 69 0>; /* gpio PI5 */ |
| 24 | wp-gpios = <&gpio 57 0>; /* gpio PH1 */ | 24 | wp-gpios = <&gpio 57 0>; /* gpio PH1 */ |
| 25 | power-gpios = <&gpio 155 0>; /* gpio PT3 */ | 25 | power-gpios = <&gpio 70 0>; /* gpio PI6 */ |
| 26 | }; | 26 | }; |
| 27 | 27 | ||
| 28 | sdhci@c8000600 { | 28 | sdhci@c8000600 { |
| 29 | power-gpios = <&gpio 70 0>; /* gpio PI6 */ | ||
| 30 | support-8bit; | 29 | support-8bit; |
| 31 | }; | 30 | }; |
| 32 | }; | 31 | }; |
diff --git a/arch/arm/configs/at91cap9adk_defconfig b/arch/arm/configs/at91cap9_defconfig index ffb1edd93363..8826eb218e73 100644 --- a/arch/arm/configs/at91cap9adk_defconfig +++ b/arch/arm/configs/at91cap9_defconfig | |||
| @@ -38,7 +38,6 @@ CONFIG_IP_PNP_RARP=y | |||
| 38 | # CONFIG_IPV6 is not set | 38 | # CONFIG_IPV6 is not set |
| 39 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 39 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
| 40 | CONFIG_MTD=y | 40 | CONFIG_MTD=y |
| 41 | CONFIG_MTD_PARTITIONS=y | ||
| 42 | CONFIG_MTD_CMDLINE_PARTS=y | 41 | CONFIG_MTD_CMDLINE_PARTS=y |
| 43 | CONFIG_MTD_CHAR=y | 42 | CONFIG_MTD_CHAR=y |
| 44 | CONFIG_MTD_BLOCK=y | 43 | CONFIG_MTD_BLOCK=y |
| @@ -52,16 +51,12 @@ CONFIG_MTD_NAND_ATMEL=y | |||
| 52 | CONFIG_BLK_DEV_LOOP=y | 51 | CONFIG_BLK_DEV_LOOP=y |
| 53 | CONFIG_BLK_DEV_RAM=y | 52 | CONFIG_BLK_DEV_RAM=y |
| 54 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 53 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
| 55 | CONFIG_ATMEL_SSC=y | ||
| 56 | CONFIG_SCSI=y | 54 | CONFIG_SCSI=y |
| 57 | CONFIG_BLK_DEV_SD=y | 55 | CONFIG_BLK_DEV_SD=y |
| 58 | CONFIG_SCSI_MULTI_LUN=y | 56 | CONFIG_SCSI_MULTI_LUN=y |
| 59 | CONFIG_NETDEVICES=y | 57 | CONFIG_NETDEVICES=y |
| 60 | CONFIG_NET_ETHERNET=y | ||
| 61 | CONFIG_MII=y | 58 | CONFIG_MII=y |
| 62 | CONFIG_MACB=y | 59 | CONFIG_MACB=y |
| 63 | # CONFIG_NETDEV_1000 is not set | ||
| 64 | # CONFIG_NETDEV_10000 is not set | ||
| 65 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | 60 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set |
| 66 | CONFIG_INPUT_EVDEV=y | 61 | CONFIG_INPUT_EVDEV=y |
| 67 | # CONFIG_INPUT_KEYBOARD is not set | 62 | # CONFIG_INPUT_KEYBOARD is not set |
| @@ -81,7 +76,6 @@ CONFIG_WATCHDOG=y | |||
| 81 | CONFIG_WATCHDOG_NOWAYOUT=y | 76 | CONFIG_WATCHDOG_NOWAYOUT=y |
| 82 | CONFIG_FB=y | 77 | CONFIG_FB=y |
| 83 | CONFIG_FB_ATMEL=y | 78 | CONFIG_FB_ATMEL=y |
| 84 | # CONFIG_VGA_CONSOLE is not set | ||
| 85 | CONFIG_LOGO=y | 79 | CONFIG_LOGO=y |
| 86 | # CONFIG_LOGO_LINUX_MONO is not set | 80 | # CONFIG_LOGO_LINUX_MONO is not set |
| 87 | # CONFIG_LOGO_LINUX_CLUT224 is not set | 81 | # CONFIG_LOGO_LINUX_CLUT224 is not set |
| @@ -99,7 +93,6 @@ CONFIG_MMC_AT91=m | |||
| 99 | CONFIG_RTC_CLASS=y | 93 | CONFIG_RTC_CLASS=y |
| 100 | CONFIG_RTC_DRV_AT91SAM9=y | 94 | CONFIG_RTC_DRV_AT91SAM9=y |
| 101 | CONFIG_EXT2_FS=y | 95 | CONFIG_EXT2_FS=y |
| 102 | CONFIG_INOTIFY=y | ||
| 103 | CONFIG_VFAT_FS=y | 96 | CONFIG_VFAT_FS=y |
| 104 | CONFIG_TMPFS=y | 97 | CONFIG_TMPFS=y |
| 105 | CONFIG_JFFS2_FS=y | 98 | CONFIG_JFFS2_FS=y |
diff --git a/arch/arm/configs/at91rm9200_defconfig b/arch/arm/configs/at91rm9200_defconfig index 38cb7c985426..bbe4e1a1f5d8 100644 --- a/arch/arm/configs/at91rm9200_defconfig +++ b/arch/arm/configs/at91rm9200_defconfig | |||
| @@ -5,7 +5,6 @@ CONFIG_SYSVIPC=y | |||
| 5 | CONFIG_IKCONFIG=y | 5 | CONFIG_IKCONFIG=y |
| 6 | CONFIG_IKCONFIG_PROC=y | 6 | CONFIG_IKCONFIG_PROC=y |
| 7 | CONFIG_LOG_BUF_SHIFT=14 | 7 | CONFIG_LOG_BUF_SHIFT=14 |
| 8 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
| 9 | CONFIG_BLK_DEV_INITRD=y | 8 | CONFIG_BLK_DEV_INITRD=y |
| 10 | CONFIG_MODULES=y | 9 | CONFIG_MODULES=y |
| 11 | CONFIG_MODULE_FORCE_LOAD=y | 10 | CONFIG_MODULE_FORCE_LOAD=y |
| @@ -56,7 +55,6 @@ CONFIG_IP_PNP=y | |||
| 56 | CONFIG_IP_PNP_DHCP=y | 55 | CONFIG_IP_PNP_DHCP=y |
| 57 | CONFIG_IP_PNP_BOOTP=y | 56 | CONFIG_IP_PNP_BOOTP=y |
| 58 | CONFIG_NET_IPIP=m | 57 | CONFIG_NET_IPIP=m |
| 59 | CONFIG_NET_IPGRE=m | ||
| 60 | CONFIG_INET_AH=m | 58 | CONFIG_INET_AH=m |
| 61 | CONFIG_INET_ESP=m | 59 | CONFIG_INET_ESP=m |
| 62 | CONFIG_INET_IPCOMP=m | 60 | CONFIG_INET_IPCOMP=m |
| @@ -75,18 +73,8 @@ CONFIG_IPV6_TUNNEL=m | |||
| 75 | CONFIG_BRIDGE=m | 73 | CONFIG_BRIDGE=m |
| 76 | CONFIG_VLAN_8021Q=m | 74 | CONFIG_VLAN_8021Q=m |
| 77 | CONFIG_BT=m | 75 | CONFIG_BT=m |
| 78 | CONFIG_BT_L2CAP=m | ||
| 79 | CONFIG_BT_SCO=m | ||
| 80 | CONFIG_BT_RFCOMM=m | ||
| 81 | CONFIG_BT_RFCOMM_TTY=y | ||
| 82 | CONFIG_BT_BNEP=m | ||
| 83 | CONFIG_BT_BNEP_MC_FILTER=y | ||
| 84 | CONFIG_BT_BNEP_PROTO_FILTER=y | ||
| 85 | CONFIG_BT_HIDP=m | ||
| 86 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 76 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
| 87 | CONFIG_MTD=y | 77 | CONFIG_MTD=y |
| 88 | CONFIG_MTD_CONCAT=y | ||
| 89 | CONFIG_MTD_PARTITIONS=y | ||
| 90 | CONFIG_MTD_CMDLINE_PARTS=y | 78 | CONFIG_MTD_CMDLINE_PARTS=y |
| 91 | CONFIG_MTD_AFS_PARTS=y | 79 | CONFIG_MTD_AFS_PARTS=y |
| 92 | CONFIG_MTD_CHAR=y | 80 | CONFIG_MTD_CHAR=y |
| @@ -108,8 +96,6 @@ CONFIG_BLK_DEV_LOOP=y | |||
| 108 | CONFIG_BLK_DEV_NBD=y | 96 | CONFIG_BLK_DEV_NBD=y |
| 109 | CONFIG_BLK_DEV_RAM=y | 97 | CONFIG_BLK_DEV_RAM=y |
| 110 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 98 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
| 111 | CONFIG_ATMEL_TCLIB=y | ||
| 112 | CONFIG_EEPROM_LEGACY=m | ||
| 113 | CONFIG_SCSI=y | 99 | CONFIG_SCSI=y |
| 114 | CONFIG_BLK_DEV_SD=y | 100 | CONFIG_BLK_DEV_SD=y |
| 115 | CONFIG_BLK_DEV_SR=m | 101 | CONFIG_BLK_DEV_SR=m |
| @@ -119,14 +105,23 @@ CONFIG_SCSI_MULTI_LUN=y | |||
| 119 | # CONFIG_SCSI_LOWLEVEL is not set | 105 | # CONFIG_SCSI_LOWLEVEL is not set |
| 120 | CONFIG_NETDEVICES=y | 106 | CONFIG_NETDEVICES=y |
| 121 | CONFIG_TUN=m | 107 | CONFIG_TUN=m |
| 108 | CONFIG_ARM_AT91_ETHER=y | ||
| 122 | CONFIG_PHYLIB=y | 109 | CONFIG_PHYLIB=y |
| 123 | CONFIG_DAVICOM_PHY=y | 110 | CONFIG_DAVICOM_PHY=y |
| 124 | CONFIG_SMSC_PHY=y | 111 | CONFIG_SMSC_PHY=y |
| 125 | CONFIG_MICREL_PHY=y | 112 | CONFIG_MICREL_PHY=y |
| 126 | CONFIG_NET_ETHERNET=y | 113 | CONFIG_PPP=y |
| 127 | CONFIG_ARM_AT91_ETHER=y | 114 | CONFIG_PPP_BSDCOMP=y |
| 128 | # CONFIG_NETDEV_1000 is not set | 115 | CONFIG_PPP_DEFLATE=y |
| 129 | # CONFIG_NETDEV_10000 is not set | 116 | CONFIG_PPP_FILTER=y |
| 117 | CONFIG_PPP_MPPE=m | ||
| 118 | CONFIG_PPP_MULTILINK=y | ||
| 119 | CONFIG_PPPOE=m | ||
| 120 | CONFIG_PPP_ASYNC=y | ||
| 121 | CONFIG_SLIP=m | ||
| 122 | CONFIG_SLIP_COMPRESSED=y | ||
| 123 | CONFIG_SLIP_SMART=y | ||
| 124 | CONFIG_SLIP_MODE_SLIP6=y | ||
| 130 | CONFIG_USB_CATC=m | 125 | CONFIG_USB_CATC=m |
| 131 | CONFIG_USB_KAWETH=m | 126 | CONFIG_USB_KAWETH=m |
| 132 | CONFIG_USB_PEGASUS=m | 127 | CONFIG_USB_PEGASUS=m |
| @@ -139,18 +134,6 @@ CONFIG_USB_NET_RNDIS_HOST=m | |||
| 139 | CONFIG_USB_ALI_M5632=y | 134 | CONFIG_USB_ALI_M5632=y |
| 140 | CONFIG_USB_AN2720=y | 135 | CONFIG_USB_AN2720=y |
| 141 | CONFIG_USB_EPSON2888=y | 136 | CONFIG_USB_EPSON2888=y |
| 142 | CONFIG_PPP=y | ||
| 143 | CONFIG_PPP_MULTILINK=y | ||
| 144 | CONFIG_PPP_FILTER=y | ||
| 145 | CONFIG_PPP_ASYNC=y | ||
| 146 | CONFIG_PPP_DEFLATE=y | ||
| 147 | CONFIG_PPP_BSDCOMP=y | ||
| 148 | CONFIG_PPP_MPPE=m | ||
| 149 | CONFIG_PPPOE=m | ||
| 150 | CONFIG_SLIP=m | ||
| 151 | CONFIG_SLIP_COMPRESSED=y | ||
| 152 | CONFIG_SLIP_SMART=y | ||
| 153 | CONFIG_SLIP_MODE_SLIP6=y | ||
| 154 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | 137 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set |
| 155 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 | 138 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 |
| 156 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 | 139 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 |
| @@ -158,9 +141,9 @@ CONFIG_INPUT_EVDEV=y | |||
| 158 | CONFIG_KEYBOARD_GPIO=y | 141 | CONFIG_KEYBOARD_GPIO=y |
| 159 | # CONFIG_INPUT_MOUSE is not set | 142 | # CONFIG_INPUT_MOUSE is not set |
| 160 | CONFIG_INPUT_TOUCHSCREEN=y | 143 | CONFIG_INPUT_TOUCHSCREEN=y |
| 144 | CONFIG_LEGACY_PTY_COUNT=32 | ||
| 161 | CONFIG_SERIAL_ATMEL=y | 145 | CONFIG_SERIAL_ATMEL=y |
| 162 | CONFIG_SERIAL_ATMEL_CONSOLE=y | 146 | CONFIG_SERIAL_ATMEL_CONSOLE=y |
| 163 | CONFIG_LEGACY_PTY_COUNT=32 | ||
| 164 | CONFIG_HW_RANDOM=y | 147 | CONFIG_HW_RANDOM=y |
| 165 | CONFIG_I2C=y | 148 | CONFIG_I2C=y |
| 166 | CONFIG_I2C_CHARDEV=y | 149 | CONFIG_I2C_CHARDEV=y |
| @@ -290,7 +273,6 @@ CONFIG_NFS_V3_ACL=y | |||
| 290 | CONFIG_NFS_V4=y | 273 | CONFIG_NFS_V4=y |
| 291 | CONFIG_ROOT_NFS=y | 274 | CONFIG_ROOT_NFS=y |
| 292 | CONFIG_NFSD=y | 275 | CONFIG_NFSD=y |
| 293 | CONFIG_SMB_FS=m | ||
| 294 | CONFIG_CIFS=m | 276 | CONFIG_CIFS=m |
| 295 | CONFIG_PARTITION_ADVANCED=y | 277 | CONFIG_PARTITION_ADVANCED=y |
| 296 | CONFIG_MAC_PARTITION=y | 278 | CONFIG_MAC_PARTITION=y |
| @@ -335,7 +317,6 @@ CONFIG_NLS_UTF8=y | |||
| 335 | CONFIG_MAGIC_SYSRQ=y | 317 | CONFIG_MAGIC_SYSRQ=y |
| 336 | CONFIG_DEBUG_FS=y | 318 | CONFIG_DEBUG_FS=y |
| 337 | CONFIG_DEBUG_KERNEL=y | 319 | CONFIG_DEBUG_KERNEL=y |
| 338 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
| 339 | # CONFIG_FTRACE is not set | 320 | # CONFIG_FTRACE is not set |
| 340 | CONFIG_CRYPTO_PCBC=y | 321 | CONFIG_CRYPTO_PCBC=y |
| 341 | CONFIG_CRYPTO_SHA1=y | 322 | CONFIG_CRYPTO_SHA1=y |
diff --git a/arch/arm/configs/at91sam9260ek_defconfig b/arch/arm/configs/at91sam9260_defconfig index f8a9226413bf..505b3765f87e 100644 --- a/arch/arm/configs/at91sam9260ek_defconfig +++ b/arch/arm/configs/at91sam9260_defconfig | |||
| @@ -12,11 +12,23 @@ CONFIG_MODULE_UNLOAD=y | |||
| 12 | # CONFIG_IOSCHED_CFQ is not set | 12 | # CONFIG_IOSCHED_CFQ is not set |
| 13 | CONFIG_ARCH_AT91=y | 13 | CONFIG_ARCH_AT91=y |
| 14 | CONFIG_ARCH_AT91SAM9260=y | 14 | CONFIG_ARCH_AT91SAM9260=y |
| 15 | CONFIG_ARCH_AT91SAM9260_SAM9XE=y | ||
| 15 | CONFIG_MACH_AT91SAM9260EK=y | 16 | CONFIG_MACH_AT91SAM9260EK=y |
| 17 | CONFIG_MACH_CAM60=y | ||
| 18 | CONFIG_MACH_SAM9_L9260=y | ||
| 19 | CONFIG_MACH_AFEB9260=y | ||
| 20 | CONFIG_MACH_USB_A9260=y | ||
| 21 | CONFIG_MACH_QIL_A9260=y | ||
| 22 | CONFIG_MACH_CPU9260=y | ||
| 23 | CONFIG_MACH_FLEXIBITY=y | ||
| 24 | CONFIG_MACH_SNAPPER_9260=y | ||
| 25 | CONFIG_MACH_AT91SAM_DT=y | ||
| 16 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | 26 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y |
| 17 | # CONFIG_ARM_THUMB is not set | 27 | # CONFIG_ARM_THUMB is not set |
| 18 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 28 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
| 19 | CONFIG_ZBOOT_ROM_BSS=0x0 | 29 | CONFIG_ZBOOT_ROM_BSS=0x0 |
| 30 | CONFIG_ARM_APPENDED_DTB=y | ||
| 31 | CONFIG_ARM_ATAG_DTB_COMPAT=y | ||
| 20 | CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw" | 32 | CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw" |
| 21 | CONFIG_FPE_NWFPE=y | 33 | CONFIG_FPE_NWFPE=y |
| 22 | CONFIG_NET=y | 34 | CONFIG_NET=y |
| @@ -33,12 +45,10 @@ CONFIG_IP_PNP_BOOTP=y | |||
| 33 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 45 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
| 34 | CONFIG_BLK_DEV_RAM=y | 46 | CONFIG_BLK_DEV_RAM=y |
| 35 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 47 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
| 36 | CONFIG_ATMEL_SSC=y | ||
| 37 | CONFIG_SCSI=y | 48 | CONFIG_SCSI=y |
| 38 | CONFIG_BLK_DEV_SD=y | 49 | CONFIG_BLK_DEV_SD=y |
| 39 | CONFIG_SCSI_MULTI_LUN=y | 50 | CONFIG_SCSI_MULTI_LUN=y |
| 40 | CONFIG_NETDEVICES=y | 51 | CONFIG_NETDEVICES=y |
| 41 | CONFIG_NET_ETHERNET=y | ||
| 42 | CONFIG_MII=y | 52 | CONFIG_MII=y |
| 43 | CONFIG_MACB=y | 53 | CONFIG_MACB=y |
| 44 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | 54 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set |
| @@ -55,7 +65,6 @@ CONFIG_I2C_GPIO=y | |||
| 55 | CONFIG_WATCHDOG=y | 65 | CONFIG_WATCHDOG=y |
| 56 | CONFIG_WATCHDOG_NOWAYOUT=y | 66 | CONFIG_WATCHDOG_NOWAYOUT=y |
| 57 | CONFIG_AT91SAM9X_WATCHDOG=y | 67 | CONFIG_AT91SAM9X_WATCHDOG=y |
| 58 | # CONFIG_VGA_CONSOLE is not set | ||
| 59 | # CONFIG_USB_HID is not set | 68 | # CONFIG_USB_HID is not set |
| 60 | CONFIG_USB=y | 69 | CONFIG_USB=y |
| 61 | CONFIG_USB_DEVICEFS=y | 70 | CONFIG_USB_DEVICEFS=y |
| @@ -71,7 +80,6 @@ CONFIG_USB_G_SERIAL=m | |||
| 71 | CONFIG_RTC_CLASS=y | 80 | CONFIG_RTC_CLASS=y |
| 72 | CONFIG_RTC_DRV_AT91SAM9=y | 81 | CONFIG_RTC_DRV_AT91SAM9=y |
| 73 | CONFIG_EXT2_FS=y | 82 | CONFIG_EXT2_FS=y |
| 74 | CONFIG_INOTIFY=y | ||
| 75 | CONFIG_VFAT_FS=y | 83 | CONFIG_VFAT_FS=y |
| 76 | CONFIG_TMPFS=y | 84 | CONFIG_TMPFS=y |
| 77 | CONFIG_CRAMFS=y | 85 | CONFIG_CRAMFS=y |
diff --git a/arch/arm/configs/at91sam9g20ek_defconfig b/arch/arm/configs/at91sam9g20_defconfig index 9e90e6d79297..9123568d9a8d 100644 --- a/arch/arm/configs/at91sam9g20ek_defconfig +++ b/arch/arm/configs/at91sam9g20_defconfig | |||
| @@ -14,6 +14,15 @@ CONFIG_ARCH_AT91=y | |||
| 14 | CONFIG_ARCH_AT91SAM9G20=y | 14 | CONFIG_ARCH_AT91SAM9G20=y |
| 15 | CONFIG_MACH_AT91SAM9G20EK=y | 15 | CONFIG_MACH_AT91SAM9G20EK=y |
| 16 | CONFIG_MACH_AT91SAM9G20EK_2MMC=y | 16 | CONFIG_MACH_AT91SAM9G20EK_2MMC=y |
| 17 | CONFIG_MACH_CPU9G20=y | ||
| 18 | CONFIG_MACH_ACMENETUSFOXG20=y | ||
| 19 | CONFIG_MACH_PORTUXG20=y | ||
| 20 | CONFIG_MACH_STAMP9G20=y | ||
| 21 | CONFIG_MACH_PCONTROL_G20=y | ||
| 22 | CONFIG_MACH_GSIA18S=y | ||
| 23 | CONFIG_MACH_USB_A9G20=y | ||
| 24 | CONFIG_MACH_SNAPPER_9260=y | ||
| 25 | CONFIG_MACH_AT91SAM_DT=y | ||
| 17 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | 26 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y |
| 18 | # CONFIG_ARM_THUMB is not set | 27 | # CONFIG_ARM_THUMB is not set |
| 19 | CONFIG_AEABI=y | 28 | CONFIG_AEABI=y |
| @@ -21,9 +30,10 @@ CONFIG_LEDS=y | |||
| 21 | CONFIG_LEDS_CPU=y | 30 | CONFIG_LEDS_CPU=y |
| 22 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 31 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
| 23 | CONFIG_ZBOOT_ROM_BSS=0x0 | 32 | CONFIG_ZBOOT_ROM_BSS=0x0 |
| 33 | CONFIG_ARM_APPENDED_DTB=y | ||
| 34 | CONFIG_ARM_ATAG_DTB_COMPAT=y | ||
| 24 | CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw" | 35 | CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw" |
| 25 | CONFIG_FPE_NWFPE=y | 36 | CONFIG_FPE_NWFPE=y |
| 26 | CONFIG_PM=y | ||
| 27 | CONFIG_NET=y | 37 | CONFIG_NET=y |
| 28 | CONFIG_PACKET=y | 38 | CONFIG_PACKET=y |
| 29 | CONFIG_UNIX=y | 39 | CONFIG_UNIX=y |
| @@ -37,8 +47,6 @@ CONFIG_IP_PNP_BOOTP=y | |||
| 37 | # CONFIG_IPV6 is not set | 47 | # CONFIG_IPV6 is not set |
| 38 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 48 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
| 39 | CONFIG_MTD=y | 49 | CONFIG_MTD=y |
| 40 | CONFIG_MTD_CONCAT=y | ||
| 41 | CONFIG_MTD_PARTITIONS=y | ||
| 42 | CONFIG_MTD_CMDLINE_PARTS=y | 50 | CONFIG_MTD_CMDLINE_PARTS=y |
| 43 | CONFIG_MTD_CHAR=y | 51 | CONFIG_MTD_CHAR=y |
| 44 | CONFIG_MTD_BLOCK=y | 52 | CONFIG_MTD_BLOCK=y |
| @@ -48,17 +56,13 @@ CONFIG_MTD_NAND_ATMEL=y | |||
| 48 | CONFIG_BLK_DEV_LOOP=y | 56 | CONFIG_BLK_DEV_LOOP=y |
| 49 | CONFIG_BLK_DEV_RAM=y | 57 | CONFIG_BLK_DEV_RAM=y |
| 50 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 58 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
| 51 | CONFIG_ATMEL_SSC=y | ||
| 52 | CONFIG_SCSI=y | 59 | CONFIG_SCSI=y |
| 53 | CONFIG_BLK_DEV_SD=y | 60 | CONFIG_BLK_DEV_SD=y |
| 54 | CONFIG_SCSI_MULTI_LUN=y | 61 | CONFIG_SCSI_MULTI_LUN=y |
| 55 | # CONFIG_SCSI_LOWLEVEL is not set | 62 | # CONFIG_SCSI_LOWLEVEL is not set |
| 56 | CONFIG_NETDEVICES=y | 63 | CONFIG_NETDEVICES=y |
| 57 | CONFIG_NET_ETHERNET=y | ||
| 58 | CONFIG_MII=y | 64 | CONFIG_MII=y |
| 59 | CONFIG_MACB=y | 65 | CONFIG_MACB=y |
| 60 | # CONFIG_NETDEV_1000 is not set | ||
| 61 | # CONFIG_NETDEV_10000 is not set | ||
| 62 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | 66 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set |
| 63 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=320 | 67 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=320 |
| 64 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 | 68 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 |
| @@ -66,15 +70,14 @@ CONFIG_INPUT_EVDEV=y | |||
| 66 | # CONFIG_KEYBOARD_ATKBD is not set | 70 | # CONFIG_KEYBOARD_ATKBD is not set |
| 67 | CONFIG_KEYBOARD_GPIO=y | 71 | CONFIG_KEYBOARD_GPIO=y |
| 68 | # CONFIG_INPUT_MOUSE is not set | 72 | # CONFIG_INPUT_MOUSE is not set |
| 73 | CONFIG_LEGACY_PTY_COUNT=16 | ||
| 69 | CONFIG_SERIAL_ATMEL=y | 74 | CONFIG_SERIAL_ATMEL=y |
| 70 | CONFIG_SERIAL_ATMEL_CONSOLE=y | 75 | CONFIG_SERIAL_ATMEL_CONSOLE=y |
| 71 | CONFIG_LEGACY_PTY_COUNT=16 | ||
| 72 | CONFIG_HW_RANDOM=y | 76 | CONFIG_HW_RANDOM=y |
| 73 | CONFIG_SPI=y | 77 | CONFIG_SPI=y |
| 74 | CONFIG_SPI_ATMEL=y | 78 | CONFIG_SPI_ATMEL=y |
| 75 | CONFIG_SPI_SPIDEV=y | 79 | CONFIG_SPI_SPIDEV=y |
| 76 | # CONFIG_HWMON is not set | 80 | # CONFIG_HWMON is not set |
| 77 | # CONFIG_VGA_CONSOLE is not set | ||
| 78 | CONFIG_SOUND=y | 81 | CONFIG_SOUND=y |
| 79 | CONFIG_SND=y | 82 | CONFIG_SND=y |
| 80 | CONFIG_SND_SEQUENCER=y | 83 | CONFIG_SND_SEQUENCER=y |
| @@ -82,7 +85,6 @@ CONFIG_SND_MIXER_OSS=y | |||
| 82 | CONFIG_SND_PCM_OSS=y | 85 | CONFIG_SND_PCM_OSS=y |
| 83 | CONFIG_SND_SEQUENCER_OSS=y | 86 | CONFIG_SND_SEQUENCER_OSS=y |
| 84 | # CONFIG_SND_VERBOSE_PROCFS is not set | 87 | # CONFIG_SND_VERBOSE_PROCFS is not set |
| 85 | CONFIG_SND_AT73C213=y | ||
| 86 | CONFIG_USB=y | 88 | CONFIG_USB=y |
| 87 | CONFIG_USB_DEVICEFS=y | 89 | CONFIG_USB_DEVICEFS=y |
| 88 | # CONFIG_USB_DEVICE_CLASS is not set | 90 | # CONFIG_USB_DEVICE_CLASS is not set |
| @@ -105,7 +107,6 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y | |||
| 105 | CONFIG_RTC_CLASS=y | 107 | CONFIG_RTC_CLASS=y |
| 106 | CONFIG_RTC_DRV_AT91SAM9=y | 108 | CONFIG_RTC_DRV_AT91SAM9=y |
| 107 | CONFIG_EXT2_FS=y | 109 | CONFIG_EXT2_FS=y |
| 108 | CONFIG_INOTIFY=y | ||
| 109 | CONFIG_MSDOS_FS=y | 110 | CONFIG_MSDOS_FS=y |
| 110 | CONFIG_VFAT_FS=y | 111 | CONFIG_VFAT_FS=y |
| 111 | CONFIG_TMPFS=y | 112 | CONFIG_TMPFS=y |
diff --git a/arch/arm/configs/at91sam9g45_defconfig b/arch/arm/configs/at91sam9g45_defconfig index c5876d244f4b..606d48f3b8f8 100644 --- a/arch/arm/configs/at91sam9g45_defconfig +++ b/arch/arm/configs/at91sam9g45_defconfig | |||
| @@ -18,6 +18,7 @@ CONFIG_MODULE_UNLOAD=y | |||
| 18 | CONFIG_ARCH_AT91=y | 18 | CONFIG_ARCH_AT91=y |
| 19 | CONFIG_ARCH_AT91SAM9G45=y | 19 | CONFIG_ARCH_AT91SAM9G45=y |
| 20 | CONFIG_MACH_AT91SAM9M10G45EK=y | 20 | CONFIG_MACH_AT91SAM9M10G45EK=y |
| 21 | CONFIG_MACH_AT91SAM_DT=y | ||
| 21 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | 22 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y |
| 22 | CONFIG_AT91_SLOW_CLOCK=y | 23 | CONFIG_AT91_SLOW_CLOCK=y |
| 23 | CONFIG_AEABI=y | 24 | CONFIG_AEABI=y |
| @@ -73,11 +74,8 @@ CONFIG_SCSI_MULTI_LUN=y | |||
| 73 | # CONFIG_SCSI_LOWLEVEL is not set | 74 | # CONFIG_SCSI_LOWLEVEL is not set |
| 74 | CONFIG_NETDEVICES=y | 75 | CONFIG_NETDEVICES=y |
| 75 | CONFIG_MII=y | 76 | CONFIG_MII=y |
| 76 | CONFIG_DAVICOM_PHY=y | ||
| 77 | CONFIG_NET_ETHERNET=y | ||
| 78 | CONFIG_MACB=y | 77 | CONFIG_MACB=y |
| 79 | # CONFIG_NETDEV_1000 is not set | 78 | CONFIG_DAVICOM_PHY=y |
| 80 | # CONFIG_NETDEV_10000 is not set | ||
| 81 | CONFIG_LIBERTAS_THINFIRM=m | 79 | CONFIG_LIBERTAS_THINFIRM=m |
| 82 | CONFIG_LIBERTAS_THINFIRM_USB=m | 80 | CONFIG_LIBERTAS_THINFIRM_USB=m |
| 83 | CONFIG_AT76C50X_USB=m | 81 | CONFIG_AT76C50X_USB=m |
| @@ -131,7 +129,6 @@ CONFIG_I2C_GPIO=y | |||
| 131 | CONFIG_SPI=y | 129 | CONFIG_SPI=y |
| 132 | CONFIG_SPI_ATMEL=y | 130 | CONFIG_SPI_ATMEL=y |
| 133 | # CONFIG_HWMON is not set | 131 | # CONFIG_HWMON is not set |
| 134 | # CONFIG_MFD_SUPPORT is not set | ||
| 135 | CONFIG_FB=y | 132 | CONFIG_FB=y |
| 136 | CONFIG_FB_ATMEL=y | 133 | CONFIG_FB_ATMEL=y |
| 137 | CONFIG_FB_UDL=m | 134 | CONFIG_FB_UDL=m |
diff --git a/arch/arm/configs/at91sam9rlek_defconfig b/arch/arm/configs/at91sam9rl_defconfig index 75621e4d03fc..ad562ee64209 100644 --- a/arch/arm/configs/at91sam9rlek_defconfig +++ b/arch/arm/configs/at91sam9rl_defconfig | |||
| @@ -23,8 +23,6 @@ CONFIG_NET=y | |||
| 23 | CONFIG_UNIX=y | 23 | CONFIG_UNIX=y |
| 24 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 24 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
| 25 | CONFIG_MTD=y | 25 | CONFIG_MTD=y |
| 26 | CONFIG_MTD_CONCAT=y | ||
| 27 | CONFIG_MTD_PARTITIONS=y | ||
| 28 | CONFIG_MTD_CMDLINE_PARTS=y | 26 | CONFIG_MTD_CMDLINE_PARTS=y |
| 29 | CONFIG_MTD_CHAR=y | 27 | CONFIG_MTD_CHAR=y |
| 30 | CONFIG_MTD_BLOCK=y | 28 | CONFIG_MTD_BLOCK=y |
| @@ -35,7 +33,6 @@ CONFIG_BLK_DEV_LOOP=y | |||
| 35 | CONFIG_BLK_DEV_RAM=y | 33 | CONFIG_BLK_DEV_RAM=y |
| 36 | CONFIG_BLK_DEV_RAM_COUNT=4 | 34 | CONFIG_BLK_DEV_RAM_COUNT=4 |
| 37 | CONFIG_BLK_DEV_RAM_SIZE=24576 | 35 | CONFIG_BLK_DEV_RAM_SIZE=24576 |
| 38 | CONFIG_ATMEL_SSC=y | ||
| 39 | CONFIG_SCSI=y | 36 | CONFIG_SCSI=y |
| 40 | CONFIG_BLK_DEV_SD=y | 37 | CONFIG_BLK_DEV_SD=y |
| 41 | CONFIG_SCSI_MULTI_LUN=y | 38 | CONFIG_SCSI_MULTI_LUN=y |
| @@ -62,13 +59,11 @@ CONFIG_WATCHDOG_NOWAYOUT=y | |||
| 62 | CONFIG_AT91SAM9X_WATCHDOG=y | 59 | CONFIG_AT91SAM9X_WATCHDOG=y |
| 63 | CONFIG_FB=y | 60 | CONFIG_FB=y |
| 64 | CONFIG_FB_ATMEL=y | 61 | CONFIG_FB_ATMEL=y |
| 65 | # CONFIG_VGA_CONSOLE is not set | ||
| 66 | CONFIG_MMC=y | 62 | CONFIG_MMC=y |
| 67 | CONFIG_MMC_AT91=m | 63 | CONFIG_MMC_AT91=m |
| 68 | CONFIG_RTC_CLASS=y | 64 | CONFIG_RTC_CLASS=y |
| 69 | CONFIG_RTC_DRV_AT91SAM9=y | 65 | CONFIG_RTC_DRV_AT91SAM9=y |
| 70 | CONFIG_EXT2_FS=y | 66 | CONFIG_EXT2_FS=y |
| 71 | CONFIG_INOTIFY=y | ||
| 72 | CONFIG_MSDOS_FS=y | 67 | CONFIG_MSDOS_FS=y |
| 73 | CONFIG_VFAT_FS=y | 68 | CONFIG_VFAT_FS=y |
| 74 | CONFIG_TMPFS=y | 69 | CONFIG_TMPFS=y |
diff --git a/arch/arm/configs/ezx_defconfig b/arch/arm/configs/ezx_defconfig index 227a477346ed..d95763d5f0d8 100644 --- a/arch/arm/configs/ezx_defconfig +++ b/arch/arm/configs/ezx_defconfig | |||
| @@ -287,7 +287,7 @@ CONFIG_USB=y | |||
| 287 | # CONFIG_USB_DEVICE_CLASS is not set | 287 | # CONFIG_USB_DEVICE_CLASS is not set |
| 288 | CONFIG_USB_OHCI_HCD=y | 288 | CONFIG_USB_OHCI_HCD=y |
| 289 | CONFIG_USB_GADGET=y | 289 | CONFIG_USB_GADGET=y |
| 290 | CONFIG_USB_GADGET_PXA27X=y | 290 | CONFIG_USB_PXA27X=y |
| 291 | CONFIG_USB_ETH=m | 291 | CONFIG_USB_ETH=m |
| 292 | # CONFIG_USB_ETH_RNDIS is not set | 292 | # CONFIG_USB_ETH_RNDIS is not set |
| 293 | CONFIG_MMC=y | 293 | CONFIG_MMC=y |
diff --git a/arch/arm/configs/imote2_defconfig b/arch/arm/configs/imote2_defconfig index 176ec22af034..fd996bb13022 100644 --- a/arch/arm/configs/imote2_defconfig +++ b/arch/arm/configs/imote2_defconfig | |||
| @@ -263,7 +263,7 @@ CONFIG_USB=y | |||
| 263 | # CONFIG_USB_DEVICE_CLASS is not set | 263 | # CONFIG_USB_DEVICE_CLASS is not set |
| 264 | CONFIG_USB_OHCI_HCD=y | 264 | CONFIG_USB_OHCI_HCD=y |
| 265 | CONFIG_USB_GADGET=y | 265 | CONFIG_USB_GADGET=y |
| 266 | CONFIG_USB_GADGET_PXA27X=y | 266 | CONFIG_USB_PXA27X=y |
| 267 | CONFIG_USB_ETH=m | 267 | CONFIG_USB_ETH=m |
| 268 | # CONFIG_USB_ETH_RNDIS is not set | 268 | # CONFIG_USB_ETH_RNDIS is not set |
| 269 | CONFIG_MMC=y | 269 | CONFIG_MMC=y |
diff --git a/arch/arm/configs/magician_defconfig b/arch/arm/configs/magician_defconfig index a88e64d4e9a5..443675d317e6 100644 --- a/arch/arm/configs/magician_defconfig +++ b/arch/arm/configs/magician_defconfig | |||
| @@ -132,7 +132,7 @@ CONFIG_USB_MON=m | |||
| 132 | CONFIG_USB_OHCI_HCD=y | 132 | CONFIG_USB_OHCI_HCD=y |
| 133 | CONFIG_USB_GADGET=y | 133 | CONFIG_USB_GADGET=y |
| 134 | CONFIG_USB_GADGET_VBUS_DRAW=500 | 134 | CONFIG_USB_GADGET_VBUS_DRAW=500 |
| 135 | CONFIG_USB_GADGET_PXA27X=y | 135 | CONFIG_USB_PXA27X=y |
| 136 | CONFIG_USB_ETH=m | 136 | CONFIG_USB_ETH=m |
| 137 | # CONFIG_USB_ETH_RNDIS is not set | 137 | # CONFIG_USB_ETH_RNDIS is not set |
| 138 | CONFIG_USB_GADGETFS=m | 138 | CONFIG_USB_GADGETFS=m |
diff --git a/arch/arm/configs/omap1_defconfig b/arch/arm/configs/omap1_defconfig index 7b63462b349d..a7e777581378 100644 --- a/arch/arm/configs/omap1_defconfig +++ b/arch/arm/configs/omap1_defconfig | |||
| @@ -48,7 +48,6 @@ CONFIG_MACH_SX1=y | |||
| 48 | CONFIG_MACH_NOKIA770=y | 48 | CONFIG_MACH_NOKIA770=y |
| 49 | CONFIG_MACH_AMS_DELTA=y | 49 | CONFIG_MACH_AMS_DELTA=y |
| 50 | CONFIG_MACH_OMAP_GENERIC=y | 50 | CONFIG_MACH_OMAP_GENERIC=y |
| 51 | CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER=y | ||
| 52 | CONFIG_OMAP_ARM_216MHZ=y | 51 | CONFIG_OMAP_ARM_216MHZ=y |
| 53 | CONFIG_OMAP_ARM_195MHZ=y | 52 | CONFIG_OMAP_ARM_195MHZ=y |
| 54 | CONFIG_OMAP_ARM_192MHZ=y | 53 | CONFIG_OMAP_ARM_192MHZ=y |
diff --git a/arch/arm/configs/u300_defconfig b/arch/arm/configs/u300_defconfig index 4a5a12681be2..374000ec4e4e 100644 --- a/arch/arm/configs/u300_defconfig +++ b/arch/arm/configs/u300_defconfig | |||
| @@ -14,8 +14,6 @@ CONFIG_MODULE_UNLOAD=y | |||
| 14 | CONFIG_ARCH_U300=y | 14 | CONFIG_ARCH_U300=y |
| 15 | CONFIG_MACH_U300=y | 15 | CONFIG_MACH_U300=y |
| 16 | CONFIG_MACH_U300_BS335=y | 16 | CONFIG_MACH_U300_BS335=y |
| 17 | CONFIG_MACH_U300_DUAL_RAM=y | ||
| 18 | CONFIG_U300_DEBUG=y | ||
| 19 | CONFIG_MACH_U300_SPIDUMMY=y | 17 | CONFIG_MACH_U300_SPIDUMMY=y |
| 20 | CONFIG_NO_HZ=y | 18 | CONFIG_NO_HZ=y |
| 21 | CONFIG_HIGH_RES_TIMERS=y | 19 | CONFIG_HIGH_RES_TIMERS=y |
| @@ -26,19 +24,21 @@ CONFIG_ZBOOT_ROM_BSS=0x0 | |||
| 26 | CONFIG_CMDLINE="root=/dev/ram0 rw rootfstype=rootfs console=ttyAMA0,115200n8 lpj=515072" | 24 | CONFIG_CMDLINE="root=/dev/ram0 rw rootfstype=rootfs console=ttyAMA0,115200n8 lpj=515072" |
| 27 | CONFIG_CPU_IDLE=y | 25 | CONFIG_CPU_IDLE=y |
| 28 | CONFIG_FPE_NWFPE=y | 26 | CONFIG_FPE_NWFPE=y |
| 29 | CONFIG_PM=y | ||
| 30 | # CONFIG_SUSPEND is not set | 27 | # CONFIG_SUSPEND is not set |
| 31 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 28 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
| 32 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 29 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
| 33 | # CONFIG_MISC_DEVICES is not set | 30 | CONFIG_MTD=y |
| 31 | CONFIG_MTD_CMDLINE_PARTS=y | ||
| 32 | CONFIG_MTD_NAND=y | ||
| 33 | CONFIG_MTD_NAND_FSMC=y | ||
| 34 | # CONFIG_INPUT_MOUSEDEV is not set | 34 | # CONFIG_INPUT_MOUSEDEV is not set |
| 35 | CONFIG_INPUT_EVDEV=y | 35 | CONFIG_INPUT_EVDEV=y |
| 36 | # CONFIG_KEYBOARD_ATKBD is not set | 36 | # CONFIG_KEYBOARD_ATKBD is not set |
| 37 | # CONFIG_INPUT_MOUSE is not set | 37 | # CONFIG_INPUT_MOUSE is not set |
| 38 | # CONFIG_SERIO is not set | 38 | # CONFIG_SERIO is not set |
| 39 | CONFIG_LEGACY_PTY_COUNT=16 | ||
| 39 | CONFIG_SERIAL_AMBA_PL011=y | 40 | CONFIG_SERIAL_AMBA_PL011=y |
| 40 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | 41 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y |
| 41 | CONFIG_LEGACY_PTY_COUNT=16 | ||
| 42 | # CONFIG_HW_RANDOM is not set | 42 | # CONFIG_HW_RANDOM is not set |
| 43 | CONFIG_I2C=y | 43 | CONFIG_I2C=y |
| 44 | # CONFIG_HWMON is not set | 44 | # CONFIG_HWMON is not set |
| @@ -51,6 +51,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y | |||
| 51 | # CONFIG_HID_SUPPORT is not set | 51 | # CONFIG_HID_SUPPORT is not set |
| 52 | # CONFIG_USB_SUPPORT is not set | 52 | # CONFIG_USB_SUPPORT is not set |
| 53 | CONFIG_MMC=y | 53 | CONFIG_MMC=y |
| 54 | CONFIG_MMC_CLKGATE=y | ||
| 54 | CONFIG_MMC_ARMMMCI=y | 55 | CONFIG_MMC_ARMMMCI=y |
| 55 | CONFIG_RTC_CLASS=y | 56 | CONFIG_RTC_CLASS=y |
| 56 | # CONFIG_RTC_HCTOSYS is not set | 57 | # CONFIG_RTC_HCTOSYS is not set |
| @@ -65,10 +66,8 @@ CONFIG_NLS_CODEPAGE_437=y | |||
| 65 | CONFIG_NLS_ISO8859_1=y | 66 | CONFIG_NLS_ISO8859_1=y |
| 66 | CONFIG_PRINTK_TIME=y | 67 | CONFIG_PRINTK_TIME=y |
| 67 | CONFIG_DEBUG_FS=y | 68 | CONFIG_DEBUG_FS=y |
| 68 | CONFIG_DEBUG_KERNEL=y | ||
| 69 | # CONFIG_SCHED_DEBUG is not set | 69 | # CONFIG_SCHED_DEBUG is not set |
| 70 | CONFIG_TIMER_STATS=y | 70 | CONFIG_TIMER_STATS=y |
| 71 | # CONFIG_DEBUG_PREEMPT is not set | 71 | # CONFIG_DEBUG_PREEMPT is not set |
| 72 | CONFIG_DEBUG_INFO=y | 72 | CONFIG_DEBUG_INFO=y |
| 73 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
| 74 | # CONFIG_CRC32 is not set | 73 | # CONFIG_CRC32 is not set |
diff --git a/arch/arm/configs/u8500_defconfig b/arch/arm/configs/u8500_defconfig index 97d31a4663da..2d7b6e7b7271 100644 --- a/arch/arm/configs/u8500_defconfig +++ b/arch/arm/configs/u8500_defconfig | |||
| @@ -10,7 +10,7 @@ CONFIG_MODULE_UNLOAD=y | |||
| 10 | CONFIG_ARCH_U8500=y | 10 | CONFIG_ARCH_U8500=y |
| 11 | CONFIG_UX500_SOC_DB5500=y | 11 | CONFIG_UX500_SOC_DB5500=y |
| 12 | CONFIG_UX500_SOC_DB8500=y | 12 | CONFIG_UX500_SOC_DB8500=y |
| 13 | CONFIG_MACH_U8500=y | 13 | CONFIG_MACH_HREFV60=y |
| 14 | CONFIG_MACH_SNOWBALL=y | 14 | CONFIG_MACH_SNOWBALL=y |
| 15 | CONFIG_MACH_U5500=y | 15 | CONFIG_MACH_U5500=y |
| 16 | CONFIG_NO_HZ=y | 16 | CONFIG_NO_HZ=y |
| @@ -24,6 +24,7 @@ CONFIG_CPU_FREQ=y | |||
| 24 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 24 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
| 25 | CONFIG_VFP=y | 25 | CONFIG_VFP=y |
| 26 | CONFIG_NEON=y | 26 | CONFIG_NEON=y |
| 27 | CONFIG_PM_RUNTIME=y | ||
| 27 | CONFIG_NET=y | 28 | CONFIG_NET=y |
| 28 | CONFIG_PACKET=y | 29 | CONFIG_PACKET=y |
| 29 | CONFIG_UNIX=y | 30 | CONFIG_UNIX=y |
| @@ -41,11 +42,8 @@ CONFIG_MISC_DEVICES=y | |||
| 41 | CONFIG_AB8500_PWM=y | 42 | CONFIG_AB8500_PWM=y |
| 42 | CONFIG_SENSORS_BH1780=y | 43 | CONFIG_SENSORS_BH1780=y |
| 43 | CONFIG_NETDEVICES=y | 44 | CONFIG_NETDEVICES=y |
| 44 | CONFIG_SMSC_PHY=y | ||
| 45 | CONFIG_NET_ETHERNET=y | ||
| 46 | CONFIG_SMSC911X=y | 45 | CONFIG_SMSC911X=y |
| 47 | # CONFIG_NETDEV_1000 is not set | 46 | CONFIG_SMSC_PHY=y |
| 48 | # CONFIG_NETDEV_10000 is not set | ||
| 49 | # CONFIG_WLAN is not set | 47 | # CONFIG_WLAN is not set |
| 50 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | 48 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set |
| 51 | CONFIG_INPUT_EVDEV=y | 49 | CONFIG_INPUT_EVDEV=y |
| @@ -72,15 +70,12 @@ CONFIG_SPI=y | |||
| 72 | CONFIG_SPI_PL022=y | 70 | CONFIG_SPI_PL022=y |
| 73 | CONFIG_GPIO_STMPE=y | 71 | CONFIG_GPIO_STMPE=y |
| 74 | CONFIG_GPIO_TC3589X=y | 72 | CONFIG_GPIO_TC3589X=y |
| 75 | # CONFIG_HWMON is not set | ||
| 76 | CONFIG_MFD_STMPE=y | 73 | CONFIG_MFD_STMPE=y |
| 77 | CONFIG_MFD_TC3589X=y | 74 | CONFIG_MFD_TC3589X=y |
| 75 | CONFIG_AB5500_CORE=y | ||
| 78 | CONFIG_AB8500_CORE=y | 76 | CONFIG_AB8500_CORE=y |
| 79 | CONFIG_REGULATOR_AB8500=y | 77 | CONFIG_REGULATOR_AB8500=y |
| 80 | # CONFIG_HID_SUPPORT is not set | 78 | # CONFIG_HID_SUPPORT is not set |
| 81 | CONFIG_USB_MUSB_HDRC=y | ||
| 82 | CONFIG_USB_GADGET_MUSB_HDRC=y | ||
| 83 | CONFIG_MUSB_PIO_ONLY=y | ||
| 84 | CONFIG_USB_GADGET=y | 79 | CONFIG_USB_GADGET=y |
| 85 | CONFIG_AB8500_USB=y | 80 | CONFIG_AB8500_USB=y |
| 86 | CONFIG_MMC=y | 81 | CONFIG_MMC=y |
| @@ -97,6 +92,7 @@ CONFIG_DMADEVICES=y | |||
| 97 | CONFIG_STE_DMA40=y | 92 | CONFIG_STE_DMA40=y |
| 98 | CONFIG_STAGING=y | 93 | CONFIG_STAGING=y |
| 99 | CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=y | 94 | CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=y |
| 95 | CONFIG_HSEM_U8500=y | ||
| 100 | CONFIG_EXT2_FS=y | 96 | CONFIG_EXT2_FS=y |
| 101 | CONFIG_EXT2_FS_XATTR=y | 97 | CONFIG_EXT2_FS_XATTR=y |
| 102 | CONFIG_EXT2_FS_POSIX_ACL=y | 98 | CONFIG_EXT2_FS_POSIX_ACL=y |
diff --git a/arch/arm/configs/zeus_defconfig b/arch/arm/configs/zeus_defconfig index 59577ad3f4ef..547a3c1e59db 100644 --- a/arch/arm/configs/zeus_defconfig +++ b/arch/arm/configs/zeus_defconfig | |||
| @@ -140,7 +140,7 @@ CONFIG_USB_SERIAL=m | |||
| 140 | CONFIG_USB_SERIAL_GENERIC=y | 140 | CONFIG_USB_SERIAL_GENERIC=y |
| 141 | CONFIG_USB_SERIAL_MCT_U232=m | 141 | CONFIG_USB_SERIAL_MCT_U232=m |
| 142 | CONFIG_USB_GADGET=m | 142 | CONFIG_USB_GADGET=m |
| 143 | CONFIG_USB_GADGET_PXA27X=y | 143 | CONFIG_USB_PXA27X=y |
| 144 | CONFIG_USB_ETH=m | 144 | CONFIG_USB_ETH=m |
| 145 | CONFIG_USB_GADGETFS=m | 145 | CONFIG_USB_GADGETFS=m |
| 146 | CONFIG_USB_FILE_STORAGE=m | 146 | CONFIG_USB_FILE_STORAGE=m |
diff --git a/arch/arm/include/asm/hardware/cache-l2x0.h b/arch/arm/include/asm/hardware/cache-l2x0.h index 1db1143a9483..7df239bcdf27 100644 --- a/arch/arm/include/asm/hardware/cache-l2x0.h +++ b/arch/arm/include/asm/hardware/cache-l2x0.h | |||
| @@ -20,6 +20,8 @@ | |||
| 20 | #ifndef __ASM_ARM_HARDWARE_L2X0_H | 20 | #ifndef __ASM_ARM_HARDWARE_L2X0_H |
| 21 | #define __ASM_ARM_HARDWARE_L2X0_H | 21 | #define __ASM_ARM_HARDWARE_L2X0_H |
| 22 | 22 | ||
| 23 | #include <linux/errno.h> | ||
| 24 | |||
| 23 | #define L2X0_CACHE_ID 0x000 | 25 | #define L2X0_CACHE_ID 0x000 |
| 24 | #define L2X0_CACHE_TYPE 0x004 | 26 | #define L2X0_CACHE_TYPE 0x004 |
| 25 | #define L2X0_CTRL 0x100 | 27 | #define L2X0_CTRL 0x100 |
diff --git a/arch/arm/include/asm/mach/arch.h b/arch/arm/include/asm/mach/arch.h index 7d19425dd496..2b0efc3104ac 100644 --- a/arch/arm/include/asm/mach/arch.h +++ b/arch/arm/include/asm/mach/arch.h | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | struct tag; | 13 | struct tag; |
| 14 | struct meminfo; | 14 | struct meminfo; |
| 15 | struct sys_timer; | 15 | struct sys_timer; |
| 16 | struct pt_regs; | ||
| 16 | 17 | ||
| 17 | struct machine_desc { | 18 | struct machine_desc { |
| 18 | unsigned int nr; /* architecture number */ | 19 | unsigned int nr; /* architecture number */ |
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h index c60a2944f95b..4a1123783806 100644 --- a/arch/arm/include/asm/unistd.h +++ b/arch/arm/include/asm/unistd.h | |||
| @@ -402,6 +402,8 @@ | |||
| 402 | #define __NR_syncfs (__NR_SYSCALL_BASE+373) | 402 | #define __NR_syncfs (__NR_SYSCALL_BASE+373) |
| 403 | #define __NR_sendmmsg (__NR_SYSCALL_BASE+374) | 403 | #define __NR_sendmmsg (__NR_SYSCALL_BASE+374) |
| 404 | #define __NR_setns (__NR_SYSCALL_BASE+375) | 404 | #define __NR_setns (__NR_SYSCALL_BASE+375) |
| 405 | #define __NR_process_vm_readv (__NR_SYSCALL_BASE+376) | ||
| 406 | #define __NR_process_vm_writev (__NR_SYSCALL_BASE+377) | ||
| 405 | 407 | ||
| 406 | /* | 408 | /* |
| 407 | * The following SWIs are ARM private. | 409 | * The following SWIs are ARM private. |
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index 9943e9e74a1b..463ff4a0ec8a 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
| @@ -385,6 +385,8 @@ | |||
| 385 | CALL(sys_syncfs) | 385 | CALL(sys_syncfs) |
| 386 | CALL(sys_sendmmsg) | 386 | CALL(sys_sendmmsg) |
| 387 | /* 375 */ CALL(sys_setns) | 387 | /* 375 */ CALL(sys_setns) |
| 388 | CALL(sys_process_vm_readv) | ||
| 389 | CALL(sys_process_vm_writev) | ||
| 388 | #ifndef syscalls_counted | 390 | #ifndef syscalls_counted |
| 389 | .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls | 391 | .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls |
| 390 | #define syscalls_counted | 392 | #define syscalls_counted |
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 566c54c2a1fe..08c82fd844a8 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
| @@ -360,7 +360,7 @@ __secondary_data: | |||
| 360 | * r13 = *virtual* address to jump to upon completion | 360 | * r13 = *virtual* address to jump to upon completion |
| 361 | */ | 361 | */ |
| 362 | __enable_mmu: | 362 | __enable_mmu: |
| 363 | #ifdef CONFIG_ALIGNMENT_TRAP | 363 | #if defined(CONFIG_ALIGNMENT_TRAP) && __LINUX_ARM_ARCH__ < 6 |
| 364 | orr r0, r0, #CR_A | 364 | orr r0, r0, #CR_A |
| 365 | #else | 365 | #else |
| 366 | bic r0, r0, #CR_A | 366 | bic r0, r0, #CR_A |
diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c index c1b4463dcc83..e59bbd496c39 100644 --- a/arch/arm/kernel/machine_kexec.c +++ b/arch/arm/kernel/machine_kexec.c | |||
| @@ -32,24 +32,6 @@ static atomic_t waiting_for_crash_ipi; | |||
| 32 | 32 | ||
| 33 | int machine_kexec_prepare(struct kimage *image) | 33 | int machine_kexec_prepare(struct kimage *image) |
| 34 | { | 34 | { |
| 35 | unsigned long page_list; | ||
| 36 | void *reboot_code_buffer; | ||
| 37 | page_list = image->head & PAGE_MASK; | ||
| 38 | |||
| 39 | reboot_code_buffer = page_address(image->control_code_page); | ||
| 40 | |||
| 41 | /* Prepare parameters for reboot_code_buffer*/ | ||
| 42 | kexec_start_address = image->start; | ||
| 43 | kexec_indirection_page = page_list; | ||
| 44 | kexec_mach_type = machine_arch_type; | ||
| 45 | kexec_boot_atags = image->start - KEXEC_ARM_ZIMAGE_OFFSET + KEXEC_ARM_ATAGS_OFFSET; | ||
| 46 | |||
| 47 | /* copy our kernel relocation code to the control code page */ | ||
| 48 | memcpy(reboot_code_buffer, | ||
| 49 | relocate_new_kernel, relocate_new_kernel_size); | ||
| 50 | |||
| 51 | flush_icache_range((unsigned long) reboot_code_buffer, | ||
| 52 | (unsigned long) reboot_code_buffer + KEXEC_CONTROL_PAGE_SIZE); | ||
| 53 | return 0; | 35 | return 0; |
| 54 | } | 36 | } |
| 55 | 37 | ||
| @@ -100,14 +82,31 @@ void (*kexec_reinit)(void); | |||
| 100 | 82 | ||
| 101 | void machine_kexec(struct kimage *image) | 83 | void machine_kexec(struct kimage *image) |
| 102 | { | 84 | { |
| 85 | unsigned long page_list; | ||
| 103 | unsigned long reboot_code_buffer_phys; | 86 | unsigned long reboot_code_buffer_phys; |
| 104 | void *reboot_code_buffer; | 87 | void *reboot_code_buffer; |
| 105 | 88 | ||
| 89 | |||
| 90 | page_list = image->head & PAGE_MASK; | ||
| 91 | |||
| 106 | /* we need both effective and real address here */ | 92 | /* we need both effective and real address here */ |
| 107 | reboot_code_buffer_phys = | 93 | reboot_code_buffer_phys = |
| 108 | page_to_pfn(image->control_code_page) << PAGE_SHIFT; | 94 | page_to_pfn(image->control_code_page) << PAGE_SHIFT; |
| 109 | reboot_code_buffer = page_address(image->control_code_page); | 95 | reboot_code_buffer = page_address(image->control_code_page); |
| 110 | 96 | ||
| 97 | /* Prepare parameters for reboot_code_buffer*/ | ||
| 98 | kexec_start_address = image->start; | ||
| 99 | kexec_indirection_page = page_list; | ||
| 100 | kexec_mach_type = machine_arch_type; | ||
| 101 | kexec_boot_atags = image->start - KEXEC_ARM_ZIMAGE_OFFSET + KEXEC_ARM_ATAGS_OFFSET; | ||
| 102 | |||
| 103 | /* copy our kernel relocation code to the control code page */ | ||
| 104 | memcpy(reboot_code_buffer, | ||
| 105 | relocate_new_kernel, relocate_new_kernel_size); | ||
| 106 | |||
| 107 | |||
| 108 | flush_icache_range((unsigned long) reboot_code_buffer, | ||
| 109 | (unsigned long) reboot_code_buffer + KEXEC_CONTROL_PAGE_SIZE); | ||
| 111 | printk(KERN_INFO "Bye!\n"); | 110 | printk(KERN_INFO "Bye!\n"); |
| 112 | 111 | ||
| 113 | if (kexec_reinit) | 112 | if (kexec_reinit) |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 7e7977ab994f..3448a3f9cc8c 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
| @@ -461,8 +461,10 @@ static void __init setup_processor(void) | |||
| 461 | cpu_name, read_cpuid_id(), read_cpuid_id() & 15, | 461 | cpu_name, read_cpuid_id(), read_cpuid_id() & 15, |
| 462 | proc_arch[cpu_architecture()], cr_alignment); | 462 | proc_arch[cpu_architecture()], cr_alignment); |
| 463 | 463 | ||
| 464 | sprintf(init_utsname()->machine, "%s%c", list->arch_name, ENDIANNESS); | 464 | snprintf(init_utsname()->machine, __NEW_UTS_LEN + 1, "%s%c", |
| 465 | sprintf(elf_platform, "%s%c", list->elf_name, ENDIANNESS); | 465 | list->arch_name, ENDIANNESS); |
| 466 | snprintf(elf_platform, ELF_PLATFORM_SIZE, "%s%c", | ||
| 467 | list->elf_name, ENDIANNESS); | ||
| 466 | elf_hwcap = list->elf_hwcap; | 468 | elf_hwcap = list->elf_hwcap; |
| 467 | #ifndef CONFIG_ARM_THUMB | 469 | #ifndef CONFIG_ARM_THUMB |
| 468 | elf_hwcap &= ~HWCAP_THUMB; | 470 | elf_hwcap &= ~HWCAP_THUMB; |
diff --git a/arch/arm/mach-at91/at91cap9_devices.c b/arch/arm/mach-at91/at91cap9_devices.c index a4401d6b5b07..adad70db70eb 100644 --- a/arch/arm/mach-at91/at91cap9_devices.c +++ b/arch/arm/mach-at91/at91cap9_devices.c | |||
| @@ -98,7 +98,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {} | |||
| 98 | * USB HS Device (Gadget) | 98 | * USB HS Device (Gadget) |
| 99 | * -------------------------------------------------------------------- */ | 99 | * -------------------------------------------------------------------- */ |
| 100 | 100 | ||
| 101 | #if defined(CONFIG_USB_GADGET_ATMEL_USBA) || defined(CONFIG_USB_GADGET_ATMEL_USBA_MODULE) | 101 | #if defined(CONFIG_USB_ATMEL_USBA) || defined(CONFIG_USB_ATMEL_USBA_MODULE) |
| 102 | 102 | ||
| 103 | static struct resource usba_udc_resources[] = { | 103 | static struct resource usba_udc_resources[] = { |
| 104 | [0] = { | 104 | [0] = { |
| @@ -1021,8 +1021,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} | |||
| 1021 | #if defined(CONFIG_SERIAL_ATMEL) | 1021 | #if defined(CONFIG_SERIAL_ATMEL) |
| 1022 | static struct resource dbgu_resources[] = { | 1022 | static struct resource dbgu_resources[] = { |
| 1023 | [0] = { | 1023 | [0] = { |
| 1024 | .start = AT91_VA_BASE_SYS + AT91_DBGU, | 1024 | .start = AT91_BASE_SYS + AT91_DBGU, |
| 1025 | .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, | 1025 | .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, |
| 1026 | .flags = IORESOURCE_MEM, | 1026 | .flags = IORESOURCE_MEM, |
| 1027 | }, | 1027 | }, |
| 1028 | [1] = { | 1028 | [1] = { |
| @@ -1035,7 +1035,6 @@ static struct resource dbgu_resources[] = { | |||
| 1035 | static struct atmel_uart_data dbgu_data = { | 1035 | static struct atmel_uart_data dbgu_data = { |
| 1036 | .use_dma_tx = 0, | 1036 | .use_dma_tx = 0, |
| 1037 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ | 1037 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ |
| 1038 | .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), | ||
| 1039 | }; | 1038 | }; |
| 1040 | 1039 | ||
| 1041 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); | 1040 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); |
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c index 01d8bbd1468b..66591fa53e05 100644 --- a/arch/arm/mach-at91/at91rm9200_devices.c +++ b/arch/arm/mach-at91/at91rm9200_devices.c | |||
| @@ -877,8 +877,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} | |||
| 877 | #if defined(CONFIG_SERIAL_ATMEL) | 877 | #if defined(CONFIG_SERIAL_ATMEL) |
| 878 | static struct resource dbgu_resources[] = { | 878 | static struct resource dbgu_resources[] = { |
| 879 | [0] = { | 879 | [0] = { |
| 880 | .start = AT91_VA_BASE_SYS + AT91_DBGU, | 880 | .start = AT91_BASE_SYS + AT91_DBGU, |
| 881 | .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, | 881 | .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, |
| 882 | .flags = IORESOURCE_MEM, | 882 | .flags = IORESOURCE_MEM, |
| 883 | }, | 883 | }, |
| 884 | [1] = { | 884 | [1] = { |
| @@ -891,7 +891,6 @@ static struct resource dbgu_resources[] = { | |||
| 891 | static struct atmel_uart_data dbgu_data = { | 891 | static struct atmel_uart_data dbgu_data = { |
| 892 | .use_dma_tx = 0, | 892 | .use_dma_tx = 0, |
| 893 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ | 893 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ |
| 894 | .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), | ||
| 895 | }; | 894 | }; |
| 896 | 895 | ||
| 897 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); | 896 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); |
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c index 24b6f8c0440d..25e3464fb07f 100644 --- a/arch/arm/mach-at91/at91sam9260_devices.c +++ b/arch/arm/mach-at91/at91sam9260_devices.c | |||
| @@ -837,8 +837,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} | |||
| 837 | #if defined(CONFIG_SERIAL_ATMEL) | 837 | #if defined(CONFIG_SERIAL_ATMEL) |
| 838 | static struct resource dbgu_resources[] = { | 838 | static struct resource dbgu_resources[] = { |
| 839 | [0] = { | 839 | [0] = { |
| 840 | .start = AT91_VA_BASE_SYS + AT91_DBGU, | 840 | .start = AT91_BASE_SYS + AT91_DBGU, |
| 841 | .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, | 841 | .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, |
| 842 | .flags = IORESOURCE_MEM, | 842 | .flags = IORESOURCE_MEM, |
| 843 | }, | 843 | }, |
| 844 | [1] = { | 844 | [1] = { |
| @@ -851,7 +851,6 @@ static struct resource dbgu_resources[] = { | |||
| 851 | static struct atmel_uart_data dbgu_data = { | 851 | static struct atmel_uart_data dbgu_data = { |
| 852 | .use_dma_tx = 0, | 852 | .use_dma_tx = 0, |
| 853 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ | 853 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ |
| 854 | .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), | ||
| 855 | }; | 854 | }; |
| 856 | 855 | ||
| 857 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); | 856 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); |
diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index 3b70b3897d95..ae78f4d03b73 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c | |||
| @@ -816,8 +816,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} | |||
| 816 | #if defined(CONFIG_SERIAL_ATMEL) | 816 | #if defined(CONFIG_SERIAL_ATMEL) |
| 817 | static struct resource dbgu_resources[] = { | 817 | static struct resource dbgu_resources[] = { |
| 818 | [0] = { | 818 | [0] = { |
| 819 | .start = AT91_VA_BASE_SYS + AT91_DBGU, | 819 | .start = AT91_BASE_SYS + AT91_DBGU, |
| 820 | .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, | 820 | .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, |
| 821 | .flags = IORESOURCE_MEM, | 821 | .flags = IORESOURCE_MEM, |
| 822 | }, | 822 | }, |
| 823 | [1] = { | 823 | [1] = { |
| @@ -830,7 +830,6 @@ static struct resource dbgu_resources[] = { | |||
| 830 | static struct atmel_uart_data dbgu_data = { | 830 | static struct atmel_uart_data dbgu_data = { |
| 831 | .use_dma_tx = 0, | 831 | .use_dma_tx = 0, |
| 832 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ | 832 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ |
| 833 | .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), | ||
| 834 | }; | 833 | }; |
| 835 | 834 | ||
| 836 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); | 835 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); |
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index 3faa1fde9ad9..ad017eb1f8df 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c | |||
| @@ -1196,8 +1196,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} | |||
| 1196 | 1196 | ||
| 1197 | static struct resource dbgu_resources[] = { | 1197 | static struct resource dbgu_resources[] = { |
| 1198 | [0] = { | 1198 | [0] = { |
| 1199 | .start = AT91_VA_BASE_SYS + AT91_DBGU, | 1199 | .start = AT91_BASE_SYS + AT91_DBGU, |
| 1200 | .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, | 1200 | .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, |
| 1201 | .flags = IORESOURCE_MEM, | 1201 | .flags = IORESOURCE_MEM, |
| 1202 | }, | 1202 | }, |
| 1203 | [1] = { | 1203 | [1] = { |
| @@ -1210,7 +1210,6 @@ static struct resource dbgu_resources[] = { | |||
| 1210 | static struct atmel_uart_data dbgu_data = { | 1210 | static struct atmel_uart_data dbgu_data = { |
| 1211 | .use_dma_tx = 0, | 1211 | .use_dma_tx = 0, |
| 1212 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ | 1212 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ |
| 1213 | .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), | ||
| 1214 | }; | 1213 | }; |
| 1215 | 1214 | ||
| 1216 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); | 1215 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); |
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c index 000b5e1da965..09a16d6bd5cd 100644 --- a/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/arch/arm/mach-at91/at91sam9g45_devices.c | |||
| @@ -197,7 +197,7 @@ void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data) {} | |||
| 197 | * USB HS Device (Gadget) | 197 | * USB HS Device (Gadget) |
| 198 | * -------------------------------------------------------------------- */ | 198 | * -------------------------------------------------------------------- */ |
| 199 | 199 | ||
| 200 | #if defined(CONFIG_USB_GADGET_ATMEL_USBA) || defined(CONFIG_USB_GADGET_ATMEL_USBA_MODULE) | 200 | #if defined(CONFIG_USB_ATMEL_USBA) || defined(CONFIG_USB_ATMEL_USBA_MODULE) |
| 201 | static struct resource usba_udc_resources[] = { | 201 | static struct resource usba_udc_resources[] = { |
| 202 | [0] = { | 202 | [0] = { |
| 203 | .start = AT91SAM9G45_UDPHS_FIFO, | 203 | .start = AT91SAM9G45_UDPHS_FIFO, |
| @@ -1332,8 +1332,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} | |||
| 1332 | #if defined(CONFIG_SERIAL_ATMEL) | 1332 | #if defined(CONFIG_SERIAL_ATMEL) |
| 1333 | static struct resource dbgu_resources[] = { | 1333 | static struct resource dbgu_resources[] = { |
| 1334 | [0] = { | 1334 | [0] = { |
| 1335 | .start = AT91_VA_BASE_SYS + AT91_DBGU, | 1335 | .start = AT91_BASE_SYS + AT91_DBGU, |
| 1336 | .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, | 1336 | .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, |
| 1337 | .flags = IORESOURCE_MEM, | 1337 | .flags = IORESOURCE_MEM, |
| 1338 | }, | 1338 | }, |
| 1339 | [1] = { | 1339 | [1] = { |
| @@ -1346,7 +1346,6 @@ static struct resource dbgu_resources[] = { | |||
| 1346 | static struct atmel_uart_data dbgu_data = { | 1346 | static struct atmel_uart_data dbgu_data = { |
| 1347 | .use_dma_tx = 0, | 1347 | .use_dma_tx = 0, |
| 1348 | .use_dma_rx = 0, | 1348 | .use_dma_rx = 0, |
| 1349 | .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), | ||
| 1350 | }; | 1349 | }; |
| 1351 | 1350 | ||
| 1352 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); | 1351 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); |
diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c index 305a851b5bff..628eb566d60c 100644 --- a/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/arch/arm/mach-at91/at91sam9rl_devices.c | |||
| @@ -75,7 +75,7 @@ void __init at91_add_device_hdmac(void) {} | |||
| 75 | * USB HS Device (Gadget) | 75 | * USB HS Device (Gadget) |
| 76 | * -------------------------------------------------------------------- */ | 76 | * -------------------------------------------------------------------- */ |
| 77 | 77 | ||
| 78 | #if defined(CONFIG_USB_GADGET_ATMEL_USBA) || defined(CONFIG_USB_GADGET_ATMEL_USBA_MODULE) | 78 | #if defined(CONFIG_USB_ATMEL_USBA) || defined(CONFIG_USB_ATMEL_USBA_MODULE) |
| 79 | 79 | ||
| 80 | static struct resource usba_udc_resources[] = { | 80 | static struct resource usba_udc_resources[] = { |
| 81 | [0] = { | 81 | [0] = { |
| @@ -908,8 +908,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} | |||
| 908 | #if defined(CONFIG_SERIAL_ATMEL) | 908 | #if defined(CONFIG_SERIAL_ATMEL) |
| 909 | static struct resource dbgu_resources[] = { | 909 | static struct resource dbgu_resources[] = { |
| 910 | [0] = { | 910 | [0] = { |
| 911 | .start = AT91_VA_BASE_SYS + AT91_DBGU, | 911 | .start = AT91_BASE_SYS + AT91_DBGU, |
| 912 | .end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, | 912 | .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1, |
| 913 | .flags = IORESOURCE_MEM, | 913 | .flags = IORESOURCE_MEM, |
| 914 | }, | 914 | }, |
| 915 | [1] = { | 915 | [1] = { |
| @@ -922,7 +922,6 @@ static struct resource dbgu_resources[] = { | |||
| 922 | static struct atmel_uart_data dbgu_data = { | 922 | static struct atmel_uart_data dbgu_data = { |
| 923 | .use_dma_tx = 0, | 923 | .use_dma_tx = 0, |
| 924 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ | 924 | .use_dma_rx = 0, /* DBGU not capable of receive DMA */ |
| 925 | .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU), | ||
| 926 | }; | 925 | }; |
| 927 | 926 | ||
| 928 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); | 927 | static u64 dbgu_dmamask = DMA_BIT_MASK(32); |
diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c index 649b052231f5..12a3f955162b 100644 --- a/arch/arm/mach-at91/board-yl-9200.c +++ b/arch/arm/mach-at91/board-yl-9200.c | |||
| @@ -384,7 +384,7 @@ static struct spi_board_info yl9200_spi_devices[] = { | |||
| 384 | #include <video/s1d13xxxfb.h> | 384 | #include <video/s1d13xxxfb.h> |
| 385 | 385 | ||
| 386 | 386 | ||
| 387 | static void __init yl9200_init_video(void) | 387 | static void yl9200_init_video(void) |
| 388 | { | 388 | { |
| 389 | /* NWAIT Signal */ | 389 | /* NWAIT Signal */ |
| 390 | at91_set_A_periph(AT91_PIN_PC6, 0); | 390 | at91_set_A_periph(AT91_PIN_PC6, 0); |
diff --git a/arch/arm/mach-at91/include/mach/vmalloc.h b/arch/arm/mach-at91/include/mach/vmalloc.h index 8eb459f3f5b7..8e4a1bd0ab1d 100644 --- a/arch/arm/mach-at91/include/mach/vmalloc.h +++ b/arch/arm/mach-at91/include/mach/vmalloc.h | |||
| @@ -21,6 +21,8 @@ | |||
| 21 | #ifndef __ASM_ARCH_VMALLOC_H | 21 | #ifndef __ASM_ARCH_VMALLOC_H |
| 22 | #define __ASM_ARCH_VMALLOC_H | 22 | #define __ASM_ARCH_VMALLOC_H |
| 23 | 23 | ||
| 24 | #include <mach/hardware.h> | ||
| 25 | |||
| 24 | #define VMALLOC_END (AT91_VIRT_BASE & PGDIR_MASK) | 26 | #define VMALLOC_END (AT91_VIRT_BASE & PGDIR_MASK) |
| 25 | 27 | ||
| 26 | #endif | 28 | #endif |
diff --git a/arch/arm/mach-bcmring/core.c b/arch/arm/mach-bcmring/core.c index 43eadbcc29ed..430da120a297 100644 --- a/arch/arm/mach-bcmring/core.c +++ b/arch/arm/mach-bcmring/core.c | |||
| @@ -235,7 +235,7 @@ void __init bcmring_init_timer(void) | |||
| 235 | */ | 235 | */ |
| 236 | bcmring_clocksource_init(); | 236 | bcmring_clocksource_init(); |
| 237 | 237 | ||
| 238 | sp804_clockevents_register(TIMER0_VA_BASE, IRQ_TIMER0, "timer0"); | 238 | sp804_clockevents_init(TIMER0_VA_BASE, IRQ_TIMER0, "timer0"); |
| 239 | } | 239 | } |
| 240 | 240 | ||
| 241 | struct sys_timer bcmring_timer = { | 241 | struct sys_timer bcmring_timer = { |
diff --git a/arch/arm/mach-bcmring/dma.c b/arch/arm/mach-bcmring/dma.c index b52b8de91bde..f4d4d6d174d0 100644 --- a/arch/arm/mach-bcmring/dma.c +++ b/arch/arm/mach-bcmring/dma.c | |||
| @@ -36,6 +36,7 @@ | |||
| 36 | #include <linux/mm.h> | 36 | #include <linux/mm.h> |
| 37 | #include <linux/pfn.h> | 37 | #include <linux/pfn.h> |
| 38 | #include <linux/atomic.h> | 38 | #include <linux/atomic.h> |
| 39 | #include <linux/sched.h> | ||
| 39 | #include <mach/dma.h> | 40 | #include <mach/dma.h> |
| 40 | 41 | ||
| 41 | /* I don't quite understand why dc4 fails when this is set to 1 and DMA is enabled */ | 42 | /* I don't quite understand why dc4 fails when this is set to 1 and DMA is enabled */ |
diff --git a/arch/arm/mach-exynos/cpuidle.c b/arch/arm/mach-exynos/cpuidle.c index 35f6502144ae..4ebb382c5979 100644 --- a/arch/arm/mach-exynos/cpuidle.c +++ b/arch/arm/mach-exynos/cpuidle.c | |||
| @@ -12,6 +12,8 @@ | |||
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/cpuidle.h> | 13 | #include <linux/cpuidle.h> |
| 14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
| 15 | #include <linux/export.h> | ||
| 16 | #include <linux/time.h> | ||
| 15 | 17 | ||
| 16 | #include <asm/proc-fns.h> | 18 | #include <asm/proc-fns.h> |
| 17 | 19 | ||
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c index b82dcf08e747..88660d500f5b 100644 --- a/arch/arm/mach-highbank/highbank.c +++ b/arch/arm/mach-highbank/highbank.c | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include <linux/of_irq.h> | 22 | #include <linux/of_irq.h> |
| 23 | #include <linux/of_platform.h> | 23 | #include <linux/of_platform.h> |
| 24 | #include <linux/of_address.h> | 24 | #include <linux/of_address.h> |
| 25 | #include <linux/smp.h> | ||
| 25 | 26 | ||
| 26 | #include <asm/cacheflush.h> | 27 | #include <asm/cacheflush.h> |
| 27 | #include <asm/unified.h> | 28 | #include <asm/unified.h> |
| @@ -72,6 +73,9 @@ static void __init highbank_map_io(void) | |||
| 72 | 73 | ||
| 73 | void highbank_set_cpu_jump(int cpu, void *jump_addr) | 74 | void highbank_set_cpu_jump(int cpu, void *jump_addr) |
| 74 | { | 75 | { |
| 76 | #ifdef CONFIG_SMP | ||
| 77 | cpu = cpu_logical_map(cpu); | ||
| 78 | #endif | ||
| 75 | writel(BSYM(virt_to_phys(jump_addr)), HB_JUMP_TABLE_VIRT(cpu)); | 79 | writel(BSYM(virt_to_phys(jump_addr)), HB_JUMP_TABLE_VIRT(cpu)); |
| 76 | __cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16); | 80 | __cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16); |
| 77 | outer_clean_range(HB_JUMP_TABLE_PHYS(cpu), | 81 | outer_clean_range(HB_JUMP_TABLE_PHYS(cpu), |
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 5f7f9c2a34ae..c44aa974e79c 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig | |||
| @@ -10,11 +10,6 @@ config HAVE_IMX_MMDC | |||
| 10 | config HAVE_IMX_SRC | 10 | config HAVE_IMX_SRC |
| 11 | bool | 11 | bool |
| 12 | 12 | ||
| 13 | # | ||
| 14 | # ARCH_MX31 and ARCH_MX35 are left for compatibility | ||
| 15 | # Some usages assume that having one of them implies not having (e.g.) ARCH_MX2. | ||
| 16 | # To easily distinguish good and reviewed from unreviewed usages new (and IMHO | ||
| 17 | # more sensible) names are used: SOC_IMX31 and SOC_IMX35 | ||
| 18 | config ARCH_MX1 | 13 | config ARCH_MX1 |
| 19 | bool | 14 | bool |
| 20 | 15 | ||
| @@ -27,12 +22,6 @@ config ARCH_MX25 | |||
| 27 | config MACH_MX27 | 22 | config MACH_MX27 |
| 28 | bool | 23 | bool |
| 29 | 24 | ||
| 30 | config ARCH_MX31 | ||
| 31 | bool | ||
| 32 | |||
| 33 | config ARCH_MX35 | ||
| 34 | bool | ||
| 35 | |||
| 36 | config SOC_IMX1 | 25 | config SOC_IMX1 |
| 37 | bool | 26 | bool |
| 38 | select ARCH_MX1 | 27 | select ARCH_MX1 |
| @@ -72,7 +61,6 @@ config SOC_IMX31 | |||
| 72 | select CPU_V6 | 61 | select CPU_V6 |
| 73 | select IMX_HAVE_PLATFORM_MXC_RNGA | 62 | select IMX_HAVE_PLATFORM_MXC_RNGA |
| 74 | select ARCH_MXC_AUDMUX_V2 | 63 | select ARCH_MXC_AUDMUX_V2 |
| 75 | select ARCH_MX31 | ||
| 76 | select MXC_AVIC | 64 | select MXC_AVIC |
| 77 | select SMP_ON_UP if SMP | 65 | select SMP_ON_UP if SMP |
| 78 | 66 | ||
| @@ -82,7 +70,6 @@ config SOC_IMX35 | |||
| 82 | select ARCH_MXC_IOMUX_V3 | 70 | select ARCH_MXC_IOMUX_V3 |
| 83 | select ARCH_MXC_AUDMUX_V2 | 71 | select ARCH_MXC_AUDMUX_V2 |
| 84 | select HAVE_EPIT | 72 | select HAVE_EPIT |
| 85 | select ARCH_MX35 | ||
| 86 | select MXC_AVIC | 73 | select MXC_AVIC |
| 87 | select SMP_ON_UP if SMP | 74 | select SMP_ON_UP if SMP |
| 88 | 75 | ||
diff --git a/arch/arm/mach-imx/Makefile.boot b/arch/arm/mach-imx/Makefile.boot index 22d85889f622..cfede5768aa0 100644 --- a/arch/arm/mach-imx/Makefile.boot +++ b/arch/arm/mach-imx/Makefile.boot | |||
| @@ -1,22 +1,26 @@ | |||
| 1 | zreladdr-$(CONFIG_ARCH_MX1) += 0x08008000 | 1 | zreladdr-$(CONFIG_SOC_IMX1) += 0x08008000 |
| 2 | params_phys-$(CONFIG_ARCH_MX1) := 0x08000100 | 2 | params_phys-$(CONFIG_SOC_IMX1) := 0x08000100 |
| 3 | initrd_phys-$(CONFIG_ARCH_MX1) := 0x08800000 | 3 | initrd_phys-$(CONFIG_SOC_IMX1) := 0x08800000 |
| 4 | 4 | ||
| 5 | zreladdr-$(CONFIG_MACH_MX21) += 0xC0008000 | 5 | zreladdr-$(CONFIG_SOC_IMX21) += 0xC0008000 |
| 6 | params_phys-$(CONFIG_MACH_MX21) := 0xC0000100 | 6 | params_phys-$(CONFIG_SOC_IMX21) := 0xC0000100 |
| 7 | initrd_phys-$(CONFIG_MACH_MX21) := 0xC0800000 | 7 | initrd_phys-$(CONFIG_SOC_IMX21) := 0xC0800000 |
| 8 | 8 | ||
| 9 | zreladdr-$(CONFIG_ARCH_MX25) += 0x80008000 | 9 | zreladdr-$(CONFIG_SOC_IMX25) += 0x80008000 |
| 10 | params_phys-$(CONFIG_ARCH_MX25) := 0x80000100 | 10 | params_phys-$(CONFIG_SOC_IMX25) := 0x80000100 |
| 11 | initrd_phys-$(CONFIG_ARCH_MX25) := 0x80800000 | 11 | initrd_phys-$(CONFIG_SOC_IMX25) := 0x80800000 |
| 12 | 12 | ||
| 13 | zreladdr-$(CONFIG_MACH_MX27) += 0xA0008000 | 13 | zreladdr-$(CONFIG_SOC_IMX27) += 0xA0008000 |
| 14 | params_phys-$(CONFIG_MACH_MX27) := 0xA0000100 | 14 | params_phys-$(CONFIG_SOC_IMX27) := 0xA0000100 |
| 15 | initrd_phys-$(CONFIG_MACH_MX27) := 0xA0800000 | 15 | initrd_phys-$(CONFIG_SOC_IMX27) := 0xA0800000 |
| 16 | 16 | ||
| 17 | zreladdr-$(CONFIG_ARCH_MX3) += 0x80008000 | 17 | zreladdr-$(CONFIG_SOC_IMX31) += 0x80008000 |
| 18 | params_phys-$(CONFIG_ARCH_MX3) := 0x80000100 | 18 | params_phys-$(CONFIG_SOC_IMX31) := 0x80000100 |
| 19 | initrd_phys-$(CONFIG_ARCH_MX3) := 0x80800000 | 19 | initrd_phys-$(CONFIG_SOC_IMX31) := 0x80800000 |
| 20 | |||
| 21 | zreladdr-$(CONFIG_SOC_IMX35) += 0x80008000 | ||
| 22 | params_phys-$(CONFIG_SOC_IMX35) := 0x80000100 | ||
| 23 | initrd_phys-$(CONFIG_SOC_IMX35) := 0x80800000 | ||
| 20 | 24 | ||
| 21 | zreladdr-$(CONFIG_SOC_IMX6Q) += 0x10008000 | 25 | zreladdr-$(CONFIG_SOC_IMX6Q) += 0x10008000 |
| 22 | params_phys-$(CONFIG_SOC_IMX6Q) := 0x10000100 | 26 | params_phys-$(CONFIG_SOC_IMX6Q) := 0x10000100 |
diff --git a/arch/arm/mach-imx/clock-imx6q.c b/arch/arm/mach-imx/clock-imx6q.c index e0b926dfeced..039a7abb165a 100644 --- a/arch/arm/mach-imx/clock-imx6q.c +++ b/arch/arm/mach-imx/clock-imx6q.c | |||
| @@ -1139,7 +1139,7 @@ static int _clk_set_rate(struct clk *clk, unsigned long rate) | |||
| 1139 | return -EINVAL; | 1139 | return -EINVAL; |
| 1140 | 1140 | ||
| 1141 | max_div = ((d->bm_pred >> d->bp_pred) + 1) * | 1141 | max_div = ((d->bm_pred >> d->bp_pred) + 1) * |
| 1142 | ((d->bm_pred >> d->bp_pred) + 1); | 1142 | ((d->bm_podf >> d->bp_podf) + 1); |
| 1143 | 1143 | ||
| 1144 | div = parent_rate / rate; | 1144 | div = parent_rate / rate; |
| 1145 | if (div == 0) | 1145 | if (div == 0) |
| @@ -1953,14 +1953,17 @@ static struct map_desc imx6q_clock_desc[] = { | |||
| 1953 | imx_map_entry(MX6Q, ANATOP, MT_DEVICE), | 1953 | imx_map_entry(MX6Q, ANATOP, MT_DEVICE), |
| 1954 | }; | 1954 | }; |
| 1955 | 1955 | ||
| 1956 | void __init imx6q_clock_map_io(void) | ||
| 1957 | { | ||
| 1958 | iotable_init(imx6q_clock_desc, ARRAY_SIZE(imx6q_clock_desc)); | ||
| 1959 | } | ||
| 1960 | |||
| 1956 | int __init mx6q_clocks_init(void) | 1961 | int __init mx6q_clocks_init(void) |
| 1957 | { | 1962 | { |
| 1958 | struct device_node *np; | 1963 | struct device_node *np; |
| 1959 | void __iomem *base; | 1964 | void __iomem *base; |
| 1960 | int i, irq; | 1965 | int i, irq; |
| 1961 | 1966 | ||
| 1962 | iotable_init(imx6q_clock_desc, ARRAY_SIZE(imx6q_clock_desc)); | ||
| 1963 | |||
| 1964 | /* retrieve the freqency of fixed clocks from device tree */ | 1967 | /* retrieve the freqency of fixed clocks from device tree */ |
| 1965 | for_each_compatible_node(np, NULL, "fixed-clock") { | 1968 | for_each_compatible_node(np, NULL, "fixed-clock") { |
| 1966 | u32 rate; | 1969 | u32 rate; |
| @@ -2002,6 +2005,21 @@ int __init mx6q_clocks_init(void) | |||
| 2002 | clk_set_rate(&asrc_serial_clk, 1500000); | 2005 | clk_set_rate(&asrc_serial_clk, 1500000); |
| 2003 | clk_set_rate(&enfc_clk, 11000000); | 2006 | clk_set_rate(&enfc_clk, 11000000); |
| 2004 | 2007 | ||
| 2008 | /* | ||
| 2009 | * Before pinctrl API is available, we have to rely on the pad | ||
| 2010 | * configuration set up by bootloader. For usdhc example here, | ||
| 2011 | * u-boot sets up the pads for 49.5 MHz case, and we have to lower | ||
| 2012 | * the usdhc clock from 198 to 49.5 MHz to match the pad configuration. | ||
| 2013 | * | ||
| 2014 | * FIXME: This is should be removed after pinctrl API is available. | ||
| 2015 | * At that time, usdhc driver can call pinctrl API to change pad | ||
| 2016 | * configuration dynamically per different usdhc clock settings. | ||
| 2017 | */ | ||
| 2018 | clk_set_rate(&usdhc1_clk, 49500000); | ||
| 2019 | clk_set_rate(&usdhc2_clk, 49500000); | ||
| 2020 | clk_set_rate(&usdhc3_clk, 49500000); | ||
| 2021 | clk_set_rate(&usdhc4_clk, 49500000); | ||
| 2022 | |||
| 2005 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); | 2023 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); |
| 2006 | base = of_iomap(np, 0); | 2024 | base = of_iomap(np, 0); |
| 2007 | WARN_ON(!base); | 2025 | WARN_ON(!base); |
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c index 8bf5fa349484..9cd860a27af5 100644 --- a/arch/arm/mach-imx/mach-imx6q.c +++ b/arch/arm/mach-imx/mach-imx6q.c | |||
| @@ -34,6 +34,7 @@ static void __init imx6q_map_io(void) | |||
| 34 | { | 34 | { |
| 35 | imx_lluart_map_io(); | 35 | imx_lluart_map_io(); |
| 36 | imx_scu_map_io(); | 36 | imx_scu_map_io(); |
| 37 | imx6q_clock_map_io(); | ||
| 37 | } | 38 | } |
| 38 | 39 | ||
| 39 | static void __init imx6q_gpio_add_irq_domain(struct device_node *np, | 40 | static void __init imx6q_gpio_add_irq_domain(struct device_node *np, |
diff --git a/arch/arm/mach-imx/mm-imx3.c b/arch/arm/mach-imx/mm-imx3.c index 9f0e82ec3398..31807d2a8b7b 100644 --- a/arch/arm/mach-imx/mm-imx3.c +++ b/arch/arm/mach-imx/mm-imx3.c | |||
| @@ -33,29 +33,32 @@ | |||
| 33 | static void imx3_idle(void) | 33 | static void imx3_idle(void) |
| 34 | { | 34 | { |
| 35 | unsigned long reg = 0; | 35 | unsigned long reg = 0; |
| 36 | __asm__ __volatile__( | 36 | |
| 37 | /* disable I and D cache */ | 37 | if (!need_resched()) |
| 38 | "mrc p15, 0, %0, c1, c0, 0\n" | 38 | __asm__ __volatile__( |
| 39 | "bic %0, %0, #0x00001000\n" | 39 | /* disable I and D cache */ |
| 40 | "bic %0, %0, #0x00000004\n" | 40 | "mrc p15, 0, %0, c1, c0, 0\n" |
| 41 | "mcr p15, 0, %0, c1, c0, 0\n" | 41 | "bic %0, %0, #0x00001000\n" |
| 42 | /* invalidate I cache */ | 42 | "bic %0, %0, #0x00000004\n" |
| 43 | "mov %0, #0\n" | 43 | "mcr p15, 0, %0, c1, c0, 0\n" |
| 44 | "mcr p15, 0, %0, c7, c5, 0\n" | 44 | /* invalidate I cache */ |
| 45 | /* clear and invalidate D cache */ | 45 | "mov %0, #0\n" |
| 46 | "mov %0, #0\n" | 46 | "mcr p15, 0, %0, c7, c5, 0\n" |
| 47 | "mcr p15, 0, %0, c7, c14, 0\n" | 47 | /* clear and invalidate D cache */ |
| 48 | /* WFI */ | 48 | "mov %0, #0\n" |
| 49 | "mov %0, #0\n" | 49 | "mcr p15, 0, %0, c7, c14, 0\n" |
| 50 | "mcr p15, 0, %0, c7, c0, 4\n" | 50 | /* WFI */ |
| 51 | "nop\n" "nop\n" "nop\n" "nop\n" | 51 | "mov %0, #0\n" |
| 52 | "nop\n" "nop\n" "nop\n" | 52 | "mcr p15, 0, %0, c7, c0, 4\n" |
| 53 | /* enable I and D cache */ | 53 | "nop\n" "nop\n" "nop\n" "nop\n" |
| 54 | "mrc p15, 0, %0, c1, c0, 0\n" | 54 | "nop\n" "nop\n" "nop\n" |
| 55 | "orr %0, %0, #0x00001000\n" | 55 | /* enable I and D cache */ |
| 56 | "orr %0, %0, #0x00000004\n" | 56 | "mrc p15, 0, %0, c1, c0, 0\n" |
| 57 | "mcr p15, 0, %0, c1, c0, 0\n" | 57 | "orr %0, %0, #0x00001000\n" |
| 58 | : "=r" (reg)); | 58 | "orr %0, %0, #0x00000004\n" |
| 59 | "mcr p15, 0, %0, c1, c0, 0\n" | ||
| 60 | : "=r" (reg)); | ||
| 61 | local_irq_enable(); | ||
| 59 | } | 62 | } |
| 60 | 63 | ||
| 61 | static void __iomem *imx3_ioremap(unsigned long phys_addr, size_t size, | 64 | static void __iomem *imx3_ioremap(unsigned long phys_addr, size_t size, |
| @@ -108,6 +111,7 @@ void imx3_init_l2x0(void) | |||
| 108 | l2x0_init(l2x0_base, 0x00030024, 0x00000000); | 111 | l2x0_init(l2x0_base, 0x00030024, 0x00000000); |
| 109 | } | 112 | } |
| 110 | 113 | ||
| 114 | #ifdef CONFIG_SOC_IMX31 | ||
| 111 | static struct map_desc mx31_io_desc[] __initdata = { | 115 | static struct map_desc mx31_io_desc[] __initdata = { |
| 112 | imx_map_entry(MX31, X_MEMC, MT_DEVICE), | 116 | imx_map_entry(MX31, X_MEMC, MT_DEVICE), |
| 113 | imx_map_entry(MX31, AVIC, MT_DEVICE_NONSHARED), | 117 | imx_map_entry(MX31, AVIC, MT_DEVICE_NONSHARED), |
| @@ -126,33 +130,11 @@ void __init mx31_map_io(void) | |||
| 126 | iotable_init(mx31_io_desc, ARRAY_SIZE(mx31_io_desc)); | 130 | iotable_init(mx31_io_desc, ARRAY_SIZE(mx31_io_desc)); |
| 127 | } | 131 | } |
| 128 | 132 | ||
| 129 | static struct map_desc mx35_io_desc[] __initdata = { | ||
| 130 | imx_map_entry(MX35, X_MEMC, MT_DEVICE), | ||
| 131 | imx_map_entry(MX35, AVIC, MT_DEVICE_NONSHARED), | ||
| 132 | imx_map_entry(MX35, AIPS1, MT_DEVICE_NONSHARED), | ||
| 133 | imx_map_entry(MX35, AIPS2, MT_DEVICE_NONSHARED), | ||
| 134 | imx_map_entry(MX35, SPBA0, MT_DEVICE_NONSHARED), | ||
| 135 | }; | ||
| 136 | |||
| 137 | void __init mx35_map_io(void) | ||
| 138 | { | ||
| 139 | iotable_init(mx35_io_desc, ARRAY_SIZE(mx35_io_desc)); | ||
| 140 | } | ||
| 141 | |||
| 142 | void __init imx31_init_early(void) | 133 | void __init imx31_init_early(void) |
| 143 | { | 134 | { |
| 144 | mxc_set_cpu_type(MXC_CPU_MX31); | 135 | mxc_set_cpu_type(MXC_CPU_MX31); |
| 145 | mxc_arch_reset_init(MX31_IO_ADDRESS(MX31_WDOG_BASE_ADDR)); | 136 | mxc_arch_reset_init(MX31_IO_ADDRESS(MX31_WDOG_BASE_ADDR)); |
| 146 | imx_idle = imx3_idle; | 137 | pm_idle = imx3_idle; |
| 147 | imx_ioremap = imx3_ioremap; | ||
| 148 | } | ||
| 149 | |||
| 150 | void __init imx35_init_early(void) | ||
| 151 | { | ||
| 152 | mxc_set_cpu_type(MXC_CPU_MX35); | ||
| 153 | mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR)); | ||
| 154 | mxc_arch_reset_init(MX35_IO_ADDRESS(MX35_WDOG_BASE_ADDR)); | ||
| 155 | imx_idle = imx3_idle; | ||
| 156 | imx_ioremap = imx3_ioremap; | 138 | imx_ioremap = imx3_ioremap; |
| 157 | } | 139 | } |
| 158 | 140 | ||
| @@ -161,11 +143,6 @@ void __init mx31_init_irq(void) | |||
| 161 | mxc_init_irq(MX31_IO_ADDRESS(MX31_AVIC_BASE_ADDR)); | 143 | mxc_init_irq(MX31_IO_ADDRESS(MX31_AVIC_BASE_ADDR)); |
| 162 | } | 144 | } |
| 163 | 145 | ||
| 164 | void __init mx35_init_irq(void) | ||
| 165 | { | ||
| 166 | mxc_init_irq(MX35_IO_ADDRESS(MX35_AVIC_BASE_ADDR)); | ||
| 167 | } | ||
| 168 | |||
| 169 | static struct sdma_script_start_addrs imx31_to1_sdma_script __initdata = { | 146 | static struct sdma_script_start_addrs imx31_to1_sdma_script __initdata = { |
| 170 | .per_2_per_addr = 1677, | 147 | .per_2_per_addr = 1677, |
| 171 | }; | 148 | }; |
| @@ -199,6 +176,35 @@ void __init imx31_soc_init(void) | |||
| 199 | 176 | ||
| 200 | imx_add_imx_sdma("imx31-sdma", MX31_SDMA_BASE_ADDR, MX31_INT_SDMA, &imx31_sdma_pdata); | 177 | imx_add_imx_sdma("imx31-sdma", MX31_SDMA_BASE_ADDR, MX31_INT_SDMA, &imx31_sdma_pdata); |
| 201 | } | 178 | } |
| 179 | #endif /* ifdef CONFIG_SOC_IMX31 */ | ||
| 180 | |||
| 181 | #ifdef CONFIG_SOC_IMX35 | ||
| 182 | static struct map_desc mx35_io_desc[] __initdata = { | ||
| 183 | imx_map_entry(MX35, X_MEMC, MT_DEVICE), | ||
| 184 | imx_map_entry(MX35, AVIC, MT_DEVICE_NONSHARED), | ||
| 185 | imx_map_entry(MX35, AIPS1, MT_DEVICE_NONSHARED), | ||
| 186 | imx_map_entry(MX35, AIPS2, MT_DEVICE_NONSHARED), | ||
| 187 | imx_map_entry(MX35, SPBA0, MT_DEVICE_NONSHARED), | ||
| 188 | }; | ||
| 189 | |||
| 190 | void __init mx35_map_io(void) | ||
| 191 | { | ||
| 192 | iotable_init(mx35_io_desc, ARRAY_SIZE(mx35_io_desc)); | ||
| 193 | } | ||
| 194 | |||
| 195 | void __init imx35_init_early(void) | ||
| 196 | { | ||
| 197 | mxc_set_cpu_type(MXC_CPU_MX35); | ||
| 198 | mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR)); | ||
| 199 | mxc_arch_reset_init(MX35_IO_ADDRESS(MX35_WDOG_BASE_ADDR)); | ||
| 200 | pm_idle = imx3_idle; | ||
| 201 | imx_ioremap = imx3_ioremap; | ||
| 202 | } | ||
| 203 | |||
| 204 | void __init mx35_init_irq(void) | ||
| 205 | { | ||
| 206 | mxc_init_irq(MX35_IO_ADDRESS(MX35_AVIC_BASE_ADDR)); | ||
| 207 | } | ||
| 202 | 208 | ||
| 203 | static struct sdma_script_start_addrs imx35_to1_sdma_script __initdata = { | 209 | static struct sdma_script_start_addrs imx35_to1_sdma_script __initdata = { |
| 204 | .ap_2_ap_addr = 642, | 210 | .ap_2_ap_addr = 642, |
| @@ -254,3 +260,4 @@ void __init imx35_soc_init(void) | |||
| 254 | 260 | ||
| 255 | imx_add_imx_sdma("imx35-sdma", MX35_SDMA_BASE_ADDR, MX35_INT_SDMA, &imx35_sdma_pdata); | 261 | imx_add_imx_sdma("imx35-sdma", MX35_SDMA_BASE_ADDR, MX35_INT_SDMA, &imx35_sdma_pdata); |
| 256 | } | 262 | } |
| 263 | #endif /* ifdef CONFIG_SOC_IMX35 */ | ||
diff --git a/arch/arm/mach-imx/src.c b/arch/arm/mach-imx/src.c index 36cacbd0dcc2..a8e33681b732 100644 --- a/arch/arm/mach-imx/src.c +++ b/arch/arm/mach-imx/src.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
| 15 | #include <linux/of.h> | 15 | #include <linux/of.h> |
| 16 | #include <linux/of_address.h> | 16 | #include <linux/of_address.h> |
| 17 | #include <linux/smp.h> | ||
| 17 | #include <asm/unified.h> | 18 | #include <asm/unified.h> |
| 18 | 19 | ||
| 19 | #define SRC_SCR 0x000 | 20 | #define SRC_SCR 0x000 |
| @@ -23,10 +24,15 @@ | |||
| 23 | 24 | ||
| 24 | static void __iomem *src_base; | 25 | static void __iomem *src_base; |
| 25 | 26 | ||
| 27 | #ifndef CONFIG_SMP | ||
| 28 | #define cpu_logical_map(cpu) 0 | ||
| 29 | #endif | ||
| 30 | |||
| 26 | void imx_enable_cpu(int cpu, bool enable) | 31 | void imx_enable_cpu(int cpu, bool enable) |
| 27 | { | 32 | { |
| 28 | u32 mask, val; | 33 | u32 mask, val; |
| 29 | 34 | ||
| 35 | cpu = cpu_logical_map(cpu); | ||
| 30 | mask = 1 << (BP_SRC_SCR_CORE1_ENABLE + cpu - 1); | 36 | mask = 1 << (BP_SRC_SCR_CORE1_ENABLE + cpu - 1); |
| 31 | val = readl_relaxed(src_base + SRC_SCR); | 37 | val = readl_relaxed(src_base + SRC_SCR); |
| 32 | val = enable ? val | mask : val & ~mask; | 38 | val = enable ? val | mask : val & ~mask; |
| @@ -35,6 +41,7 @@ void imx_enable_cpu(int cpu, bool enable) | |||
| 35 | 41 | ||
| 36 | void imx_set_cpu_jump(int cpu, void *jump_addr) | 42 | void imx_set_cpu_jump(int cpu, void *jump_addr) |
| 37 | { | 43 | { |
| 44 | cpu = cpu_logical_map(cpu); | ||
| 38 | writel_relaxed(BSYM(virt_to_phys(jump_addr)), | 45 | writel_relaxed(BSYM(virt_to_phys(jump_addr)), |
| 39 | src_base + SRC_GPR1 + cpu * 8); | 46 | src_base + SRC_GPR1 + cpu * 8); |
| 40 | } | 47 | } |
diff --git a/arch/arm/mach-mmp/gplugd.c b/arch/arm/mach-mmp/gplugd.c index 69156568bc41..4665767a4f79 100644 --- a/arch/arm/mach-mmp/gplugd.c +++ b/arch/arm/mach-mmp/gplugd.c | |||
| @@ -182,7 +182,7 @@ static void __init gplugd_init(void) | |||
| 182 | 182 | ||
| 183 | /* on-chip devices */ | 183 | /* on-chip devices */ |
| 184 | pxa168_add_uart(3); | 184 | pxa168_add_uart(3); |
| 185 | pxa168_add_ssp(0); | 185 | pxa168_add_ssp(1); |
| 186 | pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(gplugd_i2c_board_info)); | 186 | pxa168_add_twsi(0, NULL, ARRAY_AND_SIZE(gplugd_i2c_board_info)); |
| 187 | 187 | ||
| 188 | pxa168_add_eth(&gplugd_eth_platform_data); | 188 | pxa168_add_eth(&gplugd_eth_platform_data); |
diff --git a/arch/arm/mach-mmp/include/mach/gpio-pxa.h b/arch/arm/mach-mmp/include/mach/gpio-pxa.h index d14eeaf16322..99b4ce1b6562 100644 --- a/arch/arm/mach-mmp/include/mach/gpio-pxa.h +++ b/arch/arm/mach-mmp/include/mach/gpio-pxa.h | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | #define GPIO_REGS_VIRT (APB_VIRT_BASE + 0x19000) | 7 | #define GPIO_REGS_VIRT (APB_VIRT_BASE + 0x19000) |
| 8 | 8 | ||
| 9 | #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) | 9 | #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) |
| 10 | #define GPIO_REG(x) (GPIO_REGS_VIRT + (x)) | 10 | #define GPIO_REG(x) (*(volatile u32 *)(GPIO_REGS_VIRT + (x))) |
| 11 | 11 | ||
| 12 | #define NR_BUILTIN_GPIO IRQ_GPIO_NUM | 12 | #define NR_BUILTIN_GPIO IRQ_GPIO_NUM |
| 13 | 13 | ||
diff --git a/arch/arm/mach-msm/Makefile b/arch/arm/mach-msm/Makefile index 4285dfd80b6f..4ad3969b9881 100644 --- a/arch/arm/mach-msm/Makefile +++ b/arch/arm/mach-msm/Makefile | |||
| @@ -15,6 +15,8 @@ obj-$(CONFIG_MSM_SMD) += smd.o smd_debug.o | |||
| 15 | obj-$(CONFIG_MSM_SMD) += last_radio_log.o | 15 | obj-$(CONFIG_MSM_SMD) += last_radio_log.o |
| 16 | obj-$(CONFIG_MSM_SCM) += scm.o scm-boot.o | 16 | obj-$(CONFIG_MSM_SCM) += scm.o scm-boot.o |
| 17 | 17 | ||
| 18 | CFLAGS_scm.o :=$(call as-instr,.arch_extension sec,-DREQUIRES_SEC=1) | ||
| 19 | |||
| 18 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o | 20 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o |
| 19 | obj-$(CONFIG_SMP) += headsmp.o platsmp.o | 21 | obj-$(CONFIG_SMP) += headsmp.o platsmp.o |
| 20 | 22 | ||
diff --git a/arch/arm/mach-msm/board-msm7x30.c b/arch/arm/mach-msm/board-msm7x30.c index 71de5062c71e..db81ed531031 100644 --- a/arch/arm/mach-msm/board-msm7x30.c +++ b/arch/arm/mach-msm/board-msm7x30.c | |||
| @@ -42,8 +42,8 @@ | |||
| 42 | 42 | ||
| 43 | extern struct sys_timer msm_timer; | 43 | extern struct sys_timer msm_timer; |
| 44 | 44 | ||
| 45 | static void __init msm7x30_fixup(struct machine_desc *desc, struct tag *tag, | 45 | static void __init msm7x30_fixup(struct tag *tag, char **cmdline, |
| 46 | char **cmdline, struct meminfo *mi) | 46 | struct meminfo *mi) |
| 47 | { | 47 | { |
| 48 | for (; tag->hdr.size; tag = tag_next(tag)) | 48 | for (; tag->hdr.size; tag = tag_next(tag)) |
| 49 | if (tag->hdr.tag == ATAG_MEM && tag->u.mem.start == 0x200000) { | 49 | if (tag->hdr.tag == ATAG_MEM && tag->u.mem.start == 0x200000) { |
diff --git a/arch/arm/mach-msm/board-msm8960.c b/arch/arm/mach-msm/board-msm8960.c index b04468e7d00e..6dc1cbd2a595 100644 --- a/arch/arm/mach-msm/board-msm8960.c +++ b/arch/arm/mach-msm/board-msm8960.c | |||
| @@ -32,8 +32,8 @@ | |||
| 32 | 32 | ||
| 33 | #include "devices.h" | 33 | #include "devices.h" |
| 34 | 34 | ||
| 35 | static void __init msm8960_fixup(struct machine_desc *desc, struct tag *tag, | 35 | static void __init msm8960_fixup(struct tag *tag, char **cmdline, |
| 36 | char **cmdline, struct meminfo *mi) | 36 | struct meminfo *mi) |
| 37 | { | 37 | { |
| 38 | for (; tag->hdr.size; tag = tag_next(tag)) | 38 | for (; tag->hdr.size; tag = tag_next(tag)) |
| 39 | if (tag->hdr.tag == ATAG_MEM && | 39 | if (tag->hdr.tag == ATAG_MEM && |
diff --git a/arch/arm/mach-msm/board-msm8x60.c b/arch/arm/mach-msm/board-msm8x60.c index cf38e2284fa9..44bf71688373 100644 --- a/arch/arm/mach-msm/board-msm8x60.c +++ b/arch/arm/mach-msm/board-msm8x60.c | |||
| @@ -28,8 +28,8 @@ | |||
| 28 | #include <mach/board.h> | 28 | #include <mach/board.h> |
| 29 | #include <mach/msm_iomap.h> | 29 | #include <mach/msm_iomap.h> |
| 30 | 30 | ||
| 31 | static void __init msm8x60_fixup(struct machine_desc *desc, struct tag *tag, | 31 | static void __init msm8x60_fixup(struct tag *tag, char **cmdline, |
| 32 | char **cmdline, struct meminfo *mi) | 32 | struct meminfo *mi) |
| 33 | { | 33 | { |
| 34 | for (; tag->hdr.size; tag = tag_next(tag)) | 34 | for (; tag->hdr.size; tag = tag_next(tag)) |
| 35 | if (tag->hdr.tag == ATAG_MEM && | 35 | if (tag->hdr.tag == ATAG_MEM && |
diff --git a/arch/arm/mach-msm/scm.c b/arch/arm/mach-msm/scm.c index 232f97a04504..bafabb502580 100644 --- a/arch/arm/mach-msm/scm.c +++ b/arch/arm/mach-msm/scm.c | |||
| @@ -180,6 +180,9 @@ static u32 smc(u32 cmd_addr) | |||
| 180 | __asmeq("%1", "r0") | 180 | __asmeq("%1", "r0") |
| 181 | __asmeq("%2", "r1") | 181 | __asmeq("%2", "r1") |
| 182 | __asmeq("%3", "r2") | 182 | __asmeq("%3", "r2") |
| 183 | #ifdef REQUIRES_SEC | ||
| 184 | ".arch_extension sec\n" | ||
| 185 | #endif | ||
| 183 | "smc #0 @ switch to secure world\n" | 186 | "smc #0 @ switch to secure world\n" |
| 184 | : "=r" (r0) | 187 | : "=r" (r0) |
| 185 | : "r" (r0), "r" (r1), "r" (r2) | 188 | : "r" (r0), "r" (r1), "r" (r2) |
diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c index 2aacf41c48e7..4cb276977190 100644 --- a/arch/arm/mach-mx5/clock-mx51-mx53.c +++ b/arch/arm/mach-mx5/clock-mx51-mx53.c | |||
| @@ -1281,9 +1281,9 @@ DEFINE_CLOCK(gpt_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG9_OFFSET, | |||
| 1281 | NULL, NULL, &ipg_clk, &gpt_ipg_clk); | 1281 | NULL, NULL, &ipg_clk, &gpt_ipg_clk); |
| 1282 | 1282 | ||
| 1283 | DEFINE_CLOCK(pwm1_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG6_OFFSET, | 1283 | DEFINE_CLOCK(pwm1_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG6_OFFSET, |
| 1284 | NULL, NULL, &ipg_clk, NULL); | 1284 | NULL, NULL, &ipg_perclk, NULL); |
| 1285 | DEFINE_CLOCK(pwm2_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG8_OFFSET, | 1285 | DEFINE_CLOCK(pwm2_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG8_OFFSET, |
| 1286 | NULL, NULL, &ipg_clk, NULL); | 1286 | NULL, NULL, &ipg_perclk, NULL); |
| 1287 | 1287 | ||
| 1288 | /* I2C */ | 1288 | /* I2C */ |
| 1289 | DEFINE_CLOCK(i2c1_clk, 0, MXC_CCM_CCGR1, MXC_CCM_CCGRx_CG9_OFFSET, | 1289 | DEFINE_CLOCK(i2c1_clk, 0, MXC_CCM_CCGR1, MXC_CCM_CCGRx_CG9_OFFSET, |
| @@ -1634,6 +1634,7 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc, | |||
| 1634 | return 0; | 1634 | return 0; |
| 1635 | } | 1635 | } |
| 1636 | 1636 | ||
| 1637 | #ifdef CONFIG_OF | ||
| 1637 | static void __init clk_get_freq_dt(unsigned long *ckil, unsigned long *osc, | 1638 | static void __init clk_get_freq_dt(unsigned long *ckil, unsigned long *osc, |
| 1638 | unsigned long *ckih1, unsigned long *ckih2) | 1639 | unsigned long *ckih1, unsigned long *ckih2) |
| 1639 | { | 1640 | { |
| @@ -1671,3 +1672,4 @@ int __init mx53_clocks_init_dt(void) | |||
| 1671 | clk_get_freq_dt(&ckil, &osc, &ckih1, &ckih2); | 1672 | clk_get_freq_dt(&ckil, &osc, &ckih1, &ckih2); |
| 1672 | return mx53_clocks_init(ckil, osc, ckih1, ckih2); | 1673 | return mx53_clocks_init(ckil, osc, ckih1, ckih2); |
| 1673 | } | 1674 | } |
| 1675 | #endif | ||
diff --git a/arch/arm/mach-mx5/cpu.c b/arch/arm/mach-mx5/cpu.c index 5c5328257dca..5e2e7a843860 100644 --- a/arch/arm/mach-mx5/cpu.c +++ b/arch/arm/mach-mx5/cpu.c | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/module.h> | 17 | #include <linux/module.h> |
| 18 | #include <mach/hardware.h> | 18 | #include <mach/hardware.h> |
| 19 | #include <asm/io.h> | 19 | #include <linux/io.h> |
| 20 | 20 | ||
| 21 | static int mx5_cpu_rev = -1; | 21 | static int mx5_cpu_rev = -1; |
| 22 | 22 | ||
| @@ -67,7 +67,8 @@ static int __init mx51_neon_fixup(void) | |||
| 67 | if (!cpu_is_mx51()) | 67 | if (!cpu_is_mx51()) |
| 68 | return 0; | 68 | return 0; |
| 69 | 69 | ||
| 70 | if (mx51_revision() < IMX_CHIP_REVISION_3_0 && (elf_hwcap & HWCAP_NEON)) { | 70 | if (mx51_revision() < IMX_CHIP_REVISION_3_0 && |
| 71 | (elf_hwcap & HWCAP_NEON)) { | ||
| 71 | elf_hwcap &= ~HWCAP_NEON; | 72 | elf_hwcap &= ~HWCAP_NEON; |
| 72 | pr_info("Turning off NEON support, detected broken NEON implementation\n"); | 73 | pr_info("Turning off NEON support, detected broken NEON implementation\n"); |
| 73 | } | 74 | } |
diff --git a/arch/arm/mach-mx5/mm.c b/arch/arm/mach-mx5/mm.c index 26eacc9d0d90..df4a508f240a 100644 --- a/arch/arm/mach-mx5/mm.c +++ b/arch/arm/mach-mx5/mm.c | |||
| @@ -23,7 +23,9 @@ | |||
| 23 | 23 | ||
| 24 | static void imx5_idle(void) | 24 | static void imx5_idle(void) |
| 25 | { | 25 | { |
| 26 | mx5_cpu_lp_set(WAIT_UNCLOCKED_POWER_OFF); | 26 | if (!need_resched()) |
| 27 | mx5_cpu_lp_set(WAIT_UNCLOCKED_POWER_OFF); | ||
| 28 | local_irq_enable(); | ||
| 27 | } | 29 | } |
| 28 | 30 | ||
| 29 | /* | 31 | /* |
| @@ -89,7 +91,7 @@ void __init imx51_init_early(void) | |||
| 89 | mxc_set_cpu_type(MXC_CPU_MX51); | 91 | mxc_set_cpu_type(MXC_CPU_MX51); |
| 90 | mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR)); | 92 | mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR)); |
| 91 | mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG1_BASE_ADDR)); | 93 | mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG1_BASE_ADDR)); |
| 92 | imx_idle = imx5_idle; | 94 | pm_idle = imx5_idle; |
| 93 | } | 95 | } |
| 94 | 96 | ||
| 95 | void __init imx53_init_early(void) | 97 | void __init imx53_init_early(void) |
diff --git a/arch/arm/mach-mxs/clock-mx28.c b/arch/arm/mach-mxs/clock-mx28.c index 229ae3494216..da6e4aad177c 100644 --- a/arch/arm/mach-mxs/clock-mx28.c +++ b/arch/arm/mach-mxs/clock-mx28.c | |||
| @@ -404,7 +404,7 @@ static int name##_set_rate(struct clk *clk, unsigned long rate) \ | |||
| 404 | reg = __raw_readl(CLKCTRL_BASE_ADDR + HW_CLKCTRL_##dr); \ | 404 | reg = __raw_readl(CLKCTRL_BASE_ADDR + HW_CLKCTRL_##dr); \ |
| 405 | reg &= ~BM_CLKCTRL_##dr##_DIV; \ | 405 | reg &= ~BM_CLKCTRL_##dr##_DIV; \ |
| 406 | reg |= div << BP_CLKCTRL_##dr##_DIV; \ | 406 | reg |= div << BP_CLKCTRL_##dr##_DIV; \ |
| 407 | if (reg | (1 << clk->enable_shift)) { \ | 407 | if (reg & (1 << clk->enable_shift)) { \ |
| 408 | pr_err("%s: clock is gated\n", __func__); \ | 408 | pr_err("%s: clock is gated\n", __func__); \ |
| 409 | return -EINVAL; \ | 409 | return -EINVAL; \ |
| 410 | } \ | 410 | } \ |
diff --git a/arch/arm/mach-mxs/mach-mx28evk.c b/arch/arm/mach-mxs/mach-mx28evk.c index ac2316d53d3c..064ec5abaa55 100644 --- a/arch/arm/mach-mxs/mach-mx28evk.c +++ b/arch/arm/mach-mxs/mach-mx28evk.c | |||
| @@ -471,7 +471,8 @@ static void __init mx28evk_init(void) | |||
| 471 | "mmc0-slot-power"); | 471 | "mmc0-slot-power"); |
| 472 | if (ret) | 472 | if (ret) |
| 473 | pr_warn("failed to request gpio mmc0-slot-power: %d\n", ret); | 473 | pr_warn("failed to request gpio mmc0-slot-power: %d\n", ret); |
| 474 | mx28_add_mxs_mmc(0, &mx28evk_mmc_pdata[0]); | 474 | else |
| 475 | mx28_add_mxs_mmc(0, &mx28evk_mmc_pdata[0]); | ||
| 475 | 476 | ||
| 476 | ret = gpio_request_one(MX28EVK_MMC1_SLOT_POWER, GPIOF_OUT_INIT_LOW, | 477 | ret = gpio_request_one(MX28EVK_MMC1_SLOT_POWER, GPIOF_OUT_INIT_LOW, |
| 477 | "mmc1-slot-power"); | 478 | "mmc1-slot-power"); |
| @@ -480,7 +481,6 @@ static void __init mx28evk_init(void) | |||
| 480 | else | 481 | else |
| 481 | mx28_add_mxs_mmc(1, &mx28evk_mmc_pdata[1]); | 482 | mx28_add_mxs_mmc(1, &mx28evk_mmc_pdata[1]); |
| 482 | 483 | ||
| 483 | mx28_add_mxs_mmc(1, &mx28evk_mmc_pdata[1]); | ||
| 484 | mx28_add_rtc_stmp3xxx(); | 484 | mx28_add_rtc_stmp3xxx(); |
| 485 | 485 | ||
| 486 | gpio_led_register_device(0, &mx28evk_led_data); | 486 | gpio_led_register_device(0, &mx28evk_led_data); |
diff --git a/arch/arm/mach-omap1/Kconfig b/arch/arm/mach-omap1/Kconfig index e0a028161dde..73f287d6429b 100644 --- a/arch/arm/mach-omap1/Kconfig +++ b/arch/arm/mach-omap1/Kconfig | |||
| @@ -171,14 +171,6 @@ config MACH_OMAP_GENERIC | |||
| 171 | comment "OMAP CPU Speed" | 171 | comment "OMAP CPU Speed" |
| 172 | depends on ARCH_OMAP1 | 172 | depends on ARCH_OMAP1 |
| 173 | 173 | ||
| 174 | config OMAP_CLOCKS_SET_BY_BOOTLOADER | ||
| 175 | bool "OMAP clocks set by bootloader" | ||
| 176 | depends on ARCH_OMAP1 | ||
| 177 | help | ||
| 178 | Enable this option to prevent the kernel from overriding the clock | ||
| 179 | frequencies programmed by bootloader for MPU, DSP, MMUs, TC, | ||
| 180 | internal LCD controller and MPU peripherals. | ||
| 181 | |||
| 182 | config OMAP_ARM_216MHZ | 174 | config OMAP_ARM_216MHZ |
| 183 | bool "OMAP ARM 216 MHz CPU (1710 only)" | 175 | bool "OMAP ARM 216 MHz CPU (1710 only)" |
| 184 | depends on ARCH_OMAP1 && ARCH_OMAP16XX | 176 | depends on ARCH_OMAP1 && ARCH_OMAP16XX |
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index 51bae31cf361..b0f15d234a12 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c | |||
| @@ -302,8 +302,6 @@ static void __init ams_delta_init(void) | |||
| 302 | omap_cfg_reg(J19_1610_CAM_D6); | 302 | omap_cfg_reg(J19_1610_CAM_D6); |
| 303 | omap_cfg_reg(J18_1610_CAM_D7); | 303 | omap_cfg_reg(J18_1610_CAM_D7); |
| 304 | 304 | ||
| 305 | iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc)); | ||
| 306 | |||
| 307 | omap_board_config = ams_delta_config; | 305 | omap_board_config = ams_delta_config; |
| 308 | omap_board_config_size = ARRAY_SIZE(ams_delta_config); | 306 | omap_board_config_size = ARRAY_SIZE(ams_delta_config); |
| 309 | omap_serial_init(); | 307 | omap_serial_init(); |
| @@ -373,10 +371,16 @@ static int __init ams_delta_modem_init(void) | |||
| 373 | } | 371 | } |
| 374 | arch_initcall(ams_delta_modem_init); | 372 | arch_initcall(ams_delta_modem_init); |
| 375 | 373 | ||
| 374 | static void __init ams_delta_map_io(void) | ||
| 375 | { | ||
| 376 | omap15xx_map_io(); | ||
| 377 | iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc)); | ||
| 378 | } | ||
| 379 | |||
| 376 | MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)") | 380 | MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)") |
| 377 | /* Maintainer: Jonathan McDowell <noodles@earth.li> */ | 381 | /* Maintainer: Jonathan McDowell <noodles@earth.li> */ |
| 378 | .atag_offset = 0x100, | 382 | .atag_offset = 0x100, |
| 379 | .map_io = omap15xx_map_io, | 383 | .map_io = ams_delta_map_io, |
| 380 | .init_early = omap1_init_early, | 384 | .init_early = omap1_init_early, |
| 381 | .reserve = omap_reserve, | 385 | .reserve = omap_reserve, |
| 382 | .init_irq = omap1_init_irq, | 386 | .init_irq = omap1_init_irq, |
diff --git a/arch/arm/mach-omap1/clock.h b/arch/arm/mach-omap1/clock.h index eaf09efb91ca..16b1423b454a 100644 --- a/arch/arm/mach-omap1/clock.h +++ b/arch/arm/mach-omap1/clock.h | |||
| @@ -17,7 +17,8 @@ | |||
| 17 | 17 | ||
| 18 | #include <plat/clock.h> | 18 | #include <plat/clock.h> |
| 19 | 19 | ||
| 20 | extern int __init omap1_clk_init(void); | 20 | int omap1_clk_init(void); |
| 21 | void omap1_clk_late_init(void); | ||
| 21 | extern int omap1_clk_enable(struct clk *clk); | 22 | extern int omap1_clk_enable(struct clk *clk); |
| 22 | extern void omap1_clk_disable(struct clk *clk); | 23 | extern void omap1_clk_disable(struct clk *clk); |
| 23 | extern long omap1_clk_round_rate(struct clk *clk, unsigned long rate); | 24 | extern long omap1_clk_round_rate(struct clk *clk, unsigned long rate); |
diff --git a/arch/arm/mach-omap1/clock_data.c b/arch/arm/mach-omap1/clock_data.c index 92400b9eb69f..1297bb58869c 100644 --- a/arch/arm/mach-omap1/clock_data.c +++ b/arch/arm/mach-omap1/clock_data.c | |||
| @@ -767,6 +767,15 @@ static struct clk_functions omap1_clk_functions = { | |||
| 767 | .clk_disable_unused = omap1_clk_disable_unused, | 767 | .clk_disable_unused = omap1_clk_disable_unused, |
| 768 | }; | 768 | }; |
| 769 | 769 | ||
| 770 | static void __init omap1_show_rates(void) | ||
| 771 | { | ||
| 772 | pr_notice("Clocking rate (xtal/DPLL1/MPU): " | ||
| 773 | "%ld.%01ld/%ld.%01ld/%ld.%01ld MHz\n", | ||
| 774 | ck_ref.rate / 1000000, (ck_ref.rate / 100000) % 10, | ||
| 775 | ck_dpll1.rate / 1000000, (ck_dpll1.rate / 100000) % 10, | ||
| 776 | arm_ck.rate / 1000000, (arm_ck.rate / 100000) % 10); | ||
| 777 | } | ||
| 778 | |||
| 770 | int __init omap1_clk_init(void) | 779 | int __init omap1_clk_init(void) |
| 771 | { | 780 | { |
| 772 | struct omap_clk *c; | 781 | struct omap_clk *c; |
| @@ -835,9 +844,12 @@ int __init omap1_clk_init(void) | |||
| 835 | /* We want to be in syncronous scalable mode */ | 844 | /* We want to be in syncronous scalable mode */ |
| 836 | omap_writew(0x1000, ARM_SYSST); | 845 | omap_writew(0x1000, ARM_SYSST); |
| 837 | 846 | ||
| 838 | #ifdef CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER | 847 | |
| 839 | /* Use values set by bootloader. Determine PLL rate and recalculate | 848 | /* |
| 840 | * dependent clocks as if kernel had changed PLL or divisors. | 849 | * Initially use the values set by bootloader. Determine PLL rate and |
| 850 | * recalculate dependent clocks as if kernel had changed PLL or | ||
| 851 | * divisors. See also omap1_clk_late_init() that can reprogram dpll1 | ||
| 852 | * after the SRAM is initialized. | ||
| 841 | */ | 853 | */ |
| 842 | { | 854 | { |
| 843 | unsigned pll_ctl_val = omap_readw(DPLL_CTL); | 855 | unsigned pll_ctl_val = omap_readw(DPLL_CTL); |
| @@ -862,25 +874,10 @@ int __init omap1_clk_init(void) | |||
| 862 | } | 874 | } |
| 863 | } | 875 | } |
| 864 | } | 876 | } |
| 865 | #else | ||
| 866 | /* Find the highest supported frequency and enable it */ | ||
| 867 | if (omap1_select_table_rate(&virtual_ck_mpu, ~0)) { | ||
| 868 | printk(KERN_ERR "System frequencies not set. Check your config.\n"); | ||
| 869 | /* Guess sane values (60MHz) */ | ||
| 870 | omap_writew(0x2290, DPLL_CTL); | ||
| 871 | omap_writew(cpu_is_omap7xx() ? 0x3005 : 0x1005, ARM_CKCTL); | ||
| 872 | ck_dpll1.rate = 60000000; | ||
| 873 | } | ||
| 874 | #endif | ||
| 875 | propagate_rate(&ck_dpll1); | 877 | propagate_rate(&ck_dpll1); |
| 876 | /* Cache rates for clocks connected to ck_ref (not dpll1) */ | 878 | /* Cache rates for clocks connected to ck_ref (not dpll1) */ |
| 877 | propagate_rate(&ck_ref); | 879 | propagate_rate(&ck_ref); |
| 878 | printk(KERN_INFO "Clocking rate (xtal/DPLL1/MPU): " | 880 | omap1_show_rates(); |
| 879 | "%ld.%01ld/%ld.%01ld/%ld.%01ld MHz\n", | ||
| 880 | ck_ref.rate / 1000000, (ck_ref.rate / 100000) % 10, | ||
| 881 | ck_dpll1.rate / 1000000, (ck_dpll1.rate / 100000) % 10, | ||
| 882 | arm_ck.rate / 1000000, (arm_ck.rate / 100000) % 10); | ||
| 883 | |||
| 884 | if (machine_is_omap_perseus2() || machine_is_omap_fsample()) { | 881 | if (machine_is_omap_perseus2() || machine_is_omap_fsample()) { |
| 885 | /* Select slicer output as OMAP input clock */ | 882 | /* Select slicer output as OMAP input clock */ |
| 886 | omap_writew(omap_readw(OMAP7XX_PCC_UPLD_CTRL) & ~0x1, | 883 | omap_writew(omap_readw(OMAP7XX_PCC_UPLD_CTRL) & ~0x1, |
| @@ -925,3 +922,21 @@ int __init omap1_clk_init(void) | |||
| 925 | 922 | ||
| 926 | return 0; | 923 | return 0; |
| 927 | } | 924 | } |
| 925 | |||
| 926 | #define OMAP1_DPLL1_SANE_VALUE 60000000 | ||
| 927 | |||
| 928 | void __init omap1_clk_late_init(void) | ||
| 929 | { | ||
| 930 | if (ck_dpll1.rate >= OMAP1_DPLL1_SANE_VALUE) | ||
| 931 | return; | ||
| 932 | |||
| 933 | /* Find the highest supported frequency and enable it */ | ||
| 934 | if (omap1_select_table_rate(&virtual_ck_mpu, ~0)) { | ||
| 935 | pr_err("System frequencies not set, using default. Check your config.\n"); | ||
| 936 | omap_writew(0x2290, DPLL_CTL); | ||
| 937 | omap_writew(cpu_is_omap7xx() ? 0x3005 : 0x1005, ARM_CKCTL); | ||
| 938 | ck_dpll1.rate = OMAP1_DPLL1_SANE_VALUE; | ||
| 939 | } | ||
| 940 | propagate_rate(&ck_dpll1); | ||
| 941 | omap1_show_rates(); | ||
| 942 | } | ||
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c index 48ef9888e820..475cb2f50d87 100644 --- a/arch/arm/mach-omap1/devices.c +++ b/arch/arm/mach-omap1/devices.c | |||
| @@ -30,6 +30,8 @@ | |||
| 30 | #include <plat/omap7xx.h> | 30 | #include <plat/omap7xx.h> |
| 31 | #include <plat/mcbsp.h> | 31 | #include <plat/mcbsp.h> |
| 32 | 32 | ||
| 33 | #include "clock.h" | ||
| 34 | |||
| 33 | /*-------------------------------------------------------------------------*/ | 35 | /*-------------------------------------------------------------------------*/ |
| 34 | 36 | ||
| 35 | #if defined(CONFIG_RTC_DRV_OMAP) || defined(CONFIG_RTC_DRV_OMAP_MODULE) | 37 | #if defined(CONFIG_RTC_DRV_OMAP) || defined(CONFIG_RTC_DRV_OMAP_MODULE) |
| @@ -293,6 +295,7 @@ static int __init omap1_init_devices(void) | |||
| 293 | return -ENODEV; | 295 | return -ENODEV; |
| 294 | 296 | ||
| 295 | omap_sram_init(); | 297 | omap_sram_init(); |
| 298 | omap1_clk_late_init(); | ||
| 296 | 299 | ||
| 297 | /* please keep these calls, and their implementations above, | 300 | /* please keep these calls, and their implementations above, |
| 298 | * in alphabetical order so they're easier to sort through. | 301 | * in alphabetical order so they're easier to sort through. |
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 503414718905..e1293aa513d3 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
| @@ -334,6 +334,7 @@ config MACH_OMAP4_PANDA | |||
| 334 | config OMAP3_EMU | 334 | config OMAP3_EMU |
| 335 | bool "OMAP3 debugging peripherals" | 335 | bool "OMAP3 debugging peripherals" |
| 336 | depends on ARCH_OMAP3 | 336 | depends on ARCH_OMAP3 |
| 337 | select ARM_AMBA | ||
| 337 | select OC_ETM | 338 | select OC_ETM |
| 338 | help | 339 | help |
| 339 | Say Y here to enable debugging hardware of omap3 | 340 | Say Y here to enable debugging hardware of omap3 |
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 69ab1c069134..b009f17dee56 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | # Common support | 5 | # Common support |
| 6 | obj-y := id.o io.o control.o mux.o devices.o serial.o gpmc.o timer.o pm.o \ | 6 | obj-y := id.o io.o control.o mux.o devices.o serial.o gpmc.o timer.o pm.o \ |
| 7 | common.o gpio.o dma.o wd_timer.o | 7 | common.o gpio.o dma.o wd_timer.o display.o |
| 8 | 8 | ||
| 9 | omap-2-3-common = irq.o sdrc.o | 9 | omap-2-3-common = irq.o sdrc.o |
| 10 | hwmod-common = omap_hwmod.o \ | 10 | hwmod-common = omap_hwmod.o \ |
| @@ -264,7 +264,4 @@ smsc911x-$(CONFIG_SMSC911X) := gpmc-smsc911x.o | |||
| 264 | obj-y += $(smsc911x-m) $(smsc911x-y) | 264 | obj-y += $(smsc911x-m) $(smsc911x-y) |
| 265 | obj-$(CONFIG_ARCH_OMAP4) += hwspinlock.o | 265 | obj-$(CONFIG_ARCH_OMAP4) += hwspinlock.o |
| 266 | 266 | ||
| 267 | disp-$(CONFIG_OMAP2_DSS) := display.o | ||
| 268 | obj-y += $(disp-m) $(disp-y) | ||
| 269 | |||
| 270 | obj-y += common-board-devices.o twl-common.o | 267 | obj-y += common-board-devices.o twl-common.o |
diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c index 1fe35c24fba2..942bb4f19f9f 100644 --- a/arch/arm/mach-omap2/cpuidle34xx.c +++ b/arch/arm/mach-omap2/cpuidle34xx.c | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | 24 | ||
| 25 | #include <linux/sched.h> | 25 | #include <linux/sched.h> |
| 26 | #include <linux/cpuidle.h> | 26 | #include <linux/cpuidle.h> |
| 27 | #include <linux/export.h> | ||
| 27 | 28 | ||
| 28 | #include <plat/prcm.h> | 29 | #include <plat/prcm.h> |
| 29 | #include <plat/irqs.h> | 30 | #include <plat/irqs.h> |
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c index adb2756e242f..dce9905d64bb 100644 --- a/arch/arm/mach-omap2/display.c +++ b/arch/arm/mach-omap2/display.c | |||
| @@ -27,8 +27,35 @@ | |||
| 27 | #include <plat/omap_hwmod.h> | 27 | #include <plat/omap_hwmod.h> |
| 28 | #include <plat/omap_device.h> | 28 | #include <plat/omap_device.h> |
| 29 | #include <plat/omap-pm.h> | 29 | #include <plat/omap-pm.h> |
| 30 | #include <plat/common.h> | ||
| 30 | 31 | ||
| 31 | #include "control.h" | 32 | #include "control.h" |
| 33 | #include "display.h" | ||
| 34 | |||
| 35 | #define DISPC_CONTROL 0x0040 | ||
| 36 | #define DISPC_CONTROL2 0x0238 | ||
| 37 | #define DISPC_IRQSTATUS 0x0018 | ||
| 38 | |||
| 39 | #define DSS_SYSCONFIG 0x10 | ||
| 40 | #define DSS_SYSSTATUS 0x14 | ||
| 41 | #define DSS_CONTROL 0x40 | ||
| 42 | #define DSS_SDI_CONTROL 0x44 | ||
| 43 | #define DSS_PLL_CONTROL 0x48 | ||
| 44 | |||
| 45 | #define LCD_EN_MASK (0x1 << 0) | ||
| 46 | #define DIGIT_EN_MASK (0x1 << 1) | ||
| 47 | |||
| 48 | #define FRAMEDONE_IRQ_SHIFT 0 | ||
| 49 | #define EVSYNC_EVEN_IRQ_SHIFT 2 | ||
| 50 | #define EVSYNC_ODD_IRQ_SHIFT 3 | ||
| 51 | #define FRAMEDONE2_IRQ_SHIFT 22 | ||
| 52 | #define FRAMEDONETV_IRQ_SHIFT 24 | ||
| 53 | |||
| 54 | /* | ||
| 55 | * FRAMEDONE_IRQ_TIMEOUT: how long (in milliseconds) to wait during DISPC | ||
| 56 | * reset before deciding that something has gone wrong | ||
| 57 | */ | ||
| 58 | #define FRAMEDONE_IRQ_TIMEOUT 100 | ||
| 32 | 59 | ||
| 33 | static struct platform_device omap_display_device = { | 60 | static struct platform_device omap_display_device = { |
| 34 | .name = "omapdss", | 61 | .name = "omapdss", |
| @@ -172,3 +199,135 @@ int __init omap_display_init(struct omap_dss_board_info *board_data) | |||
| 172 | 199 | ||
| 173 | return r; | 200 | return r; |
| 174 | } | 201 | } |
| 202 | |||
| 203 | static void dispc_disable_outputs(void) | ||
| 204 | { | ||
| 205 | u32 v, irq_mask = 0; | ||
| 206 | bool lcd_en, digit_en, lcd2_en = false; | ||
| 207 | int i; | ||
| 208 | struct omap_dss_dispc_dev_attr *da; | ||
| 209 | struct omap_hwmod *oh; | ||
| 210 | |||
| 211 | oh = omap_hwmod_lookup("dss_dispc"); | ||
| 212 | if (!oh) { | ||
| 213 | WARN(1, "display: could not disable outputs during reset - could not find dss_dispc hwmod\n"); | ||
| 214 | return; | ||
| 215 | } | ||
| 216 | |||
| 217 | if (!oh->dev_attr) { | ||
| 218 | pr_err("display: could not disable outputs during reset due to missing dev_attr\n"); | ||
| 219 | return; | ||
| 220 | } | ||
| 221 | |||
| 222 | da = (struct omap_dss_dispc_dev_attr *)oh->dev_attr; | ||
| 223 | |||
| 224 | /* store value of LCDENABLE and DIGITENABLE bits */ | ||
| 225 | v = omap_hwmod_read(oh, DISPC_CONTROL); | ||
| 226 | lcd_en = v & LCD_EN_MASK; | ||
| 227 | digit_en = v & DIGIT_EN_MASK; | ||
| 228 | |||
| 229 | /* store value of LCDENABLE for LCD2 */ | ||
| 230 | if (da->manager_count > 2) { | ||
| 231 | v = omap_hwmod_read(oh, DISPC_CONTROL2); | ||
| 232 | lcd2_en = v & LCD_EN_MASK; | ||
| 233 | } | ||
| 234 | |||
| 235 | if (!(lcd_en | digit_en | lcd2_en)) | ||
| 236 | return; /* no managers currently enabled */ | ||
| 237 | |||
| 238 | /* | ||
| 239 | * If any manager was enabled, we need to disable it before | ||
| 240 | * DSS clocks are disabled or DISPC module is reset | ||
| 241 | */ | ||
| 242 | if (lcd_en) | ||
| 243 | irq_mask |= 1 << FRAMEDONE_IRQ_SHIFT; | ||
| 244 | |||
| 245 | if (digit_en) { | ||
| 246 | if (da->has_framedonetv_irq) { | ||
| 247 | irq_mask |= 1 << FRAMEDONETV_IRQ_SHIFT; | ||
| 248 | } else { | ||
| 249 | irq_mask |= 1 << EVSYNC_EVEN_IRQ_SHIFT | | ||
| 250 | 1 << EVSYNC_ODD_IRQ_SHIFT; | ||
| 251 | } | ||
| 252 | } | ||
| 253 | |||
| 254 | if (lcd2_en) | ||
| 255 | irq_mask |= 1 << FRAMEDONE2_IRQ_SHIFT; | ||
| 256 | |||
| 257 | /* | ||
| 258 | * clear any previous FRAMEDONE, FRAMEDONETV, | ||
| 259 | * EVSYNC_EVEN/ODD or FRAMEDONE2 interrupts | ||
| 260 | */ | ||
| 261 | omap_hwmod_write(irq_mask, oh, DISPC_IRQSTATUS); | ||
| 262 | |||
| 263 | /* disable LCD and TV managers */ | ||
| 264 | v = omap_hwmod_read(oh, DISPC_CONTROL); | ||
| 265 | v &= ~(LCD_EN_MASK | DIGIT_EN_MASK); | ||
| 266 | omap_hwmod_write(v, oh, DISPC_CONTROL); | ||
| 267 | |||
| 268 | /* disable LCD2 manager */ | ||
| 269 | if (da->manager_count > 2) { | ||
| 270 | v = omap_hwmod_read(oh, DISPC_CONTROL2); | ||
| 271 | v &= ~LCD_EN_MASK; | ||
| 272 | omap_hwmod_write(v, oh, DISPC_CONTROL2); | ||
| 273 | } | ||
| 274 | |||
| 275 | i = 0; | ||
| 276 | while ((omap_hwmod_read(oh, DISPC_IRQSTATUS) & irq_mask) != | ||
| 277 | irq_mask) { | ||
| 278 | i++; | ||
| 279 | if (i > FRAMEDONE_IRQ_TIMEOUT) { | ||
| 280 | pr_err("didn't get FRAMEDONE1/2 or TV interrupt\n"); | ||
| 281 | break; | ||
| 282 | } | ||
| 283 | mdelay(1); | ||
| 284 | } | ||
| 285 | } | ||
| 286 | |||
| 287 | #define MAX_MODULE_SOFTRESET_WAIT 10000 | ||
| 288 | int omap_dss_reset(struct omap_hwmod *oh) | ||
| 289 | { | ||
| 290 | struct omap_hwmod_opt_clk *oc; | ||
| 291 | int c = 0; | ||
| 292 | int i, r; | ||
| 293 | |||
| 294 | if (!(oh->class->sysc->sysc_flags & SYSS_HAS_RESET_STATUS)) { | ||
| 295 | pr_err("dss_core: hwmod data doesn't contain reset data\n"); | ||
| 296 | return -EINVAL; | ||
| 297 | } | ||
| 298 | |||
| 299 | for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i > 0; i--, oc++) | ||
| 300 | if (oc->_clk) | ||
| 301 | clk_enable(oc->_clk); | ||
| 302 | |||
| 303 | dispc_disable_outputs(); | ||
| 304 | |||
| 305 | /* clear SDI registers */ | ||
| 306 | if (cpu_is_omap3430()) { | ||
| 307 | omap_hwmod_write(0x0, oh, DSS_SDI_CONTROL); | ||
| 308 | omap_hwmod_write(0x0, oh, DSS_PLL_CONTROL); | ||
| 309 | } | ||
| 310 | |||
| 311 | /* | ||
| 312 | * clear DSS_CONTROL register to switch DSS clock sources to | ||
| 313 | * PRCM clock, if any | ||
| 314 | */ | ||
| 315 | omap_hwmod_write(0x0, oh, DSS_CONTROL); | ||
| 316 | |||
| 317 | omap_test_timeout((omap_hwmod_read(oh, oh->class->sysc->syss_offs) | ||
| 318 | & SYSS_RESETDONE_MASK), | ||
| 319 | MAX_MODULE_SOFTRESET_WAIT, c); | ||
| 320 | |||
| 321 | if (c == MAX_MODULE_SOFTRESET_WAIT) | ||
| 322 | pr_warning("dss_core: waiting for reset to finish failed\n"); | ||
| 323 | else | ||
| 324 | pr_debug("dss_core: softreset done\n"); | ||
| 325 | |||
| 326 | for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i > 0; i--, oc++) | ||
| 327 | if (oc->_clk) | ||
| 328 | clk_disable(oc->_clk); | ||
| 329 | |||
| 330 | r = (c == MAX_MODULE_SOFTRESET_WAIT) ? -ETIMEDOUT : 0; | ||
| 331 | |||
| 332 | return r; | ||
| 333 | } | ||
diff --git a/arch/arm/mach-omap2/display.h b/arch/arm/mach-omap2/display.h new file mode 100644 index 000000000000..b871b017b352 --- /dev/null +++ b/arch/arm/mach-omap2/display.h | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | /* | ||
| 2 | * display.h - OMAP2+ integration-specific DSS header | ||
| 3 | * | ||
| 4 | * Copyright (C) 2011 Texas Instruments, Inc. | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify it | ||
| 7 | * under the terms of the GNU General Public License version 2 as published by | ||
| 8 | * the Free Software Foundation. | ||
| 9 | * | ||
| 10 | * This program is distributed in the hope that it will be useful, but WITHOUT | ||
| 11 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| 12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
| 13 | * more details. | ||
| 14 | * | ||
| 15 | * You should have received a copy of the GNU General Public License along with | ||
| 16 | * this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 17 | */ | ||
| 18 | |||
| 19 | #ifndef __ARCH_ARM_MACH_OMAP2_DISPLAY_H | ||
| 20 | #define __ARCH_ARM_MACH_OMAP2_DISPLAY_H | ||
| 21 | |||
| 22 | #include <linux/kernel.h> | ||
| 23 | |||
| 24 | struct omap_dss_dispc_dev_attr { | ||
| 25 | u8 manager_count; | ||
| 26 | bool has_framedonetv_irq; | ||
| 27 | }; | ||
| 28 | |||
| 29 | #endif | ||
diff --git a/arch/arm/mach-omap2/io.h b/arch/arm/mach-omap2/io.h deleted file mode 100644 index e69de29bb2d1..000000000000 --- a/arch/arm/mach-omap2/io.h +++ /dev/null | |||
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 6b3088db83b7..207a2ff9a8c4 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
| @@ -749,7 +749,7 @@ static int _count_mpu_irqs(struct omap_hwmod *oh) | |||
| 749 | ohii = &oh->mpu_irqs[i++]; | 749 | ohii = &oh->mpu_irqs[i++]; |
| 750 | } while (ohii->irq != -1); | 750 | } while (ohii->irq != -1); |
| 751 | 751 | ||
| 752 | return i; | 752 | return i-1; |
| 753 | } | 753 | } |
| 754 | 754 | ||
| 755 | /** | 755 | /** |
| @@ -772,7 +772,7 @@ static int _count_sdma_reqs(struct omap_hwmod *oh) | |||
| 772 | ohdi = &oh->sdma_reqs[i++]; | 772 | ohdi = &oh->sdma_reqs[i++]; |
| 773 | } while (ohdi->dma_req != -1); | 773 | } while (ohdi->dma_req != -1); |
| 774 | 774 | ||
| 775 | return i; | 775 | return i-1; |
| 776 | } | 776 | } |
| 777 | 777 | ||
| 778 | /** | 778 | /** |
| @@ -795,7 +795,7 @@ static int _count_ocp_if_addr_spaces(struct omap_hwmod_ocp_if *os) | |||
| 795 | mem = &os->addr[i++]; | 795 | mem = &os->addr[i++]; |
| 796 | } while (mem->pa_start != mem->pa_end); | 796 | } while (mem->pa_start != mem->pa_end); |
| 797 | 797 | ||
| 798 | return i; | 798 | return i-1; |
| 799 | } | 799 | } |
| 800 | 800 | ||
| 801 | /** | 801 | /** |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c index 6d7206213525..a5409ce3f323 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c | |||
| @@ -875,6 +875,10 @@ static struct omap_hwmod_ocp_if *omap2420_dss_slaves[] = { | |||
| 875 | }; | 875 | }; |
| 876 | 876 | ||
| 877 | static struct omap_hwmod_opt_clk dss_opt_clks[] = { | 877 | static struct omap_hwmod_opt_clk dss_opt_clks[] = { |
| 878 | /* | ||
| 879 | * The DSS HW needs all DSS clocks enabled during reset. The dss_core | ||
| 880 | * driver does not use these clocks. | ||
| 881 | */ | ||
| 878 | { .role = "tv_clk", .clk = "dss_54m_fck" }, | 882 | { .role = "tv_clk", .clk = "dss_54m_fck" }, |
| 879 | { .role = "sys_clk", .clk = "dss2_fck" }, | 883 | { .role = "sys_clk", .clk = "dss2_fck" }, |
| 880 | }; | 884 | }; |
| @@ -899,7 +903,7 @@ static struct omap_hwmod omap2420_dss_core_hwmod = { | |||
| 899 | .slaves_cnt = ARRAY_SIZE(omap2420_dss_slaves), | 903 | .slaves_cnt = ARRAY_SIZE(omap2420_dss_slaves), |
| 900 | .masters = omap2420_dss_masters, | 904 | .masters = omap2420_dss_masters, |
| 901 | .masters_cnt = ARRAY_SIZE(omap2420_dss_masters), | 905 | .masters_cnt = ARRAY_SIZE(omap2420_dss_masters), |
| 902 | .flags = HWMOD_NO_IDLEST, | 906 | .flags = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET, |
| 903 | }; | 907 | }; |
| 904 | 908 | ||
| 905 | /* l4_core -> dss_dispc */ | 909 | /* l4_core -> dss_dispc */ |
| @@ -939,6 +943,7 @@ static struct omap_hwmod omap2420_dss_dispc_hwmod = { | |||
| 939 | .slaves = omap2420_dss_dispc_slaves, | 943 | .slaves = omap2420_dss_dispc_slaves, |
| 940 | .slaves_cnt = ARRAY_SIZE(omap2420_dss_dispc_slaves), | 944 | .slaves_cnt = ARRAY_SIZE(omap2420_dss_dispc_slaves), |
| 941 | .flags = HWMOD_NO_IDLEST, | 945 | .flags = HWMOD_NO_IDLEST, |
| 946 | .dev_attr = &omap2_3_dss_dispc_dev_attr | ||
| 942 | }; | 947 | }; |
| 943 | 948 | ||
| 944 | /* l4_core -> dss_rfbi */ | 949 | /* l4_core -> dss_rfbi */ |
| @@ -961,6 +966,10 @@ static struct omap_hwmod_ocp_if *omap2420_dss_rfbi_slaves[] = { | |||
| 961 | &omap2420_l4_core__dss_rfbi, | 966 | &omap2420_l4_core__dss_rfbi, |
| 962 | }; | 967 | }; |
| 963 | 968 | ||
| 969 | static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = { | ||
| 970 | { .role = "ick", .clk = "dss_ick" }, | ||
| 971 | }; | ||
| 972 | |||
| 964 | static struct omap_hwmod omap2420_dss_rfbi_hwmod = { | 973 | static struct omap_hwmod omap2420_dss_rfbi_hwmod = { |
| 965 | .name = "dss_rfbi", | 974 | .name = "dss_rfbi", |
| 966 | .class = &omap2_rfbi_hwmod_class, | 975 | .class = &omap2_rfbi_hwmod_class, |
| @@ -972,6 +981,8 @@ static struct omap_hwmod omap2420_dss_rfbi_hwmod = { | |||
| 972 | .module_offs = CORE_MOD, | 981 | .module_offs = CORE_MOD, |
| 973 | }, | 982 | }, |
| 974 | }, | 983 | }, |
| 984 | .opt_clks = dss_rfbi_opt_clks, | ||
| 985 | .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks), | ||
| 975 | .slaves = omap2420_dss_rfbi_slaves, | 986 | .slaves = omap2420_dss_rfbi_slaves, |
| 976 | .slaves_cnt = ARRAY_SIZE(omap2420_dss_rfbi_slaves), | 987 | .slaves_cnt = ARRAY_SIZE(omap2420_dss_rfbi_slaves), |
| 977 | .flags = HWMOD_NO_IDLEST, | 988 | .flags = HWMOD_NO_IDLEST, |
| @@ -981,7 +992,7 @@ static struct omap_hwmod omap2420_dss_rfbi_hwmod = { | |||
| 981 | static struct omap_hwmod_ocp_if omap2420_l4_core__dss_venc = { | 992 | static struct omap_hwmod_ocp_if omap2420_l4_core__dss_venc = { |
| 982 | .master = &omap2420_l4_core_hwmod, | 993 | .master = &omap2420_l4_core_hwmod, |
| 983 | .slave = &omap2420_dss_venc_hwmod, | 994 | .slave = &omap2420_dss_venc_hwmod, |
| 984 | .clk = "dss_54m_fck", | 995 | .clk = "dss_ick", |
| 985 | .addr = omap2_dss_venc_addrs, | 996 | .addr = omap2_dss_venc_addrs, |
| 986 | .fw = { | 997 | .fw = { |
| 987 | .omap2 = { | 998 | .omap2 = { |
| @@ -1001,7 +1012,7 @@ static struct omap_hwmod_ocp_if *omap2420_dss_venc_slaves[] = { | |||
| 1001 | static struct omap_hwmod omap2420_dss_venc_hwmod = { | 1012 | static struct omap_hwmod omap2420_dss_venc_hwmod = { |
| 1002 | .name = "dss_venc", | 1013 | .name = "dss_venc", |
| 1003 | .class = &omap2_venc_hwmod_class, | 1014 | .class = &omap2_venc_hwmod_class, |
| 1004 | .main_clk = "dss1_fck", | 1015 | .main_clk = "dss_54m_fck", |
| 1005 | .prcm = { | 1016 | .prcm = { |
| 1006 | .omap2 = { | 1017 | .omap2 = { |
| 1007 | .prcm_reg_id = 1, | 1018 | .prcm_reg_id = 1, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c index a2580d01c3ff..c4f56cb60d7d 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c | |||
| @@ -942,6 +942,10 @@ static struct omap_hwmod_ocp_if *omap2430_dss_slaves[] = { | |||
| 942 | }; | 942 | }; |
| 943 | 943 | ||
| 944 | static struct omap_hwmod_opt_clk dss_opt_clks[] = { | 944 | static struct omap_hwmod_opt_clk dss_opt_clks[] = { |
| 945 | /* | ||
| 946 | * The DSS HW needs all DSS clocks enabled during reset. The dss_core | ||
| 947 | * driver does not use these clocks. | ||
| 948 | */ | ||
| 945 | { .role = "tv_clk", .clk = "dss_54m_fck" }, | 949 | { .role = "tv_clk", .clk = "dss_54m_fck" }, |
| 946 | { .role = "sys_clk", .clk = "dss2_fck" }, | 950 | { .role = "sys_clk", .clk = "dss2_fck" }, |
| 947 | }; | 951 | }; |
| @@ -966,7 +970,7 @@ static struct omap_hwmod omap2430_dss_core_hwmod = { | |||
| 966 | .slaves_cnt = ARRAY_SIZE(omap2430_dss_slaves), | 970 | .slaves_cnt = ARRAY_SIZE(omap2430_dss_slaves), |
| 967 | .masters = omap2430_dss_masters, | 971 | .masters = omap2430_dss_masters, |
| 968 | .masters_cnt = ARRAY_SIZE(omap2430_dss_masters), | 972 | .masters_cnt = ARRAY_SIZE(omap2430_dss_masters), |
| 969 | .flags = HWMOD_NO_IDLEST, | 973 | .flags = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET, |
| 970 | }; | 974 | }; |
| 971 | 975 | ||
| 972 | /* l4_core -> dss_dispc */ | 976 | /* l4_core -> dss_dispc */ |
| @@ -1000,6 +1004,7 @@ static struct omap_hwmod omap2430_dss_dispc_hwmod = { | |||
| 1000 | .slaves = omap2430_dss_dispc_slaves, | 1004 | .slaves = omap2430_dss_dispc_slaves, |
| 1001 | .slaves_cnt = ARRAY_SIZE(omap2430_dss_dispc_slaves), | 1005 | .slaves_cnt = ARRAY_SIZE(omap2430_dss_dispc_slaves), |
| 1002 | .flags = HWMOD_NO_IDLEST, | 1006 | .flags = HWMOD_NO_IDLEST, |
| 1007 | .dev_attr = &omap2_3_dss_dispc_dev_attr | ||
| 1003 | }; | 1008 | }; |
| 1004 | 1009 | ||
| 1005 | /* l4_core -> dss_rfbi */ | 1010 | /* l4_core -> dss_rfbi */ |
| @@ -1016,6 +1021,10 @@ static struct omap_hwmod_ocp_if *omap2430_dss_rfbi_slaves[] = { | |||
| 1016 | &omap2430_l4_core__dss_rfbi, | 1021 | &omap2430_l4_core__dss_rfbi, |
| 1017 | }; | 1022 | }; |
| 1018 | 1023 | ||
| 1024 | static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = { | ||
| 1025 | { .role = "ick", .clk = "dss_ick" }, | ||
| 1026 | }; | ||
| 1027 | |||
| 1019 | static struct omap_hwmod omap2430_dss_rfbi_hwmod = { | 1028 | static struct omap_hwmod omap2430_dss_rfbi_hwmod = { |
| 1020 | .name = "dss_rfbi", | 1029 | .name = "dss_rfbi", |
| 1021 | .class = &omap2_rfbi_hwmod_class, | 1030 | .class = &omap2_rfbi_hwmod_class, |
| @@ -1027,6 +1036,8 @@ static struct omap_hwmod omap2430_dss_rfbi_hwmod = { | |||
| 1027 | .module_offs = CORE_MOD, | 1036 | .module_offs = CORE_MOD, |
| 1028 | }, | 1037 | }, |
| 1029 | }, | 1038 | }, |
| 1039 | .opt_clks = dss_rfbi_opt_clks, | ||
| 1040 | .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks), | ||
| 1030 | .slaves = omap2430_dss_rfbi_slaves, | 1041 | .slaves = omap2430_dss_rfbi_slaves, |
| 1031 | .slaves_cnt = ARRAY_SIZE(omap2430_dss_rfbi_slaves), | 1042 | .slaves_cnt = ARRAY_SIZE(omap2430_dss_rfbi_slaves), |
| 1032 | .flags = HWMOD_NO_IDLEST, | 1043 | .flags = HWMOD_NO_IDLEST, |
| @@ -1036,7 +1047,7 @@ static struct omap_hwmod omap2430_dss_rfbi_hwmod = { | |||
| 1036 | static struct omap_hwmod_ocp_if omap2430_l4_core__dss_venc = { | 1047 | static struct omap_hwmod_ocp_if omap2430_l4_core__dss_venc = { |
| 1037 | .master = &omap2430_l4_core_hwmod, | 1048 | .master = &omap2430_l4_core_hwmod, |
| 1038 | .slave = &omap2430_dss_venc_hwmod, | 1049 | .slave = &omap2430_dss_venc_hwmod, |
| 1039 | .clk = "dss_54m_fck", | 1050 | .clk = "dss_ick", |
| 1040 | .addr = omap2_dss_venc_addrs, | 1051 | .addr = omap2_dss_venc_addrs, |
| 1041 | .flags = OCPIF_SWSUP_IDLE, | 1052 | .flags = OCPIF_SWSUP_IDLE, |
| 1042 | .user = OCP_USER_MPU | OCP_USER_SDMA, | 1053 | .user = OCP_USER_MPU | OCP_USER_SDMA, |
| @@ -1050,7 +1061,7 @@ static struct omap_hwmod_ocp_if *omap2430_dss_venc_slaves[] = { | |||
| 1050 | static struct omap_hwmod omap2430_dss_venc_hwmod = { | 1061 | static struct omap_hwmod omap2430_dss_venc_hwmod = { |
| 1051 | .name = "dss_venc", | 1062 | .name = "dss_venc", |
| 1052 | .class = &omap2_venc_hwmod_class, | 1063 | .class = &omap2_venc_hwmod_class, |
| 1053 | .main_clk = "dss1_fck", | 1064 | .main_clk = "dss_54m_fck", |
| 1054 | .prcm = { | 1065 | .prcm = { |
| 1055 | .omap2 = { | 1066 | .omap2 = { |
| 1056 | .prcm_reg_id = 1, | 1067 | .prcm_reg_id = 1, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c index c451729d289a..c11273da5dcc 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include <plat/omap_hwmod.h> | 11 | #include <plat/omap_hwmod.h> |
| 12 | #include <plat/serial.h> | 12 | #include <plat/serial.h> |
| 13 | #include <plat/dma.h> | 13 | #include <plat/dma.h> |
| 14 | #include <plat/common.h> | ||
| 14 | 15 | ||
| 15 | #include <mach/irqs.h> | 16 | #include <mach/irqs.h> |
| 16 | 17 | ||
| @@ -43,13 +44,15 @@ static struct omap_hwmod_class_sysconfig omap2_dss_sysc = { | |||
| 43 | .rev_offs = 0x0000, | 44 | .rev_offs = 0x0000, |
| 44 | .sysc_offs = 0x0010, | 45 | .sysc_offs = 0x0010, |
| 45 | .syss_offs = 0x0014, | 46 | .syss_offs = 0x0014, |
| 46 | .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), | 47 | .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | |
| 48 | SYSS_HAS_RESET_STATUS), | ||
| 47 | .sysc_fields = &omap_hwmod_sysc_type1, | 49 | .sysc_fields = &omap_hwmod_sysc_type1, |
| 48 | }; | 50 | }; |
| 49 | 51 | ||
| 50 | struct omap_hwmod_class omap2_dss_hwmod_class = { | 52 | struct omap_hwmod_class omap2_dss_hwmod_class = { |
| 51 | .name = "dss", | 53 | .name = "dss", |
| 52 | .sysc = &omap2_dss_sysc, | 54 | .sysc = &omap2_dss_sysc, |
| 55 | .reset = omap_dss_reset, | ||
| 53 | }; | 56 | }; |
| 54 | 57 | ||
| 55 | /* | 58 | /* |
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index bc9035ec87fc..7f8915ad5099 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | |||
| @@ -1369,9 +1369,14 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_slaves[] = { | |||
| 1369 | }; | 1369 | }; |
| 1370 | 1370 | ||
| 1371 | static struct omap_hwmod_opt_clk dss_opt_clks[] = { | 1371 | static struct omap_hwmod_opt_clk dss_opt_clks[] = { |
| 1372 | { .role = "tv_clk", .clk = "dss_tv_fck" }, | 1372 | /* |
| 1373 | { .role = "video_clk", .clk = "dss_96m_fck" }, | 1373 | * The DSS HW needs all DSS clocks enabled during reset. The dss_core |
| 1374 | * driver does not use these clocks. | ||
| 1375 | */ | ||
| 1374 | { .role = "sys_clk", .clk = "dss2_alwon_fck" }, | 1376 | { .role = "sys_clk", .clk = "dss2_alwon_fck" }, |
| 1377 | { .role = "tv_clk", .clk = "dss_tv_fck" }, | ||
| 1378 | /* required only on OMAP3430 */ | ||
| 1379 | { .role = "tv_dac_clk", .clk = "dss_96m_fck" }, | ||
| 1375 | }; | 1380 | }; |
| 1376 | 1381 | ||
| 1377 | static struct omap_hwmod omap3430es1_dss_core_hwmod = { | 1382 | static struct omap_hwmod omap3430es1_dss_core_hwmod = { |
| @@ -1394,11 +1399,12 @@ static struct omap_hwmod omap3430es1_dss_core_hwmod = { | |||
| 1394 | .slaves_cnt = ARRAY_SIZE(omap3430es1_dss_slaves), | 1399 | .slaves_cnt = ARRAY_SIZE(omap3430es1_dss_slaves), |
| 1395 | .masters = omap3xxx_dss_masters, | 1400 | .masters = omap3xxx_dss_masters, |
| 1396 | .masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters), | 1401 | .masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters), |
| 1397 | .flags = HWMOD_NO_IDLEST, | 1402 | .flags = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET, |
| 1398 | }; | 1403 | }; |
| 1399 | 1404 | ||
| 1400 | static struct omap_hwmod omap3xxx_dss_core_hwmod = { | 1405 | static struct omap_hwmod omap3xxx_dss_core_hwmod = { |
| 1401 | .name = "dss_core", | 1406 | .name = "dss_core", |
| 1407 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, | ||
| 1402 | .class = &omap2_dss_hwmod_class, | 1408 | .class = &omap2_dss_hwmod_class, |
| 1403 | .main_clk = "dss1_alwon_fck", /* instead of dss_fck */ | 1409 | .main_clk = "dss1_alwon_fck", /* instead of dss_fck */ |
| 1404 | .sdma_reqs = omap3xxx_dss_sdma_chs, | 1410 | .sdma_reqs = omap3xxx_dss_sdma_chs, |
| @@ -1456,6 +1462,7 @@ static struct omap_hwmod omap3xxx_dss_dispc_hwmod = { | |||
| 1456 | .slaves = omap3xxx_dss_dispc_slaves, | 1462 | .slaves = omap3xxx_dss_dispc_slaves, |
| 1457 | .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_dispc_slaves), | 1463 | .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_dispc_slaves), |
| 1458 | .flags = HWMOD_NO_IDLEST, | 1464 | .flags = HWMOD_NO_IDLEST, |
| 1465 | .dev_attr = &omap2_3_dss_dispc_dev_attr | ||
| 1459 | }; | 1466 | }; |
| 1460 | 1467 | ||
| 1461 | /* | 1468 | /* |
| @@ -1486,6 +1493,7 @@ static struct omap_hwmod_addr_space omap3xxx_dss_dsi1_addrs[] = { | |||
| 1486 | static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = { | 1493 | static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = { |
| 1487 | .master = &omap3xxx_l4_core_hwmod, | 1494 | .master = &omap3xxx_l4_core_hwmod, |
| 1488 | .slave = &omap3xxx_dss_dsi1_hwmod, | 1495 | .slave = &omap3xxx_dss_dsi1_hwmod, |
| 1496 | .clk = "dss_ick", | ||
| 1489 | .addr = omap3xxx_dss_dsi1_addrs, | 1497 | .addr = omap3xxx_dss_dsi1_addrs, |
| 1490 | .fw = { | 1498 | .fw = { |
| 1491 | .omap2 = { | 1499 | .omap2 = { |
| @@ -1502,6 +1510,10 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_dsi1_slaves[] = { | |||
| 1502 | &omap3xxx_l4_core__dss_dsi1, | 1510 | &omap3xxx_l4_core__dss_dsi1, |
| 1503 | }; | 1511 | }; |
| 1504 | 1512 | ||
| 1513 | static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = { | ||
| 1514 | { .role = "sys_clk", .clk = "dss2_alwon_fck" }, | ||
| 1515 | }; | ||
| 1516 | |||
| 1505 | static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = { | 1517 | static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = { |
| 1506 | .name = "dss_dsi1", | 1518 | .name = "dss_dsi1", |
| 1507 | .class = &omap3xxx_dsi_hwmod_class, | 1519 | .class = &omap3xxx_dsi_hwmod_class, |
| @@ -1514,6 +1526,8 @@ static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = { | |||
| 1514 | .module_offs = OMAP3430_DSS_MOD, | 1526 | .module_offs = OMAP3430_DSS_MOD, |
| 1515 | }, | 1527 | }, |
| 1516 | }, | 1528 | }, |
| 1529 | .opt_clks = dss_dsi1_opt_clks, | ||
| 1530 | .opt_clks_cnt = ARRAY_SIZE(dss_dsi1_opt_clks), | ||
| 1517 | .slaves = omap3xxx_dss_dsi1_slaves, | 1531 | .slaves = omap3xxx_dss_dsi1_slaves, |
| 1518 | .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_dsi1_slaves), | 1532 | .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_dsi1_slaves), |
| 1519 | .flags = HWMOD_NO_IDLEST, | 1533 | .flags = HWMOD_NO_IDLEST, |
| @@ -1540,6 +1554,10 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_rfbi_slaves[] = { | |||
| 1540 | &omap3xxx_l4_core__dss_rfbi, | 1554 | &omap3xxx_l4_core__dss_rfbi, |
| 1541 | }; | 1555 | }; |
| 1542 | 1556 | ||
| 1557 | static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = { | ||
| 1558 | { .role = "ick", .clk = "dss_ick" }, | ||
| 1559 | }; | ||
| 1560 | |||
| 1543 | static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = { | 1561 | static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = { |
| 1544 | .name = "dss_rfbi", | 1562 | .name = "dss_rfbi", |
| 1545 | .class = &omap2_rfbi_hwmod_class, | 1563 | .class = &omap2_rfbi_hwmod_class, |
| @@ -1551,6 +1569,8 @@ static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = { | |||
| 1551 | .module_offs = OMAP3430_DSS_MOD, | 1569 | .module_offs = OMAP3430_DSS_MOD, |
| 1552 | }, | 1570 | }, |
| 1553 | }, | 1571 | }, |
| 1572 | .opt_clks = dss_rfbi_opt_clks, | ||
| 1573 | .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks), | ||
| 1554 | .slaves = omap3xxx_dss_rfbi_slaves, | 1574 | .slaves = omap3xxx_dss_rfbi_slaves, |
| 1555 | .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_rfbi_slaves), | 1575 | .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_rfbi_slaves), |
| 1556 | .flags = HWMOD_NO_IDLEST, | 1576 | .flags = HWMOD_NO_IDLEST, |
| @@ -1560,7 +1580,7 @@ static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = { | |||
| 1560 | static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = { | 1580 | static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = { |
| 1561 | .master = &omap3xxx_l4_core_hwmod, | 1581 | .master = &omap3xxx_l4_core_hwmod, |
| 1562 | .slave = &omap3xxx_dss_venc_hwmod, | 1582 | .slave = &omap3xxx_dss_venc_hwmod, |
| 1563 | .clk = "dss_tv_fck", | 1583 | .clk = "dss_ick", |
| 1564 | .addr = omap2_dss_venc_addrs, | 1584 | .addr = omap2_dss_venc_addrs, |
| 1565 | .fw = { | 1585 | .fw = { |
| 1566 | .omap2 = { | 1586 | .omap2 = { |
| @@ -1578,10 +1598,15 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_venc_slaves[] = { | |||
| 1578 | &omap3xxx_l4_core__dss_venc, | 1598 | &omap3xxx_l4_core__dss_venc, |
| 1579 | }; | 1599 | }; |
| 1580 | 1600 | ||
| 1601 | static struct omap_hwmod_opt_clk dss_venc_opt_clks[] = { | ||
| 1602 | /* required only on OMAP3430 */ | ||
| 1603 | { .role = "tv_dac_clk", .clk = "dss_96m_fck" }, | ||
| 1604 | }; | ||
| 1605 | |||
| 1581 | static struct omap_hwmod omap3xxx_dss_venc_hwmod = { | 1606 | static struct omap_hwmod omap3xxx_dss_venc_hwmod = { |
| 1582 | .name = "dss_venc", | 1607 | .name = "dss_venc", |
| 1583 | .class = &omap2_venc_hwmod_class, | 1608 | .class = &omap2_venc_hwmod_class, |
| 1584 | .main_clk = "dss1_alwon_fck", | 1609 | .main_clk = "dss_tv_fck", |
| 1585 | .prcm = { | 1610 | .prcm = { |
| 1586 | .omap2 = { | 1611 | .omap2 = { |
| 1587 | .prcm_reg_id = 1, | 1612 | .prcm_reg_id = 1, |
| @@ -1589,6 +1614,8 @@ static struct omap_hwmod omap3xxx_dss_venc_hwmod = { | |||
| 1589 | .module_offs = OMAP3430_DSS_MOD, | 1614 | .module_offs = OMAP3430_DSS_MOD, |
| 1590 | }, | 1615 | }, |
| 1591 | }, | 1616 | }, |
| 1617 | .opt_clks = dss_venc_opt_clks, | ||
| 1618 | .opt_clks_cnt = ARRAY_SIZE(dss_venc_opt_clks), | ||
| 1592 | .slaves = omap3xxx_dss_venc_slaves, | 1619 | .slaves = omap3xxx_dss_venc_slaves, |
| 1593 | .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_venc_slaves), | 1620 | .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_venc_slaves), |
| 1594 | .flags = HWMOD_NO_IDLEST, | 1621 | .flags = HWMOD_NO_IDLEST, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 7695e5d43316..daaf165af696 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
| @@ -30,6 +30,7 @@ | |||
| 30 | #include <plat/mmc.h> | 30 | #include <plat/mmc.h> |
| 31 | #include <plat/i2c.h> | 31 | #include <plat/i2c.h> |
| 32 | #include <plat/dmtimer.h> | 32 | #include <plat/dmtimer.h> |
| 33 | #include <plat/common.h> | ||
| 33 | 34 | ||
| 34 | #include "omap_hwmod_common_data.h" | 35 | #include "omap_hwmod_common_data.h" |
| 35 | 36 | ||
| @@ -1187,6 +1188,7 @@ static struct omap_hwmod_class_sysconfig omap44xx_dss_sysc = { | |||
| 1187 | static struct omap_hwmod_class omap44xx_dss_hwmod_class = { | 1188 | static struct omap_hwmod_class omap44xx_dss_hwmod_class = { |
| 1188 | .name = "dss", | 1189 | .name = "dss", |
| 1189 | .sysc = &omap44xx_dss_sysc, | 1190 | .sysc = &omap44xx_dss_sysc, |
| 1191 | .reset = omap_dss_reset, | ||
| 1190 | }; | 1192 | }; |
| 1191 | 1193 | ||
| 1192 | /* dss */ | 1194 | /* dss */ |
| @@ -1240,12 +1242,12 @@ static struct omap_hwmod_ocp_if *omap44xx_dss_slaves[] = { | |||
| 1240 | static struct omap_hwmod_opt_clk dss_opt_clks[] = { | 1242 | static struct omap_hwmod_opt_clk dss_opt_clks[] = { |
| 1241 | { .role = "sys_clk", .clk = "dss_sys_clk" }, | 1243 | { .role = "sys_clk", .clk = "dss_sys_clk" }, |
| 1242 | { .role = "tv_clk", .clk = "dss_tv_clk" }, | 1244 | { .role = "tv_clk", .clk = "dss_tv_clk" }, |
| 1243 | { .role = "dss_clk", .clk = "dss_dss_clk" }, | 1245 | { .role = "hdmi_clk", .clk = "dss_48mhz_clk" }, |
| 1244 | { .role = "video_clk", .clk = "dss_48mhz_clk" }, | ||
| 1245 | }; | 1246 | }; |
| 1246 | 1247 | ||
| 1247 | static struct omap_hwmod omap44xx_dss_hwmod = { | 1248 | static struct omap_hwmod omap44xx_dss_hwmod = { |
| 1248 | .name = "dss_core", | 1249 | .name = "dss_core", |
| 1250 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, | ||
| 1249 | .class = &omap44xx_dss_hwmod_class, | 1251 | .class = &omap44xx_dss_hwmod_class, |
| 1250 | .clkdm_name = "l3_dss_clkdm", | 1252 | .clkdm_name = "l3_dss_clkdm", |
| 1251 | .main_clk = "dss_dss_clk", | 1253 | .main_clk = "dss_dss_clk", |
| @@ -1325,6 +1327,11 @@ static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = { | |||
| 1325 | { } | 1327 | { } |
| 1326 | }; | 1328 | }; |
| 1327 | 1329 | ||
| 1330 | static struct omap_dss_dispc_dev_attr omap44xx_dss_dispc_dev_attr = { | ||
| 1331 | .manager_count = 3, | ||
| 1332 | .has_framedonetv_irq = 1 | ||
| 1333 | }; | ||
| 1334 | |||
| 1328 | /* l4_per -> dss_dispc */ | 1335 | /* l4_per -> dss_dispc */ |
| 1329 | static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = { | 1336 | static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = { |
| 1330 | .master = &omap44xx_l4_per_hwmod, | 1337 | .master = &omap44xx_l4_per_hwmod, |
| @@ -1340,12 +1347,6 @@ static struct omap_hwmod_ocp_if *omap44xx_dss_dispc_slaves[] = { | |||
| 1340 | &omap44xx_l4_per__dss_dispc, | 1347 | &omap44xx_l4_per__dss_dispc, |
| 1341 | }; | 1348 | }; |
| 1342 | 1349 | ||
| 1343 | static struct omap_hwmod_opt_clk dss_dispc_opt_clks[] = { | ||
| 1344 | { .role = "sys_clk", .clk = "dss_sys_clk" }, | ||
| 1345 | { .role = "tv_clk", .clk = "dss_tv_clk" }, | ||
| 1346 | { .role = "hdmi_clk", .clk = "dss_48mhz_clk" }, | ||
| 1347 | }; | ||
| 1348 | |||
| 1349 | static struct omap_hwmod omap44xx_dss_dispc_hwmod = { | 1350 | static struct omap_hwmod omap44xx_dss_dispc_hwmod = { |
| 1350 | .name = "dss_dispc", | 1351 | .name = "dss_dispc", |
| 1351 | .class = &omap44xx_dispc_hwmod_class, | 1352 | .class = &omap44xx_dispc_hwmod_class, |
| @@ -1359,10 +1360,9 @@ static struct omap_hwmod omap44xx_dss_dispc_hwmod = { | |||
| 1359 | .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET, | 1360 | .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET, |
| 1360 | }, | 1361 | }, |
| 1361 | }, | 1362 | }, |
| 1362 | .opt_clks = dss_dispc_opt_clks, | ||
| 1363 | .opt_clks_cnt = ARRAY_SIZE(dss_dispc_opt_clks), | ||
| 1364 | .slaves = omap44xx_dss_dispc_slaves, | 1363 | .slaves = omap44xx_dss_dispc_slaves, |
| 1365 | .slaves_cnt = ARRAY_SIZE(omap44xx_dss_dispc_slaves), | 1364 | .slaves_cnt = ARRAY_SIZE(omap44xx_dss_dispc_slaves), |
| 1365 | .dev_attr = &omap44xx_dss_dispc_dev_attr | ||
| 1366 | }; | 1366 | }; |
| 1367 | 1367 | ||
| 1368 | /* | 1368 | /* |
| @@ -1624,7 +1624,7 @@ static struct omap_hwmod omap44xx_dss_hdmi_hwmod = { | |||
| 1624 | .clkdm_name = "l3_dss_clkdm", | 1624 | .clkdm_name = "l3_dss_clkdm", |
| 1625 | .mpu_irqs = omap44xx_dss_hdmi_irqs, | 1625 | .mpu_irqs = omap44xx_dss_hdmi_irqs, |
| 1626 | .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs, | 1626 | .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs, |
| 1627 | .main_clk = "dss_dss_clk", | 1627 | .main_clk = "dss_48mhz_clk", |
| 1628 | .prcm = { | 1628 | .prcm = { |
| 1629 | .omap4 = { | 1629 | .omap4 = { |
| 1630 | .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET, | 1630 | .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET, |
| @@ -1785,7 +1785,7 @@ static struct omap_hwmod omap44xx_dss_venc_hwmod = { | |||
| 1785 | .name = "dss_venc", | 1785 | .name = "dss_venc", |
| 1786 | .class = &omap44xx_venc_hwmod_class, | 1786 | .class = &omap44xx_venc_hwmod_class, |
| 1787 | .clkdm_name = "l3_dss_clkdm", | 1787 | .clkdm_name = "l3_dss_clkdm", |
| 1788 | .main_clk = "dss_dss_clk", | 1788 | .main_clk = "dss_tv_clk", |
| 1789 | .prcm = { | 1789 | .prcm = { |
| 1790 | .omap4 = { | 1790 | .omap4 = { |
| 1791 | .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET, | 1791 | .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_common_data.c b/arch/arm/mach-omap2/omap_hwmod_common_data.c index de832ebc93a9..51e5418899fb 100644 --- a/arch/arm/mach-omap2/omap_hwmod_common_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_common_data.c | |||
| @@ -49,3 +49,7 @@ struct omap_hwmod_sysc_fields omap_hwmod_sysc_type2 = { | |||
| 49 | .srst_shift = SYSC_TYPE2_SOFTRESET_SHIFT, | 49 | .srst_shift = SYSC_TYPE2_SOFTRESET_SHIFT, |
| 50 | }; | 50 | }; |
| 51 | 51 | ||
| 52 | struct omap_dss_dispc_dev_attr omap2_3_dss_dispc_dev_attr = { | ||
| 53 | .manager_count = 2, | ||
| 54 | .has_framedonetv_irq = 0 | ||
| 55 | }; | ||
diff --git a/arch/arm/mach-omap2/omap_hwmod_common_data.h b/arch/arm/mach-omap2/omap_hwmod_common_data.h index 39a7c37f4587..ad5d8f04c0b8 100644 --- a/arch/arm/mach-omap2/omap_hwmod_common_data.h +++ b/arch/arm/mach-omap2/omap_hwmod_common_data.h | |||
| @@ -16,6 +16,8 @@ | |||
| 16 | 16 | ||
| 17 | #include <plat/omap_hwmod.h> | 17 | #include <plat/omap_hwmod.h> |
| 18 | 18 | ||
| 19 | #include "display.h" | ||
| 20 | |||
| 19 | /* Common address space across OMAP2xxx */ | 21 | /* Common address space across OMAP2xxx */ |
| 20 | extern struct omap_hwmod_addr_space omap2xxx_uart1_addr_space[]; | 22 | extern struct omap_hwmod_addr_space omap2xxx_uart1_addr_space[]; |
| 21 | extern struct omap_hwmod_addr_space omap2xxx_uart2_addr_space[]; | 23 | extern struct omap_hwmod_addr_space omap2xxx_uart2_addr_space[]; |
| @@ -111,4 +113,6 @@ extern struct omap_hwmod_class omap2xxx_dma_hwmod_class; | |||
| 111 | extern struct omap_hwmod_class omap2xxx_mailbox_hwmod_class; | 113 | extern struct omap_hwmod_class omap2xxx_mailbox_hwmod_class; |
| 112 | extern struct omap_hwmod_class omap2xxx_mcspi_class; | 114 | extern struct omap_hwmod_class omap2xxx_mcspi_class; |
| 113 | 115 | ||
| 116 | extern struct omap_dss_dispc_dev_attr omap2_3_dss_dispc_dev_attr; | ||
| 117 | |||
| 114 | #endif | 118 | #endif |
diff --git a/arch/arm/mach-omap2/omap_l3_noc.c b/arch/arm/mach-omap2/omap_l3_noc.c index 6a66aa5e2a5b..d15225ff5c49 100644 --- a/arch/arm/mach-omap2/omap_l3_noc.c +++ b/arch/arm/mach-omap2/omap_l3_noc.c | |||
| @@ -237,7 +237,7 @@ static int __devexit omap4_l3_remove(struct platform_device *pdev) | |||
| 237 | static const struct of_device_id l3_noc_match[] = { | 237 | static const struct of_device_id l3_noc_match[] = { |
| 238 | {.compatible = "ti,omap4-l3-noc", }, | 238 | {.compatible = "ti,omap4-l3-noc", }, |
| 239 | {}, | 239 | {}, |
| 240 | } | 240 | }; |
| 241 | MODULE_DEVICE_TABLE(of, l3_noc_match); | 241 | MODULE_DEVICE_TABLE(of, l3_noc_match); |
| 242 | #else | 242 | #else |
| 243 | #define l3_noc_match NULL | 243 | #define l3_noc_match NULL |
diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c index 1e79bdf313e3..00bff46ca48b 100644 --- a/arch/arm/mach-omap2/pm.c +++ b/arch/arm/mach-omap2/pm.c | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #include "powerdomain.h" | 24 | #include "powerdomain.h" |
| 25 | #include "clockdomain.h" | 25 | #include "clockdomain.h" |
| 26 | #include "pm.h" | 26 | #include "pm.h" |
| 27 | #include "twl-common.h" | ||
| 27 | 28 | ||
| 28 | static struct omap_device_pm_latency *pm_lats; | 29 | static struct omap_device_pm_latency *pm_lats; |
| 29 | 30 | ||
| @@ -226,11 +227,8 @@ postcore_initcall(omap2_common_pm_init); | |||
| 226 | 227 | ||
| 227 | static int __init omap2_common_pm_late_init(void) | 228 | static int __init omap2_common_pm_late_init(void) |
| 228 | { | 229 | { |
| 229 | /* Init the OMAP TWL parameters */ | ||
| 230 | omap3_twl_init(); | ||
| 231 | omap4_twl_init(); | ||
| 232 | |||
| 233 | /* Init the voltage layer */ | 230 | /* Init the voltage layer */ |
| 231 | omap_pmic_late_init(); | ||
| 234 | omap_voltage_late_init(); | 232 | omap_voltage_late_init(); |
| 235 | 233 | ||
| 236 | /* Initialize the voltages */ | 234 | /* Initialize the voltages */ |
diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c index 6a4f6839a7d9..cf246b39bac7 100644 --- a/arch/arm/mach-omap2/smartreflex.c +++ b/arch/arm/mach-omap2/smartreflex.c | |||
| @@ -139,7 +139,7 @@ static irqreturn_t sr_interrupt(int irq, void *data) | |||
| 139 | sr_write_reg(sr_info, ERRCONFIG_V1, status); | 139 | sr_write_reg(sr_info, ERRCONFIG_V1, status); |
| 140 | } else if (sr_info->ip_type == SR_TYPE_V2) { | 140 | } else if (sr_info->ip_type == SR_TYPE_V2) { |
| 141 | /* Read the status bits */ | 141 | /* Read the status bits */ |
| 142 | sr_read_reg(sr_info, IRQSTATUS); | 142 | status = sr_read_reg(sr_info, IRQSTATUS); |
| 143 | 143 | ||
| 144 | /* Clear them by writing back */ | 144 | /* Clear them by writing back */ |
| 145 | sr_write_reg(sr_info, IRQSTATUS, status); | 145 | sr_write_reg(sr_info, IRQSTATUS, status); |
diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c index 522435772168..10b20c652e5d 100644 --- a/arch/arm/mach-omap2/twl-common.c +++ b/arch/arm/mach-omap2/twl-common.c | |||
| @@ -30,6 +30,7 @@ | |||
| 30 | #include <plat/usb.h> | 30 | #include <plat/usb.h> |
| 31 | 31 | ||
| 32 | #include "twl-common.h" | 32 | #include "twl-common.h" |
| 33 | #include "pm.h" | ||
| 33 | 34 | ||
| 34 | static struct i2c_board_info __initdata pmic_i2c_board_info = { | 35 | static struct i2c_board_info __initdata pmic_i2c_board_info = { |
| 35 | .addr = 0x48, | 36 | .addr = 0x48, |
| @@ -48,6 +49,16 @@ void __init omap_pmic_init(int bus, u32 clkrate, | |||
| 48 | omap_register_i2c_bus(bus, clkrate, &pmic_i2c_board_info, 1); | 49 | omap_register_i2c_bus(bus, clkrate, &pmic_i2c_board_info, 1); |
| 49 | } | 50 | } |
| 50 | 51 | ||
| 52 | void __init omap_pmic_late_init(void) | ||
| 53 | { | ||
| 54 | /* Init the OMAP TWL parameters (if PMIC has been registerd) */ | ||
| 55 | if (!pmic_i2c_board_info.irq) | ||
| 56 | return; | ||
| 57 | |||
| 58 | omap3_twl_init(); | ||
| 59 | omap4_twl_init(); | ||
| 60 | } | ||
| 61 | |||
| 51 | #if defined(CONFIG_ARCH_OMAP3) | 62 | #if defined(CONFIG_ARCH_OMAP3) |
| 52 | static struct twl4030_usb_data omap3_usb_pdata = { | 63 | static struct twl4030_usb_data omap3_usb_pdata = { |
| 53 | .usb_mode = T2_USB_MODE_ULPI, | 64 | .usb_mode = T2_USB_MODE_ULPI, |
diff --git a/arch/arm/mach-omap2/twl-common.h b/arch/arm/mach-omap2/twl-common.h index 5e83a5bd37fb..275dde8cb27a 100644 --- a/arch/arm/mach-omap2/twl-common.h +++ b/arch/arm/mach-omap2/twl-common.h | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | #ifndef __OMAP_PMIC_COMMON__ | 1 | #ifndef __OMAP_PMIC_COMMON__ |
| 2 | #define __OMAP_PMIC_COMMON__ | 2 | #define __OMAP_PMIC_COMMON__ |
| 3 | 3 | ||
| 4 | #include <plat/irqs.h> | ||
| 5 | |||
| 4 | #define TWL_COMMON_PDATA_USB (1 << 0) | 6 | #define TWL_COMMON_PDATA_USB (1 << 0) |
| 5 | #define TWL_COMMON_PDATA_BCI (1 << 1) | 7 | #define TWL_COMMON_PDATA_BCI (1 << 1) |
| 6 | #define TWL_COMMON_PDATA_MADC (1 << 2) | 8 | #define TWL_COMMON_PDATA_MADC (1 << 2) |
| @@ -30,6 +32,7 @@ struct twl4030_platform_data; | |||
| 30 | 32 | ||
| 31 | void omap_pmic_init(int bus, u32 clkrate, const char *pmic_type, int pmic_irq, | 33 | void omap_pmic_init(int bus, u32 clkrate, const char *pmic_type, int pmic_irq, |
| 32 | struct twl4030_platform_data *pmic_data); | 34 | struct twl4030_platform_data *pmic_data); |
| 35 | void omap_pmic_late_init(void); | ||
| 33 | 36 | ||
| 34 | static inline void omap2_pmic_init(const char *pmic_type, | 37 | static inline void omap2_pmic_init(const char *pmic_type, |
| 35 | struct twl4030_platform_data *pmic_data) | 38 | struct twl4030_platform_data *pmic_data) |
diff --git a/arch/arm/mach-picoxcell/include/mach/debug-macro.S b/arch/arm/mach-picoxcell/include/mach/debug-macro.S index 8f2c234ed9d9..58d4ee3ae949 100644 --- a/arch/arm/mach-picoxcell/include/mach/debug-macro.S +++ b/arch/arm/mach-picoxcell/include/mach/debug-macro.S | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | 14 | ||
| 15 | #define UART_SHIFT 2 | 15 | #define UART_SHIFT 2 |
| 16 | 16 | ||
| 17 | .macro addruart, rp, rv | 17 | .macro addruart, rp, rv, tmp |
| 18 | ldr \rv, =PHYS_TO_IO(PICOXCELL_UART1_BASE) | 18 | ldr \rv, =PHYS_TO_IO(PICOXCELL_UART1_BASE) |
| 19 | ldr \rp, =PICOXCELL_UART1_BASE | 19 | ldr \rp, =PICOXCELL_UART1_BASE |
| 20 | .endm | 20 | .endm |
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c index fc0b8544e174..4b81f59a4cba 100644 --- a/arch/arm/mach-pxa/balloon3.c +++ b/arch/arm/mach-pxa/balloon3.c | |||
| @@ -307,7 +307,7 @@ static inline void balloon3_mmc_init(void) {} | |||
| 307 | /****************************************************************************** | 307 | /****************************************************************************** |
| 308 | * USB Gadget | 308 | * USB Gadget |
| 309 | ******************************************************************************/ | 309 | ******************************************************************************/ |
| 310 | #if defined(CONFIG_USB_GADGET_PXA27X)||defined(CONFIG_USB_GADGET_PXA27X_MODULE) | 310 | #if defined(CONFIG_USB_PXA27X)||defined(CONFIG_USB_PXA27X_MODULE) |
| 311 | static void balloon3_udc_command(int cmd) | 311 | static void balloon3_udc_command(int cmd) |
| 312 | { | 312 | { |
| 313 | if (cmd == PXA2XX_UDC_CMD_CONNECT) | 313 | if (cmd == PXA2XX_UDC_CMD_CONNECT) |
diff --git a/arch/arm/mach-pxa/colibri-pxa320.c b/arch/arm/mach-pxa/colibri-pxa320.c index 692e1ffc5586..d23b92b80488 100644 --- a/arch/arm/mach-pxa/colibri-pxa320.c +++ b/arch/arm/mach-pxa/colibri-pxa320.c | |||
| @@ -146,7 +146,7 @@ static void __init colibri_pxa320_init_eth(void) | |||
| 146 | static inline void __init colibri_pxa320_init_eth(void) {} | 146 | static inline void __init colibri_pxa320_init_eth(void) {} |
| 147 | #endif /* CONFIG_AX88796 */ | 147 | #endif /* CONFIG_AX88796 */ |
| 148 | 148 | ||
| 149 | #if defined(CONFIG_USB_GADGET_PXA27X)||defined(CONFIG_USB_GADGET_PXA27X_MODULE) | 149 | #if defined(CONFIG_USB_PXA27X)||defined(CONFIG_USB_PXA27X_MODULE) |
| 150 | static struct gpio_vbus_mach_info colibri_pxa320_gpio_vbus_info = { | 150 | static struct gpio_vbus_mach_info colibri_pxa320_gpio_vbus_info = { |
| 151 | .gpio_vbus = mfp_to_gpio(MFP_PIN_GPIO96), | 151 | .gpio_vbus = mfp_to_gpio(MFP_PIN_GPIO96), |
| 152 | .gpio_pullup = -1, | 152 | .gpio_pullup = -1, |
diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c index 9c8208ca0415..ffdd70dad327 100644 --- a/arch/arm/mach-pxa/gumstix.c +++ b/arch/arm/mach-pxa/gumstix.c | |||
| @@ -106,7 +106,7 @@ static void __init gumstix_mmc_init(void) | |||
| 106 | } | 106 | } |
| 107 | #endif | 107 | #endif |
| 108 | 108 | ||
| 109 | #ifdef CONFIG_USB_GADGET_PXA25X | 109 | #ifdef CONFIG_USB_PXA25X |
| 110 | static struct gpio_vbus_mach_info gumstix_udc_info = { | 110 | static struct gpio_vbus_mach_info gumstix_udc_info = { |
| 111 | .gpio_vbus = GPIO_GUMSTIX_USB_GPIOn, | 111 | .gpio_vbus = GPIO_GUMSTIX_USB_GPIOn, |
| 112 | .gpio_pullup = GPIO_GUMSTIX_USB_GPIOx, | 112 | .gpio_pullup = GPIO_GUMSTIX_USB_GPIOx, |
diff --git a/arch/arm/mach-pxa/include/mach/palm27x.h b/arch/arm/mach-pxa/include/mach/palm27x.h index f80bbe246afe..d4eac3d6ffb5 100644 --- a/arch/arm/mach-pxa/include/mach/palm27x.h +++ b/arch/arm/mach-pxa/include/mach/palm27x.h | |||
| @@ -37,8 +37,8 @@ extern void __init palm27x_lcd_init(int power, | |||
| 37 | #define palm27x_lcd_init(power, mode) do {} while (0) | 37 | #define palm27x_lcd_init(power, mode) do {} while (0) |
| 38 | #endif | 38 | #endif |
| 39 | 39 | ||
| 40 | #if defined(CONFIG_USB_GADGET_PXA27X) || \ | 40 | #if defined(CONFIG_USB_PXA27X) || \ |
| 41 | defined(CONFIG_USB_GADGET_PXA27X_MODULE) | 41 | defined(CONFIG_USB_PXA27X_MODULE) |
| 42 | extern void __init palm27x_udc_init(int vbus, int pullup, | 42 | extern void __init palm27x_udc_init(int vbus, int pullup, |
| 43 | int vbus_inverted); | 43 | int vbus_inverted); |
| 44 | #else | 44 | #else |
diff --git a/arch/arm/mach-pxa/palm27x.c b/arch/arm/mach-pxa/palm27x.c index 325c245c0a0d..fbc10d7b95d1 100644 --- a/arch/arm/mach-pxa/palm27x.c +++ b/arch/arm/mach-pxa/palm27x.c | |||
| @@ -164,8 +164,8 @@ void __init palm27x_lcd_init(int power, struct pxafb_mode_info *mode) | |||
| 164 | /****************************************************************************** | 164 | /****************************************************************************** |
| 165 | * USB Gadget | 165 | * USB Gadget |
| 166 | ******************************************************************************/ | 166 | ******************************************************************************/ |
| 167 | #if defined(CONFIG_USB_GADGET_PXA27X) || \ | 167 | #if defined(CONFIG_USB_PXA27X) || \ |
| 168 | defined(CONFIG_USB_GADGET_PXA27X_MODULE) | 168 | defined(CONFIG_USB_PXA27X_MODULE) |
| 169 | static struct gpio_vbus_mach_info palm27x_udc_info = { | 169 | static struct gpio_vbus_mach_info palm27x_udc_info = { |
| 170 | .gpio_vbus_inverted = 1, | 170 | .gpio_vbus_inverted = 1, |
| 171 | }; | 171 | }; |
diff --git a/arch/arm/mach-pxa/palmtc.c b/arch/arm/mach-pxa/palmtc.c index 6ec7caefb37c..2c24c67fd92b 100644 --- a/arch/arm/mach-pxa/palmtc.c +++ b/arch/arm/mach-pxa/palmtc.c | |||
| @@ -338,7 +338,7 @@ static inline void palmtc_mkp_init(void) {} | |||
| 338 | /****************************************************************************** | 338 | /****************************************************************************** |
| 339 | * UDC | 339 | * UDC |
| 340 | ******************************************************************************/ | 340 | ******************************************************************************/ |
| 341 | #if defined(CONFIG_USB_GADGET_PXA25X)||defined(CONFIG_USB_GADGET_PXA25X_MODULE) | 341 | #if defined(CONFIG_USB_PXA25X)||defined(CONFIG_USB_PXA25X_MODULE) |
| 342 | static struct gpio_vbus_mach_info palmtc_udc_info = { | 342 | static struct gpio_vbus_mach_info palmtc_udc_info = { |
| 343 | .gpio_vbus = GPIO_NR_PALMTC_USB_DETECT_N, | 343 | .gpio_vbus = GPIO_NR_PALMTC_USB_DETECT_N, |
| 344 | .gpio_vbus_inverted = 1, | 344 | .gpio_vbus_inverted = 1, |
diff --git a/arch/arm/mach-pxa/vpac270.c b/arch/arm/mach-pxa/vpac270.c index a7539a6ed1ff..ca0c6615028c 100644 --- a/arch/arm/mach-pxa/vpac270.c +++ b/arch/arm/mach-pxa/vpac270.c | |||
| @@ -343,7 +343,7 @@ static inline void vpac270_uhc_init(void) {} | |||
| 343 | /****************************************************************************** | 343 | /****************************************************************************** |
| 344 | * USB Gadget | 344 | * USB Gadget |
| 345 | ******************************************************************************/ | 345 | ******************************************************************************/ |
| 346 | #if defined(CONFIG_USB_GADGET_PXA27X)||defined(CONFIG_USB_GADGET_PXA27X_MODULE) | 346 | #if defined(CONFIG_USB_PXA27X)||defined(CONFIG_USB_PXA27X_MODULE) |
| 347 | static struct gpio_vbus_mach_info vpac270_gpio_vbus_info = { | 347 | static struct gpio_vbus_mach_info vpac270_gpio_vbus_info = { |
| 348 | .gpio_vbus = GPIO41_VPAC270_UDC_DETECT, | 348 | .gpio_vbus = GPIO41_VPAC270_UDC_DETECT, |
| 349 | .gpio_pullup = -1, | 349 | .gpio_pullup = -1, |
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c b/arch/arm/mach-s3c64xx/mach-crag6410-module.c index 66668565ee75..f208154b1382 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | #include <linux/module.h> | 11 | #include <linux/export.h> |
| 12 | #include <linux/interrupt.h> | 12 | #include <linux/interrupt.h> |
| 13 | #include <linux/i2c.h> | 13 | #include <linux/i2c.h> |
| 14 | 14 | ||
diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile index 2aec2f732515..737bdc631b0d 100644 --- a/arch/arm/mach-shmobile/Makefile +++ b/arch/arm/mach-shmobile/Makefile | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | # | 3 | # |
| 4 | 4 | ||
| 5 | # Common objects | 5 | # Common objects |
| 6 | obj-y := timer.o console.o clock.o pm_runtime.o | 6 | obj-y := timer.o console.o clock.o |
| 7 | 7 | ||
| 8 | # CPU objects | 8 | # CPU objects |
| 9 | obj-$(CONFIG_ARCH_SH7367) += setup-sh7367.o clock-sh7367.o intc-sh7367.o | 9 | obj-$(CONFIG_ARCH_SH7367) += setup-sh7367.o clock-sh7367.o intc-sh7367.o |
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c index 83624e26b884..b862e9f81e3e 100644 --- a/arch/arm/mach-shmobile/board-ag5evm.c +++ b/arch/arm/mach-shmobile/board-ag5evm.c | |||
| @@ -515,14 +515,14 @@ static void __init ag5evm_init(void) | |||
| 515 | /* enable MMCIF */ | 515 | /* enable MMCIF */ |
| 516 | gpio_request(GPIO_FN_MMCCLK0, NULL); | 516 | gpio_request(GPIO_FN_MMCCLK0, NULL); |
| 517 | gpio_request(GPIO_FN_MMCCMD0_PU, NULL); | 517 | gpio_request(GPIO_FN_MMCCMD0_PU, NULL); |
| 518 | gpio_request(GPIO_FN_MMCD0_0, NULL); | 518 | gpio_request(GPIO_FN_MMCD0_0_PU, NULL); |
| 519 | gpio_request(GPIO_FN_MMCD0_1, NULL); | 519 | gpio_request(GPIO_FN_MMCD0_1_PU, NULL); |
| 520 | gpio_request(GPIO_FN_MMCD0_2, NULL); | 520 | gpio_request(GPIO_FN_MMCD0_2_PU, NULL); |
| 521 | gpio_request(GPIO_FN_MMCD0_3, NULL); | 521 | gpio_request(GPIO_FN_MMCD0_3_PU, NULL); |
| 522 | gpio_request(GPIO_FN_MMCD0_4, NULL); | 522 | gpio_request(GPIO_FN_MMCD0_4_PU, NULL); |
| 523 | gpio_request(GPIO_FN_MMCD0_5, NULL); | 523 | gpio_request(GPIO_FN_MMCD0_5_PU, NULL); |
| 524 | gpio_request(GPIO_FN_MMCD0_6, NULL); | 524 | gpio_request(GPIO_FN_MMCD0_6_PU, NULL); |
| 525 | gpio_request(GPIO_FN_MMCD0_7, NULL); | 525 | gpio_request(GPIO_FN_MMCD0_7_PU, NULL); |
| 526 | gpio_request(GPIO_PORT208, NULL); /* Reset */ | 526 | gpio_request(GPIO_PORT208, NULL); /* Reset */ |
| 527 | gpio_direction_output(GPIO_PORT208, 1); | 527 | gpio_direction_output(GPIO_PORT208, 1); |
| 528 | 528 | ||
diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c index a3aa0f6df964..4c865ece9ac4 100644 --- a/arch/arm/mach-shmobile/board-ap4evb.c +++ b/arch/arm/mach-shmobile/board-ap4evb.c | |||
| @@ -201,7 +201,7 @@ static struct physmap_flash_data nor_flash_data = { | |||
| 201 | static struct resource nor_flash_resources[] = { | 201 | static struct resource nor_flash_resources[] = { |
| 202 | [0] = { | 202 | [0] = { |
| 203 | .start = 0x20000000, /* CS0 shadow instead of regular CS0 */ | 203 | .start = 0x20000000, /* CS0 shadow instead of regular CS0 */ |
| 204 | .end = 0x28000000 - 1, /* needed by USB MASK ROM boot */ | 204 | .end = 0x28000000 - 1, /* needed by USB MASK ROM boot */ |
| 205 | .flags = IORESOURCE_MEM, | 205 | .flags = IORESOURCE_MEM, |
| 206 | } | 206 | } |
| 207 | }; | 207 | }; |
diff --git a/arch/arm/mach-shmobile/board-kota2.c b/arch/arm/mach-shmobile/board-kota2.c index adc73122bf20..bd9a78424d6b 100644 --- a/arch/arm/mach-shmobile/board-kota2.c +++ b/arch/arm/mach-shmobile/board-kota2.c | |||
| @@ -48,6 +48,7 @@ | |||
| 48 | #include <asm/hardware/cache-l2x0.h> | 48 | #include <asm/hardware/cache-l2x0.h> |
| 49 | #include <asm/traps.h> | 49 | #include <asm/traps.h> |
| 50 | 50 | ||
| 51 | /* SMSC 9220 */ | ||
| 51 | static struct resource smsc9220_resources[] = { | 52 | static struct resource smsc9220_resources[] = { |
| 52 | [0] = { | 53 | [0] = { |
| 53 | .start = 0x14000000, /* CS5A */ | 54 | .start = 0x14000000, /* CS5A */ |
| @@ -77,6 +78,7 @@ static struct platform_device eth_device = { | |||
| 77 | .num_resources = ARRAY_SIZE(smsc9220_resources), | 78 | .num_resources = ARRAY_SIZE(smsc9220_resources), |
| 78 | }; | 79 | }; |
| 79 | 80 | ||
| 81 | /* KEYSC */ | ||
| 80 | static struct sh_keysc_info keysc_platdata = { | 82 | static struct sh_keysc_info keysc_platdata = { |
| 81 | .mode = SH_KEYSC_MODE_6, | 83 | .mode = SH_KEYSC_MODE_6, |
| 82 | .scan_timing = 3, | 84 | .scan_timing = 3, |
| @@ -120,6 +122,7 @@ static struct platform_device keysc_device = { | |||
| 120 | }, | 122 | }, |
| 121 | }; | 123 | }; |
| 122 | 124 | ||
| 125 | /* GPIO KEY */ | ||
| 123 | #define GPIO_KEY(c, g, d) { .code = c, .gpio = g, .desc = d, .active_low = 1 } | 126 | #define GPIO_KEY(c, g, d) { .code = c, .gpio = g, .desc = d, .active_low = 1 } |
| 124 | 127 | ||
| 125 | static struct gpio_keys_button gpio_buttons[] = { | 128 | static struct gpio_keys_button gpio_buttons[] = { |
| @@ -150,6 +153,7 @@ static struct platform_device gpio_keys_device = { | |||
| 150 | }, | 153 | }, |
| 151 | }; | 154 | }; |
| 152 | 155 | ||
| 156 | /* GPIO LED */ | ||
| 153 | #define GPIO_LED(n, g) { .name = n, .gpio = g } | 157 | #define GPIO_LED(n, g) { .name = n, .gpio = g } |
| 154 | 158 | ||
| 155 | static struct gpio_led gpio_leds[] = { | 159 | static struct gpio_led gpio_leds[] = { |
| @@ -175,6 +179,7 @@ static struct platform_device gpio_leds_device = { | |||
| 175 | }, | 179 | }, |
| 176 | }; | 180 | }; |
| 177 | 181 | ||
| 182 | /* MMCIF */ | ||
| 178 | static struct resource mmcif_resources[] = { | 183 | static struct resource mmcif_resources[] = { |
| 179 | [0] = { | 184 | [0] = { |
| 180 | .name = "MMCIF", | 185 | .name = "MMCIF", |
| @@ -207,6 +212,7 @@ static struct platform_device mmcif_device = { | |||
| 207 | .resource = mmcif_resources, | 212 | .resource = mmcif_resources, |
| 208 | }; | 213 | }; |
| 209 | 214 | ||
| 215 | /* SDHI0 */ | ||
| 210 | static struct sh_mobile_sdhi_info sdhi0_info = { | 216 | static struct sh_mobile_sdhi_info sdhi0_info = { |
| 211 | .tmio_caps = MMC_CAP_SD_HIGHSPEED, | 217 | .tmio_caps = MMC_CAP_SD_HIGHSPEED, |
| 212 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_HAS_IDLE_WAIT, | 218 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_HAS_IDLE_WAIT, |
| @@ -243,6 +249,7 @@ static struct platform_device sdhi0_device = { | |||
| 243 | }, | 249 | }, |
| 244 | }; | 250 | }; |
| 245 | 251 | ||
| 252 | /* SDHI1 */ | ||
| 246 | static struct sh_mobile_sdhi_info sdhi1_info = { | 253 | static struct sh_mobile_sdhi_info sdhi1_info = { |
| 247 | .tmio_caps = MMC_CAP_NONREMOVABLE | MMC_CAP_SDIO_IRQ, | 254 | .tmio_caps = MMC_CAP_NONREMOVABLE | MMC_CAP_SDIO_IRQ, |
| 248 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_HAS_IDLE_WAIT, | 255 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_HAS_IDLE_WAIT, |
diff --git a/arch/arm/mach-shmobile/clock-sh7372.c b/arch/arm/mach-shmobile/clock-sh7372.c index 66975921e646..995a9c3aec8f 100644 --- a/arch/arm/mach-shmobile/clock-sh7372.c +++ b/arch/arm/mach-shmobile/clock-sh7372.c | |||
| @@ -476,7 +476,7 @@ static struct clk_ops fsidiv_clk_ops = { | |||
| 476 | .disable = fsidiv_disable, | 476 | .disable = fsidiv_disable, |
| 477 | }; | 477 | }; |
| 478 | 478 | ||
| 479 | static struct clk_mapping sh7372_fsidiva_clk_mapping = { | 479 | static struct clk_mapping fsidiva_clk_mapping = { |
| 480 | .phys = FSIDIVA, | 480 | .phys = FSIDIVA, |
| 481 | .len = 8, | 481 | .len = 8, |
| 482 | }; | 482 | }; |
| @@ -484,10 +484,10 @@ static struct clk_mapping sh7372_fsidiva_clk_mapping = { | |||
| 484 | struct clk sh7372_fsidiva_clk = { | 484 | struct clk sh7372_fsidiva_clk = { |
| 485 | .ops = &fsidiv_clk_ops, | 485 | .ops = &fsidiv_clk_ops, |
| 486 | .parent = &div6_reparent_clks[DIV6_FSIA], /* late install */ | 486 | .parent = &div6_reparent_clks[DIV6_FSIA], /* late install */ |
| 487 | .mapping = &sh7372_fsidiva_clk_mapping, | 487 | .mapping = &fsidiva_clk_mapping, |
| 488 | }; | 488 | }; |
| 489 | 489 | ||
| 490 | static struct clk_mapping sh7372_fsidivb_clk_mapping = { | 490 | static struct clk_mapping fsidivb_clk_mapping = { |
| 491 | .phys = FSIDIVB, | 491 | .phys = FSIDIVB, |
| 492 | .len = 8, | 492 | .len = 8, |
| 493 | }; | 493 | }; |
| @@ -495,7 +495,7 @@ static struct clk_mapping sh7372_fsidivb_clk_mapping = { | |||
| 495 | struct clk sh7372_fsidivb_clk = { | 495 | struct clk sh7372_fsidivb_clk = { |
| 496 | .ops = &fsidiv_clk_ops, | 496 | .ops = &fsidiv_clk_ops, |
| 497 | .parent = &div6_reparent_clks[DIV6_FSIB], /* late install */ | 497 | .parent = &div6_reparent_clks[DIV6_FSIB], /* late install */ |
| 498 | .mapping = &sh7372_fsidivb_clk_mapping, | 498 | .mapping = &fsidivb_clk_mapping, |
| 499 | }; | 499 | }; |
| 500 | 500 | ||
| 501 | static struct clk *late_main_clks[] = { | 501 | static struct clk *late_main_clks[] = { |
diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c index 2e44f11f592e..1b2334277e85 100644 --- a/arch/arm/mach-shmobile/cpuidle.c +++ b/arch/arm/mach-shmobile/cpuidle.c | |||
| @@ -26,65 +26,59 @@ void (*shmobile_cpuidle_modes[CPUIDLE_STATE_MAX])(void) = { | |||
| 26 | }; | 26 | }; |
| 27 | 27 | ||
| 28 | static int shmobile_cpuidle_enter(struct cpuidle_device *dev, | 28 | static int shmobile_cpuidle_enter(struct cpuidle_device *dev, |
| 29 | struct cpuidle_state *state) | 29 | struct cpuidle_driver *drv, |
| 30 | int index) | ||
| 30 | { | 31 | { |
| 31 | ktime_t before, after; | 32 | ktime_t before, after; |
| 32 | int requested_state = state - &dev->states[0]; | ||
| 33 | 33 | ||
| 34 | dev->last_state = &dev->states[requested_state]; | ||
| 35 | before = ktime_get(); | 34 | before = ktime_get(); |
| 36 | 35 | ||
| 37 | local_irq_disable(); | 36 | local_irq_disable(); |
| 38 | local_fiq_disable(); | 37 | local_fiq_disable(); |
| 39 | 38 | ||
| 40 | shmobile_cpuidle_modes[requested_state](); | 39 | shmobile_cpuidle_modes[index](); |
| 41 | 40 | ||
| 42 | local_irq_enable(); | 41 | local_irq_enable(); |
| 43 | local_fiq_enable(); | 42 | local_fiq_enable(); |
| 44 | 43 | ||
| 45 | after = ktime_get(); | 44 | after = ktime_get(); |
| 46 | return ktime_to_ns(ktime_sub(after, before)) >> 10; | 45 | dev->last_residency = ktime_to_ns(ktime_sub(after, before)) >> 10; |
| 46 | |||
| 47 | return index; | ||
| 47 | } | 48 | } |
| 48 | 49 | ||
| 49 | static struct cpuidle_device shmobile_cpuidle_dev; | 50 | static struct cpuidle_device shmobile_cpuidle_dev; |
| 50 | static struct cpuidle_driver shmobile_cpuidle_driver = { | 51 | static struct cpuidle_driver shmobile_cpuidle_driver = { |
| 51 | .name = "shmobile_cpuidle", | 52 | .name = "shmobile_cpuidle", |
| 52 | .owner = THIS_MODULE, | 53 | .owner = THIS_MODULE, |
| 54 | .states[0] = { | ||
| 55 | .name = "C1", | ||
| 56 | .desc = "WFI", | ||
| 57 | .exit_latency = 1, | ||
| 58 | .target_residency = 1 * 2, | ||
| 59 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
| 60 | }, | ||
| 61 | .safe_state_index = 0, /* C1 */ | ||
| 62 | .state_count = 1, | ||
| 53 | }; | 63 | }; |
| 54 | 64 | ||
| 55 | void (*shmobile_cpuidle_setup)(struct cpuidle_device *dev); | 65 | void (*shmobile_cpuidle_setup)(struct cpuidle_driver *drv); |
| 56 | 66 | ||
| 57 | static int shmobile_cpuidle_init(void) | 67 | static int shmobile_cpuidle_init(void) |
| 58 | { | 68 | { |
| 59 | struct cpuidle_device *dev = &shmobile_cpuidle_dev; | 69 | struct cpuidle_device *dev = &shmobile_cpuidle_dev; |
| 60 | struct cpuidle_state *state; | 70 | struct cpuidle_driver *drv = &shmobile_cpuidle_driver; |
| 61 | int i; | 71 | int i; |
| 62 | 72 | ||
| 63 | cpuidle_register_driver(&shmobile_cpuidle_driver); | 73 | for (i = 0; i < CPUIDLE_STATE_MAX; i++) |
| 64 | 74 | drv->states[i].enter = shmobile_cpuidle_enter; | |
| 65 | for (i = 0; i < CPUIDLE_STATE_MAX; i++) { | ||
| 66 | dev->states[i].name[0] = '\0'; | ||
| 67 | dev->states[i].desc[0] = '\0'; | ||
| 68 | dev->states[i].enter = shmobile_cpuidle_enter; | ||
| 69 | } | ||
| 70 | |||
| 71 | i = CPUIDLE_DRIVER_STATE_START; | ||
| 72 | |||
| 73 | state = &dev->states[i++]; | ||
| 74 | snprintf(state->name, CPUIDLE_NAME_LEN, "C1"); | ||
| 75 | strncpy(state->desc, "WFI", CPUIDLE_DESC_LEN); | ||
| 76 | state->exit_latency = 1; | ||
| 77 | state->target_residency = 1 * 2; | ||
| 78 | state->power_usage = 3; | ||
| 79 | state->flags = 0; | ||
| 80 | state->flags |= CPUIDLE_FLAG_TIME_VALID; | ||
| 81 | |||
| 82 | dev->safe_state = state; | ||
| 83 | dev->state_count = i; | ||
| 84 | 75 | ||
| 85 | if (shmobile_cpuidle_setup) | 76 | if (shmobile_cpuidle_setup) |
| 86 | shmobile_cpuidle_setup(dev); | 77 | shmobile_cpuidle_setup(drv); |
| 78 | |||
| 79 | cpuidle_register_driver(drv); | ||
| 87 | 80 | ||
| 81 | dev->state_count = drv->state_count; | ||
| 88 | cpuidle_register_device(dev); | 82 | cpuidle_register_device(dev); |
| 89 | 83 | ||
| 90 | return 0; | 84 | return 0; |
diff --git a/arch/arm/mach-shmobile/include/mach/common.h b/arch/arm/mach-shmobile/include/mach/common.h index c0cdbf997c91..834bd6cd508f 100644 --- a/arch/arm/mach-shmobile/include/mach/common.h +++ b/arch/arm/mach-shmobile/include/mach/common.h | |||
| @@ -9,9 +9,9 @@ extern int clk_init(void); | |||
| 9 | extern void shmobile_handle_irq_intc(struct pt_regs *); | 9 | extern void shmobile_handle_irq_intc(struct pt_regs *); |
| 10 | extern void shmobile_handle_irq_gic(struct pt_regs *); | 10 | extern void shmobile_handle_irq_gic(struct pt_regs *); |
| 11 | extern struct platform_suspend_ops shmobile_suspend_ops; | 11 | extern struct platform_suspend_ops shmobile_suspend_ops; |
| 12 | struct cpuidle_device; | 12 | struct cpuidle_driver; |
| 13 | extern void (*shmobile_cpuidle_modes[])(void); | 13 | extern void (*shmobile_cpuidle_modes[])(void); |
| 14 | extern void (*shmobile_cpuidle_setup)(struct cpuidle_device *dev); | 14 | extern void (*shmobile_cpuidle_setup)(struct cpuidle_driver *drv); |
| 15 | 15 | ||
| 16 | extern void sh7367_init_irq(void); | 16 | extern void sh7367_init_irq(void); |
| 17 | extern void sh7367_add_early_devices(void); | 17 | extern void sh7367_add_early_devices(void); |
diff --git a/arch/arm/mach-shmobile/include/mach/sh73a0.h b/arch/arm/mach-shmobile/include/mach/sh73a0.h index 18ae6a990bc2..881d515a9686 100644 --- a/arch/arm/mach-shmobile/include/mach/sh73a0.h +++ b/arch/arm/mach-shmobile/include/mach/sh73a0.h | |||
| @@ -470,6 +470,14 @@ enum { | |||
| 470 | GPIO_FN_SDHICMD2_PU, | 470 | GPIO_FN_SDHICMD2_PU, |
| 471 | GPIO_FN_MMCCMD0_PU, | 471 | GPIO_FN_MMCCMD0_PU, |
| 472 | GPIO_FN_MMCCMD1_PU, | 472 | GPIO_FN_MMCCMD1_PU, |
| 473 | GPIO_FN_MMCD0_0_PU, | ||
| 474 | GPIO_FN_MMCD0_1_PU, | ||
| 475 | GPIO_FN_MMCD0_2_PU, | ||
| 476 | GPIO_FN_MMCD0_3_PU, | ||
| 477 | GPIO_FN_MMCD0_4_PU, | ||
| 478 | GPIO_FN_MMCD0_5_PU, | ||
| 479 | GPIO_FN_MMCD0_6_PU, | ||
| 480 | GPIO_FN_MMCD0_7_PU, | ||
| 473 | GPIO_FN_FSIACK_PU, | 481 | GPIO_FN_FSIACK_PU, |
| 474 | GPIO_FN_FSIAILR_PU, | 482 | GPIO_FN_FSIAILR_PU, |
| 475 | GPIO_FN_FSIAIBT_PU, | 483 | GPIO_FN_FSIAIBT_PU, |
diff --git a/arch/arm/mach-shmobile/pfc-sh7367.c b/arch/arm/mach-shmobile/pfc-sh7367.c index 128555e76e43..e6e524654e67 100644 --- a/arch/arm/mach-shmobile/pfc-sh7367.c +++ b/arch/arm/mach-shmobile/pfc-sh7367.c | |||
| @@ -21,68 +21,49 @@ | |||
| 21 | #include <linux/gpio.h> | 21 | #include <linux/gpio.h> |
| 22 | #include <mach/sh7367.h> | 22 | #include <mach/sh7367.h> |
| 23 | 23 | ||
| 24 | #define _1(fn, pfx, sfx) fn(pfx, sfx) | 24 | #define CPU_ALL_PORT(fn, pfx, sfx) \ |
| 25 | 25 | PORT_10(fn, pfx, sfx), PORT_90(fn, pfx, sfx), \ | |
| 26 | #define _10(fn, pfx, sfx) \ | 26 | PORT_10(fn, pfx##10, sfx), PORT_90(fn, pfx##1, sfx), \ |
| 27 | _1(fn, pfx##0, sfx), _1(fn, pfx##1, sfx), \ | 27 | PORT_10(fn, pfx##20, sfx), PORT_10(fn, pfx##21, sfx), \ |
| 28 | _1(fn, pfx##2, sfx), _1(fn, pfx##3, sfx), \ | 28 | PORT_10(fn, pfx##22, sfx), PORT_10(fn, pfx##23, sfx), \ |
| 29 | _1(fn, pfx##4, sfx), _1(fn, pfx##5, sfx), \ | 29 | PORT_10(fn, pfx##24, sfx), PORT_10(fn, pfx##25, sfx), \ |
| 30 | _1(fn, pfx##6, sfx), _1(fn, pfx##7, sfx), \ | 30 | PORT_10(fn, pfx##26, sfx), PORT_1(fn, pfx##270, sfx), \ |
| 31 | _1(fn, pfx##8, sfx), _1(fn, pfx##9, sfx) | 31 | PORT_1(fn, pfx##271, sfx), PORT_1(fn, pfx##272, sfx) |
| 32 | |||
| 33 | #define _90(fn, pfx, sfx) \ | ||
| 34 | _10(fn, pfx##1, sfx), _10(fn, pfx##2, sfx), \ | ||
| 35 | _10(fn, pfx##3, sfx), _10(fn, pfx##4, sfx), \ | ||
| 36 | _10(fn, pfx##5, sfx), _10(fn, pfx##6, sfx), \ | ||
| 37 | _10(fn, pfx##7, sfx), _10(fn, pfx##8, sfx), \ | ||
| 38 | _10(fn, pfx##9, sfx) | ||
| 39 | |||
| 40 | #define _273(fn, pfx, sfx) \ | ||
| 41 | _10(fn, pfx, sfx), _90(fn, pfx, sfx), \ | ||
| 42 | _10(fn, pfx##10, sfx), _90(fn, pfx##1, sfx), \ | ||
| 43 | _10(fn, pfx##20, sfx), _10(fn, pfx##21, sfx), \ | ||
| 44 | _10(fn, pfx##22, sfx), _10(fn, pfx##23, sfx), \ | ||
| 45 | _10(fn, pfx##24, sfx), _10(fn, pfx##25, sfx), \ | ||
| 46 | _10(fn, pfx##26, sfx), _1(fn, pfx##270, sfx), \ | ||
| 47 | _1(fn, pfx##271, sfx), _1(fn, pfx##272, sfx) | ||
| 48 | |||
| 49 | #define _PORT(pfx, sfx) pfx##_##sfx | ||
| 50 | #define PORT_273(str) _273(_PORT, PORT, str) | ||
| 51 | 32 | ||
| 52 | enum { | 33 | enum { |
| 53 | PINMUX_RESERVED = 0, | 34 | PINMUX_RESERVED = 0, |
| 54 | 35 | ||
| 55 | PINMUX_DATA_BEGIN, | 36 | PINMUX_DATA_BEGIN, |
| 56 | PORT_273(DATA), /* PORT0_DATA -> PORT272_DATA */ | 37 | PORT_ALL(DATA), /* PORT0_DATA -> PORT272_DATA */ |
| 57 | PINMUX_DATA_END, | 38 | PINMUX_DATA_END, |
| 58 | 39 | ||
| 59 | PINMUX_INPUT_BEGIN, | 40 | PINMUX_INPUT_BEGIN, |
| 60 | PORT_273(IN), /* PORT0_IN -> PORT272_IN */ | 41 | PORT_ALL(IN), /* PORT0_IN -> PORT272_IN */ |
| 61 | PINMUX_INPUT_END, | 42 | PINMUX_INPUT_END, |
| 62 | 43 | ||
| 63 | PINMUX_INPUT_PULLUP_BEGIN, | 44 | PINMUX_INPUT_PULLUP_BEGIN, |
| 64 | PORT_273(IN_PU), /* PORT0_IN_PU -> PORT272_IN_PU */ | 45 | PORT_ALL(IN_PU), /* PORT0_IN_PU -> PORT272_IN_PU */ |
| 65 | PINMUX_INPUT_PULLUP_END, | 46 | PINMUX_INPUT_PULLUP_END, |
| 66 | 47 | ||
| 67 | PINMUX_INPUT_PULLDOWN_BEGIN, | 48 | PINMUX_INPUT_PULLDOWN_BEGIN, |
| 68 | PORT_273(IN_PD), /* PORT0_IN_PD -> PORT272_IN_PD */ | 49 | PORT_ALL(IN_PD), /* PORT0_IN_PD -> PORT272_IN_PD */ |
| 69 | PINMUX_INPUT_PULLDOWN_END, | 50 | PINMUX_INPUT_PULLDOWN_END, |
| 70 | 51 | ||
| 71 | PINMUX_OUTPUT_BEGIN, | 52 | PINMUX_OUTPUT_BEGIN, |
| 72 | PORT_273(OUT), /* PORT0_OUT -> PORT272_OUT */ | 53 | PORT_ALL(OUT), /* PORT0_OUT -> PORT272_OUT */ |
| 73 | PINMUX_OUTPUT_END, | 54 | PINMUX_OUTPUT_END, |
| 74 | 55 | ||
| 75 | PINMUX_FUNCTION_BEGIN, | 56 | PINMUX_FUNCTION_BEGIN, |
| 76 | PORT_273(FN_IN), /* PORT0_FN_IN -> PORT272_FN_IN */ | 57 | PORT_ALL(FN_IN), /* PORT0_FN_IN -> PORT272_FN_IN */ |
| 77 | PORT_273(FN_OUT), /* PORT0_FN_OUT -> PORT272_FN_OUT */ | 58 | PORT_ALL(FN_OUT), /* PORT0_FN_OUT -> PORT272_FN_OUT */ |
| 78 | PORT_273(FN0), /* PORT0_FN0 -> PORT272_FN0 */ | 59 | PORT_ALL(FN0), /* PORT0_FN0 -> PORT272_FN0 */ |
| 79 | PORT_273(FN1), /* PORT0_FN1 -> PORT272_FN1 */ | 60 | PORT_ALL(FN1), /* PORT0_FN1 -> PORT272_FN1 */ |
| 80 | PORT_273(FN2), /* PORT0_FN2 -> PORT272_FN2 */ | 61 | PORT_ALL(FN2), /* PORT0_FN2 -> PORT272_FN2 */ |
| 81 | PORT_273(FN3), /* PORT0_FN3 -> PORT272_FN3 */ | 62 | PORT_ALL(FN3), /* PORT0_FN3 -> PORT272_FN3 */ |
| 82 | PORT_273(FN4), /* PORT0_FN4 -> PORT272_FN4 */ | 63 | PORT_ALL(FN4), /* PORT0_FN4 -> PORT272_FN4 */ |
| 83 | PORT_273(FN5), /* PORT0_FN5 -> PORT272_FN5 */ | 64 | PORT_ALL(FN5), /* PORT0_FN5 -> PORT272_FN5 */ |
| 84 | PORT_273(FN6), /* PORT0_FN6 -> PORT272_FN6 */ | 65 | PORT_ALL(FN6), /* PORT0_FN6 -> PORT272_FN6 */ |
| 85 | PORT_273(FN7), /* PORT0_FN7 -> PORT272_FN7 */ | 66 | PORT_ALL(FN7), /* PORT0_FN7 -> PORT272_FN7 */ |
| 86 | 67 | ||
| 87 | MSELBCR_MSEL2_1, MSELBCR_MSEL2_0, | 68 | MSELBCR_MSEL2_1, MSELBCR_MSEL2_0, |
| 88 | PINMUX_FUNCTION_END, | 69 | PINMUX_FUNCTION_END, |
| @@ -327,41 +308,6 @@ enum { | |||
| 327 | PINMUX_MARK_END, | 308 | PINMUX_MARK_END, |
| 328 | }; | 309 | }; |
| 329 | 310 | ||
| 330 | #define PORT_DATA_I(nr) \ | ||
| 331 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_IN) | ||
| 332 | |||
| 333 | #define PORT_DATA_I_PD(nr) \ | ||
| 334 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 335 | PORT##nr##_IN, PORT##nr##_IN_PD) | ||
| 336 | |||
| 337 | #define PORT_DATA_I_PU(nr) \ | ||
| 338 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 339 | PORT##nr##_IN, PORT##nr##_IN_PU) | ||
| 340 | |||
| 341 | #define PORT_DATA_I_PU_PD(nr) \ | ||
| 342 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 343 | PORT##nr##_IN, PORT##nr##_IN_PD, PORT##nr##_IN_PU) | ||
| 344 | |||
| 345 | #define PORT_DATA_O(nr) \ | ||
| 346 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT) | ||
| 347 | |||
| 348 | #define PORT_DATA_IO(nr) \ | ||
| 349 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \ | ||
| 350 | PORT##nr##_IN) | ||
| 351 | |||
| 352 | #define PORT_DATA_IO_PD(nr) \ | ||
| 353 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \ | ||
| 354 | PORT##nr##_IN, PORT##nr##_IN_PD) | ||
| 355 | |||
| 356 | #define PORT_DATA_IO_PU(nr) \ | ||
| 357 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \ | ||
| 358 | PORT##nr##_IN, PORT##nr##_IN_PU) | ||
| 359 | |||
| 360 | #define PORT_DATA_IO_PU_PD(nr) \ | ||
| 361 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \ | ||
| 362 | PORT##nr##_IN, PORT##nr##_IN_PD, PORT##nr##_IN_PU) | ||
| 363 | |||
| 364 | |||
| 365 | static pinmux_enum_t pinmux_data[] = { | 311 | static pinmux_enum_t pinmux_data[] = { |
| 366 | 312 | ||
| 367 | /* specify valid pin states for each pin in GPIO mode */ | 313 | /* specify valid pin states for each pin in GPIO mode */ |
| @@ -1098,13 +1044,9 @@ static pinmux_enum_t pinmux_data[] = { | |||
| 1098 | PINMUX_DATA(DIVLOCK_MARK, PORT272_FN1), | 1044 | PINMUX_DATA(DIVLOCK_MARK, PORT272_FN1), |
| 1099 | }; | 1045 | }; |
| 1100 | 1046 | ||
| 1101 | #define _GPIO_PORT(pfx, sfx) PINMUX_GPIO(GPIO_PORT##pfx, PORT##pfx##_DATA) | ||
| 1102 | #define GPIO_PORT_273() _273(_GPIO_PORT, , unused) | ||
| 1103 | #define GPIO_FN(str) PINMUX_GPIO(GPIO_FN_##str, str##_MARK) | ||
| 1104 | |||
| 1105 | static struct pinmux_gpio pinmux_gpios[] = { | 1047 | static struct pinmux_gpio pinmux_gpios[] = { |
| 1106 | /* 49-1 -> 49-6 (GPIO) */ | 1048 | /* 49-1 -> 49-6 (GPIO) */ |
| 1107 | GPIO_PORT_273(), | 1049 | GPIO_PORT_ALL(), |
| 1108 | 1050 | ||
| 1109 | /* Special Pull-up / Pull-down Functions */ | 1051 | /* Special Pull-up / Pull-down Functions */ |
| 1110 | GPIO_FN(PORT48_KEYIN0_PU), GPIO_FN(PORT49_KEYIN1_PU), | 1052 | GPIO_FN(PORT48_KEYIN0_PU), GPIO_FN(PORT49_KEYIN1_PU), |
| @@ -1345,22 +1287,6 @@ static struct pinmux_gpio pinmux_gpios[] = { | |||
| 1345 | GPIO_FN(DIVLOCK), | 1287 | GPIO_FN(DIVLOCK), |
| 1346 | }; | 1288 | }; |
| 1347 | 1289 | ||
| 1348 | /* helper for top 4 bits in PORTnCR */ | ||
| 1349 | #define PCRH(in, in_pd, in_pu, out) \ | ||
| 1350 | 0, (out), (in), 0, \ | ||
| 1351 | 0, 0, 0, 0, \ | ||
| 1352 | 0, 0, (in_pd), 0, \ | ||
| 1353 | 0, 0, (in_pu), 0 | ||
| 1354 | |||
| 1355 | #define PORTCR(nr, reg) \ | ||
| 1356 | { PINMUX_CFG_REG("PORT" nr "CR", reg, 8, 4) { \ | ||
| 1357 | PCRH(PORT##nr##_IN, PORT##nr##_IN_PD, \ | ||
| 1358 | PORT##nr##_IN_PU, PORT##nr##_OUT), \ | ||
| 1359 | PORT##nr##_FN0, PORT##nr##_FN1, PORT##nr##_FN2, \ | ||
| 1360 | PORT##nr##_FN3, PORT##nr##_FN4, PORT##nr##_FN5, \ | ||
| 1361 | PORT##nr##_FN6, PORT##nr##_FN7 } \ | ||
| 1362 | } | ||
| 1363 | |||
| 1364 | static struct pinmux_cfg_reg pinmux_config_regs[] = { | 1290 | static struct pinmux_cfg_reg pinmux_config_regs[] = { |
| 1365 | PORTCR(0, 0xe6050000), /* PORT0CR */ | 1291 | PORTCR(0, 0xe6050000), /* PORT0CR */ |
| 1366 | PORTCR(1, 0xe6050001), /* PORT1CR */ | 1292 | PORTCR(1, 0xe6050001), /* PORT1CR */ |
diff --git a/arch/arm/mach-shmobile/pfc-sh7372.c b/arch/arm/mach-shmobile/pfc-sh7372.c index 9c265dae138a..1bd6585a6acf 100644 --- a/arch/arm/mach-shmobile/pfc-sh7372.c +++ b/arch/arm/mach-shmobile/pfc-sh7372.c | |||
| @@ -25,27 +25,13 @@ | |||
| 25 | #include <linux/gpio.h> | 25 | #include <linux/gpio.h> |
| 26 | #include <mach/sh7372.h> | 26 | #include <mach/sh7372.h> |
| 27 | 27 | ||
| 28 | #define _1(fn, pfx, sfx) fn(pfx, sfx) | 28 | #define CPU_ALL_PORT(fn, pfx, sfx) \ |
| 29 | 29 | PORT_10(fn, pfx, sfx), PORT_90(fn, pfx, sfx), \ | |
| 30 | #define _10(fn, pfx, sfx) \ | 30 | PORT_10(fn, pfx##10, sfx), PORT_10(fn, pfx##11, sfx), \ |
| 31 | _1(fn, pfx##0, sfx), _1(fn, pfx##1, sfx), \ | 31 | PORT_10(fn, pfx##12, sfx), PORT_10(fn, pfx##13, sfx), \ |
| 32 | _1(fn, pfx##2, sfx), _1(fn, pfx##3, sfx), \ | 32 | PORT_10(fn, pfx##14, sfx), PORT_10(fn, pfx##15, sfx), \ |
| 33 | _1(fn, pfx##4, sfx), _1(fn, pfx##5, sfx), \ | 33 | PORT_10(fn, pfx##16, sfx), PORT_10(fn, pfx##17, sfx), \ |
| 34 | _1(fn, pfx##6, sfx), _1(fn, pfx##7, sfx), \ | 34 | PORT_10(fn, pfx##18, sfx), PORT_1(fn, pfx##190, sfx) |
| 35 | _1(fn, pfx##8, sfx), _1(fn, pfx##9, sfx) | ||
| 36 | |||
| 37 | #define _80(fn, pfx, sfx) \ | ||
| 38 | _10(fn, pfx##1, sfx), _10(fn, pfx##2, sfx), \ | ||
| 39 | _10(fn, pfx##3, sfx), _10(fn, pfx##4, sfx), \ | ||
| 40 | _10(fn, pfx##5, sfx), _10(fn, pfx##6, sfx), \ | ||
| 41 | _10(fn, pfx##7, sfx), _10(fn, pfx##8, sfx) | ||
| 42 | |||
| 43 | #define _190(fn, pfx, sfx) \ | ||
| 44 | _10(fn, pfx, sfx), _80(fn, pfx, sfx), _10(fn, pfx##9, sfx), \ | ||
| 45 | _10(fn, pfx##10, sfx), _80(fn, pfx##1, sfx), _1(fn, pfx##190, sfx) | ||
| 46 | |||
| 47 | #define _PORT(pfx, sfx) pfx##_##sfx | ||
| 48 | #define PORT_ALL(str) _190(_PORT, PORT, str) | ||
| 49 | 35 | ||
| 50 | enum { | 36 | enum { |
| 51 | PINMUX_RESERVED = 0, | 37 | PINMUX_RESERVED = 0, |
| @@ -381,108 +367,124 @@ enum { | |||
| 381 | PINMUX_MARK_END, | 367 | PINMUX_MARK_END, |
| 382 | }; | 368 | }; |
| 383 | 369 | ||
| 384 | /* PORT_DATA_I_PD(nr) */ | ||
| 385 | #define _I___D(nr) \ | ||
| 386 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 387 | PORT##nr##_IN, PORT##nr##_IN_PD) | ||
| 388 | |||
| 389 | /* PORT_DATA_I_PU(nr) */ | ||
| 390 | #define _I__U_(nr) \ | ||
| 391 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 392 | PORT##nr##_IN, PORT##nr##_IN_PU) | ||
| 393 | |||
| 394 | /* PORT_DATA_I_PU_PD(nr) */ | ||
| 395 | #define _I__UD(nr) \ | ||
| 396 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 397 | PORT##nr##_IN, PORT##nr##_IN_PD, PORT##nr##_IN_PU) | ||
| 398 | |||
| 399 | /* PORT_DATA_O(nr) */ | ||
| 400 | #define __O___(nr) \ | ||
| 401 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT) | ||
| 402 | |||
| 403 | /* PORT_DATA_IO(nr) */ | ||
| 404 | #define _IO___(nr) \ | ||
| 405 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \ | ||
| 406 | PORT##nr##_IN) | ||
| 407 | |||
| 408 | /* PORT_DATA_IO_PD(nr) */ | ||
| 409 | #define _IO__D(nr) \ | ||
| 410 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \ | ||
| 411 | PORT##nr##_IN, PORT##nr##_IN_PD) | ||
| 412 | |||
| 413 | /* PORT_DATA_IO_PU(nr) */ | ||
| 414 | #define _IO_U_(nr) \ | ||
| 415 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \ | ||
| 416 | PORT##nr##_IN, PORT##nr##_IN_PU) | ||
| 417 | |||
| 418 | /* PORT_DATA_IO_PU_PD(nr) */ | ||
| 419 | #define _IO_UD(nr) \ | ||
| 420 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \ | ||
| 421 | PORT##nr##_IN, PORT##nr##_IN_PD, PORT##nr##_IN_PU) | ||
| 422 | |||
| 423 | |||
| 424 | static pinmux_enum_t pinmux_data[] = { | 370 | static pinmux_enum_t pinmux_data[] = { |
| 425 | 371 | ||
| 426 | /* specify valid pin states for each pin in GPIO mode */ | 372 | /* specify valid pin states for each pin in GPIO mode */ |
| 427 | 373 | PORT_DATA_IO_PD(0), PORT_DATA_IO_PD(1), | |
| 428 | _IO__D(0), _IO__D(1), __O___(2), _I___D(3), _I___D(4), | 374 | PORT_DATA_O(2), PORT_DATA_I_PD(3), |
| 429 | _I___D(5), _IO_UD(6), _I___D(7), _IO__D(8), __O___(9), | 375 | PORT_DATA_I_PD(4), PORT_DATA_I_PD(5), |
| 430 | 376 | PORT_DATA_IO_PU_PD(6), PORT_DATA_I_PD(7), | |
| 431 | __O___(10), __O___(11), _IO_UD(12), _IO__D(13), _IO__D(14), | 377 | PORT_DATA_IO_PD(8), PORT_DATA_O(9), |
| 432 | __O___(15), _IO__D(16), _IO__D(17), _I___D(18), _IO___(19), | 378 | |
| 433 | 379 | PORT_DATA_O(10), PORT_DATA_O(11), | |
| 434 | _IO___(20), _IO___(21), _IO___(22), _IO___(23), _IO___(24), | 380 | PORT_DATA_IO_PU_PD(12), PORT_DATA_IO_PD(13), |
| 435 | _IO___(25), _IO___(26), _IO___(27), _IO___(28), _IO___(29), | 381 | PORT_DATA_IO_PD(14), PORT_DATA_O(15), |
| 436 | 382 | PORT_DATA_IO_PD(16), PORT_DATA_IO_PD(17), | |
| 437 | _IO___(30), _IO___(31), _IO___(32), _IO___(33), _IO___(34), | 383 | PORT_DATA_I_PD(18), PORT_DATA_IO(19), |
| 438 | _IO___(35), _IO___(36), _IO___(37), _IO___(38), _IO___(39), | 384 | |
| 439 | 385 | PORT_DATA_IO(20), PORT_DATA_IO(21), | |
| 440 | _IO___(40), _IO___(41), _IO___(42), _IO___(43), _IO___(44), | 386 | PORT_DATA_IO(22), PORT_DATA_IO(23), |
| 441 | _IO___(45), _IO_U_(46), _IO_U_(47), _IO_U_(48), _IO_U_(49), | 387 | PORT_DATA_IO(24), PORT_DATA_IO(25), |
| 442 | 388 | PORT_DATA_IO(26), PORT_DATA_IO(27), | |
| 443 | _IO_U_(50), _IO_U_(51), _IO_U_(52), _IO_U_(53), _IO_U_(54), | 389 | PORT_DATA_IO(28), PORT_DATA_IO(29), |
| 444 | _IO_U_(55), _IO_U_(56), _IO_U_(57), _IO_U_(58), _IO_U_(59), | 390 | |
| 445 | 391 | PORT_DATA_IO(30), PORT_DATA_IO(31), | |
| 446 | _IO_U_(60), _IO_U_(61), _IO___(62), __O___(63), __O___(64), | 392 | PORT_DATA_IO(32), PORT_DATA_IO(33), |
| 447 | _IO_U_(65), __O___(66), _IO_U_(67), __O___(68), _IO___(69), /*66?*/ | 393 | PORT_DATA_IO(34), PORT_DATA_IO(35), |
| 448 | 394 | PORT_DATA_IO(36), PORT_DATA_IO(37), | |
| 449 | _IO___(70), _IO___(71), __O___(72), _I__U_(73), _I__UD(74), | 395 | PORT_DATA_IO(38), PORT_DATA_IO(39), |
| 450 | _IO_UD(75), _IO_UD(76), _IO_UD(77), _IO_UD(78), _IO_UD(79), | 396 | |
| 451 | 397 | PORT_DATA_IO(40), PORT_DATA_IO(41), | |
| 452 | _IO_UD(80), _IO_UD(81), _IO_UD(82), _IO_UD(83), _IO_UD(84), | 398 | PORT_DATA_IO(42), PORT_DATA_IO(43), |
| 453 | _IO_UD(85), _IO_UD(86), _IO_UD(87), _IO_UD(88), _IO_UD(89), | 399 | PORT_DATA_IO(44), PORT_DATA_IO(45), |
| 454 | 400 | PORT_DATA_IO_PU(46), PORT_DATA_IO_PU(47), | |
| 455 | _IO_UD(90), _IO_UD(91), _IO_UD(92), _IO_UD(93), _IO_UD(94), | 401 | PORT_DATA_IO_PU(48), PORT_DATA_IO_PU(49), |
| 456 | _IO_UD(95), _IO_U_(96), _IO_UD(97), _IO_UD(98), __O___(99), /*99?*/ | 402 | |
| 457 | 403 | PORT_DATA_IO_PU(50), PORT_DATA_IO_PU(51), | |
| 458 | _IO__D(100), _IO__D(101), _IO__D(102), _IO__D(103), _IO__D(104), | 404 | PORT_DATA_IO_PU(52), PORT_DATA_IO_PU(53), |
| 459 | _IO__D(105), _IO_U_(106), _IO_U_(107), _IO_U_(108), _IO_U_(109), | 405 | PORT_DATA_IO_PU(54), PORT_DATA_IO_PU(55), |
| 460 | 406 | PORT_DATA_IO_PU(56), PORT_DATA_IO_PU(57), | |
| 461 | _IO_U_(110), _IO_U_(111), _IO__D(112), _IO__D(113), _IO_U_(114), | 407 | PORT_DATA_IO_PU(58), PORT_DATA_IO_PU(59), |
| 462 | _IO_U_(115), _IO_U_(116), _IO_U_(117), _IO_U_(118), _IO_U_(119), | 408 | |
| 463 | 409 | PORT_DATA_IO_PU(60), PORT_DATA_IO_PU(61), | |
| 464 | _IO_U_(120), _IO__D(121), _IO__D(122), _IO__D(123), _IO__D(124), | 410 | PORT_DATA_IO(62), PORT_DATA_O(63), |
| 465 | _IO__D(125), _IO__D(126), _IO__D(127), _IO__D(128), _IO_UD(129), | 411 | PORT_DATA_O(64), PORT_DATA_IO_PU(65), |
| 466 | 412 | PORT_DATA_O(66), PORT_DATA_IO_PU(67), /*66?*/ | |
| 467 | _IO_UD(130), _IO_UD(131), _IO_UD(132), _IO_UD(133), _IO_UD(134), | 413 | PORT_DATA_O(68), PORT_DATA_IO(69), |
| 468 | _IO_UD(135), _IO__D(136), _IO__D(137), _IO__D(138), _IO__D(139), | 414 | |
| 469 | 415 | PORT_DATA_IO(70), PORT_DATA_IO(71), | |
| 470 | _IO__D(140), _IO__D(141), _IO__D(142), _IO_UD(143), _IO__D(144), | 416 | PORT_DATA_O(72), PORT_DATA_I_PU(73), |
| 471 | _IO__D(145), _IO__D(146), _IO__D(147), _IO__D(148), _IO__D(149), | 417 | PORT_DATA_I_PU_PD(74), PORT_DATA_IO_PU_PD(75), |
| 472 | 418 | PORT_DATA_IO_PU_PD(76), PORT_DATA_IO_PU_PD(77), | |
| 473 | _IO__D(150), _IO__D(151), _IO_UD(152), _I___D(153), _IO_UD(154), | 419 | PORT_DATA_IO_PU_PD(78), PORT_DATA_IO_PU_PD(79), |
| 474 | _I___D(155), _IO__D(156), _IO__D(157), _I___D(158), _IO__D(159), | 420 | |
| 475 | 421 | PORT_DATA_IO_PU_PD(80), PORT_DATA_IO_PU_PD(81), | |
| 476 | __O___(160), _IO__D(161), _IO__D(162), _IO__D(163), _I___D(164), | 422 | PORT_DATA_IO_PU_PD(82), PORT_DATA_IO_PU_PD(83), |
| 477 | _IO__D(165), _I___D(166), _I___D(167), _I___D(168), _I___D(169), | 423 | PORT_DATA_IO_PU_PD(84), PORT_DATA_IO_PU_PD(85), |
| 478 | 424 | PORT_DATA_IO_PU_PD(86), PORT_DATA_IO_PU_PD(87), | |
| 479 | _I___D(170), __O___(171), _IO_UD(172), _IO_UD(173), _IO_UD(174), | 425 | PORT_DATA_IO_PU_PD(88), PORT_DATA_IO_PU_PD(89), |
| 480 | _IO_UD(175), _IO_UD(176), _IO_UD(177), _IO_UD(178), __O___(179), | 426 | |
| 481 | 427 | PORT_DATA_IO_PU_PD(90), PORT_DATA_IO_PU_PD(91), | |
| 482 | _IO_UD(180), _IO_UD(181), _IO_UD(182), _IO_UD(183), _IO_UD(184), | 428 | PORT_DATA_IO_PU_PD(92), PORT_DATA_IO_PU_PD(93), |
| 483 | __O___(185), _IO_UD(186), _IO_UD(187), _IO_UD(188), _IO_UD(189), | 429 | PORT_DATA_IO_PU_PD(94), PORT_DATA_IO_PU_PD(95), |
| 484 | 430 | PORT_DATA_IO_PU(96), PORT_DATA_IO_PU_PD(97), | |
| 485 | _IO_UD(190), | 431 | PORT_DATA_IO_PU_PD(98), PORT_DATA_O(99), /*99?*/ |
| 432 | |||
| 433 | PORT_DATA_IO_PD(100), PORT_DATA_IO_PD(101), | ||
| 434 | PORT_DATA_IO_PD(102), PORT_DATA_IO_PD(103), | ||
| 435 | PORT_DATA_IO_PD(104), PORT_DATA_IO_PD(105), | ||
| 436 | PORT_DATA_IO_PU(106), PORT_DATA_IO_PU(107), | ||
| 437 | PORT_DATA_IO_PU(108), PORT_DATA_IO_PU(109), | ||
| 438 | |||
| 439 | PORT_DATA_IO_PU(110), PORT_DATA_IO_PU(111), | ||
| 440 | PORT_DATA_IO_PD(112), PORT_DATA_IO_PD(113), | ||
| 441 | PORT_DATA_IO_PU(114), PORT_DATA_IO_PU(115), | ||
| 442 | PORT_DATA_IO_PU(116), PORT_DATA_IO_PU(117), | ||
| 443 | PORT_DATA_IO_PU(118), PORT_DATA_IO_PU(119), | ||
| 444 | |||
| 445 | PORT_DATA_IO_PU(120), PORT_DATA_IO_PD(121), | ||
| 446 | PORT_DATA_IO_PD(122), PORT_DATA_IO_PD(123), | ||
| 447 | PORT_DATA_IO_PD(124), PORT_DATA_IO_PD(125), | ||
| 448 | PORT_DATA_IO_PD(126), PORT_DATA_IO_PD(127), | ||
| 449 | PORT_DATA_IO_PD(128), PORT_DATA_IO_PU_PD(129), | ||
| 450 | |||
| 451 | PORT_DATA_IO_PU_PD(130), PORT_DATA_IO_PU_PD(131), | ||
| 452 | PORT_DATA_IO_PU_PD(132), PORT_DATA_IO_PU_PD(133), | ||
| 453 | PORT_DATA_IO_PU_PD(134), PORT_DATA_IO_PU_PD(135), | ||
| 454 | PORT_DATA_IO_PD(136), PORT_DATA_IO_PD(137), | ||
| 455 | PORT_DATA_IO_PD(138), PORT_DATA_IO_PD(139), | ||
| 456 | |||
| 457 | PORT_DATA_IO_PD(140), PORT_DATA_IO_PD(141), | ||
| 458 | PORT_DATA_IO_PD(142), PORT_DATA_IO_PU_PD(143), | ||
| 459 | PORT_DATA_IO_PD(144), PORT_DATA_IO_PD(145), | ||
| 460 | PORT_DATA_IO_PD(146), PORT_DATA_IO_PD(147), | ||
| 461 | PORT_DATA_IO_PD(148), PORT_DATA_IO_PD(149), | ||
| 462 | |||
| 463 | PORT_DATA_IO_PD(150), PORT_DATA_IO_PD(151), | ||
| 464 | PORT_DATA_IO_PU_PD(152), PORT_DATA_I_PD(153), | ||
| 465 | PORT_DATA_IO_PU_PD(154), PORT_DATA_I_PD(155), | ||
| 466 | PORT_DATA_IO_PD(156), PORT_DATA_IO_PD(157), | ||
| 467 | PORT_DATA_I_PD(158), PORT_DATA_IO_PD(159), | ||
| 468 | |||
| 469 | PORT_DATA_O(160), PORT_DATA_IO_PD(161), | ||
| 470 | PORT_DATA_IO_PD(162), PORT_DATA_IO_PD(163), | ||
| 471 | PORT_DATA_I_PD(164), PORT_DATA_IO_PD(165), | ||
| 472 | PORT_DATA_I_PD(166), PORT_DATA_I_PD(167), | ||
| 473 | PORT_DATA_I_PD(168), PORT_DATA_I_PD(169), | ||
| 474 | |||
| 475 | PORT_DATA_I_PD(170), PORT_DATA_O(171), | ||
| 476 | PORT_DATA_IO_PU_PD(172), PORT_DATA_IO_PU_PD(173), | ||
| 477 | PORT_DATA_IO_PU_PD(174), PORT_DATA_IO_PU_PD(175), | ||
| 478 | PORT_DATA_IO_PU_PD(176), PORT_DATA_IO_PU_PD(177), | ||
| 479 | PORT_DATA_IO_PU_PD(178), PORT_DATA_O(179), | ||
| 480 | |||
| 481 | PORT_DATA_IO_PU_PD(180), PORT_DATA_IO_PU_PD(181), | ||
| 482 | PORT_DATA_IO_PU_PD(182), PORT_DATA_IO_PU_PD(183), | ||
| 483 | PORT_DATA_IO_PU_PD(184), PORT_DATA_O(185), | ||
| 484 | PORT_DATA_IO_PU_PD(186), PORT_DATA_IO_PU_PD(187), | ||
| 485 | PORT_DATA_IO_PU_PD(188), PORT_DATA_IO_PU_PD(189), | ||
| 486 | |||
| 487 | PORT_DATA_IO_PU_PD(190), | ||
| 486 | 488 | ||
| 487 | /* IRQ */ | 489 | /* IRQ */ |
| 488 | PINMUX_DATA(IRQ0_6_MARK, PORT6_FN0, MSEL1CR_0_0), | 490 | PINMUX_DATA(IRQ0_6_MARK, PORT6_FN0, MSEL1CR_0_0), |
| @@ -926,10 +928,6 @@ static pinmux_enum_t pinmux_data[] = { | |||
| 926 | PINMUX_DATA(MFIv4_MARK, MSEL4CR_6_1), | 928 | PINMUX_DATA(MFIv4_MARK, MSEL4CR_6_1), |
| 927 | }; | 929 | }; |
| 928 | 930 | ||
| 929 | #define _GPIO_PORT(pfx, sfx) PINMUX_GPIO(GPIO_PORT##pfx, PORT##pfx##_DATA) | ||
| 930 | #define GPIO_PORT_ALL() _190(_GPIO_PORT, , unused) | ||
| 931 | #define GPIO_FN(str) PINMUX_GPIO(GPIO_FN_##str, str##_MARK) | ||
| 932 | |||
| 933 | static struct pinmux_gpio pinmux_gpios[] = { | 931 | static struct pinmux_gpio pinmux_gpios[] = { |
| 934 | 932 | ||
| 935 | /* PORT */ | 933 | /* PORT */ |
| @@ -1201,22 +1199,6 @@ static struct pinmux_gpio pinmux_gpios[] = { | |||
| 1201 | GPIO_FN(SDENC_DV_CLKI), | 1199 | GPIO_FN(SDENC_DV_CLKI), |
| 1202 | }; | 1200 | }; |
| 1203 | 1201 | ||
| 1204 | /* helper for top 4 bits in PORTnCR */ | ||
| 1205 | #define PCRH(in, in_pd, in_pu, out) \ | ||
| 1206 | 0, (out), (in), 0, \ | ||
| 1207 | 0, 0, 0, 0, \ | ||
| 1208 | 0, 0, (in_pd), 0, \ | ||
| 1209 | 0, 0, (in_pu), 0 | ||
| 1210 | |||
| 1211 | #define PORTCR(nr, reg) \ | ||
| 1212 | { PINMUX_CFG_REG("PORT" nr "CR", reg, 8, 4) { \ | ||
| 1213 | PCRH(PORT##nr##_IN, PORT##nr##_IN_PD, \ | ||
| 1214 | PORT##nr##_IN_PU, PORT##nr##_OUT), \ | ||
| 1215 | PORT##nr##_FN0, PORT##nr##_FN1, PORT##nr##_FN2, \ | ||
| 1216 | PORT##nr##_FN3, PORT##nr##_FN4, PORT##nr##_FN5, \ | ||
| 1217 | PORT##nr##_FN6, PORT##nr##_FN7 } \ | ||
| 1218 | } | ||
| 1219 | |||
| 1220 | static struct pinmux_cfg_reg pinmux_config_regs[] = { | 1202 | static struct pinmux_cfg_reg pinmux_config_regs[] = { |
| 1221 | PORTCR(0, 0xE6051000), /* PORT0CR */ | 1203 | PORTCR(0, 0xE6051000), /* PORT0CR */ |
| 1222 | PORTCR(1, 0xE6051001), /* PORT1CR */ | 1204 | PORTCR(1, 0xE6051001), /* PORT1CR */ |
diff --git a/arch/arm/mach-shmobile/pfc-sh7377.c b/arch/arm/mach-shmobile/pfc-sh7377.c index 613e6842ad05..2f10511946ad 100644 --- a/arch/arm/mach-shmobile/pfc-sh7377.c +++ b/arch/arm/mach-shmobile/pfc-sh7377.c | |||
| @@ -22,84 +22,65 @@ | |||
| 22 | #include <linux/gpio.h> | 22 | #include <linux/gpio.h> |
| 23 | #include <mach/sh7377.h> | 23 | #include <mach/sh7377.h> |
| 24 | 24 | ||
| 25 | #define _1(fn, pfx, sfx) fn(pfx, sfx) | 25 | #define CPU_ALL_PORT(fn, pfx, sfx) \ |
| 26 | 26 | PORT_10(fn, pfx, sfx), PORT_90(fn, pfx, sfx), \ | |
| 27 | #define _10(fn, pfx, sfx) \ | 27 | PORT_10(fn, pfx##10, sfx), \ |
| 28 | _1(fn, pfx##0, sfx), _1(fn, pfx##1, sfx), \ | 28 | PORT_1(fn, pfx##110, sfx), PORT_1(fn, pfx##111, sfx), \ |
| 29 | _1(fn, pfx##2, sfx), _1(fn, pfx##3, sfx), \ | 29 | PORT_1(fn, pfx##112, sfx), PORT_1(fn, pfx##113, sfx), \ |
| 30 | _1(fn, pfx##4, sfx), _1(fn, pfx##5, sfx), \ | 30 | PORT_1(fn, pfx##114, sfx), PORT_1(fn, pfx##115, sfx), \ |
| 31 | _1(fn, pfx##6, sfx), _1(fn, pfx##7, sfx), \ | 31 | PORT_1(fn, pfx##116, sfx), PORT_1(fn, pfx##117, sfx), \ |
| 32 | _1(fn, pfx##8, sfx), _1(fn, pfx##9, sfx) | 32 | PORT_1(fn, pfx##118, sfx), \ |
| 33 | 33 | PORT_1(fn, pfx##128, sfx), PORT_1(fn, pfx##129, sfx), \ | |
| 34 | #define _90(fn, pfx, sfx) \ | 34 | PORT_10(fn, pfx##13, sfx), PORT_10(fn, pfx##14, sfx), \ |
| 35 | _10(fn, pfx##1, sfx), _10(fn, pfx##2, sfx), \ | 35 | PORT_10(fn, pfx##15, sfx), \ |
| 36 | _10(fn, pfx##3, sfx), _10(fn, pfx##4, sfx), \ | 36 | PORT_1(fn, pfx##160, sfx), PORT_1(fn, pfx##161, sfx), \ |
| 37 | _10(fn, pfx##5, sfx), _10(fn, pfx##6, sfx), \ | 37 | PORT_1(fn, pfx##162, sfx), PORT_1(fn, pfx##163, sfx), \ |
| 38 | _10(fn, pfx##7, sfx), _10(fn, pfx##8, sfx), \ | 38 | PORT_1(fn, pfx##164, sfx), \ |
| 39 | _10(fn, pfx##9, sfx) | 39 | PORT_1(fn, pfx##192, sfx), PORT_1(fn, pfx##193, sfx), \ |
| 40 | 40 | PORT_1(fn, pfx##194, sfx), PORT_1(fn, pfx##195, sfx), \ | |
| 41 | #define _265(fn, pfx, sfx) \ | 41 | PORT_1(fn, pfx##196, sfx), PORT_1(fn, pfx##197, sfx), \ |
| 42 | _10(fn, pfx, sfx), _90(fn, pfx, sfx), \ | 42 | PORT_1(fn, pfx##198, sfx), PORT_1(fn, pfx##199, sfx), \ |
| 43 | _10(fn, pfx##10, sfx), \ | 43 | PORT_10(fn, pfx##20, sfx), PORT_10(fn, pfx##21, sfx), \ |
| 44 | _1(fn, pfx##110, sfx), _1(fn, pfx##111, sfx), \ | 44 | PORT_10(fn, pfx##22, sfx), PORT_10(fn, pfx##23, sfx), \ |
| 45 | _1(fn, pfx##112, sfx), _1(fn, pfx##113, sfx), \ | 45 | PORT_10(fn, pfx##24, sfx), PORT_10(fn, pfx##25, sfx), \ |
| 46 | _1(fn, pfx##114, sfx), _1(fn, pfx##115, sfx), \ | 46 | PORT_1(fn, pfx##260, sfx), PORT_1(fn, pfx##261, sfx), \ |
| 47 | _1(fn, pfx##116, sfx), _1(fn, pfx##117, sfx), \ | 47 | PORT_1(fn, pfx##262, sfx), PORT_1(fn, pfx##263, sfx), \ |
| 48 | _1(fn, pfx##118, sfx), \ | 48 | PORT_1(fn, pfx##264, sfx) |
| 49 | _1(fn, pfx##128, sfx), _1(fn, pfx##129, sfx), \ | ||
| 50 | _10(fn, pfx##13, sfx), _10(fn, pfx##14, sfx), \ | ||
| 51 | _10(fn, pfx##15, sfx), \ | ||
| 52 | _1(fn, pfx##160, sfx), _1(fn, pfx##161, sfx), \ | ||
| 53 | _1(fn, pfx##162, sfx), _1(fn, pfx##163, sfx), \ | ||
| 54 | _1(fn, pfx##164, sfx), \ | ||
| 55 | _1(fn, pfx##192, sfx), _1(fn, pfx##193, sfx), \ | ||
| 56 | _1(fn, pfx##194, sfx), _1(fn, pfx##195, sfx), \ | ||
| 57 | _1(fn, pfx##196, sfx), _1(fn, pfx##197, sfx), \ | ||
| 58 | _1(fn, pfx##198, sfx), _1(fn, pfx##199, sfx), \ | ||
| 59 | _10(fn, pfx##20, sfx), _10(fn, pfx##21, sfx), \ | ||
| 60 | _10(fn, pfx##22, sfx), _10(fn, pfx##23, sfx), \ | ||
| 61 | _10(fn, pfx##24, sfx), _10(fn, pfx##25, sfx), \ | ||
| 62 | _1(fn, pfx##260, sfx), _1(fn, pfx##261, sfx), \ | ||
| 63 | _1(fn, pfx##262, sfx), _1(fn, pfx##263, sfx), \ | ||
| 64 | _1(fn, pfx##264, sfx) | ||
| 65 | |||
| 66 | #define _PORT(pfx, sfx) pfx##_##sfx | ||
| 67 | #define PORT_265(str) _265(_PORT, PORT, str) | ||
| 68 | 49 | ||
| 69 | enum { | 50 | enum { |
| 70 | PINMUX_RESERVED = 0, | 51 | PINMUX_RESERVED = 0, |
| 71 | 52 | ||
| 72 | PINMUX_DATA_BEGIN, | 53 | PINMUX_DATA_BEGIN, |
| 73 | PORT_265(DATA), /* PORT0_DATA -> PORT264_DATA */ | 54 | PORT_ALL(DATA), /* PORT0_DATA -> PORT264_DATA */ |
| 74 | PINMUX_DATA_END, | 55 | PINMUX_DATA_END, |
| 75 | 56 | ||
| 76 | PINMUX_INPUT_BEGIN, | 57 | PINMUX_INPUT_BEGIN, |
| 77 | PORT_265(IN), /* PORT0_IN -> PORT264_IN */ | 58 | PORT_ALL(IN), /* PORT0_IN -> PORT264_IN */ |
| 78 | PINMUX_INPUT_END, | 59 | PINMUX_INPUT_END, |
| 79 | 60 | ||
| 80 | PINMUX_INPUT_PULLUP_BEGIN, | 61 | PINMUX_INPUT_PULLUP_BEGIN, |
| 81 | PORT_265(IN_PU), /* PORT0_IN_PU -> PORT264_IN_PU */ | 62 | PORT_ALL(IN_PU), /* PORT0_IN_PU -> PORT264_IN_PU */ |
| 82 | PINMUX_INPUT_PULLUP_END, | 63 | PINMUX_INPUT_PULLUP_END, |
| 83 | 64 | ||
| 84 | PINMUX_INPUT_PULLDOWN_BEGIN, | 65 | PINMUX_INPUT_PULLDOWN_BEGIN, |
| 85 | PORT_265(IN_PD), /* PORT0_IN_PD -> PORT264_IN_PD */ | 66 | PORT_ALL(IN_PD), /* PORT0_IN_PD -> PORT264_IN_PD */ |
| 86 | PINMUX_INPUT_PULLDOWN_END, | 67 | PINMUX_INPUT_PULLDOWN_END, |
| 87 | 68 | ||
| 88 | PINMUX_OUTPUT_BEGIN, | 69 | PINMUX_OUTPUT_BEGIN, |
| 89 | PORT_265(OUT), /* PORT0_OUT -> PORT264_OUT */ | 70 | PORT_ALL(OUT), /* PORT0_OUT -> PORT264_OUT */ |
| 90 | PINMUX_OUTPUT_END, | 71 | PINMUX_OUTPUT_END, |
| 91 | 72 | ||
| 92 | PINMUX_FUNCTION_BEGIN, | 73 | PINMUX_FUNCTION_BEGIN, |
| 93 | PORT_265(FN_IN), /* PORT0_FN_IN -> PORT264_FN_IN */ | 74 | PORT_ALL(FN_IN), /* PORT0_FN_IN -> PORT264_FN_IN */ |
| 94 | PORT_265(FN_OUT), /* PORT0_FN_OUT -> PORT264_FN_OUT */ | 75 | PORT_ALL(FN_OUT), /* PORT0_FN_OUT -> PORT264_FN_OUT */ |
| 95 | PORT_265(FN0), /* PORT0_FN0 -> PORT264_FN0 */ | 76 | PORT_ALL(FN0), /* PORT0_FN0 -> PORT264_FN0 */ |
| 96 | PORT_265(FN1), /* PORT0_FN1 -> PORT264_FN1 */ | 77 | PORT_ALL(FN1), /* PORT0_FN1 -> PORT264_FN1 */ |
| 97 | PORT_265(FN2), /* PORT0_FN2 -> PORT264_FN2 */ | 78 | PORT_ALL(FN2), /* PORT0_FN2 -> PORT264_FN2 */ |
| 98 | PORT_265(FN3), /* PORT0_FN3 -> PORT264_FN3 */ | 79 | PORT_ALL(FN3), /* PORT0_FN3 -> PORT264_FN3 */ |
| 99 | PORT_265(FN4), /* PORT0_FN4 -> PORT264_FN4 */ | 80 | PORT_ALL(FN4), /* PORT0_FN4 -> PORT264_FN4 */ |
| 100 | PORT_265(FN5), /* PORT0_FN5 -> PORT264_FN5 */ | 81 | PORT_ALL(FN5), /* PORT0_FN5 -> PORT264_FN5 */ |
| 101 | PORT_265(FN6), /* PORT0_FN6 -> PORT264_FN6 */ | 82 | PORT_ALL(FN6), /* PORT0_FN6 -> PORT264_FN6 */ |
| 102 | PORT_265(FN7), /* PORT0_FN7 -> PORT264_FN7 */ | 83 | PORT_ALL(FN7), /* PORT0_FN7 -> PORT264_FN7 */ |
| 103 | 84 | ||
| 104 | MSELBCR_MSEL17_1, MSELBCR_MSEL17_0, | 85 | MSELBCR_MSEL17_1, MSELBCR_MSEL17_0, |
| 105 | MSELBCR_MSEL16_1, MSELBCR_MSEL16_0, | 86 | MSELBCR_MSEL16_1, MSELBCR_MSEL16_0, |
| @@ -360,45 +341,6 @@ enum { | |||
| 360 | PINMUX_MARK_END, | 341 | PINMUX_MARK_END, |
| 361 | }; | 342 | }; |
| 362 | 343 | ||
| 363 | #define PORT_DATA_I(nr) \ | ||
| 364 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_IN) | ||
| 365 | |||
| 366 | #define PORT_DATA_I_PD(nr) \ | ||
| 367 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 368 | PORT##nr##_IN, PORT##nr##_IN_PD) | ||
| 369 | |||
| 370 | #define PORT_DATA_I_PU(nr) \ | ||
| 371 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 372 | PORT##nr##_IN, PORT##nr##_IN_PU) | ||
| 373 | |||
| 374 | #define PORT_DATA_I_PU_PD(nr) \ | ||
| 375 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 376 | PORT##nr##_IN, PORT##nr##_IN_PD, \ | ||
| 377 | PORT##nr##_IN_PU) | ||
| 378 | |||
| 379 | #define PORT_DATA_O(nr) \ | ||
| 380 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 381 | PORT##nr##_OUT) | ||
| 382 | |||
| 383 | #define PORT_DATA_IO(nr) \ | ||
| 384 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 385 | PORT##nr##_OUT, PORT##nr##_IN) | ||
| 386 | |||
| 387 | #define PORT_DATA_IO_PD(nr) \ | ||
| 388 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 389 | PORT##nr##_OUT, PORT##nr##_IN, \ | ||
| 390 | PORT##nr##_IN_PD) | ||
| 391 | |||
| 392 | #define PORT_DATA_IO_PU(nr) \ | ||
| 393 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 394 | PORT##nr##_OUT, PORT##nr##_IN, \ | ||
| 395 | PORT##nr##_IN_PU) | ||
| 396 | |||
| 397 | #define PORT_DATA_IO_PU_PD(nr) \ | ||
| 398 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 399 | PORT##nr##_OUT, PORT##nr##_IN, \ | ||
| 400 | PORT##nr##_IN_PD, PORT##nr##_IN_PU) | ||
| 401 | |||
| 402 | static pinmux_enum_t pinmux_data[] = { | 344 | static pinmux_enum_t pinmux_data[] = { |
| 403 | /* specify valid pin states for each pin in GPIO mode */ | 345 | /* specify valid pin states for each pin in GPIO mode */ |
| 404 | /* 55-1 (GPIO) */ | 346 | /* 55-1 (GPIO) */ |
| @@ -1078,13 +1020,9 @@ static pinmux_enum_t pinmux_data[] = { | |||
| 1078 | PINMUX_DATA(RESETOUTS_MARK, PORT264_FN1), | 1020 | PINMUX_DATA(RESETOUTS_MARK, PORT264_FN1), |
| 1079 | }; | 1021 | }; |
| 1080 | 1022 | ||
| 1081 | #define _GPIO_PORT(pfx, sfx) PINMUX_GPIO(GPIO_PORT##pfx, PORT##pfx##_DATA) | ||
| 1082 | #define GPIO_PORT_265() _265(_GPIO_PORT, , unused) | ||
| 1083 | #define GPIO_FN(str) PINMUX_GPIO(GPIO_FN_##str, str##_MARK) | ||
| 1084 | |||
| 1085 | static struct pinmux_gpio pinmux_gpios[] = { | 1023 | static struct pinmux_gpio pinmux_gpios[] = { |
| 1086 | /* 55-1 -> 55-5 (GPIO) */ | 1024 | /* 55-1 -> 55-5 (GPIO) */ |
| 1087 | GPIO_PORT_265(), | 1025 | GPIO_PORT_ALL(), |
| 1088 | 1026 | ||
| 1089 | /* Special Pull-up / Pull-down Functions */ | 1027 | /* Special Pull-up / Pull-down Functions */ |
| 1090 | GPIO_FN(PORT66_KEYIN0_PU), GPIO_FN(PORT67_KEYIN1_PU), | 1028 | GPIO_FN(PORT66_KEYIN0_PU), GPIO_FN(PORT67_KEYIN1_PU), |
| @@ -1362,23 +1300,6 @@ static struct pinmux_gpio pinmux_gpios[] = { | |||
| 1362 | GPIO_FN(RESETOUTS), | 1300 | GPIO_FN(RESETOUTS), |
| 1363 | }; | 1301 | }; |
| 1364 | 1302 | ||
| 1365 | /* helper for top 4 bits in PORTnCR */ | ||
| 1366 | #define PCRH(in, in_pd, in_pu, out) \ | ||
| 1367 | 0, (out), (in), 0, \ | ||
| 1368 | 0, 0, 0, 0, \ | ||
| 1369 | 0, 0, (in_pd), 0, \ | ||
| 1370 | 0, 0, (in_pu), 0 | ||
| 1371 | |||
| 1372 | #define PORTCR(nr, reg) \ | ||
| 1373 | { PINMUX_CFG_REG("PORT" nr "CR", reg, 8, 4) { \ | ||
| 1374 | PCRH(PORT##nr##_IN, PORT##nr##_IN_PD, \ | ||
| 1375 | PORT##nr##_IN_PU, PORT##nr##_OUT), \ | ||
| 1376 | PORT##nr##_FN0, PORT##nr##_FN1, \ | ||
| 1377 | PORT##nr##_FN2, PORT##nr##_FN3, \ | ||
| 1378 | PORT##nr##_FN4, PORT##nr##_FN5, \ | ||
| 1379 | PORT##nr##_FN6, PORT##nr##_FN7 } \ | ||
| 1380 | } | ||
| 1381 | |||
| 1382 | static struct pinmux_cfg_reg pinmux_config_regs[] = { | 1303 | static struct pinmux_cfg_reg pinmux_config_regs[] = { |
| 1383 | PORTCR(0, 0xe6050000), /* PORT0CR */ | 1304 | PORTCR(0, 0xe6050000), /* PORT0CR */ |
| 1384 | PORTCR(1, 0xe6050001), /* PORT1CR */ | 1305 | PORTCR(1, 0xe6050001), /* PORT1CR */ |
diff --git a/arch/arm/mach-shmobile/pfc-sh73a0.c b/arch/arm/mach-shmobile/pfc-sh73a0.c index 5abe02fbd6b9..e05634ce2e0d 100644 --- a/arch/arm/mach-shmobile/pfc-sh73a0.c +++ b/arch/arm/mach-shmobile/pfc-sh73a0.c | |||
| @@ -24,83 +24,71 @@ | |||
| 24 | #include <mach/sh73a0.h> | 24 | #include <mach/sh73a0.h> |
| 25 | #include <mach/irqs.h> | 25 | #include <mach/irqs.h> |
| 26 | 26 | ||
| 27 | #define _1(fn, pfx, sfx) fn(pfx, sfx) | 27 | #define CPU_ALL_PORT(fn, pfx, sfx) \ |
| 28 | 28 | PORT_10(fn, pfx, sfx), PORT_10(fn, pfx##1, sfx), \ | |
| 29 | #define _10(fn, pfx, sfx) \ | 29 | PORT_10(fn, pfx##2, sfx), PORT_10(fn, pfx##3, sfx), \ |
| 30 | _1(fn, pfx##0, sfx), _1(fn, pfx##1, sfx), \ | 30 | PORT_10(fn, pfx##4, sfx), PORT_10(fn, pfx##5, sfx), \ |
| 31 | _1(fn, pfx##2, sfx), _1(fn, pfx##3, sfx), \ | 31 | PORT_10(fn, pfx##6, sfx), PORT_10(fn, pfx##7, sfx), \ |
| 32 | _1(fn, pfx##4, sfx), _1(fn, pfx##5, sfx), \ | 32 | PORT_10(fn, pfx##8, sfx), PORT_10(fn, pfx##9, sfx), \ |
| 33 | _1(fn, pfx##6, sfx), _1(fn, pfx##7, sfx), \ | 33 | PORT_10(fn, pfx##10, sfx), \ |
| 34 | _1(fn, pfx##8, sfx), _1(fn, pfx##9, sfx) | 34 | PORT_1(fn, pfx##110, sfx), PORT_1(fn, pfx##111, sfx), \ |
| 35 | 35 | PORT_1(fn, pfx##112, sfx), PORT_1(fn, pfx##113, sfx), \ | |
| 36 | #define _310(fn, pfx, sfx) \ | 36 | PORT_1(fn, pfx##114, sfx), PORT_1(fn, pfx##115, sfx), \ |
| 37 | _10(fn, pfx, sfx), _10(fn, pfx##1, sfx), \ | 37 | PORT_1(fn, pfx##116, sfx), PORT_1(fn, pfx##117, sfx), \ |
| 38 | _10(fn, pfx##2, sfx), _10(fn, pfx##3, sfx), \ | 38 | PORT_1(fn, pfx##118, sfx), \ |
| 39 | _10(fn, pfx##4, sfx), _10(fn, pfx##5, sfx), \ | 39 | PORT_1(fn, pfx##128, sfx), PORT_1(fn, pfx##129, sfx), \ |
| 40 | _10(fn, pfx##6, sfx), _10(fn, pfx##7, sfx), \ | 40 | PORT_10(fn, pfx##13, sfx), PORT_10(fn, pfx##14, sfx), \ |
| 41 | _10(fn, pfx##8, sfx), _10(fn, pfx##9, sfx), \ | 41 | PORT_10(fn, pfx##15, sfx), \ |
| 42 | _10(fn, pfx##10, sfx), \ | 42 | PORT_1(fn, pfx##160, sfx), PORT_1(fn, pfx##161, sfx), \ |
| 43 | _1(fn, pfx##110, sfx), _1(fn, pfx##111, sfx), \ | 43 | PORT_1(fn, pfx##162, sfx), PORT_1(fn, pfx##163, sfx), \ |
| 44 | _1(fn, pfx##112, sfx), _1(fn, pfx##113, sfx), \ | 44 | PORT_1(fn, pfx##164, sfx), \ |
| 45 | _1(fn, pfx##114, sfx), _1(fn, pfx##115, sfx), \ | 45 | PORT_1(fn, pfx##192, sfx), PORT_1(fn, pfx##193, sfx), \ |
| 46 | _1(fn, pfx##116, sfx), _1(fn, pfx##117, sfx), \ | 46 | PORT_1(fn, pfx##194, sfx), PORT_1(fn, pfx##195, sfx), \ |
| 47 | _1(fn, pfx##118, sfx), \ | 47 | PORT_1(fn, pfx##196, sfx), PORT_1(fn, pfx##197, sfx), \ |
| 48 | _1(fn, pfx##128, sfx), _1(fn, pfx##129, sfx), \ | 48 | PORT_1(fn, pfx##198, sfx), PORT_1(fn, pfx##199, sfx), \ |
| 49 | _10(fn, pfx##13, sfx), _10(fn, pfx##14, sfx), \ | 49 | PORT_10(fn, pfx##20, sfx), PORT_10(fn, pfx##21, sfx), \ |
| 50 | _10(fn, pfx##15, sfx), \ | 50 | PORT_10(fn, pfx##22, sfx), PORT_10(fn, pfx##23, sfx), \ |
| 51 | _1(fn, pfx##160, sfx), _1(fn, pfx##161, sfx), \ | 51 | PORT_10(fn, pfx##24, sfx), PORT_10(fn, pfx##25, sfx), \ |
| 52 | _1(fn, pfx##162, sfx), _1(fn, pfx##163, sfx), \ | 52 | PORT_10(fn, pfx##26, sfx), PORT_10(fn, pfx##27, sfx), \ |
| 53 | _1(fn, pfx##164, sfx), \ | 53 | PORT_1(fn, pfx##280, sfx), PORT_1(fn, pfx##281, sfx), \ |
| 54 | _1(fn, pfx##192, sfx), _1(fn, pfx##193, sfx), \ | 54 | PORT_1(fn, pfx##282, sfx), \ |
| 55 | _1(fn, pfx##194, sfx), _1(fn, pfx##195, sfx), \ | 55 | PORT_1(fn, pfx##288, sfx), PORT_1(fn, pfx##289, sfx), \ |
| 56 | _1(fn, pfx##196, sfx), _1(fn, pfx##197, sfx), \ | 56 | PORT_10(fn, pfx##29, sfx), PORT_10(fn, pfx##30, sfx) |
| 57 | _1(fn, pfx##198, sfx), _1(fn, pfx##199, sfx), \ | ||
| 58 | _10(fn, pfx##20, sfx), _10(fn, pfx##21, sfx), \ | ||
| 59 | _10(fn, pfx##22, sfx), _10(fn, pfx##23, sfx), \ | ||
| 60 | _10(fn, pfx##24, sfx), _10(fn, pfx##25, sfx), \ | ||
| 61 | _10(fn, pfx##26, sfx), _10(fn, pfx##27, sfx), \ | ||
| 62 | _1(fn, pfx##280, sfx), _1(fn, pfx##281, sfx), \ | ||
| 63 | _1(fn, pfx##282, sfx), \ | ||
| 64 | _1(fn, pfx##288, sfx), _1(fn, pfx##289, sfx), \ | ||
| 65 | _10(fn, pfx##29, sfx), _10(fn, pfx##30, sfx) | ||
| 66 | |||
| 67 | #define _PORT(pfx, sfx) pfx##_##sfx | ||
| 68 | #define PORT_310(str) _310(_PORT, PORT, str) | ||
| 69 | 57 | ||
| 70 | enum { | 58 | enum { |
| 71 | PINMUX_RESERVED = 0, | 59 | PINMUX_RESERVED = 0, |
| 72 | 60 | ||
| 73 | PINMUX_DATA_BEGIN, | 61 | PINMUX_DATA_BEGIN, |
| 74 | PORT_310(DATA), /* PORT0_DATA -> PORT309_DATA */ | 62 | PORT_ALL(DATA), /* PORT0_DATA -> PORT309_DATA */ |
| 75 | PINMUX_DATA_END, | 63 | PINMUX_DATA_END, |
| 76 | 64 | ||
| 77 | PINMUX_INPUT_BEGIN, | 65 | PINMUX_INPUT_BEGIN, |
| 78 | PORT_310(IN), /* PORT0_IN -> PORT309_IN */ | 66 | PORT_ALL(IN), /* PORT0_IN -> PORT309_IN */ |
| 79 | PINMUX_INPUT_END, | 67 | PINMUX_INPUT_END, |
| 80 | 68 | ||
| 81 | PINMUX_INPUT_PULLUP_BEGIN, | 69 | PINMUX_INPUT_PULLUP_BEGIN, |
| 82 | PORT_310(IN_PU), /* PORT0_IN_PU -> PORT309_IN_PU */ | 70 | PORT_ALL(IN_PU), /* PORT0_IN_PU -> PORT309_IN_PU */ |
| 83 | PINMUX_INPUT_PULLUP_END, | 71 | PINMUX_INPUT_PULLUP_END, |
| 84 | 72 | ||
| 85 | PINMUX_INPUT_PULLDOWN_BEGIN, | 73 | PINMUX_INPUT_PULLDOWN_BEGIN, |
| 86 | PORT_310(IN_PD), /* PORT0_IN_PD -> PORT309_IN_PD */ | 74 | PORT_ALL(IN_PD), /* PORT0_IN_PD -> PORT309_IN_PD */ |
| 87 | PINMUX_INPUT_PULLDOWN_END, | 75 | PINMUX_INPUT_PULLDOWN_END, |
| 88 | 76 | ||
| 89 | PINMUX_OUTPUT_BEGIN, | 77 | PINMUX_OUTPUT_BEGIN, |
| 90 | PORT_310(OUT), /* PORT0_OUT -> PORT309_OUT */ | 78 | PORT_ALL(OUT), /* PORT0_OUT -> PORT309_OUT */ |
| 91 | PINMUX_OUTPUT_END, | 79 | PINMUX_OUTPUT_END, |
| 92 | 80 | ||
| 93 | PINMUX_FUNCTION_BEGIN, | 81 | PINMUX_FUNCTION_BEGIN, |
| 94 | PORT_310(FN_IN), /* PORT0_FN_IN -> PORT309_FN_IN */ | 82 | PORT_ALL(FN_IN), /* PORT0_FN_IN -> PORT309_FN_IN */ |
| 95 | PORT_310(FN_OUT), /* PORT0_FN_OUT -> PORT309_FN_OUT */ | 83 | PORT_ALL(FN_OUT), /* PORT0_FN_OUT -> PORT309_FN_OUT */ |
| 96 | PORT_310(FN0), /* PORT0_FN0 -> PORT309_FN0 */ | 84 | PORT_ALL(FN0), /* PORT0_FN0 -> PORT309_FN0 */ |
| 97 | PORT_310(FN1), /* PORT0_FN1 -> PORT309_FN1 */ | 85 | PORT_ALL(FN1), /* PORT0_FN1 -> PORT309_FN1 */ |
| 98 | PORT_310(FN2), /* PORT0_FN2 -> PORT309_FN2 */ | 86 | PORT_ALL(FN2), /* PORT0_FN2 -> PORT309_FN2 */ |
| 99 | PORT_310(FN3), /* PORT0_FN3 -> PORT309_FN3 */ | 87 | PORT_ALL(FN3), /* PORT0_FN3 -> PORT309_FN3 */ |
| 100 | PORT_310(FN4), /* PORT0_FN4 -> PORT309_FN4 */ | 88 | PORT_ALL(FN4), /* PORT0_FN4 -> PORT309_FN4 */ |
| 101 | PORT_310(FN5), /* PORT0_FN5 -> PORT309_FN5 */ | 89 | PORT_ALL(FN5), /* PORT0_FN5 -> PORT309_FN5 */ |
| 102 | PORT_310(FN6), /* PORT0_FN6 -> PORT309_FN6 */ | 90 | PORT_ALL(FN6), /* PORT0_FN6 -> PORT309_FN6 */ |
| 103 | PORT_310(FN7), /* PORT0_FN7 -> PORT309_FN7 */ | 91 | PORT_ALL(FN7), /* PORT0_FN7 -> PORT309_FN7 */ |
| 104 | 92 | ||
| 105 | MSEL2CR_MSEL19_0, MSEL2CR_MSEL19_1, | 93 | MSEL2CR_MSEL19_0, MSEL2CR_MSEL19_1, |
| 106 | MSEL2CR_MSEL18_0, MSEL2CR_MSEL18_1, | 94 | MSEL2CR_MSEL18_0, MSEL2CR_MSEL18_1, |
| @@ -508,6 +496,14 @@ enum { | |||
| 508 | SDHICMD2_PU_MARK, | 496 | SDHICMD2_PU_MARK, |
| 509 | MMCCMD0_PU_MARK, | 497 | MMCCMD0_PU_MARK, |
| 510 | MMCCMD1_PU_MARK, | 498 | MMCCMD1_PU_MARK, |
| 499 | MMCD0_0_PU_MARK, | ||
| 500 | MMCD0_1_PU_MARK, | ||
| 501 | MMCD0_2_PU_MARK, | ||
| 502 | MMCD0_3_PU_MARK, | ||
| 503 | MMCD0_4_PU_MARK, | ||
| 504 | MMCD0_5_PU_MARK, | ||
| 505 | MMCD0_6_PU_MARK, | ||
| 506 | MMCD0_7_PU_MARK, | ||
| 511 | FSIBISLD_PU_MARK, | 507 | FSIBISLD_PU_MARK, |
| 512 | FSIACK_PU_MARK, | 508 | FSIACK_PU_MARK, |
| 513 | FSIAILR_PU_MARK, | 509 | FSIAILR_PU_MARK, |
| @@ -517,45 +513,6 @@ enum { | |||
| 517 | PINMUX_MARK_END, | 513 | PINMUX_MARK_END, |
| 518 | }; | 514 | }; |
| 519 | 515 | ||
| 520 | #define PORT_DATA_I(nr) \ | ||
| 521 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_IN) | ||
| 522 | |||
| 523 | #define PORT_DATA_I_PD(nr) \ | ||
| 524 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 525 | PORT##nr##_IN, PORT##nr##_IN_PD) | ||
| 526 | |||
| 527 | #define PORT_DATA_I_PU(nr) \ | ||
| 528 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 529 | PORT##nr##_IN, PORT##nr##_IN_PU) | ||
| 530 | |||
| 531 | #define PORT_DATA_I_PU_PD(nr) \ | ||
| 532 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 533 | PORT##nr##_IN, PORT##nr##_IN_PD, \ | ||
| 534 | PORT##nr##_IN_PU) | ||
| 535 | |||
| 536 | #define PORT_DATA_O(nr) \ | ||
| 537 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 538 | PORT##nr##_OUT) | ||
| 539 | |||
| 540 | #define PORT_DATA_IO(nr) \ | ||
| 541 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 542 | PORT##nr##_OUT, PORT##nr##_IN) | ||
| 543 | |||
| 544 | #define PORT_DATA_IO_PD(nr) \ | ||
| 545 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 546 | PORT##nr##_OUT, PORT##nr##_IN, \ | ||
| 547 | PORT##nr##_IN_PD) | ||
| 548 | |||
| 549 | #define PORT_DATA_IO_PU(nr) \ | ||
| 550 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 551 | PORT##nr##_OUT, PORT##nr##_IN, \ | ||
| 552 | PORT##nr##_IN_PU) | ||
| 553 | |||
| 554 | #define PORT_DATA_IO_PU_PD(nr) \ | ||
| 555 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
| 556 | PORT##nr##_OUT, PORT##nr##_IN, \ | ||
| 557 | PORT##nr##_IN_PD, PORT##nr##_IN_PU) | ||
| 558 | |||
| 559 | static pinmux_enum_t pinmux_data[] = { | 516 | static pinmux_enum_t pinmux_data[] = { |
| 560 | /* specify valid pin states for each pin in GPIO mode */ | 517 | /* specify valid pin states for each pin in GPIO mode */ |
| 561 | 518 | ||
| @@ -1561,6 +1518,24 @@ static pinmux_enum_t pinmux_data[] = { | |||
| 1561 | MSEL4CR_MSEL15_0), | 1518 | MSEL4CR_MSEL15_0), |
| 1562 | PINMUX_DATA(MMCCMD1_PU_MARK, PORT297_FN2, PORT297_IN_PU, | 1519 | PINMUX_DATA(MMCCMD1_PU_MARK, PORT297_FN2, PORT297_IN_PU, |
| 1563 | MSEL4CR_MSEL15_1), | 1520 | MSEL4CR_MSEL15_1), |
| 1521 | |||
| 1522 | PINMUX_DATA(MMCD0_0_PU_MARK, | ||
| 1523 | PORT271_FN1, PORT271_IN_PU, MSEL4CR_MSEL15_0), | ||
| 1524 | PINMUX_DATA(MMCD0_1_PU_MARK, | ||
| 1525 | PORT272_FN1, PORT272_IN_PU, MSEL4CR_MSEL15_0), | ||
| 1526 | PINMUX_DATA(MMCD0_2_PU_MARK, | ||
| 1527 | PORT273_FN1, PORT273_IN_PU, MSEL4CR_MSEL15_0), | ||
| 1528 | PINMUX_DATA(MMCD0_3_PU_MARK, | ||
| 1529 | PORT274_FN1, PORT274_IN_PU, MSEL4CR_MSEL15_0), | ||
| 1530 | PINMUX_DATA(MMCD0_4_PU_MARK, | ||
| 1531 | PORT275_FN1, PORT275_IN_PU, MSEL4CR_MSEL15_0), | ||
| 1532 | PINMUX_DATA(MMCD0_5_PU_MARK, | ||
| 1533 | PORT276_FN1, PORT276_IN_PU, MSEL4CR_MSEL15_0), | ||
| 1534 | PINMUX_DATA(MMCD0_6_PU_MARK, | ||
| 1535 | PORT277_FN1, PORT277_IN_PU, MSEL4CR_MSEL15_0), | ||
| 1536 | PINMUX_DATA(MMCD0_7_PU_MARK, | ||
| 1537 | PORT278_FN1, PORT278_IN_PU, MSEL4CR_MSEL15_0), | ||
| 1538 | |||
| 1564 | PINMUX_DATA(FSIBISLD_PU_MARK, PORT39_FN1, PORT39_IN_PU), | 1539 | PINMUX_DATA(FSIBISLD_PU_MARK, PORT39_FN1, PORT39_IN_PU), |
| 1565 | PINMUX_DATA(FSIACK_PU_MARK, PORT49_FN1, PORT49_IN_PU), | 1540 | PINMUX_DATA(FSIACK_PU_MARK, PORT49_FN1, PORT49_IN_PU), |
| 1566 | PINMUX_DATA(FSIAILR_PU_MARK, PORT50_FN5, PORT50_IN_PU), | 1541 | PINMUX_DATA(FSIAILR_PU_MARK, PORT50_FN5, PORT50_IN_PU), |
| @@ -1568,12 +1543,8 @@ static pinmux_enum_t pinmux_data[] = { | |||
| 1568 | PINMUX_DATA(FSIAISLD_PU_MARK, PORT55_FN1, PORT55_IN_PU), | 1543 | PINMUX_DATA(FSIAISLD_PU_MARK, PORT55_FN1, PORT55_IN_PU), |
| 1569 | }; | 1544 | }; |
| 1570 | 1545 | ||
| 1571 | #define _GPIO_PORT(pfx, sfx) PINMUX_GPIO(GPIO_PORT##pfx, PORT##pfx##_DATA) | ||
| 1572 | #define GPIO_PORT_310() _310(_GPIO_PORT, , unused) | ||
| 1573 | #define GPIO_FN(str) PINMUX_GPIO(GPIO_FN_##str, str##_MARK) | ||
| 1574 | |||
| 1575 | static struct pinmux_gpio pinmux_gpios[] = { | 1546 | static struct pinmux_gpio pinmux_gpios[] = { |
| 1576 | GPIO_PORT_310(), | 1547 | GPIO_PORT_ALL(), |
| 1577 | 1548 | ||
| 1578 | /* Table 25-1 (Functions 0-7) */ | 1549 | /* Table 25-1 (Functions 0-7) */ |
| 1579 | GPIO_FN(VBUS_0), | 1550 | GPIO_FN(VBUS_0), |
| @@ -2236,24 +2207,20 @@ static struct pinmux_gpio pinmux_gpios[] = { | |||
| 2236 | GPIO_FN(SDHICMD2_PU), | 2207 | GPIO_FN(SDHICMD2_PU), |
| 2237 | GPIO_FN(MMCCMD0_PU), | 2208 | GPIO_FN(MMCCMD0_PU), |
| 2238 | GPIO_FN(MMCCMD1_PU), | 2209 | GPIO_FN(MMCCMD1_PU), |
| 2210 | GPIO_FN(MMCD0_0_PU), | ||
| 2211 | GPIO_FN(MMCD0_1_PU), | ||
| 2212 | GPIO_FN(MMCD0_2_PU), | ||
| 2213 | GPIO_FN(MMCD0_3_PU), | ||
| 2214 | GPIO_FN(MMCD0_4_PU), | ||
| 2215 | GPIO_FN(MMCD0_5_PU), | ||
| 2216 | GPIO_FN(MMCD0_6_PU), | ||
| 2217 | GPIO_FN(MMCD0_7_PU), | ||
| 2239 | GPIO_FN(FSIACK_PU), | 2218 | GPIO_FN(FSIACK_PU), |
| 2240 | GPIO_FN(FSIAILR_PU), | 2219 | GPIO_FN(FSIAILR_PU), |
| 2241 | GPIO_FN(FSIAIBT_PU), | 2220 | GPIO_FN(FSIAIBT_PU), |
| 2242 | GPIO_FN(FSIAISLD_PU), | 2221 | GPIO_FN(FSIAISLD_PU), |
| 2243 | }; | 2222 | }; |
| 2244 | 2223 | ||
| 2245 | #define PORTCR(nr, reg) \ | ||
| 2246 | { PINMUX_CFG_REG("PORT" nr "CR", reg, 8, 4) { \ | ||
| 2247 | 0, \ | ||
| 2248 | /*0001*/ PORT##nr##_OUT , \ | ||
| 2249 | /*0010*/ PORT##nr##_IN , 0, 0, 0, 0, 0, 0, 0, \ | ||
| 2250 | /*1010*/ PORT##nr##_IN_PD, 0, 0, 0, \ | ||
| 2251 | /*1110*/ PORT##nr##_IN_PU, 0, \ | ||
| 2252 | PORT##nr##_FN0, PORT##nr##_FN1, PORT##nr##_FN2, \ | ||
| 2253 | PORT##nr##_FN3, PORT##nr##_FN4, PORT##nr##_FN5, \ | ||
| 2254 | PORT##nr##_FN6, PORT##nr##_FN7, 0, 0, 0, 0, 0, 0, 0, 0 } \ | ||
| 2255 | } | ||
| 2256 | |||
| 2257 | static struct pinmux_cfg_reg pinmux_config_regs[] = { | 2224 | static struct pinmux_cfg_reg pinmux_config_regs[] = { |
| 2258 | PORTCR(0, 0xe6050000), /* PORT0CR */ | 2225 | PORTCR(0, 0xe6050000), /* PORT0CR */ |
| 2259 | PORTCR(1, 0xe6050001), /* PORT1CR */ | 2226 | PORTCR(1, 0xe6050001), /* PORT1CR */ |
diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c index 79612737c5b2..34bbcbfb1706 100644 --- a/arch/arm/mach-shmobile/pm-sh7372.c +++ b/arch/arm/mach-shmobile/pm-sh7372.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
| 21 | #include <linux/irq.h> | 21 | #include <linux/irq.h> |
| 22 | #include <linux/bitrev.h> | 22 | #include <linux/bitrev.h> |
| 23 | #include <linux/console.h> | ||
| 23 | #include <asm/system.h> | 24 | #include <asm/system.h> |
| 24 | #include <asm/io.h> | 25 | #include <asm/io.h> |
| 25 | #include <asm/tlbflush.h> | 26 | #include <asm/tlbflush.h> |
| @@ -106,9 +107,8 @@ static int pd_power_down(struct generic_pm_domain *genpd) | |||
| 106 | return 0; | 107 | return 0; |
| 107 | } | 108 | } |
| 108 | 109 | ||
| 109 | static int pd_power_up(struct generic_pm_domain *genpd) | 110 | static int __pd_power_up(struct sh7372_pm_domain *sh7372_pd, bool do_resume) |
| 110 | { | 111 | { |
| 111 | struct sh7372_pm_domain *sh7372_pd = to_sh7372_pd(genpd); | ||
| 112 | unsigned int mask = 1 << sh7372_pd->bit_shift; | 112 | unsigned int mask = 1 << sh7372_pd->bit_shift; |
| 113 | unsigned int retry_count; | 113 | unsigned int retry_count; |
| 114 | int ret = 0; | 114 | int ret = 0; |
| @@ -123,13 +123,13 @@ static int pd_power_up(struct generic_pm_domain *genpd) | |||
| 123 | 123 | ||
| 124 | for (retry_count = 2 * PSTR_RETRIES; retry_count; retry_count--) { | 124 | for (retry_count = 2 * PSTR_RETRIES; retry_count; retry_count--) { |
| 125 | if (!(__raw_readl(SWUCR) & mask)) | 125 | if (!(__raw_readl(SWUCR) & mask)) |
| 126 | goto out; | 126 | break; |
| 127 | if (retry_count > PSTR_RETRIES) | 127 | if (retry_count > PSTR_RETRIES) |
| 128 | udelay(PSTR_DELAY_US); | 128 | udelay(PSTR_DELAY_US); |
| 129 | else | 129 | else |
| 130 | cpu_relax(); | 130 | cpu_relax(); |
| 131 | } | 131 | } |
| 132 | if (__raw_readl(SWUCR) & mask) | 132 | if (!retry_count) |
| 133 | ret = -EIO; | 133 | ret = -EIO; |
| 134 | 134 | ||
| 135 | if (!sh7372_pd->no_debug) | 135 | if (!sh7372_pd->no_debug) |
| @@ -137,12 +137,17 @@ static int pd_power_up(struct generic_pm_domain *genpd) | |||
| 137 | mask, __raw_readl(PSTR)); | 137 | mask, __raw_readl(PSTR)); |
| 138 | 138 | ||
| 139 | out: | 139 | out: |
| 140 | if (ret == 0 && sh7372_pd->resume) | 140 | if (ret == 0 && sh7372_pd->resume && do_resume) |
| 141 | sh7372_pd->resume(); | 141 | sh7372_pd->resume(); |
| 142 | 142 | ||
| 143 | return ret; | 143 | return ret; |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | static int pd_power_up(struct generic_pm_domain *genpd) | ||
| 147 | { | ||
| 148 | return __pd_power_up(to_sh7372_pd(genpd), true); | ||
| 149 | } | ||
| 150 | |||
| 146 | static void sh7372_a4r_suspend(void) | 151 | static void sh7372_a4r_suspend(void) |
| 147 | { | 152 | { |
| 148 | sh7372_intcs_suspend(); | 153 | sh7372_intcs_suspend(); |
| @@ -174,7 +179,7 @@ void sh7372_init_pm_domain(struct sh7372_pm_domain *sh7372_pd) | |||
| 174 | genpd->active_wakeup = pd_active_wakeup; | 179 | genpd->active_wakeup = pd_active_wakeup; |
| 175 | genpd->power_off = pd_power_down; | 180 | genpd->power_off = pd_power_down; |
| 176 | genpd->power_on = pd_power_up; | 181 | genpd->power_on = pd_power_up; |
| 177 | genpd->power_on(&sh7372_pd->genpd); | 182 | __pd_power_up(sh7372_pd, false); |
| 178 | } | 183 | } |
| 179 | 184 | ||
| 180 | void sh7372_add_device_to_domain(struct sh7372_pm_domain *sh7372_pd, | 185 | void sh7372_add_device_to_domain(struct sh7372_pm_domain *sh7372_pd, |
| @@ -227,11 +232,23 @@ struct sh7372_pm_domain sh7372_a3sp = { | |||
| 227 | .no_debug = true, | 232 | .no_debug = true, |
| 228 | }; | 233 | }; |
| 229 | 234 | ||
| 235 | static void sh7372_a3sp_init(void) | ||
| 236 | { | ||
| 237 | /* serial consoles make use of SCIF hardware located in A3SP, | ||
| 238 | * keep such power domain on if "no_console_suspend" is set. | ||
| 239 | */ | ||
| 240 | sh7372_a3sp.stay_on = !console_suspend_enabled; | ||
| 241 | } | ||
| 242 | |||
| 230 | struct sh7372_pm_domain sh7372_a3sg = { | 243 | struct sh7372_pm_domain sh7372_a3sg = { |
| 231 | .bit_shift = 13, | 244 | .bit_shift = 13, |
| 232 | }; | 245 | }; |
| 233 | 246 | ||
| 234 | #endif /* CONFIG_PM */ | 247 | #else /* !CONFIG_PM */ |
| 248 | |||
| 249 | static inline void sh7372_a3sp_init(void) {} | ||
| 250 | |||
| 251 | #endif /* !CONFIG_PM */ | ||
| 235 | 252 | ||
| 236 | #if defined(CONFIG_SUSPEND) || defined(CONFIG_CPU_IDLE) | 253 | #if defined(CONFIG_SUSPEND) || defined(CONFIG_CPU_IDLE) |
| 237 | static int sh7372_do_idle_core_standby(unsigned long unused) | 254 | static int sh7372_do_idle_core_standby(unsigned long unused) |
| @@ -402,22 +419,18 @@ static void sh7372_setup_a3sm(unsigned long msk, unsigned long msk2) | |||
| 402 | 419 | ||
| 403 | #ifdef CONFIG_CPU_IDLE | 420 | #ifdef CONFIG_CPU_IDLE |
| 404 | 421 | ||
| 405 | static void sh7372_cpuidle_setup(struct cpuidle_device *dev) | 422 | static void sh7372_cpuidle_setup(struct cpuidle_driver *drv) |
| 406 | { | 423 | { |
| 407 | struct cpuidle_state *state; | 424 | struct cpuidle_state *state = &drv->states[drv->state_count]; |
| 408 | int i = dev->state_count; | ||
| 409 | 425 | ||
| 410 | state = &dev->states[i]; | ||
| 411 | snprintf(state->name, CPUIDLE_NAME_LEN, "C2"); | 426 | snprintf(state->name, CPUIDLE_NAME_LEN, "C2"); |
| 412 | strncpy(state->desc, "Core Standby Mode", CPUIDLE_DESC_LEN); | 427 | strncpy(state->desc, "Core Standby Mode", CPUIDLE_DESC_LEN); |
| 413 | state->exit_latency = 10; | 428 | state->exit_latency = 10; |
| 414 | state->target_residency = 20 + 10; | 429 | state->target_residency = 20 + 10; |
| 415 | state->power_usage = 1; /* perhaps not */ | 430 | state->flags = CPUIDLE_FLAG_TIME_VALID; |
| 416 | state->flags = 0; | 431 | shmobile_cpuidle_modes[drv->state_count] = sh7372_enter_core_standby; |
| 417 | state->flags |= CPUIDLE_FLAG_TIME_VALID; | ||
| 418 | shmobile_cpuidle_modes[i] = sh7372_enter_core_standby; | ||
| 419 | 432 | ||
| 420 | dev->state_count = i + 1; | 433 | drv->state_count++; |
| 421 | } | 434 | } |
| 422 | 435 | ||
| 423 | static void sh7372_cpuidle_init(void) | 436 | static void sh7372_cpuidle_init(void) |
| @@ -469,6 +482,8 @@ void __init sh7372_pm_init(void) | |||
| 469 | /* do not convert A3SM, A3SP, A3SG, A4R power down into A4S */ | 482 | /* do not convert A3SM, A3SP, A3SG, A4R power down into A4S */ |
| 470 | __raw_writel(0, PDNSEL); | 483 | __raw_writel(0, PDNSEL); |
| 471 | 484 | ||
| 485 | sh7372_a3sp_init(); | ||
| 486 | |||
| 472 | sh7372_suspend_init(); | 487 | sh7372_suspend_init(); |
| 473 | sh7372_cpuidle_init(); | 488 | sh7372_cpuidle_init(); |
| 474 | } | 489 | } |
diff --git a/arch/arm/mach-shmobile/pm_runtime.c b/arch/arm/mach-shmobile/pm_runtime.c deleted file mode 100644 index bd5c6a3b8c55..000000000000 --- a/arch/arm/mach-shmobile/pm_runtime.c +++ /dev/null | |||
| @@ -1,67 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-shmobile/pm_runtime.c | ||
| 3 | * | ||
| 4 | * Runtime PM support code for SuperH Mobile ARM | ||
| 5 | * | ||
| 6 | * Copyright (C) 2009-2010 Magnus Damm | ||
| 7 | * | ||
| 8 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 9 | * License. See the file "COPYING" in the main directory of this archive | ||
| 10 | * for more details. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/init.h> | ||
| 14 | #include <linux/kernel.h> | ||
| 15 | #include <linux/io.h> | ||
| 16 | #include <linux/pm_runtime.h> | ||
| 17 | #include <linux/pm_domain.h> | ||
| 18 | #include <linux/pm_clock.h> | ||
| 19 | #include <linux/platform_device.h> | ||
| 20 | #include <linux/clk.h> | ||
| 21 | #include <linux/sh_clk.h> | ||
| 22 | #include <linux/bitmap.h> | ||
| 23 | #include <linux/slab.h> | ||
| 24 | |||
| 25 | #ifdef CONFIG_PM_RUNTIME | ||
| 26 | |||
| 27 | static int default_platform_runtime_idle(struct device *dev) | ||
| 28 | { | ||
| 29 | /* suspend synchronously to disable clocks immediately */ | ||
| 30 | return pm_runtime_suspend(dev); | ||
| 31 | } | ||
| 32 | |||
| 33 | static struct dev_pm_domain default_pm_domain = { | ||
| 34 | .ops = { | ||
| 35 | .runtime_suspend = pm_clk_suspend, | ||
| 36 | .runtime_resume = pm_clk_resume, | ||
| 37 | .runtime_idle = default_platform_runtime_idle, | ||
| 38 | USE_PLATFORM_PM_SLEEP_OPS | ||
| 39 | }, | ||
| 40 | }; | ||
| 41 | |||
| 42 | #define DEFAULT_PM_DOMAIN_PTR (&default_pm_domain) | ||
| 43 | |||
| 44 | #else | ||
| 45 | |||
| 46 | #define DEFAULT_PM_DOMAIN_PTR NULL | ||
| 47 | |||
| 48 | #endif /* CONFIG_PM_RUNTIME */ | ||
| 49 | |||
| 50 | static struct pm_clk_notifier_block platform_bus_notifier = { | ||
| 51 | .pm_domain = DEFAULT_PM_DOMAIN_PTR, | ||
| 52 | .con_ids = { NULL, }, | ||
| 53 | }; | ||
| 54 | |||
| 55 | static int __init sh_pm_runtime_init(void) | ||
| 56 | { | ||
| 57 | pm_clk_add_notifier(&platform_bus_type, &platform_bus_notifier); | ||
| 58 | return 0; | ||
| 59 | } | ||
| 60 | core_initcall(sh_pm_runtime_init); | ||
| 61 | |||
| 62 | static int __init sh_pm_runtime_late_init(void) | ||
| 63 | { | ||
| 64 | pm_genpd_poweroff_unused(); | ||
| 65 | return 0; | ||
| 66 | } | ||
| 67 | late_initcall(sh_pm_runtime_late_init); | ||
diff --git a/arch/arm/mach-tegra/board-dt.c b/arch/arm/mach-tegra/board-dt.c index d368f8dafcfd..74743ad3d2d3 100644 --- a/arch/arm/mach-tegra/board-dt.c +++ b/arch/arm/mach-tegra/board-dt.c | |||
| @@ -101,6 +101,13 @@ static void __init tegra_dt_init(void) | |||
| 101 | 101 | ||
| 102 | tegra_clk_init_from_table(tegra_dt_clk_init_table); | 102 | tegra_clk_init_from_table(tegra_dt_clk_init_table); |
| 103 | 103 | ||
| 104 | /* | ||
| 105 | * Finished with the static registrations now; fill in the missing | ||
| 106 | * devices | ||
| 107 | */ | ||
| 108 | of_platform_populate(NULL, tegra_dt_match_table, | ||
| 109 | tegra20_auxdata_lookup, NULL); | ||
| 110 | |||
| 104 | for (i = 0; i < ARRAY_SIZE(pinmux_configs); i++) { | 111 | for (i = 0; i < ARRAY_SIZE(pinmux_configs); i++) { |
| 105 | if (of_machine_is_compatible(pinmux_configs[i].machine)) { | 112 | if (of_machine_is_compatible(pinmux_configs[i].machine)) { |
| 106 | pinmux_configs[i].init(); | 113 | pinmux_configs[i].init(); |
| @@ -110,12 +117,6 @@ static void __init tegra_dt_init(void) | |||
| 110 | 117 | ||
| 111 | WARN(i == ARRAY_SIZE(pinmux_configs), | 118 | WARN(i == ARRAY_SIZE(pinmux_configs), |
| 112 | "Unknown platform! Pinmuxing not initialized\n"); | 119 | "Unknown platform! Pinmuxing not initialized\n"); |
| 113 | |||
| 114 | /* | ||
| 115 | * Finished with the static registrations now; fill in the missing | ||
| 116 | * devices | ||
| 117 | */ | ||
| 118 | of_platform_populate(NULL, tegra_dt_match_table, tegra20_auxdata_lookup, NULL); | ||
| 119 | } | 120 | } |
| 120 | 121 | ||
| 121 | static const char * tegra_dt_board_compat[] = { | 122 | static const char * tegra_dt_board_compat[] = { |
diff --git a/arch/arm/mach-tegra/board-harmony-pinmux.c b/arch/arm/mach-tegra/board-harmony-pinmux.c index e99b45618cd0..7a4a26d5174c 100644 --- a/arch/arm/mach-tegra/board-harmony-pinmux.c +++ b/arch/arm/mach-tegra/board-harmony-pinmux.c | |||
| @@ -16,6 +16,8 @@ | |||
| 16 | 16 | ||
| 17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
| 18 | #include <linux/gpio.h> | 18 | #include <linux/gpio.h> |
| 19 | #include <linux/of.h> | ||
| 20 | |||
| 19 | #include <mach/pinmux.h> | 21 | #include <mach/pinmux.h> |
| 20 | 22 | ||
| 21 | #include "gpio-names.h" | 23 | #include "gpio-names.h" |
| @@ -161,7 +163,9 @@ static struct tegra_gpio_table gpio_table[] = { | |||
| 161 | 163 | ||
| 162 | void harmony_pinmux_init(void) | 164 | void harmony_pinmux_init(void) |
| 163 | { | 165 | { |
| 164 | platform_add_devices(pinmux_devices, ARRAY_SIZE(pinmux_devices)); | 166 | if (!of_machine_is_compatible("nvidia,tegra20")) |
| 167 | platform_add_devices(pinmux_devices, | ||
| 168 | ARRAY_SIZE(pinmux_devices)); | ||
| 165 | 169 | ||
| 166 | tegra_pinmux_config_table(harmony_pinmux, ARRAY_SIZE(harmony_pinmux)); | 170 | tegra_pinmux_config_table(harmony_pinmux, ARRAY_SIZE(harmony_pinmux)); |
| 167 | 171 | ||
diff --git a/arch/arm/mach-tegra/board-paz00-pinmux.c b/arch/arm/mach-tegra/board-paz00-pinmux.c index fb20894862b0..be30e215f4b7 100644 --- a/arch/arm/mach-tegra/board-paz00-pinmux.c +++ b/arch/arm/mach-tegra/board-paz00-pinmux.c | |||
| @@ -16,6 +16,8 @@ | |||
| 16 | 16 | ||
| 17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
| 18 | #include <linux/gpio.h> | 18 | #include <linux/gpio.h> |
| 19 | #include <linux/of.h> | ||
| 20 | |||
| 19 | #include <mach/pinmux.h> | 21 | #include <mach/pinmux.h> |
| 20 | 22 | ||
| 21 | #include "gpio-names.h" | 23 | #include "gpio-names.h" |
| @@ -158,7 +160,9 @@ static struct tegra_gpio_table gpio_table[] = { | |||
| 158 | 160 | ||
| 159 | void paz00_pinmux_init(void) | 161 | void paz00_pinmux_init(void) |
| 160 | { | 162 | { |
| 161 | platform_add_devices(pinmux_devices, ARRAY_SIZE(pinmux_devices)); | 163 | if (!of_machine_is_compatible("nvidia,tegra20")) |
| 164 | platform_add_devices(pinmux_devices, | ||
| 165 | ARRAY_SIZE(pinmux_devices)); | ||
| 162 | 166 | ||
| 163 | tegra_pinmux_config_table(paz00_pinmux, ARRAY_SIZE(paz00_pinmux)); | 167 | tegra_pinmux_config_table(paz00_pinmux, ARRAY_SIZE(paz00_pinmux)); |
| 164 | 168 | ||
diff --git a/arch/arm/mach-tegra/board-seaboard-pinmux.c b/arch/arm/mach-tegra/board-seaboard-pinmux.c index fbce31daa3c9..b1c2972f62fe 100644 --- a/arch/arm/mach-tegra/board-seaboard-pinmux.c +++ b/arch/arm/mach-tegra/board-seaboard-pinmux.c | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
| 17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
| 18 | #include <linux/gpio.h> | 18 | #include <linux/gpio.h> |
| 19 | #include <linux/of.h> | ||
| 19 | 20 | ||
| 20 | #include <mach/pinmux.h> | 21 | #include <mach/pinmux.h> |
| 21 | #include <mach/pinmux-t2.h> | 22 | #include <mach/pinmux-t2.h> |
| @@ -191,6 +192,7 @@ static struct tegra_gpio_table common_gpio_table[] = { | |||
| 191 | { .gpio = TEGRA_GPIO_SD2_POWER, .enable = true }, | 192 | { .gpio = TEGRA_GPIO_SD2_POWER, .enable = true }, |
| 192 | { .gpio = TEGRA_GPIO_LIDSWITCH, .enable = true }, | 193 | { .gpio = TEGRA_GPIO_LIDSWITCH, .enable = true }, |
| 193 | { .gpio = TEGRA_GPIO_POWERKEY, .enable = true }, | 194 | { .gpio = TEGRA_GPIO_POWERKEY, .enable = true }, |
| 195 | { .gpio = TEGRA_GPIO_HP_DET, .enable = true }, | ||
| 194 | { .gpio = TEGRA_GPIO_ISL29018_IRQ, .enable = true }, | 196 | { .gpio = TEGRA_GPIO_ISL29018_IRQ, .enable = true }, |
| 195 | { .gpio = TEGRA_GPIO_CDC_IRQ, .enable = true }, | 197 | { .gpio = TEGRA_GPIO_CDC_IRQ, .enable = true }, |
| 196 | { .gpio = TEGRA_GPIO_USB1, .enable = true }, | 198 | { .gpio = TEGRA_GPIO_USB1, .enable = true }, |
| @@ -218,7 +220,9 @@ static void __init update_pinmux(struct tegra_pingroup_config *newtbl, int size) | |||
| 218 | 220 | ||
| 219 | void __init seaboard_common_pinmux_init(void) | 221 | void __init seaboard_common_pinmux_init(void) |
| 220 | { | 222 | { |
| 221 | platform_add_devices(pinmux_devices, ARRAY_SIZE(pinmux_devices)); | 223 | if (!of_machine_is_compatible("nvidia,tegra20")) |
| 224 | platform_add_devices(pinmux_devices, | ||
| 225 | ARRAY_SIZE(pinmux_devices)); | ||
| 222 | 226 | ||
| 223 | tegra_pinmux_config_table(seaboard_pinmux, ARRAY_SIZE(seaboard_pinmux)); | 227 | tegra_pinmux_config_table(seaboard_pinmux, ARRAY_SIZE(seaboard_pinmux)); |
| 224 | 228 | ||
diff --git a/arch/arm/mach-tegra/board-trimslice-pinmux.c b/arch/arm/mach-tegra/board-trimslice-pinmux.c index 4969dd28a04c..7ab719d46da0 100644 --- a/arch/arm/mach-tegra/board-trimslice-pinmux.c +++ b/arch/arm/mach-tegra/board-trimslice-pinmux.c | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <linux/gpio.h> | 16 | #include <linux/gpio.h> |
| 17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
| 18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
| 19 | #include <linux/of.h> | ||
| 19 | 20 | ||
| 20 | #include <mach/pinmux.h> | 21 | #include <mach/pinmux.h> |
| 21 | 22 | ||
| @@ -157,7 +158,9 @@ static struct tegra_gpio_table gpio_table[] = { | |||
| 157 | 158 | ||
| 158 | void __init trimslice_pinmux_init(void) | 159 | void __init trimslice_pinmux_init(void) |
| 159 | { | 160 | { |
| 160 | platform_add_devices(pinmux_devices, ARRAY_SIZE(pinmux_devices)); | 161 | if (!of_machine_is_compatible("nvidia,tegra20")) |
| 162 | platform_add_devices(pinmux_devices, | ||
| 163 | ARRAY_SIZE(pinmux_devices)); | ||
| 161 | tegra_pinmux_config_table(trimslice_pinmux, ARRAY_SIZE(trimslice_pinmux)); | 164 | tegra_pinmux_config_table(trimslice_pinmux, ARRAY_SIZE(trimslice_pinmux)); |
| 162 | tegra_gpio_config(gpio_table, ARRAY_SIZE(gpio_table)); | 165 | tegra_gpio_config(gpio_table, ARRAY_SIZE(gpio_table)); |
| 163 | } | 166 | } |
diff --git a/arch/arm/mach-w90x900/dev.c b/arch/arm/mach-w90x900/dev.c index 7a1fa6adb7c3..5b0c38abacc1 100644 --- a/arch/arm/mach-w90x900/dev.c +++ b/arch/arm/mach-w90x900/dev.c | |||
| @@ -422,7 +422,7 @@ struct platform_device nuc900_device_kpi = { | |||
| 422 | 422 | ||
| 423 | /* LCD controller*/ | 423 | /* LCD controller*/ |
| 424 | 424 | ||
| 425 | static struct nuc900fb_display __initdata nuc900_lcd_info[] = { | 425 | static struct nuc900fb_display nuc900_lcd_info[] = { |
| 426 | /* Giantplus Technology GPM1040A0 320x240 Color TFT LCD */ | 426 | /* Giantplus Technology GPM1040A0 320x240 Color TFT LCD */ |
| 427 | [0] = { | 427 | [0] = { |
| 428 | .type = LCM_DCCS_VA_SRC_RGB565, | 428 | .type = LCM_DCCS_VA_SRC_RGB565, |
| @@ -445,7 +445,7 @@ static struct nuc900fb_display __initdata nuc900_lcd_info[] = { | |||
| 445 | }, | 445 | }, |
| 446 | }; | 446 | }; |
| 447 | 447 | ||
| 448 | static struct nuc900fb_mach_info nuc900_fb_info __initdata = { | 448 | static struct nuc900fb_mach_info nuc900_fb_info = { |
| 449 | #if defined(CONFIG_GPM1040A0_320X240) | 449 | #if defined(CONFIG_GPM1040A0_320X240) |
| 450 | .displays = &nuc900_lcd_info[0], | 450 | .displays = &nuc900_lcd_info[0], |
| 451 | #else | 451 | #else |
diff --git a/arch/arm/mach-w90x900/include/mach/mfp.h b/arch/arm/mach-w90x900/include/mach/mfp.h index 94c0e71617c6..23ef1f573abd 100644 --- a/arch/arm/mach-w90x900/include/mach/mfp.h +++ b/arch/arm/mach-w90x900/include/mach/mfp.h | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | extern void mfp_set_groupf(struct device *dev); | 19 | extern void mfp_set_groupf(struct device *dev); |
| 20 | extern void mfp_set_groupc(struct device *dev); | 20 | extern void mfp_set_groupc(struct device *dev); |
| 21 | extern void mfp_set_groupi(struct device *dev); | 21 | extern void mfp_set_groupi(struct device *dev); |
| 22 | extern void mfp_set_groupg(struct device *dev); | 22 | extern void mfp_set_groupg(struct device *dev, const char *subname); |
| 23 | extern void mfp_set_groupd(struct device *dev, const char *subname); | ||
| 23 | 24 | ||
| 24 | #endif /* __ASM_ARCH_MFP_H */ | 25 | #endif /* __ASM_ARCH_MFP_H */ |
diff --git a/arch/arm/mach-w90x900/include/mach/nuc900_spi.h b/arch/arm/mach-w90x900/include/mach/nuc900_spi.h index bd94819e314f..2c4e0c128501 100644 --- a/arch/arm/mach-w90x900/include/mach/nuc900_spi.h +++ b/arch/arm/mach-w90x900/include/mach/nuc900_spi.h | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | #ifndef __ASM_ARCH_SPI_H | 14 | #ifndef __ASM_ARCH_SPI_H |
| 15 | #define __ASM_ARCH_SPI_H | 15 | #define __ASM_ARCH_SPI_H |
| 16 | 16 | ||
| 17 | extern void mfp_set_groupg(struct device *dev); | 17 | extern void mfp_set_groupg(struct device *dev, const char *subname); |
| 18 | 18 | ||
| 19 | struct nuc900_spi_info { | 19 | struct nuc900_spi_info { |
| 20 | unsigned int num_cs; | 20 | unsigned int num_cs; |
diff --git a/arch/arm/mach-w90x900/mfp.c b/arch/arm/mach-w90x900/mfp.c index fb7fb627b1a5..9dd74612bb87 100644 --- a/arch/arm/mach-w90x900/mfp.c +++ b/arch/arm/mach-w90x900/mfp.c | |||
| @@ -26,10 +26,8 @@ | |||
| 26 | #define REG_MFSEL (W90X900_VA_GCR + 0xC) | 26 | #define REG_MFSEL (W90X900_VA_GCR + 0xC) |
| 27 | 27 | ||
| 28 | #define GPSELF (0x01 << 1) | 28 | #define GPSELF (0x01 << 1) |
| 29 | |||
| 30 | #define GPSELC (0x03 << 2) | 29 | #define GPSELC (0x03 << 2) |
| 31 | #define ENKPI (0x02 << 2) | 30 | #define GPSELD (0x0f << 4) |
| 32 | #define ENNAND (0x01 << 2) | ||
| 33 | 31 | ||
| 34 | #define GPSELEI0 (0x01 << 26) | 32 | #define GPSELEI0 (0x01 << 26) |
| 35 | #define GPSELEI1 (0x01 << 27) | 33 | #define GPSELEI1 (0x01 << 27) |
| @@ -37,11 +35,16 @@ | |||
| 37 | #define GPIOG0TO1 (0x03 << 14) | 35 | #define GPIOG0TO1 (0x03 << 14) |
| 38 | #define GPIOG2TO3 (0x03 << 16) | 36 | #define GPIOG2TO3 (0x03 << 16) |
| 39 | #define GPIOG22TO23 (0x03 << 22) | 37 | #define GPIOG22TO23 (0x03 << 22) |
| 38 | #define GPIOG18TO20 (0x07 << 18) | ||
| 40 | 39 | ||
| 41 | #define ENSPI (0x0a << 14) | 40 | #define ENSPI (0x0a << 14) |
| 42 | #define ENI2C0 (0x01 << 14) | 41 | #define ENI2C0 (0x01 << 14) |
| 43 | #define ENI2C1 (0x01 << 16) | 42 | #define ENI2C1 (0x01 << 16) |
| 44 | #define ENAC97 (0x02 << 22) | 43 | #define ENAC97 (0x02 << 22) |
| 44 | #define ENSD1 (0x02 << 18) | ||
| 45 | #define ENSD0 (0x0a << 4) | ||
| 46 | #define ENKPI (0x02 << 2) | ||
| 47 | #define ENNAND (0x01 << 2) | ||
| 45 | 48 | ||
| 46 | static DEFINE_MUTEX(mfp_mutex); | 49 | static DEFINE_MUTEX(mfp_mutex); |
| 47 | 50 | ||
| @@ -127,16 +130,19 @@ void mfp_set_groupi(struct device *dev) | |||
| 127 | } | 130 | } |
| 128 | EXPORT_SYMBOL(mfp_set_groupi); | 131 | EXPORT_SYMBOL(mfp_set_groupi); |
| 129 | 132 | ||
| 130 | void mfp_set_groupg(struct device *dev) | 133 | void mfp_set_groupg(struct device *dev, const char *subname) |
| 131 | { | 134 | { |
| 132 | unsigned long mfpen; | 135 | unsigned long mfpen; |
| 133 | const char *dev_id; | 136 | const char *dev_id; |
| 134 | 137 | ||
| 135 | BUG_ON(!dev); | 138 | BUG_ON((!dev) && (!subname)); |
| 136 | 139 | ||
| 137 | mutex_lock(&mfp_mutex); | 140 | mutex_lock(&mfp_mutex); |
| 138 | 141 | ||
| 139 | dev_id = dev_name(dev); | 142 | if (subname != NULL) |
| 143 | dev_id = subname; | ||
| 144 | else | ||
| 145 | dev_id = dev_name(dev); | ||
| 140 | 146 | ||
| 141 | mfpen = __raw_readl(REG_MFSEL); | 147 | mfpen = __raw_readl(REG_MFSEL); |
| 142 | 148 | ||
| @@ -152,6 +158,9 @@ void mfp_set_groupg(struct device *dev) | |||
| 152 | } else if (strcmp(dev_id, "nuc900-audio") == 0) { | 158 | } else if (strcmp(dev_id, "nuc900-audio") == 0) { |
| 153 | mfpen &= ~(GPIOG22TO23); | 159 | mfpen &= ~(GPIOG22TO23); |
| 154 | mfpen |= ENAC97;/*enable AC97*/ | 160 | mfpen |= ENAC97;/*enable AC97*/ |
| 161 | } else if (strcmp(dev_id, "nuc900-mmc-port1") == 0) { | ||
| 162 | mfpen &= ~(GPIOG18TO20); | ||
| 163 | mfpen |= (ENSD1 | 0x01);/*enable sd1*/ | ||
| 155 | } else { | 164 | } else { |
| 156 | mfpen &= ~(GPIOG0TO1 | GPIOG2TO3);/*GPIOG[3:0]*/ | 165 | mfpen &= ~(GPIOG0TO1 | GPIOG2TO3);/*GPIOG[3:0]*/ |
| 157 | } | 166 | } |
| @@ -162,3 +171,30 @@ void mfp_set_groupg(struct device *dev) | |||
| 162 | } | 171 | } |
| 163 | EXPORT_SYMBOL(mfp_set_groupg); | 172 | EXPORT_SYMBOL(mfp_set_groupg); |
| 164 | 173 | ||
| 174 | void mfp_set_groupd(struct device *dev, const char *subname) | ||
| 175 | { | ||
| 176 | unsigned long mfpen; | ||
| 177 | const char *dev_id; | ||
| 178 | |||
| 179 | BUG_ON((!dev) && (!subname)); | ||
| 180 | |||
| 181 | mutex_lock(&mfp_mutex); | ||
| 182 | |||
| 183 | if (subname != NULL) | ||
| 184 | dev_id = subname; | ||
| 185 | else | ||
| 186 | dev_id = dev_name(dev); | ||
| 187 | |||
| 188 | mfpen = __raw_readl(REG_MFSEL); | ||
| 189 | |||
| 190 | if (strcmp(dev_id, "nuc900-mmc-port0") == 0) { | ||
| 191 | mfpen &= ~GPSELD;/*enable sd0*/ | ||
| 192 | mfpen |= ENSD0; | ||
| 193 | } else | ||
| 194 | mfpen &= (~GPSELD); | ||
| 195 | |||
| 196 | __raw_writel(mfpen, REG_MFSEL); | ||
| 197 | |||
| 198 | mutex_unlock(&mfp_mutex); | ||
| 199 | } | ||
| 200 | EXPORT_SYMBOL(mfp_set_groupd); | ||
diff --git a/arch/arm/plat-mxc/Kconfig b/arch/arm/plat-mxc/Kconfig index a08a95107a63..b3a1f2b3ada3 100644 --- a/arch/arm/plat-mxc/Kconfig +++ b/arch/arm/plat-mxc/Kconfig | |||
| @@ -10,7 +10,7 @@ choice | |||
| 10 | 10 | ||
| 11 | config ARCH_IMX_V4_V5 | 11 | config ARCH_IMX_V4_V5 |
| 12 | bool "i.MX1, i.MX21, i.MX25, i.MX27" | 12 | bool "i.MX1, i.MX21, i.MX25, i.MX27" |
| 13 | select AUTO_ZRELADDR | 13 | select AUTO_ZRELADDR if !ZBOOT_ROM |
| 14 | select ARM_PATCH_PHYS_VIRT | 14 | select ARM_PATCH_PHYS_VIRT |
| 15 | help | 15 | help |
| 16 | This enables support for systems based on the Freescale i.MX ARMv4 | 16 | This enables support for systems based on the Freescale i.MX ARMv4 |
| @@ -26,7 +26,7 @@ config ARCH_IMX_V6_V7 | |||
| 26 | 26 | ||
| 27 | config ARCH_MX5 | 27 | config ARCH_MX5 |
| 28 | bool "i.MX50, i.MX51, i.MX53" | 28 | bool "i.MX50, i.MX51, i.MX53" |
| 29 | select AUTO_ZRELADDR | 29 | select AUTO_ZRELADDR if !ZBOOT_ROM |
| 30 | select ARM_PATCH_PHYS_VIRT | 30 | select ARM_PATCH_PHYS_VIRT |
| 31 | help | 31 | help |
| 32 | This enables support for machines using Freescale's i.MX50 and i.MX53 | 32 | This enables support for machines using Freescale's i.MX50 and i.MX53 |
diff --git a/arch/arm/plat-mxc/avic.c b/arch/arm/plat-mxc/avic.c index 8875fb415f68..55f15699a383 100644 --- a/arch/arm/plat-mxc/avic.c +++ b/arch/arm/plat-mxc/avic.c | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include <linux/io.h> | 22 | #include <linux/io.h> |
| 23 | #include <mach/common.h> | 23 | #include <mach/common.h> |
| 24 | #include <asm/mach/irq.h> | 24 | #include <asm/mach/irq.h> |
| 25 | #include <asm/exception.h> | ||
| 25 | #include <mach/hardware.h> | 26 | #include <mach/hardware.h> |
| 26 | 27 | ||
| 27 | #include "irq-common.h" | 28 | #include "irq-common.h" |
diff --git a/arch/arm/plat-mxc/gic.c b/arch/arm/plat-mxc/gic.c index b3b8eed263b8..12f8f8109010 100644 --- a/arch/arm/plat-mxc/gic.c +++ b/arch/arm/plat-mxc/gic.c | |||
| @@ -28,21 +28,14 @@ asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs) | |||
| 28 | if (irqnr == 1023) | 28 | if (irqnr == 1023) |
| 29 | break; | 29 | break; |
| 30 | 30 | ||
| 31 | if (irqnr > 29 && irqnr < 1021) | 31 | if (irqnr > 15 && irqnr < 1021) |
| 32 | handle_IRQ(irqnr, regs); | 32 | handle_IRQ(irqnr, regs); |
| 33 | #ifdef CONFIG_SMP | 33 | #ifdef CONFIG_SMP |
| 34 | else if (irqnr < 16) { | 34 | else { |
| 35 | writel_relaxed(irqstat, gic_cpu_base_addr + | 35 | writel_relaxed(irqstat, gic_cpu_base_addr + |
| 36 | GIC_CPU_EOI); | 36 | GIC_CPU_EOI); |
| 37 | handle_IPI(irqnr, regs); | 37 | handle_IPI(irqnr, regs); |
| 38 | } | 38 | } |
| 39 | #endif | 39 | #endif |
| 40 | #ifdef CONFIG_LOCAL_TIMERS | ||
| 41 | else if (irqnr == 29) { | ||
| 42 | writel_relaxed(irqstat, gic_cpu_base_addr + | ||
| 43 | GIC_CPU_EOI); | ||
| 44 | handle_local_timer(regs); | ||
| 45 | } | ||
| 46 | #endif | ||
| 47 | } while (1); | 40 | } while (1); |
| 48 | } | 41 | } |
diff --git a/arch/arm/plat-mxc/include/mach/common.h b/arch/arm/plat-mxc/include/mach/common.h index 83b745a5e1b7..c75f254abd85 100644 --- a/arch/arm/plat-mxc/include/mach/common.h +++ b/arch/arm/plat-mxc/include/mach/common.h | |||
| @@ -85,7 +85,6 @@ enum mxc_cpu_pwr_mode { | |||
| 85 | }; | 85 | }; |
| 86 | 86 | ||
| 87 | extern void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode); | 87 | extern void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode); |
| 88 | extern void (*imx_idle)(void); | ||
| 89 | extern void imx_print_silicon_rev(const char *cpu, int srev); | 88 | extern void imx_print_silicon_rev(const char *cpu, int srev); |
| 90 | 89 | ||
| 91 | void avic_handle_irq(struct pt_regs *); | 90 | void avic_handle_irq(struct pt_regs *); |
| @@ -133,4 +132,5 @@ extern void imx53_qsb_common_init(void); | |||
| 133 | extern void imx53_smd_common_init(void); | 132 | extern void imx53_smd_common_init(void); |
| 134 | extern int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode); | 133 | extern int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode); |
| 135 | extern void imx6q_pm_init(void); | 134 | extern void imx6q_pm_init(void); |
| 135 | extern void imx6q_clock_map_io(void); | ||
| 136 | #endif | 136 | #endif |
diff --git a/arch/arm/plat-mxc/include/mach/entry-macro.S b/arch/arm/plat-mxc/include/mach/entry-macro.S index 9fe0dfcf4e7e..ca5cf26a04b1 100644 --- a/arch/arm/plat-mxc/include/mach/entry-macro.S +++ b/arch/arm/plat-mxc/include/mach/entry-macro.S | |||
| @@ -25,6 +25,3 @@ | |||
| 25 | 25 | ||
| 26 | .macro test_for_ipi, irqnr, irqstat, base, tmp | 26 | .macro test_for_ipi, irqnr, irqstat, base, tmp |
| 27 | .endm | 27 | .endm |
| 28 | |||
| 29 | .macro test_for_ltirq, irqnr, irqstat, base, tmp | ||
| 30 | .endm | ||
diff --git a/arch/arm/plat-mxc/include/mach/mxc.h b/arch/arm/plat-mxc/include/mach/mxc.h index 00a78193c681..a4d36d601d55 100644 --- a/arch/arm/plat-mxc/include/mach/mxc.h +++ b/arch/arm/plat-mxc/include/mach/mxc.h | |||
| @@ -50,20 +50,6 @@ | |||
| 50 | #define IMX_CHIP_REVISION_3_3 0x33 | 50 | #define IMX_CHIP_REVISION_3_3 0x33 |
| 51 | #define IMX_CHIP_REVISION_UNKNOWN 0xff | 51 | #define IMX_CHIP_REVISION_UNKNOWN 0xff |
| 52 | 52 | ||
| 53 | #define IMX_CHIP_REVISION_1_0_STRING "1.0" | ||
| 54 | #define IMX_CHIP_REVISION_1_1_STRING "1.1" | ||
| 55 | #define IMX_CHIP_REVISION_1_2_STRING "1.2" | ||
| 56 | #define IMX_CHIP_REVISION_1_3_STRING "1.3" | ||
| 57 | #define IMX_CHIP_REVISION_2_0_STRING "2.0" | ||
| 58 | #define IMX_CHIP_REVISION_2_1_STRING "2.1" | ||
| 59 | #define IMX_CHIP_REVISION_2_2_STRING "2.2" | ||
| 60 | #define IMX_CHIP_REVISION_2_3_STRING "2.3" | ||
| 61 | #define IMX_CHIP_REVISION_3_0_STRING "3.0" | ||
| 62 | #define IMX_CHIP_REVISION_3_1_STRING "3.1" | ||
| 63 | #define IMX_CHIP_REVISION_3_2_STRING "3.2" | ||
| 64 | #define IMX_CHIP_REVISION_3_3_STRING "3.3" | ||
| 65 | #define IMX_CHIP_REVISION_UNKNOWN_STRING "unknown" | ||
| 66 | |||
| 67 | #ifndef __ASSEMBLY__ | 53 | #ifndef __ASSEMBLY__ |
| 68 | extern unsigned int __mxc_cpu_type; | 54 | extern unsigned int __mxc_cpu_type; |
| 69 | #endif | 55 | #endif |
diff --git a/arch/arm/plat-mxc/include/mach/system.h b/arch/arm/plat-mxc/include/mach/system.h index cf88b3593fba..b9895d250167 100644 --- a/arch/arm/plat-mxc/include/mach/system.h +++ b/arch/arm/plat-mxc/include/mach/system.h | |||
| @@ -17,14 +17,9 @@ | |||
| 17 | #ifndef __ASM_ARCH_MXC_SYSTEM_H__ | 17 | #ifndef __ASM_ARCH_MXC_SYSTEM_H__ |
| 18 | #define __ASM_ARCH_MXC_SYSTEM_H__ | 18 | #define __ASM_ARCH_MXC_SYSTEM_H__ |
| 19 | 19 | ||
| 20 | extern void (*imx_idle)(void); | ||
| 21 | |||
| 22 | static inline void arch_idle(void) | 20 | static inline void arch_idle(void) |
| 23 | { | 21 | { |
| 24 | if (imx_idle != NULL) | 22 | cpu_do_idle(); |
| 25 | (imx_idle)(); | ||
| 26 | else | ||
| 27 | cpu_do_idle(); | ||
| 28 | } | 23 | } |
| 29 | 24 | ||
| 30 | void arch_reset(char mode, const char *cmd); | 25 | void arch_reset(char mode, const char *cmd); |
diff --git a/arch/arm/plat-mxc/system.c b/arch/arm/plat-mxc/system.c index 9dad8dcc2ea9..d65fb31a55ca 100644 --- a/arch/arm/plat-mxc/system.c +++ b/arch/arm/plat-mxc/system.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <linux/io.h> | 21 | #include <linux/io.h> |
| 22 | #include <linux/err.h> | 22 | #include <linux/err.h> |
| 23 | #include <linux/delay.h> | 23 | #include <linux/delay.h> |
| 24 | #include <linux/module.h> | ||
| 24 | 25 | ||
| 25 | #include <mach/hardware.h> | 26 | #include <mach/hardware.h> |
| 26 | #include <mach/common.h> | 27 | #include <mach/common.h> |
| @@ -28,8 +29,8 @@ | |||
| 28 | #include <asm/system.h> | 29 | #include <asm/system.h> |
| 29 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
| 30 | 31 | ||
| 31 | void (*imx_idle)(void) = NULL; | ||
| 32 | void __iomem *(*imx_ioremap)(unsigned long, size_t, unsigned int) = NULL; | 32 | void __iomem *(*imx_ioremap)(unsigned long, size_t, unsigned int) = NULL; |
| 33 | EXPORT_SYMBOL_GPL(imx_ioremap); | ||
| 33 | 34 | ||
| 34 | static void __iomem *wdog_base; | 35 | static void __iomem *wdog_base; |
| 35 | 36 | ||
diff --git a/arch/arm/plat-mxc/tzic.c b/arch/arm/plat-mxc/tzic.c index e993a184189a..a3c164c7ba82 100644 --- a/arch/arm/plat-mxc/tzic.c +++ b/arch/arm/plat-mxc/tzic.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
| 18 | 18 | ||
| 19 | #include <asm/mach/irq.h> | 19 | #include <asm/mach/irq.h> |
| 20 | #include <asm/exception.h> | ||
| 20 | 21 | ||
| 21 | #include <mach/hardware.h> | 22 | #include <mach/hardware.h> |
| 22 | #include <mach/common.h> | 23 | #include <mach/common.h> |
diff --git a/arch/arm/plat-omap/include/plat/clock.h b/arch/arm/plat-omap/include/plat/clock.h index 197ca03c3f7d..eb73ab40e955 100644 --- a/arch/arm/plat-omap/include/plat/clock.h +++ b/arch/arm/plat-omap/include/plat/clock.h | |||
| @@ -165,8 +165,8 @@ struct dpll_data { | |||
| 165 | u8 auto_recal_bit; | 165 | u8 auto_recal_bit; |
| 166 | u8 recal_en_bit; | 166 | u8 recal_en_bit; |
| 167 | u8 recal_st_bit; | 167 | u8 recal_st_bit; |
| 168 | u8 flags; | ||
| 169 | # endif | 168 | # endif |
| 169 | u8 flags; | ||
| 170 | }; | 170 | }; |
| 171 | 171 | ||
| 172 | #endif | 172 | #endif |
diff --git a/arch/arm/plat-omap/include/plat/common.h b/arch/arm/plat-omap/include/plat/common.h index c50df4814f6f..3ff3e36580f2 100644 --- a/arch/arm/plat-omap/include/plat/common.h +++ b/arch/arm/plat-omap/include/plat/common.h | |||
| @@ -30,6 +30,7 @@ | |||
| 30 | #include <linux/delay.h> | 30 | #include <linux/delay.h> |
| 31 | 31 | ||
| 32 | #include <plat/i2c.h> | 32 | #include <plat/i2c.h> |
| 33 | #include <plat/omap_hwmod.h> | ||
| 33 | 34 | ||
| 34 | struct sys_timer; | 35 | struct sys_timer; |
| 35 | 36 | ||
| @@ -55,6 +56,8 @@ void am35xx_init_early(void); | |||
| 55 | void ti816x_init_early(void); | 56 | void ti816x_init_early(void); |
| 56 | void omap4430_init_early(void); | 57 | void omap4430_init_early(void); |
| 57 | 58 | ||
| 59 | extern int omap_dss_reset(struct omap_hwmod *); | ||
| 60 | |||
| 58 | void omap_sram_init(void); | 61 | void omap_sram_init(void); |
| 59 | 62 | ||
| 60 | /* | 63 | /* |
diff --git a/arch/arm/plat-s3c24xx/cpu-freq-debugfs.c b/arch/arm/plat-s3c24xx/cpu-freq-debugfs.c index a9276667c2fb..c7adad0e8de0 100644 --- a/arch/arm/plat-s3c24xx/cpu-freq-debugfs.c +++ b/arch/arm/plat-s3c24xx/cpu-freq-debugfs.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | */ | 12 | */ |
| 13 | 13 | ||
| 14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
| 15 | #include <linux/module.h> | 15 | #include <linux/export.h> |
| 16 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
| 17 | #include <linux/ioport.h> | 17 | #include <linux/ioport.h> |
| 18 | #include <linux/cpufreq.h> | 18 | #include <linux/cpufreq.h> |
diff --git a/arch/arm/plat-s5p/sysmmu.c b/arch/arm/plat-s5p/sysmmu.c index e1cbc728c775..c8bec9c7655d 100644 --- a/arch/arm/plat-s5p/sysmmu.c +++ b/arch/arm/plat-s5p/sysmmu.c | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include <linux/io.h> | 11 | #include <linux/io.h> |
| 12 | #include <linux/interrupt.h> | 12 | #include <linux/interrupt.h> |
| 13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
| 14 | #include <linux/export.h> | ||
| 14 | 15 | ||
| 15 | #include <asm/pgtable.h> | 16 | #include <asm/pgtable.h> |
| 16 | 17 | ||
diff --git a/arch/arm/plat-samsung/include/plat/gpio-cfg.h b/arch/arm/plat-samsung/include/plat/gpio-cfg.h index d48245bb02b3..df8155b9d4d1 100644 --- a/arch/arm/plat-samsung/include/plat/gpio-cfg.h +++ b/arch/arm/plat-samsung/include/plat/gpio-cfg.h | |||
| @@ -24,6 +24,8 @@ | |||
| 24 | #ifndef __PLAT_GPIO_CFG_H | 24 | #ifndef __PLAT_GPIO_CFG_H |
| 25 | #define __PLAT_GPIO_CFG_H __FILE__ | 25 | #define __PLAT_GPIO_CFG_H __FILE__ |
| 26 | 26 | ||
| 27 | #include<linux/types.h> | ||
| 28 | |||
| 27 | typedef unsigned int __bitwise__ samsung_gpio_pull_t; | 29 | typedef unsigned int __bitwise__ samsung_gpio_pull_t; |
| 28 | typedef unsigned int __bitwise__ s5p_gpio_drvstr_t; | 30 | typedef unsigned int __bitwise__ s5p_gpio_drvstr_t; |
| 29 | 31 | ||
diff --git a/arch/arm/plat-samsung/pd.c b/arch/arm/plat-samsung/pd.c index efe1d564473e..312b510d86b7 100644 --- a/arch/arm/plat-samsung/pd.c +++ b/arch/arm/plat-samsung/pd.c | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | */ | 11 | */ |
| 12 | 12 | ||
| 13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
| 14 | #include <linux/module.h> | 14 | #include <linux/export.h> |
| 15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
| 16 | #include <linux/err.h> | 16 | #include <linux/err.h> |
| 17 | #include <linux/pm_runtime.h> | 17 | #include <linux/pm_runtime.h> |
diff --git a/arch/arm/plat-samsung/pwm.c b/arch/arm/plat-samsung/pwm.c index dc1185dcf80d..c559d8438c70 100644 --- a/arch/arm/plat-samsung/pwm.c +++ b/arch/arm/plat-samsung/pwm.c | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | * the Free Software Foundation; either version 2 of the License. | 11 | * the Free Software Foundation; either version 2 of the License. |
| 12 | */ | 12 | */ |
| 13 | 13 | ||
| 14 | #include <linux/module.h> | 14 | #include <linux/export.h> |
| 15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
| 16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
| 17 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index 5bdeef969847..ccbe16f47227 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types | |||
| @@ -1123,5 +1123,6 @@ blissc MACH_BLISSC BLISSC 3491 | |||
| 1123 | thales_adc MACH_THALES_ADC THALES_ADC 3492 | 1123 | thales_adc MACH_THALES_ADC THALES_ADC 3492 |
| 1124 | ubisys_p9d_evp MACH_UBISYS_P9D_EVP UBISYS_P9D_EVP 3493 | 1124 | ubisys_p9d_evp MACH_UBISYS_P9D_EVP UBISYS_P9D_EVP 3493 |
| 1125 | atdgp318 MACH_ATDGP318 ATDGP318 3494 | 1125 | atdgp318 MACH_ATDGP318 ATDGP318 3494 |
| 1126 | m28evk MACH_M28EVK M28EVK 3613 | ||
| 1126 | smdk4212 MACH_SMDK4212 SMDK4212 3638 | 1127 | smdk4212 MACH_SMDK4212 SMDK4212 3638 |
| 1127 | smdk4412 MACH_SMDK4412 SMDK4412 3765 | 1128 | smdk4412 MACH_SMDK4412 SMDK4412 3765 |
