diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2018-02-28 17:30:30 +0200 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2018-09-03 16:13:26 +0300 |
commit | 7269fde4e8c96e67cd39f456cabf3329b06efffc (patch) | |
tree | 3dcfb29263b1e029fa586010bfad3df903c58e95 /drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c | |
parent | fb5571717c24c264518aaaf1ab4ec4df73e4cebd (diff) | |
download | linux-7269fde4e8c96e67cd39f456cabf3329b06efffc.tar.bz2 |
drm/omap: displays: Remove input omap_dss_device from panel data
All connectors, encoders and panels store a pointer to their input
omap_dss_device in the panel driver data structure. This duplicates the
src field in the omap_dss_device structure. Remove the private copy and
use the src field.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c')
-rw-r--r-- | drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c | 68 |
1 files changed, 28 insertions, 40 deletions
diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c b/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c index 218cf73d1455..4537867f833f 100644 --- a/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c +++ b/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c @@ -21,7 +21,6 @@ struct panel_drv_data { struct omap_dss_device dssdev; - struct omap_dss_device *in; void (*hpd_cb)(void *cb_data, enum drm_connector_status status); void *hpd_cb_data; bool hpd_enabled; @@ -40,18 +39,18 @@ static int tpd_connect(struct omap_dss_device *dssdev, struct omap_dss_device *dst) { struct panel_drv_data *ddata = to_panel_data(dssdev); - struct omap_dss_device *in; + struct omap_dss_device *src; int r; - in = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node); - if (IS_ERR(in)) { + src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node); + if (IS_ERR(src)) { dev_err(dssdev->dev, "failed to find video source\n"); - return PTR_ERR(in); + return PTR_ERR(src); } - r = omapdss_device_connect(in, dssdev); + r = omapdss_device_connect(src, dssdev); if (r) { - omap_dss_put_device(in); + omap_dss_put_device(src); return r; } @@ -61,7 +60,6 @@ static int tpd_connect(struct omap_dss_device *dssdev, /* DC-DC converter needs at max 300us to get to 90% of 5V */ udelay(300); - ddata->in = in; return 0; } @@ -69,29 +67,28 @@ static void tpd_disconnect(struct omap_dss_device *dssdev, struct omap_dss_device *dst) { struct panel_drv_data *ddata = to_panel_data(dssdev); - struct omap_dss_device *in = ddata->in; + struct omap_dss_device *src = dssdev->src; gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 0); gpiod_set_value_cansleep(ddata->ls_oe_gpio, 0); - omapdss_device_disconnect(in, &ddata->dssdev); + omapdss_device_disconnect(src, &ddata->dssdev); - omap_dss_put_device(in); - ddata->in = NULL; + omap_dss_put_device(src); } static int tpd_enable(struct omap_dss_device *dssdev) { struct panel_drv_data *ddata = to_panel_data(dssdev); - struct omap_dss_device *in = ddata->in; + struct omap_dss_device *src = dssdev->src; int r; if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) return 0; - in->ops->set_timings(in, &ddata->vm); + src->ops->set_timings(src, &ddata->vm); - r = in->ops->enable(in); + r = src->ops->enable(src); if (r) return r; @@ -102,13 +99,12 @@ static int tpd_enable(struct omap_dss_device *dssdev) static void tpd_disable(struct omap_dss_device *dssdev) { - struct panel_drv_data *ddata = to_panel_data(dssdev); - struct omap_dss_device *in = ddata->in; + struct omap_dss_device *src = dssdev->src; if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) return; - in->ops->disable(in); + src->ops->disable(src); dssdev->state = OMAP_DSS_DISPLAY_DISABLED; } @@ -117,45 +113,41 @@ static void tpd_set_timings(struct omap_dss_device *dssdev, struct videomode *vm) { struct panel_drv_data *ddata = to_panel_data(dssdev); - struct omap_dss_device *in = ddata->in; + struct omap_dss_device *src = dssdev->src; ddata->vm = *vm; - in->ops->set_timings(in, vm); + src->ops->set_timings(src, vm); } static int tpd_check_timings(struct omap_dss_device *dssdev, struct videomode *vm) { - struct panel_drv_data *ddata = to_panel_data(dssdev); - struct omap_dss_device *in = ddata->in; - int r; - - r = in->ops->check_timings(in, vm); + struct omap_dss_device *src = dssdev->src; - return r; + return src->ops->check_timings(src, vm); } static int tpd_read_edid(struct omap_dss_device *dssdev, u8 *edid, int len) { struct panel_drv_data *ddata = to_panel_data(dssdev); - struct omap_dss_device *in = ddata->in; + struct omap_dss_device *src = dssdev->src; if (!gpiod_get_value_cansleep(ddata->hpd_gpio)) return -ENODEV; - return in->ops->hdmi.read_edid(in, edid, len); + return src->ops->hdmi.read_edid(src, edid, len); } static bool tpd_detect(struct omap_dss_device *dssdev) { struct panel_drv_data *ddata = to_panel_data(dssdev); - struct omap_dss_device *in = ddata->in; + struct omap_dss_device *src = dssdev->src; bool connected = gpiod_get_value_cansleep(ddata->hpd_gpio); - if (!connected && in->ops->hdmi.lost_hotplug) - in->ops->hdmi.lost_hotplug(in); + if (!connected && src->ops->hdmi.lost_hotplug) + src->ops->hdmi.lost_hotplug(src); return connected; } @@ -205,19 +197,17 @@ static void tpd_disable_hpd(struct omap_dss_device *dssdev) static int tpd_set_infoframe(struct omap_dss_device *dssdev, const struct hdmi_avi_infoframe *avi) { - struct panel_drv_data *ddata = to_panel_data(dssdev); - struct omap_dss_device *in = ddata->in; + struct omap_dss_device *src = dssdev->src; - return in->ops->hdmi.set_infoframe(in, avi); + return src->ops->hdmi.set_infoframe(src, avi); } static int tpd_set_hdmi_mode(struct omap_dss_device *dssdev, bool hdmi_mode) { - struct panel_drv_data *ddata = to_panel_data(dssdev); - struct omap_dss_device *in = ddata->in; + struct omap_dss_device *src = dssdev->src; - return in->ops->hdmi.set_hdmi_mode(in, hdmi_mode); + return src->ops->hdmi.set_hdmi_mode(src, hdmi_mode); } static const struct omap_dss_device_ops tpd_ops = { @@ -262,7 +252,7 @@ static irqreturn_t tpd_hpd_isr(int irq, void *data) static int tpd_probe(struct platform_device *pdev) { - struct omap_dss_device *in, *dssdev; + struct omap_dss_device *dssdev; struct panel_drv_data *ddata; int r; struct gpio_desc *gpio; @@ -311,8 +301,6 @@ static int tpd_probe(struct platform_device *pdev) dssdev->owner = THIS_MODULE; dssdev->port_num = 1; - in = ddata->in; - r = omapdss_register_output(dssdev); if (r) { dev_err(&pdev->dev, "Failed to register output\n"); |