removed TOS dependencies with (some shaky) replacements to make everything compile without TOS headers
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
# can be either "Y" or "N" (without quotes). "Y" for using the m68k-elf-, "N" for using the m68k-atari-mint
|
# can be either "Y" or "N" (without quotes). "Y" for using the m68k-elf-, "N" for using the m68k-atari-mint
|
||||||
# toolchain
|
# toolchain
|
||||||
COMPILE_ELF=N
|
COMPILE_ELF=Y
|
||||||
|
|
||||||
ifeq (Y,$(COMPILE_ELF))
|
ifeq (Y,$(COMPILE_ELF))
|
||||||
TCPREFIX=m68k-elf-
|
TCPREFIX=m68k-elf-
|
||||||
|
|||||||
@@ -26,10 +26,10 @@
|
|||||||
#ifndef _USB_H_
|
#ifndef _USB_H_
|
||||||
#define _USB_H_
|
#define _USB_H_
|
||||||
|
|
||||||
#include <mint/osbind.h>
|
|
||||||
#include <mint/sysvars.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <bas_printf.h>
|
||||||
#include "pcixbios.h"
|
#include "pcixbios.h"
|
||||||
#include "mod_devicetable.h"
|
#include "mod_devicetable.h"
|
||||||
#include "pci_ids.h"
|
#include "pci_ids.h"
|
||||||
@@ -231,6 +231,15 @@ struct usb_device {
|
|||||||
int usbnum;
|
int usbnum;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Structure returned by Iorec() */
|
||||||
|
typedef struct {
|
||||||
|
char *ibuf;
|
||||||
|
short ibufsiz;
|
||||||
|
volatile short ibufhd;
|
||||||
|
volatile short ibuftl;
|
||||||
|
short ibuflow;
|
||||||
|
short ibufhi;
|
||||||
|
} _IOREC;
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* this is how the lowlevel part communicate with the outer world
|
* this is how the lowlevel part communicate with the outer world
|
||||||
*/
|
*/
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -61,7 +61,6 @@ static int usb_kbd_get_hid_desc(struct usb_device *dev);
|
|||||||
|
|
||||||
/* under TOS Repeat keys are build by timer C so infinite (0) or 1000 is a good value */
|
/* under TOS Repeat keys are build by timer C so infinite (0) or 1000 is a good value */
|
||||||
#define REPEAT_RATE 0 // 40 /* 40msec -> 25cps */
|
#define REPEAT_RATE 0 // 40 /* 40msec -> 25cps */
|
||||||
|
|
||||||
#define MAX_VALUE_LOOKUP 0x90
|
#define MAX_VALUE_LOOKUP 0x90
|
||||||
#define MAX_VALUE_ATARI 0x75
|
#define MAX_VALUE_ATARI 0x75
|
||||||
|
|
||||||
@@ -116,18 +115,18 @@ static union
|
|||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
unsigned reserved1:3;
|
unsigned reserved1 :3;
|
||||||
unsigned force_alt_shift:1;
|
unsigned force_alt_shift :1;
|
||||||
unsigned right_shift_host:1;
|
unsigned right_shift_host :1;
|
||||||
unsigned left_shift_host:1;
|
unsigned left_shift_host :1;
|
||||||
unsigned alt_host:1;
|
unsigned alt_host :1;
|
||||||
unsigned ctrl_host:1;
|
unsigned ctrl_host :1;
|
||||||
unsigned key_forced:1;
|
unsigned key_forced :1;
|
||||||
unsigned reserved2:3;
|
unsigned reserved2 :3;
|
||||||
unsigned altgr_usb:1;
|
unsigned altgr_usb :1;
|
||||||
unsigned shift_usb:1;
|
unsigned shift_usb :1;
|
||||||
unsigned altgr_usb_break:1;
|
unsigned altgr_usb_break :1;
|
||||||
unsigned shift_usb_break:1;
|
unsigned shift_usb_break :1;
|
||||||
} b;
|
} b;
|
||||||
unsigned short s;
|
unsigned short s;
|
||||||
} flags;
|
} flags;
|
||||||
@@ -142,7 +141,7 @@ struct usb_hid_descriptor
|
|||||||
unsigned char bNumDescriptors;
|
unsigned char bNumDescriptors;
|
||||||
unsigned char bReportDescriptorType;
|
unsigned char bReportDescriptorType;
|
||||||
unsigned short wDescriptorLength;
|
unsigned short wDescriptorLength;
|
||||||
} __attribute__ ((packed));
|
}__attribute__ ((packed));
|
||||||
|
|
||||||
static struct usb_hid_descriptor usb_kbd_hid_desc;
|
static struct usb_hid_descriptor usb_kbd_hid_desc;
|
||||||
#endif
|
#endif
|
||||||
@@ -188,7 +187,7 @@ static unsigned char usb_kbd_to_atari_scancode[] =
|
|||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
||||||
0x1D, 0x2A, 0x38, 0x56, 0x1D, 0x36, 0x38, 0x57 // virtual codes
|
0x1D, 0x2A, 0x38, 0x56, 0x1D, 0x36, 0x38, 0x57 // virtual codes
|
||||||
};
|
};
|
||||||
|
|
||||||
static unsigned char usb_kbd_to_atari_fr_modifier[] =
|
static unsigned char usb_kbd_to_atari_fr_modifier[] =
|
||||||
{
|
{
|
||||||
@@ -233,8 +232,7 @@ static unsigned char usb_kbd_to_atari_fr_modifier[] =
|
|||||||
//VolUp VolDn
|
//VolUp VolDn
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
||||||
0x00, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00, 0xEA
|
0x00, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00, 0xEA };
|
||||||
};
|
|
||||||
|
|
||||||
static unsigned char usb_kbd_to_atari_fr_unshift[] =
|
static unsigned char usb_kbd_to_atari_fr_unshift[] =
|
||||||
{
|
{
|
||||||
@@ -273,8 +271,7 @@ static unsigned char usb_kbd_to_atari_fr_unshift[] =
|
|||||||
//VolUp VolDn
|
//VolUp VolDn
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
||||||
0x1D, 0x2A, 0x38, 0x0F, 0x1D, 0x36, 0x00, 0x0F
|
0x1D, 0x2A, 0x38, 0x0F, 0x1D, 0x36, 0x00, 0x0F };
|
||||||
};
|
|
||||||
|
|
||||||
static unsigned char usb_kbd_to_atari_fr_shift[] =
|
static unsigned char usb_kbd_to_atari_fr_shift[] =
|
||||||
{
|
{
|
||||||
@@ -315,8 +312,7 @@ static unsigned char usb_kbd_to_atari_fr_shift[] =
|
|||||||
//VolUp VolDn
|
//VolUp VolDn
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
||||||
0x1D, 0x2A, 0x38, 0x0F, 0x1D, 0x36, 0x00, 0x0F
|
0x1D, 0x2A, 0x38, 0x0F, 0x1D, 0x36, 0x00, 0x0F };
|
||||||
};
|
|
||||||
|
|
||||||
static unsigned char usb_kbd_to_atari_fr_altgr[] =
|
static unsigned char usb_kbd_to_atari_fr_altgr[] =
|
||||||
{
|
{
|
||||||
@@ -357,8 +353,7 @@ static unsigned char usb_kbd_to_atari_fr_altgr[] =
|
|||||||
//VolUp VolDn
|
//VolUp VolDn
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
||||||
0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF
|
0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF };
|
||||||
};
|
|
||||||
|
|
||||||
static unsigned char usb_kbd_to_atari_de_modifier[] =
|
static unsigned char usb_kbd_to_atari_de_modifier[] =
|
||||||
{
|
{
|
||||||
@@ -403,8 +398,7 @@ static unsigned char usb_kbd_to_atari_de_modifier[] =
|
|||||||
//VolUp VolDn
|
//VolUp VolDn
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
||||||
0x00, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00, 0xEA
|
0x00, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00, 0xEA };
|
||||||
};
|
|
||||||
|
|
||||||
static unsigned char usb_kbd_to_atari_de_unshift[] =
|
static unsigned char usb_kbd_to_atari_de_unshift[] =
|
||||||
{
|
{
|
||||||
@@ -443,8 +437,7 @@ static unsigned char usb_kbd_to_atari_de_unshift[] =
|
|||||||
//VolUp VolDn
|
//VolUp VolDn
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
||||||
0x1D, 0x2A, 0x38, 0x0F, 0x1D, 0x36, 0x00, 0x0F
|
0x1D, 0x2A, 0x38, 0x0F, 0x1D, 0x36, 0x00, 0x0F };
|
||||||
};
|
|
||||||
|
|
||||||
static unsigned char usb_kbd_to_atari_de_shift[] =
|
static unsigned char usb_kbd_to_atari_de_shift[] =
|
||||||
{
|
{
|
||||||
@@ -485,8 +478,7 @@ static unsigned char usb_kbd_to_atari_de_shift[] =
|
|||||||
//VolUp VolDn
|
//VolUp VolDn
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
||||||
0x1D, 0x2A, 0x38, 0x0F, 0x1D, 0x36, 0x00, 0x0F
|
0x1D, 0x2A, 0x38, 0x0F, 0x1D, 0x36, 0x00, 0x0F };
|
||||||
};
|
|
||||||
|
|
||||||
static unsigned char usb_kbd_to_atari_de_altgr[] =
|
static unsigned char usb_kbd_to_atari_de_altgr[] =
|
||||||
{
|
{
|
||||||
@@ -527,34 +519,33 @@ static unsigned char usb_kbd_to_atari_de_altgr[] =
|
|||||||
//VolUp VolDn
|
//VolUp VolDn
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
//LCTRL LSHFT LALT LGUI RCTRL RSHFT RALT RGUI
|
||||||
0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF
|
0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF };
|
||||||
};
|
|
||||||
|
|
||||||
static COOKIE *get_cookie(long id)
|
static COOKIE *get_cookie(long id)
|
||||||
{
|
{
|
||||||
COOKIE *p= *(COOKIE **)0x5a0;
|
COOKIE *p = *(COOKIE **) 0x5a0;
|
||||||
while(p)
|
while (p)
|
||||||
{
|
{
|
||||||
if(p->ident == id)
|
if (p->ident == id)
|
||||||
return(p);
|
return (p);
|
||||||
if(!p->ident)
|
if (!p->ident)
|
||||||
return((COOKIE *)0);
|
return ((COOKIE *) 0);
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
return((COOKIE *)0);
|
return ((COOKIE *) 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *memscan(void *addr, int c, int size)
|
static void *memscan(void *addr, int c, int size)
|
||||||
{
|
{
|
||||||
unsigned char *p = (unsigned char *)addr;
|
unsigned char *p = (unsigned char *) addr;
|
||||||
while(size)
|
while (size)
|
||||||
{
|
{
|
||||||
if(*p == (char)c)
|
if (*p == (char) c)
|
||||||
return(void *)p;
|
return (void *) p;
|
||||||
p++;
|
p++;
|
||||||
size--;
|
size--;
|
||||||
}
|
}
|
||||||
return(void *)p;
|
return (void *) p;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* forward declaration */
|
/* forward declaration */
|
||||||
@@ -564,12 +555,12 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum);
|
|||||||
int usb_kbd_deregister(struct usb_device *dev)
|
int usb_kbd_deregister(struct usb_device *dev)
|
||||||
{
|
{
|
||||||
dev->irq_handle = NULL;
|
dev->irq_handle = NULL;
|
||||||
if(new != NULL)
|
if (new != NULL )
|
||||||
{
|
{
|
||||||
usb_free(new);
|
usb_free(new);
|
||||||
new = NULL;
|
new = NULL;
|
||||||
}
|
}
|
||||||
if(leds != NULL)
|
if (leds != NULL )
|
||||||
{
|
{
|
||||||
usb_free(leds);
|
usb_free(leds);
|
||||||
leds = NULL;
|
leds = NULL;
|
||||||
@@ -582,7 +573,7 @@ int usb_kbd_deregister(struct usb_device *dev)
|
|||||||
/* registering the keyboard */
|
/* registering the keyboard */
|
||||||
int usb_kbd_register(struct usb_device *dev)
|
int usb_kbd_register(struct usb_device *dev)
|
||||||
{
|
{
|
||||||
if(!kbd_installed && (dev->devnum != -1) && (usb_kbd_probe(dev, 0) == 1))
|
if (!kbd_installed && (dev->devnum != -1) && (usb_kbd_probe(dev, 0) == 1))
|
||||||
{ /* Ok, we found a keyboard */
|
{ /* Ok, we found a keyboard */
|
||||||
USB_KBD_PRINTF("USB KBD found (iorec: 0x%x, USB: %d, devnum: %d)\r\n", iorec, dev->usbnum, dev->devnum);
|
USB_KBD_PRINTF("USB KBD found (iorec: 0x%x, USB: %d, devnum: %d)\r\n", iorec, dev->usbnum, dev->devnum);
|
||||||
num_lock = caps_lock = scroll_lock = old_modifier = 0;
|
num_lock = caps_lock = scroll_lock = old_modifier = 0;
|
||||||
@@ -599,17 +590,17 @@ int usb_kbd_register(struct usb_device *dev)
|
|||||||
int drv_usb_kbd_init(void)
|
int drv_usb_kbd_init(void)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
if(kbd_installed)
|
if (kbd_installed)
|
||||||
return -1;
|
return -1;
|
||||||
/* scan all USB Devices */
|
/* scan all USB Devices */
|
||||||
for(j = 0; j < USB_MAX_BUS; j++)
|
for (j = 0; j < USB_MAX_BUS; j++)
|
||||||
{
|
{
|
||||||
for(i = 0; i < USB_MAX_DEVICE; i++)
|
for (i = 0; i < USB_MAX_DEVICE; i++)
|
||||||
{
|
{
|
||||||
struct usb_device *dev = usb_get_dev_index(i, j); /* get device */
|
struct usb_device *dev = usb_get_dev_index(i, j); /* get device */
|
||||||
if(dev == NULL)
|
if (dev == NULL )
|
||||||
break;
|
break;
|
||||||
if(usb_kbd_register(dev) > 0)
|
if (usb_kbd_register(dev) > 0)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -628,27 +619,28 @@ int drv_usb_kbd_init(void)
|
|||||||
static void usb_kbd_setled(struct usb_device *dev)
|
static void usb_kbd_setled(struct usb_device *dev)
|
||||||
{
|
{
|
||||||
struct usb_interface_descriptor *iface = &dev->config.if_desc[0];
|
struct usb_interface_descriptor *iface = &dev->config.if_desc[0];
|
||||||
unsigned char *pleds = (unsigned char *)(((unsigned long)leds + 3) & ~3);
|
unsigned char *pleds = (unsigned char *) (((unsigned long) leds + 3) & ~3);
|
||||||
if(scroll_lock != 0)
|
if (scroll_lock != 0)
|
||||||
*pleds = 4;
|
*pleds = 4;
|
||||||
else
|
else
|
||||||
*pleds = 0;
|
*pleds = 0;
|
||||||
if(caps_lock != 0)
|
if (caps_lock != 0)
|
||||||
*pleds |= 2;
|
*pleds |= 2;
|
||||||
if(num_lock != 0)
|
if (num_lock != 0)
|
||||||
*pleds |= 1;
|
*pleds |= 1;
|
||||||
usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
|
usb_control_msg(dev, usb_sndctrlpipe(dev, 0), USB_REQ_SET_REPORT,
|
||||||
USB_REQ_SET_REPORT, USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0x200, iface->bInterfaceNumber, pleds, 1, 0);
|
USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0x200,
|
||||||
|
iface->bInterfaceNumber, pleds, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void usb_kbd_send_code(unsigned char code)
|
static void usb_kbd_send_code(unsigned char code)
|
||||||
{
|
{
|
||||||
if((iorec != NULL) && (ikbdvec != NULL))
|
if ((iorec != NULL )&& (ikbdvec != NULL))call_ikbdvec(code, iorec, ikbdvec);
|
||||||
call_ikbdvec(code, iorec, ikbdvec);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Translate the scancode */
|
/* Translate the scancode */
|
||||||
static int usb_kbd_translate(unsigned char scancode, unsigned char modifier, int pressed)
|
static int usb_kbd_translate(unsigned char scancode, unsigned char modifier,
|
||||||
|
int pressed)
|
||||||
{
|
{
|
||||||
unsigned char keycode = 0, atari_modifier = 0;
|
unsigned char keycode = 0, atari_modifier = 0;
|
||||||
#ifdef CONFIG_USB_INTERRUPT_POLLING
|
#ifdef CONFIG_USB_INTERRUPT_POLLING
|
||||||
@@ -657,11 +649,11 @@ static int usb_kbd_translate(unsigned char scancode, unsigned char modifier, int
|
|||||||
int type = USA;
|
int type = USA;
|
||||||
USB_KBD_PRINTF("USB KBD scancode: 0x%02x, modifier:0x%02x, pressed: %d\r\n", scancode, modifier, pressed);
|
USB_KBD_PRINTF("USB KBD scancode: 0x%02x, modifier:0x%02x, pressed: %d\r\n", scancode, modifier, pressed);
|
||||||
flags.b.force_alt_shift = 0;
|
flags.b.force_alt_shift = 0;
|
||||||
if(scancode > MAX_VALUE_LOOKUP)
|
if (scancode > MAX_VALUE_LOOKUP)
|
||||||
keycode = 0;
|
keycode = 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(scancode == 0x8A) /* LEFT ALT */
|
if (scancode == 0x8A) /* LEFT ALT */
|
||||||
keycode = 0x38; /* Alt Atari */
|
keycode = 0x38; /* Alt Atari */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -671,7 +663,7 @@ static int usb_kbd_translate(unsigned char scancode, unsigned char modifier, int
|
|||||||
unsigned char *modifier_table = NULL;
|
unsigned char *modifier_table = NULL;
|
||||||
unsigned long lang = USA;
|
unsigned long lang = USA;
|
||||||
COOKIE *p = get_cookie('_AKP');
|
COOKIE *p = get_cookie('_AKP');
|
||||||
if(p != NULL)
|
if (p != NULL )
|
||||||
lang = (p->v.l >> 8) & 0xFF;
|
lang = (p->v.l >> 8) & 0xFF;
|
||||||
#ifdef USE_COUNTRYCODE
|
#ifdef USE_COUNTRYCODE
|
||||||
switch(usb_kbd_hid_desc.bCountryCode)
|
switch(usb_kbd_hid_desc.bCountryCode)
|
||||||
@@ -687,7 +679,7 @@ static int usb_kbd_translate(unsigned char scancode, unsigned char modifier, int
|
|||||||
case CC_SWG: lang = SWG; break;
|
case CC_SWG: lang = SWG; break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
switch(lang)
|
switch (lang)
|
||||||
{
|
{
|
||||||
case FRA:
|
case FRA:
|
||||||
case SWF:
|
case SWF:
|
||||||
@@ -709,11 +701,12 @@ static int usb_kbd_translate(unsigned char scancode, unsigned char modifier, int
|
|||||||
unshift_table = usb_kbd_to_atari_scancode;
|
unshift_table = usb_kbd_to_atari_scancode;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(modifier != old_modifier)
|
if (modifier != old_modifier)
|
||||||
{
|
{
|
||||||
if(((modifier & (1 << LEFT_SHIFT)) != 0) || ((modifier & (1 << RIGHT_SHIFT)) != 0))
|
if (((modifier & (1 << LEFT_SHIFT)) != 0)
|
||||||
|
|| ((modifier & (1 << RIGHT_SHIFT)) != 0))
|
||||||
{
|
{
|
||||||
if(!flags.b.shift_usb)
|
if (!flags.b.shift_usb)
|
||||||
{
|
{
|
||||||
flags.b.shift_usb = 1;
|
flags.b.shift_usb = 1;
|
||||||
flags.b.shift_usb_break = 1;
|
flags.b.shift_usb_break = 1;
|
||||||
@@ -721,9 +714,9 @@ static int usb_kbd_translate(unsigned char scancode, unsigned char modifier, int
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
flags.b.shift_usb = 0;
|
flags.b.shift_usb = 0;
|
||||||
if((modifier & (1 << RIGHT_ALT)) != 0)
|
if ((modifier & (1 << RIGHT_ALT)) != 0)
|
||||||
{
|
{
|
||||||
if(!flags.b.altgr_usb)
|
if (!flags.b.altgr_usb)
|
||||||
{
|
{
|
||||||
flags.b.altgr_usb = 1;
|
flags.b.altgr_usb = 1;
|
||||||
flags.b.altgr_usb_break = 1;
|
flags.b.altgr_usb_break = 1;
|
||||||
@@ -733,15 +726,15 @@ static int usb_kbd_translate(unsigned char scancode, unsigned char modifier, int
|
|||||||
flags.b.altgr_usb = 0;
|
flags.b.altgr_usb = 0;
|
||||||
old_modifier = modifier;
|
old_modifier = modifier;
|
||||||
}
|
}
|
||||||
else if(pressed)
|
else if (pressed)
|
||||||
{
|
{
|
||||||
if(!flags.b.altgr_usb)
|
if (!flags.b.altgr_usb)
|
||||||
flags.b.altgr_usb_break = 0;
|
flags.b.altgr_usb_break = 0;
|
||||||
if(!flags.b.shift_usb)
|
if (!flags.b.shift_usb)
|
||||||
flags.b.shift_usb_break = 0;
|
flags.b.shift_usb_break = 0;
|
||||||
}
|
}
|
||||||
keycode = unshift_table[scancode];
|
keycode = unshift_table[scancode];
|
||||||
if((modifier & (1 << LEFT_ALT)) == 0)
|
if ((modifier & (1 << LEFT_ALT)) == 0)
|
||||||
{
|
{
|
||||||
/* This modifier table can change host SHIFT & ALT states for each scancode, values
|
/* This modifier table can change host SHIFT & ALT states for each scancode, values
|
||||||
are in hexa : bit 7: 1 for a valid entry
|
are in hexa : bit 7: 1 for a valid entry
|
||||||
@@ -750,57 +743,58 @@ static int usb_kbd_translate(unsigned char scancode, unsigned char modifier, int
|
|||||||
bit 3: ALT, bit 2: SHIFT states for the Shift table
|
bit 3: ALT, bit 2: SHIFT states for the Shift table
|
||||||
bit 1: ALT, bit 0: SHIFT states for the Unshift table
|
bit 1: ALT, bit 0: SHIFT states for the Unshift table
|
||||||
*/
|
*/
|
||||||
if(modifier_table != NULL)
|
if (modifier_table != NULL )
|
||||||
atari_modifier = modifier_table[scancode];
|
atari_modifier = modifier_table[scancode];
|
||||||
else
|
else
|
||||||
atari_modifier = 0;
|
atari_modifier = 0;
|
||||||
if((atari_modifier & (1 << 7)) != 0)
|
if ((atari_modifier & (1 << 7)) != 0)
|
||||||
flags.b.force_alt_shift = 1;
|
flags.b.force_alt_shift = 1;
|
||||||
else
|
else
|
||||||
atari_modifier = 0;
|
atari_modifier = 0;
|
||||||
if(flags.b.altgr_usb_break)
|
if (flags.b.altgr_usb_break)
|
||||||
{
|
{
|
||||||
if(altgr_table[scancode])
|
if (altgr_table[scancode])
|
||||||
{
|
{
|
||||||
keycode = altgr_table[scancode];
|
keycode = altgr_table[scancode];
|
||||||
if((atari_modifier & (1 << 6)) != 0)
|
if ((atari_modifier & (1 << 6)) != 0)
|
||||||
atari_modifier = (atari_modifier >> 4) | (atari_modifier & (1 << 6));
|
atari_modifier = (atari_modifier >> 4)
|
||||||
|
| (atari_modifier & (1 << 6));
|
||||||
else
|
else
|
||||||
atari_modifier >>= 4;
|
atari_modifier >>= 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(flags.b.shift_usb_break)
|
else if (flags.b.shift_usb_break)
|
||||||
{
|
{
|
||||||
if(shift_table[scancode])
|
if (shift_table[scancode])
|
||||||
{
|
{
|
||||||
keycode = shift_table[scancode];
|
keycode = shift_table[scancode];
|
||||||
if((atari_modifier & (1 << 6)) != 0)
|
if ((atari_modifier & (1 << 6)) != 0)
|
||||||
atari_modifier = (atari_modifier >> 2) | (atari_modifier & (1 << 6));
|
atari_modifier = (atari_modifier >> 2)
|
||||||
|
| (atari_modifier & (1 << 6));
|
||||||
else
|
else
|
||||||
atari_modifier >>= 2;
|
atari_modifier >>= 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} USB_KBD_PRINTF("USB KBD atari-%s keycode:0x%02x, modifier:0x%02x, flags:0x%04x\r\n", (type == FRA) ? "fr" : (type == FRG) ? "de" : "us", keycode, atari_modifier, flags.s);
|
||||||
USB_KBD_PRINTF("USB KBD atari-%s keycode:0x%02x, modifier:0x%02x, flags:0x%04x\r\n", (type == FRA) ? "fr" : (type == FRG) ? "de" : "us", keycode, atari_modifier, flags.s);
|
if (keycode == 0x1D) /* CTRL */
|
||||||
if(keycode == 0x1D) /* CTRL */
|
|
||||||
{
|
{
|
||||||
if(pressed)
|
if (pressed)
|
||||||
flags.b.ctrl_host = 1;
|
flags.b.ctrl_host = 1;
|
||||||
else
|
else
|
||||||
flags.b.ctrl_host = 0;
|
flags.b.ctrl_host = 0;
|
||||||
}
|
}
|
||||||
if(keycode == 0x36) /* RSHIFT */
|
if (keycode == 0x36) /* RSHIFT */
|
||||||
{
|
{
|
||||||
if(pressed)
|
if (pressed)
|
||||||
flags.b.right_shift_host = 1;
|
flags.b.right_shift_host = 1;
|
||||||
else
|
else
|
||||||
flags.b.right_shift_host = 0;
|
flags.b.right_shift_host = 0;
|
||||||
}
|
}
|
||||||
if(keycode == 0x2A) /* LSHIFT */
|
if (keycode == 0x2A) /* LSHIFT */
|
||||||
{
|
{
|
||||||
if(pressed)
|
if (pressed)
|
||||||
flags.b.left_shift_host = 1;
|
flags.b.left_shift_host = 1;
|
||||||
else
|
else
|
||||||
flags.b.left_shift_host = 0;
|
flags.b.left_shift_host = 0;
|
||||||
@@ -808,84 +802,84 @@ static int usb_kbd_translate(unsigned char scancode, unsigned char modifier, int
|
|||||||
#ifdef CONFIG_USB_INTERRUPT_POLLING
|
#ifdef CONFIG_USB_INTERRUPT_POLLING
|
||||||
level = asm_set_ipl(7); /* mask interrupts for use call_ikbdvec() */
|
level = asm_set_ipl(7); /* mask interrupts for use call_ikbdvec() */
|
||||||
#endif
|
#endif
|
||||||
if(pressed && (flags.b.force_alt_shift))
|
if (pressed && (flags.b.force_alt_shift))
|
||||||
{
|
{
|
||||||
flags.b.key_forced = 1;
|
flags.b.key_forced = 1;
|
||||||
if(((atari_modifier & (1 << 6)) != 0) && flags.b.ctrl_host)
|
if (((atari_modifier & (1 << 6)) != 0) && flags.b.ctrl_host)
|
||||||
usb_kbd_send_code(0x1D); /* CTRL */
|
usb_kbd_send_code(0x1D); /* CTRL */
|
||||||
if((atari_modifier & (1 << 0)) == 0)
|
if ((atari_modifier & (1 << 0)) == 0)
|
||||||
{
|
{
|
||||||
if(flags.b.left_shift_host)
|
if (flags.b.left_shift_host)
|
||||||
usb_kbd_send_code(0xAA); /* !LSHIFT */
|
usb_kbd_send_code(0xAA); /* !LSHIFT */
|
||||||
if(flags.b.right_shift_host)
|
if (flags.b.right_shift_host)
|
||||||
usb_kbd_send_code(0xB6); /* !RSHIFT */
|
usb_kbd_send_code(0xB6); /* !RSHIFT */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!flags.b.left_shift_host)
|
if (!flags.b.left_shift_host)
|
||||||
usb_kbd_send_code(0x2A); /* LSHIFT */
|
usb_kbd_send_code(0x2A); /* LSHIFT */
|
||||||
if(!flags.b.right_shift_host && (keycode != 0x60)) /* < */
|
if (!flags.b.right_shift_host && (keycode != 0x60)) /* < */
|
||||||
usb_kbd_send_code(0x36); /* RSHIFT */
|
usb_kbd_send_code(0x36); /* RSHIFT */
|
||||||
}
|
}
|
||||||
if((atari_modifier & (1 << 1)) == 0)
|
if ((atari_modifier & (1 << 1)) == 0)
|
||||||
{
|
{
|
||||||
if(flags.b.alt_host)
|
if (flags.b.alt_host)
|
||||||
usb_kbd_send_code(0xB8); /* !ALT */
|
usb_kbd_send_code(0xB8); /* !ALT */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!flags.b.alt_host)
|
if (!flags.b.alt_host)
|
||||||
usb_kbd_send_code(0x38); /* ALT */
|
usb_kbd_send_code(0x38); /* ALT */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if((keycode !=0) && (keycode <= MAX_VALUE_ATARI))
|
if ((keycode != 0) && (keycode <= MAX_VALUE_ATARI))
|
||||||
usb_kbd_send_code(pressed ? keycode : keycode | 0x80);
|
usb_kbd_send_code(pressed ? keycode : keycode | 0x80);
|
||||||
if(!pressed && (flags.b.force_alt_shift))
|
if (!pressed && (flags.b.force_alt_shift))
|
||||||
{
|
{
|
||||||
flags.b.key_forced = 0;
|
flags.b.key_forced = 0;
|
||||||
if(((atari_modifier & (1 << 6)) != 0) && flags.b.ctrl_host)
|
if (((atari_modifier & (1 << 6)) != 0) && flags.b.ctrl_host)
|
||||||
usb_kbd_send_code(0x9D); /* !CTRL */
|
usb_kbd_send_code(0x9D); /* !CTRL */
|
||||||
if((atari_modifier & (1 << 0)) == 0)
|
if ((atari_modifier & (1 << 0)) == 0)
|
||||||
{
|
{
|
||||||
if(flags.b.left_shift_host)
|
if (flags.b.left_shift_host)
|
||||||
usb_kbd_send_code(0x2A); /* LSHIFT */
|
usb_kbd_send_code(0x2A); /* LSHIFT */
|
||||||
if(flags.b.right_shift_host)
|
if (flags.b.right_shift_host)
|
||||||
usb_kbd_send_code(0x36); /* RSHIFT */
|
usb_kbd_send_code(0x36); /* RSHIFT */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!flags.b.left_shift_host)
|
if (!flags.b.left_shift_host)
|
||||||
usb_kbd_send_code(0xAA); /* !LSHIFT */
|
usb_kbd_send_code(0xAA); /* !LSHIFT */
|
||||||
if(!flags.b.right_shift_host)
|
if (!flags.b.right_shift_host)
|
||||||
usb_kbd_send_code(0xB6); /* !RSHIFT */
|
usb_kbd_send_code(0xB6); /* !RSHIFT */
|
||||||
}
|
}
|
||||||
if((atari_modifier & (1 << 1)) == 0)
|
if ((atari_modifier & (1 << 1)) == 0)
|
||||||
{
|
{
|
||||||
if(flags.b.alt_host)
|
if (flags.b.alt_host)
|
||||||
usb_kbd_send_code(0x38); /* ALT */
|
usb_kbd_send_code(0x38); /* ALT */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!flags.b.alt_host)
|
if (!flags.b.alt_host)
|
||||||
usb_kbd_send_code(0xB8); /* !ALT */
|
usb_kbd_send_code(0xB8); /* !ALT */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef CONFIG_USB_INTERRUPT_POLLING
|
#ifdef CONFIG_USB_INTERRUPT_POLLING
|
||||||
asm_set_ipl(level);
|
asm_set_ipl(level);
|
||||||
#endif
|
#endif
|
||||||
if(pressed == 1)
|
if (pressed == 1)
|
||||||
{
|
{
|
||||||
if(scancode == NUM_LOCK)
|
if (scancode == NUM_LOCK)
|
||||||
{
|
{
|
||||||
num_lock = ~num_lock;
|
num_lock = ~num_lock;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if(scancode == CAPS_LOCK)
|
if (scancode == CAPS_LOCK)
|
||||||
{
|
{
|
||||||
caps_lock = ~caps_lock;
|
caps_lock = ~caps_lock;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if(scancode == SCROLL_LOCK)
|
if (scancode == SCROLL_LOCK)
|
||||||
{
|
{
|
||||||
scroll_lock = ~scroll_lock;
|
scroll_lock = ~scroll_lock;
|
||||||
return 1;
|
return 1;
|
||||||
@@ -897,47 +891,55 @@ static int usb_kbd_translate(unsigned char scancode, unsigned char modifier, int
|
|||||||
/* Interrupt service routine */
|
/* Interrupt service routine */
|
||||||
static int usb_kbd_irq(struct usb_device *dev)
|
static int usb_kbd_irq(struct usb_device *dev)
|
||||||
{
|
{
|
||||||
int i,res;
|
int i, res;
|
||||||
if((dev->irq_status != 0) || (dev->irq_act_len != 8))
|
if ((dev->irq_status != 0) || (dev->irq_act_len != 8))
|
||||||
{
|
{
|
||||||
USB_KBD_PRINTF("USB KBD error %lX, len %d\r\n",dev->irq_status,dev->irq_act_len);
|
USB_KBD_PRINTF("USB KBD error %lX, len %d\r\n",dev->irq_status,dev->irq_act_len);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
res = 0;
|
res = 0;
|
||||||
for(i = 2; i < 8; i++)
|
for (i = 2; i < 8; i++)
|
||||||
{
|
{
|
||||||
if(old[i] > 3 && memscan(&new[2], old[i], 6) == &new[8])
|
if (old[i] > 3 && memscan(&new[2], old[i], 6) == &new[8])
|
||||||
{
|
{
|
||||||
res |= usb_kbd_translate(old[i], new[0], 0);
|
res |= usb_kbd_translate(old[i], new[0], 0);
|
||||||
old[0] = new[0];
|
old[0] = new[0];
|
||||||
}
|
}
|
||||||
if(new[i] > 3 && memscan(&old[2], new[i], 6) == &old[8])
|
if (new[i] > 3 && memscan(&old[2], new[i], 6) == &old[8])
|
||||||
{
|
{
|
||||||
res |= usb_kbd_translate(new[i], new[0], 1);
|
res |= usb_kbd_translate(new[i], new[0], 1);
|
||||||
old[0] = new[0];
|
old[0] = new[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(new[0] != old[0]) /* modifier change */
|
if (new[0] != old[0]) /* modifier change */
|
||||||
{
|
{
|
||||||
unsigned char modifier_change = new[0] ^ old[0];
|
unsigned char modifier_change = new[0] ^ old[0];
|
||||||
if(modifier_change & (1 << LEFT_CNTR))
|
if (modifier_change & (1 << LEFT_CNTR))
|
||||||
res |= usb_kbd_translate(0x88, new[0], (new[0] & (1 << LEFT_CNTR)) ? 1 : 0);
|
res |= usb_kbd_translate(0x88, new[0],
|
||||||
if(modifier_change & (1 << LEFT_SHIFT))
|
(new[0] & (1 << LEFT_CNTR)) ? 1 : 0);
|
||||||
res |= usb_kbd_translate(0x89, new[0], (new[0] & (1 << LEFT_SHIFT)) ? 1 : 0);
|
if (modifier_change & (1 << LEFT_SHIFT))
|
||||||
if(modifier_change & (1 << LEFT_ALT))
|
res |= usb_kbd_translate(0x89, new[0],
|
||||||
res |= usb_kbd_translate(0x8A, new[0], (new[0] & (1 << LEFT_ALT)) ? 1 : 0);
|
(new[0] & (1 << LEFT_SHIFT)) ? 1 : 0);
|
||||||
if(modifier_change & (1 << LEFT_GUI))
|
if (modifier_change & (1 << LEFT_ALT))
|
||||||
res |= usb_kbd_translate(0x8B, new[0], (new[0] & (1 << LEFT_GUI)) ? 1 : 0);
|
res |= usb_kbd_translate(0x8A, new[0],
|
||||||
if(modifier_change & (1 << RIGHT_CNTR))
|
(new[0] & (1 << LEFT_ALT)) ? 1 : 0);
|
||||||
res |= usb_kbd_translate(0x8C, new[0], (new[0] & (1 << RIGHT_CNTR)) ? 1 : 0);
|
if (modifier_change & (1 << LEFT_GUI))
|
||||||
if(modifier_change & (1 << RIGHT_SHIFT))
|
res |= usb_kbd_translate(0x8B, new[0],
|
||||||
res |= usb_kbd_translate(0x8D, new[0], (new[0] & (1 << RIGHT_SHIFT)) ? 1 : 0);
|
(new[0] & (1 << LEFT_GUI)) ? 1 : 0);
|
||||||
if(modifier_change & (1 << RIGHT_ALT))
|
if (modifier_change & (1 << RIGHT_CNTR))
|
||||||
res |= usb_kbd_translate(0x8E, new[0], (new[0] & (1 << RIGHT_ALT)) ? 1 : 0);
|
res |= usb_kbd_translate(0x8C, new[0],
|
||||||
if(modifier_change & (1 << RIGHT_GUI))
|
(new[0] & (1 << RIGHT_CNTR)) ? 1 : 0);
|
||||||
res |= usb_kbd_translate(0x8F, new[0], (new[0] & (1 << RIGHT_GUI)) ? 1 : 0);
|
if (modifier_change & (1 << RIGHT_SHIFT))
|
||||||
|
res |= usb_kbd_translate(0x8D, new[0],
|
||||||
|
(new[0] & (1 << RIGHT_SHIFT)) ? 1 : 0);
|
||||||
|
if (modifier_change & (1 << RIGHT_ALT))
|
||||||
|
res |= usb_kbd_translate(0x8E, new[0],
|
||||||
|
(new[0] & (1 << RIGHT_ALT)) ? 1 : 0);
|
||||||
|
if (modifier_change & (1 << RIGHT_GUI))
|
||||||
|
res |= usb_kbd_translate(0x8F, new[0],
|
||||||
|
(new[0] & (1 << RIGHT_GUI)) ? 1 : 0);
|
||||||
}
|
}
|
||||||
if(res == 1)
|
if (res == 1)
|
||||||
usb_kbd_setled(dev);
|
usb_kbd_setled(dev);
|
||||||
memcpy(&old[0], &new[0], 8);
|
memcpy(&old[0], &new[0], 8);
|
||||||
return 1; /* install IRQ Handler again */
|
return 1; /* install IRQ Handler again */
|
||||||
@@ -948,34 +950,33 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
|
|||||||
{
|
{
|
||||||
struct usb_interface_descriptor *iface;
|
struct usb_interface_descriptor *iface;
|
||||||
struct usb_endpoint_descriptor *ep;
|
struct usb_endpoint_descriptor *ep;
|
||||||
int pipe,maxp;
|
int pipe, maxp;
|
||||||
if(dev->descriptor.bNumConfigurations != 1)
|
if (dev->descriptor.bNumConfigurations != 1)
|
||||||
return 0;
|
return 0;
|
||||||
iface = &dev->config.if_desc[ifnum];
|
iface = &dev->config.if_desc[ifnum];
|
||||||
if(iface->bInterfaceClass != 3)
|
if (iface->bInterfaceClass != 3)
|
||||||
return 0;
|
return 0;
|
||||||
if(iface->bInterfaceSubClass != 1)
|
if (iface->bInterfaceSubClass != 1)
|
||||||
return 0;
|
return 0;
|
||||||
if(iface->bInterfaceProtocol != 1)
|
if (iface->bInterfaceProtocol != 1)
|
||||||
return 0;
|
return 0;
|
||||||
if(iface->bNumEndpoints != 1)
|
if (iface->bNumEndpoints != 1)
|
||||||
return 0;
|
return 0;
|
||||||
ep = &iface->ep_desc[0];
|
ep = &iface->ep_desc[0];
|
||||||
if(!(ep->bEndpointAddress & 0x80))
|
if (!(ep->bEndpointAddress & 0x80))
|
||||||
return 0;
|
return 0;
|
||||||
if((ep->bmAttributes & 3) != 3)
|
if ((ep->bmAttributes & 3) != 3)
|
||||||
return 0;
|
return 0;
|
||||||
leds = (unsigned char *)usb_malloc(8);
|
leds = (unsigned char *) usb_malloc(8);
|
||||||
if(leds == NULL)
|
if (leds == NULL )
|
||||||
return 0;
|
return 0;
|
||||||
new = (unsigned char *)usb_malloc(8);
|
new = (unsigned char *) usb_malloc(8);
|
||||||
if(new == NULL)
|
if (new == NULL )
|
||||||
{
|
{
|
||||||
usb_free(leds);
|
usb_free(leds);
|
||||||
new = NULL;
|
new = NULL;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
} USB_KBD_PRINTF("USB KBD found set protocol...\r\n");
|
||||||
USB_KBD_PRINTF("USB KBD found set protocol...\r\n");
|
|
||||||
/* ok, we found a USB Keyboard, install it */
|
/* ok, we found a USB Keyboard, install it */
|
||||||
#ifdef USE_COUNTRYCODE
|
#ifdef USE_COUNTRYCODE
|
||||||
if(usb_kbd_get_hid_desc(dev) < 0)
|
if(usb_kbd_get_hid_desc(dev) < 0)
|
||||||
@@ -1002,12 +1003,14 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
|
|||||||
* into the data area.
|
* into the data area.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct hid_item {
|
struct hid_item
|
||||||
|
{
|
||||||
unsigned char format;
|
unsigned char format;
|
||||||
unsigned char size;
|
unsigned char size;
|
||||||
unsigned char type;
|
unsigned char type;
|
||||||
unsigned char tag;
|
unsigned char tag;
|
||||||
union {
|
union
|
||||||
|
{
|
||||||
unsigned char u_8;
|
unsigned char u_8;
|
||||||
char s_8;
|
char s_8;
|
||||||
unsigned short u_16;
|
unsigned short u_16;
|
||||||
@@ -1015,7 +1018,7 @@ struct hid_item {
|
|||||||
unsigned long u_32;
|
unsigned long u_32;
|
||||||
long s_32;
|
long s_32;
|
||||||
unsigned char *longdata;
|
unsigned char *longdata;
|
||||||
} data;
|
}data;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* HID report item format */
|
/* HID report item format */
|
||||||
@@ -1322,7 +1325,7 @@ static int usb_kbd_get_hid_desc(struct usb_device *dev)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
usb_get_report(dev, 0, 0, 1, &new[0], 8);
|
usb_get_report(dev, 0, 0, 1, &new[0], 8);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#endif /* CONFIG_USB_KEYBOARD */
|
#endif /* CONFIG_USB_KEYBOARD */
|
||||||
#endif /* CONFIG_USB_UHCI || CONFIG_USB_OHCI || CONFIG_USB_EHCI */
|
#endif /* CONFIG_USB_UHCI || CONFIG_USB_OHCI || CONFIG_USB_EHCI */
|
||||||
|
|||||||
@@ -12,8 +12,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <mint/errno.h>
|
|
||||||
#include <mint/osbind.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "usb.h"
|
#include "usb.h"
|
||||||
|
|
||||||
@@ -182,6 +180,8 @@ static void freeit(MD *m, MPB *mp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define EFAULT -40
|
||||||
|
|
||||||
int usb_free(void *addr)
|
int usb_free(void *addr)
|
||||||
{
|
{
|
||||||
int level;
|
int level;
|
||||||
|
|||||||
Reference in New Issue
Block a user