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
>>