On 2021-07-21 19:42, Bjorn Andersson wrote:
In order to deal with multiple memory ranges in the following commit change the ioremap wrapper to not poke directly into the dss_io_data struct.
Signed-off-by: Bjorn Andersson bjorn.andersson@linaro.org
I think we can squash this one and the next patch into one. Because the APIs and structs you are modifying here are again getting touched in the next one too.
drivers/gpu/drm/msm/dp/dp_parser.c | 28 ++++++++++++++-------------- drivers/gpu/drm/msm/dp/dp_parser.h | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/msm/dp/dp_parser.c b/drivers/gpu/drm/msm/dp/dp_parser.c index c064ced78278..e68dacef547c 100644 --- a/drivers/gpu/drm/msm/dp/dp_parser.c +++ b/drivers/gpu/drm/msm/dp/dp_parser.c @@ -19,39 +19,39 @@ static const struct dp_regulator_cfg sdm845_dp_reg_cfg = { }, };
-static int msm_dss_ioremap(struct platform_device *pdev,
struct dss_io_data *io_data)
+static void __iomem *dp_ioremap(struct platform_device *pdev, int idx, size_t *len) { struct resource *res = NULL;
- void __iomem *base;
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- res = platform_get_resource(pdev, IORESOURCE_MEM, idx); if (!res) { DRM_ERROR("%pS->%s: msm_dss_get_res failed\n", __builtin_return_address(0), __func__);
return -ENODEV;
}return ERR_PTR(-ENODEV);
- io_data->len = (u32)resource_size(res);
- io_data->base = devm_ioremap(&pdev->dev, res->start, io_data->len);
- if (!io_data->base) {
- base = devm_ioremap_resource(&pdev->dev, res);
- if (!base) { DRM_ERROR("%pS->%s: ioremap failed\n", __builtin_return_address(0), __func__);
return -EIO;
}return ERR_PTR(-EIO);
- return 0;
- *len = resource_size(res);
- return base;
}
static int dp_parser_ctrl_res(struct dp_parser *parser) {
- int rc = 0; struct platform_device *pdev = parser->pdev; struct dp_io *io = &parser->io;
- struct dss_io_data *dss = &io->dp_controller;
- rc = msm_dss_ioremap(pdev, &io->dp_controller);
- if (rc) {
DRM_ERROR("unable to remap dp io resources, rc=%d\n", rc);
return rc;
dss->base = dp_ioremap(pdev, 0, &dss->len);
if (IS_ERR(dss->base)) {
DRM_ERROR("unable to remap dp io region: %pe\n", dss->base);
return PTR_ERR(dss->base);
}
io->phy = devm_phy_get(&pdev->dev, "dp");
diff --git a/drivers/gpu/drm/msm/dp/dp_parser.h b/drivers/gpu/drm/msm/dp/dp_parser.h index 34b49628bbaf..dc62e70b1640 100644 --- a/drivers/gpu/drm/msm/dp/dp_parser.h +++ b/drivers/gpu/drm/msm/dp/dp_parser.h @@ -26,7 +26,7 @@ enum dp_pm_type { };
struct dss_io_data {
- u32 len;
- size_t len; void __iomem *base;
};