Patch "Revert "Staging: panel: usleep_range is preferred over udelay"" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
Revert "Staging: panel: usleep_range is preferred over udelay"
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
revert-staging-panel-usleep_range-is-preferred-over-udelay.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
b64a1cbef6df47c986ad622b5b2e4d3d1940070cMon Sep 17 00:00:00 2001
From: Sudip Mukherjee <[email protected]>
Date: Sat, 23 Jan 2016 14:49:20 +0530
Subject: Revert "Staging: panel: usleep_range is preferred over udelay"
From: Sudip Mukherjee <[email protected]>
commit b64a1cbef6df47c986ad622b5b2e4d3d1940070c upstream.
This reverts commit ebd43516d3879f882a403836bba8bc5791f26a28.
We should not be sleeping inside spin_lock.
drivers/staging/panel/panel.c +15 -19
@@ -825,8 +825,7 @@ static void lcd_write_cmd_s(int cmd)lcd_send_serial (0x1F );/* R/W=W, RS=0 */ lcd_send_serial (cmd &0x0F );lcd_send_serial ((cmd >>4 ) &0x0F ); -/* the shortest command takes at least 40 us */ -usleep_range (40 ,100 ); +udelay (40 );/* the shortest command takes at least 40 us */ spin_unlock_irq (&pprt_lock); }
@@ -837,8 +836,7 @@ static void lcd_write_data_s(int data)lcd_send_serial (0x5F );/* R/W=W, RS=1 */ lcd_send_serial (data &0x0F );lcd_send_serial ((data >>4 ) &0x0F ); -/* the shortest data takes at least 40 us */ -usleep_range (40 ,100 ); +udelay (40 );/* the shortest data takes at least 40 us */ spin_unlock_irq (&pprt_lock); }
@@ -848,20 +846,19 @@ static void lcd_write_cmd_p8(int cmd)spin_lock_irq (&pprt_lock);/* present the data to the data port */ w_dtr (pprt, cmd); -/* maintain the data during 20 us before the strobe */ -usleep_range (20 ,100 ); +udelay (20 );/* maintain the data during 20 us before the strobe */ bits.e =BIT_SET ; bits.rs =BIT_CLR ; bits.rw =BIT_CLR ;set_ctrl_bits (); -usleep_range (40 ,100 );/* maintain the strobe during 40 us */ +udelay (40 );/* maintain the strobe during 40 us */ bits.e =BIT_CLR ;set_ctrl_bits (); -usleep_range (120 ,500 );/* the shortest command takes at least 120 us */ +udelay (120 );/* the shortest command takes at least 120 us */ spin_unlock_irq (&pprt_lock); }
@@ -871,20 +868,19 @@ static void lcd_write_data_p8(int data)spin_lock_irq (&pprt_lock);/* present the data to the data port */ w_dtr (pprt, data); -/* maintain the data during 20 us before the strobe */ -usleep_range (20 ,100 ); +udelay (20 );/* maintain the data during 20 us before the strobe */ bits.e =BIT_SET ; bits.rs =BIT_SET ; bits.rw =BIT_CLR ;set_ctrl_bits (); -usleep_range (40 ,100 );/* maintain the strobe during 40 us */ +udelay (40 );/* maintain the strobe during 40 us */ bits.e =BIT_CLR ;set_ctrl_bits (); -usleep_range (45 ,100 );/* the shortest data takes at least 45 us */ +udelay (45 );/* the shortest data takes at least 45 us */ spin_unlock_irq (&pprt_lock); }
@@ -894,7 +890,7 @@ static void lcd_write_cmd_tilcd(int cmd)spin_lock_irq (&pprt_lock);/* present the data to the control port */ w_ctr (pprt, cmd); -usleep_range (60 ,120 ); +udelay (60 );spin_unlock_irq (&pprt_lock); }
@@ -904,7 +900,7 @@ static void lcd_write_data_tilcd(int data)spin_lock_irq (&pprt_lock);/* present the data to the data port */ w_dtr (pprt, data); -usleep_range (60 ,120 ); +udelay (60 );spin_unlock_irq (&pprt_lock); }
@@ -947,7 +943,7 @@ static void lcd_clear_fast_s(void)lcd_send_serial (0x5F );/* R/W=W, RS=1 */ lcd_send_serial (' ' &0x0F );lcd_send_serial ((' ' >>4 ) &0x0F ); -usleep_range (40 ,100 );/* the shortest data takes at least 40 us */ +udelay (40 );/* the shortest data takes at least 40 us */ }spin_unlock_irq (&pprt_lock);
@@ -971,7 +967,7 @@ static void lcd_clear_fast_p8(void)w_dtr (pprt,' ' );/* maintain the data during 20 us before the strobe */ -usleep_range (20 ,100 ); +udelay (20 ); bits.e =BIT_SET ; bits.rs =BIT_SET ;
@@ -979,13 +975,13 @@ static void lcd_clear_fast_p8(void)set_ctrl_bits ();/* maintain the strobe during 40 us */ -usleep_range (40 ,100 ); +udelay (40 ); bits.e =BIT_CLR ;set_ctrl_bits ();/* the shortest data takes at least 45 us */ -usleep_range (45 ,100 ); +udelay (45 ); }spin_unlock_irq (&pprt_lock);
@@ -1007,7 +1003,7 @@ static void lcd_clear_fast_tilcd(void)for (pos =0 ; pos < lcd.height * lcd.hwidth; pos++) {/* present the data to the data port */ w_dtr (pprt,' ' ); -usleep_range (60 ,120 ); +udelay (60 ); }spin_unlock_irq (&pprt_lock);
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/revert-staging-panel-usleep_range-is-preferred-over-udelay.patch