Message ID | 1439567398-13611-1-git-send-email-srinivas.kandagatla@linaro.org |
---|---|
State | New |
Headers | show |
On 17/08/15 08:52, Jani Nikula wrote: > On Fri, 14 Aug 2015, Srinivas Kandagatla <srinivas.kandagatla@linaro.org> wrote: >> This patch adds support to get edid way early before the connector is >> created, this is mainly used for panel drivers to auto-probe the panel >> based on the vendor and product id from EDID. >> >> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> >> --- >> drivers/gpu/drm/drm_edid.c | 8 ++++++++ >> include/drm/drm_crtc.h | 1 + >> 2 files changed, 9 insertions(+) >> >> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c >> index 7087da3..30359cd 100644 >> --- a/drivers/gpu/drm/drm_edid.c >> +++ b/drivers/gpu/drm/drm_edid.c >> @@ -1388,6 +1388,14 @@ struct edid *drm_get_edid(struct drm_connector *connector, >> } >> EXPORT_SYMBOL(drm_get_edid); >> >> +struct edid *drm_get_edid_early(struct i2c_adapter *adapter) >> +{ >> + struct drm_connector dummy_connector; >> + >> + return drm_get_edid(&dummy_connector, adapter); > > This will oops the kernel on bad EDID. > Thanks for quick review, Yes, you are right it would blow up on dev_warn(connector->dev->dev, ... May we can fix this if we are happy to take this approach of getting edid early. --srini > BR, > Jani. > > >> +} >> +EXPORT_SYMBOL(drm_get_edid_early); >> + >> /** >> * drm_edid_duplicate - duplicate an EDID and the extensions >> * @edid: EDID to duplicate >> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h >> index 57ca8cc..35d8763 100644 >> --- a/include/drm/drm_crtc.h >> +++ b/include/drm/drm_crtc.h >> @@ -1330,6 +1330,7 @@ extern void drm_reinit_primary_mode_group(struct drm_device *dev); >> extern bool drm_probe_ddc(struct i2c_adapter *adapter); >> extern struct edid *drm_get_edid(struct drm_connector *connector, >> struct i2c_adapter *adapter); >> +extern struct edid *drm_get_edid_early(struct i2c_adapter *adapter); >> extern struct edid *drm_edid_duplicate(const struct edid *edid); >> extern int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid); >> extern void drm_mode_config_init(struct drm_device *dev); >> -- >> 1.9.1 >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/dri-devel > -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 7087da3..30359cd 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -1388,6 +1388,14 @@ struct edid *drm_get_edid(struct drm_connector *connector, } EXPORT_SYMBOL(drm_get_edid); +struct edid *drm_get_edid_early(struct i2c_adapter *adapter) +{ + struct drm_connector dummy_connector; + + return drm_get_edid(&dummy_connector, adapter); +} +EXPORT_SYMBOL(drm_get_edid_early); + /** * drm_edid_duplicate - duplicate an EDID and the extensions * @edid: EDID to duplicate diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index 57ca8cc..35d8763 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -1330,6 +1330,7 @@ extern void drm_reinit_primary_mode_group(struct drm_device *dev); extern bool drm_probe_ddc(struct i2c_adapter *adapter); extern struct edid *drm_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter); +extern struct edid *drm_get_edid_early(struct i2c_adapter *adapter); extern struct edid *drm_edid_duplicate(const struct edid *edid); extern int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid); extern void drm_mode_config_init(struct drm_device *dev);
This patch adds support to get edid way early before the connector is created, this is mainly used for panel drivers to auto-probe the panel based on the vendor and product id from EDID. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> --- drivers/gpu/drm/drm_edid.c | 8 ++++++++ include/drm/drm_crtc.h | 1 + 2 files changed, 9 insertions(+)