diff --git a/drivers/gpu/drm/msm/dsi/dsi.h b/drivers/gpu/drm/msm/dsi/dsi.h index df46cdda1b433e114eb03a16ec4056d7b0e08311..56996ac9e58a6d739f8ef69e2d1988571c6a8698 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.h +++ b/drivers/gpu/drm/msm/dsi/dsi.h @@ -37,7 +37,6 @@ enum msm_dsi_phy_usecase { struct dsi_reg_entry { char name[32]; int enable_load; - int disable_load; }; struct dsi_reg_config { diff --git a/drivers/gpu/drm/msm/dsi/dsi_cfg.c b/drivers/gpu/drm/msm/dsi/dsi_cfg.c index 72c018e26f47fb1a7271dde90ea26c59643aa67a..901d6fd53800162f97c0c4aada48acfc92667e0f 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_cfg.c +++ b/drivers/gpu/drm/msm/dsi/dsi_cfg.c @@ -14,9 +14,9 @@ static const struct msm_dsi_config apq8064_dsi_cfg = { .reg_cfg = { .num = 3, .regs = { - {"vdda", 100000, 100}, /* 1.2 V */ - {"avdd", 10000, 100}, /* 3.0 V */ - {"vddio", 100000, 100}, /* 1.8 V */ + {"vdda", 100000}, /* 1.2 V */ + {"avdd", 10000}, /* 3.0 V */ + {"vddio", 100000}, /* 1.8 V */ }, }, .bus_clk_names = dsi_v2_bus_clk_names, @@ -34,9 +34,9 @@ static const struct msm_dsi_config msm8974_apq8084_dsi_cfg = { .reg_cfg = { .num = 3, .regs = { - {"vdd", 150000, 100}, /* 3.0 V */ - {"vdda", 100000, 100}, /* 1.2 V */ - {"vddio", 100000, 100}, /* 1.8 V */ + {"vdd", 150000}, /* 3.0 V */ + {"vdda", 100000}, /* 1.2 V */ + {"vddio", 100000}, /* 1.8 V */ }, }, .bus_clk_names = dsi_6g_bus_clk_names, @@ -54,8 +54,8 @@ static const struct msm_dsi_config msm8916_dsi_cfg = { .reg_cfg = { .num = 2, .regs = { - {"vdda", 100000, 100}, /* 1.2 V */ - {"vddio", 100000, 100}, /* 1.8 V */ + {"vdda", 100000}, /* 1.2 V */ + {"vddio", 100000}, /* 1.8 V */ }, }, .bus_clk_names = dsi_8916_bus_clk_names, @@ -73,8 +73,8 @@ static const struct msm_dsi_config msm8976_dsi_cfg = { .reg_cfg = { .num = 2, .regs = { - {"vdda", 100000, 100}, /* 1.2 V */ - {"vddio", 100000, 100}, /* 1.8 V */ + {"vdda", 100000}, /* 1.2 V */ + {"vddio", 100000}, /* 1.8 V */ }, }, .bus_clk_names = dsi_8976_bus_clk_names, @@ -88,12 +88,12 @@ static const struct msm_dsi_config msm8994_dsi_cfg = { .reg_cfg = { .num = 6, .regs = { - {"vdda", 100000, 100}, /* 1.25 V */ - {"vddio", 100000, 100}, /* 1.8 V */ - {"vcca", 10000, 100}, /* 1.0 V */ - {"vdd", 100000, 100}, /* 1.8 V */ - {"lab_reg", -1, -1}, - {"ibb_reg", -1, -1}, + {"vdda", 100000}, /* 1.25 V */ + {"vddio", 100000}, /* 1.8 V */ + {"vcca", 10000}, /* 1.0 V */ + {"vdd", 100000}, /* 1.8 V */ + {"lab_reg", -1}, + {"ibb_reg", -1}, }, }, .bus_clk_names = dsi_6g_bus_clk_names, @@ -111,9 +111,9 @@ static const struct msm_dsi_config msm8996_dsi_cfg = { .reg_cfg = { .num = 3, .regs = { - {"vdda", 18160, 1 }, /* 1.25 V */ - {"vcca", 17000, 32 }, /* 0.925 V */ - {"vddio", 100000, 100 },/* 1.8 V */ + {"vdda", 18160}, /* 1.25 V */ + {"vcca", 17000}, /* 0.925 V */ + {"vddio", 100000},/* 1.8 V */ }, }, .bus_clk_names = dsi_8996_bus_clk_names, @@ -131,8 +131,8 @@ static const struct msm_dsi_config msm8998_dsi_cfg = { .reg_cfg = { .num = 2, .regs = { - {"vdd", 367000, 16 }, /* 0.9 V */ - {"vdda", 62800, 2 }, /* 1.2 V */ + {"vdd", 367000}, /* 0.9 V */ + {"vdda", 62800}, /* 1.2 V */ }, }, .bus_clk_names = dsi_msm8998_bus_clk_names, @@ -150,7 +150,7 @@ static const struct msm_dsi_config sdm660_dsi_cfg = { .reg_cfg = { .num = 1, .regs = { - {"vdda", 12560, 4 }, /* 1.2 V */ + {"vdda", 12560}, /* 1.2 V */ }, }, .bus_clk_names = dsi_sdm660_bus_clk_names, @@ -172,7 +172,7 @@ static const struct msm_dsi_config sdm845_dsi_cfg = { .reg_cfg = { .num = 1, .regs = { - {"vdda", 21800, 4 }, /* 1.2 V */ + {"vdda", 21800}, /* 1.2 V */ }, }, .bus_clk_names = dsi_sdm845_bus_clk_names, @@ -186,7 +186,7 @@ static const struct msm_dsi_config sc7180_dsi_cfg = { .reg_cfg = { .num = 1, .regs = { - {"vdda", 21800, 4 }, /* 1.2 V */ + {"vdda", 21800}, /* 1.2 V */ }, }, .bus_clk_names = dsi_sc7180_bus_clk_names, @@ -204,7 +204,7 @@ static const struct msm_dsi_config sc7280_dsi_cfg = { .reg_cfg = { .num = 1, .regs = { - {"vdda", 8350, 0 }, /* 1.2 V */ + {"vdda", 8350}, /* 1.2 V */ }, }, .bus_clk_names = dsi_sc7280_bus_clk_names, @@ -222,7 +222,7 @@ static const struct msm_dsi_config qcm2290_dsi_cfg = { .reg_cfg = { .num = 1, .regs = { - {"vdda", 21800, 4 }, /* 1.2 V */ + {"vdda", 21800}, /* 1.2 V */ }, }, .bus_clk_names = dsi_qcm2290_bus_clk_names, diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index 15e108be190125c4bb5c1b9ab97f4bac0b291259..99e21d38c7da3c151011805abfc71f15fa2d3c6b 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -205,9 +205,6 @@ static inline void dsi_write(struct msm_dsi_host *msm_host, u32 reg, u32 data) msm_writel(data, msm_host->ctrl_base + reg); } -static int dsi_host_regulator_enable(struct msm_dsi_host *msm_host); -static void dsi_host_regulator_disable(struct msm_dsi_host *msm_host); - static const struct msm_dsi_cfg_handler *dsi_get_config( struct msm_dsi_host *msm_host) { @@ -258,56 +255,6 @@ static inline struct msm_dsi_host *to_msm_dsi_host(struct mipi_dsi_host *host) return container_of(host, struct msm_dsi_host, base); } -static void dsi_host_regulator_disable(struct msm_dsi_host *msm_host) -{ - struct regulator_bulk_data *s = msm_host->supplies; - const struct dsi_reg_entry *regs = msm_host->cfg_hnd->cfg->reg_cfg.regs; - int num = msm_host->cfg_hnd->cfg->reg_cfg.num; - int i; - - DBG(""); - for (i = num - 1; i >= 0; i--) - if (regs[i].disable_load >= 0) - regulator_set_load(s[i].consumer, - regs[i].disable_load); - - regulator_bulk_disable(num, s); -} - -static int dsi_host_regulator_enable(struct msm_dsi_host *msm_host) -{ - struct regulator_bulk_data *s = msm_host->supplies; - const struct dsi_reg_entry *regs = msm_host->cfg_hnd->cfg->reg_cfg.regs; - int num = msm_host->cfg_hnd->cfg->reg_cfg.num; - int ret, i; - - DBG(""); - for (i = 0; i < num; i++) { - if (regs[i].enable_load >= 0) { - ret = regulator_set_load(s[i].consumer, - regs[i].enable_load); - if (ret < 0) { - pr_err("regulator %d set op mode failed, %d\n", - i, ret); - goto fail; - } - } - } - - ret = regulator_bulk_enable(num, s); - if (ret < 0) { - pr_err("regulator enable failed, %d\n", ret); - goto fail; - } - - return 0; - -fail: - for (i--; i >= 0; i--) - regulator_set_load(s[i].consumer, regs[i].disable_load); - return ret; -} - static int dsi_regulator_init(struct msm_dsi_host *msm_host) { struct regulator_bulk_data *s = msm_host->supplies; @@ -325,6 +272,15 @@ static int dsi_regulator_init(struct msm_dsi_host *msm_host) return ret; } + for (i = 0; i < num; i++) { + if (regs[i].enable_load >= 0) { + ret = regulator_set_load(s[i].consumer, + regs[i].enable_load); + if (ret < 0) + return ret; + } + } + return 0; } @@ -2547,7 +2503,8 @@ int msm_dsi_host_power_on(struct mipi_dsi_host *host, msm_dsi_sfpb_config(msm_host, true); - ret = dsi_host_regulator_enable(msm_host); + ret = regulator_bulk_enable(msm_host->cfg_hnd->cfg->reg_cfg.num, + msm_host->supplies); if (ret) { pr_err("%s:Failed to enable vregs.ret=%d\n", __func__, ret); @@ -2587,7 +2544,8 @@ int msm_dsi_host_power_on(struct mipi_dsi_host *host, cfg_hnd->ops->link_clk_disable(msm_host); pm_runtime_put(&msm_host->pdev->dev); fail_disable_reg: - dsi_host_regulator_disable(msm_host); + regulator_bulk_disable(msm_host->cfg_hnd->cfg->reg_cfg.num, + msm_host->supplies); unlock_ret: mutex_unlock(&msm_host->dev_mutex); return ret; @@ -2614,7 +2572,8 @@ int msm_dsi_host_power_off(struct mipi_dsi_host *host) cfg_hnd->ops->link_clk_disable(msm_host); pm_runtime_put(&msm_host->pdev->dev); - dsi_host_regulator_disable(msm_host); + regulator_bulk_disable(msm_host->cfg_hnd->cfg->reg_cfg.num, + msm_host->supplies); msm_dsi_sfpb_config(msm_host, false); diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c index 56dfa2d24be1fb128676b4facb9e5644e89635c3..c341d6ab5d9e5603e4e66ff580318d01d5afaff7 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c @@ -529,58 +529,16 @@ static int dsi_phy_regulator_init(struct msm_dsi_phy *phy) return ret; } - return 0; -} - -static void dsi_phy_regulator_disable(struct msm_dsi_phy *phy) -{ - struct regulator_bulk_data *s = phy->supplies; - const struct dsi_reg_entry *regs = phy->cfg->reg_cfg.regs; - int num = phy->cfg->reg_cfg.num; - int i; - - DBG(""); - for (i = num - 1; i >= 0; i--) - if (regs[i].disable_load >= 0) - regulator_set_load(s[i].consumer, regs[i].disable_load); - - regulator_bulk_disable(num, s); -} - -static int dsi_phy_regulator_enable(struct msm_dsi_phy *phy) -{ - struct regulator_bulk_data *s = phy->supplies; - const struct dsi_reg_entry *regs = phy->cfg->reg_cfg.regs; - struct device *dev = &phy->pdev->dev; - int num = phy->cfg->reg_cfg.num; - int ret, i; - - DBG(""); for (i = 0; i < num; i++) { if (regs[i].enable_load >= 0) { ret = regulator_set_load(s[i].consumer, regs[i].enable_load); - if (ret < 0) { - DRM_DEV_ERROR(dev, - "regulator %d set op mode failed, %d\n", - i, ret); - goto fail; - } + if (ret < 0) + return ret; } } - ret = regulator_bulk_enable(num, s); - if (ret < 0) { - DRM_DEV_ERROR(dev, "regulator enable failed, %d\n", ret); - goto fail; - } - return 0; - -fail: - for (i--; i >= 0; i--) - regulator_set_load(s[i].consumer, regs[i].disable_load); - return ret; } static int dsi_phy_enable_resource(struct msm_dsi_phy *phy) @@ -829,7 +787,7 @@ int msm_dsi_phy_enable(struct msm_dsi_phy *phy, goto res_en_fail; } - ret = dsi_phy_regulator_enable(phy); + ret = regulator_bulk_enable(phy->cfg->reg_cfg.num, phy->supplies); if (ret) { DRM_DEV_ERROR(dev, "%s: regulator enable failed, %d\n", __func__, ret); @@ -866,7 +824,7 @@ int msm_dsi_phy_enable(struct msm_dsi_phy *phy, if (phy->cfg->ops.disable) phy->cfg->ops.disable(phy); phy_en_fail: - dsi_phy_regulator_disable(phy); + regulator_bulk_disable(phy->cfg->reg_cfg.num, phy->supplies); reg_en_fail: dsi_phy_disable_resource(phy); res_en_fail: @@ -880,7 +838,7 @@ void msm_dsi_phy_disable(struct msm_dsi_phy *phy) phy->cfg->ops.disable(phy); - dsi_phy_regulator_disable(phy); + regulator_bulk_disable(phy->cfg->reg_cfg.num, phy->supplies); dsi_phy_disable_resource(phy); } diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_10nm.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_10nm.c index ae57f95edf63586d381de94c53675fc7ca3c9b64..d1a943e2c66af39820e0e40a53b598b2a35b22f0 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_10nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_10nm.c @@ -1024,7 +1024,7 @@ const struct msm_dsi_phy_cfg dsi_phy_10nm_cfgs = { .reg_cfg = { .num = 1, .regs = { - {"vdds", 36000, 32}, + {"vdds", 36000}, }, }, .ops = { @@ -1046,7 +1046,7 @@ const struct msm_dsi_phy_cfg dsi_phy_10nm_8998_cfgs = { .reg_cfg = { .num = 1, .regs = { - {"vdds", 36000, 32}, + {"vdds", 36000}, }, }, .ops = { diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_14nm.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_14nm.c index 1a855351654cd6c38e92cc1f3444d5ce6b042f5d..7ca30d9b54f5d86c171b00081dfea84835908c40 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_14nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_14nm.c @@ -1028,7 +1028,7 @@ const struct msm_dsi_phy_cfg dsi_phy_14nm_cfgs = { .reg_cfg = { .num = 1, .regs = { - {"vcca", 17000, 32}, + {"vcca", 17000}, }, }, .ops = { @@ -1049,7 +1049,7 @@ const struct msm_dsi_phy_cfg dsi_phy_14nm_660_cfgs = { .reg_cfg = { .num = 1, .regs = { - {"vcca", 73400, 32}, + {"vcca", 73400}, }, }, .ops = { @@ -1070,7 +1070,7 @@ const struct msm_dsi_phy_cfg dsi_phy_14nm_8953_cfgs = { .reg_cfg = { .num = 1, .regs = { - {"vcca", 17000, 32}, + {"vcca", 17000}, }, }, .ops = { diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_20nm.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_20nm.c index ee7c418a1c2943317dbdb02c3bdc8123722edd4e..b7c621d94981db1f5ae327fb932bba4803878a5e 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_20nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_20nm.c @@ -134,8 +134,8 @@ const struct msm_dsi_phy_cfg dsi_phy_20nm_cfgs = { .reg_cfg = { .num = 2, .regs = { - {"vddio", 100000, 100}, /* 1.8 V */ - {"vcca", 10000, 100}, /* 1.0 V */ + {"vddio", 100000}, /* 1.8 V */ + {"vcca", 10000}, /* 1.0 V */ }, }, .ops = { diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm.c index 04411fefb80884b2b2fcfa55cb25ed0b31cbb4fa..8535659520f982da2095f1bfd280be2e86658238 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm.c @@ -769,7 +769,7 @@ const struct msm_dsi_phy_cfg dsi_phy_28nm_hpm_cfgs = { .reg_cfg = { .num = 1, .regs = { - {"vddio", 100000, 100}, + {"vddio", 100000}, }, }, .ops = { @@ -790,7 +790,7 @@ const struct msm_dsi_phy_cfg dsi_phy_28nm_hpm_famb_cfgs = { .reg_cfg = { .num = 1, .regs = { - {"vddio", 100000, 100}, + {"vddio", 100000}, }, }, .ops = { @@ -811,7 +811,7 @@ const struct msm_dsi_phy_cfg dsi_phy_28nm_lp_cfgs = { .reg_cfg = { .num = 1, .regs = { - {"vddio", 100000, 100}, /* 1.8 V */ + {"vddio", 100000}, /* 1.8 V */ }, }, .ops = { diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm_8960.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm_8960.c index 69c1b2d8333cfee774993b51c266a02fd59860a1..e96f5adca27550efb44568d1ef39c293f017262c 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm_8960.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm_8960.c @@ -643,7 +643,7 @@ const struct msm_dsi_phy_cfg dsi_phy_28nm_8960_cfgs = { .reg_cfg = { .num = 1, .regs = { - {"vddio", 100000, 100}, /* 1.8 V */ + {"vddio", 100000}, /* 1.8 V */ }, }, .ops = { diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c index c1710a8824e7fd8c5fa5aa4aa5106af1a13e9595..7897c9ddb0bb60713e927612620199daf61305db 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c @@ -1037,7 +1037,7 @@ const struct msm_dsi_phy_cfg dsi_phy_7nm_cfgs = { .reg_cfg = { .num = 1, .regs = { - {"vdds", 36000, 32}, + {"vdds", 36000}, }, }, .ops = { @@ -1064,7 +1064,7 @@ const struct msm_dsi_phy_cfg dsi_phy_7nm_8150_cfgs = { .reg_cfg = { .num = 1, .regs = { - {"vdds", 36000, 32}, + {"vdds", 36000}, }, }, .ops = { @@ -1086,7 +1086,7 @@ const struct msm_dsi_phy_cfg dsi_phy_7nm_7280_cfgs = { .reg_cfg = { .num = 1, .regs = { - {"vdds", 37550, 0}, + {"vdds", 37550}, }, }, .ops = {