Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+15 −19
Original line number Diff line number Diff line
@@ -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);