drm/rockchip: rk618: Don't use dev_get_regmap()

All child devices share the same one i2c_client, so the
device resource (regmap) for the parent device may be changed
when the child device initializes its own register map. So the regmap
we get from dev_get_regmap() may not be what we want.

Change-Id: I6b2d2d676f0406e8e78f79a308138401d6fe3b63
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
This commit is contained in:
Wyon Bi
2020-03-25 17:36:49 +08:00
committed by Tao Huang
parent d1ae948ab3
commit dbc4f10f1b
4 changed files with 6 additions and 16 deletions

View File

@@ -241,6 +241,7 @@ static int rk618_lvds_probe(struct platform_device *pdev)
lvds->dev = dev;
lvds->parent = rk618;
lvds->regmap = rk618->regmap;
platform_set_drvdata(pdev, lvds);
ret = rk618_lvds_parse_dt(lvds);
@@ -249,10 +250,6 @@ static int rk618_lvds_probe(struct platform_device *pdev)
return ret;
}
lvds->regmap = dev_get_regmap(dev->parent, NULL);
if (!lvds->regmap)
return -ENODEV;
endpoint = of_graph_get_endpoint_by_regs(dev->of_node, 1, -1);
if (endpoint) {
struct device_node *remote;

View File

@@ -227,12 +227,9 @@ static int rk618_rgb_probe(struct platform_device *pdev)
rgb->dev = dev;
rgb->parent = rk618;
rgb->regmap = rk618->regmap;
platform_set_drvdata(pdev, rgb);
rgb->regmap = dev_get_regmap(dev->parent, NULL);
if (!rgb->regmap)
return -ENODEV;
rgb->clock = devm_clk_get(dev, "rgb");
if (IS_ERR(rgb->clock)) {
ret = PTR_ERR(rgb->clock);

View File

@@ -350,6 +350,7 @@ static const struct drm_bridge_funcs rk618_scaler_bridge_funcs = {
static int rk618_scaler_probe(struct platform_device *pdev)
{
struct rk618 *rk618 = dev_get_drvdata(pdev->dev.parent);
struct device *dev = &pdev->dev;
struct rk618_scaler *scl;
int ret;
@@ -362,12 +363,9 @@ static int rk618_scaler_probe(struct platform_device *pdev)
return -ENOMEM;
scl->dev = dev;
scl->regmap = rk618->regmap;
platform_set_drvdata(pdev, scl);
scl->regmap = dev_get_regmap(dev->parent, NULL);
if (!scl->regmap)
return -ENODEV;
scl->vif_clk = devm_clk_get(dev, "vif");
if (IS_ERR(scl->vif_clk)) {
ret = PTR_ERR(scl->vif_clk);

View File

@@ -193,6 +193,7 @@ static const struct drm_bridge_funcs rk618_vif_bridge_funcs = {
static int rk618_vif_probe(struct platform_device *pdev)
{
struct rk618 *rk618 = dev_get_drvdata(pdev->dev.parent);
struct device *dev = &pdev->dev;
struct rk618_vif *vif;
int ret;
@@ -205,12 +206,9 @@ static int rk618_vif_probe(struct platform_device *pdev)
return -ENOMEM;
vif->dev = dev;
vif->regmap = rk618->regmap;
platform_set_drvdata(pdev, vif);
vif->regmap = dev_get_regmap(dev->parent, NULL);
if (!vif->regmap)
return -ENODEV;
vif->vif_clk = devm_clk_get(dev, "vif");
if (IS_ERR(vif->vif_clk)) {
ret = PTR_ERR(vif->vif_clk);