Hi Alex, the frame buffer should be OK, I had read back them to verify. By the way, if you are using RGB frame buffer, maybe you can try the followed setting, in "ipu_disp.c", function __ipu_dp_csc_setup(), enable the line for "Y range 16-235, U/V range 16-240". For default code, Y,U,V data will be all 0~255. If it still failed, I think the issue should be caused during digital to analog converting, you need get help from the TV encoder vendor.
if (dp_csc_param.mode >= 0) {
reg = ipu_dp_read(ipu, DP_COM_CONF(dp));
reg &= ~DP_COM_CONF_CSC_DEF_MASK;
reg |= dp_csc_param.mode;
reg |= (1 << 11); /* Y range 16-235, U/V range 16-240. */
ipu_dp_write(ipu, reg, DP_COM_CONF(dp));
}