disp: msm: snapshot of msm and sde driver
This snapshot ports changes from 4.14 to 4.19 into the msm and sde layer. Snapshot was taken as of commit 0f8fb25421ff ("cnss2: Add device version to SOC info structure"). Change-Id: I59b799a78319c2db6930a2a10bc38976f8c09898 Signed-off-by: Samantha Tran <samtran@codeaurora.org>
このコミットが含まれているのは:
@@ -238,6 +238,7 @@ static struct sde_dbg_base {
|
||||
u32 cur_evt_index;
|
||||
u32 dbgbus_dump_idx;
|
||||
u32 vbif_dbgbus_dump_idx;
|
||||
enum sde_dbg_dump_context dump_mode;
|
||||
} sde_dbg_base;
|
||||
|
||||
/* sde_dbg_base_evtlog - global pointer to main sde event log for macro use */
|
||||
@@ -2827,6 +2828,17 @@ static struct vbif_debug_bus_entry vbif_dbg_bus_msm8998[] = {
|
||||
{0x21c, 0x214, 0, 14, 0, 0xc}, /* xin blocks - clock side */
|
||||
};
|
||||
|
||||
/**
|
||||
* _sde_power_check - check if power needs to enabled
|
||||
* @dump_mode: to check if power need to be enabled
|
||||
* Return: true if success; false otherwise
|
||||
*/
|
||||
static inline bool _sde_power_check(enum sde_dbg_dump_context dump_mode)
|
||||
{
|
||||
return (dump_mode == SDE_DBG_DUMP_CLK_ENABLED_CTX ||
|
||||
dump_mode == SDE_DBG_DUMP_IRQ_CTX) ? false : true;
|
||||
}
|
||||
|
||||
/**
|
||||
* _sde_dump_reg - helper function for dumping rotator register set content
|
||||
* @dump_name: register set name
|
||||
@@ -2838,8 +2850,7 @@ static struct vbif_debug_bus_entry vbif_dbg_bus_msm8998[] = {
|
||||
* @from_isr: whether being called from isr context
|
||||
*/
|
||||
static void _sde_dump_reg(const char *dump_name, u32 reg_dump_flag,
|
||||
char *base_addr, char *addr, size_t len_bytes, u32 **dump_mem,
|
||||
bool from_isr)
|
||||
char *base_addr, char *addr, size_t len_bytes, u32 **dump_mem)
|
||||
{
|
||||
u32 in_log, in_mem, len_align, len_padded;
|
||||
u32 *dump_addr = NULL;
|
||||
@@ -2887,7 +2898,7 @@ static void _sde_dump_reg(const char *dump_name, u32 reg_dump_flag,
|
||||
}
|
||||
}
|
||||
|
||||
if (!from_isr) {
|
||||
if (_sde_power_check(sde_dbg_base.dump_mode)) {
|
||||
rc = pm_runtime_get_sync(sde_dbg_base.dev);
|
||||
if (rc < 0) {
|
||||
pr_err("failed to enable power %d\n", rc);
|
||||
@@ -2919,7 +2930,7 @@ static void _sde_dump_reg(const char *dump_name, u32 reg_dump_flag,
|
||||
addr += REG_DUMP_ALIGN;
|
||||
}
|
||||
|
||||
if (!from_isr)
|
||||
if (_sde_power_check(sde_dbg_base.dump_mode))
|
||||
pm_runtime_put_sync(sde_dbg_base.dev);
|
||||
}
|
||||
|
||||
@@ -3022,7 +3033,7 @@ static void _sde_dump_reg_by_ranges(struct sde_dbg_reg_base *dbg,
|
||||
|
||||
_sde_dump_reg(range_node->range_name, reg_dump_flag,
|
||||
dbg->base, addr, len,
|
||||
&range_node->reg_dump, false);
|
||||
&range_node->reg_dump);
|
||||
}
|
||||
} else {
|
||||
/* If there is no list to dump ranges, dump all registers */
|
||||
@@ -3033,7 +3044,7 @@ static void _sde_dump_reg_by_ranges(struct sde_dbg_reg_base *dbg,
|
||||
addr = dbg->base;
|
||||
len = dbg->max_offset;
|
||||
_sde_dump_reg(dbg->name, reg_dump_flag, dbg->base, addr, len,
|
||||
&dbg->reg_dump, false);
|
||||
&dbg->reg_dump);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3441,7 +3452,7 @@ static void _sde_dump_work(struct work_struct *work)
|
||||
sde_dbg_base.dump_all, sde_dbg_base.dump_secure);
|
||||
}
|
||||
|
||||
void sde_dbg_dump(bool queue_work, const char *name, ...)
|
||||
void sde_dbg_dump(enum sde_dbg_dump_context dump_mode, const char *name, ...)
|
||||
{
|
||||
int i, index = 0;
|
||||
bool do_panic = false;
|
||||
@@ -3458,7 +3469,8 @@ void sde_dbg_dump(bool queue_work, const char *name, ...)
|
||||
if (!sde_evtlog_is_enabled(sde_dbg_base.evtlog, SDE_EVTLOG_ALWAYS))
|
||||
return;
|
||||
|
||||
if (queue_work && work_pending(&sde_dbg_base.dump_work))
|
||||
if ((dump_mode == SDE_DBG_DUMP_IRQ_CTX) &&
|
||||
work_pending(&sde_dbg_base.dump_work))
|
||||
return;
|
||||
|
||||
blk_arr = &sde_dbg_base.req_dump_blks[0];
|
||||
@@ -3467,6 +3479,7 @@ void sde_dbg_dump(bool queue_work, const char *name, ...)
|
||||
memset(sde_dbg_base.req_dump_blks, 0,
|
||||
sizeof(sde_dbg_base.req_dump_blks));
|
||||
sde_dbg_base.dump_all = false;
|
||||
sde_dbg_base.dump_mode = dump_mode;
|
||||
|
||||
va_start(args, name);
|
||||
i = 0;
|
||||
@@ -3509,7 +3522,7 @@ void sde_dbg_dump(bool queue_work, const char *name, ...)
|
||||
}
|
||||
va_end(args);
|
||||
|
||||
if (queue_work) {
|
||||
if (dump_mode == SDE_DBG_DUMP_IRQ_CTX) {
|
||||
/* schedule work to dump later */
|
||||
sde_dbg_base.work_panic = do_panic;
|
||||
sde_dbg_base.dbgbus_sde.cmn.include_in_deferred_work =
|
||||
|
新しいイシューから参照
ユーザーをブロックする