mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
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:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user