Linux support for parallel Pixel data Image sensor
by suspension from LinuxQuestions.org on (#6KRFN)
I am trying to understand how to write a device driver for the sensor MT9M021 by onsemi. I checked some of the sources here and here.
I understand based on these drivers that the device is treated as a I2C device connected to the I2C bus and much of the initialization is done in the probe callback for i2c_client device type. In addition, device configuration is facilitated through this code through I2C.
What I do not understand however is how the pixel data of the sensor read from the driver. Although the configuration is done through I2C, the sensor outputs its image data through a parallel interface which has to be connected to a bus and there must be some device driver code that does the reading and maybe decoding before the data is made available to the user space apps.
I am not sure of this is handled by the existing Linux kernel functionalities but by the looks of the datasheet of this chip, the parallel pixel data format does not seem to aligned to any standard, so not sure how a common driver code can handle this. Any help to understand this missing piece is much appreciated.
I understand based on these drivers that the device is treated as a I2C device connected to the I2C bus and much of the initialization is done in the probe callback for i2c_client device type. In addition, device configuration is facilitated through this code through I2C.
What I do not understand however is how the pixel data of the sensor read from the driver. Although the configuration is done through I2C, the sensor outputs its image data through a parallel interface which has to be connected to a bus and there must be some device driver code that does the reading and maybe decoding before the data is made available to the user space apps.
I am not sure of this is handled by the existing Linux kernel functionalities but by the looks of the datasheet of this chip, the parallel pixel data format does not seem to aligned to any standard, so not sure how a common driver code can handle this. Any help to understand this missing piece is much appreciated.