AnsweredAssumed Answered

Developing a V4L2 camera driver for IMX6Solo/RioTboard

Question asked by Yuri Oliveira Petnys on Mar 18, 2015



I'm developing a camera project using a RioTBoard (an IMX6 Solo based development board).

My project uses a IMX214 camera module, which some of you may know as the module powering the OnePlus One.

Currently, I'm working on a V4L2 driver for it and already did a fair amount of progress on the matter, but now I'm kind of stuck.


I started by adapting the IMX074 driver present on the Linux Kernel (Linux/drivers/media/i2c/soc_camera/imx074.c - Linux Cross Reference - Free Electrons) to the IMX214,

created a layer in Yocto for my image, created a patch that adds my driver code in the kernel sourcecode,

edited the devicetree to add the location of the IMX214 in the I2C BUS, and finally used 'menuconfig' to activate the drivers.

The code compiles successfully, and I can find the driver on the compiled image. I think I went through all the necessary loopholes.


However, when the board boots up, the I2C-Core fails to instantiate the device. Bootlogd displays the following message:

imx214 3-001a: IMX214: missing platform data!

imx214: probe of 3-001a failed with error -22


This error was thrown by the line 436 on the reference driver, when soc_camera_i2c_to_desc(client) returned NULL.

This function is declared here (Linux/include/media/soc_camera.h - Linux Cross Reference - Free Electrons), indicating that client->dev.platform_data is null.

However, since the 'client' is given by the Kernel, I have no idea whatsoever why platform_data is null, or what could've gone wrong.


Any help would be greatly appreciated!


- Yuri