Message ID | 1354022509-20505-1-git-send-email-fabio.estevam@freescale.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Fabio, On Tue, Nov 27, 2012 at 11:21:49AM -0200, Fabio Estevam wrote: > mx25_3ds board has a OV2640 camera sensor. > > Add support for it. > > Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Good to see some activity on i.MX25 camera support. Did you test video capture with a latest kernel? You have surely noticed that i.MX25 support in the mx2_camera driver is marked BROKEN since 087c78a8. baruch
Hi Baruch, On Wed, Nov 28, 2012 at 4:05 AM, Baruch Siach <baruch@tkos.co.il> wrote: > Good to see some activity on i.MX25 camera support. Did you test video capture > with a latest kernel? You have surely noticed that i.MX25 support in the > mx2_camera driver is marked BROKEN since 087c78a8. I basically checked that mx2_camera can be probed: soc-camera-pdrv soc-camera-pdrv.0: Probing soc-camera-pdrv.0 mx2-camera imx25-camera.0: Camera driver attached to camera 0 ov2640 0-0030: ov2640 Product ID 26:42 Manufacturer ID 7f:a2 i2c i2c-0: OV2640 Probed mx2-camera imx25-camera.0: Camera driver detached from camera 0 mx2-camera imx25-camera.0: MX2 Camera (CSI) driver probed, clock frequency: 22166666 Tried a Gstreamer pipeline but it is failing, but this Gstreamer issue is not mx25 related as I saw the same issue with mx27/mx31. Do you still have access to a mx25pdk? I will try v4l-utils when I get a chance. Regards, Fabio Estevam
Hi Fabio, On Thu, Nov 29, 2012 at 10:38:36AM -0200, Fabio Estevam wrote: > On Wed, Nov 28, 2012 at 4:05 AM, Baruch Siach <baruch@tkos.co.il> wrote: > > > Good to see some activity on i.MX25 camera support. Did you test video capture > > with a latest kernel? You have surely noticed that i.MX25 support in the > > mx2_camera driver is marked BROKEN since 087c78a8. > > I basically checked that mx2_camera can be probed: > > soc-camera-pdrv soc-camera-pdrv.0: Probing soc-camera-pdrv.0 > mx2-camera imx25-camera.0: Camera driver attached to camera 0 > ov2640 0-0030: ov2640 Product ID 26:42 Manufacturer ID 7f:a2 > i2c i2c-0: OV2640 Probed > mx2-camera imx25-camera.0: Camera driver detached from camera 0 > mx2-camera imx25-camera.0: MX2 Camera (CSI) driver probed, clock > frequency: 22166666 > > Tried a Gstreamer pipeline but it is failing, but this Gstreamer issue > is not mx25 related as I saw the same issue with mx27/mx31. > > Do you still have access to a mx25pdk? Not anymore, unfortunately. > I will try v4l-utils when I get a chance. Thanks. Keep me posted. baruch
On Thu, 29 Nov 2012, Fabio Estevam wrote: > Hi Baruch, > > On Wed, Nov 28, 2012 at 4:05 AM, Baruch Siach <baruch@tkos.co.il> wrote: > > > Good to see some activity on i.MX25 camera support. Did you test video capture > > with a latest kernel? You have surely noticed that i.MX25 support in the > > mx2_camera driver is marked BROKEN since 087c78a8. > > I basically checked that mx2_camera can be probed: > > soc-camera-pdrv soc-camera-pdrv.0: Probing soc-camera-pdrv.0 > mx2-camera imx25-camera.0: Camera driver attached to camera 0 > ov2640 0-0030: ov2640 Product ID 26:42 Manufacturer ID 7f:a2 > i2c i2c-0: OV2640 Probed > mx2-camera imx25-camera.0: Camera driver detached from camera 0 > mx2-camera imx25-camera.0: MX2 Camera (CSI) driver probed, clock > frequency: 22166666 > > Tried a Gstreamer pipeline but it is failing, but this Gstreamer issue > is not mx25 related as I saw the same issue with mx27/mx31. Can you try mplayer? Thanks Guennadi > Do you still have access to a mx25pdk? > > I will try v4l-utils when I get a chance. > > Regards, > > Fabio Estevam > --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/
Hi Fabio On Thu, 29 Nov 2012, Fabio Estevam wrote: > Hi Baruch, > > On Wed, Nov 28, 2012 at 4:05 AM, Baruch Siach <baruch@tkos.co.il> wrote: > > > Good to see some activity on i.MX25 camera support. Did you test video capture > > with a latest kernel? You have surely noticed that i.MX25 support in the > > mx2_camera driver is marked BROKEN since 087c78a8. > > I basically checked that mx2_camera can be probed: > > soc-camera-pdrv soc-camera-pdrv.0: Probing soc-camera-pdrv.0 > mx2-camera imx25-camera.0: Camera driver attached to camera 0 > ov2640 0-0030: ov2640 Product ID 26:42 Manufacturer ID 7f:a2 > i2c i2c-0: OV2640 Probed > mx2-camera imx25-camera.0: Camera driver detached from camera 0 > mx2-camera imx25-camera.0: MX2 Camera (CSI) driver probed, clock > frequency: 22166666 > > Tried a Gstreamer pipeline but it is failing, but this Gstreamer issue > is not mx25 related as I saw the same issue with mx27/mx31. > > Do you still have access to a mx25pdk? > > I will try v4l-utils when I get a chance. So, what's the real status of mx25 camera? Is it really working or only probing? As you certainly understand, successful probing is by no means a sufficient indication of a driver being functional. Thanks Guennadi --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/
diff --git a/arch/arm/mach-imx/mach-mx25_3ds.c b/arch/arm/mach-imx/mach-mx25_3ds.c index b1b03aa..ae25f01 100644 --- a/arch/arm/mach-imx/mach-mx25_3ds.c +++ b/arch/arm/mach-imx/mach-mx25_3ds.c @@ -37,6 +37,8 @@ #include <asm/memory.h> #include <asm/mach/map.h> +#include <media/soc_camera.h> + #include "common.h" #include "devices-imx25.h" #include "hardware.h" @@ -115,12 +117,85 @@ static iomux_v3_cfg_t mx25pdk_pads[] = { MX25_PAD_GPIO_A__CAN1_TX, MX25_PAD_GPIO_B__CAN1_RX, MX25_PAD_D14__GPIO_4_6, /* CAN_PWDN */ + + /* CSI */ + MX25_PAD_CSI_D2__CSI_D2, + MX25_PAD_CSI_D3__CSI_D3, + MX25_PAD_CSI_D4__CSI_D4, + MX25_PAD_CSI_D5__CSI_D5, + MX25_PAD_CSI_D6__CSI_D6, + MX25_PAD_CSI_D7__CSI_D7, + MX25_PAD_CSI_D8__CSI_D8, + MX25_PAD_CSI_D9__CSI_D9, + MX25_PAD_CSI_HSYNC__CSI_HSYNC, + MX25_PAD_CSI_MCLK__CSI_MCLK, + MX25_PAD_CSI_PIXCLK__CSI_PIXCLK, + MX25_PAD_CSI_VSYNC__CSI_VSYNC, + MX25_PAD_A19__GPIO_2_5, /* CSI_PWDN */ + MX25_PAD_A20__GPIO_2_6, /* CMOS_RESET_B */ +}; + +#define MX25_3DS_GPIO_CAMERA_PW IMX_GPIO_NR(2, 5) +#define MX25_3DS_GPIO_CAMERA_RST IMX_GPIO_NR(2, 6) + +static struct gpio mx25_3ds_camera_gpios[] = { + { MX25_3DS_GPIO_CAMERA_PW, GPIOF_OUT_INIT_HIGH, "camera-power" }, + { MX25_3DS_GPIO_CAMERA_RST, GPIOF_OUT_INIT_HIGH, "camera-reset" }, +}; + +static const struct mx2_camera_platform_data mx25pdk_camera_pdata = { + .flags = MX2_CAMERA_HSYNC_HIGH | + MX2_CAMERA_GATED_CLOCK | + MX2_CAMERA_PCLK_SAMPLE_RISING, + .clk = 13000000, }; static const struct fec_platform_data mx25_fec_pdata __initconst = { .phy = PHY_INTERFACE_MODE_RMII, }; +static int mx25_3ds_camera_power(struct device *dev, int on) +{ + gpio_set_value(MX25_3DS_GPIO_CAMERA_PW, on ? 0 : 1); + + if (!on) + goto out; + + /* If enabled, give a reset impulse */ + gpio_set_value(MX25_3DS_GPIO_CAMERA_RST, 0); + msleep(20); + gpio_set_value(MX25_3DS_GPIO_CAMERA_RST, 1); + msleep(100); + +out: + return 0; +} + +static struct i2c_board_info mx25_3ds_i2c_camera = { + I2C_BOARD_INFO("ov2640", 0x30), +}; + +static struct soc_camera_link iclink_ov2640 = { + .bus_id = 0, + .board_info = &mx25_3ds_i2c_camera, + .i2c_adapter_id = 0, + .power = mx25_3ds_camera_power, + .regulators = NULL, + .num_regulators = 0, +}; + +static struct platform_device mx25_3ds_ov2640 = { + .name = "soc-camera-pdrv", + .id = 0, + .dev = { + .platform_data = &iclink_ov2640, + }, +}; + +static struct platform_device *devices[] __initdata = { + &mx25_3ds_ov2640, +}; + #define FEC_ENABLE_GPIO IMX_GPIO_NR(2, 3) #define FEC_RESET_B_GPIO IMX_GPIO_NR(4, 8) @@ -250,6 +325,16 @@ static void __init mx25pdk_init(void) gpio_request_one(MX25PDK_CAN_PWDN, GPIOF_OUT_INIT_LOW, "can-pwdn"); imx25_add_flexcan0(NULL); + + platform_add_devices(devices, ARRAY_SIZE(devices)); + + /* CSI */ + if (gpio_request_array(mx25_3ds_camera_gpios, + ARRAY_SIZE(mx25_3ds_camera_gpios))) { + pr_err("Failed to request camera gpios"); + iclink_ov2640.power = NULL; + } else + imx25_add_mx2_camera(&mx25pdk_camera_pdata); } static void __init mx25pdk_timer_init(void)
mx25_3ds board has a OV2640 camera sensor. Add support for it. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> --- arch/arm/mach-imx/mach-mx25_3ds.c | 85 +++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+)