diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-21 15:33:45 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-21 15:33:45 -0800 | 
| commit | 6c5096e5538b455bc3bea2b02588c380f070d8c6 (patch) | |
| tree | a2d08974a0c6a6fd19dff90bd3ab1827c23a5764 | |
| parent | bab588fcfb6335c767d811a8955979f5440328e0 (diff) | |
| parent | f628e3d92465303792d52c98fb0c95bef558f936 (diff) | |
| download | olio-linux-3.10-6c5096e5538b455bc3bea2b02588c380f070d8c6.tar.xz olio-linux-3.10-6c5096e5538b455bc3bea2b02588c380f070d8c6.zip | |
Merge tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC board specific changes from Arnd Bergmann:
 "These updates are all for board specific code, including
   - defconfig updates for shmobile, davinci, bcm2835, imx, omap and
     tegra
   - SD/MMC and I2C support on bcm2835 (Raspberry PI)
   - minor updates for PXA
   - shmobile updates to GPIO usage in board files
   - More things in OMAP board files are moved over to device tree
     probing
   - Better support for audio devices on some OMAP platforms"
* tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (55 commits)
  ARM: imx_v4_v5_defconfig: Add VPU support
  ARM: imx: configs: enable netfilter support
  ARM: OMAP2+: Fix twl section warnings related to omap_twl4030_audio_init
  ARM: OMAP2+: omap2plus_defconfig: enable omap1 rtc
  RX-51: Register twl4030-madc device
  RX-51: Add leds lp5523 names from Maemo 5 2.6.28 kernel
  ARM: OMAP2+: AM33XX: omap2plus_defconfig: Add support for few drivers
  ARM: OMAP1: nokia770: enable CBUS/Retu
  ARM: OMAP2+: omap2plus_defconfig: enable CMA allocator
  ARM: OMAP2+: omap2plus_defconfig: enable TFP410 chip support
  ARM: OMAP3: igep0020: simplify GPIO LEDs dependencies
  ARM: OMAP2+: craneboard: support the TPS65910 PMU
  ARM: OMAP2+: craneboard: support NAND device
  ARM: OMAP3: cm-t3517: add MMC support
  ARM: OMAP2+: Remove apollon board support
  ARM: shmobile: armadillo800eva: set clock rates before timer init
  ARM: tegra: defconfig updates
  ARM: shmobile: mackerel: Use gpio_request_one()
  ARM: shmobile: kzm9g: Use gpio_request_one()
  ARM: shmobile: bonito: Use gpio_request_one()
  ...
