summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorRob Herring <r.herring@freescale.com>2008-03-17 11:06:39 -0500
committerDaniel Schaeffer <daniel.schaeffer@timesys.com>2008-08-25 15:20:48 -0400
commit5f7957c83288d2fc71ccf2527cddb5528e8d5af1 (patch)
tree9553cb92752950c8e1da62e47a8654f11a54ca3e /arch
parent29d6742a32819eafb2b619ccb48e1df9422ad188 (diff)
ENGR00057358 Add IPUv3 driver with fb and v4l2 support
Add IPUv3 driver Update framebuffer driver for IPUv3 Update V4L2 output driver for IPUv3 Signed-off-by: Rob Herring <r.herring@freescale.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/configs/imx31_3stack_defconfig5
-rw-r--r--arch/arm/configs/imx31ads_defconfig5
-rw-r--r--arch/arm/configs/imx37_3stack_defconfig130
-rw-r--r--arch/arm/configs/mxc30030evb_defconfig16
-rw-r--r--arch/arm/mach-mx37/devices.c5
-rw-r--r--arch/arm/mach-mx37/mx37_3stack.c75
6 files changed, 204 insertions, 32 deletions
diff --git a/arch/arm/configs/imx31_3stack_defconfig b/arch/arm/configs/imx31_3stack_defconfig
index 7f1380c12979..a7c37ac5babb 100644
--- a/arch/arm/configs/imx31_3stack_defconfig
+++ b/arch/arm/configs/imx31_3stack_defconfig
@@ -1293,11 +1293,8 @@ CONFIG_RTC_MXC=y
#
# MXC support drivers
#
-
-#
-# MXC IPU
-#
CONFIG_MXC_IPU=y
+CONFIG_MXC_IPU_V1=y
CONFIG_MXC_IPU_PF=y
#
diff --git a/arch/arm/configs/imx31ads_defconfig b/arch/arm/configs/imx31ads_defconfig
index 4127cd248089..9edae21f87f5 100644
--- a/arch/arm/configs/imx31ads_defconfig
+++ b/arch/arm/configs/imx31ads_defconfig
@@ -1591,11 +1591,8 @@ CONFIG_RTC_MXC=y
#
# MXC support drivers
#
-
-#
-# MXC IPU
-#
CONFIG_MXC_IPU=y
+CONFIG_MXC_IPU_V1=y
CONFIG_MXC_IPU_PF=y
#
diff --git a/arch/arm/configs/imx37_3stack_defconfig b/arch/arm/configs/imx37_3stack_defconfig
index 212b7fb5bc04..d1efb8e54e84 100644
--- a/arch/arm/configs/imx37_3stack_defconfig
+++ b/arch/arm/configs/imx37_3stack_defconfig
@@ -1,7 +1,6 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.24
-# Sat Mar 15 22:18:33 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -776,7 +775,78 @@ CONFIG_SSB_POSSIBLE=y
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_DEV=y
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_VIDEO_V4L1_COMPAT is not set
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
+
+#
+# Encoders/decoders and other helper chips
+#
+
+#
+# Audio decoders
+#
+# CONFIG_VIDEO_TDA9840 is not set
+# CONFIG_VIDEO_TEA6415C is not set
+# CONFIG_VIDEO_TEA6420 is not set
+# CONFIG_VIDEO_MSP3400 is not set
+# CONFIG_VIDEO_CS53L32A is not set
+# CONFIG_VIDEO_TLV320AIC23B is not set
+# CONFIG_VIDEO_WM8775 is not set
+# CONFIG_VIDEO_WM8739 is not set
+# CONFIG_VIDEO_VP27SMPX is not set
+
+#
+# Video decoders
+#
+# CONFIG_VIDEO_OV7670 is not set
+# CONFIG_VIDEO_TCM825X is not set
+# CONFIG_VIDEO_SAA711X is not set
+# CONFIG_VIDEO_TVP5150 is not set
+
+#
+# Video and audio decoders
+#
+# CONFIG_VIDEO_CX25840 is not set
+
+#
+# MPEG video encoders
+#
+# CONFIG_VIDEO_CX2341X is not set
+
+#
+# Video encoders
+#
+# CONFIG_VIDEO_SAA7127 is not set
+
+#
+# Video improvement chips
+#
+# CONFIG_VIDEO_UPD64031A is not set
+# CONFIG_VIDEO_UPD64083 is not set
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_MXC_CAMERA is not set
+CONFIG_VIDEO_MXC_OUTPUT=y
+CONFIG_VIDEO_MXC_IPU_OUTPUT=y
+# CONFIG_VIDEO_MXC_OPL is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_RADIO_CADET is not set
+# CONFIG_RADIO_RTRACK is not set
+# CONFIG_RADIO_RTRACK2 is not set
+# CONFIG_RADIO_AZTECH is not set
+# CONFIG_RADIO_GEMTEK is not set
+# CONFIG_RADIO_SF16FMI is not set
+# CONFIG_RADIO_SF16FMR2 is not set
+# CONFIG_RADIO_TERRATEC is not set
+# CONFIG_RADIO_TRUST is not set
+# CONFIG_RADIO_TYPHOON is not set
+# CONFIG_RADIO_ZOLTRIX is not set
# CONFIG_DVB_CORE is not set
# CONFIG_DAB is not set
@@ -785,7 +855,35 @@ CONFIG_SSB_POSSIBLE=y
#
# CONFIG_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-# CONFIG_FB is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_MXC=y
+CONFIG_FB_MXC_SYNC_PANEL=y
+CONFIG_FB_MXC_EPSON_VGA_SYNC_PANEL=y
+# CONFIG_FB_MXC_TVOUT is not set
+# CONFIG_FB_MXC_ASYNC_PANEL is not set
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=y
# CONFIG_LCD_LTV350QV is not set
@@ -805,6 +903,24 @@ CONFIG_BACKLIGHT_WM8350=y
# CONFIG_VGA_CONSOLE is not set
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
#
# Sound
@@ -949,11 +1065,8 @@ CONFIG_RTC_DRV_MXC_V2=y
#
# MXC support drivers
#
-
-#
-# MXC IPU
-#
-# CONFIG_MXC_IPU is not set
+CONFIG_MXC_IPU=y
+CONFIG_MXC_IPU_V3=y
#
# MXC SSI support
@@ -991,7 +1104,6 @@ CONFIG_RTC_DRV_MXC_V2=y
# MXC HARDWARE EVENT
#
CONFIG_MXC_HWEVENT=y
-
#
# MXC VPU(Video Processing Unit) support
#
diff --git a/arch/arm/configs/mxc30030evb_defconfig b/arch/arm/configs/mxc30030evb_defconfig
index b106925678eb..24683a227cda 100644
--- a/arch/arm/configs/mxc30030evb_defconfig
+++ b/arch/arm/configs/mxc30030evb_defconfig
@@ -167,6 +167,7 @@ CONFIG_MACH_MXC30030EVB=y
# CONFIG_MACH_MXC30030ADS is not set
CONFIG_MXC_DSP_BRINGUP=y
CONFIG_ARCH_HAS_EVTMON=y
+CONFIG_DMA_ZONE_SIZE=24
#
# Processor Type
@@ -413,12 +414,6 @@ CONFIG_FW_LOADER=m
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
-
-#
-# Power Management IC's
-#
-# CONFIG_PMIC is not set
-# CONFIG_PMIC_WM8350 is not set
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_CONCAT is not set
@@ -831,6 +826,7 @@ CONFIG_VIDEO_MXC_CAMERA=y
CONFIG_VIDEO_MXC_IPU_CAMERA=y
# CONFIG_MXC_CAMERA_MC521DA is not set
CONFIG_MXC_CAMERA_MICRON111=y
+# CONFIG_MXC_CAMERA_OV2640 is not set
CONFIG_MXC_IPU_PRP_VF_SDC=y
CONFIG_MXC_IPU_PRP_ENC=y
CONFIG_VIDEO_MXC_OUTPUT=y
@@ -969,7 +965,7 @@ CONFIG_SND_MXC_PMIC=y
# SoC Audio support for SuperH
#
# CONFIG_SND_MXC_SOC is not set
-# CONFIG_SND_SOC_IMX37_3STACK_WM8350 is not set
+# CONFIG_SND_SOC_IMX_3STACK_WM8350 is not set
#
# Open Sound System
@@ -1197,15 +1193,13 @@ CONFIG_RTC_INTF_DEV=y
# on-CPU RTC drivers
#
CONFIG_RTC_MXC=y
+# CONFIG_RTC_DRV_MXC_V2 is not set
#
# MXC support drivers
#
-
-#
-# MXC IPU
-#
CONFIG_MXC_IPU=y
+CONFIG_MXC_IPU_V1=y
CONFIG_MXC_IPU_PF=y
#
diff --git a/arch/arm/mach-mx37/devices.c b/arch/arm/mach-mx37/devices.c
index d5345609f83a..7b00b2b9de6f 100644
--- a/arch/arm/mach-mx37/devices.c
+++ b/arch/arm/mach-mx37/devices.c
@@ -152,7 +152,10 @@ static inline void mxc_init_wdt(void)
}
#endif
-#if defined(CONFIG_MXC_IPU) || defined(CONFIG_MXC_IPU_MODULE)
+#if defined(CONFIG_MXC_IPU_V3) || defined(CONFIG_MXC_IPU_V3_MODULE)
+static struct mxc_ipu_config mxc_ipu_data = {
+ .rev = 1,
+};
static struct resource ipu_resources[] = {
{
diff --git a/arch/arm/mach-mx37/mx37_3stack.c b/arch/arm/mach-mx37/mx37_3stack.c
index cb61c401c270..392295a7f0bd 100644
--- a/arch/arm/mach-mx37/mx37_3stack.c
+++ b/arch/arm/mach-mx37/mx37_3stack.c
@@ -13,6 +13,7 @@
#include <linux/types.h>
#include <linux/sched.h>
+#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/init.h>
@@ -38,6 +39,7 @@
#include <asm/arch/memory.h>
#include <asm/arch/gpio.h>
#include "board-mx37_3stack.h"
+#include "iomux.h"
#include "crm_regs.h"
/*!
@@ -129,6 +131,30 @@ static inline void mxc_init_nand_mtd(void)
}
#endif
+static void lcd_reset(void)
+{
+ static int first;
+
+ /* ensure that LCDIO(1.8V) has been turn on */
+ /* active reset line GPIO */
+ if (!first) {
+ mxc_request_iomux(MX37_PIN_GPIO1_5, IOMUX_CONFIG_GPIO);
+ first = 1;
+ }
+ mxc_set_gpio_dataout(MX37_PIN_GPIO1_5, 0);
+ mxc_set_gpio_direction(MX37_PIN_GPIO1_5, 0);
+ /* do reset */
+ msleep(10); /* tRES >= 100us */
+ mxc_set_gpio_dataout(MX37_PIN_GPIO1_5, 1);
+ msleep(60);
+}
+
+static struct mxc_lcd_platform_data lcd_data = {
+ .core_reg = "LDO1",
+ .io_reg = "DCDC6",
+ .reset = lcd_reset,
+};
+
static struct spi_board_info mxc_spi_board_info[] __initdata = {
{
.modalias = "cpld_spi",
@@ -138,11 +164,52 @@ static struct spi_board_info mxc_spi_board_info[] __initdata = {
},
{
.modalias = "lcd_spi",
- .max_speed_hz = 500000,
- .bus_num = 1,
- .chip_select = 2,},
+ .max_speed_hz = 5000000,
+ .bus_num = 2,
+ .platform_data = &lcd_data,
+ .chip_select = 1,},
};
+#if defined(CONFIG_FB_MXC_SYNC_PANEL) || defined(CONFIG_FB_MXC_SYNC_PANEL_MODULE)
+static struct platform_device mxc_fb_device[] = {
+ {
+ .name = "mxc_sdc_fb",
+ .id = 0,
+ .dev = {
+ .release = mxc_nop_release,
+ .coherent_dma_mask = 0xFFFFFFFF,
+ },
+ },
+ {
+ .name = "mxc_sdc_fb",
+ .id = 1,
+ .dev = {
+ .release = mxc_nop_release,
+ .coherent_dma_mask = 0xFFFFFFFF,
+ },
+ },
+ {
+ .name = "mxc_sdc_fb",
+ .id = 2,
+ .dev = {
+ .release = mxc_nop_release,
+ .coherent_dma_mask = 0xFFFFFFFF,
+ },
+ },
+};
+
+static void mxc_init_fb(void)
+{
+ (void)platform_device_register(&mxc_fb_device[0]);
+ (void)platform_device_register(&mxc_fb_device[1]);
+ (void)platform_device_register(&mxc_fb_device[2]);
+}
+#else
+static inline void mxc_init_fb(void)
+{
+}
+#endif
+
/*lan9217 device*/
#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
static struct resource smsc911x_resources[] = {
@@ -219,6 +286,8 @@ static void __init mxc_board_init(void)
spi_register_board_info(mxc_spi_board_info,
ARRAY_SIZE(mxc_spi_board_info));
mxc_init_nand_mtd();
+
+ mxc_init_fb();
}
/*