The printk in DSSDBG function definition is replaced with dynamic debug enabled
pr_debug(). The use of dynamic debugging provides more flexiblity as each debug
statement can be enabled or disabled dynamically on basis of source filename,
line number, module name etc. by writing to a control file in debugfs
filesystem. For better undertsanding please refer to
Documentation/dynamic-debug-howto.txt.
The DSSDBGF() differs from DSSDBG() by providing function name. However,
function name, line number, module name and thread ID can be printed through
dynamic debug by setting appropiate flags 'f','l','m' and 't' in the debugfs
control file. So, DSSDBGF instances are replaced with DSSDBG.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/apply.c | 8 ++++----
drivers/video/omap2/dss/dsi.c | 12 ++++--------
drivers/video/omap2/dss/dss.h | 34 ++++++++--------------------------
3 files changed, 16 insertions(+), 38 deletions(-)
From: Tomi Valkeinen <hidden> Date: 2012-09-25 06:24:51
On Tue, 2012-09-25 at 11:33 +0530, Chandrabhanu Mahapatra wrote:
The printk in DSSDBG function definition is replaced with dynamic debug enabled
pr_debug(). The use of dynamic debugging provides more flexiblity as each debug
statement can be enabled or disabled dynamically on basis of source filename,
line number, module name etc. by writing to a control file in debugfs
filesystem. For better undertsanding please refer to
Documentation/dynamic-debug-howto.txt.
The DSSDBGF() differs from DSSDBG() by providing function name. However,
function name, line number, module name and thread ID can be printed through
dynamic debug by setting appropiate flags 'f','l','m' and 't' in the debugfs
control file. So, DSSDBGF instances are replaced with DSSDBG.
I don't think this is good. It's true that dyn-debug can print the
function name, but that's optional. The debug message should be somehow
sensible independently, but in this case only a number is printed which
is totally meaningless.
Either the messages should be modified to give a hint what's going on,
or the DSSDBGF could be kept for now. In the above case the debug
message could be something like "writing ovl %d regs".
However, I think it'd be easier just to keep the DSSDBGF for now, and
remove it gradually.
@@ -2718,7 +2714,7 @@ static int dsi_vc_config_source(struct platform_device *dsidev, int channel,if(dsi->vc[channel].source==source)return0;-DSSDBGF("%d",channel);+DSSDBG("%d",channel);dsi_sync_vc(dsidev,channel);
@@ -3475,7 +3471,7 @@ static int dsi_enter_ulps(struct platform_device *dsidev)intr,i;unsignedmask;-DSSDBGF();+DSSDBG("");
This debug message is even less meaningful than the overlay number =).
Again, I think either keep the DSSDBGF, or print something sensible,
like "entering ULPS".
quoted hunk
WARN_ON(!dsi_bus_is_locked(dsidev));
@@ -4184,7 +4180,7 @@ int omapdss_dsi_set_clocks(struct omap_dss_device *dssdev, unsigned long pck; int r;- DSSDBGF("ddr_clk %lu, lp_clk %lu", ddr_clk, lp_clk);+ DSSDBG("ddr_clk %lu, lp_clk %lu", ddr_clk, lp_clk); mutex_lock(&dsi->lock);
I don't think this is good. It's true that dyn-debug can print the
function name, but that's optional. The debug message should be somehow
sensible independently, but in this case only a number is printed which
is totally meaningless.
Either the messages should be modified to give a hint what's going on,
or the DSSDBGF could be kept for now. In the above case the debug
message could be something like "writing ovl %d regs".
However, I think it'd be easier just to keep the DSSDBGF for now, and
remove it gradually.
@@ -2718,7 +2714,7 @@ static int dsi_vc_config_source(struct platform_device *dsidev, int channel,if(dsi->vc[channel].source=source)return0;-DSSDBGF("%d",channel);+DSSDBG("%d",channel);dsi_sync_vc(dsidev,channel);
@@ -3475,7 +3471,7 @@ static int dsi_enter_ulps(struct platform_device *dsidev)intr,i;unsignedmask;-DSSDBGF();+DSSDBG("");
This debug message is even less meaningful than the overlay number =).
Again, I think either keep the DSSDBGF, or print something sensible,
like "entering ULPS".
I dont think it would be wise enough to update code for one and keep
the older version for another when both DSSDBG and DSSDBGF are almost
one and the same. Its better to add something meaningful to the prints
as you have mentioned like "writing ovl %d regs" and "DSI entering
ULPS".
quoted
WARN_ON(!dsi_bus_is_locked(dsidev));
@@ -4184,7 +4180,7 @@ int omapdss_dsi_set_clocks(struct omap_dss_device *dssdev, unsigned long pck; int r;- DSSDBGF("ddr_clk %lu, lp_clk %lu", ddr_clk, lp_clk);+ DSSDBG("ddr_clk %lu, lp_clk %lu", ddr_clk, lp_clk); mutex_lock(&dsi->lock);
You still left the dss_debug option here, even if it's not used by the
DSSDBG anymore. What's your plan about this?
Tomi
dss_debug and DEBUG need to remain here as it is being used by
functions omap_dispc_irq_handler() and _dsi_print_reset_status() in
dispc.c and dsi.c. I am little bit unsure of how to deal with it.
There could be a single print in omap_dispc_irq_handler() but it is a
bit tricky in _dsi_print_reset_status().
May be a macro like this one can be used in _dsi_print_reset_status()
#define DSI_FLD_GET(fld, start, end)\
FLD_GET(dsi_read_reg(dsidev, DSI_##fld), start, end);
pr_debug("PLL (%d) CIO (%d) \n PHY (%x%x%x, %d, %d, %d) \n",
DSI_FLD_GET(PLL_STATUS, 0, 0),
DSI_FLD_GET(COMPLEXIO_CFG1, 29, 29),
DSI_FLD_GET(DSIPHY_CFG5, bo, bo),
DSI_FLD_GET(DSIPHY_CFG5, b1, b1),
..................................................);
This could be defined at the beginning of the function and later at its end.
As you had previously mentioned a print like
#define PIS(x) (status & DSI_IRQ_##x) ? (#x " ") : ""
pr_debug("DSI IRQ: 0x%x: %s%s%s",
status,
PIS(WAKEUP),
PIS(RESYNC),
PIS(PLL_LOCK));
could help in print_irq_status() but I am still unsure how to deal
with conditional statements in print_irq_status() like
if (dss_has_feature(FEAT_MGR_LCD3))
PIS(SYNC_LOST3);
Should we use approach like
pr_debug("DSI IRQ: 0x%x: %s%s%s%s...",
status,
PIS(WAKEUP),
PIS(RESYNC),
PIS(PLL_LOCK)
dss_has_feature(FEAT_MGR_LCD3) ? PIS(SYNC_LOST3) : ""
...................................... );
--
Chandrabhanu Mahapatra
Texas Instruments India Pvt. Ltd.
From: Tomi Valkeinen <hidden> Date: 2012-09-25 09:57:36
On Tue, 2012-09-25 at 15:00 +0530, Mahapatra, Chandrabhanu wrote:
quoted
This debug message is even less meaningful than the overlay number =).
Again, I think either keep the DSSDBGF, or print something sensible,
like "entering ULPS".
I dont think it would be wise enough to update code for one and keep
the older version for another when both DSSDBG and DSSDBGF are almost
one and the same. Its better to add something meaningful to the prints
as you have mentioned like "writing ovl %d regs" and "DSI entering
ULPS".
I didn't mean to leave DSSDBGF unchanged. I meant that it should work as
it works now, printing the func name, but using pr_debug.
quoted
quoted
WARN_ON(!dsi_bus_is_locked(dsidev));
@@ -4184,7 +4180,7 @@ int omapdss_dsi_set_clocks(struct omap_dss_device *dssdev, unsigned long pck; int r;- DSSDBGF("ddr_clk %lu, lp_clk %lu", ddr_clk, lp_clk);+ DSSDBG("ddr_clk %lu, lp_clk %lu", ddr_clk, lp_clk); mutex_lock(&dsi->lock);
You still left the dss_debug option here, even if it's not used by the
DSSDBG anymore. What's your plan about this?
Tomi
dss_debug and DEBUG need to remain here as it is being used by
functions omap_dispc_irq_handler() and _dsi_print_reset_status() in
It would be good to clean all this in one patch series.
dispc.c and dsi.c. I am little bit unsure of how to deal with it.
There could be a single print in omap_dispc_irq_handler() but it is a
bit tricky in _dsi_print_reset_status().
May be a macro like this one can be used in _dsi_print_reset_status()
#define DSI_FLD_GET(fld, start, end)\
FLD_GET(dsi_read_reg(dsidev, DSI_##fld), start, end);
pr_debug("PLL (%d) CIO (%d) \n PHY (%x%x%x, %d, %d, %d) \n",
DSI_FLD_GET(PLL_STATUS, 0, 0),
DSI_FLD_GET(COMPLEXIO_CFG1, 29, 29),
DSI_FLD_GET(DSIPHY_CFG5, bo, bo),
DSI_FLD_GET(DSIPHY_CFG5, b1, b1),
..................................................);
This could be defined at the beginning of the function and later at its end.
Yes, I think something like that could work. I don't see any problem
with having temporary helper macros to help creating the debug message.
As you had previously mentioned a print like
#define PIS(x) (status & DSI_IRQ_##x) ? (#x " ") : ""
pr_debug("DSI IRQ: 0x%x: %s%s%s",
status,
PIS(WAKEUP),
PIS(RESYNC),
PIS(PLL_LOCK));
could help in print_irq_status() but I am still unsure how to deal
with conditional statements in print_irq_status() like
if (dss_has_feature(FEAT_MGR_LCD3))
PIS(SYNC_LOST3);
Should we use approach like
pr_debug("DSI IRQ: 0x%x: %s%s%s%s...",
status,
PIS(WAKEUP),
PIS(RESYNC),
PIS(PLL_LOCK)
dss_has_feature(FEAT_MGR_LCD3) ? PIS(SYNC_LOST3) : ""
...................................... );
Hi everyone,
this patch series aims at cleaning up of DSS of printk()'s enabled with
dss_debug and replace them with generic dynamic debug printing.
The 1st patch
* replaces printk() in DSSDBG definition with pr_debug()
* removes DSSDBGF definition and replaces its instances with DSSDBG()
The 2nd patch
* cleans up printk()'s in omap_dispc_unregister_isr() and
_dsi_print_reset_status() with pr_debug()
* removes dss_debug variable
Changes with respect to V1:
* added debug messages to DSSDBG calls replacing DSSDBGF
* added patch "OMAPDSS: Remove dss_debug variable"
All your comments and suggestions are welcome.
Regards,
Chandrabhanu
Chandrabhanu Mahapatra (2):
OMAPDSS: Cleanup DSSDBG with dynamic pr_debug function
OMAPDSS: Remove dss_debug variable
drivers/video/omap2/dss/apply.c | 8 +++----
drivers/video/omap2/dss/core.c | 5 ----
drivers/video/omap2/dss/dispc.c | 39 +++++++++++--------------------
drivers/video/omap2/dss/dsi.c | 49 ++++++++++++++++-----------------------
drivers/video/omap2/dss/dss.h | 34 +++++----------------------
5 files changed, 44 insertions(+), 91 deletions(-)
--
1.7.10
The printk in DSSDBG function definition is replaced with dynamic debug enabled
pr_debug(). The use of dynamic debugging provides more flexibility as each debug
statement can be enabled or disabled dynamically on basis of source filename,
line number, module name etc. by writing to a control file in debugfs
filesystem. For better understanding please refer to
Documentation/dynamic-debug-howto.txt.
The DSSDBGF() differs from DSSDBG() by providing function name. However,
function name, line number, module name and thread ID can be printed through
dynamic debug by setting appropriate flags 'f','l','m' and 't' in the debugfs
control file. So, DSSDBGF instances are replaced with DSSDBG.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/apply.c | 8 ++++----
drivers/video/omap2/dss/dsi.c | 12 ++++++------
drivers/video/omap2/dss/dss.h | 34 ++++++++--------------------------
3 files changed, 18 insertions(+), 36 deletions(-)
The debug prints in omap_dispc_unregister_isr() and _dsi_print_reset_status()
are replaced with dynamic debug enabled pr_debug(). So, as the final dependency
on dss_debug variable is replaced with dyndbg, the dss_debug variable is
removed.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/core.c | 5 -----
drivers/video/omap2/dss/dispc.c | 39 ++++++++++++++-------------------------
drivers/video/omap2/dss/dsi.c | 37 ++++++++++++++-----------------------
drivers/video/omap2/dss/dss.h | 4 ----
4 files changed, 28 insertions(+), 57 deletions(-)
@@ -3447,34 +3447,26 @@ int omap_dispc_unregister_isr(omap_dispc_isr_t isr, void *arg, u32 mask)}EXPORT_SYMBOL(omap_dispc_unregister_isr);-#ifdef DEBUGstaticvoidprint_irq_status(u32status){if((status&dispc.irq_error_mask)=0)return;-printk(KERN_DEBUG"DISPC IRQ: 0x%x: ",status);--#define PIS(x) \-if(status&DISPC_IRQ_##x)\-printk(#x" ");-PIS(GFX_FIFO_UNDERFLOW);-PIS(OCP_ERR);-PIS(VID1_FIFO_UNDERFLOW);-PIS(VID2_FIFO_UNDERFLOW);-if(dss_feat_get_num_ovls()>3)-PIS(VID3_FIFO_UNDERFLOW);-PIS(SYNC_LOST);-PIS(SYNC_LOST_DIGIT);-if(dss_has_feature(FEAT_MGR_LCD2))-PIS(SYNC_LOST2);-if(dss_has_feature(FEAT_MGR_LCD3))-PIS(SYNC_LOST3);+#define PIS(x) (status & DISPC_IRQ_##x) ? (#x " ") : ""++pr_debug("DISPC IRQ: 0x%x: %s%s%s%s%s%s%s%s%s\n",+status,+PIS(OCP_ERR),+PIS(GFX_FIFO_UNDERFLOW),+PIS(VID1_FIFO_UNDERFLOW),+PIS(VID2_FIFO_UNDERFLOW),+dss_feat_get_num_ovls()>3?PIS(VID3_FIFO_UNDERFLOW):"",+PIS(SYNC_LOST),+PIS(SYNC_LOST_DIGIT),+dss_has_feature(FEAT_MGR_LCD2)?PIS(SYNC_LOST2):"",+dss_has_feature(FEAT_MGR_LCD3)?PIS(SYNC_LOST3):"");#undef PIS--printk("\n");}-#endif/* Called from dss.c. Note that we don't touch clocks here,*butwepresumetheyareonbecausewegotanIRQ.However,
@@ -3507,10 +3499,7 @@ static irqreturn_t omap_dispc_irq_handler(int irq, void *arg)spin_unlock(&dispc.irq_stats_lock);#endif-#ifdef DEBUG-if(dss_debug)-print_irq_status(irqstatus);-#endif+print_irq_status(irqstatus);/* Ack the interrupt. Do it here before clocks are possibly turned*off*/dispc_write_reg(DISPC_IRQSTATUS,irqstatus);
From: Tomi Valkeinen <hidden> Date: 2012-09-26 14:29:52
Hi,
On Wed, 2012-09-26 at 10:45 +0530, Chandrabhanu Mahapatra wrote:
Hi everyone,
this patch series aims at cleaning up of DSS of printk()'s enabled with
dss_debug and replace them with generic dynamic debug printing.
The 1st patch
* replaces printk() in DSSDBG definition with pr_debug()
* removes DSSDBGF definition and replaces its instances with DSSDBG()
The 2nd patch
* cleans up printk()'s in omap_dispc_unregister_isr() and
_dsi_print_reset_status() with pr_debug()
* removes dss_debug variable
Changes with respect to V1:
* added debug messages to DSSDBG calls replacing DSSDBGF
* added patch "OMAPDSS: Remove dss_debug variable"
All your comments and suggestions are welcome.
This doesn't work quite correctly. The problem is in dss.h, where we
define DEBUG if CONFIG_OMAP2_DSS_DEBUG_SUPPORT is set. The thing is,
DEBUG should be defined before including the kernel headers where the
pr_debug etc are defined.
So if you try the patches without dynamic debugging enabled, you won't
get any debug outputs at all, even if CONFIG_OMAP2_DSS_DEBUG_SUPPORT is
set.
And for dynamic debug, the Kconfig help says:
If a source file is compiled with DEBUG flag set, any
pr_debug() calls in it are enabled by default, but can be
disabled at runtime as below. Note that DEBUG flag is
turned on by many CONFIG_*DEBUG* options.
So if we have CONFIG_OMAP2_DSS_DEBUG_SUPPORT set, all the pr_debugs
should be enabled by default, which is not the case, again because DEBUG
is defined too late.
I think setting DEBUG in dss.h should be removed, and instead DEBUG
should be set in the makefile if CONFIG_OMAP2_DSS_DEBUG_SUPPORT is set.
Tomi
On Wed, Sep 26, 2012 at 7:59 PM, Tomi Valkeinen [off-list ref] wrote:
This doesn't work quite correctly. The problem is in dss.h, where we
define DEBUG if CONFIG_OMAP2_DSS_DEBUG_SUPPORT is set. The thing is,
DEBUG should be defined before including the kernel headers where the
pr_debug etc are defined.
So if you try the patches without dynamic debugging enabled, you won't
get any debug outputs at all, even if CONFIG_OMAP2_DSS_DEBUG_SUPPORT is
set.
And for dynamic debug, the Kconfig help says:
If a source file is compiled with DEBUG flag set, any
pr_debug() calls in it are enabled by default, but can be
disabled at runtime as below. Note that DEBUG flag is
turned on by many CONFIG_*DEBUG* options.
So if we have CONFIG_OMAP2_DSS_DEBUG_SUPPORT set, all the pr_debugs
should be enabled by default, which is not the case, again because DEBUG
is defined too late.
I think setting DEBUG in dss.h should be removed, and instead DEBUG
should be set in the makefile if CONFIG_OMAP2_DSS_DEBUG_SUPPORT is set.
Tomi
Well the documentation lags in describing about the DEBUG flag. I
should have checked DYNAMIC_DEBUG in Kconfig and pr_debug definition
in printk.h file.
#if defined(CONFIG_DYNAMIC_DEBUG)
/* dynamic_pr_debug() uses pr_fmt() internally so we don't need it here */
#define pr_debug(fmt, ...) \
dynamic_pr_debug(fmt, ##__VA_ARGS__)
#elif defined(DEBUG)
#define pr_debug(fmt, ...) \
printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#else
#define pr_debug(fmt, ...) \
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#endif
As per the definition above pr_debug is dynamic with
CONFIG_DYNAMIC_DEBUG set or else with DEBUG set it is just a normal
kernel debug printk as you have mentioned.
I still don't get how even if DEBUG is set before DSSDBG() is defined
in dss.c pr_debug() fails to enable.
Well anyways, how to do the same in the Makefile? I tried adding
ccflags-$(CONFIG_OMAP2_DSS_DEBUG_SUPPORT) += -DEBUG
to makefile in dss directory but of no use.
--
Chandrabhanu Mahapatra
Texas Instruments India Pvt. Ltd.
From: Tomi Valkeinen <hidden> Date: 2012-09-27 11:01:12
On Thu, 2012-09-27 at 16:20 +0530, Mahapatra, Chandrabhanu wrote:
On Wed, Sep 26, 2012 at 7:59 PM, Tomi Valkeinen [off-list ref] wrote:
quoted
This doesn't work quite correctly. The problem is in dss.h, where we
define DEBUG if CONFIG_OMAP2_DSS_DEBUG_SUPPORT is set. The thing is,
DEBUG should be defined before including the kernel headers where the
pr_debug etc are defined.
So if you try the patches without dynamic debugging enabled, you won't
get any debug outputs at all, even if CONFIG_OMAP2_DSS_DEBUG_SUPPORT is
set.
And for dynamic debug, the Kconfig help says:
If a source file is compiled with DEBUG flag set, any
pr_debug() calls in it are enabled by default, but can be
disabled at runtime as below. Note that DEBUG flag is
turned on by many CONFIG_*DEBUG* options.
So if we have CONFIG_OMAP2_DSS_DEBUG_SUPPORT set, all the pr_debugs
should be enabled by default, which is not the case, again because DEBUG
is defined too late.
I think setting DEBUG in dss.h should be removed, and instead DEBUG
should be set in the makefile if CONFIG_OMAP2_DSS_DEBUG_SUPPORT is set.
Tomi
Well the documentation lags in describing about the DEBUG flag. I
should have checked DYNAMIC_DEBUG in Kconfig and pr_debug definition
in printk.h file.
#if defined(CONFIG_DYNAMIC_DEBUG)
/* dynamic_pr_debug() uses pr_fmt() internally so we don't need it here */
#define pr_debug(fmt, ...) \
dynamic_pr_debug(fmt, ##__VA_ARGS__)
#elif defined(DEBUG)
#define pr_debug(fmt, ...) \
printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#else
#define pr_debug(fmt, ...) \
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#endif
As per the definition above pr_debug is dynamic with
CONFIG_DYNAMIC_DEBUG set or else with DEBUG set it is just a normal
kernel debug printk as you have mentioned.
I still don't get how even if DEBUG is set before DSSDBG() is defined
in dss.c pr_debug() fails to enable.
Because printk.h is included without DEBUG, thus pr_debug is defined as
no_printk.
Well anyways, how to do the same in the Makefile? I tried adding
ccflags-$(CONFIG_OMAP2_DSS_DEBUG_SUPPORT) += -DEBUG
to makefile in dss directory but of no use.
-D option for the compiler is used to set defines. So it should be
-DDEBUG
Tomi
Hi everyone,
this patch series aims at cleaning up of DSS of printk()'s enabled with
dss_debug and replace them with generic dynamic debug printing.
The 1st patch
* moved DEBUG flag definition to Makefile
The 2nd patch
* replaces printk() in DSSDBG definition with pr_debug()
* removes DSSDBGF definition and replaces its instances with DSSDBG()
The 3rd patch
* cleans up printk()'s in omap_dispc_unregister_isr() and
_dsi_print_reset_status() with pr_debug()
* removes dss_debug variable
Changes from V1 to V2:
* added debug messages to DSSDBG calls
* added patch "OMAPDSS: Remove dss_debug variable"
Changes from V2 to V3
* added patch "OMAPDSS: Move definition of DEBUG flag to Makefile"
All your comments and suggestions are welcome.
Refenence Tree:
git://gitorious.org/linux-omap-dss2/chandrabhanus-linux.git dss_cleanup
Regards,
Chandrabhanu
Chandrabhanu Mahapatra (3):
OMAPDSS: Move definition of DEBUG flag to Makefile
OMAPDSS: Cleanup DSSDBG with dynamic pr_debug function
OMAPDSS: Remove dss_debug variable
drivers/video/omap2/dss/Makefile | 1 +
drivers/video/omap2/dss/apply.c | 8 +++----
drivers/video/omap2/dss/core.c | 5 ----
drivers/video/omap2/dss/dispc.c | 39 +++++++++++-------------------
drivers/video/omap2/dss/dsi.c | 49 ++++++++++++++++----------------------
drivers/video/omap2/dss/dss.h | 38 +++++------------------------
6 files changed, 45 insertions(+), 95 deletions(-)
--
1.7.10
In OMAPDSS the DEBUG flag is set only after the OMAPDSS module is called, for
which the debugging capabilities are available only after its proper
initialization. As a result of which tracking of bugs prior to or during initial
process becomes difficult. So, the definition of DEBUG is being moved to the
corresponding Makefile.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/Makefile | 1 +
drivers/video/omap2/dss/dss.h | 4 ----
2 files changed, 1 insertion(+), 4 deletions(-)
The printk in DSSDBG function definition is replaced with dynamic debug enabled
pr_debug(). The use of dynamic debugging provides more flexibility as each debug
statement can be enabled or disabled dynamically on basis of source filename,
line number, module name etc. by writing to a control file in debugfs
filesystem. For better understanding please refer to
Documentation/dynamic-debug-howto.txt.
The DSSDBGF() differs from DSSDBG() by providing function name. However,
function name, line number, module name and thread ID can be printed through
dynamic debug by setting appropriate flags 'f','l','m' and 't' in the debugfs
control file. So, DSSDBGF instances are replaced with DSSDBG.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/apply.c | 8 ++++----
drivers/video/omap2/dss/dsi.c | 12 ++++++------
drivers/video/omap2/dss/dss.h | 34 ++++++++--------------------------
3 files changed, 18 insertions(+), 36 deletions(-)
The debug prints in omap_dispc_unregister_isr() and _dsi_print_reset_status()
are replaced with dynamic debug enabled pr_debug(). So, as the final dependency
on dss_debug variable is replaced with dyndbg, the dss_debug variable is
removed.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/core.c | 5 -----
drivers/video/omap2/dss/dispc.c | 39 ++++++++++++++-------------------------
drivers/video/omap2/dss/dsi.c | 37 ++++++++++++++-----------------------
drivers/video/omap2/dss/dss.h | 4 ----
4 files changed, 28 insertions(+), 57 deletions(-)
@@ -3669,34 +3669,26 @@ int omap_dispc_unregister_isr(omap_dispc_isr_t isr, void *arg, u32 mask)}EXPORT_SYMBOL(omap_dispc_unregister_isr);-#ifdef DEBUGstaticvoidprint_irq_status(u32status){if((status&dispc.irq_error_mask)=0)return;-printk(KERN_DEBUG"DISPC IRQ: 0x%x: ",status);--#define PIS(x) \-if(status&DISPC_IRQ_##x)\-printk(#x" ");-PIS(GFX_FIFO_UNDERFLOW);-PIS(OCP_ERR);-PIS(VID1_FIFO_UNDERFLOW);-PIS(VID2_FIFO_UNDERFLOW);-if(dss_feat_get_num_ovls()>3)-PIS(VID3_FIFO_UNDERFLOW);-PIS(SYNC_LOST);-PIS(SYNC_LOST_DIGIT);-if(dss_has_feature(FEAT_MGR_LCD2))-PIS(SYNC_LOST2);-if(dss_has_feature(FEAT_MGR_LCD3))-PIS(SYNC_LOST3);+#define PIS(x) (status & DISPC_IRQ_##x) ? (#x " ") : ""++pr_debug("DISPC IRQ: 0x%x: %s%s%s%s%s%s%s%s%s\n",+status,+PIS(OCP_ERR),+PIS(GFX_FIFO_UNDERFLOW),+PIS(VID1_FIFO_UNDERFLOW),+PIS(VID2_FIFO_UNDERFLOW),+dss_feat_get_num_ovls()>3?PIS(VID3_FIFO_UNDERFLOW):"",+PIS(SYNC_LOST),+PIS(SYNC_LOST_DIGIT),+dss_has_feature(FEAT_MGR_LCD2)?PIS(SYNC_LOST2):"",+dss_has_feature(FEAT_MGR_LCD3)?PIS(SYNC_LOST3):"");#undef PIS--printk("\n");}-#endif/* Called from dss.c. Note that we don't touch clocks here,*butwepresumetheyareonbecausewegotanIRQ.However,
@@ -3729,10 +3721,7 @@ static irqreturn_t omap_dispc_irq_handler(int irq, void *arg)spin_unlock(&dispc.irq_stats_lock);#endif-#ifdef DEBUG-if(dss_debug)-print_irq_status(irqstatus);-#endif+print_irq_status(irqstatus);/* Ack the interrupt. Do it here before clocks are possibly turned*off*/dispc_write_reg(DISPC_IRQSTATUS,irqstatus);
From: Tomi Valkeinen <hidden> Date: 2012-09-28 11:22:38
On Fri, 2012-09-28 at 15:53 +0530, Chandrabhanu Mahapatra wrote:
The printk in DSSDBG function definition is replaced with dynamic debug enabled
pr_debug(). The use of dynamic debugging provides more flexibility as each debug
statement can be enabled or disabled dynamically on basis of source filename,
line number, module name etc. by writing to a control file in debugfs
filesystem. For better understanding please refer to
Documentation/dynamic-debug-howto.txt.
The DSSDBGF() differs from DSSDBG() by providing function name. However,
function name, line number, module name and thread ID can be printed through
dynamic debug by setting appropriate flags 'f','l','m' and 't' in the debugfs
control file. So, DSSDBGF instances are replaced with DSSDBG.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/apply.c | 8 ++++----
drivers/video/omap2/dss/dsi.c | 12 ++++++------
drivers/video/omap2/dss/dss.h | 34 ++++++++--------------------------
3 files changed, 18 insertions(+), 36 deletions(-)
I think you could just do:
#ifdef DSS_SUBSYS_NAME
#ifdef pr_fmt
#undef pr_fmt
#endif
#define pr_fmt(fmt) DSS_SUBSYS_NAME ": " fmt
#endif
For the case where there's no DSS_SUBSYS_NAME, there's no need to undef
pr_fmt, only to redefine it again back to the original.
Tomi
From: Tomi Valkeinen <hidden> Date: 2012-09-28 11:34:17
On Fri, 2012-09-28 at 15:53 +0530, Chandrabhanu Mahapatra wrote:
Hi everyone,
this patch series aims at cleaning up of DSS of printk()'s enabled with
dss_debug and replace them with generic dynamic debug printing.
The 1st patch
* moved DEBUG flag definition to Makefile
The 2nd patch
* replaces printk() in DSSDBG definition with pr_debug()
* removes DSSDBGF definition and replaces its instances with DSSDBG()
The 3rd patch
* cleans up printk()'s in omap_dispc_unregister_isr() and
_dsi_print_reset_status() with pr_debug()
* removes dss_debug variable
Changes from V1 to V2:
* added debug messages to DSSDBG calls
* added patch "OMAPDSS: Remove dss_debug variable"
Changes from V2 to V3
* added patch "OMAPDSS: Move definition of DEBUG flag to Makefile"
All your comments and suggestions are welcome.
There's one thing that's not quite nice about omapdss's debug print
behavior after this series.
CONFIG_OMAP2_DSS_DEBUG_SUPPORT is marked "default y", and it's also been
safe to enable earlier as we had the dss_debug variable to prevent the
debug prints. But after this series, the debug prints are enabled, and
will spam the kernel log quite heavily.
And that happens with both dynamic debugging enabled and disabled.
How things should work:
For kernels with dynamic debugging disabled: by default the dss debugs
are not compiled, and the user needs to explicitly enable them in the
kernel config.
For kernels with dynamic debugging enabled: by default the dss debugs
are compiled in, but not enabled. A Kconfig option can be set to make
the debugs enabled by default.
In addition to those, we have the debugfs files. Those should be usable
regardless of the debug prints.
So I suggest the following:
- Remove CONFIG_OMAP2_DSS_DEBUG_SUPPORT. We can't re-use it, because it
may be enabled in user's kernel configs.
- Add new Kconfig option: CONFIG_OMAP2_DSS_DEBUG. This will set DEBUG in
the makefile. This is off by default.
- Add new Kconfig option: CONFIG_OMAP2_DSS_DEBUGFS. This will be use to
decide if debugfs functionality is compiled in or not. This is off by
default.
Tomi
From: Tomi Valkeinen <hidden> Date: 2012-09-28 11:37:47
On Fri, 2012-09-28 at 17:00 +0530, Mahapatra, Chandrabhanu wrote:
quoted
I think you could just do:
#ifdef DSS_SUBSYS_NAME
#ifdef pr_fmt
#undef pr_fmt
#endif
#define pr_fmt(fmt) DSS_SUBSYS_NAME ": " fmt
#endif
For the case where there's no DSS_SUBSYS_NAME, there's no need to undef
pr_fmt, only to redefine it again back to the original.
Tomi
Ok. But I thought it could be more clearer if the definition of pr_fmt
is more clearer in both the cases, when DSS_SUBSYS_NAME is defined and
when not.
On Fri, Sep 28, 2012 at 4:52 PM, Tomi Valkeinen [off-list ref] wrote:
On Fri, 2012-09-28 at 15:53 +0530, Chandrabhanu Mahapatra wrote:
quoted
The printk in DSSDBG function definition is replaced with dynamic debug enabled
pr_debug(). The use of dynamic debugging provides more flexibility as each debug
statement can be enabled or disabled dynamically on basis of source filename,
line number, module name etc. by writing to a control file in debugfs
filesystem. For better understanding please refer to
Documentation/dynamic-debug-howto.txt.
The DSSDBGF() differs from DSSDBG() by providing function name. However,
function name, line number, module name and thread ID can be printed through
dynamic debug by setting appropriate flags 'f','l','m' and 't' in the debugfs
control file. So, DSSDBGF instances are replaced with DSSDBG.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/apply.c | 8 ++++----
drivers/video/omap2/dss/dsi.c | 12 ++++++------
drivers/video/omap2/dss/dss.h | 34 ++++++++--------------------------
3 files changed, 18 insertions(+), 36 deletions(-)
I think you could just do:
#ifdef DSS_SUBSYS_NAME
#ifdef pr_fmt
#undef pr_fmt
#endif
#define pr_fmt(fmt) DSS_SUBSYS_NAME ": " fmt
#endif
For the case where there's no DSS_SUBSYS_NAME, there's no need to undef
pr_fmt, only to redefine it again back to the original.
Tomi
Ok. But I thought it could be more clearer if the definition of pr_fmt
is more clearer in both the cases, when DSS_SUBSYS_NAME is defined and
when not.
--
Chandrabhanu Mahapatra
Texas Instruments India Pvt. Ltd.
On Fri, Sep 28, 2012 at 5:04 PM, Tomi Valkeinen [off-list ref] wrote:
On Fri, 2012-09-28 at 15:53 +0530, Chandrabhanu Mahapatra wrote:
quoted
Hi everyone,
this patch series aims at cleaning up of DSS of printk()'s enabled with
dss_debug and replace them with generic dynamic debug printing.
The 1st patch
* moved DEBUG flag definition to Makefile
The 2nd patch
* replaces printk() in DSSDBG definition with pr_debug()
* removes DSSDBGF definition and replaces its instances with DSSDBG()
The 3rd patch
* cleans up printk()'s in omap_dispc_unregister_isr() and
_dsi_print_reset_status() with pr_debug()
* removes dss_debug variable
Changes from V1 to V2:
* added debug messages to DSSDBG calls
* added patch "OMAPDSS: Remove dss_debug variable"
Changes from V2 to V3
* added patch "OMAPDSS: Move definition of DEBUG flag to Makefile"
All your comments and suggestions are welcome.
There's one thing that's not quite nice about omapdss's debug print
behavior after this series.
CONFIG_OMAP2_DSS_DEBUG_SUPPORT is marked "default y", and it's also been
safe to enable earlier as we had the dss_debug variable to prevent the
debug prints. But after this series, the debug prints are enabled, and
will spam the kernel log quite heavily.
And that happens with both dynamic debugging enabled and disabled.
Yes, I had noticed that but I thought a better way to disable debug
prints is to disable both dynamic debugging (CONFIG_DYNAMIC_DEBUG) and
CONFIG_OMAP2_DSS_DEBUG_SUPPORT. May be CONFIG_OMAP2_DSS_DEBUG_SUPPORT
should have been false by default.
How things should work:
For kernels with dynamic debugging disabled: by default the dss debugs
are not compiled, and the user needs to explicitly enable them in the
kernel config.
For kernels with dynamic debugging enabled: by default the dss debugs
are compiled in, but not enabled. A Kconfig option can be set to make
the debugs enabled by default.
In addition to those, we have the debugfs files. Those should be usable
regardless of the debug prints.
So I suggest the following:
- Remove CONFIG_OMAP2_DSS_DEBUG_SUPPORT. We can't re-use it, because it
may be enabled in user's kernel configs.
- Add new Kconfig option: CONFIG_OMAP2_DSS_DEBUG. This will set DEBUG in
the makefile. This is off by default.
- Add new Kconfig option: CONFIG_OMAP2_DSS_DEBUGFS. This will be use to
decide if debugfs functionality is compiled in or not. This is off by
default.
Tomi
Well, I had a different perception. If one needs to debug then both
debugfs and debug prints should be enabled. If one needs only debug
prints then CONFIG_DEBUG_FS can be disabled.
But above approach seems to provide more flexibilty.
--
Chandrabhanu Mahapatra
Texas Instruments India Pvt. Ltd.
Hi everyone,
this patch series aims at cleaning up of DSS of printk()'s enabled with
dss_debug and replace them with generic dynamic debug printing.
The 1st patch
* moved DEBUG flag definition to Makefile
The 2nd patch
* created two debug config options OMAP2_DSS_DEBUG and OMAP2_DSS_DEBUGFS
The 3rd patch
* replaces printk() in DSSDBG definition with pr_debug()
* removes DSSDBGF definition and replaces its instances with DSSDBG()
The 4th patch
* cleans up printk()'s in omap_dispc_unregister_isr() and
_dsi_print_reset_status() with pr_debug()
The 5th patch
* removes dss_debug variable
Changes from V1 to V2:
* added debug messages to DSSDBG calls
* added patch "OMAPDSS: Remove dss_debug variable"
Changes from V2 to V3
* added patch "OMAPDSS: Move definition of DEBUG flag to Makefile"
Changes from V3 to V4:
* added patch "OMAPDSS: Create new debug config options"
* broke earlier patch "OMAPDSS: Remove dss_debug variable" into two parts as
"OMAPDSS: Replace multi part debug prints with pr_debug" and
"OMAPDSS: Remove dss_debug variable"
All your comments and suggestions are welcome.
Refenence Tree:
git://gitorious.org/linux-omap-dss2/chandrabhanus-linux.git dss_cleanup
Regards,
Chandrabhanu
Chandrabhanu Mahapatra (5):
OMAPDSS: Move definition of DEBUG flag to Makefile
OMAPDSS: Create new debug config options
OMAPDSS: Cleanup DSSDBG with dynamic pr_debug function
OMAPDSS: Replace multi part debug prints with pr_debug
OMAPDSS: Remove dss_debug variable
drivers/video/omap2/dss/Kconfig | 21 +++++++++++-----
drivers/video/omap2/dss/Makefile | 1 +
drivers/video/omap2/dss/apply.c | 8 +++----
drivers/video/omap2/dss/core.c | 11 +++------
drivers/video/omap2/dss/dispc.c | 40 ++++++++++++-------------------
drivers/video/omap2/dss/dsi.c | 49 ++++++++++++++++----------------------
drivers/video/omap2/dss/dss.c | 2 +-
drivers/video/omap2/dss/dss.h | 40 ++++++-------------------------
8 files changed, 66 insertions(+), 106 deletions(-)
--
1.7.10
In OMAPDSS the DEBUG flag is set only after the OMAPDSS module is called, for
which the debugging capabilities are available only after its proper
initialization. As a result of which tracking of bugs prior to or during initial
process becomes difficult. So, the definition of DEBUG is being moved to the
corresponding Makefile.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/Makefile | 1 +
drivers/video/omap2/dss/dss.h | 4 ----
2 files changed, 1 insertion(+), 4 deletions(-)
The config option CONFIG_OMAP2_DSS_DEBUG_SUPPORT has been removed and replaced
with CONFIG_OMAP2_DSS_DEBUG and CONFIG_OMAP2_DSS_DEBUGFS. CONFIG_OMAP2_DSS_DEBUG
enables DEBUG flag and CONFIG_OMAP2_DSS_DEBUGFS enables creation of debugfs for
OMAPDSS. Both the config options are disabled by default and can be enabled
independently of one another as per convenience.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/Kconfig | 21 +++++++++++++++------
drivers/video/omap2/dss/Makefile | 2 +-
drivers/video/omap2/dss/core.c | 6 +++---
drivers/video/omap2/dss/dss.c | 2 +-
drivers/video/omap2/dss/dss.h | 2 +-
5 files changed, 21 insertions(+), 12 deletions(-)
The printk in DSSDBG function definition is replaced with dynamic debug enabled
pr_debug(). The use of dynamic debugging provides more flexibility as each debug
statement can be enabled or disabled dynamically on basis of source filename,
line number, module name etc., by writing to a control file in debugfs
filesystem. For better understanding please refer to
Documentation/dynamic-debug-howto.txt.
The DSSDBGF() differs from DSSDBG() by providing function name. However,
function name, line number, module name and thread ID can be printed through
dynamic debug by setting appropriate flags 'f','l','m' and 't' in the debugfs
control file. So, DSSDBGF instances are replaced with DSSDBG.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/apply.c | 8 ++++----
drivers/video/omap2/dss/dsi.c | 12 ++++++------
drivers/video/omap2/dss/dss.h | 34 ++++++++--------------------------
3 files changed, 18 insertions(+), 36 deletions(-)
The omap_dispc_unregister_isr() and _dsi_print_reset_status() consist of a
number of debug prints which need to be enabled all at once or none at all. So,
these debug prints in corresponding functions are replaced with one dynamic
debug enabled pr_debug() each.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/dispc.c | 32 +++++++++++++-------------------
drivers/video/omap2/dss/dsi.c | 30 ++++++++++++++----------------
2 files changed, 27 insertions(+), 35 deletions(-)
All the debug prints have been replaced with pr_debug(). Thus, the dependency on
dss_debug variable is replaced with dyndbg in dynamic debugging mode and DEBUG
flag otherwise. So, the dss_debug variable is removed along with checks for
DEBUG flag.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/core.c | 5 -----
drivers/video/omap2/dss/dispc.c | 8 ++------
drivers/video/omap2/dss/dsi.c | 7 -------
drivers/video/omap2/dss/dss.h | 4 ----
4 files changed, 2 insertions(+), 22 deletions(-)
@@ -3690,7 +3689,6 @@ static void print_irq_status(u32 status)dss_has_feature(FEAT_MGR_LCD3)?PIS(SYNC_LOST3):"");#undef PIS}-#endif/* Called from dss.c. Note that we don't touch clocks here,*butwepresumetheyareonbecausewegotanIRQ.However,
@@ -3723,10 +3721,8 @@ static irqreturn_t omap_dispc_irq_handler(int irq, void *arg)spin_unlock(&dispc.irq_stats_lock);#endif-#ifdef DEBUG-if(dss_debug)-print_irq_status(irqstatus);-#endif+print_irq_status(irqstatus);+/* Ack the interrupt. Do it here before clocks are possibly turned*off*/dispc_write_reg(DISPC_IRQSTATUS,irqstatus);
@@ -1107,15 +1107,11 @@ static inline void dsi_enable_pll_clock(struct platform_device *dsidev,}}-#ifdef DEBUGstaticvoid_dsi_print_reset_status(structplatform_device*dsidev){u32l;intb0,b1,b2;-if(!dss_debug)-return;-/* A dummy read using the SCP interface to any DSIPHY register is*requiredafterDSIPHYresettocompletetheresetoftheDSIcomplex*I/O.*/
Hi Chandrabhanu,
On Saturday 29 September 2012 04:19 PM, Chandrabhanu Mahapatra wrote:
quoted hunk
The config option CONFIG_OMAP2_DSS_DEBUG_SUPPORT has been removed and replaced
with CONFIG_OMAP2_DSS_DEBUG and CONFIG_OMAP2_DSS_DEBUGFS. CONFIG_OMAP2_DSS_DEBUG
enables DEBUG flag and CONFIG_OMAP2_DSS_DEBUGFS enables creation of debugfs for
OMAPDSS. Both the config options are disabled by default and can be enabled
independently of one another as per convenience.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/Kconfig | 21 +++++++++++++++------
drivers/video/omap2/dss/Makefile | 2 +-
drivers/video/omap2/dss/core.c | 6 +++---
drivers/video/omap2/dss/dss.c | 2 +-
drivers/video/omap2/dss/dss.h | 2 +-
5 files changed, 21 insertions(+), 12 deletions(-)
You can make it as 'depends on CONFIG_DEBUG_FS', so that your check
below [1] becomes cleaner.
quoted hunk
help
- This enables debug messages. You need to enable printing
- with 'debug' module parameter.
+ This enables debugfs for OMAPDSS at <debugfs>/omapdss. This enables
+ querying about clock configuration and register configuration of dss,
+ dispc, dsi, hdmi and rfbi.
config OMAP2_DSS_COLLECT_IRQ_STATS
bool "Collect DSS IRQ statistics"
- depends on OMAP2_DSS_DEBUG_SUPPORT
+ depends on OMAP2_DSS_DEBUGFS
default n
help
Collect DSS IRQ statistics, printable via debugfs.
The config option CONFIG_OMAP2_DSS_DEBUG_SUPPORT has been removed and replaced
with CONFIG_OMAP2_DSS_DEBUG and CONFIG_OMAP2_DSS_DEBUGFS. CONFIG_OMAP2_DSS_DEBUG
enables DEBUG flag and CONFIG_OMAP2_DSS_DEBUGFS enables creation of debugfs for
OMAPDSS. Both the config options are disabled by default and can be enabled
independently of one another as per convenience.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
changes from V4 to V5
* added "depends on DEBUG_FS" to OMAP2_DSS_DEBUGFS defintion in Kconfig so that
CONFIG_OMAP2_DSS_DEBUGFS check become cleaner
drivers/video/omap2/dss/Kconfig | 22 ++++++++++++++++------
drivers/video/omap2/dss/Makefile | 2 +-
drivers/video/omap2/dss/core.c | 6 +++---
drivers/video/omap2/dss/dss.c | 2 +-
drivers/video/omap2/dss/dss.h | 2 +-
5 files changed, 22 insertions(+), 12 deletions(-)
From: Tomi Valkeinen <hidden> Date: 2012-10-05 12:33:53
On Sat, 2012-09-29 at 16:19 +0530, Chandrabhanu Mahapatra wrote:
quoted hunk
The omap_dispc_unregister_isr() and _dsi_print_reset_status() consist of a
number of debug prints which need to be enabled all at once or none at all. So,
these debug prints in corresponding functions are replaced with one dynamic
debug enabled pr_debug() each.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
drivers/video/omap2/dss/dispc.c | 32 +++++++++++++-------------------
drivers/video/omap2/dss/dsi.c | 30 ++++++++++++++----------------
2 files changed, 27 insertions(+), 35 deletions(-)
From: Tomi Valkeinen <hidden> Date: 2012-10-05 12:46:31
On Sat, 2012-09-29 at 16:19 +0530, Chandrabhanu Mahapatra wrote:
Hi everyone,
this patch series aims at cleaning up of DSS of printk()'s enabled with
dss_debug and replace them with generic dynamic debug printing.
Except for the missing debug print conversions in dsi.c this looks good.
Do you want me to apply the current series and you can send the dsi.c
patch later, or do you want to fix the dsi.c also before I apply?
Tomi
The various functions in dispc and dsi such as print_irq_status(),
print_irq_status_vc(), print_irq_status_cio() and _dsi_print_reset_status()
consist of a number of debug prints which need to be enabled all at once or none
at all. So, these debug prints in corresponding functions are replaced with one
dynamic debug enabled pr_debug() each.
Signed-off-by: Chandrabhanu Mahapatra <redacted>
---
Changes from V4 to V5:
* replaced prints in dsi functions print_irq_status, print_irq_status_vc() and
print_irq_status_cio() with single pr_debug()
* replaced macro VERBOSE_IRQ with static variable verbose_irq
drivers/video/omap2/dss/dispc.c | 32 +++-----
drivers/video/omap2/dss/dsi.c | 168 ++++++++++++++++++---------------------
2 files changed, 90 insertions(+), 110 deletions(-)
Tomi, Chandrabhanu,
On Friday 05 October 2012 06:16 PM, Tomi Valkeinen wrote:
On Sat, 2012-09-29 at 16:19 +0530, Chandrabhanu Mahapatra wrote:
quoted
Hi everyone,
this patch series aims at cleaning up of DSS of printk()'s enabled with
dss_debug and replace them with generic dynamic debug printing.
Except for the missing debug print conversions in dsi.c this looks good.
Do you want me to apply the current series and you can send the dsi.c
patch later, or do you want to fix the dsi.c also before I apply?
With the change for DSI, please feel free to add
Reviewed-by: Sumit Semwal <redacted>
BR,
~Sumit.