diff options
| -rw-r--r-- | arch/arm/configs/u300_defconfig | 18 | ||||
| -rw-r--r-- | arch/arm/mach-ep93xx/dma-m2p.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-kirkwood/mpp.h | 2 | ||||
| -rw-r--r-- | arch/arm/mach-mx3/Kconfig | 8 | ||||
| -rw-r--r-- | arch/arm/mach-mx3/Makefile | 1 | ||||
| -rw-r--r-- | arch/arm/mach-mx3/armadillo5x0.c | 63 | ||||
| -rw-r--r-- | arch/arm/mach-mx3/devices.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-mx3/pcm037.c | 183 | ||||
| -rw-r--r-- | arch/arm/mach-mx3/pcm037.h | 11 | ||||
| -rw-r--r-- | arch/arm/mach-mx3/pcm037_eet.c | 204 | ||||
| -rw-r--r-- | arch/arm/mach-pxa/include/mach/mfp-pxa300.h | 6 | ||||
| -rw-r--r-- | arch/arm/mach-pxa/pxa3xx.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-realview/core.c | 3 | ||||
| -rw-r--r-- | arch/arm/mach-u300/core.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-versatile/core.c | 3 | ||||
| -rw-r--r-- | arch/arm/plat-mxc/include/mach/iomux-mx3.h | 2 | ||||
| -rw-r--r-- | arch/arm/plat-pxa/gpio.c | 9 | ||||
| -rw-r--r-- | drivers/mmc/host/pxamci.c | 4 | ||||
| -rw-r--r-- | drivers/video/backlight/pwm_bl.c | 2 | ||||
| -rw-r--r-- | drivers/watchdog/ep93xx_wdt.c | 1 |
20 files changed, 479 insertions, 49 deletions
diff --git a/arch/arm/configs/u300_defconfig b/arch/arm/configs/u300_defconfig index 4762d9001298..7d61ae6e75da 100644 --- a/arch/arm/configs/u300_defconfig +++ b/arch/arm/configs/u300_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.31-rc1 | 3 | # Linux kernel version: 2.6.31-rc3 |
| 4 | # Thu Jul 2 00:16:59 2009 | 4 | # Thu Jul 16 23:36:10 2009 |
| 5 | # | 5 | # |
| 6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
| 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
| @@ -9,7 +9,6 @@ CONFIG_GENERIC_GPIO=y | |||
| 9 | CONFIG_GENERIC_TIME=y | 9 | CONFIG_GENERIC_TIME=y |
| 10 | CONFIG_GENERIC_CLOCKEVENTS=y | 10 | CONFIG_GENERIC_CLOCKEVENTS=y |
| 11 | CONFIG_MMU=y | 11 | CONFIG_MMU=y |
| 12 | CONFIG_HAVE_TCM=y | ||
| 13 | CONFIG_GENERIC_HARDIRQS=y | 12 | CONFIG_GENERIC_HARDIRQS=y |
| 14 | CONFIG_STACKTRACE_SUPPORT=y | 13 | CONFIG_STACKTRACE_SUPPORT=y |
| 15 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | 14 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y |
| @@ -113,7 +112,7 @@ CONFIG_MODULE_UNLOAD=y | |||
| 113 | # CONFIG_MODVERSIONS is not set | 112 | # CONFIG_MODVERSIONS is not set |
| 114 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 113 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
| 115 | CONFIG_BLOCK=y | 114 | CONFIG_BLOCK=y |
| 116 | CONFIG_LBDAF=y | 115 | # CONFIG_LBDAF is not set |
| 117 | # CONFIG_BLK_DEV_BSG is not set | 116 | # CONFIG_BLK_DEV_BSG is not set |
| 118 | # CONFIG_BLK_DEV_INTEGRITY is not set | 117 | # CONFIG_BLK_DEV_INTEGRITY is not set |
| 119 | 118 | ||
| @@ -542,13 +541,14 @@ CONFIG_INPUT_EVDEV=y | |||
| 542 | # | 541 | # |
| 543 | CONFIG_INPUT_KEYBOARD=y | 542 | CONFIG_INPUT_KEYBOARD=y |
| 544 | # CONFIG_KEYBOARD_ATKBD is not set | 543 | # CONFIG_KEYBOARD_ATKBD is not set |
| 545 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
| 546 | # CONFIG_KEYBOARD_LKKBD is not set | 544 | # CONFIG_KEYBOARD_LKKBD is not set |
| 547 | # CONFIG_KEYBOARD_XTKBD is not set | 545 | # CONFIG_KEYBOARD_GPIO is not set |
| 546 | # CONFIG_KEYBOARD_MATRIX is not set | ||
| 547 | # CONFIG_KEYBOARD_LM8323 is not set | ||
| 548 | # CONFIG_KEYBOARD_NEWTON is not set | 548 | # CONFIG_KEYBOARD_NEWTON is not set |
| 549 | # CONFIG_KEYBOARD_STOWAWAY is not set | 549 | # CONFIG_KEYBOARD_STOWAWAY is not set |
| 550 | # CONFIG_KEYBOARD_LM8323 is not set | 550 | # CONFIG_KEYBOARD_SUNKBD is not set |
| 551 | # CONFIG_KEYBOARD_GPIO is not set | 551 | # CONFIG_KEYBOARD_XTKBD is not set |
| 552 | # CONFIG_INPUT_MOUSE is not set | 552 | # CONFIG_INPUT_MOUSE is not set |
| 553 | # CONFIG_INPUT_JOYSTICK is not set | 553 | # CONFIG_INPUT_JOYSTICK is not set |
| 554 | # CONFIG_INPUT_TABLET is not set | 554 | # CONFIG_INPUT_TABLET is not set |
| @@ -911,7 +911,6 @@ CONFIG_REGULATOR=y | |||
| 911 | # CONFIG_JFS_FS is not set | 911 | # CONFIG_JFS_FS is not set |
| 912 | # CONFIG_FS_POSIX_ACL is not set | 912 | # CONFIG_FS_POSIX_ACL is not set |
| 913 | # CONFIG_XFS_FS is not set | 913 | # CONFIG_XFS_FS is not set |
| 914 | # CONFIG_GFS2_FS is not set | ||
| 915 | # CONFIG_OCFS2_FS is not set | 914 | # CONFIG_OCFS2_FS is not set |
| 916 | # CONFIG_BTRFS_FS is not set | 915 | # CONFIG_BTRFS_FS is not set |
| 917 | CONFIG_FILE_LOCKING=y | 916 | CONFIG_FILE_LOCKING=y |
| @@ -1122,7 +1121,6 @@ CONFIG_GENERIC_FIND_LAST_BIT=y | |||
| 1122 | # CONFIG_CRC32 is not set | 1121 | # CONFIG_CRC32 is not set |
| 1123 | # CONFIG_CRC7 is not set | 1122 | # CONFIG_CRC7 is not set |
| 1124 | # CONFIG_LIBCRC32C is not set | 1123 | # CONFIG_LIBCRC32C is not set |
| 1125 | CONFIG_GENERIC_ALLOCATOR=y | ||
| 1126 | CONFIG_HAS_IOMEM=y | 1124 | CONFIG_HAS_IOMEM=y |
| 1127 | CONFIG_HAS_IOPORT=y | 1125 | CONFIG_HAS_IOPORT=y |
| 1128 | CONFIG_HAS_DMA=y | 1126 | CONFIG_HAS_DMA=y |
diff --git a/arch/arm/mach-ep93xx/dma-m2p.c b/arch/arm/mach-ep93xx/dma-m2p.c index a2df5bb7dff0..dbcac9c40a28 100644 --- a/arch/arm/mach-ep93xx/dma-m2p.c +++ b/arch/arm/mach-ep93xx/dma-m2p.c | |||
| @@ -33,6 +33,7 @@ | |||
| 33 | #include <linux/err.h> | 33 | #include <linux/err.h> |
| 34 | #include <linux/interrupt.h> | 34 | #include <linux/interrupt.h> |
| 35 | #include <linux/module.h> | 35 | #include <linux/module.h> |
| 36 | #include <linux/io.h> | ||
| 36 | 37 | ||
| 37 | #include <mach/dma.h> | 38 | #include <mach/dma.h> |
| 38 | #include <mach/hardware.h> | 39 | #include <mach/hardware.h> |
diff --git a/arch/arm/mach-kirkwood/mpp.h b/arch/arm/mach-kirkwood/mpp.h index e021a80c2caf..bc74278ed311 100644 --- a/arch/arm/mach-kirkwood/mpp.h +++ b/arch/arm/mach-kirkwood/mpp.h | |||
| @@ -289,7 +289,7 @@ | |||
| 289 | 289 | ||
| 290 | #define MPP48_GPIO MPP( 48, 0x0, 1, 1, 0, 0, 0, 1 ) | 290 | #define MPP48_GPIO MPP( 48, 0x0, 1, 1, 0, 0, 0, 1 ) |
| 291 | #define MPP48_TSMP12 MPP( 48, 0x1, 1, 1, 0, 0, 0, 1 ) | 291 | #define MPP48_TSMP12 MPP( 48, 0x1, 1, 1, 0, 0, 0, 1 ) |
| 292 | #define MPP48_TDM_DTX MPP( 48. 0x2, 0, 1, 0, 0, 0, 1 ) | 292 | #define MPP48_TDM_DTX MPP( 48, 0x2, 0, 1, 0, 0, 0, 1 ) |
| 293 | 293 | ||
| 294 | #define MPP49_GPIO MPP( 49, 0x0, 1, 1, 0, 0, 0, 1 ) | 294 | #define MPP49_GPIO MPP( 49, 0x0, 1, 1, 0, 0, 0, 1 ) |
| 295 | #define MPP49_TSMP9 MPP( 49, 0x1, 1, 1, 0, 0, 0, 1 ) | 295 | #define MPP49_TSMP9 MPP( 49, 0x1, 1, 1, 0, 0, 0, 1 ) |
diff --git a/arch/arm/mach-mx3/Kconfig b/arch/arm/mach-mx3/Kconfig index 17a21a291e2f..851f2458bf65 100644 --- a/arch/arm/mach-mx3/Kconfig +++ b/arch/arm/mach-mx3/Kconfig | |||
| @@ -36,6 +36,14 @@ config MACH_PCM037 | |||
| 36 | Include support for Phytec pcm037 platform. This includes | 36 | Include support for Phytec pcm037 platform. This includes |
| 37 | specific configurations for the board and its peripherals. | 37 | specific configurations for the board and its peripherals. |
| 38 | 38 | ||
| 39 | config MACH_PCM037_EET | ||
| 40 | bool "Support pcm037 EET board extensions" | ||
| 41 | depends on MACH_PCM037 | ||
| 42 | help | ||
| 43 | Add support for PCM037 EET baseboard extensions. If you are using the | ||
| 44 | OLED display with EET, use "video=mx3fb:CMEL-OLED" kernel | ||
| 45 | command-line parameter. | ||
| 46 | |||
| 39 | config MACH_MX31LITE | 47 | config MACH_MX31LITE |
| 40 | bool "Support MX31 LITEKIT (LogicPD)" | 48 | bool "Support MX31 LITEKIT (LogicPD)" |
| 41 | select ARCH_MX31 | 49 | select ARCH_MX31 |
diff --git a/arch/arm/mach-mx3/Makefile b/arch/arm/mach-mx3/Makefile index 0322696bd11a..6b9775471be6 100644 --- a/arch/arm/mach-mx3/Makefile +++ b/arch/arm/mach-mx3/Makefile | |||
| @@ -11,6 +11,7 @@ obj-$(CONFIG_MACH_MX31ADS) += mx31ads.o | |||
| 11 | obj-$(CONFIG_MACH_MX31LILLY) += mx31lilly.o mx31lilly-db.o | 11 | obj-$(CONFIG_MACH_MX31LILLY) += mx31lilly.o mx31lilly-db.o |
| 12 | obj-$(CONFIG_MACH_MX31LITE) += mx31lite.o | 12 | obj-$(CONFIG_MACH_MX31LITE) += mx31lite.o |
| 13 | obj-$(CONFIG_MACH_PCM037) += pcm037.o | 13 | obj-$(CONFIG_MACH_PCM037) += pcm037.o |
| 14 | obj-$(CONFIG_MACH_PCM037_EET) += pcm037_eet.o | ||
| 14 | obj-$(CONFIG_MACH_MX31_3DS) += mx31pdk.o | 15 | obj-$(CONFIG_MACH_MX31_3DS) += mx31pdk.o |
| 15 | obj-$(CONFIG_MACH_MX31MOBOARD) += mx31moboard.o mx31moboard-devboard.o \ | 16 | obj-$(CONFIG_MACH_MX31MOBOARD) += mx31moboard.o mx31moboard-devboard.o \ |
| 16 | mx31moboard-marxbot.o | 17 | mx31moboard-marxbot.o |
diff --git a/arch/arm/mach-mx3/armadillo5x0.c b/arch/arm/mach-mx3/armadillo5x0.c index 541181090b37..ee331fd6b1bd 100644 --- a/arch/arm/mach-mx3/armadillo5x0.c +++ b/arch/arm/mach-mx3/armadillo5x0.c | |||
| @@ -31,6 +31,8 @@ | |||
| 31 | #include <linux/smsc911x.h> | 31 | #include <linux/smsc911x.h> |
| 32 | #include <linux/interrupt.h> | 32 | #include <linux/interrupt.h> |
| 33 | #include <linux/irq.h> | 33 | #include <linux/irq.h> |
| 34 | #include <linux/mtd/physmap.h> | ||
| 35 | #include <linux/io.h> | ||
| 34 | 36 | ||
| 35 | #include <mach/hardware.h> | 37 | #include <mach/hardware.h> |
| 36 | #include <asm/mach-types.h> | 38 | #include <asm/mach-types.h> |
| @@ -46,8 +48,10 @@ | |||
| 46 | #include <mach/mmc.h> | 48 | #include <mach/mmc.h> |
| 47 | #include <mach/ipu.h> | 49 | #include <mach/ipu.h> |
| 48 | #include <mach/mx3fb.h> | 50 | #include <mach/mx3fb.h> |
| 51 | #include <mach/mxc_nand.h> | ||
| 49 | 52 | ||
| 50 | #include "devices.h" | 53 | #include "devices.h" |
| 54 | #include "crm_regs.h" | ||
| 51 | 55 | ||
| 52 | static int armadillo5x0_pins[] = { | 56 | static int armadillo5x0_pins[] = { |
| 53 | /* UART1 */ | 57 | /* UART1 */ |
| @@ -93,7 +97,56 @@ static int armadillo5x0_pins[] = { | |||
| 93 | MX31_PIN_FPSHIFT__FPSHIFT, | 97 | MX31_PIN_FPSHIFT__FPSHIFT, |
| 94 | MX31_PIN_DRDY0__DRDY0, | 98 | MX31_PIN_DRDY0__DRDY0, |
| 95 | IOMUX_MODE(MX31_PIN_LCS1, IOMUX_CONFIG_GPIO), /*ADV7125_PSAVE*/ | 99 | IOMUX_MODE(MX31_PIN_LCS1, IOMUX_CONFIG_GPIO), /*ADV7125_PSAVE*/ |
| 100 | }; | ||
| 96 | 101 | ||
| 102 | /* | ||
| 103 | * NAND Flash | ||
| 104 | */ | ||
| 105 | static struct mxc_nand_platform_data armadillo5x0_nand_flash_pdata = { | ||
| 106 | .width = 1, | ||
| 107 | .hw_ecc = 1, | ||
| 108 | }; | ||
| 109 | |||
| 110 | /* | ||
| 111 | * MTD NOR Flash | ||
| 112 | */ | ||
| 113 | static struct mtd_partition armadillo5x0_nor_flash_partitions[] = { | ||
| 114 | { | ||
| 115 | .name = "nor.bootloader", | ||
| 116 | .offset = 0x00000000, | ||
| 117 | .size = 4*32*1024, | ||
| 118 | }, { | ||
| 119 | .name = "nor.kernel", | ||
| 120 | .offset = MTDPART_OFS_APPEND, | ||
| 121 | .size = 16*128*1024, | ||
| 122 | }, { | ||
| 123 | .name = "nor.userland", | ||
| 124 | .offset = MTDPART_OFS_APPEND, | ||
| 125 | .size = 110*128*1024, | ||
| 126 | }, { | ||
| 127 | .name = "nor.config", | ||
| 128 | .offset = MTDPART_OFS_APPEND, | ||
| 129 | .size = 1*128*1024, | ||
| 130 | }, | ||
| 131 | }; | ||
| 132 | |||
| 133 | static struct physmap_flash_data armadillo5x0_nor_flash_pdata = { | ||
| 134 | .width = 2, | ||
| 135 | .parts = armadillo5x0_nor_flash_partitions, | ||
| 136 | .nr_parts = ARRAY_SIZE(armadillo5x0_nor_flash_partitions), | ||
| 137 | }; | ||
| 138 | |||
| 139 | static struct resource armadillo5x0_nor_flash_resource = { | ||
| 140 | .flags = IORESOURCE_MEM, | ||
| 141 | .start = CS0_BASE_ADDR, | ||
| 142 | .end = CS0_BASE_ADDR + SZ_64M - 1, | ||
| 143 | }; | ||
| 144 | |||
| 145 | static struct platform_device armadillo5x0_nor_flash = { | ||
| 146 | .name = "physmap-flash", | ||
| 147 | .id = -1, | ||
| 148 | .num_resources = 1, | ||
| 149 | .resource = &armadillo5x0_nor_flash_resource, | ||
| 97 | }; | 150 | }; |
| 98 | 151 | ||
| 99 | /* | 152 | /* |
| @@ -272,6 +325,16 @@ static void __init armadillo5x0_init(void) | |||
| 272 | /* Register FB */ | 325 | /* Register FB */ |
| 273 | mxc_register_device(&mx3_ipu, &mx3_ipu_data); | 326 | mxc_register_device(&mx3_ipu, &mx3_ipu_data); |
| 274 | mxc_register_device(&mx3_fb, &mx3fb_pdata); | 327 | mxc_register_device(&mx3_fb, &mx3fb_pdata); |
| 328 | |||
| 329 | /* Register NOR Flash */ | ||
| 330 | mxc_register_device(&armadillo5x0_nor_flash, | ||
| 331 | &armadillo5x0_nor_flash_pdata); | ||
| 332 | |||
| 333 | /* Register NAND Flash */ | ||
| 334 | mxc_register_device(&mxc_nand_device, &armadillo5x0_nand_flash_pdata); | ||
| 335 | |||
| 336 | /* set NAND page size to 2k if not configured via boot mode pins */ | ||
| 337 | __raw_writel(__raw_readl(MXC_CCM_RCSR) | (1 << 30), MXC_CCM_RCSR); | ||
| 275 | } | 338 | } |
| 276 | 339 | ||
| 277 | static void __init armadillo5x0_timer_init(void) | 340 | static void __init armadillo5x0_timer_init(void) |
diff --git a/arch/arm/mach-mx3/devices.c b/arch/arm/mach-mx3/devices.c index d927eddcad46..9e87e08fb121 100644 --- a/arch/arm/mach-mx3/devices.c +++ b/arch/arm/mach-mx3/devices.c | |||
| @@ -22,7 +22,6 @@ | |||
| 22 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
| 23 | #include <linux/serial.h> | 23 | #include <linux/serial.h> |
| 24 | #include <linux/gpio.h> | 24 | #include <linux/gpio.h> |
| 25 | #include <linux/dma-mapping.h> | ||
| 26 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
| 27 | #include <mach/irqs.h> | 26 | #include <mach/irqs.h> |
| 28 | #include <mach/common.h> | 27 | #include <mach/common.h> |
diff --git a/arch/arm/mach-mx3/pcm037.c b/arch/arm/mach-mx3/pcm037.c index c6f61a1f06c8..840cfda341d0 100644 --- a/arch/arm/mach-mx3/pcm037.c +++ b/arch/arm/mach-mx3/pcm037.c | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | 18 | ||
| 19 | #include <linux/types.h> | 19 | #include <linux/types.h> |
| 20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
| 21 | 21 | #include <linux/dma-mapping.h> | |
| 22 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
| 23 | #include <linux/mtd/physmap.h> | 23 | #include <linux/mtd/physmap.h> |
| 24 | #include <linux/mtd/plat-ram.h> | 24 | #include <linux/mtd/plat-ram.h> |
| @@ -33,29 +33,67 @@ | |||
| 33 | #include <linux/irq.h> | 33 | #include <linux/irq.h> |
| 34 | #include <linux/fsl_devices.h> | 34 | #include <linux/fsl_devices.h> |
| 35 | 35 | ||
| 36 | #include <mach/hardware.h> | 36 | #include <media/soc_camera.h> |
| 37 | |||
| 37 | #include <asm/mach-types.h> | 38 | #include <asm/mach-types.h> |
| 38 | #include <asm/mach/arch.h> | 39 | #include <asm/mach/arch.h> |
| 39 | #include <asm/mach/time.h> | 40 | #include <asm/mach/time.h> |
| 40 | #include <asm/mach/map.h> | 41 | #include <asm/mach/map.h> |
| 42 | #include <mach/board-pcm037.h> | ||
| 41 | #include <mach/common.h> | 43 | #include <mach/common.h> |
| 44 | #include <mach/hardware.h> | ||
| 45 | #include <mach/i2c.h> | ||
| 42 | #include <mach/imx-uart.h> | 46 | #include <mach/imx-uart.h> |
| 43 | #include <mach/iomux-mx3.h> | 47 | #include <mach/iomux-mx3.h> |
| 44 | #include <mach/ipu.h> | 48 | #include <mach/ipu.h> |
| 45 | #include <mach/board-pcm037.h> | 49 | #include <mach/mmc.h> |
| 50 | #include <mach/mx3_camera.h> | ||
| 46 | #include <mach/mx3fb.h> | 51 | #include <mach/mx3fb.h> |
| 47 | #include <mach/mxc_nand.h> | 52 | #include <mach/mxc_nand.h> |
| 48 | #include <mach/mmc.h> | ||
| 49 | #ifdef CONFIG_I2C_IMX | ||
| 50 | #include <mach/i2c.h> | ||
| 51 | #endif | ||
| 52 | 53 | ||
| 53 | #include "devices.h" | 54 | #include "devices.h" |
| 55 | #include "pcm037.h" | ||
| 56 | |||
| 57 | static enum pcm037_board_variant pcm037_instance = PCM037_PCM970; | ||
| 58 | |||
| 59 | static int __init pcm037_variant_setup(char *str) | ||
| 60 | { | ||
| 61 | if (!strcmp("eet", str)) | ||
| 62 | pcm037_instance = PCM037_EET; | ||
| 63 | else if (strcmp("pcm970", str)) | ||
| 64 | pr_warning("Unknown pcm037 baseboard variant %s\n", str); | ||
| 65 | |||
| 66 | return 1; | ||
| 67 | } | ||
| 68 | |||
| 69 | /* Supported values: "pcm970" (default) and "eet" */ | ||
| 70 | __setup("pcm037_variant=", pcm037_variant_setup); | ||
| 71 | |||
| 72 | enum pcm037_board_variant pcm037_variant(void) | ||
| 73 | { | ||
| 74 | return pcm037_instance; | ||
| 75 | } | ||
| 76 | |||
| 77 | /* UART1 with RTS/CTS handshake signals */ | ||
| 78 | static unsigned int pcm037_uart1_handshake_pins[] = { | ||
| 79 | MX31_PIN_CTS1__CTS1, | ||
| 80 | MX31_PIN_RTS1__RTS1, | ||
| 81 | MX31_PIN_TXD1__TXD1, | ||
| 82 | MX31_PIN_RXD1__RXD1, | ||
| 83 | }; | ||
| 84 | |||
| 85 | /* UART1 without RTS/CTS handshake signals */ | ||
| 86 | static unsigned int pcm037_uart1_pins[] = { | ||
| 87 | MX31_PIN_TXD1__TXD1, | ||
| 88 | MX31_PIN_RXD1__RXD1, | ||
| 89 | }; | ||
| 54 | 90 | ||
| 55 | static unsigned int pcm037_pins[] = { | 91 | static unsigned int pcm037_pins[] = { |
| 56 | /* I2C */ | 92 | /* I2C */ |
| 57 | MX31_PIN_CSPI2_MOSI__SCL, | 93 | MX31_PIN_CSPI2_MOSI__SCL, |
| 58 | MX31_PIN_CSPI2_MISO__SDA, | 94 | MX31_PIN_CSPI2_MISO__SDA, |
| 95 | MX31_PIN_CSPI2_SS2__I2C3_SDA, | ||
| 96 | MX31_PIN_CSPI2_SCLK__I2C3_SCL, | ||
| 59 | /* SDHC1 */ | 97 | /* SDHC1 */ |
| 60 | MX31_PIN_SD1_DATA3__SD1_DATA3, | 98 | MX31_PIN_SD1_DATA3__SD1_DATA3, |
| 61 | MX31_PIN_SD1_DATA2__SD1_DATA2, | 99 | MX31_PIN_SD1_DATA2__SD1_DATA2, |
| @@ -73,11 +111,6 @@ static unsigned int pcm037_pins[] = { | |||
| 73 | MX31_PIN_CSPI1_SS0__SS0, | 111 | MX31_PIN_CSPI1_SS0__SS0, |
| 74 | MX31_PIN_CSPI1_SS1__SS1, | 112 | MX31_PIN_CSPI1_SS1__SS1, |
| 75 | MX31_PIN_CSPI1_SS2__SS2, | 113 | MX31_PIN_CSPI1_SS2__SS2, |
| 76 | /* UART1 */ | ||
| 77 | MX31_PIN_CTS1__CTS1, | ||
| 78 | MX31_PIN_RTS1__RTS1, | ||
| 79 | MX31_PIN_TXD1__TXD1, | ||
| 80 | MX31_PIN_RXD1__RXD1, | ||
| 81 | /* UART2 */ | 114 | /* UART2 */ |
| 82 | MX31_PIN_TXD2__TXD2, | 115 | MX31_PIN_TXD2__TXD2, |
| 83 | MX31_PIN_RXD2__RXD2, | 116 | MX31_PIN_RXD2__RXD2, |
| @@ -120,6 +153,22 @@ static unsigned int pcm037_pins[] = { | |||
| 120 | MX31_PIN_D3_SPL__D3_SPL, | 153 | MX31_PIN_D3_SPL__D3_SPL, |
| 121 | MX31_PIN_D3_CLS__D3_CLS, | 154 | MX31_PIN_D3_CLS__D3_CLS, |
| 122 | MX31_PIN_LCS0__GPI03_23, | 155 | MX31_PIN_LCS0__GPI03_23, |
| 156 | /* CSI */ | ||
| 157 | IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_GPIO), | ||
| 158 | MX31_PIN_CSI_D6__CSI_D6, | ||
| 159 | MX31_PIN_CSI_D7__CSI_D7, | ||
| 160 | MX31_PIN_CSI_D8__CSI_D8, | ||
| 161 | MX31_PIN_CSI_D9__CSI_D9, | ||
| 162 | MX31_PIN_CSI_D10__CSI_D10, | ||
| 163 | MX31_PIN_CSI_D11__CSI_D11, | ||
| 164 | MX31_PIN_CSI_D12__CSI_D12, | ||
| 165 | MX31_PIN_CSI_D13__CSI_D13, | ||
| 166 | MX31_PIN_CSI_D14__CSI_D14, | ||
| 167 | MX31_PIN_CSI_D15__CSI_D15, | ||
| 168 | MX31_PIN_CSI_HSYNC__CSI_HSYNC, | ||
| 169 | MX31_PIN_CSI_MCLK__CSI_MCLK, | ||
| 170 | MX31_PIN_CSI_PIXCLK__CSI_PIXCLK, | ||
| 171 | MX31_PIN_CSI_VSYNC__CSI_VSYNC, | ||
| 123 | }; | 172 | }; |
| 124 | 173 | ||
| 125 | static struct physmap_flash_data pcm037_flash_data = { | 174 | static struct physmap_flash_data pcm037_flash_data = { |
| @@ -250,19 +299,43 @@ static struct mxc_nand_platform_data pcm037_nand_board_info = { | |||
| 250 | .hw_ecc = 1, | 299 | .hw_ecc = 1, |
| 251 | }; | 300 | }; |
| 252 | 301 | ||
| 253 | #ifdef CONFIG_I2C_IMX | ||
| 254 | static struct imxi2c_platform_data pcm037_i2c_1_data = { | 302 | static struct imxi2c_platform_data pcm037_i2c_1_data = { |
| 255 | .bitrate = 100000, | 303 | .bitrate = 100000, |
| 256 | }; | 304 | }; |
| 257 | 305 | ||
| 306 | static struct imxi2c_platform_data pcm037_i2c_2_data = { | ||
| 307 | .bitrate = 20000, | ||
| 308 | }; | ||
| 309 | |||
| 258 | static struct at24_platform_data board_eeprom = { | 310 | static struct at24_platform_data board_eeprom = { |
| 259 | .byte_len = 4096, | 311 | .byte_len = 4096, |
| 260 | .page_size = 32, | 312 | .page_size = 32, |
| 261 | .flags = AT24_FLAG_ADDR16, | 313 | .flags = AT24_FLAG_ADDR16, |
| 262 | }; | 314 | }; |
| 263 | 315 | ||
| 316 | static int pcm037_camera_power(struct device *dev, int on) | ||
| 317 | { | ||
| 318 | /* disable or enable the camera in X7 or X8 PCM970 connector */ | ||
| 319 | gpio_set_value(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), !on); | ||
| 320 | return 0; | ||
| 321 | } | ||
| 322 | |||
| 323 | static struct i2c_board_info pcm037_i2c_2_devices[] = { | ||
| 324 | { | ||
| 325 | I2C_BOARD_INFO("mt9t031", 0x5d), | ||
| 326 | }, | ||
| 327 | }; | ||
| 328 | |||
| 329 | static struct soc_camera_link iclink = { | ||
| 330 | .bus_id = 0, /* Must match with the camera ID */ | ||
| 331 | .power = pcm037_camera_power, | ||
| 332 | .board_info = &pcm037_i2c_2_devices[0], | ||
| 333 | .i2c_adapter_id = 2, | ||
| 334 | .module_name = "mt9t031", | ||
| 335 | }; | ||
| 336 | |||
| 264 | static struct i2c_board_info pcm037_i2c_devices[] = { | 337 | static struct i2c_board_info pcm037_i2c_devices[] = { |
| 265 | { | 338 | { |
| 266 | I2C_BOARD_INFO("at24", 0x52), /* E0=0, E1=1, E2=0 */ | 339 | I2C_BOARD_INFO("at24", 0x52), /* E0=0, E1=1, E2=0 */ |
| 267 | .platform_data = &board_eeprom, | 340 | .platform_data = &board_eeprom, |
| 268 | }, { | 341 | }, { |
| @@ -270,7 +343,14 @@ static struct i2c_board_info pcm037_i2c_devices[] = { | |||
| 270 | .type = "pcf8563", | 343 | .type = "pcf8563", |
| 271 | } | 344 | } |
| 272 | }; | 345 | }; |
| 273 | #endif | 346 | |
| 347 | static struct platform_device pcm037_camera = { | ||
| 348 | .name = "soc-camera-pdrv", | ||
| 349 | .id = 0, | ||
| 350 | .dev = { | ||
| 351 | .platform_data = &iclink, | ||
| 352 | }, | ||
| 353 | }; | ||
| 274 | 354 | ||
| 275 | /* Not connected by default */ | 355 | /* Not connected by default */ |
| 276 | #ifdef PCM970_SDHC_RW_SWITCH | 356 | #ifdef PCM970_SDHC_RW_SWITCH |
| @@ -334,9 +414,41 @@ static struct imxmmc_platform_data sdhc_pdata = { | |||
| 334 | .exit = pcm970_sdhc1_exit, | 414 | .exit = pcm970_sdhc1_exit, |
| 335 | }; | 415 | }; |
| 336 | 416 | ||
| 417 | struct mx3_camera_pdata camera_pdata = { | ||
| 418 | .dma_dev = &mx3_ipu.dev, | ||
| 419 | .flags = MX3_CAMERA_DATAWIDTH_8 | MX3_CAMERA_DATAWIDTH_10, | ||
| 420 | .mclk_10khz = 2000, | ||
| 421 | }; | ||
| 422 | |||
| 423 | static int __init pcm037_camera_alloc_dma(const size_t buf_size) | ||
| 424 | { | ||
| 425 | dma_addr_t dma_handle; | ||
| 426 | void *buf; | ||
| 427 | int dma; | ||
| 428 | |||
| 429 | if (buf_size < 2 * 1024 * 1024) | ||
| 430 | return -EINVAL; | ||
| 431 | |||
| 432 | buf = dma_alloc_coherent(NULL, buf_size, &dma_handle, GFP_KERNEL); | ||
| 433 | if (!buf) { | ||
| 434 | pr_err("%s: cannot allocate camera buffer-memory\n", __func__); | ||
| 435 | return -ENOMEM; | ||
| 436 | } | ||
| 437 | |||
| 438 | memset(buf, 0, buf_size); | ||
| 439 | |||
| 440 | dma = dma_declare_coherent_memory(&mx3_camera.dev, | ||
| 441 | dma_handle, dma_handle, buf_size, | ||
| 442 | DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE); | ||
| 443 | |||
| 444 | /* The way we call dma_declare_coherent_memory only a malloc can fail */ | ||
| 445 | return dma & DMA_MEMORY_MAP ? 0 : -ENOMEM; | ||
| 446 | } | ||
| 447 | |||
| 337 | static struct platform_device *devices[] __initdata = { | 448 | static struct platform_device *devices[] __initdata = { |
| 338 | &pcm037_flash, | 449 | &pcm037_flash, |
| 339 | &pcm037_sram_device, | 450 | &pcm037_sram_device, |
| 451 | &pcm037_camera, | ||
| 340 | }; | 452 | }; |
| 341 | 453 | ||
| 342 | static struct ipu_platform_data mx3_ipu_data = { | 454 | static struct ipu_platform_data mx3_ipu_data = { |
| @@ -377,6 +489,22 @@ static const struct fb_videomode fb_modedb[] = { | |||
| 377 | .sync = FB_SYNC_VERT_HIGH_ACT | FB_SYNC_OE_ACT_HIGH, | 489 | .sync = FB_SYNC_VERT_HIGH_ACT | FB_SYNC_OE_ACT_HIGH, |
| 378 | .vmode = FB_VMODE_NONINTERLACED, | 490 | .vmode = FB_VMODE_NONINTERLACED, |
| 379 | .flag = 0, | 491 | .flag = 0, |
| 492 | }, { | ||
| 493 | /* 240x320 @ 60 Hz */ | ||
| 494 | .name = "CMEL-OLED", | ||
| 495 | .refresh = 60, | ||
| 496 | .xres = 240, | ||
| 497 | .yres = 320, | ||
| 498 | .pixclock = 185925, | ||
| 499 | .left_margin = 9, | ||
| 500 | .right_margin = 16, | ||
| 501 | .upper_margin = 7, | ||
| 502 | .lower_margin = 9, | ||
| 503 | .hsync_len = 1, | ||
| 504 | .vsync_len = 1, | ||
| 505 | .sync = FB_SYNC_OE_ACT_HIGH | FB_SYNC_CLK_INVERT, | ||
| 506 | .vmode = FB_VMODE_NONINTERLACED, | ||
| 507 | .flag = 0, | ||
| 380 | }, | 508 | }, |
| 381 | }; | 509 | }; |
| 382 | 510 | ||
| @@ -397,6 +525,14 @@ static void __init mxc_board_init(void) | |||
| 397 | mxc_iomux_setup_multiple_pins(pcm037_pins, ARRAY_SIZE(pcm037_pins), | 525 | mxc_iomux_setup_multiple_pins(pcm037_pins, ARRAY_SIZE(pcm037_pins), |
| 398 | "pcm037"); | 526 | "pcm037"); |
| 399 | 527 | ||
| 528 | if (pcm037_variant() == PCM037_EET) | ||
| 529 | mxc_iomux_setup_multiple_pins(pcm037_uart1_pins, | ||
| 530 | ARRAY_SIZE(pcm037_uart1_pins), "pcm037_uart1"); | ||
| 531 | else | ||
| 532 | mxc_iomux_setup_multiple_pins(pcm037_uart1_handshake_pins, | ||
| 533 | ARRAY_SIZE(pcm037_uart1_handshake_pins), | ||
| 534 | "pcm037_uart1"); | ||
| 535 | |||
| 400 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 536 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
| 401 | 537 | ||
| 402 | mxc_register_device(&mxc_uart_device0, &uart_pdata); | 538 | mxc_register_device(&mxc_uart_device0, &uart_pdata); |
| @@ -415,18 +551,30 @@ static void __init mxc_board_init(void) | |||
| 415 | } | 551 | } |
| 416 | 552 | ||
| 417 | 553 | ||
| 418 | #ifdef CONFIG_I2C_IMX | 554 | /* I2C adapters and devices */ |
| 419 | i2c_register_board_info(1, pcm037_i2c_devices, | 555 | i2c_register_board_info(1, pcm037_i2c_devices, |
| 420 | ARRAY_SIZE(pcm037_i2c_devices)); | 556 | ARRAY_SIZE(pcm037_i2c_devices)); |
| 421 | 557 | ||
| 422 | mxc_register_device(&mxc_i2c_device1, &pcm037_i2c_1_data); | 558 | mxc_register_device(&mxc_i2c_device1, &pcm037_i2c_1_data); |
| 423 | #endif | 559 | mxc_register_device(&mxc_i2c_device2, &pcm037_i2c_2_data); |
| 560 | |||
| 424 | mxc_register_device(&mxc_nand_device, &pcm037_nand_board_info); | 561 | mxc_register_device(&mxc_nand_device, &pcm037_nand_board_info); |
| 425 | mxc_register_device(&mxcsdhc_device0, &sdhc_pdata); | 562 | mxc_register_device(&mxcsdhc_device0, &sdhc_pdata); |
| 426 | mxc_register_device(&mx3_ipu, &mx3_ipu_data); | 563 | mxc_register_device(&mx3_ipu, &mx3_ipu_data); |
| 427 | mxc_register_device(&mx3_fb, &mx3fb_pdata); | 564 | mxc_register_device(&mx3_fb, &mx3fb_pdata); |
| 428 | if (!gpio_usbotg_hs_activate()) | 565 | if (!gpio_usbotg_hs_activate()) |
| 429 | mxc_register_device(&mxc_otg_udc_device, &usb_pdata); | 566 | mxc_register_device(&mxc_otg_udc_device, &usb_pdata); |
| 567 | |||
| 568 | /* CSI */ | ||
| 569 | /* Camera power: default - off */ | ||
| 570 | ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), "mt9t031-power"); | ||
| 571 | if (!ret) | ||
| 572 | gpio_direction_output(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), 1); | ||
| 573 | else | ||
| 574 | iclink.power = NULL; | ||
| 575 | |||
| 576 | if (!pcm037_camera_alloc_dma(4 * 1024 * 1024)) | ||
| 577 | mxc_register_device(&mx3_camera, &camera_pdata); | ||
| 430 | } | 578 | } |
| 431 | 579 | ||
| 432 | static void __init pcm037_timer_init(void) | 580 | static void __init pcm037_timer_init(void) |
| @@ -448,4 +596,3 @@ MACHINE_START(PCM037, "Phytec Phycore pcm037") | |||
| 448 | .init_machine = mxc_board_init, | 596 | .init_machine = mxc_board_init, |
| 449 | .timer = &pcm037_timer, | 597 | .timer = &pcm037_timer, |
| 450 | MACHINE_END | 598 | MACHINE_END |
| 451 | |||
diff --git a/arch/arm/mach-mx3/pcm037.h b/arch/arm/mach-mx3/pcm037.h new file mode 100644 index 000000000000..d6929721a5fd --- /dev/null +++ b/arch/arm/mach-mx3/pcm037.h | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | #ifndef __PCM037_H__ | ||
| 2 | #define __PCM037_H__ | ||
| 3 | |||
| 4 | enum pcm037_board_variant { | ||
| 5 | PCM037_PCM970, | ||
| 6 | PCM037_EET, | ||
| 7 | }; | ||
| 8 | |||
| 9 | extern enum pcm037_board_variant pcm037_variant(void); | ||
| 10 | |||
| 11 | #endif | ||
diff --git a/arch/arm/mach-mx3/pcm037_eet.c b/arch/arm/mach-mx3/pcm037_eet.c new file mode 100644 index 000000000000..fe52fb1bb8b7 --- /dev/null +++ b/arch/arm/mach-mx3/pcm037_eet.c | |||
| @@ -0,0 +1,204 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2009 | ||
| 3 | * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> | ||
| 4 | * | ||
| 5 | * This program is free software; you can redistribute it and/or modify | ||
| 6 | * it under the terms of the GNU General Public License version 2 as | ||
| 7 | * published by the Free Software Foundation. | ||
| 8 | */ | ||
| 9 | #include <linux/gpio.h> | ||
| 10 | #include <linux/gpio_keys.h> | ||
| 11 | #include <linux/input.h> | ||
| 12 | #include <linux/platform_device.h> | ||
| 13 | #include <linux/spi/spi.h> | ||
| 14 | |||
| 15 | #include <mach/common.h> | ||
| 16 | #if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE) | ||
| 17 | #include <mach/spi.h> | ||
| 18 | #endif | ||
| 19 | #include <mach/iomux-mx3.h> | ||
| 20 | |||
| 21 | #include <asm/mach-types.h> | ||
| 22 | |||
| 23 | #include "pcm037.h" | ||
| 24 | #include "devices.h" | ||
| 25 | |||
| 26 | static unsigned int pcm037_eet_pins[] = { | ||
| 27 | /* SPI #1 */ | ||
| 28 | MX31_PIN_CSPI1_MISO__MISO, | ||
| 29 | MX31_PIN_CSPI1_MOSI__MOSI, | ||
| 30 | MX31_PIN_CSPI1_SCLK__SCLK, | ||
| 31 | MX31_PIN_CSPI1_SPI_RDY__SPI_RDY, | ||
| 32 | MX31_PIN_CSPI1_SS0__SS0, | ||
| 33 | MX31_PIN_CSPI1_SS1__SS1, | ||
| 34 | MX31_PIN_CSPI1_SS2__SS2, | ||
| 35 | |||
| 36 | /* Reserve and hardwire GPIO 57 high - S6E63D6 chipselect */ | ||
| 37 | IOMUX_MODE(MX31_PIN_KEY_COL7, IOMUX_CONFIG_GPIO), | ||
| 38 | /* GPIO keys */ | ||
| 39 | IOMUX_MODE(MX31_PIN_GPIO1_0, IOMUX_CONFIG_GPIO), /* 0 */ | ||
| 40 | IOMUX_MODE(MX31_PIN_GPIO1_1, IOMUX_CONFIG_GPIO), /* 1 */ | ||
| 41 | IOMUX_MODE(MX31_PIN_GPIO1_2, IOMUX_CONFIG_GPIO), /* 2 */ | ||
| 42 | IOMUX_MODE(MX31_PIN_GPIO1_3, IOMUX_CONFIG_GPIO), /* 3 */ | ||
| 43 | IOMUX_MODE(MX31_PIN_SVEN0, IOMUX_CONFIG_GPIO), /* 32 */ | ||
| 44 | IOMUX_MODE(MX31_PIN_STX0, IOMUX_CONFIG_GPIO), /* 33 */ | ||
| 45 | IOMUX_MODE(MX31_PIN_SRX0, IOMUX_CONFIG_GPIO), /* 34 */ | ||
| 46 | IOMUX_MODE(MX31_PIN_SIMPD0, IOMUX_CONFIG_GPIO), /* 35 */ | ||
| 47 | IOMUX_MODE(MX31_PIN_RTS1, IOMUX_CONFIG_GPIO), /* 38 */ | ||
| 48 | IOMUX_MODE(MX31_PIN_CTS1, IOMUX_CONFIG_GPIO), /* 39 */ | ||
| 49 | IOMUX_MODE(MX31_PIN_KEY_ROW4, IOMUX_CONFIG_GPIO), /* 50 */ | ||
| 50 | IOMUX_MODE(MX31_PIN_KEY_ROW5, IOMUX_CONFIG_GPIO), /* 51 */ | ||
| 51 | IOMUX_MODE(MX31_PIN_KEY_ROW6, IOMUX_CONFIG_GPIO), /* 52 */ | ||
| 52 | IOMUX_MODE(MX31_PIN_KEY_ROW7, IOMUX_CONFIG_GPIO), /* 53 */ | ||
| 53 | |||
| 54 | /* LEDs */ | ||
| 55 | IOMUX_MODE(MX31_PIN_DTR_DTE1, IOMUX_CONFIG_GPIO), /* 44 */ | ||
| 56 | IOMUX_MODE(MX31_PIN_DSR_DTE1, IOMUX_CONFIG_GPIO), /* 45 */ | ||
| 57 | IOMUX_MODE(MX31_PIN_KEY_COL5, IOMUX_CONFIG_GPIO), /* 55 */ | ||
| 58 | IOMUX_MODE(MX31_PIN_KEY_COL6, IOMUX_CONFIG_GPIO), /* 56 */ | ||
| 59 | }; | ||
| 60 | |||
| 61 | /* SPI */ | ||
| 62 | static struct spi_board_info pcm037_spi_dev[] = { | ||
| 63 | { | ||
| 64 | .modalias = "dac124s085", | ||
| 65 | .max_speed_hz = 400000, | ||
| 66 | .bus_num = 0, | ||
| 67 | .chip_select = 0, /* Index in pcm037_spi1_cs[] */ | ||
| 68 | .mode = SPI_CPHA, | ||
| 69 | }, | ||
| 70 | }; | ||
| 71 | |||
| 72 | /* Platform Data for MXC CSPI */ | ||
| 73 | #if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE) | ||
| 74 | static int pcm037_spi1_cs[] = {MXC_SPI_CS(1), IOMUX_TO_GPIO(MX31_PIN_KEY_COL7)}; | ||
| 75 | |||
| 76 | struct spi_imx_master pcm037_spi1_master = { | ||
| 77 | .chipselect = pcm037_spi1_cs, | ||
| 78 | .num_chipselect = ARRAY_SIZE(pcm037_spi1_cs), | ||
| 79 | }; | ||
| 80 | #endif | ||
| 81 | |||
| 82 | /* GPIO-keys input device */ | ||
| 83 | static struct gpio_keys_button pcm037_gpio_keys[] = { | ||
| 84 | { | ||
| 85 | .type = EV_KEY, | ||
| 86 | .code = KEY_L, | ||
| 87 | .gpio = 0, | ||
| 88 | .desc = "Wheel Manual", | ||
| 89 | .wakeup = 0, | ||
| 90 | }, { | ||
| 91 | .type = EV_KEY, | ||
| 92 | .code = KEY_A, | ||
| 93 | .gpio = 1, | ||
| 94 | .desc = "Wheel AF", | ||
| 95 | .wakeup = 0, | ||
| 96 | }, { | ||
| 97 | .type = EV_KEY, | ||
| 98 | .code = KEY_V, | ||
| 99 | .gpio = 2, | ||
| 100 | .desc = "Wheel View", | ||
| 101 | .wakeup = 0, | ||
| 102 | }, { | ||
| 103 | .type = EV_KEY, | ||
| 104 | .code = KEY_M, | ||
| 105 | .gpio = 3, | ||
| 106 | .desc = "Wheel Menu", | ||
| 107 | .wakeup = 0, | ||
| 108 | }, { | ||
| 109 | .type = EV_KEY, | ||
| 110 | .code = KEY_UP, | ||
| 111 | .gpio = 32, | ||
| 112 | .desc = "Nav Pad Up", | ||
| 113 | .wakeup = 0, | ||
| 114 | }, { | ||
| 115 | .type = EV_KEY, | ||
| 116 | .code = KEY_RIGHT, | ||
| 117 | .gpio = 33, | ||
| 118 | .desc = "Nav Pad Right", | ||
| 119 | .wakeup = 0, | ||
| 120 | }, { | ||
| 121 | .type = EV_KEY, | ||
| 122 | .code = KEY_DOWN, | ||
| 123 | .gpio = 34, | ||
| 124 | .desc = "Nav Pad Down", | ||
| 125 | .wakeup = 0, | ||
| 126 | }, { | ||
| 127 | .type = EV_KEY, | ||
| 128 | .code = KEY_LEFT, | ||
| 129 | .gpio = 35, | ||
| 130 | .desc = "Nav Pad Left", | ||
| 131 | .wakeup = 0, | ||
| 132 | }, { | ||
| 133 | .type = EV_KEY, | ||
| 134 | .code = KEY_ENTER, | ||
| 135 | .gpio = 38, | ||
| 136 | .desc = "Nav Pad Ok", | ||
| 137 | .wakeup = 0, | ||
| 138 | }, { | ||
| 139 | .type = EV_KEY, | ||
| 140 | .code = KEY_O, | ||
| 141 | .gpio = 39, | ||
| 142 | .desc = "Wheel Off", | ||
| 143 | .wakeup = 0, | ||
| 144 | }, { | ||
| 145 | .type = EV_KEY, | ||
| 146 | .code = BTN_FORWARD, | ||
| 147 | .gpio = 50, | ||
| 148 | .desc = "Focus Forward", | ||
| 149 | .wakeup = 0, | ||
| 150 | }, { | ||
| 151 | .type = EV_KEY, | ||
| 152 | .code = BTN_BACK, | ||
| 153 | .gpio = 51, | ||
| 154 | .desc = "Focus Backward", | ||
| 155 | .wakeup = 0, | ||
| 156 | }, { | ||
| 157 | .type = EV_KEY, | ||
| 158 | .code = BTN_MIDDLE, | ||
| 159 | .gpio = 52, | ||
| 160 | .desc = "Release Half", | ||
| 161 | .wakeup = 0, | ||
| 162 | }, { | ||
| 163 | .type = EV_KEY, | ||
| 164 | .code = BTN_EXTRA, | ||
| 165 | .gpio = 53, | ||
| 166 | .desc = "Release Full", | ||
| 167 | .wakeup = 0, | ||
| 168 | }, | ||
| 169 | }; | ||
| 170 | |||
| 171 | static struct gpio_keys_platform_data pcm037_gpio_keys_platform_data = { | ||
| 172 | .buttons = pcm037_gpio_keys, | ||
| 173 | .nbuttons = ARRAY_SIZE(pcm037_gpio_keys), | ||
| 174 | .rep = 0, /* No auto-repeat */ | ||
| 175 | }; | ||
| 176 | |||
| 177 | static struct platform_device pcm037_gpio_keys_device = { | ||
| 178 | .name = "gpio-keys", | ||
| 179 | .id = -1, | ||
| 180 | .dev = { | ||
| 181 | .platform_data = &pcm037_gpio_keys_platform_data, | ||
| 182 | }, | ||
| 183 | }; | ||
| 184 | |||
| 185 | static int eet_init_devices(void) | ||
| 186 | { | ||
| 187 | if (!machine_is_pcm037() || pcm037_variant() != PCM037_EET) | ||
| 188 | return 0; | ||
| 189 | |||
| 190 | mxc_iomux_setup_multiple_pins(pcm037_eet_pins, | ||
| 191 | ARRAY_SIZE(pcm037_eet_pins), "pcm037_eet"); | ||
| 192 | |||
| 193 | /* SPI */ | ||
| 194 | spi_register_board_info(pcm037_spi_dev, ARRAY_SIZE(pcm037_spi_dev)); | ||
| 195 | #if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE) | ||
| 196 | mxc_register_device(&mxc_spi_device0, &pcm037_spi1_master); | ||
| 197 | #endif | ||
| 198 | |||
| 199 | platform_device_register(&pcm037_gpio_keys_device); | ||
| 200 | |||
| 201 | return 0; | ||
| 202 | } | ||
| 203 | |||
| 204 | late_initcall(eet_init_devices); | ||
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa300.h b/arch/arm/mach-pxa/include/mach/mfp-pxa300.h index ae8441192ef0..7139e0dc26d1 100644 --- a/arch/arm/mach-pxa/include/mach/mfp-pxa300.h +++ b/arch/arm/mach-pxa/include/mach/mfp-pxa300.h | |||
| @@ -567,9 +567,9 @@ | |||
| 567 | #define GPIO37_ULPI_DATA_OUT_7 MFP_CFG(GPIO37, AF3) | 567 | #define GPIO37_ULPI_DATA_OUT_7 MFP_CFG(GPIO37, AF3) |
| 568 | #define GPIO33_ULPI_OTG_INTR MFP_CFG(GPIO33, AF1) | 568 | #define GPIO33_ULPI_OTG_INTR MFP_CFG(GPIO33, AF1) |
| 569 | 569 | ||
| 570 | #define ULPI_DIR MFP_CFG_DRV(ULPI_DIR, MFP_AF0, MFP_DS01X) | 570 | #define ULPI_DIR MFP_CFG_DRV(ULPI_DIR, AF0, DS01X) |
| 571 | #define ULPI_NXT MFP_CFG_DRV(ULPI_NXT, MFP_AF0, MFP_DS01X) | 571 | #define ULPI_NXT MFP_CFG_DRV(ULPI_NXT, AF0, DS01X) |
| 572 | #define ULPI_STP MFP_CFG_DRV(ULPI_STP, MFP_AF0, MFP_DS01X) | 572 | #define ULPI_STP MFP_CFG_DRV(ULPI_STP, AF0, DS01X) |
| 573 | #endif /* CONFIG_CPU_PXA310 */ | 573 | #endif /* CONFIG_CPU_PXA310 */ |
| 574 | 574 | ||
| 575 | #endif /* __ASM_ARCH_MFP_PXA300_H */ | 575 | #endif /* __ASM_ARCH_MFP_PXA300_H */ |
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c index 6f678d93bf4e..09b7b1a10cad 100644 --- a/arch/arm/mach-pxa/pxa3xx.c +++ b/arch/arm/mach-pxa/pxa3xx.c | |||
| @@ -250,7 +250,7 @@ static DEFINE_PXA3_CKEN(pxa3xx_mmc2, MMC2, 19500000, 0); | |||
| 250 | static struct clk_lookup pxa3xx_clkregs[] = { | 250 | static struct clk_lookup pxa3xx_clkregs[] = { |
| 251 | INIT_CLKREG(&clk_pxa3xx_pout, NULL, "CLK_POUT"), | 251 | INIT_CLKREG(&clk_pxa3xx_pout, NULL, "CLK_POUT"), |
| 252 | /* Power I2C clock is always on */ | 252 | /* Power I2C clock is always on */ |
| 253 | INIT_CLKREG(&clk_dummy, "pxa2xx-i2c.1", NULL), | 253 | INIT_CLKREG(&clk_dummy, "pxa3xx-pwri2c.1", NULL), |
| 254 | INIT_CLKREG(&clk_pxa3xx_lcd, "pxa2xx-fb", NULL), | 254 | INIT_CLKREG(&clk_pxa3xx_lcd, "pxa2xx-fb", NULL), |
| 255 | INIT_CLKREG(&clk_pxa3xx_camera, NULL, "CAMCLK"), | 255 | INIT_CLKREG(&clk_pxa3xx_camera, NULL, "CAMCLK"), |
| 256 | INIT_CLKREG(&clk_pxa3xx_ac97, NULL, "AC97CLK"), | 256 | INIT_CLKREG(&clk_pxa3xx_ac97, NULL, "AC97CLK"), |
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c index 9ea9c05093cd..facbd49eec67 100644 --- a/arch/arm/mach-realview/core.c +++ b/arch/arm/mach-realview/core.c | |||
| @@ -208,8 +208,7 @@ struct platform_device realview_i2c_device = { | |||
| 208 | 208 | ||
| 209 | static struct i2c_board_info realview_i2c_board_info[] = { | 209 | static struct i2c_board_info realview_i2c_board_info[] = { |
| 210 | { | 210 | { |
| 211 | I2C_BOARD_INFO("rtc-ds1307", 0xd0 >> 1), | 211 | I2C_BOARD_INFO("ds1338", 0xd0 >> 1), |
| 212 | .type = "ds1338", | ||
| 213 | }, | 212 | }, |
| 214 | }; | 213 | }; |
| 215 | 214 | ||
diff --git a/arch/arm/mach-u300/core.c b/arch/arm/mach-u300/core.c index 89b3ccf35e1b..7936085dd758 100644 --- a/arch/arm/mach-u300/core.c +++ b/arch/arm/mach-u300/core.c | |||
| @@ -455,8 +455,8 @@ void __init u300_init_irq(void) | |||
| 455 | for (i = 0; i < NR_IRQS; i++) | 455 | for (i = 0; i < NR_IRQS; i++) |
| 456 | set_bit(i, (unsigned long *) &mask[0]); | 456 | set_bit(i, (unsigned long *) &mask[0]); |
| 457 | u300_enable_intcon_clock(); | 457 | u300_enable_intcon_clock(); |
| 458 | vic_init((void __iomem *) U300_INTCON0_VBASE, 0, mask[0], 0); | 458 | vic_init((void __iomem *) U300_INTCON0_VBASE, 0, mask[0], mask[0]); |
| 459 | vic_init((void __iomem *) U300_INTCON1_VBASE, 32, mask[1], 0); | 459 | vic_init((void __iomem *) U300_INTCON1_VBASE, 32, mask[1], mask[1]); |
| 460 | } | 460 | } |
| 461 | 461 | ||
| 462 | 462 | ||
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index 69214fc8bd19..31093af7d052 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c | |||
| @@ -342,8 +342,7 @@ static struct platform_device versatile_i2c_device = { | |||
| 342 | 342 | ||
| 343 | static struct i2c_board_info versatile_i2c_board_info[] = { | 343 | static struct i2c_board_info versatile_i2c_board_info[] = { |
| 344 | { | 344 | { |
| 345 | I2C_BOARD_INFO("rtc-ds1307", 0xd0 >> 1), | 345 | I2C_BOARD_INFO("ds1338", 0xd0 >> 1), |
| 346 | .type = "ds1338", | ||
| 347 | }, | 346 | }, |
| 348 | }; | 347 | }; |
| 349 | 348 | ||
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx3.h b/arch/arm/plat-mxc/include/mach/iomux-mx3.h index 27f8d1b2bc6b..2eb182f73876 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx3.h +++ b/arch/arm/plat-mxc/include/mach/iomux-mx3.h | |||
| @@ -602,6 +602,8 @@ enum iomux_pins { | |||
| 602 | #define MX31_PIN_I2C_DAT__SDA IOMUX_MODE(MX31_PIN_I2C_DAT, IOMUX_CONFIG_FUNC) | 602 | #define MX31_PIN_I2C_DAT__SDA IOMUX_MODE(MX31_PIN_I2C_DAT, IOMUX_CONFIG_FUNC) |
| 603 | #define MX31_PIN_DCD_DTE1__I2C2_SDA IOMUX_MODE(MX31_PIN_DCD_DTE1, IOMUX_CONFIG_ALT2) | 603 | #define MX31_PIN_DCD_DTE1__I2C2_SDA IOMUX_MODE(MX31_PIN_DCD_DTE1, IOMUX_CONFIG_ALT2) |
| 604 | #define MX31_PIN_RI_DTE1__I2C2_SCL IOMUX_MODE(MX31_PIN_RI_DTE1, IOMUX_CONFIG_ALT2) | 604 | #define MX31_PIN_RI_DTE1__I2C2_SCL IOMUX_MODE(MX31_PIN_RI_DTE1, IOMUX_CONFIG_ALT2) |
| 605 | #define MX31_PIN_CSPI2_SS2__I2C3_SDA IOMUX_MODE(MX31_PIN_CSPI2_SS2, IOMUX_CONFIG_ALT1) | ||
| 606 | #define MX31_PIN_CSPI2_SCLK__I2C3_SCL IOMUX_MODE(MX31_PIN_CSPI2_SCLK, IOMUX_CONFIG_ALT1) | ||
| 605 | #define MX31_PIN_CSI_D4__CSI_D4 IOMUX_MODE(MX31_PIN_CSI_D4, IOMUX_CONFIG_FUNC) | 607 | #define MX31_PIN_CSI_D4__CSI_D4 IOMUX_MODE(MX31_PIN_CSI_D4, IOMUX_CONFIG_FUNC) |
| 606 | #define MX31_PIN_CSI_D5__CSI_D5 IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_FUNC) | 608 | #define MX31_PIN_CSI_D5__CSI_D5 IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_FUNC) |
| 607 | #define MX31_PIN_CSI_D6__CSI_D6 IOMUX_MODE(MX31_PIN_CSI_D6, IOMUX_CONFIG_FUNC) | 609 | #define MX31_PIN_CSI_D6__CSI_D6 IOMUX_MODE(MX31_PIN_CSI_D6, IOMUX_CONFIG_FUNC) |
diff --git a/arch/arm/plat-pxa/gpio.c b/arch/arm/plat-pxa/gpio.c index abc79d44acaa..98548c6903a0 100644 --- a/arch/arm/plat-pxa/gpio.c +++ b/arch/arm/plat-pxa/gpio.c | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
| 17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
| 18 | #include <linux/sysdev.h> | 18 | #include <linux/sysdev.h> |
| 19 | #include <linux/bootmem.h> | 19 | #include <linux/slab.h> |
| 20 | 20 | ||
| 21 | #include <mach/gpio.h> | 21 | #include <mach/gpio.h> |
| 22 | 22 | ||
| @@ -112,17 +112,12 @@ static int __init pxa_init_gpio_chip(int gpio_end) | |||
| 112 | int i, gpio, nbanks = gpio_to_bank(gpio_end) + 1; | 112 | int i, gpio, nbanks = gpio_to_bank(gpio_end) + 1; |
| 113 | struct pxa_gpio_chip *chips; | 113 | struct pxa_gpio_chip *chips; |
| 114 | 114 | ||
| 115 | /* this is early, we have to use bootmem allocator, and we really | 115 | chips = kzalloc(nbanks * sizeof(struct pxa_gpio_chip), GFP_KERNEL); |
| 116 | * want this to be allocated dynamically for different 'gpio_end' | ||
| 117 | */ | ||
| 118 | chips = alloc_bootmem_low(nbanks * sizeof(struct pxa_gpio_chip)); | ||
| 119 | if (chips == NULL) { | 116 | if (chips == NULL) { |
| 120 | pr_err("%s: failed to allocate GPIO chips\n", __func__); | 117 | pr_err("%s: failed to allocate GPIO chips\n", __func__); |
| 121 | return -ENOMEM; | 118 | return -ENOMEM; |
| 122 | } | 119 | } |
| 123 | 120 | ||
| 124 | memset(chips, 0, nbanks * sizeof(struct pxa_gpio_chip)); | ||
| 125 | |||
| 126 | for (i = 0, gpio = 0; i < nbanks; i++, gpio += 32) { | 121 | for (i = 0, gpio = 0; i < nbanks; i++, gpio += 32) { |
| 127 | struct gpio_chip *c = &chips[i].chip; | 122 | struct gpio_chip *c = &chips[i].chip; |
| 128 | 123 | ||
diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c index d7d7109ef47e..e55ac792d68c 100644 --- a/drivers/mmc/host/pxamci.c +++ b/drivers/mmc/host/pxamci.c | |||
| @@ -168,12 +168,12 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data) | |||
| 168 | 168 | ||
| 169 | if (data->flags & MMC_DATA_READ) { | 169 | if (data->flags & MMC_DATA_READ) { |
| 170 | host->dma_dir = DMA_FROM_DEVICE; | 170 | host->dma_dir = DMA_FROM_DEVICE; |
| 171 | dcmd = DCMD_INCTRGADDR | DCMD_FLOWTRG; | 171 | dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC; |
| 172 | DRCMR(host->dma_drcmrtx) = 0; | 172 | DRCMR(host->dma_drcmrtx) = 0; |
| 173 | DRCMR(host->dma_drcmrrx) = host->dma | DRCMR_MAPVLD; | 173 | DRCMR(host->dma_drcmrrx) = host->dma | DRCMR_MAPVLD; |
| 174 | } else { | 174 | } else { |
| 175 | host->dma_dir = DMA_TO_DEVICE; | 175 | host->dma_dir = DMA_TO_DEVICE; |
| 176 | dcmd = DCMD_INCSRCADDR | DCMD_FLOWSRC; | 176 | dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG; |
| 177 | DRCMR(host->dma_drcmrrx) = 0; | 177 | DRCMR(host->dma_drcmrrx) = 0; |
| 178 | DRCMR(host->dma_drcmrtx) = host->dma | DRCMR_MAPVLD; | 178 | DRCMR(host->dma_drcmrtx) = host->dma | DRCMR_MAPVLD; |
| 179 | } | 179 | } |
diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c index e641584e212e..887166267443 100644 --- a/drivers/video/backlight/pwm_bl.c +++ b/drivers/video/backlight/pwm_bl.c | |||
| @@ -145,6 +145,8 @@ static int pwm_backlight_suspend(struct platform_device *pdev, | |||
| 145 | struct backlight_device *bl = platform_get_drvdata(pdev); | 145 | struct backlight_device *bl = platform_get_drvdata(pdev); |
| 146 | struct pwm_bl_data *pb = dev_get_drvdata(&bl->dev); | 146 | struct pwm_bl_data *pb = dev_get_drvdata(&bl->dev); |
| 147 | 147 | ||
| 148 | if (pb->notify) | ||
| 149 | pb->notify(0); | ||
| 148 | pwm_config(pb->pwm, 0, pb->period); | 150 | pwm_config(pb->pwm, 0, pb->period); |
| 149 | pwm_disable(pb->pwm); | 151 | pwm_disable(pb->pwm); |
| 150 | return 0; | 152 | return 0; |
diff --git a/drivers/watchdog/ep93xx_wdt.c b/drivers/watchdog/ep93xx_wdt.c index e9f950ff86ea..cdd55e0d09f8 100644 --- a/drivers/watchdog/ep93xx_wdt.c +++ b/drivers/watchdog/ep93xx_wdt.c | |||
| @@ -29,6 +29,7 @@ | |||
| 29 | #include <linux/watchdog.h> | 29 | #include <linux/watchdog.h> |
| 30 | #include <linux/timer.h> | 30 | #include <linux/timer.h> |
| 31 | #include <linux/uaccess.h> | 31 | #include <linux/uaccess.h> |
| 32 | #include <linux/io.h> | ||
| 32 | #include <mach/hardware.h> | 33 | #include <mach/hardware.h> |
| 33 | 34 | ||
| 34 | #define WDT_VERSION "0.3" | 35 | #define WDT_VERSION "0.3" |