47 files changed, 536 insertions, 640 deletions
| diff --git a/arch/arm/boot/dts/emev2-kzm9d.dts b/arch/arm/boot/dts/emev2-kzm9d.dts index 297e3baba71..b9b3241f173 100644 --- a/arch/arm/boot/dts/emev2-kzm9d.dts +++ b/arch/arm/boot/dts/emev2-kzm9d.dts @@ -21,6 +21,6 @@  	};  	chosen { -		bootargs = "console=ttyS1,115200n81"; +		bootargs = "console=tty0 console=ttyS1,115200n81 earlyprintk=serial8250-em.1,115200n81 mem=128M@0x40000000 ignore_loglevel root=/dev/nfs ip=dhcp nfsroot=,rsize=4096,wsize=4096";  	};  }; diff --git a/arch/arm/boot/dts/r8a7740-armadillo800eva.dts b/arch/arm/boot/dts/r8a7740-armadillo800eva.dts index a7505a95a3b..93da655b259 100644 --- a/arch/arm/boot/dts/r8a7740-armadillo800eva.dts +++ b/arch/arm/boot/dts/r8a7740-armadillo800eva.dts @@ -9,12 +9,16 @@   */  /dts-v1/; -/include/ "skeleton.dtsi" +/include/ "r8a7740.dtsi"  / {  	model = "armadillo 800 eva";  	compatible = "renesas,armadillo800eva"; +	chosen { +		bootargs = "console=tty0 console=ttySC1,115200 earlyprintk=sh-sci.1,115200 ignore_loglevel root=/dev/nfs ip=dhcp nfsroot=,rsize=4096,wsize=4096 rw"; +	}; +  	memory {  		device_type = "memory";  		reg = <0x40000000 0x20000000>; diff --git a/arch/arm/boot/dts/sh7372-mackerel.dts b/arch/arm/boot/dts/sh7372-mackerel.dts index 286f0caef01..8acf51e0cda 100644 --- a/arch/arm/boot/dts/sh7372-mackerel.dts +++ b/arch/arm/boot/dts/sh7372-mackerel.dts @@ -9,12 +9,16 @@   */  /dts-v1/; -/include/ "skeleton.dtsi" +/include/ "sh7372.dtsi"  / {  	model = "Mackerel (AP4 EVM 2nd)";  	compatible = "renesas,mackerel"; +	chosen { +		bootargs = "console=tty0, console=ttySC0,115200 earlyprintk=sh-sci.0,115200 root=/dev/nfs nfsroot=,tcp,v3 ip=dhcp mem=240m rw"; +	}; +  	memory {  		device_type = "memory";  		reg = <0x40000000 0x10000000>; diff --git a/arch/arm/boot/dts/sh73a0-kzm9g.dts b/arch/arm/boot/dts/sh73a0-kzm9g.dts index bcb91195197..7c4071e7790 100644 --- a/arch/arm/boot/dts/sh73a0-kzm9g.dts +++ b/arch/arm/boot/dts/sh73a0-kzm9g.dts @@ -9,12 +9,16 @@   */  /dts-v1/; -/include/ "skeleton.dtsi" +/include/ "sh73a0.dtsi"  / {  	model = "KZM-A9-GT";  	compatible = "renesas,kzm9g", "renesas,sh73a0"; +	chosen { +		bootargs = "console=tty0 console=ttySC4,115200 root=/dev/nfs ip=dhcp ignore_loglevel earlyprintk=sh-sci.4,115200"; +	}; +  	memory {  		device_type = "memory";  		reg = <0x41000000 0x1e800000>; diff --git a/arch/arm/configs/armadillo800eva_defconfig b/arch/arm/configs/armadillo800eva_defconfig index 2e1a8257720..0b98100d2ae 100644 --- a/arch/arm/configs/armadillo800eva_defconfig +++ b/arch/arm/configs/armadillo800eva_defconfig @@ -34,12 +34,11 @@ CONFIG_AEABI=y  CONFIG_FORCE_MAX_ZONEORDER=13  CONFIG_ZBOOT_ROM_TEXT=0x0  CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="console=tty0 console=ttySC1,115200 earlyprintk=sh-sci.1,115200 ignore_loglevel root=/dev/nfs ip=dhcp nfsroot=,rsize=4096,wsize=4096 rw" -CONFIG_CMDLINE_FORCE=y +CONFIG_ARM_APPENDED_DTB=y  CONFIG_KEXEC=y  CONFIG_VFP=y  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -# CONFIG_SUSPEND is not set +CONFIG_PM_RUNTIME=y  CONFIG_NET=y  CONFIG_PACKET=y  CONFIG_UNIX=y @@ -91,14 +90,11 @@ CONFIG_I2C_SH_MOBILE=y  # CONFIG_HWMON is not set  CONFIG_MEDIA_SUPPORT=y  CONFIG_VIDEO_DEV=y -# CONFIG_RC_CORE is not set -# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set -# CONFIG_V4L_USB_DRIVERS is not set +CONFIG_MEDIA_CAMERA_SUPPORT=y  CONFIG_V4L_PLATFORM_DRIVERS=y  CONFIG_SOC_CAMERA=y  CONFIG_SOC_CAMERA_MT9T112=y  CONFIG_VIDEO_SH_MOBILE_CEU=y -# CONFIG_RADIO_ADAPTERS is not set  CONFIG_FB=y  CONFIG_FB_SH_MOBILE_LCDC=y  CONFIG_FB_SH_MOBILE_HDMI=y diff --git a/arch/arm/configs/bcm2835_defconfig b/arch/arm/configs/bcm2835_defconfig index 74e27f0ff6a..af472e4ed45 100644 --- a/arch/arm/configs/bcm2835_defconfig +++ b/arch/arm/configs/bcm2835_defconfig @@ -1,11 +1,10 @@ -CONFIG_EXPERIMENTAL=y  # CONFIG_LOCALVERSION_AUTO is not set  CONFIG_SYSVIPC=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BSD_PROCESS_ACCT_V3=y  CONFIG_FHANDLE=y  CONFIG_NO_HZ=y  CONFIG_HIGH_RES_TIMERS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y  CONFIG_LOG_BUF_SHIFT=18  CONFIG_CGROUP_FREEZER=y  CONFIG_CGROUP_DEVICE=y @@ -30,13 +29,10 @@ CONFIG_EMBEDDED=y  CONFIG_PROFILING=y  CONFIG_OPROFILE=y  CONFIG_JUMP_LABEL=y -# CONFIG_BLOCK is not set  CONFIG_ARCH_BCM2835=y  CONFIG_PREEMPT_VOLUNTARY=y  CONFIG_AEABI=y -CONFIG_COMPACTION=y  CONFIG_KSM=y -CONFIG_DEFAULT_MMAP_MIN_ADDR=65536  CONFIG_CLEANCACHE=y  CONFIG_SECCOMP=y  CONFIG_CC_STACKPROTECTOR=y @@ -45,6 +41,11 @@ CONFIG_CRASH_DUMP=y  CONFIG_VFP=y  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set  # CONFIG_SUSPEND is not set +CONFIG_NET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETWORK_SECMARK=y +# CONFIG_WIRELESS is not set  CONFIG_DEVTMPFS=y  CONFIG_DEVTMPFS_MOUNT=y  # CONFIG_STANDALONE is not set @@ -53,20 +54,42 @@ CONFIG_DEVTMPFS_MOUNT=y  # CONFIG_INPUT_MOUSE is not set  # CONFIG_SERIO is not set  # CONFIG_VT is not set -# CONFIG_UNIX98_PTYS is not set  # CONFIG_LEGACY_PTYS is not set  # CONFIG_DEVKMEM is not set  CONFIG_SERIAL_AMBA_PL011=y  CONFIG_SERIAL_AMBA_PL011_CONSOLE=y  CONFIG_TTY_PRINTK=y  # CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_BCM2835=y +CONFIG_GPIO_SYSFS=y  # CONFIG_HWMON is not set  # CONFIG_USB_SUPPORT is not set +CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_BCM2835=y  # CONFIG_IOMMU_SUPPORT is not set -# CONFIG_FILE_LOCKING is not set -# CONFIG_DNOTIFY is not set -# CONFIG_INOTIFY_USER is not set +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_FANOTIFY=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y  # CONFIG_MISC_FILESYSTEMS is not set +CONFIG_NFS_FS=y +CONFIG_NFSD=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_UTF8=y  CONFIG_PRINTK_TIME=y  # CONFIG_ENABLE_WARN_DEPRECATED is not set  # CONFIG_ENABLE_MUST_CHECK is not set diff --git a/arch/arm/configs/da8xx_omapl_defconfig b/arch/arm/configs/da8xx_omapl_defconfig index f29223954af..6b36a5ae03c 100644 --- a/arch/arm/configs/da8xx_omapl_defconfig +++ b/arch/arm/configs/da8xx_omapl_defconfig @@ -36,6 +36,7 @@ CONFIG_CPU_FREQ_GOV_PERFORMANCE=m  CONFIG_CPU_FREQ_GOV_POWERSAVE=m  CONFIG_CPU_FREQ_GOV_ONDEMAND=m  CONFIG_CPU_IDLE=y +CONFIG_PM_RUNTIME=y  CONFIG_NET=y  CONFIG_PACKET=y  CONFIG_UNIX=y @@ -45,6 +46,8 @@ CONFIG_IP_PNP_DHCP=y  # CONFIG_INET_LRO is not set  CONFIG_NETFILTER=y  CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y  # CONFIG_FW_LOADER is not set  CONFIG_BLK_DEV_LOOP=m  CONFIG_BLK_DEV_RAM=y diff --git a/arch/arm/configs/davinci_all_defconfig b/arch/arm/configs/davinci_all_defconfig index 4ea7c95719d..3edc78a40b6 100644 --- a/arch/arm/configs/davinci_all_defconfig +++ b/arch/arm/configs/davinci_all_defconfig @@ -33,6 +33,7 @@ CONFIG_AEABI=y  CONFIG_LEDS=y  CONFIG_ZBOOT_ROM_TEXT=0x0  CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_PM_RUNTIME=y  CONFIG_NET=y  CONFIG_PACKET=y  CONFIG_UNIX=y @@ -42,6 +43,8 @@ CONFIG_IP_PNP_DHCP=y  # CONFIG_INET_LRO is not set  CONFIG_NETFILTER=y  CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y  # CONFIG_FW_LOADER is not set  CONFIG_MTD=m  CONFIG_MTD_PARTITIONS=y diff --git a/arch/arm/configs/imx_v4_v5_defconfig b/arch/arm/configs/imx_v4_v5_defconfig index ebbfb27e0e7..02c657af400 100644 --- a/arch/arm/configs/imx_v4_v5_defconfig +++ b/arch/arm/configs/imx_v4_v5_defconfig @@ -61,6 +61,7 @@ CONFIG_IP_PNP_DHCP=y  # CONFIG_INET_LRO is not set  # CONFIG_INET_DIAG is not set  # CONFIG_IPV6 is not set +CONFIG_NETFILTER=y  CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"  CONFIG_DEVTMPFS=y  CONFIG_DEVTMPFS_MOUNT=y @@ -127,6 +128,8 @@ CONFIG_MEDIA_CAMERA_SUPPORT=y  CONFIG_SOC_CAMERA=y  CONFIG_SOC_CAMERA_OV2640=y  CONFIG_VIDEO_MX2=y +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_VIDEO_CODA=y  CONFIG_FB=y  CONFIG_FB_IMX=y  CONFIG_BACKLIGHT_LCD_SUPPORT=y diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig index 0a396678756..e36b0102532 100644 --- a/arch/arm/configs/imx_v6_v7_defconfig +++ b/arch/arm/configs/imx_v6_v7_defconfig @@ -59,6 +59,7 @@ CONFIG_IP_PNP_DHCP=y  # CONFIG_INET_XFRM_MODE_BEET is not set  # CONFIG_INET_LRO is not set  CONFIG_IPV6=y +CONFIG_NETFILTER=y  # CONFIG_WIRELESS is not set  CONFIG_DEVTMPFS=y  CONFIG_DEVTMPFS_MOUNT=y diff --git a/arch/arm/configs/kota2_defconfig b/arch/arm/configs/kota2_defconfig index fa83db1ef0e..57ad3d47de7 100644 --- a/arch/arm/configs/kota2_defconfig +++ b/arch/arm/configs/kota2_defconfig @@ -21,7 +21,7 @@ CONFIG_ARCH_SHMOBILE=y  CONFIG_KEYBOARD_GPIO_POLLED=y  CONFIG_ARCH_SH73A0=y  CONFIG_MACH_KOTA2=y -CONFIG_MEMORY_SIZE=0x1e0000000 +CONFIG_MEMORY_SIZE=0x1e000000  # CONFIG_SH_TIMER_TMU is not set  # CONFIG_SWP_EMULATE is not set  CONFIG_CPU_BPREDICT_DISABLE=y diff --git a/arch/arm/configs/kzm9d_defconfig b/arch/arm/configs/kzm9d_defconfig index 8c49df66cac..6c37f4a98eb 100644 --- a/arch/arm/configs/kzm9d_defconfig +++ b/arch/arm/configs/kzm9d_defconfig @@ -32,11 +32,9 @@ CONFIG_FORCE_MAX_ZONEORDER=13  CONFIG_ZBOOT_ROM_TEXT=0x0  CONFIG_ZBOOT_ROM_BSS=0x0  CONFIG_ARM_APPENDED_DTB=y -CONFIG_CMDLINE="console=tty0 console=ttyS1,115200n81 earlyprintk=serial8250-em.1,115200n81 mem=128M@0x40000000 ignore_loglevel root=/dev/nfs ip=dhcp nfsroot=,rsize=4096,wsize=4096" -CONFIG_CMDLINE_FORCE=y  CONFIG_VFP=y  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -# CONFIG_SUSPEND is not set +CONFIG_PM_RUNTIME=y  CONFIG_NET=y  CONFIG_PACKET=y  CONFIG_UNIX=y diff --git a/arch/arm/configs/kzm9g_defconfig b/arch/arm/configs/kzm9g_defconfig index afbae287436..670c3b60f93 100644 --- a/arch/arm/configs/kzm9g_defconfig +++ b/arch/arm/configs/kzm9g_defconfig @@ -39,7 +39,7 @@ CONFIG_AEABI=y  CONFIG_HIGHMEM=y  CONFIG_ZBOOT_ROM_TEXT=0x0  CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="console=tty0 console=ttySC4,115200 root=/dev/nfs ip=dhcp ignore_loglevel earlyprintk=sh-sci.4,115200" +CONFIG_ARM_APPENDED_DTB=y  CONFIG_KEXEC=y  CONFIG_VFP=y  CONFIG_NEON=y @@ -85,6 +85,8 @@ CONFIG_I2C_CHARDEV=y  CONFIG_I2C_SH_MOBILE=y  CONFIG_GPIO_PCF857X=y  # CONFIG_HWMON is not set +CONFIG_REGULATOR=y +CONFIG_REGULATOR_DUMMY=y  CONFIG_FB=y  CONFIG_FB_SH_MOBILE_LCDC=y  CONFIG_FRAMEBUFFER_CONSOLE=y diff --git a/arch/arm/configs/mackerel_defconfig b/arch/arm/configs/mackerel_defconfig index 2098ce15554..7594b3aff25 100644 --- a/arch/arm/configs/mackerel_defconfig +++ b/arch/arm/configs/mackerel_defconfig @@ -23,8 +23,9 @@ CONFIG_AEABI=y  CONFIG_FORCE_MAX_ZONEORDER=15  CONFIG_ZBOOT_ROM_TEXT=0x0  CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="console=tty0, console=ttySC0,115200 earlyprintk=sh-sci.0,115200 root=/dev/nfs nfsroot=,tcp,v3 ip=dhcp memchunk.vpu=64m memchunk.veu0=8m memchunk.spu0=2m mem=240m" +CONFIG_ARM_APPENDED_DTB=y  CONFIG_KEXEC=y +CONFIG_VFP=y  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set  CONFIG_PM=y  CONFIG_PM_RUNTIME=y diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig index 5be2e4be802..b16bae2c9a6 100644 --- a/arch/arm/configs/omap2plus_defconfig +++ b/arch/arm/configs/omap2plus_defconfig @@ -53,6 +53,11 @@ CONFIG_IP_PNP_RARP=y  # CONFIG_INET_LRO is not set  # CONFIG_IPV6 is not set  CONFIG_NETFILTER=y +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m +CONFIG_CAN_C_CAN=m +CONFIG_CAN_C_CAN_PLATFORM=m  CONFIG_BT=m  CONFIG_BT_HCIUART=m  CONFIG_BT_HCIUART_H4=y @@ -65,6 +70,7 @@ CONFIG_MAC80211=m  CONFIG_MAC80211_RC_PID=y  CONFIG_MAC80211_RC_DEFAULT_PID=y  CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_CMA=y  CONFIG_CONNECTOR=y  CONFIG_DEVTMPFS=y  CONFIG_DEVTMPFS_MOUNT=y @@ -84,6 +90,9 @@ CONFIG_MTD_UBI=y  CONFIG_BLK_DEV_LOOP=y  CONFIG_BLK_DEV_RAM=y  CONFIG_BLK_DEV_RAM_SIZE=16384 +CONFIG_SENSORS_LIS3LV02D=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SENSORS_LIS3_I2C=m  CONFIG_SCSI=y  CONFIG_BLK_DEV_SD=y  CONFIG_SCSI_MULTI_LUN=y @@ -109,6 +118,7 @@ CONFIG_USB_KC2190=y  CONFIG_INPUT_JOYDEV=y  CONFIG_INPUT_EVDEV=y  CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_MATRIX=m  CONFIG_KEYBOARD_TWL4030=y  CONFIG_INPUT_TOUCHSCREEN=y  CONFIG_TOUCHSCREEN_ADS7846=y @@ -134,14 +144,17 @@ CONFIG_GPIO_SYSFS=y  CONFIG_GPIO_TWL4030=y  CONFIG_W1=y  CONFIG_POWER_SUPPLY=y +CONFIG_SENSORS_LM75=m  CONFIG_WATCHDOG=y  CONFIG_OMAP_WATCHDOG=y  CONFIG_TWL4030_WATCHDOG=y  CONFIG_MFD_TPS65217=y +CONFIG_MFD_TPS65910=y  CONFIG_REGULATOR_TWL4030=y  CONFIG_REGULATOR_TPS65023=y  CONFIG_REGULATOR_TPS6507X=y  CONFIG_REGULATOR_TPS65217=y +CONFIG_REGULATOR_TPS65910=y  CONFIG_FB=y  CONFIG_FIRMWARE_EDID=y  CONFIG_FB_MODE_HELPERS=y @@ -153,6 +166,7 @@ CONFIG_OMAP2_DSS_SDI=y  CONFIG_OMAP2_DSS_DSI=y  CONFIG_FB_OMAP2=m  CONFIG_PANEL_GENERIC_DPI=m +CONFIG_PANEL_TFP410=m  CONFIG_PANEL_SHARP_LS037V7DW01=m  CONFIG_PANEL_NEC_NL8048HL11_01B=m  CONFIG_PANEL_TAAL=m @@ -200,9 +214,20 @@ CONFIG_SDIO_UART=y  CONFIG_MMC_ARMMMCI=y  CONFIG_MMC_OMAP=y  CONFIG_MMC_OMAP_HS=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y  CONFIG_RTC_CLASS=y  CONFIG_RTC_DRV_TWL92330=y  CONFIG_RTC_DRV_TWL4030=y +CONFIG_RTC_DRV_OMAP=y  CONFIG_DMADEVICES=y  CONFIG_DMA_OMAP=y  CONFIG_EXT2_FS=y diff --git a/arch/arm/configs/tegra_defconfig b/arch/arm/configs/tegra_defconfig index a7827fd0616..aba4881d20e 100644 --- a/arch/arm/configs/tegra_defconfig +++ b/arch/arm/configs/tegra_defconfig @@ -38,6 +38,7 @@ CONFIG_HIGHMEM=y  CONFIG_ZBOOT_ROM_TEXT=0x0  CONFIG_ZBOOT_ROM_BSS=0x0  CONFIG_AUTO_ZRELADDR=y +CONFIG_KEXEC=y  CONFIG_CPU_FREQ=y  CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y  CONFIG_CPU_IDLE=y @@ -106,12 +107,14 @@ CONFIG_BRCMFMAC=m  CONFIG_RT2X00=y  CONFIG_RT2800USB=m  CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_TEGRA=y  CONFIG_INPUT_MISC=y  CONFIG_INPUT_MPU3050=y  # CONFIG_LEGACY_PTYS is not set  # CONFIG_DEVKMEM is not set  CONFIG_SERIAL_8250=y  CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_TEGRA=y  CONFIG_SERIAL_OF_PLATFORM=y  # CONFIG_HW_RANDOM is not set  CONFIG_I2C=y @@ -127,6 +130,8 @@ CONFIG_GPIO_TPS6586X=y  CONFIG_GPIO_TPS65910=y  CONFIG_POWER_SUPPLY=y  CONFIG_BATTERY_SBS=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y  CONFIG_SENSORS_LM90=y  CONFIG_MFD_TPS6586X=y  CONFIG_MFD_TPS65910=y @@ -186,6 +191,7 @@ CONFIG_RTC_INTF_SYSFS=y  CONFIG_RTC_INTF_PROC=y  CONFIG_RTC_INTF_DEV=y  CONFIG_RTC_DRV_MAX8907=y +CONFIG_RTC_DRV_TPS6586X=y  CONFIG_RTC_DRV_TPS65910=y  CONFIG_RTC_DRV_EM3027=y  CONFIG_RTC_DRV_TEGRA=y diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 3a76a47df39..1f50a653eb8 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c @@ -349,13 +349,13 @@ static inline void da850_evm_setup_nor_nand(void)  	if (!HAS_MMC) {  		ret = davinci_cfg_reg_list(da850_evm_nand_pins);  		if (ret) -			pr_warning("da850_evm_init: nand mux setup failed: " -					"%d\n", ret); +			pr_warn("%s: NAND mux setup failed: %d\n", +				__func__, ret);  		ret = davinci_cfg_reg_list(da850_evm_nor_pins);  		if (ret) -			pr_warning("da850_evm_init: nor mux setup failed: %d\n", -				ret); +			pr_warn("%s: NOR mux setup failed: %d\n", +				__func__, ret);  		da850_evm_init_nor(); @@ -477,19 +477,19 @@ static int da850_evm_ui_expander_setup(struct i2c_client *client, unsigned gpio,  	ret = gpio_request(sel_a, da850_evm_ui_exp[DA850_EVM_UI_EXP_SEL_A]);  	if (ret) { -		pr_warning("Cannot open UI expander pin %d\n", sel_a); +		pr_warn("Cannot open UI expander pin %d\n", sel_a);  		goto exp_setup_sela_fail;  	}  	ret = gpio_request(sel_b, da850_evm_ui_exp[DA850_EVM_UI_EXP_SEL_B]);  	if (ret) { -		pr_warning("Cannot open UI expander pin %d\n", sel_b); +		pr_warn("Cannot open UI expander pin %d\n", sel_b);  		goto exp_setup_selb_fail;  	}  	ret = gpio_request(sel_c, da850_evm_ui_exp[DA850_EVM_UI_EXP_SEL_C]);  	if (ret) { -		pr_warning("Cannot open UI expander pin %d\n", sel_c); +		pr_warn("Cannot open UI expander pin %d\n", sel_c);  		goto exp_setup_selc_fail;  	} @@ -501,7 +501,7 @@ static int da850_evm_ui_expander_setup(struct i2c_client *client, unsigned gpio,  	da850_evm_ui_keys_init(gpio);  	ret = platform_device_register(&da850_evm_ui_keys_device);  	if (ret) { -		pr_warning("Could not register UI GPIO expander push-buttons"); +		pr_warn("Could not register UI GPIO expander push-buttons");  		goto exp_setup_keys_fail;  	} @@ -690,14 +690,14 @@ static int da850_evm_bb_expander_setup(struct i2c_client *client,  	da850_evm_bb_keys_init(gpio);  	ret = platform_device_register(&da850_evm_bb_keys_device);  	if (ret) { -		pr_warning("Could not register baseboard GPIO expander keys"); +		pr_warn("Could not register baseboard GPIO expander keys");  		goto io_exp_setup_sw_fail;  	}  	da850_evm_bb_leds_init(gpio);  	ret = platform_device_register(&da850_evm_bb_leds_device);  	if (ret) { -		pr_warning("Could not register baseboard GPIO expander LEDS"); +		pr_warn("Could not register baseboard GPIO expander LEDs");  		goto io_exp_setup_leds_fail;  	} @@ -1065,21 +1065,19 @@ static int __init da850_evm_config_emac(void)  	}  	if (ret) -		pr_warning("da850_evm_init: cpgmac/rmii mux setup failed: %d\n", -				ret); +		pr_warn("%s: CPGMAC/RMII mux setup failed: %d\n", +			__func__, ret);  	/* configure the CFGCHIP3 register for RMII or MII */  	__raw_writel(val, cfg_chip3_base);  	ret = davinci_cfg_reg(DA850_GPIO2_6);  	if (ret) -		pr_warning("da850_evm_init:GPIO(2,6) mux setup " -							"failed\n"); +		pr_warn("%s:GPIO(2,6) mux setup failed\n", __func__);  	ret = gpio_request(DA850_MII_MDIO_CLKEN_PIN, "mdio_clk_en");  	if (ret) { -		pr_warning("Cannot open GPIO %d\n", -					DA850_MII_MDIO_CLKEN_PIN); +		pr_warn("Cannot open GPIO %d\n", DA850_MII_MDIO_CLKEN_PIN);  		return ret;  	} @@ -1090,8 +1088,7 @@ static int __init da850_evm_config_emac(void)  	ret = da8xx_register_emac();  	if (ret) -		pr_warning("da850_evm_init: emac registration failed: %d\n", -				ret); +		pr_warn("%s: EMAC registration failed: %d\n", __func__, ret);  	return 0;  } @@ -1443,57 +1440,53 @@ static __init void da850_evm_init(void)  	ret = pmic_tps65070_init();  	if (ret) -		pr_warning("da850_evm_init: TPS65070 PMIC init failed: %d\n", -				ret); +		pr_warn("%s: TPS65070 PMIC init failed: %d\n", __func__, ret);  	ret = da850_register_edma(da850_edma_rsv);  	if (ret) -		pr_warning("da850_evm_init: edma registration failed: %d\n", -				ret); +		pr_warn("%s: EDMA registration failed: %d\n", __func__, ret);  	ret = davinci_cfg_reg_list(da850_i2c0_pins);  	if (ret) -		pr_warning("da850_evm_init: i2c0 mux setup failed: %d\n", -				ret); +		pr_warn("%s: I2C0 mux setup failed: %d\n", __func__, ret);  	ret = da8xx_register_i2c(0, &da850_evm_i2c_0_pdata);  	if (ret) -		pr_warning("da850_evm_init: i2c0 registration failed: %d\n", -				ret); +		pr_warn("%s: I2C0 registration failed: %d\n", __func__, ret);  	ret = da8xx_register_watchdog();  	if (ret) -		pr_warning("da830_evm_init: watchdog registration failed: %d\n", -				ret); +		pr_warn("%s: watchdog registration failed: %d\n", +			__func__, ret);  	if (HAS_MMC) {  		ret = davinci_cfg_reg_list(da850_evm_mmcsd0_pins);  		if (ret) -			pr_warning("da850_evm_init: mmcsd0 mux setup failed:" -					" %d\n", ret); +			pr_warn("%s: MMCSD0 mux setup failed: %d\n", +				__func__, ret);  		ret = gpio_request(DA850_MMCSD_CD_PIN, "MMC CD\n");  		if (ret) -			pr_warning("da850_evm_init: can not open GPIO %d\n", -					DA850_MMCSD_CD_PIN); +			pr_warn("%s: can not open GPIO %d\n", +				__func__, DA850_MMCSD_CD_PIN);  		gpio_direction_input(DA850_MMCSD_CD_PIN);  		ret = gpio_request(DA850_MMCSD_WP_PIN, "MMC WP\n");  		if (ret) -			pr_warning("da850_evm_init: can not open GPIO %d\n", -					DA850_MMCSD_WP_PIN); +			pr_warn("%s: can not open GPIO %d\n", +				__func__, DA850_MMCSD_WP_PIN);  		gpio_direction_input(DA850_MMCSD_WP_PIN);  		ret = da8xx_register_mmcsd0(&da850_mmc_config);  		if (ret) -			pr_warning("da850_evm_init: mmcsd0 registration failed:" -					" %d\n", ret); +			pr_warn("%s: MMCSD0 registration failed: %d\n", +				__func__, ret);  		ret = da850_wl12xx_init();  		if (ret) -			pr_warning("da850_evm_init: wl12xx initialization" -				   " failed: %d\n", ret); +			pr_warn("%s: WL12xx initialization failed: %d\n", +				__func__, ret);  	}  	davinci_serial_init(&da850_evm_uart_config); @@ -1511,16 +1504,14 @@ static __init void da850_evm_init(void)  	ret = davinci_cfg_reg_list(da850_evm_mcasp_pins);  	if (ret) -		pr_warning("da850_evm_init: mcasp mux setup failed: %d\n", -				ret); +		pr_warn("%s: McASP mux setup failed: %d\n", __func__, ret);  	da850_evm_snd_data.sram_pool = sram_get_gen_pool();  	da8xx_register_mcasp(0, &da850_evm_snd_data);  	ret = davinci_cfg_reg_list(da850_lcdcntl_pins);  	if (ret) -		pr_warning("da850_evm_init: lcdcntl mux setup failed: %d\n", -				ret); +		pr_warn("%s: LCDC mux setup failed: %d\n", __func__, ret);  	ret = da8xx_register_uio_pruss();  	if (ret) @@ -1530,38 +1521,33 @@ static __init void da850_evm_init(void)  	/* Handle board specific muxing for LCD here */  	ret = davinci_cfg_reg_list(da850_evm_lcdc_pins);  	if (ret) -		pr_warning("da850_evm_init: evm specific lcd mux setup " -				"failed: %d\n",	ret); +		pr_warn("%s: EVM specific LCD mux setup failed: %d\n", +			__func__, ret);  	ret = da850_lcd_hw_init();  	if (ret) -		pr_warning("da850_evm_init: lcd initialization failed: %d\n", -				ret); +		pr_warn("%s: LCD initialization failed: %d\n", __func__, ret);  	sharp_lk043t1dg01_pdata.panel_power_ctrl = da850_panel_power_ctrl,  	ret = da8xx_register_lcdc(&sharp_lk043t1dg01_pdata);  	if (ret) -		pr_warning("da850_evm_init: lcdc registration failed: %d\n", -				ret); +		pr_warn("%s: LCDC registration failed: %d\n", __func__, ret);  	ret = da8xx_register_rtc();  	if (ret) -		pr_warning("da850_evm_init: rtc setup failed: %d\n", ret); +		pr_warn("%s: RTC setup failed: %d\n", __func__, ret);  	ret = da850_evm_init_cpufreq();  	if (ret) -		pr_warning("da850_evm_init: cpufreq registration failed: %d\n", -				ret); +		pr_warn("%s: cpufreq registration failed: %d\n", __func__, ret);  	ret = da8xx_register_cpuidle();  	if (ret) -		pr_warning("da850_evm_init: cpuidle registration failed: %d\n", -				ret); +		pr_warn("%s: cpuidle registration failed: %d\n", __func__, ret);  	ret = da850_register_pm(&da850_pm_device);  	if (ret) -		pr_warning("da850_evm_init: suspend registration failed: %d\n", -				ret); +		pr_warn("%s: suspend registration failed: %d\n", __func__, ret);  	da850_vpif_init(); @@ -1573,13 +1559,11 @@ static __init void da850_evm_init(void)  	ret = da8xx_register_spi_bus(1, ARRAY_SIZE(da850evm_spi_info));  	if (ret) -		pr_warning("da850_evm_init: spi 1 registration failed: %d\n", -				ret); +		pr_warn("%s: SPI 1 registration failed: %d\n", __func__, ret);  	ret = da850_register_sata(DA850EVM_SATA_REFCLKPN_RATE);  	if (ret) -		pr_warning("da850_evm_init: sata registration failed: %d\n", -				ret); +		pr_warn("%s: SATA registration failed: %d\n", __func__, ret);  	da850_evm_setup_mac_addr();  } diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c index deb3922612b..5a2bd44da54 100644 --- a/arch/arm/mach-davinci/board-omapl138-hawk.c +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c @@ -48,8 +48,7 @@ static __init void omapl138_hawk_config_emac(void)  	val &= ~BIT(8);  	ret = davinci_cfg_reg_list(omapl138_hawk_mii_pins);  	if (ret) { -		pr_warning("%s: cpgmac/mii mux setup failed: %d\n", -			__func__, ret); +		pr_warn("%s: CPGMAC/MII mux setup failed: %d\n", __func__, ret);  		return;  	} @@ -61,8 +60,7 @@ static __init void omapl138_hawk_config_emac(void)  	ret = da8xx_register_emac();  	if (ret) -		pr_warning("%s: emac registration failed: %d\n", -			__func__, ret); +		pr_warn("%s: EMAC registration failed: %d\n", __func__, ret);  }  /* @@ -147,15 +145,14 @@ static __init void omapl138_hawk_mmc_init(void)  	ret = davinci_cfg_reg_list(hawk_mmcsd0_pins);  	if (ret) { -		pr_warning("%s: MMC/SD0 mux setup failed: %d\n", -			__func__, ret); +		pr_warn("%s: MMC/SD0 mux setup failed: %d\n", __func__, ret);  		return;  	}  	ret = gpio_request_one(DA850_HAWK_MMCSD_CD_PIN,  			GPIOF_DIR_IN, "MMC CD");  	if (ret < 0) { -		pr_warning("%s: can not open GPIO %d\n", +		pr_warn("%s: can not open GPIO %d\n",  			__func__, DA850_HAWK_MMCSD_CD_PIN);  		return;  	} @@ -163,15 +160,14 @@ static __init void omapl138_hawk_mmc_init(void)  	ret = gpio_request_one(DA850_HAWK_MMCSD_WP_PIN,  			GPIOF_DIR_IN, "MMC WP");  	if (ret < 0) { -		pr_warning("%s: can not open GPIO %d\n", +		pr_warn("%s: can not open GPIO %d\n",  			__func__, DA850_HAWK_MMCSD_WP_PIN);  		goto mmc_setup_wp_fail;  	}  	ret = da8xx_register_mmcsd0(&da850_mmc_config);  	if (ret) { -		pr_warning("%s: MMC/SD0 registration failed: %d\n", -			__func__, ret); +		pr_warn("%s: MMC/SD0 registration failed: %d\n", __func__, ret);  		goto mmc_setup_mmcsd_fail;  	} @@ -250,8 +246,7 @@ static __init void omapl138_hawk_usb_init(void)  	ret = davinci_cfg_reg_list(da850_hawk_usb11_pins);  	if (ret) { -		pr_warning("%s: USB 1.1 PinMux setup failed: %d\n", -			__func__, ret); +		pr_warn("%s: USB 1.1 PinMux setup failed: %d\n", __func__, ret);  		return;  	} @@ -280,8 +275,7 @@ static __init void omapl138_hawk_usb_init(void)  	ret = da8xx_register_usb11(&omapl138_hawk_usb11_pdata);  	if (ret) { -		pr_warning("%s: USB 1.1 registration failed: %d\n", -			__func__, ret); +		pr_warn("%s: USB 1.1 registration failed: %d\n", __func__, ret);  		goto usb11_setup_fail;  	} @@ -307,8 +301,7 @@ static __init void omapl138_hawk_init(void)  	ret = da850_register_edma(da850_edma_rsv);  	if (ret) -		pr_warning("%s: EDMA registration failed: %d\n", -			__func__, ret); +		pr_warn("%s: EDMA registration failed: %d\n", __func__, ret);  	omapl138_hawk_mmc_init(); @@ -316,9 +309,8 @@ static __init void omapl138_hawk_init(void)  	ret = da8xx_register_watchdog();  	if (ret) -		pr_warning("omapl138_hawk_init: " -			"watchdog registration failed: %d\n", -			ret); +		pr_warn("%s: watchdog registration failed: %d\n", +			__func__, ret);  }  #ifdef CONFIG_SERIAL_8250_CONSOLE diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index 4695ca71770..62a15e289c7 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c @@ -7,6 +7,7 @@   * it under the terms of the GNU General Public License version 2 as   * published by the Free Software Foundation.   */ +#include <linux/irq.h>  #include <linux/gpio.h>  #include <linux/kernel.h>  #include <linux/init.h> @@ -23,6 +24,8 @@  #include <linux/platform_data/keypad-omap.h>  #include <linux/platform_data/lcd-mipid.h> +#include <linux/platform_data/gpio-omap.h> +#include <linux/platform_data/i2c-cbus-gpio.h>  #include <asm/mach-types.h>  #include <asm/mach/arch.h> @@ -212,6 +215,45 @@ static inline void nokia770_mmc_init(void)  }  #endif +#if defined(CONFIG_I2C_CBUS_GPIO) || defined(CONFIG_I2C_CBUS_GPIO_MODULE) +static struct i2c_cbus_platform_data nokia770_cbus_data = { +	.clk_gpio = OMAP_MPUIO(9), +	.dat_gpio = OMAP_MPUIO(10), +	.sel_gpio = OMAP_MPUIO(11), +}; + +static struct platform_device nokia770_cbus_device = { +	.name   = "i2c-cbus-gpio", +	.id     = 2, +	.dev    = { +		.platform_data = &nokia770_cbus_data, +	}, +}; + +static struct i2c_board_info nokia770_i2c_board_info_2[] __initdata = { +	{ +		I2C_BOARD_INFO("retu-mfd", 0x01), +	}, +}; + +static void __init nokia770_cbus_init(void) +{ +	const int retu_irq_gpio = 62; + +	if (gpio_request_one(retu_irq_gpio, GPIOF_IN, "Retu IRQ")) +		return; +	irq_set_irq_type(gpio_to_irq(retu_irq_gpio), IRQ_TYPE_EDGE_RISING); +	nokia770_i2c_board_info_2[0].irq = gpio_to_irq(retu_irq_gpio); +	i2c_register_board_info(2, nokia770_i2c_board_info_2, +				ARRAY_SIZE(nokia770_i2c_board_info_2)); +	platform_device_register(&nokia770_cbus_device); +} +#else /* CONFIG_I2C_CBUS_GPIO */ +static void __init nokia770_cbus_init(void) +{ +} +#endif /* CONFIG_I2C_CBUS_GPIO */ +  static void __init omap_nokia770_init(void)  {  	/* On Nokia 770, the SleepX signal is masked with an @@ -233,6 +275,7 @@ static void __init omap_nokia770_init(void)  	mipid_dev_init();  	omap1_usb_init(&nokia770_usb_config);  	nokia770_mmc_init(); +	nokia770_cbus_init();  }  MACHINE_START(NOKIA770, "Nokia 770") diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index c3c033f283a..22ad24e9496 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig @@ -188,12 +188,6 @@ config MACH_OMAP_H4  	select OMAP_DEBUG_DEVICES  	select OMAP_PACKAGE_ZAF -config MACH_OMAP_APOLLON -	bool "OMAP 2420 Apollon board" -	depends on SOC_OMAP2420 -	default y -	select OMAP_PACKAGE_ZAC -  config MACH_OMAP_2430SDP  	bool "OMAP 2430 SDP board"  	depends on SOC_OMAP2430 diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 65fb6fb38ca..ff528df7011 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -223,7 +223,6 @@ endif  obj-$(CONFIG_MACH_OMAP_GENERIC)		+= board-generic.o  obj-$(CONFIG_MACH_OMAP_H4)		+= board-h4.o  obj-$(CONFIG_MACH_OMAP_2430SDP)		+= board-2430sdp.o -obj-$(CONFIG_MACH_OMAP_APOLLON)		+= board-apollon.o  obj-$(CONFIG_MACH_OMAP3_BEAGLE)		+= board-omap3beagle.o  obj-$(CONFIG_MACH_DEVKIT8000)     	+= board-devkit8000.o  obj-$(CONFIG_MACH_OMAP_LDP)		+= board-ldp.o diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index 15a3914ab49..ce812decfac 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c @@ -25,6 +25,7 @@  #include <linux/gpio.h>  #include <linux/mmc/host.h>  #include <linux/platform_data/spi-omap2-mcspi.h> +#include <linux/platform_data/omap-twl4030.h>  #include <linux/usb/phy.h>  #include <asm/mach-types.h> @@ -210,6 +211,19 @@ static struct omap2_hsmmc_info mmc[] = {  	{}	/* Terminator */  }; +static struct omap_tw4030_pdata omap_twl4030_audio_data = { +	.voice_connected = true, +	.custom_routing	= true, + +	.has_hs		= OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, +	.has_hf		= OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, + +	.has_mainmic	= true, +	.has_submic	= true, +	.has_hsmic	= true, +	.has_linein	= OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, +}; +  static int sdp3430_twl_gpio_setup(struct device *dev,  		unsigned gpio, unsigned ngpio)  { @@ -226,6 +240,9 @@ static int sdp3430_twl_gpio_setup(struct device *dev,  	/* gpio + 15 is "sub_lcd_nRST" (output) */  	gpio_request_one(gpio + 15, GPIOF_OUT_INIT_LOW, "sub_lcd_nRST"); +	omap_twl4030_audio_data.jack_detect = gpio + 2; +	omap_twl4030_audio_init("SDP3430", &omap_twl4030_audio_data); +  	return 0;  } @@ -383,6 +400,9 @@ static int __init omap3430_i2c_init(void)  	sdp3430_twldata.vpll2->constraints.apply_uV = true;  	sdp3430_twldata.vpll2->constraints.name = "VDVI"; +	sdp3430_twldata.audio->codec->hs_extmute = 1; +	sdp3430_twldata.audio->codec->hs_extmute_gpio = -EINVAL; +  	omap3_pmic_init("twl4030", &sdp3430_twldata);  	/* i2c2 on camera connector (for sensor control) and optional isp1301 */ diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index 508e2752b7d..35f3ad0cb7c 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c @@ -24,8 +24,10 @@  #include <linux/gpio_keys.h>  #include <linux/regulator/machine.h>  #include <linux/regulator/fixed.h> +#include <linux/pwm.h>  #include <linux/leds.h>  #include <linux/leds_pwm.h> +#include <linux/pwm_backlight.h>  #include <linux/irqchip/arm-gic.h>  #include <linux/platform_data/omap4-keypad.h>  #include <linux/usb/musb.h> @@ -257,10 +259,20 @@ static struct gpio_led_platform_data sdp4430_led_data = {  	.num_leds	= ARRAY_SIZE(sdp4430_gpio_leds),  }; +static struct pwm_lookup sdp4430_pwm_lookup[] = { +	PWM_LOOKUP("twl-pwm", 0, "leds_pwm", "omap4::keypad"), +	PWM_LOOKUP("twl-pwm", 1, "pwm-backlight", NULL), +	PWM_LOOKUP("twl-pwmled", 0, "leds_pwm", "omap4:green:chrg"), +}; +  static struct led_pwm sdp4430_pwm_leds[] = {  	{ +		.name		= "omap4::keypad", +		.max_brightness	= 127, +		.pwm_period_ns	= 7812500, +	}, +	{  		.name		= "omap4:green:chrg", -		.pwm_id		= 1,  		.max_brightness	= 255,  		.pwm_period_ns	= 7812500,  	}, @@ -279,6 +291,20 @@ static struct platform_device sdp4430_leds_pwm = {  	},  }; +static struct platform_pwm_backlight_data sdp4430_backlight_data = { +	.max_brightness = 127, +	.dft_brightness = 127, +	.pwm_period_ns = 7812500, +}; + +static struct platform_device sdp4430_backlight_pwm = { +	.name   = "pwm-backlight", +	.id     = -1, +	.dev    = { +		.platform_data = &sdp4430_backlight_data, +	}, +}; +  static int omap_prox_activate(struct device *dev)  {  	gpio_set_value(OMAP4_SFH7741_ENABLE_GPIO , 1); @@ -413,6 +439,7 @@ static struct platform_device *sdp4430_devices[] __initdata = {  	&sdp4430_gpio_keys_device,  	&sdp4430_leds_gpio,  	&sdp4430_leds_pwm, +	&sdp4430_backlight_pwm,  	&sdp4430_vbat,  	&sdp4430_dmic_codec,  	&sdp4430_abe_audio, @@ -709,6 +736,7 @@ static void __init omap_4430sdp_init(void)  				ARRAY_SIZE(sdp4430_spi_board_info));  	} +	pwm_add_table(sdp4430_pwm_lookup, ARRAY_SIZE(sdp4430_pwm_lookup));  	status = omap4_keyboard_init(&sdp4430_keypad_data, &keypad_data);  	if (status)  		pr_err("Keypad initialization failed: %d\n", status); diff --git a/arch/arm/mach-omap2/board-am3517crane.c b/arch/arm/mach-omap2/board-am3517crane.c index 52cc2c59731..7d3358b2e59 100644 --- a/arch/arm/mach-omap2/board-am3517crane.c +++ b/arch/arm/mach-omap2/board-am3517crane.c @@ -20,12 +20,18 @@  #include <linux/kernel.h>  #include <linux/init.h>  #include <linux/gpio.h> +#include <linux/mfd/tps65910.h> +#include <linux/mtd/mtd.h> +#include <linux/mtd/nand.h> +#include <linux/mtd/partitions.h>  #include <asm/mach-types.h>  #include <asm/mach/arch.h>  #include <asm/mach/map.h>  #include "common.h" +#include "common-board-devices.h" +#include "board-flash.h"  #include "am35xx-emac.h"  #include "mux.h" @@ -36,6 +42,7 @@  #ifdef CONFIG_OMAP_MUX  static struct omap_board_mux board_mux[] __initdata = { +	OMAP3_MUX(SYS_NIRQ, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),  	{ .reg_offset = OMAP_MUX_TERMINATOR },  };  #endif @@ -51,6 +58,54 @@ static struct usbhs_omap_platform_data usbhs_bdata __initdata = {  	.reset_gpio_port[2]  = -EINVAL  }; +static struct mtd_partition crane_nand_partitions[] = { +	{ +		.name		= "X-Loader", +		.offset		= 0, +		.size		= 4 * NAND_BLOCK_SIZE, +		.mask_flags	= MTD_WRITEABLE, +	}, +	{ +		.name		= "U-Boot", +		.offset		= MTDPART_OFS_APPEND, +		.size		= 14 * NAND_BLOCK_SIZE, +		.mask_flags	= MTD_WRITEABLE, +	}, +	{ +		.name		= "U-Boot Env", +		.offset		= MTDPART_OFS_APPEND, +		.size		= 2 * NAND_BLOCK_SIZE, +	}, +	{ +		.name		= "Kernel", +		.offset		= MTDPART_OFS_APPEND, +		.size		= 40 * NAND_BLOCK_SIZE, +	}, +	{ +		.name		= "File System", +		.offset		= MTDPART_OFS_APPEND, +		.size		= MTDPART_SIZ_FULL, +	}, +}; + +static struct tps65910_board tps65910_pdata = { +	.irq = 7 + OMAP_INTC_START, +	.en_ck32k_xtal = true, +}; + +static struct i2c_board_info __initdata tps65910_board_info[] = { +	{ +		I2C_BOARD_INFO("tps65910", 0x2d), +		.platform_data = &tps65910_pdata, +	}, +}; + +static void __init am3517_crane_i2c_init(void) +{ +	omap_register_i2c_bus(1, 2600, tps65910_board_info, +			ARRAY_SIZE(tps65910_board_info)); +} +  static void __init am3517_crane_init(void)  {  	int ret; @@ -58,6 +113,10 @@ static void __init am3517_crane_init(void)  	omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);  	omap_serial_init();  	omap_sdrc_init(NULL, NULL); +	board_nand_init(crane_nand_partitions, +			ARRAY_SIZE(crane_nand_partitions), 0, +			NAND_BUSWIDTH_16, NULL); +	am3517_crane_i2c_init();  	/* Configure GPIO for EHCI port */  	if (omap_mux_init_gpio(GPIO_USB_NRESET, OMAP_PIN_OUTPUT)) { diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c deleted file mode 100644 index 3a6ca74709a..00000000000 --- a/arch/arm/mach-omap2/board-apollon.c +++ /dev/null @@ -1,342 +0,0 @@ -/* - * linux/arch/arm/mach-omap2/board-apollon.c - * - * Copyright (C) 2005,2006 Samsung Electronics - * Author: Kyungmin Park <kyungmin.park@samsung.com> - * - * Modified from mach-omap/omap2/board-h4.c - * - * Code for apollon OMAP2 board. Should work on many OMAP2 systems where - * the bootloader passes the board-specific data to the kernel. - * Do not put any board specific code to this file; create a new machine - * type if you need custom low-level initializations. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/onenand.h> -#include <linux/delay.h> -#include <linux/leds.h> -#include <linux/err.h> -#include <linux/clk.h> -#include <linux/smc91x.h> -#include <linux/gpio.h> -#include <linux/platform_data/leds-omap.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/mach/flash.h> - -#include "common.h" -#include "gpmc.h" - -#include <video/omapdss.h> -#include <video/omap-panel-generic-dpi.h> - -#include "mux.h" -#include "control.h" - -/* LED & Switch macros */ -#define LED0_GPIO13		13 -#define LED1_GPIO14		14 -#define LED2_GPIO15		15 -#define SW_ENTER_GPIO16		16 -#define SW_UP_GPIO17		17 -#define SW_DOWN_GPIO58		58 - -#define APOLLON_FLASH_CS	0 -#define APOLLON_ETH_CS		1 -#define APOLLON_ETHR_GPIO_IRQ	74 - -static struct mtd_partition apollon_partitions[] = { -	{ -		.name		= "X-Loader + U-Boot", -		.offset		= 0, -		.size		= SZ_128K, -		.mask_flags	= MTD_WRITEABLE, -	}, -	{ -		.name		= "params", -		.offset		= MTDPART_OFS_APPEND, -		.size		= SZ_128K, -	}, -	{ -		.name		= "kernel", -		.offset		= MTDPART_OFS_APPEND, -		.size		= SZ_2M, -	}, -	{ -		.name		= "rootfs", -		.offset		= MTDPART_OFS_APPEND, -		.size		= SZ_16M, -	}, -	{ -		.name		= "filesystem00", -		.offset		= MTDPART_OFS_APPEND, -		.size		= SZ_32M, -	}, -	{ -		.name		= "filesystem01", -		.offset		= MTDPART_OFS_APPEND, -		.size		= MTDPART_SIZ_FULL, -	}, -}; - -static struct onenand_platform_data apollon_flash_data = { -	.parts		= apollon_partitions, -	.nr_parts	= ARRAY_SIZE(apollon_partitions), -}; - -static struct resource apollon_flash_resource[] = { -	[0] = { -		.flags		= IORESOURCE_MEM, -	}, -}; - -static struct platform_device apollon_onenand_device = { -	.name		= "onenand-flash", -	.id		= -1, -	.dev		= { -		.platform_data	= &apollon_flash_data, -	}, -	.num_resources	= ARRAY_SIZE(apollon_flash_resource), -	.resource	= apollon_flash_resource, -}; - -static void __init apollon_flash_init(void) -{ -	unsigned long base; - -	if (gpmc_cs_request(APOLLON_FLASH_CS, SZ_128K, &base) < 0) { -		printk(KERN_ERR "Cannot request OneNAND GPMC CS\n"); -		return; -	} -	apollon_flash_resource[0].start = base; -	apollon_flash_resource[0].end   = base + SZ_128K - 1; -} - -static struct smc91x_platdata appolon_smc91x_info = { -	.flags	= SMC91X_USE_16BIT | SMC91X_NOWAIT, -	.leda	= RPC_LED_100_10, -	.ledb	= RPC_LED_TX_RX, -}; - -static struct resource apollon_smc91x_resources[] = { -	[0] = { -		.flags  = IORESOURCE_MEM, -	}, -	[1] = { -		.flags	= IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE, -	}, -}; - -static struct platform_device apollon_smc91x_device = { -	.name		= "smc91x", -	.id		= -1, -	.dev	= { -		.platform_data	= &appolon_smc91x_info, -	}, -	.num_resources	= ARRAY_SIZE(apollon_smc91x_resources), -	.resource	= apollon_smc91x_resources, -}; - -static struct omap_led_config apollon_led_config[] = { -	{ -		.cdev	= { -			.name	= "apollon:led0", -		}, -		.gpio	= LED0_GPIO13, -	}, -	{ -		.cdev	= { -			.name	= "apollon:led1", -		}, -		.gpio	= LED1_GPIO14, -	}, -	{ -		.cdev	= { -			.name	= "apollon:led2", -		}, -		.gpio	= LED2_GPIO15, -	}, -}; - -static struct omap_led_platform_data apollon_led_data = { -	.nr_leds	= ARRAY_SIZE(apollon_led_config), -	.leds		= apollon_led_config, -}; - -static struct platform_device apollon_led_device = { -	.name		= "omap-led", -	.id		= -1, -	.dev		= { -		.platform_data	= &apollon_led_data, -	}, -}; - -static struct platform_device *apollon_devices[] __initdata = { -	&apollon_onenand_device, -	&apollon_smc91x_device, -	&apollon_led_device, -}; - -static inline void __init apollon_init_smc91x(void) -{ -	unsigned long base; - -	unsigned int rate; -	struct clk *gpmc_fck; -	int eth_cs; -	int err; - -	gpmc_fck = clk_get(NULL, "gpmc_fck");	/* Always on ENABLE_ON_INIT */ -	if (IS_ERR(gpmc_fck)) { -		WARN_ON(1); -		return; -	} - -	clk_prepare_enable(gpmc_fck); -	rate = clk_get_rate(gpmc_fck); - -	eth_cs = APOLLON_ETH_CS; - -	/* Make sure CS1 timings are correct */ -	gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG1, 0x00011200); - -	if (rate >= 160000000) { -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f01); -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080803); -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1c0b1c0a); -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F); -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4); -	} else if (rate >= 130000000) { -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00); -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802); -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09); -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F); -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4); -	} else {/* rate = 100000000 */ -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00); -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802); -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09); -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x031A1F1F); -		gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000003C2); -	} - -	if (gpmc_cs_request(APOLLON_ETH_CS, SZ_16M, &base) < 0) { -		printk(KERN_ERR "Failed to request GPMC CS for smc91x\n"); -		goto out; -	} -	apollon_smc91x_resources[0].start = base + 0x300; -	apollon_smc91x_resources[0].end   = base + 0x30f; -	udelay(100); - -	omap_mux_init_gpio(APOLLON_ETHR_GPIO_IRQ, 0); -	err = gpio_request_one(APOLLON_ETHR_GPIO_IRQ, GPIOF_IN, "SMC91x irq"); -	if (err) { -		printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n", -			APOLLON_ETHR_GPIO_IRQ); -		gpmc_cs_free(APOLLON_ETH_CS); -	} -out: -	clk_disable_unprepare(gpmc_fck); -	clk_put(gpmc_fck); -} - -static struct panel_generic_dpi_data apollon_panel_data = { -	.name			= "apollon", -}; - -static struct omap_dss_device apollon_lcd_device = { -	.name			= "lcd", -	.driver_name		= "generic_dpi_panel", -	.type			= OMAP_DISPLAY_TYPE_DPI, -	.phy.dpi.data_lines	= 18, -	.data			= &apollon_panel_data, -}; - -static struct omap_dss_device *apollon_dss_devices[] = { -	&apollon_lcd_device, -}; - -static struct omap_dss_board_info apollon_dss_data = { -	.num_devices	= ARRAY_SIZE(apollon_dss_devices), -	.devices	= apollon_dss_devices, -	.default_device	= &apollon_lcd_device, -}; - -static struct gpio apollon_gpio_leds[] __initdata = { -	{ LED0_GPIO13, GPIOF_OUT_INIT_LOW, "LED0" }, /* LED0 - AA10 */ -	{ LED1_GPIO14, GPIOF_OUT_INIT_LOW, "LED1" }, /* LED1 - AA6  */ -	{ LED2_GPIO15, GPIOF_OUT_INIT_LOW, "LED2" }, /* LED2 - AA4  */ -}; - -static void __init apollon_led_init(void) -{ -	omap_mux_init_signal("vlynq_clk.gpio_13", 0); -	omap_mux_init_signal("vlynq_rx1.gpio_14", 0); -	omap_mux_init_signal("vlynq_rx0.gpio_15", 0); - -	gpio_request_array(apollon_gpio_leds, ARRAY_SIZE(apollon_gpio_leds)); -} - -#ifdef CONFIG_OMAP_MUX -static struct omap_board_mux board_mux[] __initdata = { -	{ .reg_offset = OMAP_MUX_TERMINATOR }, -}; -#endif - -static void __init omap_apollon_init(void) -{ -	u32 v; - -	omap2420_mux_init(board_mux, OMAP_PACKAGE_ZAC); - -	apollon_init_smc91x(); -	apollon_led_init(); -	apollon_flash_init(); - -	/* REVISIT: where's the correct place */ -	omap_mux_init_signal("sys_nirq", OMAP_PULL_ENA | OMAP_PULL_UP); - -	/* LCD PWR_EN */ -	omap_mux_init_signal("mcbsp2_dr.gpio_11", OMAP_PULL_ENA | OMAP_PULL_UP); - -	/* Use Internal loop-back in MMC/SDIO Module Input Clock selection */ -	v = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); -	v |= (1 << 24); -	omap_ctrl_writel(v, OMAP2_CONTROL_DEVCONF0); - -	/* - 	 * Make sure the serial ports are muxed on at this point. -	 * You have to mux them off in device drivers later on -	 * if not needed. -	 */ -	apollon_smc91x_resources[1].start = gpio_to_irq(APOLLON_ETHR_GPIO_IRQ); -	apollon_smc91x_resources[1].end = gpio_to_irq(APOLLON_ETHR_GPIO_IRQ); -	platform_add_devices(apollon_devices, ARRAY_SIZE(apollon_devices)); -	omap_serial_init(); -	omap_sdrc_init(NULL, NULL); -	omap_display_init(&apollon_dss_data); -} - -MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon") -	/* Maintainer: Kyungmin Park <kyungmin.park@samsung.com> */ -	.atag_offset	= 0x100, -	.reserve	= omap_reserve, -	.map_io		= omap242x_map_io, -	.init_early	= omap2420_init_early, -	.init_irq	= omap2_init_irq, -	.handle_irq	= omap2_intc_handle_irq, -	.init_machine	= omap_apollon_init, -	.init_late	= omap2420_init_late, -	.init_time	= omap2_sync32k_timer_init, -	.restart	= omap2xxx_restart, -MACHINE_END diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index 10054e3c348..af2bb219e21 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c @@ -723,7 +723,7 @@ static void __init cm_t3x_common_init(void)  	cm_t35_init_ethernet();  	cm_t35_init_led();  	cm_t35_init_display(); -	omap_twl4030_audio_init("cm-t3x"); +	omap_twl4030_audio_init("cm-t3x", NULL);  	usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");  	usb_musb_init(NULL); diff --git a/arch/arm/mach-omap2/board-cm-t3517.c b/arch/arm/mach-omap2/board-cm-t3517.c index 5e54f565a29..a66da808cc4 100644 --- a/arch/arm/mach-omap2/board-cm-t3517.c +++ b/arch/arm/mach-omap2/board-cm-t3517.c @@ -32,6 +32,7 @@  #include <linux/mtd/mtd.h>  #include <linux/mtd/nand.h>  #include <linux/mtd/partitions.h> +#include <linux/mmc/host.h>  #include <linux/can/platform/ti_hecc.h>  #include <asm/mach-types.h> @@ -46,6 +47,7 @@  #include "mux.h"  #include "control.h" +#include "hsmmc.h"  #include "common-board-devices.h"  #include "am35xx-emac.h"  #include "gpmc-nand.h" @@ -121,6 +123,26 @@ static void cm_t3517_init_hecc(void)  static inline void cm_t3517_init_hecc(void) {}  #endif +#if defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE) +static struct omap2_hsmmc_info cm_t3517_mmc[] = { +	{ +		.mmc		= 1, +		.caps		= MMC_CAP_4_BIT_DATA, +		.gpio_cd	= 144, +		.gpio_wp	= 59, +	}, +	{ +		.mmc		= 2, +		.caps		= MMC_CAP_4_BIT_DATA, +		.gpio_cd	= -EINVAL, +		.gpio_wp	= -EINVAL, +	}, +	{}	/* Terminator */ +}; +#else +#define cm_t3517_mmc NULL +#endif +  #if defined(CONFIG_RTC_DRV_V3020) || defined(CONFIG_RTC_DRV_V3020_MODULE)  #define RTC_IO_GPIO		(153)  #define RTC_WR_GPIO		(154) @@ -271,6 +293,10 @@ static struct omap_board_mux board_mux[] __initdata = {  	/* CM-T3517 USB HUB nRESET */  	OMAP3_MUX(MCBSP4_CLKX, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), +	/* CD - GPIO144 and WP - GPIO59 for MMC1 - SB-T35 */ +	OMAP3_MUX(UART2_CTS, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP), +	OMAP3_MUX(GPMC_CLK, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP), +  	{ .reg_offset = OMAP_MUX_TERMINATOR },  };  #endif @@ -286,6 +312,7 @@ static void __init cm_t3517_init(void)  	cm_t3517_init_usbh();  	cm_t3517_init_hecc();  	am35xx_emac_init(AM35XX_DEFAULT_MDIO_FREQUENCY, 1); +	omap_hsmmc_init(cm_t3517_mmc);  }  MACHINE_START(CM_T3517, "Compulab CM-T3517") diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index 4dadb0b7b80..53056c3b083 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c @@ -629,7 +629,7 @@ static void __init devkit8000_init(void)  	board_nand_init(devkit8000_nand_partitions,  			ARRAY_SIZE(devkit8000_nand_partitions), NAND_CS,  			NAND_BUSWIDTH_16, NULL); -	omap_twl4030_audio_init("omap3beagle"); +	omap_twl4030_audio_init("omap3beagle", NULL);  	/* Ensure SDRC pins are mux'd for self-refresh */  	omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index c10738a067c..bf92678a01d 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c @@ -301,20 +301,20 @@ static struct omap2_hsmmc_info mmc[] = {  static struct gpio_led igep_gpio_leds[] = {  	[0] = { -		.name			= "gpio-led:red:d0", -		.default_trigger	= "default-off" +		.name			= "omap3:red:user0", +		.default_state		= 0,  	},  	[1] = { -		.name			= "gpio-led:green:d0", -		.default_trigger	= "default-off", +		.name			= "omap3:green:boot", +		.default_state		= 1,  	},  	[2] = { -		.name			= "gpio-led:red:d1", -		.default_trigger	= "default-off", +		.name			= "omap3:red:user1", +		.default_state		= 0,  	},  	[3] = { -		.name			= "gpio-led:green:d1", -		.default_trigger	= "heartbeat", +		.name			= "omap3:green:user1", +		.default_state		= 0,  		.gpio			= -EINVAL, /* gets replaced */  		.active_low		= 1,  	}, @@ -631,7 +631,7 @@ static void __init igep_init(void)  	igep_flash_init();  	igep_leds_init(); -	omap_twl4030_audio_init("igep2"); +	omap_twl4030_audio_init("igep2", NULL);  	/*  	 * WLAN-BT combo module from MuRata which has a Marvell WLAN diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 70bc1fc808c..c3558f93d42 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c @@ -20,6 +20,8 @@  #include <linux/clk.h>  #include <linux/io.h>  #include <linux/leds.h> +#include <linux/pwm.h> +#include <linux/leds_pwm.h>  #include <linux/gpio.h>  #include <linux/input.h>  #include <linux/gpio_keys.h> @@ -56,6 +58,32 @@  #define	NAND_CS	0 +static struct pwm_lookup pwm_lookup[] = { +	/* LEDB -> PMU_STAT */ +	PWM_LOOKUP("twl-pwmled", 1, "leds_pwm", "beagleboard::pmu_stat"), +}; + +static struct led_pwm pwm_leds[] = { +	{ +		.name		= "beagleboard::pmu_stat", +		.max_brightness	= 127, +		.pwm_period_ns	= 7812500, +	}, +}; + +static struct led_pwm_platform_data pwm_data = { +	.num_leds	= ARRAY_SIZE(pwm_leds), +	.leds		= pwm_leds, +}; + +static struct platform_device leds_pwm = { +	.name	= "leds_pwm", +	.id	= -1, +	.dev	= { +		.platform_data = &pwm_data, +	}, +}; +  /*   * OMAP3 Beagle revision   * Run time detection of Beagle revision is done by reading GPIO. @@ -293,9 +321,6 @@ static int beagle_twl_gpio_setup(struct device *dev,  	gpio_request_one(gpio + TWL4030_GPIO_MAX, beagle_config.usb_pwr_level,  			"nEN_USB_PWR"); -	/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ -	gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; -  	return 0;  } @@ -377,11 +402,6 @@ static struct gpio_led gpio_leds[] = {  		.default_trigger	= "mmc0",  		.gpio			= 149,  	}, -	{ -		.name			= "beagleboard::pmu_stat", -		.gpio			= -EINVAL,	/* gets replaced */ -		.active_low		= true, -	},  };  static struct gpio_led_platform_data gpio_led_info = { @@ -429,6 +449,7 @@ static struct platform_device *omap3_beagle_devices[] __initdata = {  	&leds_gpio,  	&keys_gpio,  	&madc_hwmon, +	&leds_pwm,  };  static struct usbhs_omap_platform_data usbhs_bdata __initdata = { @@ -526,7 +547,7 @@ static void __init omap3_beagle_init(void)  	board_nand_init(omap3beagle_nand_partitions,  			ARRAY_SIZE(omap3beagle_nand_partitions), NAND_CS,  			NAND_BUSWIDTH_16, NULL); -	omap_twl4030_audio_init("omap3beagle"); +	omap_twl4030_audio_init("omap3beagle", NULL);  	/* Ensure msecure is mux'd to be able to set the RTC. */  	omap_mux_init_signal("sys_drm_msecure", OMAP_PIN_OFF_OUTPUT_HIGH); @@ -534,6 +555,8 @@ static void __init omap3_beagle_init(void)  	/* Ensure SDRC pins are mux'd for self-refresh */  	omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);  	omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT); + +	pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup));  }  MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board") diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index 8258a78c3df..48789e0bb91 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c @@ -746,7 +746,7 @@ static void __init omap3_evm_init(void)  	omap3evm_init_smsc911x();  	omap3_evm_display_init();  	omap3_evm_wl12xx_init(); -	omap_twl4030_audio_init("omap3evm"); +	omap_twl4030_audio_init("omap3evm", NULL);  }  MACHINE_START(OMAP3EVM, "OMAP3 EVM") diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index 1bcf39671c3..86bab51154e 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c @@ -508,7 +508,7 @@ static void __init overo_init(void)  	overo_display_init();  	overo_init_led();  	overo_init_keys(); -	omap_twl4030_audio_init("overo"); +	omap_twl4030_audio_init("overo", NULL);  	/* Ensure SDRC pins are mux'd for self-refresh */  	omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c index f3d075baebb..c26d441ca4f 100644 --- a/arch/arm/mach-omap2/board-rx51-peripherals.c +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c @@ -162,30 +162,39 @@ static struct tsl2563_platform_data rx51_tsl2563_platform_data = {  #if defined(CONFIG_LEDS_LP5523) || defined(CONFIG_LEDS_LP5523_MODULE)  static struct lp5523_led_config rx51_lp5523_led_config[] = {  	{ +		.name		= "lp5523:kb1",  		.chan_nr	= 0,  		.led_current	= 50,  	}, { +		.name		= "lp5523:kb2",  		.chan_nr	= 1,  		.led_current	= 50,  	}, { +		.name		= "lp5523:kb3",  		.chan_nr	= 2,  		.led_current	= 50,  	}, { +		.name		= "lp5523:kb4",  		.chan_nr	= 3,  		.led_current	= 50,  	}, { +		.name		= "lp5523:b",  		.chan_nr	= 4,  		.led_current	= 50,  	}, { +		.name		= "lp5523:g",  		.chan_nr	= 5,  		.led_current	= 50,  	}, { +		.name		= "lp5523:r",  		.chan_nr	= 6,  		.led_current	= 50,  	}, { +		.name		= "lp5523:kb5",  		.chan_nr	= 7,  		.led_current	= 50,  	}, { +		.name		= "lp5523:kb6",  		.chan_nr	= 8,  		.led_current	= 50,  	} @@ -1253,6 +1262,16 @@ static void __init rx51_init_lirc(void)  }  #endif +static struct platform_device madc_hwmon = { +	.name	= "twl4030_madc_hwmon", +	.id	= -1, +}; + +static void __init rx51_init_twl4030_hwmon(void) +{ +	platform_device_register(&madc_hwmon); +} +  void __init rx51_peripherals_init(void)  {  	rx51_i2c_init(); @@ -1272,5 +1291,6 @@ void __init rx51_peripherals_init(void)  		omap_hsmmc_init(mmc);  	rx51_charger_init(); +	rx51_init_twl4030_hwmon();  } diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c index dc5498b1b3a..cdc0c102186 100644 --- a/arch/arm/mach-omap2/board-zoom-peripherals.c +++ b/arch/arm/mach-omap2/board-zoom-peripherals.c @@ -20,6 +20,7 @@  #include <linux/wl12xx.h>  #include <linux/mmc/host.h>  #include <linux/platform_data/gpio-omap.h> +#include <linux/platform_data/omap-twl4030.h>  #include <linux/usb/phy.h>  #include <asm/mach-types.h> @@ -35,11 +36,9 @@  #include "common-board-devices.h"  #define OMAP_ZOOM_WLAN_PMENA_GPIO	(101) -#define ZOOM2_HEADSET_EXTMUTE_GPIO	(153) +#define OMAP_ZOOM_TSC2004_IRQ_GPIO	(153)  #define OMAP_ZOOM_WLAN_IRQ_GPIO		(162) -#define LCD_PANEL_ENABLE_GPIO		(7 + OMAP_MAX_GPIO_LINES) -  /* Zoom2 has Qwerty keyboard*/  static uint32_t board_keymap[] = {  	KEY(0, 0, KEY_E), @@ -227,22 +226,31 @@ static struct omap2_hsmmc_info mmc[] = {  	{}      /* Terminator */  }; +static struct omap_tw4030_pdata omap_twl4030_audio_data = { +	.voice_connected = true, +	.custom_routing	= true, + +	.has_hs		= OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, +	.has_hf		= OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, + +	.has_mainmic	= true, +	.has_submic	= true, +	.has_hsmic	= true, +	.has_linein	= OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, +}; +  static int zoom_twl_gpio_setup(struct device *dev,  		unsigned gpio, unsigned ngpio)  { -	int ret; -  	/* gpio + 0 is "mmc0_cd" (input/IRQ) */  	mmc[0].gpio_cd = gpio + 0;  	omap_hsmmc_late_init(mmc); -	ret = gpio_request_one(LCD_PANEL_ENABLE_GPIO, GPIOF_OUT_INIT_LOW, -			       "lcd enable"); -	if (ret) -		pr_err("Failed to get LCD_PANEL_ENABLE_GPIO (gpio%d).\n", -				LCD_PANEL_ENABLE_GPIO); +	/* Audio setup */ +	omap_twl4030_audio_data.jack_detect = gpio + 2; +	omap_twl4030_audio_init("Zoom2", &omap_twl4030_audio_data); -	return ret; +	return 0;  }  static struct twl4030_gpio_platform_data zoom_gpio_data = { @@ -265,14 +273,9 @@ static int __init omap_i2c_init(void)  			TWL_COMMON_PDATA_MADC | TWL_COMMON_PDATA_AUDIO,  			TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2); -	if (machine_is_omap_zoom2()) { -		struct twl4030_codec_data *codec_data; -		codec_data = zoom_twldata.audio->codec; +	if (machine_is_omap_zoom2()) +		zoom_twldata.audio->codec->ramp_delay_value = 3; /* 161 ms */ -		codec_data->ramp_delay_value = 3;	/* 161 ms */ -		codec_data->hs_extmute = 1; -		codec_data->hs_extmute_gpio = ZOOM2_HEADSET_EXTMUTE_GPIO; -	}  	omap_pmic_init(1, 2400, "twl5030", 7 + OMAP_INTC_START, &zoom_twldata);  	omap_register_i2c_bus(2, 400, NULL, 0);  	omap_register_i2c_bus(3, 400, NULL, 0); diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index 8d70bd03c5d..e4b16c8efe8 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c @@ -790,9 +790,6 @@ static int gpmc_mem_init(void)  	 * even if we didn't boot from ROM.  	 */  	boot_rom_space = BOOT_ROM_SPACE; -	/* In apollon the CS0 is mapped as 0x0000 0000 */ -	if (machine_is_omap_apollon()) -		boot_rom_space = 0;  	gpmc_mem_root.start = GPMC_MEM_START + boot_rom_space;  	gpmc_mem_root.end = GPMC_MEM_END; diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c index 6a7aec6d117..51e138cc539 100644 --- a/arch/arm/mach-omap2/twl-common.c +++ b/arch/arm/mach-omap2/twl-common.c @@ -529,24 +529,29 @@ void __init omap4_pmic_get_config(struct twl4030_platform_data *pmic_data,  	defined(CONFIG_SND_OMAP_SOC_OMAP_TWL4030_MODULE)  #include <linux/platform_data/omap-twl4030.h> +/* Commonly used configuration */  static struct omap_tw4030_pdata omap_twl4030_audio_data;  static struct platform_device audio_device = {  	.name		= "omap-twl4030",  	.id		= -1, -	.dev = { -		.platform_data = &omap_twl4030_audio_data, -	},  }; -void __init omap_twl4030_audio_init(char *card_name) +void omap_twl4030_audio_init(char *card_name, +				    struct omap_tw4030_pdata *pdata)  { -	omap_twl4030_audio_data.card_name = card_name; +	if (!pdata) +		pdata = &omap_twl4030_audio_data; + +	pdata->card_name = card_name; + +	audio_device.dev.platform_data = pdata;  	platform_device_register(&audio_device);  }  #else /* SOC_OMAP_TWL4030 */ -void __init omap_twl4030_audio_init(char *card_name) +void omap_twl4030_audio_init(char *card_name, +				    struct omap_tw4030_pdata *pdata)  {  	return;  } diff --git a/arch/arm/mach-omap2/twl-common.h b/arch/arm/mach-omap2/twl-common.h index dcfbad5ac47..24b65d081b6 100644 --- a/arch/arm/mach-omap2/twl-common.h +++ b/arch/arm/mach-omap2/twl-common.h @@ -32,6 +32,7 @@  struct twl4030_platform_data;  struct twl6040_platform_data; +struct omap_tw4030_pdata;  struct i2c_board_info;  void omap_pmic_init(int bus, u32 clkrate, const char *pmic_type, int pmic_irq, @@ -60,6 +61,6 @@ void omap3_pmic_get_config(struct twl4030_platform_data *pmic_data,  void omap4_pmic_get_config(struct twl4030_platform_data *pmic_data,  			   u32 pdata_flags, u32 regulators_flags); -void omap_twl4030_audio_init(char *card_name); +void omap_twl4030_audio_init(char *card_name, struct omap_tw4030_pdata *pdata);  #endif /* __OMAP_PMIC_COMMON__ */ diff --git a/arch/arm/mach-pxa/palmtreo.c b/arch/arm/mach-pxa/palmtreo.c index a29849d181c..d82a50b4a80 100644 --- a/arch/arm/mach-pxa/palmtreo.c +++ b/arch/arm/mach-pxa/palmtreo.c @@ -167,7 +167,7 @@ static unsigned long centro685_pin_config[] __initdata = {  /******************************************************************************   * GPIO keyboard   ******************************************************************************/ -#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) +#if IS_ENABLED(CONFIG_KEYBOARD_PXA27x)  static unsigned int treo680_matrix_keys[] = {  	KEY(0, 0, KEY_F8),		/* Red/Off/Power */  	KEY(0, 1, KEY_LEFT), @@ -315,7 +315,7 @@ static inline void palmtreo_kpc_init(void) {}  /******************************************************************************   * USB host   ******************************************************************************/ -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) +#if IS_ENABLED(CONFIG_USB_OHCI_HCD)  static struct pxaohci_platform_data treo680_ohci_info = {  	.port_mode    = PMM_PERPORT_MODE,  	.flags        = ENABLE_PORT1 | ENABLE_PORT3, @@ -397,6 +397,36 @@ static void __init palmtreo_leds_init(void)  }  /****************************************************************************** + * diskonchip docg4 flash + ******************************************************************************/ +#if defined(CONFIG_MACH_TREO680) +/* REVISIT: does the centro have this device also? */ +#if IS_ENABLED(CONFIG_MTD_NAND_DOCG4) +static struct resource docg4_resources[] = { +	{ +		.start	= 0x00000000, +		.end	= 0x00001FFF, +		.flags	= IORESOURCE_MEM, +	}, +}; + +static struct platform_device treo680_docg4_flash = { +	.name   = "docg4", +	.id     = -1, +	.resource = docg4_resources, +	.num_resources = ARRAY_SIZE(docg4_resources), +}; + +static void __init treo680_docg4_flash_init(void) +{ +	platform_device_register(&treo680_docg4_flash); +} +#else +static inline void treo680_docg4_flash_init(void) {} +#endif +#endif + +/******************************************************************************   * Machine init   ******************************************************************************/  static void __init treo_reserve(void) @@ -480,6 +510,7 @@ static void __init treo680_init(void)  	treo680_gpio_init();  	palm27x_mmc_init(GPIO_NR_TREO_SD_DETECT_N, GPIO_NR_TREO680_SD_READONLY,  			GPIO_NR_TREO680_SD_POWER, 0); +	treo680_docg4_flash_init();  }  #endif diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index 69985b06c0d..3203a9f5b4a 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c @@ -238,6 +238,7 @@ static struct clk_lookup pxa27x_clkregs[] = {  	INIT_CLKREG(&clk_pxa27x_memc, NULL, "MEMCLK"),  	INIT_CLKREG(&clk_pxa27x_mem, "pxa2xx-pcmcia", NULL),  	INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL), +	INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),  };  #ifdef CONFIG_PM diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c index 705bc63c798..8ff53a19c48 100644 --- a/arch/arm/mach-shmobile/board-ag5evm.c +++ b/arch/arm/mach-shmobile/board-ag5evm.c @@ -479,11 +479,10 @@ static void ag5evm_sdhi1_set_pwr(struct platform_device *pdev, int state)  	static int power_gpio = -EINVAL;  	if (power_gpio < 0) { -		int ret = gpio_request(GPIO_PORT114, "sdhi1_power"); -		if (!ret) { +		int ret = gpio_request_one(GPIO_PORT114, GPIOF_OUT_INIT_LOW, +					   "sdhi1_power"); +		if (!ret)  			power_gpio = GPIO_PORT114; -			gpio_direction_output(power_gpio, 0); -		}  	}  	/* @@ -604,14 +603,11 @@ static void __init ag5evm_init(void)  	gpio_request(GPIO_FN_MMCD0_5_PU, NULL);  	gpio_request(GPIO_FN_MMCD0_6_PU, NULL);  	gpio_request(GPIO_FN_MMCD0_7_PU, NULL); -	gpio_request(GPIO_PORT208, NULL); /* Reset */ -	gpio_direction_output(GPIO_PORT208, 1); +	gpio_request_one(GPIO_PORT208, GPIOF_OUT_INIT_HIGH, NULL); /* Reset */  	/* enable SMSC911X */ -	gpio_request(GPIO_PORT144, NULL); /* PINTA2 */ -	gpio_direction_input(GPIO_PORT144); -	gpio_request(GPIO_PORT145, NULL); /* RESET */ -	gpio_direction_output(GPIO_PORT145, 1); +	gpio_request_one(GPIO_PORT144, GPIOF_IN, NULL); /* PINTA2 */ +	gpio_request_one(GPIO_PORT145, GPIOF_OUT_INIT_HIGH, NULL); /* RESET */  	/* FSI A */  	gpio_request(GPIO_FN_FSIACK, NULL); @@ -626,15 +622,13 @@ static void __init ag5evm_init(void)  	gpio_request(GPIO_FN_PORT243_IRDA_FIRSEL, NULL);  	/* LCD panel */ -	gpio_request(GPIO_PORT217, NULL); /* RESET */ -	gpio_direction_output(GPIO_PORT217, 0); +	gpio_request_one(GPIO_PORT217, GPIOF_OUT_INIT_LOW, NULL); /* RESET */  	mdelay(1);  	gpio_set_value(GPIO_PORT217, 1);  	mdelay(100);  	/* LCD backlight controller */ -	gpio_request(GPIO_PORT235, NULL); /* RESET */ -	gpio_direction_output(GPIO_PORT235, 0); +	gpio_request_one(GPIO_PORT235, GPIOF_OUT_INIT_LOW, NULL); /* RESET */  	lcd_backlight_set_brightness(0);  	/* enable SDHI0 on CN15 [SD I/F] */ diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c index 2928cd68680..38f1259a0da 100644 --- a/arch/arm/mach-shmobile/board-ap4evb.c +++ b/arch/arm/mach-shmobile/board-ap4evb.c @@ -143,6 +143,10 @@   *   * SW41	:  ON : SH-Mobile AP4 Audio Mode   *	: OFF : Bluetooth Audio Mode + * + * it needs amixer settings for playing + * + * amixer set "Headphone Enable" on   */  /* @@ -1036,9 +1040,7 @@ static int ts_get_pendown_state(void)  	gpio_free(GPIO_TSC_IRQ); -	gpio_request(GPIO_TSC_PORT, NULL); - -	gpio_direction_input(GPIO_TSC_PORT); +	gpio_request_one(GPIO_TSC_PORT, GPIOF_IN, NULL);  	val = gpio_get_value(GPIO_TSC_PORT); @@ -1119,18 +1121,10 @@ static void __init ap4evb_init(void)  	gpio_request(GPIO_FN_IRQ6_39,	NULL);  	/* enable Debug switch (S6) */ -	gpio_request(GPIO_PORT32, NULL); -	gpio_request(GPIO_PORT33, NULL); -	gpio_request(GPIO_PORT34, NULL); -	gpio_request(GPIO_PORT35, NULL); -	gpio_direction_input(GPIO_PORT32); -	gpio_direction_input(GPIO_PORT33); -	gpio_direction_input(GPIO_PORT34); -	gpio_direction_input(GPIO_PORT35); -	gpio_export(GPIO_PORT32, 0); -	gpio_export(GPIO_PORT33, 0); -	gpio_export(GPIO_PORT34, 0); -	gpio_export(GPIO_PORT35, 0); +	gpio_request_one(GPIO_PORT32, GPIOF_IN | GPIOF_EXPORT, NULL); +	gpio_request_one(GPIO_PORT33, GPIOF_IN | GPIOF_EXPORT, NULL); +	gpio_request_one(GPIO_PORT34, GPIOF_IN | GPIOF_EXPORT, NULL); +	gpio_request_one(GPIO_PORT35, GPIOF_IN | GPIOF_EXPORT, NULL);  	/* SDHI0 */  	gpio_request(GPIO_FN_SDHICD0, NULL); @@ -1178,8 +1172,7 @@ static void __init ap4evb_init(void)  	gpio_request(GPIO_FN_FSIAILR,	NULL);  	gpio_request(GPIO_FN_FSIAISLD,	NULL);  	gpio_request(GPIO_FN_FSIAOSLD,	NULL); -	gpio_request(GPIO_PORT161,	NULL); -	gpio_direction_output(GPIO_PORT161, 0); /* slave */ +	gpio_request_one(GPIO_PORT161, GPIOF_OUT_INIT_LOW, NULL); /* slave */  	gpio_request(GPIO_PORT9, NULL);  	gpio_request(GPIO_PORT10, NULL); @@ -1187,8 +1180,7 @@ static void __init ap4evb_init(void)  	gpio_direction_none(GPIO_PORT10CR); /* FSIAOLR needs no direction */  	/* card detect pin for MMC slot (CN7) */ -	gpio_request(GPIO_PORT41, NULL); -	gpio_direction_input(GPIO_PORT41); +	gpio_request_one(GPIO_PORT41, GPIOF_IN, NULL);  	/* setup FSI2 port B (HDMI) */  	gpio_request(GPIO_FN_FSIBCK, NULL); @@ -1276,11 +1268,8 @@ static void __init ap4evb_init(void)  	gpio_request(GPIO_FN_LCDDISP,  NULL);  	gpio_request(GPIO_FN_LCDDCK,   NULL); -	gpio_request(GPIO_PORT189, NULL); /* backlight */ -	gpio_direction_output(GPIO_PORT189, 1); - -	gpio_request(GPIO_PORT151, NULL); /* LCDDON */ -	gpio_direction_output(GPIO_PORT151, 1); +	gpio_request_one(GPIO_PORT189, GPIOF_OUT_INIT_HIGH, NULL); /* backlight */ +	gpio_request_one(GPIO_PORT151, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */  	lcdc_info.clock_source			= LCDC_CLK_BUS;  	lcdc_info.ch[0].interface_type		= RGB18; diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c index 81d91fda2d9..f2ec0777cfb 100644 --- a/arch/arm/mach-shmobile/board-armadillo800eva.c +++ b/arch/arm/mach-shmobile/board-armadillo800eva.c @@ -124,6 +124,14 @@   * this command is required when playback.   *   * # amixer set "Headphone" 50 + * + * this command is required when capture. + * + * # amixer set "Input PGA" 15 + * # amixer set "Left Input Mixer MicP" on + * # amixer set "Left Input Mixer MicN" on + * # amixer set "Right Input Mixer MicN" on + * # amixer set "Right Input Mixer MicP" on   */  /* @@ -700,9 +708,9 @@ static int mt9t111_power(struct device *dev, int mode)  		/* video1 (= CON1 camera) expect 24MHz */  		clk_set_rate(mclk, clk_round_rate(mclk, 24000000));  		clk_enable(mclk); -		gpio_direction_output(GPIO_PORT158, 1); +		gpio_set_value(GPIO_PORT158, 1);  	} else { -		gpio_direction_output(GPIO_PORT158, 0); +		gpio_set_value(GPIO_PORT158, 0);  		clk_disable(mclk);  	} @@ -992,16 +1000,12 @@ static void __init eva_init(void)  	gpio_request(GPIO_FN_LCD0_DISP,		NULL);  	gpio_request(GPIO_FN_LCD0_LCLK_PORT165,	NULL); -	gpio_request(GPIO_PORT61, NULL); /* LCDDON */ -	gpio_direction_output(GPIO_PORT61, 1); - -	gpio_request(GPIO_PORT202, NULL); /* LCD0_LED_CONT */ -	gpio_direction_output(GPIO_PORT202, 0); +	gpio_request_one(GPIO_PORT61, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */ +	gpio_request_one(GPIO_PORT202, GPIOF_OUT_INIT_LOW, NULL); /* LCD0_LED_CONT */  	/* Touchscreen */  	gpio_request(GPIO_FN_IRQ10,	NULL); /* TP_INT */ -	gpio_request(GPIO_PORT166,	NULL); /* TP_RST_B */ -	gpio_direction_output(GPIO_PORT166, 1); +	gpio_request_one(GPIO_PORT166, GPIOF_OUT_INIT_HIGH, NULL); /* TP_RST_B */  	/* GETHER */  	gpio_request(GPIO_FN_ET_CRS,		NULL); @@ -1024,12 +1028,10 @@ static void __init eva_init(void)  	gpio_request(GPIO_FN_ET_RX_DV,		NULL);  	gpio_request(GPIO_FN_ET_RX_CLK,		NULL); -	gpio_request(GPIO_PORT18, NULL); /* PHY_RST */ -	gpio_direction_output(GPIO_PORT18, 1); +	gpio_request_one(GPIO_PORT18, GPIOF_OUT_INIT_HIGH, NULL); /* PHY_RST */  	/* USB */ -	gpio_request(GPIO_PORT159, NULL); /* USB_DEVICE_MODE */ -	gpio_direction_input(GPIO_PORT159); +	gpio_request_one(GPIO_PORT159, GPIOF_IN, NULL); /* USB_DEVICE_MODE */  	if (gpio_get_value(GPIO_PORT159)) {  		/* USB Host */ @@ -1043,8 +1045,7 @@ static void __init eva_init(void)  		 * and select GPIO_PORT209 here  		 */  		gpio_request(GPIO_FN_IRQ7_PORT209, NULL); -		gpio_request(GPIO_PORT209, NULL); -		gpio_direction_input(GPIO_PORT209); +		gpio_request_one(GPIO_PORT209, GPIOF_IN, NULL);  		platform_device_register(&usbhsf_device);  		usb = &usbhsf_device; @@ -1059,12 +1060,9 @@ static void __init eva_init(void)  	gpio_request(GPIO_FN_SDHI0_D3, NULL);  	gpio_request(GPIO_FN_SDHI0_WP, NULL); -	gpio_request(GPIO_PORT17, NULL);	/* SDHI0_18/33_B */ -	gpio_request(GPIO_PORT74, NULL);	/* SDHI0_PON */ -	gpio_request(GPIO_PORT75, NULL);	/* SDSLOT1_PON */ -	gpio_direction_output(GPIO_PORT17, 0); -	gpio_direction_output(GPIO_PORT74, 1); -	gpio_direction_output(GPIO_PORT75, 1); +	gpio_request_one(GPIO_PORT17, GPIOF_OUT_INIT_LOW, NULL);  /* SDHI0_18/33_B */ +	gpio_request_one(GPIO_PORT74, GPIOF_OUT_INIT_HIGH, NULL); /* SDHI0_PON */ +	gpio_request_one(GPIO_PORT75, GPIOF_OUT_INIT_HIGH, NULL); /* SDSLOT1_PON */  	/* we can use GPIO_FN_IRQ31_PORT167 here for SDHI0 CD irq */ @@ -1101,12 +1099,10 @@ static void __init eva_init(void)  	gpio_request(GPIO_FN_VIO_CKO,		NULL);  	/* CON1/CON15 Camera */ -	gpio_request(GPIO_PORT173, NULL); /* STANDBY */ -	gpio_request(GPIO_PORT172, NULL); /* RST */ -	gpio_request(GPIO_PORT158, NULL); /* CAM_PON */ -	gpio_direction_output(GPIO_PORT173, 0); -	gpio_direction_output(GPIO_PORT172, 1); -	gpio_direction_output(GPIO_PORT158, 0); /* see mt9t111_power() */ +	gpio_request_one(GPIO_PORT173, GPIOF_OUT_INIT_LOW, NULL);  /* STANDBY */ +	gpio_request_one(GPIO_PORT172, GPIOF_OUT_INIT_HIGH, NULL); /* RST */ +	/* see mt9t111_power() */ +	gpio_request_one(GPIO_PORT158, GPIOF_OUT_INIT_LOW, NULL);  /* CAM_PON */  	/* FSI-WM8978 */  	gpio_request(GPIO_FN_FSIAIBT,		NULL); @@ -1133,15 +1129,13 @@ static void __init eva_init(void)  	 * DBGMD/LCDC0/FSIA MUX  	 * DBGMD_SELECT_B should be set after setting PFC Function.  	 */ -	gpio_request(GPIO_PORT176, NULL); -	gpio_direction_output(GPIO_PORT176, 1); +	gpio_request_one(GPIO_PORT176, GPIOF_OUT_INIT_HIGH, NULL);  	/*  	 * We can switch CON8/CON14 by SW1.5,  	 * but it needs after DBGMD_SELECT_B  	 */ -	gpio_request(GPIO_PORT6, NULL); -	gpio_direction_input(GPIO_PORT6); +	gpio_request_one(GPIO_PORT6, GPIOF_IN, NULL);  	if (gpio_get_value(GPIO_PORT6)) {  		/* CON14 enable */  	} else { @@ -1155,8 +1149,8 @@ static void __init eva_init(void)  		gpio_request(GPIO_FN_SDHI1_CD,	NULL);  		gpio_request(GPIO_FN_SDHI1_WP,	NULL); -		gpio_request(GPIO_PORT16, NULL); /* SDSLOT2_PON */ -		gpio_direction_output(GPIO_PORT16, 1); +		/* SDSLOT2_PON */ +		gpio_request_one(GPIO_PORT16, GPIOF_OUT_INIT_HIGH, NULL);  		platform_device_register(&sdhi1_device);  	} @@ -1175,8 +1169,6 @@ static void __init eva_init(void)  	platform_add_devices(eva_devices,  			     ARRAY_SIZE(eva_devices)); -	eva_clock_init(); -  	rmobile_add_device_to_domain("A4LC", &lcdc0_device);  	rmobile_add_device_to_domain("A4LC", &hdmi_lcdc_device);  	if (usb) @@ -1189,6 +1181,9 @@ static void __init eva_earlytimer_init(void)  {  	r8a7740_clock_init(MD_CK0 | MD_CK2);  	shmobile_earlytimer_init(); + +	/* the rate of extal1 clock must be set before late_time_init */ +	eva_clock_init();  }  static void __init eva_add_early_devices(void) diff --git a/arch/arm/mach-shmobile/board-bonito.c b/arch/arm/mach-shmobile/board-bonito.c index 331b7ce4edd..e50f8669153 100644 --- a/arch/arm/mach-shmobile/board-bonito.c +++ b/arch/arm/mach-shmobile/board-bonito.c @@ -392,8 +392,7 @@ static void __init bonito_init(void)  	/*  	 * base board settings  	 */ -	gpio_request(GPIO_PORT176, NULL); -	gpio_direction_input(GPIO_PORT176); +	gpio_request_one(GPIO_PORT176, GPIOF_IN, NULL);  	if (!gpio_get_value(GPIO_PORT176)) {  		u16 bsw2;  		u16 bsw3; @@ -462,8 +461,8 @@ static void __init bonito_init(void)  			gpio_request(GPIO_FN_LCD0_DISP,		NULL);  			gpio_request(GPIO_FN_LCD0_LCLK_PORT165,	NULL); -			gpio_request(GPIO_PORT61, NULL); /* LCDDON */ -			gpio_direction_output(GPIO_PORT61, 1); +			gpio_request_one(GPIO_PORT61, GPIOF_OUT_INIT_HIGH, +					 NULL); /* LCDDON */  			/* backlight on */  			bonito_fpga_write(LCDCR, 1); diff --git a/arch/arm/mach-shmobile/board-kota2.c b/arch/arm/mach-shmobile/board-kota2.c index d759a9c2b9e..2ccc860403e 100644 --- a/arch/arm/mach-shmobile/board-kota2.c +++ b/arch/arm/mach-shmobile/board-kota2.c @@ -474,10 +474,8 @@ static void __init kota2_init(void)  	gpio_request(GPIO_FN_D15_NAF15, NULL);  	gpio_request(GPIO_FN_CS5A_, NULL);  	gpio_request(GPIO_FN_WE0__FWE, NULL); -	gpio_request(GPIO_PORT144, NULL); /* PINTA2 */ -	gpio_direction_input(GPIO_PORT144); -	gpio_request(GPIO_PORT145, NULL); /* RESET */ -	gpio_direction_output(GPIO_PORT145, 1); +	gpio_request_one(GPIO_PORT144, GPIOF_IN, NULL); /* PINTA2 */ +	gpio_request_one(GPIO_PORT145, GPIOF_OUT_INIT_HIGH, NULL); /* RESET */  	/* KEYSC */  	gpio_request(GPIO_FN_KEYIN0_PU, NULL); @@ -509,8 +507,7 @@ static void __init kota2_init(void)  	gpio_request(GPIO_FN_MMCD0_6, NULL);  	gpio_request(GPIO_FN_MMCD0_7, NULL);  	gpio_request(GPIO_FN_MMCCMD0, NULL); -	gpio_request(GPIO_PORT208, NULL); /* Reset */ -	gpio_direction_output(GPIO_PORT208, 1); +	gpio_request_one(GPIO_PORT208, GPIOF_OUT_INIT_HIGH, NULL); /* Reset */  	/* SDHI0 (microSD) */  	gpio_request(GPIO_FN_SDHICD0_PU, NULL); diff --git a/arch/arm/mach-shmobile/board-kzm9g.c b/arch/arm/mach-shmobile/board-kzm9g.c index 3efff2e7b1e..7f3a6b7e7b7 100644 --- a/arch/arm/mach-shmobile/board-kzm9g.c +++ b/arch/arm/mach-shmobile/board-kzm9g.c @@ -623,7 +623,7 @@ static int __init as3711_enable_lcdc_backlight(void)  		0x45, 0xf0,  	}; -	if (!machine_is_kzm9g()) +	if (!of_machine_is_compatible("renesas,kzm9g"))  		return 0;  	if (!a) @@ -672,8 +672,7 @@ static void __init kzm_init(void)  	gpio_request(GPIO_FN_CS4_, NULL); /* CS4 */  	/* SMSC */ -	gpio_request(GPIO_PORT224, NULL); /* IRQ3 */ -	gpio_direction_input(GPIO_PORT224); +	gpio_request_one(GPIO_PORT224, GPIOF_IN, NULL); /* IRQ3 */  	/* LCDC */  	gpio_request(GPIO_FN_LCDD23,	NULL); @@ -703,14 +702,11 @@ static void __init kzm_init(void)  	gpio_request(GPIO_FN_LCDDISP,	NULL);  	gpio_request(GPIO_FN_LCDDCK,	NULL); -	gpio_request(GPIO_PORT222,	NULL); /* LCDCDON */ -	gpio_request(GPIO_PORT226,	NULL); /* SC */ -	gpio_direction_output(GPIO_PORT222, 1); -	gpio_direction_output(GPIO_PORT226, 1); +	gpio_request_one(GPIO_PORT222, GPIOF_OUT_INIT_HIGH, NULL); /* LCDCDON */ +	gpio_request_one(GPIO_PORT226, GPIOF_OUT_INIT_HIGH, NULL); /* SC */  	/* Touchscreen */ -	gpio_request(GPIO_PORT223, NULL); /* IRQ8 */ -	gpio_direction_input(GPIO_PORT223); +	gpio_request_one(GPIO_PORT223, GPIOF_IN, NULL); /* IRQ8 */  	/* enable MMCIF */  	gpio_request(GPIO_FN_MMCCLK0,		NULL); @@ -734,8 +730,7 @@ static void __init kzm_init(void)  	gpio_request(GPIO_FN_SDHID0_1,		NULL);  	gpio_request(GPIO_FN_SDHID0_0,		NULL);  	gpio_request(GPIO_FN_SDHI0_VCCQ_MC0_ON,	NULL); -	gpio_request(GPIO_PORT15, NULL); -	gpio_direction_output(GPIO_PORT15, 1); /* power */ +	gpio_request_one(GPIO_PORT15, GPIOF_OUT_INIT_HIGH, NULL); /* power */  	/* enable Micro SD */  	gpio_request(GPIO_FN_SDHID2_0,		NULL); @@ -744,8 +739,7 @@ static void __init kzm_init(void)  	gpio_request(GPIO_FN_SDHID2_3,		NULL);  	gpio_request(GPIO_FN_SDHICMD2,		NULL);  	gpio_request(GPIO_FN_SDHICLK2,		NULL); -	gpio_request(GPIO_PORT14, NULL); -	gpio_direction_output(GPIO_PORT14, 1); /* power */ +	gpio_request_one(GPIO_PORT14, GPIOF_OUT_INIT_HIGH, NULL); /* power */  	/* I2C 3 */  	gpio_request(GPIO_FN_PORT27_I2C_SCL3, NULL); diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c index e2fafca9432..db968a585ff 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c @@ -202,9 +202,7 @@   *   * it needs amixer settings for playing   * - * amixer set "Headphone" on - * amixer set "HPOUTL Mixer DACH" on - * amixer set "HPOUTR Mixer DACH" on + * amixer set "Headphone Enable" on   */  /* Fixed 3.3V and 1.8V regulators to be used by multiple devices */ @@ -1404,11 +1402,10 @@ static void __init mackerel_init(void)  	gpio_request(GPIO_FN_LCDDISP,  NULL);  	gpio_request(GPIO_FN_LCDDCK,   NULL); -	gpio_request(GPIO_PORT31, NULL); /* backlight */ -	gpio_direction_output(GPIO_PORT31, 0); /* off by default */ +	/* backlight, off by default */ +	gpio_request_one(GPIO_PORT31, GPIOF_OUT_INIT_LOW, NULL); -	gpio_request(GPIO_PORT151, NULL); /* LCDDON */ -	gpio_direction_output(GPIO_PORT151, 1); +	gpio_request_one(GPIO_PORT151, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */  	/* USBHS0 */  	gpio_request(GPIO_FN_VBUS0_0, NULL); @@ -1424,8 +1421,7 @@ static void __init mackerel_init(void)  	gpio_request(GPIO_FN_FSIAILR,	NULL);  	gpio_request(GPIO_FN_FSIAISLD,	NULL);  	gpio_request(GPIO_FN_FSIAOSLD,	NULL); -	gpio_request(GPIO_PORT161,	NULL); -	gpio_direction_output(GPIO_PORT161, 0); /* slave */ +	gpio_request_one(GPIO_PORT161, GPIOF_OUT_INIT_LOW, NULL); /* slave */  	gpio_request(GPIO_PORT9,  NULL);  	gpio_request(GPIO_PORT10, NULL); @@ -1479,8 +1475,7 @@ static void __init mackerel_init(void)  	gpio_request(GPIO_FN_SDHID1_0, NULL);  #endif  	/* card detect pin for MMC slot (CN7) */ -	gpio_request(GPIO_PORT41, NULL); -	gpio_direction_input(GPIO_PORT41); +	gpio_request_one(GPIO_PORT41, GPIOF_IN, NULL);  	/* enable SDHI2 */  	gpio_request(GPIO_FN_SDHICMD2, NULL); @@ -1491,8 +1486,7 @@ static void __init mackerel_init(void)  	gpio_request(GPIO_FN_SDHID2_0, NULL);  	/* card detect pin for microSD slot (CN23) */ -	gpio_request(GPIO_PORT162, NULL); -	gpio_direction_input(GPIO_PORT162); +	gpio_request_one(GPIO_PORT162, GPIOF_IN, NULL);  	/* MMCIF */  	gpio_request(GPIO_FN_MMCD0_0, NULL); diff --git a/drivers/video/omap2/displays/panel-generic-dpi.c b/drivers/video/omap2/displays/panel-generic-dpi.c index 54ca8ae2107..c904f42d81c 100644 --- a/drivers/video/omap2/displays/panel-generic-dpi.c +++ b/drivers/video/omap2/displays/panel-generic-dpi.c @@ -291,30 +291,6 @@ static struct panel_config generic_dpi_panels[] = {  		.name			= "h4",  	}, -	/* Unknown panel used in Samsung OMAP2 Apollon */ -	{ -		{ -			.x_res		= 480, -			.y_res		= 272, - -			.pixel_clock	= 6250, - -			.hsw		= 41, -			.hfp		= 2, -			.hbp		= 2, - -			.vsw		= 10, -			.vfp		= 2, -			.vbp		= 2, - -			.vsync_level	= OMAPDSS_SIG_ACTIVE_LOW, -			.hsync_level	= OMAPDSS_SIG_ACTIVE_LOW, -			.data_pclk_edge	= OMAPDSS_DRIVE_SIG_RISING_EDGE, -			.de_level	= OMAPDSS_SIG_ACTIVE_HIGH, -			.sync_pclk_edge	= OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES, -		}, -		.name			= "apollon", -	},  	/* FocalTech ETM070003DH6 */  	{  		{ |