return 0;
 }
 
+static void adv7842_s_sdp_io(struct v4l2_subdev *sd, struct adv7842_sdp_io_sync_adjustment *s)
+{
+       if (s && s->adjust) {
+               sdp_io_write(sd, 0x94, (s->hs_beg >> 8) & 0xf);
+               sdp_io_write(sd, 0x95, s->hs_beg & 0xff);
+               sdp_io_write(sd, 0x96, (s->hs_width >> 8) & 0xf);
+               sdp_io_write(sd, 0x97, s->hs_width & 0xff);
+               sdp_io_write(sd, 0x98, (s->de_beg >> 8) & 0xf);
+               sdp_io_write(sd, 0x99, s->de_beg & 0xff);
+               sdp_io_write(sd, 0x9a, (s->de_end >> 8) & 0xf);
+               sdp_io_write(sd, 0x9b, s->de_end & 0xff);
+               sdp_io_write(sd, 0xac, s->de_v_beg_o);
+               sdp_io_write(sd, 0xad, s->de_v_beg_e);
+               sdp_io_write(sd, 0xae, s->de_v_end_o);
+               sdp_io_write(sd, 0xaf, s->de_v_end_e);
+       } else {
+               /* set to default */
+               sdp_io_write(sd, 0x94, 0x00);
+               sdp_io_write(sd, 0x95, 0x00);
+               sdp_io_write(sd, 0x96, 0x00);
+               sdp_io_write(sd, 0x97, 0x20);
+               sdp_io_write(sd, 0x98, 0x00);
+               sdp_io_write(sd, 0x99, 0x00);
+               sdp_io_write(sd, 0x9a, 0x00);
+               sdp_io_write(sd, 0x9b, 0x00);
+               sdp_io_write(sd, 0xac, 0x04);
+               sdp_io_write(sd, 0xad, 0x04);
+               sdp_io_write(sd, 0xae, 0x04);
+               sdp_io_write(sd, 0xaf, 0x04);
+       }
+}
+
 static int adv7842_s_std(struct v4l2_subdev *sd, v4l2_std_id norm)
 {
        struct adv7842_state *state = to_state(sd);
+       struct adv7842_platform_data *pdata = &state->pdata;
 
        v4l2_dbg(1, debug, sd, "%s:\n", __func__);
 
        if (state->mode != ADV7842_MODE_SDP)
                return -ENODATA;
 
+       if (norm & V4L2_STD_625_50)
+               adv7842_s_sdp_io(sd, &pdata->sdp_io_sync_625);
+       else if (norm & V4L2_STD_525_60)
+               adv7842_s_sdp_io(sd, &pdata->sdp_io_sync_525);
+       else
+               adv7842_s_sdp_io(sd, NULL);
+
        if (norm & V4L2_STD_ALL) {
                state->norm = norm;
                return 0;
 
        sdp_csc_coeff(sd, &pdata->sdp_csc_coeff);
 
-       if (pdata->sdp_io_sync.adjust) {
-               const struct adv7842_sdp_io_sync_adjustment *s = &pdata->sdp_io_sync;
-               sdp_io_write(sd, 0x94, (s->hs_beg>>8) & 0xf);
-               sdp_io_write(sd, 0x95, s->hs_beg & 0xff);
-               sdp_io_write(sd, 0x96, (s->hs_width>>8) & 0xf);
-               sdp_io_write(sd, 0x97, s->hs_width & 0xff);
-               sdp_io_write(sd, 0x98, (s->de_beg>>8) & 0xf);
-               sdp_io_write(sd, 0x99, s->de_beg & 0xff);
-               sdp_io_write(sd, 0x9a, (s->de_end>>8) & 0xf);
-               sdp_io_write(sd, 0x9b, s->de_end & 0xff);
-               sdp_io_write(sd, 0xac, s->de_v_beg_o);
-               sdp_io_write(sd, 0xad, s->de_v_beg_e);
-               sdp_io_write(sd, 0xae, s->de_v_end_o);
-               sdp_io_write(sd, 0xaf, s->de_v_end_e);
-       }
-
        /* todo, improve settings for sdram */
        if (pdata->sd_ram_size >= 128) {
                sdp_write(sd, 0x12, 0x0d); /* Frame TBC,3D comb enabled */