|
@@ -887,58 +887,37 @@ static const struct dss_features dra7xx_dss_feats = {
|
|
.num_ports = ARRAY_SIZE(dra7xx_ports),
|
|
.num_ports = ARRAY_SIZE(dra7xx_ports),
|
|
};
|
|
};
|
|
|
|
|
|
-static int dss_init_features(struct platform_device *pdev)
|
|
|
|
|
|
+static const struct dss_features *dss_get_features(void)
|
|
{
|
|
{
|
|
- const struct dss_features *src;
|
|
|
|
- struct dss_features *dst;
|
|
|
|
-
|
|
|
|
- dst = devm_kzalloc(&pdev->dev, sizeof(*dst), GFP_KERNEL);
|
|
|
|
- if (!dst) {
|
|
|
|
- dev_err(&pdev->dev, "Failed to allocate local DSS Features\n");
|
|
|
|
- return -ENOMEM;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
switch (omapdss_get_version()) {
|
|
switch (omapdss_get_version()) {
|
|
case OMAPDSS_VER_OMAP24xx:
|
|
case OMAPDSS_VER_OMAP24xx:
|
|
- src = &omap24xx_dss_feats;
|
|
|
|
- break;
|
|
|
|
|
|
+ return &omap24xx_dss_feats;
|
|
|
|
|
|
case OMAPDSS_VER_OMAP34xx_ES1:
|
|
case OMAPDSS_VER_OMAP34xx_ES1:
|
|
case OMAPDSS_VER_OMAP34xx_ES3:
|
|
case OMAPDSS_VER_OMAP34xx_ES3:
|
|
case OMAPDSS_VER_AM35xx:
|
|
case OMAPDSS_VER_AM35xx:
|
|
- src = &omap34xx_dss_feats;
|
|
|
|
- break;
|
|
|
|
|
|
+ return &omap34xx_dss_feats;
|
|
|
|
|
|
case OMAPDSS_VER_OMAP3630:
|
|
case OMAPDSS_VER_OMAP3630:
|
|
- src = &omap3630_dss_feats;
|
|
|
|
- break;
|
|
|
|
|
|
+ return &omap3630_dss_feats;
|
|
|
|
|
|
case OMAPDSS_VER_OMAP4430_ES1:
|
|
case OMAPDSS_VER_OMAP4430_ES1:
|
|
case OMAPDSS_VER_OMAP4430_ES2:
|
|
case OMAPDSS_VER_OMAP4430_ES2:
|
|
case OMAPDSS_VER_OMAP4:
|
|
case OMAPDSS_VER_OMAP4:
|
|
- src = &omap44xx_dss_feats;
|
|
|
|
- break;
|
|
|
|
|
|
+ return &omap44xx_dss_feats;
|
|
|
|
|
|
case OMAPDSS_VER_OMAP5:
|
|
case OMAPDSS_VER_OMAP5:
|
|
- src = &omap54xx_dss_feats;
|
|
|
|
- break;
|
|
|
|
|
|
+ return &omap54xx_dss_feats;
|
|
|
|
|
|
case OMAPDSS_VER_AM43xx:
|
|
case OMAPDSS_VER_AM43xx:
|
|
- src = &am43xx_dss_feats;
|
|
|
|
- break;
|
|
|
|
|
|
+ return &am43xx_dss_feats;
|
|
|
|
|
|
case OMAPDSS_VER_DRA7xx:
|
|
case OMAPDSS_VER_DRA7xx:
|
|
- src = &dra7xx_dss_feats;
|
|
|
|
- break;
|
|
|
|
|
|
+ return &dra7xx_dss_feats;
|
|
|
|
|
|
default:
|
|
default:
|
|
- return -ENODEV;
|
|
|
|
|
|
+ return NULL;
|
|
}
|
|
}
|
|
-
|
|
|
|
- memcpy(dst, src, sizeof(*dst));
|
|
|
|
- dss.feat = dst;
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
static void dss_uninit_ports(struct platform_device *pdev);
|
|
static void dss_uninit_ports(struct platform_device *pdev);
|
|
@@ -1104,9 +1083,9 @@ static int dss_bind(struct device *dev)
|
|
|
|
|
|
dss.pdev = pdev;
|
|
dss.pdev = pdev;
|
|
|
|
|
|
- r = dss_init_features(dss.pdev);
|
|
|
|
- if (r)
|
|
|
|
- return r;
|
|
|
|
|
|
+ dss.feat = dss_get_features();
|
|
|
|
+ if (!dss.feat)
|
|
|
|
+ return -ENODEV;
|
|
|
|
|
|
dss_mem = platform_get_resource(dss.pdev, IORESOURCE_MEM, 0);
|
|
dss_mem = platform_get_resource(dss.pdev, IORESOURCE_MEM, 0);
|
|
if (!dss_mem) {
|
|
if (!dss_mem) {
|