From: Even Xu Date: Wed, 9 Nov 2011 08:06:28 +0000 (+0800) Subject: ENGR00161766 [MX6] change ov5640_mipi to a module X-Git-Tag: v3.0.35-fsl_4.1.0~2080 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=fa7e3142050c44c27a662eb867bc7c688436445a;p=karo-tx-linux.git ENGR00161766 [MX6] change ov5640_mipi to a module 1. Config MIPI CSI2 driver as a default build in driver 2. Change ov5640 mipi sensor as a module Signed-off-by: Even Xu --- diff --git a/arch/arm/configs/imx6_defconfig b/arch/arm/configs/imx6_defconfig index 66919896cd6f..cc21f4500af0 100644 --- a/arch/arm/configs/imx6_defconfig +++ b/arch/arm/configs/imx6_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux/arm 2.6.38 Kernel Configuration -# Fri Nov 4 16:16:41 2011 +# Wed Nov 9 15:44:43 2011 # CONFIG_ARM=y CONFIG_HAVE_PWM=y @@ -287,6 +287,7 @@ CONFIG_IMX_HAVE_PLATFORM_FSL_USB_WAKEUP=y CONFIG_IMX_HAVE_PLATFORM_IMX_PM=y CONFIG_IMX_HAVE_PLATFORM_IMX_ASRC=y CONFIG_IMX_HAVE_PLATFORM_IMX_MIPI_DSI=y +CONFIG_IMX_HAVE_PLATFORM_IMX_MIPI_CSI2=y # # Freescale MXC Implementations @@ -1270,6 +1271,8 @@ CONFIG_MEDIA_TUNER_XC2028=y CONFIG_MEDIA_TUNER_XC5000=y CONFIG_MEDIA_TUNER_MC44S803=y CONFIG_VIDEO_V4L2=y +CONFIG_VIDEOBUF_GEN=y +CONFIG_VIDEOBUF_DMA_CONTIG=y CONFIG_VIDEO_CAPTURE_DRIVERS=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set @@ -1359,6 +1362,7 @@ CONFIG_VIDEO_MXC_IPU_CAMERA=y # CONFIG_MXC_CAMERA_OV2640 is not set CONFIG_MXC_CAMERA_OV3640=m CONFIG_MXC_CAMERA_OV5640=m +CONFIG_MXC_CAMERA_OV5640_MIPI=m CONFIG_MXC_CAMERA_OV5642=m CONFIG_MXC_IPU_PRP_VF_SDC=m CONFIG_MXC_IPU_PRP_ENC=m @@ -1692,7 +1696,6 @@ CONFIG_USB_GADGET=y CONFIG_USB_GADGET_VBUS_DRAW=2 CONFIG_USB_GADGET_SELECTED=y CONFIG_USB_GADGET_ARC=y -# CONFIG_USB_STATIC_IRAM_PPH is not set CONFIG_USB_ARC=y # CONFIG_USB_GADGET_FSL_USB2 is not set # CONFIG_USB_GADGET_R8A66597 is not set @@ -1983,6 +1986,11 @@ CONFIG_MXC_GPU_VIV=y # # CONFIG_ANATOP_THERMAL is not set +# +# MXC MIPI Support +# +CONFIG_MXC_MIPI_CSI2=y + # # File systems # diff --git a/arch/arm/mach-mx6/board-mx6q_arm2.c b/arch/arm/mach-mx6/board-mx6q_arm2.c index c90ce0b0200d..553e55e1a9fa 100644 --- a/arch/arm/mach-mx6/board-mx6q_arm2.c +++ b/arch/arm/mach-mx6/board-mx6q_arm2.c @@ -108,6 +108,7 @@ void __init early_console_setup(unsigned long base, struct clk *clk); static struct clk *sata_clk; static int esai_record; static int spdif_en; +static int mipi_sensor; extern struct regulator *(*get_cpu_regulator)(void); extern void (*put_cpu_regulator)(void); @@ -270,10 +271,6 @@ static iomux_v3_cfg_t mx6q_arm2_pads[] = { /* camera powerdown */ MX6Q_PAD_CSI0_DAT5__GPIO_5_23, -#ifdef CONFIG_MXC_CAMERA_OV5640_MIPI - MX6Q_PAD_CSI0_MCLK__CCM_CLKO, -#endif - MX6Q_PAD_EIM_D24__GPIO_3_24, /* PWM1 */ @@ -327,6 +324,10 @@ static iomux_v3_cfg_t mx6q_arm2_esai_record_pads[] = { MX6Q_PAD_ENET_REF_CLK__ESAI1_FSR, }; +static iomux_v3_cfg_t mx6q_arm2_mipi_sensor_pads[] = { + MX6Q_PAD_CSI0_MCLK__CCM_CLKO, +}; + #define MX6Q_USDHC_PAD_SETTING(id, speed) \ mx6q_sd##id##_##speed##mhz[] = { \ MX6Q_PAD_SD##id##_CLK__USDHC##id##_CLK_##speed##MHZ, \ @@ -1318,6 +1319,13 @@ static void __init fixup_mxc_board(struct machine_desc *desc, struct tag *tags, set_cpu_voltage = mx6_arm2_set_cpu_voltage; } +static int __init early_enable_mipi_sensor(char *p) +{ + mipi_sensor = 1; + return 0; +} +early_param("mipi_sensor", early_enable_mipi_sensor); + static inline void __init mx6q_csi0_io_init(void) { /* Camera reset */ @@ -1399,6 +1407,10 @@ static void __init mx6_board_init(void) ARRAY_SIZE(mx6q_arm2_can_pads)); } + if (mipi_sensor) + mxc_iomux_v3_setup_multiple_pads(mx6q_arm2_mipi_sensor_pads, + ARRAY_SIZE(mx6q_arm2_mipi_sensor_pads)); + gp_reg_id = arm2_dvfscore_data.reg_id; mx6q_arm2_init_uart(); imx6q_add_mipi_csi2(&mipi_csi2_pdata); @@ -1454,9 +1466,9 @@ static void __init mx6_board_init(void) imx_asrc_data.asrc_audio_clk = clk_get(NULL, "asrc_serial_clk"); imx6q_add_asrc(&imx_asrc_data); -#ifndef CONFIG_MXC_CAMERA_OV5640_MIPI - mx6q_csi0_io_init(); -#endif + if (!mipi_sensor) + mx6q_csi0_io_init(); + /* DISP0 Detect */ gpio_request(MX6Q_ARM2_DISP0_DET_INT, "disp0-detect"); gpio_direction_input(MX6Q_ARM2_DISP0_DET_INT);