Lines Matching refs:edid
155 u8 edid[256]; member
158 } edid; member
556 adv76xx_set_hpd(state, state->edid.present); in adv76xx_delayed_work_enable_hotplug()
1924 static int adv76xx_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in adv76xx_get_edid() argument
1929 memset(edid->reserved, 0, sizeof(edid->reserved)); in adv76xx_get_edid()
1931 switch (edid->pad) { in adv76xx_get_edid()
1936 if (state->edid.present & (1 << edid->pad)) in adv76xx_get_edid()
1937 data = state->edid.edid; in adv76xx_get_edid()
1943 if (edid->start_block == 0 && edid->blocks == 0) { in adv76xx_get_edid()
1944 edid->blocks = data ? state->edid.blocks : 0; in adv76xx_get_edid()
1951 if (edid->start_block >= state->edid.blocks) in adv76xx_get_edid()
1954 if (edid->start_block + edid->blocks > state->edid.blocks) in adv76xx_get_edid()
1955 edid->blocks = state->edid.blocks - edid->start_block; in adv76xx_get_edid()
1957 memcpy(edid->edid, data + edid->start_block * 128, edid->blocks * 128); in adv76xx_get_edid()
1962 static int get_edid_spa_location(const u8 *edid) in get_edid_spa_location() argument
1966 if ((edid[0x7e] != 1) || in get_edid_spa_location()
1967 (edid[0x80] != 0x02) || in get_edid_spa_location()
1968 (edid[0x81] != 0x03)) { in get_edid_spa_location()
1973 d = edid[0x82] & 0x7f; in get_edid_spa_location()
1979 u8 tag = edid[i] >> 5; in get_edid_spa_location()
1980 u8 len = edid[i] & 0x1f; in get_edid_spa_location()
1990 static int adv76xx_set_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in adv76xx_set_edid() argument
1998 memset(edid->reserved, 0, sizeof(edid->reserved)); in adv76xx_set_edid()
2000 if (edid->pad > ADV7604_PAD_HDMI_PORT_D) in adv76xx_set_edid()
2002 if (edid->start_block != 0) in adv76xx_set_edid()
2004 if (edid->blocks == 0) { in adv76xx_set_edid()
2006 state->edid.present &= ~(1 << edid->pad); in adv76xx_set_edid()
2007 adv76xx_set_hpd(state, state->edid.present); in adv76xx_set_edid()
2008 rep_write_clr_set(sd, info->edid_enable_reg, 0x0f, state->edid.present); in adv76xx_set_edid()
2014 if (!state->edid.present) in adv76xx_set_edid()
2015 state->edid.blocks = 0; in adv76xx_set_edid()
2018 __func__, edid->pad, state->edid.present); in adv76xx_set_edid()
2021 if (edid->blocks > 2) { in adv76xx_set_edid()
2022 edid->blocks = 2; in adv76xx_set_edid()
2027 __func__, edid->pad, state->edid.present); in adv76xx_set_edid()
2034 spa_loc = get_edid_spa_location(edid->edid); in adv76xx_set_edid()
2038 switch (edid->pad) { in adv76xx_set_edid()
2040 state->spa_port_a[0] = edid->edid[spa_loc]; in adv76xx_set_edid()
2041 state->spa_port_a[1] = edid->edid[spa_loc + 1]; in adv76xx_set_edid()
2044 rep_write(sd, 0x70, edid->edid[spa_loc]); in adv76xx_set_edid()
2045 rep_write(sd, 0x71, edid->edid[spa_loc + 1]); in adv76xx_set_edid()
2048 rep_write(sd, 0x72, edid->edid[spa_loc]); in adv76xx_set_edid()
2049 rep_write(sd, 0x73, edid->edid[spa_loc + 1]); in adv76xx_set_edid()
2052 rep_write(sd, 0x74, edid->edid[spa_loc]); in adv76xx_set_edid()
2053 rep_write(sd, 0x75, edid->edid[spa_loc + 1]); in adv76xx_set_edid()
2067 edid->edid[spa_loc] = state->spa_port_a[0]; in adv76xx_set_edid()
2068 edid->edid[spa_loc + 1] = state->spa_port_a[1]; in adv76xx_set_edid()
2070 memcpy(state->edid.edid, edid->edid, 128 * edid->blocks); in adv76xx_set_edid()
2071 state->edid.blocks = edid->blocks; in adv76xx_set_edid()
2072 state->aspect_ratio = v4l2_calc_aspect_ratio(edid->edid[0x15], in adv76xx_set_edid()
2073 edid->edid[0x16]); in adv76xx_set_edid()
2074 state->edid.present |= 1 << edid->pad; in adv76xx_set_edid()
2076 err = edid_write_block(sd, 128 * edid->blocks, state->edid.edid); in adv76xx_set_edid()
2078 v4l2_err(sd, "error %d writing edid pad %d\n", err, edid->pad); in adv76xx_set_edid()
2084 rep_write_clr_set(sd, info->edid_enable_reg, 0x0f, state->edid.present); in adv76xx_set_edid()
2087 if (rep_read(sd, info->edid_status_reg) & state->edid.present) in adv76xx_set_edid()
2092 v4l2_err(sd, "error enabling edid (0x%x)\n", state->edid.present); in adv76xx_set_edid()