Thread (4 messages) flat view 4 messages, 3 authors, 5d ago

Re: [PATCH 1/5] m68k: Fix atari mouse movement

From: Michael Schmitz <schmitzmic@gmail.com>
Date: 2026-08-16 05:04:01
Also in: linux-m68k
Subsystem: m68k architecture, the rest · Maintainers: Geert Uytterhoeven, Linus Torvalds

Hi Geert,

Am 15.08.2026 um 11:15 schrieb Michael Schmitz:
quoted
quoted
--- a/drivers/input/mouse/atarimouse.c
+++ b/drivers/input/mouse/atarimouse.c
@@ -70,9 +70,12 @@ static void atamouse_interrupt(char *buf)
Alternative, you could change/restore the function's signature to take a
"signed char *".
Agreed, but without a way to test this, I'd rather wait for Miro
confirming that change also fixed the issue.
Still untested, but even though not 100% identical, this change 
(whitespace-damaged) produces functionally equivalent code:
diff --git a/arch/m68k/atari/atakeyb.c b/arch/m68k/atari/atakeyb.c
index 49a9a459bdf4..6e150f816c02 100644
--- a/arch/m68k/atari/atakeyb.c
+++ b/arch/m68k/atari/atakeyb.c
@@ -39,7 +39,7 @@ void (*atari_MIDI_interrupt_hook) (void);
  /* 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 *);
+void (*atari_input_mouse_interrupt_hook) (signed char *);
  EXPORT_SYMBOL(atari_input_keyboard_interrupt_hook);
  EXPORT_SYMBOL(atari_input_mouse_interrupt_hook);
diff --git a/arch/m68k/include/asm/atarikb.h 
b/arch/m68k/include/asm/atarikb.h
index 68f3622bf591..b2d9e7676324 100644
--- a/arch/m68k/include/asm/atarikb.h
+++ b/arch/m68k/include/asm/atarikb.h
@@ -37,7 +37,7 @@ extern void (*atari_MIDI_interrupt_hook) (void);
  /* Hook for keyboard inputdev  driver */
  extern void (*atari_input_keyboard_interrupt_hook) (unsigned char, char);
  /* Hook for mouse inputdev  driver */
-extern void (*atari_input_mouse_interrupt_hook) (char *);
+extern void (*atari_input_mouse_interrupt_hook) (signed char *);

  int atari_keyb_init(void);
diff --git a/drivers/input/mouse/atarimouse.c 
b/drivers/input/mouse/atarimouse.c
index 351aab69e905..e2801be8f371 100644
--- a/drivers/input/mouse/atarimouse.c
+++ b/drivers/input/mouse/atarimouse.c
@@ -60,7 +60,7 @@ extern int atari_mouse_buttons;

  static struct input_dev *atamouse_dev;

-static void atamouse_interrupt(char *buf)
+static void atamouse_interrupt(signed char *buf)
  {
         int buttons, dx, dy;
(no cast used in the Atari ikbd interrupt handler though ...).

I'll go with that one then ...

Cheers,

	Michael

Cheers,

    Michael
quoted
quoted
        atari_mouse_buttons = buttons;
 #endif

-       /* only relative events get here */
-       dx = buf[1];
-       dy = buf[2];
+       /* only relative events get here; the IKBD sends signed 8-bit
+        * deltas, and the kernel builds with -funsigned-char since 6.2,
+        * so an explicit signed cast is required
+        */
+       dx = (s8)buf[1];
+       dy = (s8)buf[2];

        input_report_rel(atamouse_dev, REL_X, dx);
        input_report_rel(atamouse_dev, REL_Y, dy);
Regardless:
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 --
geert@linux-m68k.org

In personal conversations with technical people, I call myself a
hacker. But
when I'm talking to journalists I just say "programmer" or something
like that.
                                -- Linus Torvalds
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help