video: fbdev: pxa3xx_gcu: Convert timers to use timer_setup()
PATCH 1/1 video: fbdev: pxa3xx_gcu: Convert timers to use timer_setup()
In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly.
This also fixes the use of the "priv" variable in QERROR(), since it was pointing to struct timer_list, not struct pxa3xx_gcu_priv.
---
If you can take this for v4.15, please do. Otherwise, I can carry it in the timers tree in late rc1. Thanks!
--- drivers/video/fbdev/pxa3xx-gcu.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-)
drivers/video/fbdev/pxa3xx-gcu.c +10 -8
@@ -512,24 +512,26 @@ pxa3xx_gcu_mmap(struct file *file, struct vm_area_struct *vma)#ifdef PXA3XX_GCU_DEBUG_TIMER static struct timer_list pxa3xx_gcu_debug_timer; +static struct pxa3xx_gcu_priv *debug_timer_priv; -static void pxa3xx_gcu_debug_timedout (unsigned long ptr) +static void pxa3xx_gcu_debug_timedout (struct timer_list *unused) { -struct pxa3xx_gcu_priv *priv = (struct pxa3xx_gcu_priv *) ptr; +struct pxa3xx_gcu_priv *priv = debug_timer_priv;QERROR ("Timer DUMP" ); -/* init the timer structure */ -setup_timer (&pxa3xx_gcu_debug_timer, pxa3xx_gcu_debug_timedout, ptr);mod_timer (&pxa3xx_gcu_debug_timer, jiffies +5 *HZ ); } -static void pxa3xx_gcu_init_debug_timer (void ) +static void pxa3xx_gcu_init_debug_timer (struct pxa3xx_gcu_priv *priv) { -pxa3xx_gcu_debug_timedout ((unsigned long ) &pxa3xx_gcu_debug_timer); +/* init the timer structure */ + debug_timer_priv = priv; +timer_setup (&pxa3xx_gcu_debug_timer, pxa3xx_gcu_debug_timedout,0 ); +pxa3xx_gcu_debug_timedout (NULL ); }#else -static inline void pxa3xx_gcu_init_debug_timer (void ) {} +static inline void pxa3xx_gcu_init_debug_timer (struct pxa3xx_gcu_priv *) {}#endif static int
@@ -666,7 +668,7 @@ static int pxa3xx_gcu_probe(struct platform_device *pdev)platform_set_drvdata (pdev, priv); priv->resource_mem = r;pxa3xx_gcu_reset (priv); -pxa3xx_gcu_init_debug_timer (); +pxa3xx_gcu_init_debug_timer (priv); dev_info(dev, "registered @0x%p, DMA 0x%p (%d bytes), IRQ %d\n", (void *) r->start, (void *) priv->shared_phys,
Signature · 6 lines
2.7.4 -- Kees Cook Pixel Security
Quoted 13 lines · Kees Cook
In preparation for unconditionally passing the struct
timer_listpointer to all timer callbacks, switch to using the newtimer_setup()andfrom_timer()to pass the timer pointer explicitly.This also fixes the use of the "priv" variable in
QERROR(), since it was pointing to structtimer_list, not structpxa3xx_gcu_priv.Cc Bartlomiej Zolnierkiewicz <[email protected]>Cc "Gustavo A. R. Silva" <[email protected]>Cc Himanshu Jha <[email protected]>Signed-off-by Kees Cook <[email protected]>
Quoted 3 lines
---
If you can take this for v4.15, please do. Otherwise, I can carry it in the timers tree in late rc1. Thanks!
Thanks, I queued this for v4.15 with a trivial fix for:
drivers/video/fbdev/pxa3xx-gcu.c pxa3xx_gcu_mmap(struct file *file, struct vm_area_struct *vma) · line 535
Quoted 4 lines
#else
drivers/video/fbdev/pxa3xx-gcu.c +1
-1-static inline void pxa3xx_gcu_init_debug_timer (void ) {} +static inline void pxa3xx_gcu_init_debug_timer (struct pxa3xx_gcu_priv *) {}#endif
which caused:
drivers/video/fbdev/pxa3xx-gcu.c: In function ‘pxa3xx_gcu_init_debug_timer’:drivers/video/fbdev/pxa3xx-gcu.c:534:133: error: parameter name omitted make[3]: *** [drivers/video/fbdev/pxa3xx-gcu.o] Error 1
make[3]: *** Waiting for unfinished jobs....
for the non-debug case.
I also queued the original fbdev conversion patch on top of this one.
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics