/* TODO from platform data */
        cp_write(sd, 0x69, 0x30);   /* Enable CP CSC */
        io_write(sd, 0x06, 0xa6);   /* positive VS and HS */
-       io_write(sd, 0x14, 0x7f);   /* Drive strength adjusted to max */
+
+       /* Adjust drive strength */
+       io_write(sd, 0x14, 0x40 | pdata->dr_str_data << 4 |
+                               pdata->dr_str_clk << 2 |
+                               pdata->dr_str_sync);
+
        cp_write(sd, 0xba, (pdata->hdmi_free_run_mode << 1) | 0x01); /* HDMI free run */
        cp_write(sd, 0xf3, 0xdc); /* Low threshold to enter/exit free run mode */
        cp_write(sd, 0xf9, 0x23); /*  STDI ch. 1 - LCVS change threshold -
 
        ADV7604_OP_FORMAT_SEL_SDR_ITU656_24_MODE2 = 0x8a,
 };
 
+enum adv7604_drive_strength {
+       ADV7604_DR_STR_MEDIUM_LOW = 1,
+       ADV7604_DR_STR_MEDIUM_HIGH = 2,
+       ADV7604_DR_STR_HIGH = 3,
+};
+
 /* Platform dependent definition */
 struct adv7604_platform_data {
        /* connector - HDMI or DVI? */
        unsigned replicate_av_codes:1;
        unsigned invert_cbcr:1;
 
+       /* IO register 0x14 */
+       enum adv7604_drive_strength dr_str_data;
+       enum adv7604_drive_strength dr_str_clk;
+       enum adv7604_drive_strength dr_str_sync;
+
        /* IO register 0x30 */
        unsigned output_bus_lsb_to_msb:1;