aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index 7882387f9bff..5fc8ebdf40b2 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -330,6 +330,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
330 const char *pix_clk_in_name; 330 const char *pix_clk_in_name;
331 const struct of_device_id *id; 331 const struct of_device_id *id;
332 int ret; 332 int ret;
333 u8 div_ratio_shift = 0;
333 334
334 fsl_dev = devm_kzalloc(dev, sizeof(*fsl_dev), GFP_KERNEL); 335 fsl_dev = devm_kzalloc(dev, sizeof(*fsl_dev), GFP_KERNEL);
335 if (!fsl_dev) 336 if (!fsl_dev)
@@ -382,11 +383,14 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
382 pix_clk_in = fsl_dev->clk; 383 pix_clk_in = fsl_dev->clk;
383 } 384 }
384 385
386 if (of_property_read_bool(dev->of_node, "big-endian"))
387 div_ratio_shift = 24;
388
385 pix_clk_in_name = __clk_get_name(pix_clk_in); 389 pix_clk_in_name = __clk_get_name(pix_clk_in);
386 snprintf(pix_clk_name, sizeof(pix_clk_name), "%s_pix", pix_clk_in_name); 390 snprintf(pix_clk_name, sizeof(pix_clk_name), "%s_pix", pix_clk_in_name);
387 fsl_dev->pix_clk = clk_register_divider(dev, pix_clk_name, 391 fsl_dev->pix_clk = clk_register_divider(dev, pix_clk_name,
388 pix_clk_in_name, 0, base + DCU_DIV_RATIO, 392 pix_clk_in_name, 0, base + DCU_DIV_RATIO,
389 0, 8, CLK_DIVIDER_ROUND_CLOSEST, NULL); 393 div_ratio_shift, 8, CLK_DIVIDER_ROUND_CLOSEST, NULL);
390 if (IS_ERR(fsl_dev->pix_clk)) { 394 if (IS_ERR(fsl_dev->pix_clk)) {
391 dev_err(dev, "failed to register pix clk\n"); 395 dev_err(dev, "failed to register pix clk\n");
392 ret = PTR_ERR(fsl_dev->pix_clk); 396 ret = PTR_ERR(fsl_dev->pix_clk);