Loading drivers/media/i2c/adv7842.c +20 −14 Original line number Diff line number Diff line Loading @@ -2028,16 +2028,7 @@ static int adv7842_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) struct adv7842_state *state = to_state(sd); u8 *data = NULL; if (edid->pad > ADV7842_EDID_PORT_VGA) return -EINVAL; if (edid->blocks == 0) return -EINVAL; if (edid->blocks > 2) return -EINVAL; if (edid->start_block > 1) return -EINVAL; if (edid->start_block == 1) edid->blocks = 1; memset(edid->reserved, 0, sizeof(edid->reserved)); switch (edid->pad) { case ADV7842_EDID_PORT_A: Loading @@ -2052,12 +2043,23 @@ static int adv7842_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) default: return -EINVAL; } if (edid->start_block == 0 && edid->blocks == 0) { edid->blocks = data ? 2 : 0; return 0; } if (!data) return -ENODATA; memcpy(edid->edid, data + edid->start_block * 128, edid->blocks * 128); if (edid->start_block >= 2) return -EINVAL; if (edid->start_block + edid->blocks > 2) edid->blocks = 2 - edid->start_block; memcpy(edid->edid, data + edid->start_block * 128, edid->blocks * 128); return 0; } Loading @@ -2066,12 +2068,16 @@ static int adv7842_set_edid(struct v4l2_subdev *sd, struct v4l2_edid *e) struct adv7842_state *state = to_state(sd); int err = 0; memset(e->reserved, 0, sizeof(e->reserved)); if (e->pad > ADV7842_EDID_PORT_VGA) return -EINVAL; if (e->start_block != 0) return -EINVAL; if (e->blocks > 2) if (e->blocks > 2) { e->blocks = 2; return -E2BIG; } /* todo, per edid */ state->aspect_ratio = v4l2_calc_aspect_ratio(e->edid[0x15], Loading Loading
drivers/media/i2c/adv7842.c +20 −14 Original line number Diff line number Diff line Loading @@ -2028,16 +2028,7 @@ static int adv7842_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) struct adv7842_state *state = to_state(sd); u8 *data = NULL; if (edid->pad > ADV7842_EDID_PORT_VGA) return -EINVAL; if (edid->blocks == 0) return -EINVAL; if (edid->blocks > 2) return -EINVAL; if (edid->start_block > 1) return -EINVAL; if (edid->start_block == 1) edid->blocks = 1; memset(edid->reserved, 0, sizeof(edid->reserved)); switch (edid->pad) { case ADV7842_EDID_PORT_A: Loading @@ -2052,12 +2043,23 @@ static int adv7842_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) default: return -EINVAL; } if (edid->start_block == 0 && edid->blocks == 0) { edid->blocks = data ? 2 : 0; return 0; } if (!data) return -ENODATA; memcpy(edid->edid, data + edid->start_block * 128, edid->blocks * 128); if (edid->start_block >= 2) return -EINVAL; if (edid->start_block + edid->blocks > 2) edid->blocks = 2 - edid->start_block; memcpy(edid->edid, data + edid->start_block * 128, edid->blocks * 128); return 0; } Loading @@ -2066,12 +2068,16 @@ static int adv7842_set_edid(struct v4l2_subdev *sd, struct v4l2_edid *e) struct adv7842_state *state = to_state(sd); int err = 0; memset(e->reserved, 0, sizeof(e->reserved)); if (e->pad > ADV7842_EDID_PORT_VGA) return -EINVAL; if (e->start_block != 0) return -EINVAL; if (e->blocks > 2) if (e->blocks > 2) { e->blocks = 2; return -E2BIG; } /* todo, per edid */ state->aspect_ratio = v4l2_calc_aspect_ratio(e->edid[0x15], Loading