Gentle Reminder! On Mon, Sep 3, 2012 at 9:24 PM, Shirish S <shirish.s12 at gmail.com> wrote:
> Hello Dave, > > My patch-set for adding support for 4 block EDID is now reviewed and ready. > Please let me know if you want any further clarification > > Regards, > Shirish S > > > On Thu, Aug 30, 2012 at 12:04 AM, Shirish S <s.shirish at samsung.com> wrote: > >> The current logic for probing ddc is limited to >> 2 blocks (256 bytes), this patch adds support >> for the 4 block (512) data. >> >> To do this, a single 8-bit segment index is >> passed to the display via the I2C address 30h. >> Data from the selected segment is then immediately >> read via the regular DDC2 address using a repeated >> I2C 'START' signal. >> >> Signed-off-by: Shirish S <s.shirish at samsung.com> >> Reviewed-by: Jean Delvare <jdelvare at suse.de> >> Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch> >> Reviewed-by: Ville Syrjala <ville.syrjala at linux.intel.com> >> --- >> drivers/gpu/drm/drm_edid.c | 19 ++++++++++++++++--- >> 1 files changed, 16 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c >> index bcc4725..7f62de5 100644 >> --- a/drivers/gpu/drm/drm_edid.c >> +++ b/drivers/gpu/drm/drm_edid.c >> @@ -254,6 +254,8 @@ drm_do_probe_ddc_edid(struct i2c_adapter *adapter, >> unsigned char *buf, >> int block, int len) >> { >> unsigned char start = block * EDID_LENGTH; >> + unsigned char segment = block >> 1; >> + unsigned char xfers = segment ? 3 : 2; >> int ret, retries = 5; >> >> /* The core i2c driver will automatically retry the transfer if >> the >> @@ -265,6 +267,11 @@ drm_do_probe_ddc_edid(struct i2c_adapter *adapter, >> unsigned char *buf, >> do { >> struct i2c_msg msgs[] = { >> { >> + .addr = DDC_SEGMENT_ADDR, >> + .flags = 0, >> + .len = 1, >> + .buf = &segment, >> + }, { >> .addr = DDC_ADDR, >> .flags = 0, >> .len = 1, >> @@ -276,15 +283,21 @@ drm_do_probe_ddc_edid(struct i2c_adapter *adapter, >> unsigned char *buf, >> .buf = buf, >> } >> }; >> - ret = i2c_transfer(adapter, msgs, 2); >> + >> + /* >> + * Avoid sending the segment addr to not upset non-compliant ddc >> + * monitors. >> + */ >> + ret = i2c_transfer(adapter, &msgs[3 - xfers], xfers); >> + >> if (ret == -ENXIO) { >> DRM_DEBUG_KMS("drm: skipping non-existent adapter >> %s\n", >> adapter->name); >> break; >> } >> - } while (ret != 2 && --retries); >> + } while (ret != xfers && --retries); >> >> - return ret == 2 ? 0 : -1; >> + return ret == xfers ? 0 : -1; >> } >> >> static bool drm_edid_is_zero(u8 *in_edid, int length) >> -- >> 1.7.0.4 >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel at lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/dri-devel >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20120913/be95fcbd/attachment-0001.html>