diff options
author | Rob Herring <r.herring@freescale.com> | 2008-03-17 11:06:39 -0500 |
---|---|---|
committer | Daniel Schaeffer <daniel.schaeffer@timesys.com> | 2008-08-25 15:20:48 -0400 |
commit | 5f7957c83288d2fc71ccf2527cddb5528e8d5af1 (patch) | |
tree | 9553cb92752950c8e1da62e47a8654f11a54ca3e /arch | |
parent | 29d6742a32819eafb2b619ccb48e1df9422ad188 (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_defconfig | 5 | ||||
-rw-r--r-- | arch/arm/configs/imx31ads_defconfig | 5 | ||||
-rw-r--r-- | arch/arm/configs/imx37_3stack_defconfig | 130 | ||||
-rw-r--r-- | arch/arm/configs/mxc30030evb_defconfig | 16 | ||||
-rw-r--r-- | arch/arm/mach-mx37/devices.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-mx37/mx37_3stack.c | 75 |
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(); } /* |