Skip to content

Commit dac76a0

Browse files
committed
drm/msm/dpu: fetch DPU configuration from match data
In email discussion it was noted that there can be different SoC device having slightly different SoC features, but sharing the same DPU hw revision. Stop fetching catalog data using core_rev and use platform's match data instead. Signed-off-by: Dmitry Baryshkov <[email protected]> Patchwork: https://patchwork.freedesktop.org/patch/530891/ Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Dmitry Baryshkov <[email protected]>
1 parent e5edf65 commit dac76a0

17 files changed

+46
-83
lines changed

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ static const struct dpu_perf_cfg msm8998_perf_data = {
176176
.bw_inefficiency_factor = 120,
177177
};
178178

179-
static const struct dpu_mdss_cfg msm8998_dpu_cfg = {
179+
const struct dpu_mdss_cfg dpu_msm8998_cfg = {
180180
.caps = &msm8998_dpu_caps,
181181
.ubwc = &msm8998_ubwc_cfg,
182182
.mdp_count = ARRAY_SIZE(msm8998_mdp),

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ static const struct dpu_perf_cfg sdm845_perf_data = {
174174
.bw_inefficiency_factor = 120,
175175
};
176176

177-
static const struct dpu_mdss_cfg sdm845_dpu_cfg = {
177+
const struct dpu_mdss_cfg dpu_sdm845_cfg = {
178178
.caps = &sdm845_dpu_caps,
179179
.ubwc = &sdm845_ubwc_cfg,
180180
.mdp_count = ARRAY_SIZE(sdm845_mdp),

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ static const struct dpu_perf_cfg sm8150_perf_data = {
197197
.bw_inefficiency_factor = 120,
198198
};
199199

200-
static const struct dpu_mdss_cfg sm8150_dpu_cfg = {
200+
const struct dpu_mdss_cfg dpu_sm8150_cfg = {
201201
.caps = &sm8150_dpu_caps,
202202
.ubwc = &sm8150_ubwc_cfg,
203203
.mdp_count = ARRAY_SIZE(sm8150_mdp),

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ static const struct dpu_perf_cfg sc8180x_perf_data = {
179179
.bw_inefficiency_factor = 120,
180180
};
181181

182-
static const struct dpu_mdss_cfg sc8180x_dpu_cfg = {
182+
const struct dpu_mdss_cfg dpu_sc8180x_cfg = {
183183
.caps = &sc8180x_dpu_caps,
184184
.ubwc = &sc8180x_ubwc_cfg,
185185
.mdp_count = ARRAY_SIZE(sc8180x_mdp),

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ static const struct dpu_perf_cfg sm8250_perf_data = {
203203
.bw_inefficiency_factor = 120,
204204
};
205205

206-
static const struct dpu_mdss_cfg sm8250_dpu_cfg = {
206+
const struct dpu_mdss_cfg dpu_sm8250_cfg = {
207207
.caps = &sm8250_dpu_caps,
208208
.ubwc = &sm8250_ubwc_cfg,
209209
.mdp_count = ARRAY_SIZE(sm8250_mdp),

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ static const struct dpu_perf_cfg sc7180_perf_data = {
122122
.bw_inefficiency_factor = 120,
123123
};
124124

125-
static const struct dpu_mdss_cfg sc7180_dpu_cfg = {
125+
const struct dpu_mdss_cfg dpu_sc7180_cfg = {
126126
.caps = &sc7180_dpu_caps,
127127
.ubwc = &sc7180_ubwc_cfg,
128128
.mdp_count = ARRAY_SIZE(sc7180_mdp),

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ static const struct dpu_perf_cfg sm6115_perf_data = {
9999
.bw_inefficiency_factor = 120,
100100
};
101101

102-
static const struct dpu_mdss_cfg sm6115_dpu_cfg = {
102+
const struct dpu_mdss_cfg dpu_sm6115_cfg = {
103103
.caps = &sm6115_dpu_caps,
104104
.ubwc = &sm6115_ubwc_cfg,
105105
.mdp_count = ARRAY_SIZE(sm6115_mdp),

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ static const struct dpu_perf_cfg qcm2290_perf_data = {
8989
.bw_inefficiency_factor = 120,
9090
};
9191

92-
static const struct dpu_mdss_cfg qcm2290_dpu_cfg = {
92+
const struct dpu_mdss_cfg dpu_qcm2290_cfg = {
9393
.caps = &qcm2290_dpu_caps,
9494
.ubwc = &qcm2290_ubwc_cfg,
9595
.mdp_count = ARRAY_SIZE(qcm2290_mdp),

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ static const struct dpu_perf_cfg sm8350_perf_data = {
190190
.bw_inefficiency_factor = 120,
191191
};
192192

193-
static const struct dpu_mdss_cfg sm8350_dpu_cfg = {
193+
const struct dpu_mdss_cfg dpu_sm8350_cfg = {
194194
.caps = &sm8350_dpu_caps,
195195
.ubwc = &sm8350_ubwc_cfg,
196196
.mdp_count = ARRAY_SIZE(sm8350_mdp),

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ static const struct dpu_perf_cfg sc7280_perf_data = {
127127
.bw_inefficiency_factor = 120,
128128
};
129129

130-
static const struct dpu_mdss_cfg sc7280_dpu_cfg = {
130+
const struct dpu_mdss_cfg dpu_sc7280_cfg = {
131131
.caps = &sc7280_dpu_caps,
132132
.ubwc = &sc7280_ubwc_cfg,
133133
.mdp_count = ARRAY_SIZE(sc7280_mdp),

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ static const struct dpu_perf_cfg sc8280xp_perf_data = {
181181
.bw_inefficiency_factor = 120,
182182
};
183183

184-
static const struct dpu_mdss_cfg sc8280xp_dpu_cfg = {
184+
const struct dpu_mdss_cfg dpu_sc8280xp_cfg = {
185185
.caps = &sc8280xp_dpu_caps,
186186
.ubwc = &sc8280xp_ubwc_cfg,
187187
.mdp_count = ARRAY_SIZE(sc8280xp_mdp),

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ static const struct dpu_perf_cfg sm8450_perf_data = {
198198
.bw_inefficiency_factor = 120,
199199
};
200200

201-
static const struct dpu_mdss_cfg sm8450_dpu_cfg = {
201+
const struct dpu_mdss_cfg dpu_sm8450_cfg = {
202202
.caps = &sm8450_dpu_caps,
203203
.ubwc = &sm8450_ubwc_cfg,
204204
.mdp_count = ARRAY_SIZE(sm8450_mdp),

drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ static const struct dpu_perf_cfg sm8550_perf_data = {
203203
.bw_inefficiency_factor = 120,
204204
};
205205

206-
static const struct dpu_mdss_cfg sm8550_dpu_cfg = {
206+
const struct dpu_mdss_cfg dpu_sm8550_cfg = {
207207
.caps = &sm8550_dpu_caps,
208208
.ubwc = &sm8550_ubwc_cfg,
209209
.mdp_count = ARRAY_SIZE(sm8550_mdp),

drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -803,37 +803,3 @@ static const struct dpu_qos_lut_entry sc7180_qos_nrt[] = {
803803
#include "catalog/dpu_8_1_sm8450.h"
804804

805805
#include "catalog/dpu_9_0_sm8550.h"
806-
807-
static const struct dpu_mdss_hw_cfg_handler cfg_handler[] = {
808-
{ .hw_rev = DPU_HW_VER_300, .dpu_cfg = &msm8998_dpu_cfg},
809-
{ .hw_rev = DPU_HW_VER_301, .dpu_cfg = &msm8998_dpu_cfg},
810-
{ .hw_rev = DPU_HW_VER_400, .dpu_cfg = &sdm845_dpu_cfg},
811-
{ .hw_rev = DPU_HW_VER_401, .dpu_cfg = &sdm845_dpu_cfg},
812-
{ .hw_rev = DPU_HW_VER_500, .dpu_cfg = &sm8150_dpu_cfg},
813-
{ .hw_rev = DPU_HW_VER_501, .dpu_cfg = &sm8150_dpu_cfg},
814-
{ .hw_rev = DPU_HW_VER_510, .dpu_cfg = &sc8180x_dpu_cfg},
815-
{ .hw_rev = DPU_HW_VER_600, .dpu_cfg = &sm8250_dpu_cfg},
816-
{ .hw_rev = DPU_HW_VER_620, .dpu_cfg = &sc7180_dpu_cfg},
817-
{ .hw_rev = DPU_HW_VER_630, .dpu_cfg = &sm6115_dpu_cfg},
818-
{ .hw_rev = DPU_HW_VER_650, .dpu_cfg = &qcm2290_dpu_cfg},
819-
{ .hw_rev = DPU_HW_VER_700, .dpu_cfg = &sm8350_dpu_cfg},
820-
{ .hw_rev = DPU_HW_VER_720, .dpu_cfg = &sc7280_dpu_cfg},
821-
{ .hw_rev = DPU_HW_VER_800, .dpu_cfg = &sc8280xp_dpu_cfg},
822-
{ .hw_rev = DPU_HW_VER_810, .dpu_cfg = &sm8450_dpu_cfg},
823-
{ .hw_rev = DPU_HW_VER_900, .dpu_cfg = &sm8550_dpu_cfg},
824-
};
825-
826-
const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev)
827-
{
828-
int i;
829-
830-
for (i = 0; i < ARRAY_SIZE(cfg_handler); i++) {
831-
if (cfg_handler[i].hw_rev == hw_rev)
832-
return cfg_handler[i].dpu_cfg;
833-
}
834-
835-
DPU_ERROR("unsupported chipset id:%X\n", hw_rev);
836-
837-
return ERR_PTR(-ENODEV);
838-
}
839-

drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -910,18 +910,18 @@ struct dpu_mdss_cfg {
910910
unsigned long mdss_irqs;
911911
};
912912

913-
struct dpu_mdss_hw_cfg_handler {
914-
u32 hw_rev;
915-
const struct dpu_mdss_cfg *dpu_cfg;
916-
};
917-
918-
/**
919-
* dpu_hw_catalog_init - dpu hardware catalog init API retrieves
920-
* hardcoded target specific catalog information in config structure
921-
* @hw_rev: caller needs provide the hardware revision.
922-
*
923-
* Return: dpu config structure
924-
*/
925-
const struct dpu_mdss_cfg *dpu_hw_catalog_init(u32 hw_rev);
913+
extern const struct dpu_mdss_cfg dpu_msm8998_cfg;
914+
extern const struct dpu_mdss_cfg dpu_sdm845_cfg;
915+
extern const struct dpu_mdss_cfg dpu_sm8150_cfg;
916+
extern const struct dpu_mdss_cfg dpu_sc8180x_cfg;
917+
extern const struct dpu_mdss_cfg dpu_sm8250_cfg;
918+
extern const struct dpu_mdss_cfg dpu_sc7180_cfg;
919+
extern const struct dpu_mdss_cfg dpu_sm6115_cfg;
920+
extern const struct dpu_mdss_cfg dpu_qcm2290_cfg;
921+
extern const struct dpu_mdss_cfg dpu_sm8350_cfg;
922+
extern const struct dpu_mdss_cfg dpu_sc7280_cfg;
923+
extern const struct dpu_mdss_cfg dpu_sc8280xp_cfg;
924+
extern const struct dpu_mdss_cfg dpu_sm8450_cfg;
925+
extern const struct dpu_mdss_cfg dpu_sm8550_cfg;
926926

927927
#endif /* _DPU_HW_CATALOG_H */

drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
995995
struct dpu_kms *dpu_kms;
996996
struct drm_device *dev;
997997
int i, rc = -EINVAL;
998+
u32 core_rev;
998999

9991000
if (!kms) {
10001001
DPU_ERROR("invalid kms\n");
@@ -1044,17 +1045,14 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
10441045
if (rc < 0)
10451046
goto error;
10461047

1047-
dpu_kms->core_rev = readl_relaxed(dpu_kms->mmio + 0x0);
1048+
core_rev = readl_relaxed(dpu_kms->mmio + 0x0);
10481049

1049-
pr_info("dpu hardware revision:0x%x\n", dpu_kms->core_rev);
1050+
pr_info("dpu hardware revision:0x%x\n", core_rev);
10501051

1051-
dpu_kms->catalog = dpu_hw_catalog_init(dpu_kms->core_rev);
1052-
if (IS_ERR_OR_NULL(dpu_kms->catalog)) {
1053-
rc = PTR_ERR(dpu_kms->catalog);
1054-
if (!dpu_kms->catalog)
1055-
rc = -EINVAL;
1056-
DPU_ERROR("catalog init failed: %d\n", rc);
1057-
dpu_kms->catalog = NULL;
1052+
dpu_kms->catalog = of_device_get_match_data(dev->dev);
1053+
if (!dpu_kms->catalog) {
1054+
DPU_ERROR("device config not known!\n");
1055+
rc = -EINVAL;
10581056
goto power_error;
10591057
}
10601058

@@ -1280,19 +1278,19 @@ static const struct dev_pm_ops dpu_pm_ops = {
12801278
};
12811279

12821280
static const struct of_device_id dpu_dt_match[] = {
1283-
{ .compatible = "qcom,msm8998-dpu", },
1284-
{ .compatible = "qcom,qcm2290-dpu", },
1285-
{ .compatible = "qcom,sdm845-dpu", },
1286-
{ .compatible = "qcom,sc7180-dpu", },
1287-
{ .compatible = "qcom,sc7280-dpu", },
1288-
{ .compatible = "qcom,sc8180x-dpu", },
1289-
{ .compatible = "qcom,sc8280xp-dpu", },
1290-
{ .compatible = "qcom,sm6115-dpu", },
1291-
{ .compatible = "qcom,sm8150-dpu", },
1292-
{ .compatible = "qcom,sm8250-dpu", },
1293-
{ .compatible = "qcom,sm8350-dpu", },
1294-
{ .compatible = "qcom,sm8450-dpu", },
1295-
{ .compatible = "qcom,sm8550-dpu", },
1281+
{ .compatible = "qcom,msm8998-dpu", .data = &dpu_msm8998_cfg, },
1282+
{ .compatible = "qcom,qcm2290-dpu", .data = &dpu_qcm2290_cfg, },
1283+
{ .compatible = "qcom,sdm845-dpu", .data = &dpu_sdm845_cfg, },
1284+
{ .compatible = "qcom,sc7180-dpu", .data = &dpu_sc7180_cfg, },
1285+
{ .compatible = "qcom,sc7280-dpu", .data = &dpu_sc7280_cfg, },
1286+
{ .compatible = "qcom,sc8180x-dpu", .data = &dpu_sc8180x_cfg, },
1287+
{ .compatible = "qcom,sc8280xp-dpu", .data = &dpu_sc8280xp_cfg, },
1288+
{ .compatible = "qcom,sm6115-dpu", .data = &dpu_sm6115_cfg, },
1289+
{ .compatible = "qcom,sm8150-dpu", .data = &dpu_sm8150_cfg, },
1290+
{ .compatible = "qcom,sm8250-dpu", .data = &dpu_sm8250_cfg, },
1291+
{ .compatible = "qcom,sm8350-dpu", .data = &dpu_sm8350_cfg, },
1292+
{ .compatible = "qcom,sm8450-dpu", .data = &dpu_sm8450_cfg, },
1293+
{ .compatible = "qcom,sm8550-dpu", .data = &dpu_sm8550_cfg, },
12961294
{}
12971295
};
12981296
MODULE_DEVICE_TABLE(of, dpu_dt_match);

drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@
6868
struct dpu_kms {
6969
struct msm_kms base;
7070
struct drm_device *dev;
71-
int core_rev;
7271
const struct dpu_mdss_cfg *catalog;
7372

7473
/* io/register spaces: */

0 commit comments

Comments
 (0)