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

Commit e1f2084e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
  input/atari: Fix mouse movement and button mapping
  input/atari: Fix atarimouse init
  input/atari: Use the correct mouse interrupt hook
  m68k/atari: Do not use "/" in interrupt names
  m68k: unistd - Comment out definitions for unimplemented syscalls
  m68k: Really wire up sys_pselect6 and sys_ppoll
  m68k: Merge mmu and non-mmu versions of sys_call_table
  MAINTAINERS: Roman Zippel has been MIA for several years.
  m68k: bitops - Never step beyond the end of the bitmap
  m68k: bitops - offset == ((long)p - (long)vaddr) * 8
parents e33ab8f2 659e6ed5
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -405,8 +405,8 @@ S: Maintained
F:	sound/oss/aedsp16.c

AFFS FILE SYSTEM
M:	Roman Zippel <zippel@linux-m68k.org>
S:	Maintained
L:	linux-fsdevel@vger.kernel.org
S:	Orphan
F:	Documentation/filesystems/affs.txt
F:	fs/affs/

@@ -2946,8 +2946,8 @@ F: drivers/block/cciss*
F:	include/linux/cciss_ioctl.h

HFS FILESYSTEM
M:	Roman Zippel <zippel@linux-m68k.org>
S:	Maintained
L:	linux-fsdevel@vger.kernel.org
S:	Orphan
F:	Documentation/filesystems/hfs.txt
F:	fs/hfs/

@@ -4001,7 +4001,6 @@ F: arch/m32r/

M68K ARCHITECTURE
M:	Geert Uytterhoeven <geert@linux-m68k.org>
M:	Roman Zippel <zippel@linux-m68k.org>
L:	linux-m68k@lists.linux-m68k.org
W:	http://www.linux-m68k.org/
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git
+3 −6
Original line number Diff line number Diff line
@@ -36,13 +36,10 @@

/* Hook for MIDI serial driver */
void (*atari_MIDI_interrupt_hook) (void);
/* Hook for mouse driver */
void (*atari_mouse_interrupt_hook) (char *);
/* Hook for keyboard inputdev  driver */
void (*atari_input_keyboard_interrupt_hook) (unsigned char, char);
/* Hook for mouse inputdev  driver */
void (*atari_input_mouse_interrupt_hook) (char *);
EXPORT_SYMBOL(atari_mouse_interrupt_hook);
EXPORT_SYMBOL(atari_input_keyboard_interrupt_hook);
EXPORT_SYMBOL(atari_input_mouse_interrupt_hook);

@@ -263,8 +260,8 @@ static irqreturn_t atari_keyboard_interrupt(int irq, void *dummy)
			kb_state.buf[kb_state.len++] = scancode;
			if (kb_state.len == 3) {
				kb_state.state = KEYBOARD;
				if (atari_mouse_interrupt_hook)
					atari_mouse_interrupt_hook(kb_state.buf);
				if (atari_input_mouse_interrupt_hook)
					atari_input_mouse_interrupt_hook(kb_state.buf);
			}
			break;

@@ -575,7 +572,7 @@ int atari_keyb_init(void)
	kb_state.len = 0;

	error = request_irq(IRQ_MFP_ACIA, atari_keyboard_interrupt,
			    IRQ_TYPE_SLOW, "keyboard/mouse/MIDI",
			    IRQ_TYPE_SLOW, "keyboard,mouse,MIDI",
			    atari_keyboard_interrupt);
	if (error)
		return error;
+1 −1
Original line number Diff line number Diff line
@@ -180,7 +180,7 @@ void __init stdma_init(void)
{
	stdma_isr = NULL;
	if (request_irq(IRQ_MFP_FDC, stdma_int, IRQ_TYPE_SLOW | IRQF_SHARED,
			"ST-DMA: floppy/ACSI/IDE/Falcon-SCSI", stdma_int))
			"ST-DMA floppy,ACSI,IDE,Falcon-SCSI", stdma_int))
		pr_err("Couldn't register ST-DMA interrupt\n");
}

+0 −2
Original line number Diff line number Diff line
@@ -34,8 +34,6 @@ void ikbd_joystick_disable(void);

