Merge "disp: msm: dsi: Add support for parsing mdp_intf base address from dt"

This commit is contained in:
qctecmdr
2020-11-13 05:34:43 -08:00
committed by Gerrit - the friendly Code Review server
5 changed files with 23 additions and 89 deletions

View File

@@ -83,7 +83,6 @@ static void dsi_catalog_cmn_init(struct dsi_ctrl_hw *ctrl,
ctrl->ops.config_clk_gating = NULL; ctrl->ops.config_clk_gating = NULL;
ctrl->ops.configure_cmddma_window = NULL; ctrl->ops.configure_cmddma_window = NULL;
ctrl->ops.reset_trig_ctrl = NULL; ctrl->ops.reset_trig_ctrl = NULL;
ctrl->ops.map_mdp_regs = NULL;
ctrl->ops.log_line_count = NULL; ctrl->ops.log_line_count = NULL;
break; break;
case DSI_CTRL_VERSION_2_0: case DSI_CTRL_VERSION_2_0:
@@ -102,7 +101,6 @@ static void dsi_catalog_cmn_init(struct dsi_ctrl_hw *ctrl,
ctrl->ops.config_clk_gating = NULL; ctrl->ops.config_clk_gating = NULL;
ctrl->ops.configure_cmddma_window = NULL; ctrl->ops.configure_cmddma_window = NULL;
ctrl->ops.reset_trig_ctrl = NULL; ctrl->ops.reset_trig_ctrl = NULL;
ctrl->ops.map_mdp_regs = NULL;
ctrl->ops.log_line_count = NULL; ctrl->ops.log_line_count = NULL;
break; break;
case DSI_CTRL_VERSION_2_2: case DSI_CTRL_VERSION_2_2:
@@ -129,7 +127,6 @@ static void dsi_catalog_cmn_init(struct dsi_ctrl_hw *ctrl,
dsi_ctrl_hw_22_configure_cmddma_window; dsi_ctrl_hw_22_configure_cmddma_window;
ctrl->ops.reset_trig_ctrl = ctrl->ops.reset_trig_ctrl =
dsi_ctrl_hw_22_reset_trigger_controls; dsi_ctrl_hw_22_reset_trigger_controls;
ctrl->ops.map_mdp_regs = dsi_ctrl_hw_22_map_mdp_regs;
ctrl->ops.log_line_count = dsi_ctrl_hw_22_log_line_count; ctrl->ops.log_line_count = dsi_ctrl_hw_22_log_line_count;
break; break;
default: default:

View File

@@ -283,7 +283,5 @@ void dsi_ctrl_hw_22_configure_cmddma_window(struct dsi_ctrl_hw *ctrl,
u32 line_no, u32 window); u32 line_no, u32 window);
void dsi_ctrl_hw_22_reset_trigger_controls(struct dsi_ctrl_hw *ctrl, void dsi_ctrl_hw_22_reset_trigger_controls(struct dsi_ctrl_hw *ctrl,
struct dsi_host_common_cfg *cfg); struct dsi_host_common_cfg *cfg);
int dsi_ctrl_hw_22_map_mdp_regs(struct platform_device *pdev,
struct dsi_ctrl_hw *ctrl);
u32 dsi_ctrl_hw_22_log_line_count(struct dsi_ctrl_hw *ctrl, bool cmd_mode); u32 dsi_ctrl_hw_22_log_line_count(struct dsi_ctrl_hw *ctrl, bool cmd_mode);
#endif /* _DSI_CATALOG_H_ */ #endif /* _DSI_CATALOG_H_ */

View File

@@ -637,6 +637,7 @@ static int dsi_ctrl_init_regmap(struct platform_device *pdev,
} }
ctrl->hw.mmss_misc_base = ptr; ctrl->hw.mmss_misc_base = ptr;
ctrl->hw.disp_cc_base = NULL; ctrl->hw.disp_cc_base = NULL;
ctrl->hw.mdp_intf_base = NULL;
break; break;
case DSI_CTRL_VERSION_2_2: case DSI_CTRL_VERSION_2_2:
case DSI_CTRL_VERSION_2_3: case DSI_CTRL_VERSION_2_3:
@@ -650,6 +651,10 @@ static int dsi_ctrl_init_regmap(struct platform_device *pdev,
} }
ctrl->hw.disp_cc_base = ptr; ctrl->hw.disp_cc_base = ptr;
ctrl->hw.mmss_misc_base = NULL; ctrl->hw.mmss_misc_base = NULL;
ptr = msm_ioremap(pdev, "mdp_intf_base", ctrl->name);
if (!IS_ERR(ptr))
ctrl->hw.mdp_intf_base = ptr;
break; break;
default: default:
break; break;
@@ -2100,9 +2105,6 @@ static int dsi_ctrl_dev_probe(struct platform_device *pdev)
goto fail_clks; goto fail_clks;
} }
if (dsi_ctrl->hw.ops.map_mdp_regs)
dsi_ctrl->hw.ops.map_mdp_regs(pdev, &dsi_ctrl->hw);
item->ctrl = dsi_ctrl; item->ctrl = dsi_ctrl;
sde_dbg_dsi_ctrl_register(dsi_ctrl->hw.base, dsi_ctrl->name); sde_dbg_dsi_ctrl_register(dsi_ctrl->hw.base, dsi_ctrl->name);

