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

Commit 81459169 authored by Alan Cox's avatar Alan Cox Committed by Linus Torvalds
Browse files

[PATCH] Fix some ucLinux breakage from the tty updates



Breakage reported by Adrian Bunk

Untested (no hardware)

Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 84542838
Loading
Loading
Loading
Loading
+10 −15
Original line number Diff line number Diff line
@@ -117,6 +117,7 @@ late_initcall(simcons_tty_init);
   tty driver.  */
void simcons_poll_tty (struct tty_struct *tty)
{
	char buf[32];	/* Not the nicest way to do it but I need it correct first */
	int flip = 0, send_break = 0;
	struct pollfd pfd;
	pfd.fd = 0;
@@ -124,21 +125,15 @@ void simcons_poll_tty (struct tty_struct *tty)

	if (V850_SIM_SYSCALL (poll, &pfd, 1, 0) > 0) {
		if (pfd.revents & POLLIN) {
			int left = TTY_FLIPBUF_SIZE - tty->flip.count;

			if (left > 0) {
				unsigned char *buf = tty->flip.char_buf_ptr;
				int rd = V850_SIM_SYSCALL (read, 0, buf, left);

			/* Real block hardware knows the transfer size before
			   transfer so the new tty buffering doesn't try to handle
			   this rather weird simulator specific case well */
			int rd = V850_SIM_SYSCALL (read, 0, buf, 32);
			if (rd > 0) {
					tty->flip.count += rd;
					tty->flip.char_buf_ptr += rd;
					memset (tty->flip.flag_buf_ptr, 0, rd);
					tty->flip.flag_buf_ptr += rd;
				tty_insert_flip_string(tty, buf, rd);
				flip = 1;
			} else
				send_break = 1;
			}
		} else if (pfd.revents & POLLERR)
			send_break = 1;
	}
+1 −3
Original line number Diff line number Diff line
@@ -128,9 +128,7 @@ static void rs_poll(unsigned long priv)

	while (__simc(SYS_select_one, 0, XTISS_SELECT_ONE_READ, (int)&tv,0,0)){
		__simc (SYS_read, 0, (unsigned long)&c, 1, 0, 0);
		tty->flip.count++;
		*tty->flip.char_buf_ptr++ = c;
		*tty->flip.flag_buf_ptr++ = TTY_NORMAL;
		tty_insert_flip_char(tty, c, TTY_NORMAL);
		i++;
	}

+1 −2
Original line number Diff line number Diff line
@@ -350,8 +350,7 @@ static inline void receive_chars(struct mcf_serial *info)
		}
		tty_insert_flip_char(tty, ch, flag);
	}

	schedule_work(&tty->flip.work);
	tty_flip_buffer_push(tty);
	return;
}