/* Hook for MIDI serial driver */
extern void (*atari_MIDI_interrupt_hook) (void);
/* Hook for mouse driver */
extern void (*atari_mouse_interrupt_hook) (char *);
/* Hook for keyboard inputdev  driver */
extern void (*atari_input_keyboard_interrupt_hook) (unsigned char, char);
/* Hook for mouse inputdev  driver */
+57 −30
Original line number Diff line number Diff line
@@ -181,14 +181,15 @@ static inline int find_first_zero_bit(const unsigned long *vaddr,
{
	const unsigned long *p = vaddr;
	int res = 32;
	unsigned int words;
	unsigned long num;

	if (!size)
		return 0;

	size = (size + 31) >> 5;
	words = (size + 31) >> 5;
	while (!(num = ~*p++)) {
		if (!--size)
		if (!--words)
			goto out;
	}

@@ -196,7 +197,8 @@ static inline int find_first_zero_bit(const unsigned long *vaddr,
			      : "=d" (res) : "d" (num & -num));
	res ^= 31;
out:
	return ((long)p - (long)vaddr - 4) * 8 + res;
	res += ((long)p - (long)vaddr - 4) * 8;
	return res < size ? res : size;
}

static inline int find_next_zero_bit(const unsigned long *vaddr, int size,
@@ -215,27 +217,32 @@ static inline int find_next_zero_bit(const unsigned long *vaddr, int size,
		/* Look for zero in first longword */
		__asm__ __volatile__ ("bfffo %1{#0,#0},%0"
				      : "=d" (res) : "d" (num & -num));
		if (res < 32)
			return offset + (res ^ 31);
		if (res < 32) {
			offset += res ^ 31;
			return offset < size ? offset : size;
		}
		offset += 32;

		if (offset >= size)
			return size;
	}
	/* No zero yet, search remaining full bytes for a zero */
	res = find_first_zero_bit(p, size - ((long)p - (long)vaddr) * 8);
	return offset + res;
	return offset + find_first_zero_bit(p, size - offset);
}

static inline int find_first_bit(const unsigned long *vaddr, unsigned size)
{
	const unsigned long *p = vaddr;
	int res = 32;
	unsigned int words;
	unsigned long num;

	if (!size)
		return 0;

	size = (size + 31) >> 5;
	words = (size + 31) >> 5;
	while (!(num = *p++)) {
		if (!--size)
		if (!--words)
			goto out;
	}

@@ -243,7 +250,8 @@ static inline int find_first_bit(const unsigned long *vaddr, unsigned size)
			      : "=d" (res) : "d" (num & -num));
	res ^= 31;
out:
	return ((long)p - (long)vaddr - 4) * 8 + res;
	res += ((long)p - (long)vaddr - 4) * 8;
	return res < size ? res : size;
}

static inline int find_next_bit(const unsigned long *vaddr, int size,
@@ -262,13 +270,17 @@ static inline int find_next_bit(const unsigned long *vaddr, int size,
		/* Look for one in first longword */
		__asm__ __volatile__ ("bfffo %1{#0,#0},%0"
				      : "=d" (res) : "d" (num & -num));
		if (res < 32)
			return offset + (res ^ 31);
		if (res < 32) {
			offset += res ^ 31;
			return offset < size ? offset : size;
		}
		offset += 32;

		if (offset >= size)
			return size;
	}
	/* No one yet, search remaining full bytes for a one */
	res = find_first_bit(p, size - ((long)p - (long)vaddr) * 8);
	return offset + res;
	return offset + find_first_bit(p, size - offset);
}

/*
@@ -366,23 +378,25 @@ static inline int test_bit_le(int nr, const void *vaddr)
static inline int find_first_zero_bit_le(const void *vaddr, unsigned size)
{
	const unsigned long *p = vaddr, *addr = vaddr;
	int res;
	int res = 0;
	unsigned int words;

	if (!size)
		return 0;

	size = (size >> 5) + ((size & 31) > 0);
	while (*p++ == ~0UL)
	{
		if (--size == 0)
			return (p - addr) << 5;
	words = (size >> 5) + ((size & 31) > 0);
	while (*p++ == ~0UL) {
		if (--words == 0)
			goto out;
	}

	--p;
	for (res = 0; res < 32; res++)
		if (!test_bit_le(res, p))
			break;
	return (p - addr) * 32 + res;
out:
	res += (p - addr) * 32;
	return res < size ? res : size;
}

static inline unsigned long find_next_zero_bit_le(const void *addr,
@@ -400,10 +414,15 @@ static inline unsigned long find_next_zero_bit_le(const void *addr,
		offset -= bit;
		/* Look for zero in first longword */
		for (res = bit; res < 32; res++)
			if (!test_bit_le(res, p))
				return offset + res;
			if (!test_bit_le(res, p)) {
				offset += res;
				return offset < size ? offset : size;
			}
		p++;
		offset += 32;

		if (offset >= size)
			return size;
	}
	/* No zero yet, search remaining full bytes for a zero */
	return offset + find_first_zero_bit_le(p, size - offset);
@@ -412,22 +431,25 @@ static inline unsigned long find_next_zero_bit_le(const void *addr,
static inline int find_first_bit_le(const void *vaddr, unsigned size)
{
	const unsigned long *p = vaddr, *addr = vaddr;
	int res;
	int res = 0;
	unsigned int words;

	if (!size)
		return 0;

	size = (size >> 5) + ((size & 31) > 0);
	words = (size >> 5) + ((size & 31) > 0);
	while (*p++ == 0UL) {
		if (--size == 0)
			return (p - addr) << 5;
		if (--words == 0)
			goto out;
	}

	--p;
	for (res = 0; res < 32; res++)
		if (test_bit_le(res, p))
			break;
	return (p - addr) * 32 + res;
out:
	res += (p - addr) * 32;
	return res < size ? res : size;
}

static inline unsigned long find_next_bit_le(const void *addr,
@@ -445,10 +467,15 @@ static inline unsigned long find_next_bit_le(const void *addr,
		offset -= bit;
		/* Look for one in first longword */
		for (res = bit; res < 32; res++)
			if (test_bit_le(res, p))
				return offset + res;
			if (test_bit_le(res, p)) {
				offset += res;
				return offset < size ? offset : size;
			}
		p++;
		offset += 32;

		if (offset >= size)
			return size;
	}
	/* No set bit yet, search remaining full bytes for a set bit */
	return offset + find_first_bit_le(p, size - offset);
Loading