View File

@@ -860,14 +860,6 @@ struct dsi_ctrl_hw_ops {
void (*reset_trig_ctrl)(struct dsi_ctrl_hw *ctrl, void (*reset_trig_ctrl)(struct dsi_ctrl_hw *ctrl,
struct dsi_host_common_cfg *cfg); struct dsi_host_common_cfg *cfg);
/**
* hw.ops.map_mdp_regs() - maps MDP interface line count registers.
* @pdev: Pointer to platform device.
* @ctrl: Pointer to the controller host hardware.
*/
int (*map_mdp_regs)(struct platform_device *pdev,
struct dsi_ctrl_hw *ctrl);
/** /**
* hw.ops.log_line_count() - reads the MDP interface line count * hw.ops.log_line_count() - reads the MDP interface line count
* registers. * registers.
@@ -885,13 +877,11 @@ struct dsi_ctrl_hw_ops {
* @mmss_misc_length: Length of mmss_misc register map. * @mmss_misc_length: Length of mmss_misc register map.
* @disp_cc_base: Base address of disp_cc register map. * @disp_cc_base: Base address of disp_cc register map.
* @disp_cc_length: Length of disp_cc register map. * @disp_cc_length: Length of disp_cc register map.
* @te_rd_ptr_reg: Address of MDP_TEAR_INTF_TEAR_LINE_COUNT. This * @mdp_intf_base: Base address of mdp_intf register map. Addresses of
* register is used for testing and validating the RD * MDP_TEAR_INTF_TEAR_LINE_COUNT and MDP_TEAR_INTF_LINE_COUNT
* ptr value when a CMD is triggered and it succeeds. * are mapped using the base address to test and validate
* @line_count_reg: Address of MDP_TEAR_INTF_LINE_COUNT. This * the RD ptr value and line count value respectively when
* register is used for testing and validating the * a CMD is triggered and it succeeds.
* line count value when a CMD is triggered and it
* succeeds.
* @index: Instance ID of the controller. * @index: Instance ID of the controller.
* @feature_map: Features supported by the DSI controller. * @feature_map: Features supported by the DSI controller.
* @ops: Function pointers to the operations supported by the * @ops: Function pointers to the operations supported by the
@@ -912,9 +902,8 @@ struct dsi_ctrl_hw {
void __iomem *mmss_misc_base; void __iomem *mmss_misc_base;
u32 mmss_misc_length; u32 mmss_misc_length;
void __iomem *disp_cc_base; void __iomem *disp_cc_base;
void __iomem *te_rd_ptr_reg;
void __iomem *line_count_reg;
u32 disp_cc_length; u32 disp_cc_length;
void __iomem *mdp_intf_base;
u32 index; u32 index;
/* features */ /* features */

View File

@@ -14,11 +14,10 @@
#define DSI_DMA_SCHEDULE_CTRL 0x100 #define DSI_DMA_SCHEDULE_CTRL 0x100
#define DSI_DMA_SCHEDULE_CTRL2 0x0104 #define DSI_DMA_SCHEDULE_CTRL2 0x0104
/* MDP INTF registers to be mapped for debug feature*/ /* offset addresses of MDP INTF base register, to be mapped for debug feature */
#define MDP_INTF1_TEAR_LINE_COUNT 0xAE36298 #define MDP_INTF_TEAR_OFFSET 0x280
#define MDP_INTF2_TEAR_LINE_COUNT 0xAE37298 #define MDP_INTF_TEAR_LINE_COUNT_OFFSET 0x30
#define MDP_INTF1_LINE_COUNT 0xAE360B0 #define MDP_INTF_LINE_COUNT_OFFSET 0xB0
#define MDP_INTF2_LINE_COUNT 0xAE370B0
void dsi_ctrl_hw_22_setup_lane_map(struct dsi_ctrl_hw *ctrl, void dsi_ctrl_hw_22_setup_lane_map(struct dsi_ctrl_hw *ctrl,
struct dsi_lane_map *lane_map) struct dsi_lane_map *lane_map)
@@ -260,61 +259,6 @@ void dsi_ctrl_hw_22_reset_trigger_controls(struct dsi_ctrl_hw *ctrl,
ctrl->reset_trig_ctrl = false; ctrl->reset_trig_ctrl = false;
} }
/**
* dsi_ctrl_hw_22_map_mdp_regs() - maps MDP interface line count registers.
* @pdev: Pointer to platform device.
* @ctrl: Pointer to the controller host hardware.
*
* Return: 0 on success and error on failure.
*/
int dsi_ctrl_hw_22_map_mdp_regs(struct platform_device *pdev,
struct dsi_ctrl_hw *ctrl)
{
int rc = 0;
void __iomem *ptr = NULL, *ptr1 = NULL;
if (ctrl->index == 0) {
ptr = devm_ioremap(&pdev->dev, MDP_INTF1_TEAR_LINE_COUNT, 1);
if (IS_ERR_OR_NULL(ptr)) {
DSI_CTRL_HW_ERR(ctrl,
"MDP TE LINE COUNT address not found\n");
rc = PTR_ERR(ptr);
return rc;
}
ptr1 = devm_ioremap(&pdev->dev, MDP_INTF1_LINE_COUNT, 1);
if (IS_ERR_OR_NULL(ptr1)) {
DSI_CTRL_HW_ERR(ctrl,
"MDP TE LINE COUNT address not found\n");
rc = PTR_ERR(ptr1);
return rc;
}
}
if (ctrl->index == 1) {
ptr = devm_ioremap(&pdev->dev, MDP_INTF2_TEAR_LINE_COUNT, 1);
if (IS_ERR_OR_NULL(ptr)) {
DSI_CTRL_HW_ERR(ctrl,
"MDP TE LINE COUNT address not found\n");
rc = PTR_ERR(ptr);
return rc;
}
ptr1 = devm_ioremap(&pdev->dev, MDP_INTF2_LINE_COUNT, 1);
if (IS_ERR_OR_NULL(ptr1)) {
DSI_CTRL_HW_ERR(ctrl,
"MDP TE LINE COUNT address not found\n");
rc = PTR_ERR(ptr1);
return rc;
}
}
ctrl->te_rd_ptr_reg = ptr;
ctrl->line_count_reg = ptr1;
return rc;
}
/** /**
* dsi_ctrl_hw_22_log_line_count() - reads the MDP interface line count * dsi_ctrl_hw_22_log_line_count() - reads the MDP interface line count
* registers. * registers.
@@ -328,10 +272,14 @@ u32 dsi_ctrl_hw_22_log_line_count(struct dsi_ctrl_hw *ctrl, bool cmd_mode)
u32 reg = 0; u32 reg = 0;
if (cmd_mode && ctrl->te_rd_ptr_reg) if (IS_ERR_OR_NULL(ctrl->mdp_intf_base))
reg = readl_relaxed(ctrl->te_rd_ptr_reg); return reg;
else if (ctrl->line_count_reg)
reg = readl_relaxed(ctrl->line_count_reg);
if (cmd_mode)
reg = readl_relaxed(ctrl->mdp_intf_base + MDP_INTF_TEAR_OFFSET
+ MDP_INTF_TEAR_LINE_COUNT_OFFSET);
else
reg = readl_relaxed(ctrl->mdp_intf_base
+ MDP_INTF_LINE_COUNT_OFFSET);
return reg; return reg;
} }