forked from Minki/linux
Merge tag 'drm-misc-fixes-2017-06-07' of git://anongit.freedesktop.org/git/drm-misc into drm-fixes
Driver Changes: - kirin: Use correct dt port for the bridge (John) - meson: Fix regression caused by adding HDMI support to allow board configurations without HDMI (Neil) Cc: John Stultz <john.stultz@linaro.org> Cc: Neil Armstrong <narmstrong@baylibre.com> * tag 'drm-misc-fixes-2017-06-07' of git://anongit.freedesktop.org/git/drm-misc: drm/meson: Fix driver bind when only CVBS is available drm: kirin: Fix drm_of_find_panel_or_bridge conversion
This commit is contained in:
commit
b62dba5577
@ -760,7 +760,7 @@ static int dsi_parse_dt(struct platform_device *pdev, struct dw_dsi *dsi)
|
||||
* Get the endpoint node. In our case, dsi has one output port1
|
||||
* to which the external HDMI bridge is connected.
|
||||
*/
|
||||
ret = drm_of_find_panel_or_bridge(np, 0, 0, NULL, &dsi->bridge);
|
||||
ret = drm_of_find_panel_or_bridge(np, 1, 0, NULL, &dsi->bridge);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -152,7 +152,7 @@ static struct regmap_config meson_regmap_config = {
|
||||
.max_register = 0x1000,
|
||||
};
|
||||
|
||||
static int meson_drv_bind(struct device *dev)
|
||||
static int meson_drv_bind_master(struct device *dev, bool has_components)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct meson_drm *priv;
|
||||
@ -233,10 +233,12 @@ static int meson_drv_bind(struct device *dev)
|
||||
if (ret)
|
||||
goto free_drm;
|
||||
|
||||
ret = component_bind_all(drm->dev, drm);
|
||||
if (ret) {
|
||||
dev_err(drm->dev, "Couldn't bind all components\n");
|
||||
goto free_drm;
|
||||
if (has_components) {
|
||||
ret = component_bind_all(drm->dev, drm);
|
||||
if (ret) {
|
||||
dev_err(drm->dev, "Couldn't bind all components\n");
|
||||
goto free_drm;
|
||||
}
|
||||
}
|
||||
|
||||
ret = meson_plane_create(priv);
|
||||
@ -276,6 +278,11 @@ free_drm:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int meson_drv_bind(struct device *dev)
|
||||
{
|
||||
return meson_drv_bind_master(dev, true);
|
||||
}
|
||||
|
||||
static void meson_drv_unbind(struct device *dev)
|
||||
{
|
||||
struct drm_device *drm = dev_get_drvdata(dev);
|
||||
@ -357,6 +364,9 @@ static int meson_drv_probe(struct platform_device *pdev)
|
||||
count += meson_probe_remote(pdev, &match, np, remote);
|
||||
}
|
||||
|
||||
if (count && !match)
|
||||
return meson_drv_bind_master(&pdev->dev, false);
|
||||
|
||||
/* If some endpoints were found, initialize the nodes */
|
||||
if (count) {
|
||||
dev_info(&pdev->dev, "Queued %d outputs on vpu\n", count);
|
||||
|
Loading…
Reference in New Issue
Block a user