Commit d40325b4 authored by Stephane Viau's avatar Stephane Viau Committed by Rob Clark

drm/msm/mdp5: Avoid printing error messages for optional clocks

The current behavior is to try to get optional clocks and print a
dev_err message in case of failure. This looks rather confusing
and may increase with the amount of optional clocks.

We may need a cleaner way to handle per-device clocks but in the
meantime, let's reduce the amount of dev_err messages during the
probe.
Signed-off-by: default avatarStephane Viau <sviau@codeaurora.org>
Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
parent 5e921b19
...@@ -11,13 +11,14 @@ Required properties: ...@@ -11,13 +11,14 @@ Required properties:
- clock-names: the following clocks are required: - clock-names: the following clocks are required:
* "core_clk" * "core_clk"
* "iface_clk" * "iface_clk"
* "lut_clk"
* "src_clk" * "src_clk"
* "hdmi_clk" * "hdmi_clk"
* "mpd_clk" * "mpd_clk"
Optional properties: Optional properties:
- gpus: phandle for gpu device - gpus: phandle for gpu device
- clock-names: the following clocks are optional:
* "lut_clk"
Example: Example:
......
...@@ -452,15 +452,19 @@ static void read_hw_revision(struct mdp5_kms *mdp5_kms, ...@@ -452,15 +452,19 @@ static void read_hw_revision(struct mdp5_kms *mdp5_kms,
} }
static int get_clk(struct platform_device *pdev, struct clk **clkp, static int get_clk(struct platform_device *pdev, struct clk **clkp,
const char *name) const char *name, bool mandatory)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct clk *clk = devm_clk_get(dev, name); struct clk *clk = devm_clk_get(dev, name);
if (IS_ERR(clk)) { if (IS_ERR(clk) && mandatory) {
dev_err(dev, "failed to get %s (%ld)\n", name, PTR_ERR(clk)); dev_err(dev, "failed to get %s (%ld)\n", name, PTR_ERR(clk));
return PTR_ERR(clk); return PTR_ERR(clk);
} }
*clkp = clk; if (IS_ERR(clk))
DBG("skipping %s", name);
else
*clkp = clk;
return 0; return 0;
} }
...@@ -514,25 +518,26 @@ struct msm_kms *mdp5_kms_init(struct drm_device *dev) ...@@ -514,25 +518,26 @@ struct msm_kms *mdp5_kms_init(struct drm_device *dev)
goto fail; goto fail;
} }
ret = get_clk(pdev, &mdp5_kms->axi_clk, "bus_clk"); /* mandatory clocks: */
ret = get_clk(pdev, &mdp5_kms->axi_clk, "bus_clk", true);
if (ret) if (ret)
goto fail; goto fail;
ret = get_clk(pdev, &mdp5_kms->ahb_clk, "iface_clk"); ret = get_clk(pdev, &mdp5_kms->ahb_clk, "iface_clk", true);
if (ret) if (ret)
goto fail; goto fail;
ret = get_clk(pdev, &mdp5_kms->src_clk, "core_clk_src"); ret = get_clk(pdev, &mdp5_kms->src_clk, "core_clk_src", true);
if (ret) if (ret)
goto fail; goto fail;
ret = get_clk(pdev, &mdp5_kms->core_clk, "core_clk"); ret = get_clk(pdev, &mdp5_kms->core_clk, "core_clk", true);
if (ret) if (ret)
goto fail; goto fail;
ret = get_clk(pdev, &mdp5_kms->lut_clk, "lut_clk"); ret = get_clk(pdev, &mdp5_kms->vsync_clk, "vsync_clk", true);
if (ret)
DBG("failed to get (optional) lut_clk clock");
ret = get_clk(pdev, &mdp5_kms->vsync_clk, "vsync_clk");
if (ret) if (ret)
goto fail; goto fail;
/* optional clocks: */
get_clk(pdev, &mdp5_kms->lut_clk, "lut_clk", false);
/* we need to set a default rate before enabling. Set a safe /* we need to set a default rate before enabling. Set a safe
* rate first, then figure out hw revision, and then set a * rate first, then figure out hw revision, and then set a
* more optimal rate: * more optimal rate:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment