Message ID | 1439567398-13611-1-git-send-email-srinivas.kandagatla@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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. 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
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 >
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(+)