Examining the tvp5146.c file I found this function which appears to me as though it does the selecting:

/*This function is used to write value into register for i2c client. */
static int enable_ccdc2tvp5146(struct i2c_client *client)
{
        int err = 0;

        struct i2c_msg msg[1];
        unsigned char data[2];

        if (!client->adapter) {
                err = -ENODEV;
        } else {
                msg->addr = 0x25;
                msg->flags = 0;
                msg->len = 2;
                msg->buf = data;
                data[0] = 0x8;
                data[1] = 0x0;
                err = i2c_transfer(client->adapter, msg, 1);
        }
        dev_dbg(tvp5146_i2c_dev, " i2c data write \n");

        return err;
}

According the MSP430 register definition documentation on spectrum digital's site the address of the MSP430 is 0x25 and the offset into the video input mux control register is 0x08. Pin 7 of this register is used to select the mode, set it to 0 for tvp5146 and 1 for imager daughter card. In the above function the address is 0x25, data[0], which I'm assuming is the offset is 0x08, and data[1] is 0x00, I'm assuming this is done just to set pin 7 low. So if I change data[1]=0x80 setting pin 7 high this should select the imager? I don't know if this is right. Is there anybody that has done this with the dm355? I've seen some posts about people doing it with some other EVM:

http://www.mail-archive.com/[email protected]/msg00201.html

According to this post he just used the i2c_write_reg function to control his sensor and then deselected tvp5146.

Quoting Stephen Berry <[EMAIL PROTECTED]>:

No question involving the video front end is trivial on this platform ;)

You are right about the mux select - I didn't check where it actually
lived, but that makes total sense. Since it's just a comment at this
point, yes you would have to figure out how to make the decoder_imager
line toggle - and this is coming from the MSP430. The only way around
this would be to do some surgery on the PCB.

The reason I suggested starting with the tvp5146 is that it is close to
what you have now. I'd take that file and rename it to something else
and stick it into the build. This is a little more complicated than it
sounds since you will need to modify the Makefile in the media/video
directory, and to do it right you should change the Kconfig files to
allow you to select which driver to include when you build the kernel.

If you just want to hack the kernel to get something working, then you
can just modify the tvp5146 code itself and the vpfe to switch the mux.
The MSP430 is probably your biggest problem here - and I can't really
help with that since our hardware doesn't use one...

   Steve

Anthony Gutierrez wrote:
Sorry if these questions seem trivial, but I'm a little confused by this. The tvp5146 is just the decoder and is MUX'd into the VPFE with the imager interface correct? So would the code to select which is sent to the VPFE be in the tvp5146.c driver? There is a comment in the davinci_vpfe.c file that says code needs to be added to switch between the tvp5146 and the mt9t001 which I'm assuming is the Micron sensor and that it would be connected to the imager interface, connectors J30 and J31 on the dm355 DVEVM. Because of that comment I'm guessing it's not in the davinci_vpfe.c file. Do I have to write it myself then? I guess my question is do I need to modify the tvp5146.c code if not using the tvp5146 and instead using the imager interface?

Stephen Berry wrote:
BT656 is what you want (and I believe it is the exact same thing as CCIR656).

For the EVM you will need to switch the mux if you are using the connector - I'm not sure but I think there is code in the tvp5146 driver to do this, you would just need to switch it the other way.

Based on what you have told me - I think you can get away with changing the tvp5146.c driver to suit your sensor. You'll need to compare the setup of the decoder to what needs to get done with the sensor. Personally I'd start by copying the tvp5146.c file and creating a new driver.

There is some code already written for the 7620, in linux/drivers/media/video/ovcamchip/ov7x20.c. The problem with this code is that it is written for v4l1 and it's not integrated into the VPFE. But you can use it to figure out register settings....

Yes there are functions for the I2C bus in the tvp driver. No, there isn't any documentation other than the code.

It looks like your 7620 also has auto exposure and white balance modes... thats good news. Otherwise your application would need to do it.

   Steve

Anthony Gutierrez wrote:
The camera module I have can uses an Omnivision OV7620: http://www.electronics123.com/s.nl/it.A/id.42/.f

It has a resolution of 640x480 and can output the CCIR 601/656 standard, which is just the former name of and should be the same as BT 601/656 correct? Assuming my camera output is pretty close to the decoder output will I just need to select the imager interface as the input into the VPFE instead of the tvp5146 decoder and configure my camera via I2C? How can I do this? Are there functions for using the I2C bus already? I'm having trouble following the davinci_vpfe.c, tvp5146.c, ccdc_dm355.c etc. driver files and there seems to be no documentation on these.

Stephen Berry wrote:

If your sensor is generating BT656 (that is YCbCr with embedded sync's, horizontal and vertical blanking etc) in D1 format, then you might not have to do too much. The default input to the 355 is from the NTSC decoder which uses BT656.

If the sensor output is not identical to the output of an NTSC decoder, then you will need to modify the ccdc so that you can capture your frames correctly. If your sync signals are external you will need to enable the inputs to the VPFE. It is likely that you may need to modify dm355_vpfe.c and tvp5146.c as well if the sensor raw output is a different resolution or the sensor itself needs to be setup differently.

If your sensor does not have an automatic AWB/AE mode, then you will need to write an application level control loop to manage this.

If you haven't guessed - this can be a big job if your sensor isn't a direct substitute for a decoder.

   Steve

Anthony Gutierrez wrote:
I want to use a CMOS imager outputting 8bit YCbCr 4:2:2 with the dm355 EVM. What do I need to modify within the davinci_VPFE.c and ccdc_dm355.c driver files to do something like this? And are there any other files I need to modify? Is there any guide or documentation for using these drivers?
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


There is some code already written for the 7620,

Anthony Gutierrez wrote:
The camera module I have can uses an Omnivision OV7620: http://www.electronics123.com/s.nl/it.A/id.42/.f

It has a resolution of 640x480 and can output the CCIR 601/656 standard, which is just the former name of and should be the same as BT 601/656 correct? Assuming my camera output is pretty close to the decoder output will I just need to select the imager interface as the input into the VPFE instead of the tvp5146 decoder and configure my camera via I2C? How can I do this? Are there functions for using the I2C bus already? I'm having trouble following the davinci_vpfe.c, tvp5146.c, ccdc_dm355.c etc. driver files and there seems to be no documentation on these.

Stephen Berry wrote:

If your sensor is generating BT656 (that is YCbCr with embedded sync's, horizontal and vertical blanking etc) in D1 format, then you might not have to do too much. The default input to the 355 is from the NTSC decoder which uses BT656.

If the sensor output is not identical to the output of an NTSC decoder, then you will need to modify the ccdc so that you can capture your frames correctly. If your sync signals are external you will need to enable the inputs to the VPFE. It is likely that you may need to modify dm355_vpfe.c and tvp5146.c as well if the sensor raw output is a different resolution or the sensor itself needs to be setup differently.

If your sensor does not have an automatic AWB/AE mode, then you will need to write an application level control loop to manage this.

If you haven't guessed - this can be a big job if your sensor isn't a direct substitute for a decoder.

   Steve

Anthony Gutierrez wrote:
I want to use a CMOS imager outputting 8bit YCbCr 4:2:2 with the dm355 EVM. What do I need to modify within the davinci_VPFE.c and ccdc_dm355.c driver files to do something like this? And are there any other files I need to modify? Is there any guide or documentation for using these drivers?
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source





_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to