Commit b64a1cbe authored by Sudip Mukherjee's avatar Sudip Mukherjee Committed by Greg Kroah-Hartman

Revert "Staging: panel: usleep_range is preferred over udelay"

This reverts commit ebd43516.

We should not be sleeping inside spin_lock.

Fixes: ebd43516 ("Staging: panel: usleep_range is preferred over udelay")
Cc: Sirnam Swetha <theonly.ultimate@gmail.com>
Signed-off-by: default avatarSudip Mukherjee <sudip@vectorindia.org>
Reported-by: default avatarHuang, Ying <ying.huang@intel.com>
Tested-by: default avatarHuang, Ying <ying.huang@intel.com>
Cc: stable <stable@vger.kernel.org> # 4.4
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f744c423
...@@ -825,8 +825,7 @@ static void lcd_write_cmd_s(int cmd) ...@@ -825,8 +825,7 @@ static void lcd_write_cmd_s(int cmd)
lcd_send_serial(0x1F); /* R/W=W, RS=0 */ lcd_send_serial(0x1F); /* R/W=W, RS=0 */
lcd_send_serial(cmd & 0x0F); lcd_send_serial(cmd & 0x0F);
lcd_send_serial((cmd >> 4) & 0x0F); lcd_send_serial((cmd >> 4) & 0x0F);
/* the shortest command takes at least 40 us */ udelay(40); /* the shortest command takes at least 40 us */
usleep_range(40, 100);
spin_unlock_irq(&pprt_lock); spin_unlock_irq(&pprt_lock);
} }
...@@ -837,8 +836,7 @@ static void lcd_write_data_s(int data) ...@@ -837,8 +836,7 @@ static void lcd_write_data_s(int data)
lcd_send_serial(0x5F); /* R/W=W, RS=1 */ lcd_send_serial(0x5F); /* R/W=W, RS=1 */
lcd_send_serial(data & 0x0F); lcd_send_serial(data & 0x0F);
lcd_send_serial((data >> 4) & 0x0F); lcd_send_serial((data >> 4) & 0x0F);
/* the shortest data takes at least 40 us */ udelay(40); /* the shortest data takes at least 40 us */
usleep_range(40, 100);
spin_unlock_irq(&pprt_lock); spin_unlock_irq(&pprt_lock);
} }
...@@ -848,20 +846,19 @@ static void lcd_write_cmd_p8(int cmd) ...@@ -848,20 +846,19 @@ static void lcd_write_cmd_p8(int cmd)
spin_lock_irq(&pprt_lock); spin_lock_irq(&pprt_lock);
/* present the data to the data port */ /* present the data to the data port */
w_dtr(pprt, cmd); w_dtr(pprt, cmd);
/* maintain the data during 20 us before the strobe */ udelay(20); /* maintain the data during 20 us before the strobe */
usleep_range(20, 100);
bits.e = BIT_SET; bits.e = BIT_SET;
bits.rs = BIT_CLR; bits.rs = BIT_CLR;
bits.rw = BIT_CLR; bits.rw = BIT_CLR;
set_ctrl_bits(); 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; bits.e = BIT_CLR;
set_ctrl_bits(); 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); spin_unlock_irq(&pprt_lock);
} }
...@@ -871,20 +868,19 @@ static void lcd_write_data_p8(int data) ...@@ -871,20 +868,19 @@ static void lcd_write_data_p8(int data)
spin_lock_irq(&pprt_lock); spin_lock_irq(&pprt_lock);
/* present the data to the data port */ /* present the data to the data port */
w_dtr(pprt, data); w_dtr(pprt, data);
/* maintain the data during 20 us before the strobe */ udelay(20); /* maintain the data during 20 us before the strobe */
usleep_range(20, 100);
bits.e = BIT_SET; bits.e = BIT_SET;
bits.rs = BIT_SET; bits.rs = BIT_SET;
bits.rw = BIT_CLR; bits.rw = BIT_CLR;
set_ctrl_bits(); 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; bits.e = BIT_CLR;
set_ctrl_bits(); 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); spin_unlock_irq(&pprt_lock);
} }
...@@ -894,7 +890,7 @@ static void lcd_write_cmd_tilcd(int cmd) ...@@ -894,7 +890,7 @@ static void lcd_write_cmd_tilcd(int cmd)
spin_lock_irq(&pprt_lock); spin_lock_irq(&pprt_lock);
/* present the data to the control port */ /* present the data to the control port */
w_ctr(pprt, cmd); w_ctr(pprt, cmd);
usleep_range(60, 120); udelay(60);
spin_unlock_irq(&pprt_lock); spin_unlock_irq(&pprt_lock);
} }
...@@ -904,7 +900,7 @@ static void lcd_write_data_tilcd(int data) ...@@ -904,7 +900,7 @@ static void lcd_write_data_tilcd(int data)
spin_lock_irq(&pprt_lock); spin_lock_irq(&pprt_lock);
/* present the data to the data port */ /* present the data to the data port */
w_dtr(pprt, data); w_dtr(pprt, data);
usleep_range(60, 120); udelay(60);
spin_unlock_irq(&pprt_lock); spin_unlock_irq(&pprt_lock);
} }
...@@ -947,7 +943,7 @@ static void lcd_clear_fast_s(void) ...@@ -947,7 +943,7 @@ static void lcd_clear_fast_s(void)
lcd_send_serial(0x5F); /* R/W=W, RS=1 */ lcd_send_serial(0x5F); /* R/W=W, RS=1 */
lcd_send_serial(' ' & 0x0F); lcd_send_serial(' ' & 0x0F);
lcd_send_serial((' ' >> 4) & 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); spin_unlock_irq(&pprt_lock);
...@@ -971,7 +967,7 @@ static void lcd_clear_fast_p8(void) ...@@ -971,7 +967,7 @@ static void lcd_clear_fast_p8(void)
w_dtr(pprt, ' '); w_dtr(pprt, ' ');
/* maintain the data during 20 us before the strobe */ /* maintain the data during 20 us before the strobe */
usleep_range(20, 100); udelay(20);
bits.e = BIT_SET; bits.e = BIT_SET;
bits.rs = BIT_SET; bits.rs = BIT_SET;
...@@ -979,13 +975,13 @@ static void lcd_clear_fast_p8(void) ...@@ -979,13 +975,13 @@ static void lcd_clear_fast_p8(void)
set_ctrl_bits(); set_ctrl_bits();
/* maintain the strobe during 40 us */ /* maintain the strobe during 40 us */
usleep_range(40, 100); udelay(40);
bits.e = BIT_CLR; bits.e = BIT_CLR;
set_ctrl_bits(); set_ctrl_bits();
/* the shortest data takes at least 45 us */ /* the shortest data takes at least 45 us */
usleep_range(45, 100); udelay(45);
} }
spin_unlock_irq(&pprt_lock); spin_unlock_irq(&pprt_lock);
...@@ -1007,7 +1003,7 @@ static void lcd_clear_fast_tilcd(void) ...@@ -1007,7 +1003,7 @@ static void lcd_clear_fast_tilcd(void)
for (pos = 0; pos < lcd.height * lcd.hwidth; pos++) { for (pos = 0; pos < lcd.height * lcd.hwidth; pos++) {
/* present the data to the data port */ /* present the data to the data port */
w_dtr(pprt, ' '); w_dtr(pprt, ' ');
usleep_range(60, 120); udelay(60);
} }
spin_unlock_irq(&pprt_lock); spin_unlock_irq(&pprt_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment