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

Michael Schmitz <[email protected]>
Newsgroups org.kernel.vger.linux-input,org.kernel.vger.linux-m68k
Message-ID <[email protected]>
Hi Geert,

Am 15.08.2026 um 11:15 schrieb Michael Schmitz:
>>> --- 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
>
>>>         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 <[email protected]>
>>
>> Gr{oetje,eeting}s,
>>
>>                         Geert
>>
>> --
>> Geert Uytterhoeven -- There's lots of Linux beyond ia32 --
>> [email protected]
>>
>> 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
>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.