This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TV out on OMAP3530: TVOUTBYPASS disables output entirely

Other Parts Discussed in Thread: THS7315

I'm attempting to follow the recommendations in the application note entitled "Generating compliant NTSC/PAL video signals and detecting short circuit conditions on the OMAP3 family of devices."  Our hardware currently functions properly in most respects when it comes to the NTSC output: we get a clean NTSC video signal.  However, some of the sync devices we use in conjunction with our OMAP board don't "like" the NTSC output we're producing.  I suspect this has to do with the large DC offset that we see on the video output, so I am trying to follow the recommendations in the mentioned app note.

In following these instructions, I've changed our style of output buffering.  We used to hook things up as shown in figure 1 of the app note (tv_out1 tied to TV_vfb through a 1.65K resistor).  The output of this goes through a voltage divider (that reduces by a factor of 0.6) and then an amplifier (MAX9586) which has a gain of 2.  The output is then pretty close to the normal 1.21 V peak to peak signal I'd expect, but with a fairly large DC offset (as much as 0.5-0.75 volts).

Accordingly, I have prototyped the circuit shown in Figure 2 (page 5) of the app note.  Now, I've effectively removed any connection from TV_out1 to the amp.  I've replaced the amp with a THS7315 as recommended.  I've tied TV_vfb1 to pin 1 of the amp and placed a 976 ohm resistor betwen tv_vfb1 and ground.  I've also added the 75 ohm resistor on the output.  Then, I enabled the TVOUTBYPASS bit of CONTROL_DEVCONF1 and disabled VIDEO_INVERT in VENC_OUTPUT_CONTROL.  I've checked that these changes are taking effect.  When I do so, I no longer get any output on TV_vfb1....I get 0 volts.  I expected to have a non-amplified version of the video signal there, but I get nothing.  I tried disabling TVOUTBYPASS, but then I just get a sine wave on TV_vfb1. 

Can anyone make recommendations on where to go from here?  We have a system that works OK (using the MAX9586 chip), but we're not doing things according to TI's recommendations.  Any ideas?  Thanks,

Neil Johnson

  • Neil,

    Sorry for the delayed response.

    When changing the hardware for external amplification did you also make the register changes? I assume yes but wanted to check.

    BR,

    Steve

  • Yes...I tried every combination of the register changes.  First, I set TV_OUT_BYPASS in CONTROL_DEVCONF1 and cleared VENC_OUTPUT_CONTROL VIDEO_INVERT as the app note says.  The one that has an effect is TV_OUT_BYPASS.  As soon as I set that register bit, I get no more video exiting the OMAP tv_vfb1 pin. 

  • Hi!

     

    I'm trying to do the same. Where/How did you change the register settings? I'm using the 2.6.29 PSP kernel. Can you give me a hint?

    I have the problem, that the TV-out signal with the 1.65k resistor + the 33pF/3.3uH network doesn't output a clean signal. I always get oscillations which makes the image noisy. Any hints what could be wrong?

     

    Regards

    Jan

  • Jan,

    The board I'm using is not a beagleboard or a mainstream board produced with TI, and we are using a special version of the kernel that's a bit pieced together from a variety of sources.  So, this may not completely apply in your case, but the changes I made were the following:

    1) In arch/arm/plat-omap/include/mach/control.h, I added

    #define OMAP2_TVOUTBYPASS (1 << 18)

    to the list of bit #defines in the CONTROL_DEVCONF1 bits

    2) In drivers/video/omap2/dss/venc.c:

    I added

    #include <mach/control.h>

    and in venc_init(), I added:

          reg = omap_ctrl_readl(OMAP343X_CONTROL_DEVCONF1);
          printk(KERN_INFO "Value of DEVCONF1 was: %u\n", reg);
          reg |= OMAP2_TVOUTBYPASS;
          omap_ctrl_writel(reg, OMAP343X_CONTROL_DEVCONF1);
          reg = omap_ctrl_readl(OMAP343X_CONTROL_DEVCONF1);
          printk(KERN_INFO "Value of DEVCONF1 now: %u\n", reg);  

          //! Print the current value of VENC_OUTPUT_CONTROL:
          reg = venc_read_reg(VENC_OUTPUT_CONTROL);
          printk(KERN_INFO "Value of VENC_OUTPUT_CONTROL was: %u\n", reg);
          reg &= ~(1 << 3);
          venc_write_reg(VENC_OUTPUT_CONTROL, reg);
          reg = venc_read_reg(VENC_OUTPUT_CONTROL);
          printk(KERN_INFO "Value of VENC_OUTPUT_CONTROL now: %u\n", reg);

    Take it for what it's worth.  I was able to verify that the registers were indeed set using mem_util in userspace. 

    Neil