> +
> +static int adv7842_g_mbus_fmt(struct v4l2_subdev *sd,
> +                             struct v4l2_mbus_framefmt *fmt)
> +{
> +       struct adv7842_state *state = to_state(sd);
> +
> +       fmt->width = state->timings.bt.width;
> +       fmt->height = state->timings.bt.height;
> +       fmt->code = V4L2_MBUS_FMT_FIXED;
> +       fmt->field = V4L2_FIELD_NONE;
> +
> +       if (state->mode == ADV7842_MODE_SDP) {
> +               /* SPD block */
> +               if (!(sdp_read(sd, 0x5A) & 0x01))
> +                       return -EINVAL;
> +               fmt->width = 720;
> +               /* valid signal */
> +               if (state->norm & V4L2_STD_525_60)
> +                       fmt->height = 480;
> +               else
> +                       fmt->height = 576;
> +               fmt->colorspace = V4L2_COLORSPACE_SMPTE170M;
> +               return 0;
> +       }
> +
I believe someone use SDP mode to capture 480i instead of 480p.
I think we can add a table to map adv7842 output setting and v4l format.

> +static int adv7842_s_std(struct v4l2_subdev *sd, v4l2_std_id norm)
> +{
> +       struct adv7842_state *state = to_state(sd);
> +
> +       v4l2_dbg(1, debug, sd, "%s:\n", __func__);
> +
> +       if (state->mode != ADV7842_MODE_SDP)
> +               return -ENODATA;
> +
> +       if (norm & V4L2_STD_ALL) {
> +               state->norm = norm;
> +               return 0;
> +       }
> +       return -EINVAL;
> +}
Why is there no hardware operation?

if (std == V4L2_STD_NTSC_443)
                val = 0x20;
else if (std == V4L2_STD_PAL_60)
                val = 0x10;
else if (std == V4L2_STD_PAL_Nc)
                val = 0x08;
else if (std == V4L2_STD_PAL_M)
                val = 0x04;
else if (std & V4L2_STD_NTSC)
                val = 0x02;
else if (std & V4L2_STD_PAL)
                val = 0x01;
else if (std & V4L2_STD_SECAM)
                val = 0x40;
else
                return -EINVAL;
/* force the digital core into a specific video standard */
sdp_write(sd, 0x0, val);
/* wait 100ms, otherwise color will be lost */
msleep(100);
state->std = std;
return 0;
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to