[PATCH 1/2] drm/msm/dsi: Add support for flexible DSI block mapping

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The QCM2290 SoC integrates same DSI hardware as SC7180 but mapped
at a different address, 0x5e94000 vs 0xae94000. To support such
case, this change introduces an optional io_mask value that can
be used to match multiple mapped addresses. It's probably not the
more elegant solution, and could be revisited if necessary.

Signed-off-by: Loic Poulain <loic.poulain@xxxxxxxxxx>
---
 drivers/gpu/drm/msm/dsi/dsi_cfg.h  | 2 +-
 drivers/gpu/drm/msm/dsi/dsi_host.c | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/msm/dsi/dsi_cfg.h b/drivers/gpu/drm/msm/dsi/dsi_cfg.h
index 41e99a9..195ab2f 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_cfg.h
+++ b/drivers/gpu/drm/msm/dsi/dsi_cfg.h
@@ -36,6 +36,7 @@ struct msm_dsi_config {
 	const char * const *bus_clk_names;
 	const int num_bus_clks;
 	const resource_size_t io_start[DSI_MAX];
+	const u32 io_mask;
 	const int num_dsi;
 };
 
@@ -61,4 +62,3 @@ struct msm_dsi_cfg_handler {
 const struct msm_dsi_cfg_handler *msm_dsi_cfg_get(u32 major, u32 minor);
 
 #endif /* __MSM_DSI_CFG_H__ */
-
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
index f69a125f..428641e 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -1779,6 +1779,9 @@ static int dsi_host_get_id(struct msm_dsi_host *msm_host)
 	for (i = 0; i < cfg->num_dsi; i++) {
 		if (cfg->io_start[i] == res->start)
 			return i;
+		else if (cfg->io_mask &&
+			 (cfg->io_start[i] & cfg->io_mask) == (res->start & cfg->io_mask))
+			return i;
 	}
 
 	return -EINVAL;
-- 
2.7.4




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux