From f31b62e14a000f4e7bf37ad8a84b13cb2079de21 Mon Sep 17 00:00:00 2001 From: Mikhail Khelik Date: Fri, 20 Dec 2013 05:12:00 -0300 Subject: [PATCH] [media] adv7604: add hdmi driver strength adjustment The driver strength is board dependent, so set it from the platform_data. Signed-off-by: Mikhail Khelik Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- drivers/media/i2c/adv7604.c | 7 ++++++- include/media/adv7604.h | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/adv7604.c b/drivers/media/i2c/adv7604.c index 6372d316e50a..00ce2716e319 100644 --- a/drivers/media/i2c/adv7604.c +++ b/drivers/media/i2c/adv7604.c @@ -1942,7 +1942,12 @@ static int adv7604_core_init(struct v4l2_subdev *sd) /* 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 - diff --git a/include/media/adv7604.h b/include/media/adv7604.h index 0c96e169dbe3..22fd1ac9d71b 100644 --- a/include/media/adv7604.h +++ b/include/media/adv7604.h @@ -78,6 +78,12 @@ enum adv7604_op_format_sel { 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? */ @@ -110,6 +116,11 @@ struct adv7604_platform_data { 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; -- 2.39.2