Changeset c7b5826 in mainline for uspace/drv


Ignore:
Timestamp:
2011-05-18T09:34:56Z (14 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
33d19a7
Parents:
d736fe38 (diff), b2995c3 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Development branch changes

Location:
uspace/drv
Files:
1 added
11 deleted
37 edited
3 moved

Legend:

Unmodified
Added
Removed
  • uspace/drv/ohci/root_hub.c

    rd736fe38 rc7b5826  
    3939
    4040#include "root_hub.h"
    41 #include "usb/classes/classes.h"
    42 #include "usb/devdrv.h"
     41#include <usb/classes/classes.h>
     42#include <usb/dev/driver.h>
    4343#include "ohci_regs.h"
    4444
    45 #include <usb/request.h>
     45#include <usb/dev/request.h>
    4646#include <usb/classes/hub.h>
    4747
  • uspace/drv/ohci/root_hub.h

    rd736fe38 rc7b5826  
    3636
    3737#include <usb/usb.h>
    38 #include <usb/devdrv.h>
     38#include <usb/dev/driver.h>
    3939
    4040#include "ohci_regs.h"
  • uspace/drv/uhci-rhd/port.c

    rd736fe38 rc7b5826  
    4040
    4141#include <usb/usb.h>    /* usb_address_t */
    42 #include <usb/hub.h>    /* usb_hc_new_device_wrapper */
     42#include <usb/dev/hub.h>    /* usb_hc_new_device_wrapper */
    4343#include <usb/debug.h>
    4444
  • uspace/drv/uhci-rhd/port.h

    rd736fe38 rc7b5826  
    3838#include <fibril.h>
    3939#include <ddf/driver.h>
    40 #include <usb/usbdevice.h> /* usb_hc_connection_t */
     40#include <usb/dev/hc.h> /* usb_hc_connection_t */
    4141
    4242typedef uint16_t port_status_t;
  • uspace/drv/usbflbk/main.c

    rd736fe38 rc7b5826  
    3434 * Main routines of USB fallback driver.
    3535 */
    36 #include <usb/devdrv.h>
     36#include <usb/dev/driver.h>
    3737#include <usb/debug.h>
    3838#include <errno.h>
  • uspace/drv/usbhid/Makefile

    rd736fe38 rc7b5826  
    5757        generic/hiddev.c \
    5858        mouse/mousedev.c \
    59         lgtch-ultrax/lgtch-ultrax.c \
    60         lgtch-ultrax/keymap.c \
     59        multimedia/multimedia.c \
     60        multimedia/keymap.c \
    6161        $(STOLEN_LAYOUT_SOURCES)
    6262
  • uspace/drv/usbhid/generic/hiddev.c

    rd736fe38 rc7b5826  
    162162/*----------------------------------------------------------------------------*/
    163163
    164 int usb_generic_hid_init(usb_hid_dev_t *hid_dev)
     164int usb_generic_hid_init(usb_hid_dev_t *hid_dev, void **data)
    165165{
    166166        if (hid_dev == NULL) {
     
    173173/*----------------------------------------------------------------------------*/
    174174
    175 bool usb_generic_hid_polling_callback(usb_hid_dev_t *hid_dev,
     175bool usb_generic_hid_polling_callback(usb_hid_dev_t *hid_dev, void *data,
    176176    uint8_t *buffer, size_t buffer_size)
    177177{
  • uspace/drv/usbhid/generic/hiddev.h

    rd736fe38 rc7b5826  
    3737#define USB_HID_HIDDDEV_H_
    3838
    39 #include <usb/devdrv.h>
     39#include <usb/dev/driver.h>
    4040
    4141struct usb_hid_dev;
     
    4848/*----------------------------------------------------------------------------*/
    4949
    50 int usb_generic_hid_init(struct usb_hid_dev *hid_dev);
     50int usb_generic_hid_init(struct usb_hid_dev *hid_dev, void **data);
    5151
    52 bool usb_generic_hid_polling_callback(struct usb_hid_dev *hid_dev,
     52bool usb_generic_hid_polling_callback(struct usb_hid_dev *hid_dev, void *data,
    5353    uint8_t *buffer, size_t buffer_size);
    5454
  • uspace/drv/usbhid/kbd/kbddev.c

    rd736fe38 rc7b5826  
    4646
    4747#include <usb/usb.h>
    48 #include <usb/dp.h>
    49 #include <usb/request.h>
    50 #include <usb/classes/hid.h>
    51 #include <usb/pipes.h>
     48#include <usb/dev/dp.h>
     49#include <usb/dev/request.h>
     50#include <usb/hid/hid.h>
     51#include <usb/dev/pipes.h>
    5252#include <usb/debug.h>
    53 #include <usb/classes/hidparser.h>
     53#include <usb/hid/hidparser.h>
    5454#include <usb/classes/classes.h>
    55 #include <usb/classes/hidut.h>
    56 #include <usb/classes/hidreq.h>
    57 #include <usb/classes/hidreport.h>
    58 #include <usb/classes/hid/utled.h>
    59 
    60 #include <usb/devdrv.h>
     55#include <usb/hid/usages/core.h>
     56#include <usb/hid/request.h>
     57#include <usb/hid/hidreport.h>
     58#include <usb/hid/usages/led.h>
     59
     60#include <usb/dev/driver.h>
    6161
    6262#include "kbddev.h"
     
    252252        sysarg_t method = IPC_GET_IMETHOD(*icall);
    253253       
    254         usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)fun->driver_data;
    255        
    256         if (hid_dev == NULL || hid_dev->data == NULL) {
     254        usb_kbd_t *kbd_dev = (usb_kbd_t *)fun->driver_data;
     255        if (kbd_dev == NULL) {
    257256                usb_log_debug("default_connection_handler: "
    258257                    "Missing parameter.\n");
     
    260259                return;
    261260        }
    262        
    263         assert(hid_dev != NULL);
    264         assert(hid_dev->data != NULL);
    265         usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;
    266261
    267262        if (method == IPC_M_CONNECT_TO_ME) {
     
    313308        usb_hid_report_field_t *field = usb_hid_report_get_sibling(
    314309            hid_dev->report, NULL, kbd_dev->led_path,
    315             USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY | USB_HID_PATH_COMPARE_END,
     310            USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
    316311            USB_HID_REPORT_TYPE_OUTPUT);
    317312       
    318         while (field != NULL) {
    319 
     313        while (field != NULL) {         
     314               
    320315                if ((field->usage == USB_HID_LED_NUM_LOCK)
    321316                    && (kbd_dev->mods & KM_NUM_LOCK)){
     
    334329               
    335330                field = usb_hid_report_get_sibling(hid_dev->report, field,
    336                     kbd_dev->led_path, USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY
    337                     | USB_HID_PATH_COMPARE_END, USB_HID_REPORT_TYPE_OUTPUT);
     331                    kbd_dev->led_path, 
     332                USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
     333                        USB_HID_REPORT_TYPE_OUTPUT);
    338334        }
    339335       
     
    662658 *     usb_hid_parse_report().
    663659 */
    664 static void usb_kbd_process_data(usb_hid_dev_t *hid_dev,
     660static void usb_kbd_process_data(usb_hid_dev_t *hid_dev, usb_kbd_t *kbd_dev,
    665661                                 uint8_t *buffer, size_t actual_size)
    666662{
    667663        assert(hid_dev->report != NULL);
    668664        assert(hid_dev != NULL);
    669         assert(hid_dev->data != NULL);
    670        
    671         usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;
     665        assert(kbd_dev != NULL);
    672666
    673667        usb_log_debug("Calling usb_hid_parse_report() with "
     
    774768/*----------------------------------------------------------------------------*/
    775769
    776 static int usb_kbd_create_function(usb_hid_dev_t *hid_dev)
     770static int usb_kbd_create_function(usb_hid_dev_t *hid_dev, usb_kbd_t *kbd_dev)
    777771{
    778772        assert(hid_dev != NULL);
    779773        assert(hid_dev->usb_dev != NULL);
     774        assert(kbd_dev != NULL);
    780775       
    781776        /* Create the function exposed under /dev/devices. */
     
    792787         * to the DDF function.
    793788         */
    794         fun->ops = &hid_dev->ops;
    795         fun->driver_data = hid_dev;   // TODO: maybe change to hid_dev->data
     789        fun->ops = &kbd_dev->ops;
     790        fun->driver_data = kbd_dev;
    796791
    797792        int rc = ddf_fun_bind(fun);
     
    840835 * @return Other value inherited from function usbhid_dev_init().
    841836 */
    842 int usb_kbd_init(usb_hid_dev_t *hid_dev)
     837int usb_kbd_init(usb_hid_dev_t *hid_dev, void **data)
    843838{
    844839        usb_log_debug("Initializing HID/KBD structure...\n");
     
    865860        usb_hid_report_path_set_report_id(path, 0);
    866861       
    867         kbd_dev->key_count = usb_hid_report_input_length(
    868             hid_dev->report, path,
    869             USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY);
     862        kbd_dev->key_count = usb_hid_report_size(
     863            hid_dev->report, 0, USB_HID_REPORT_TYPE_INPUT);
    870864        usb_hid_report_path_free(path);
    871865       
     
    908902            kbd_dev->led_path, USB_HIDUT_PAGE_LED, 0);
    909903       
    910         kbd_dev->led_output_size = usb_hid_report_output_size(hid_dev->report,
    911             kbd_dev->led_path,
    912             USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY);
     904        kbd_dev->led_output_size = usb_hid_report_size(hid_dev->report,
     905            0, USB_HID_REPORT_TYPE_OUTPUT);
    913906       
    914907        usb_log_debug("Output report size (in items): %zu\n",
     
    955948       
    956949        // save the KBD device structure into the HID device structure
    957         hid_dev->data = kbd_dev;
     950        //hid_dev->data = kbd_dev;
     951        *data = kbd_dev;
    958952       
    959953        // set handler for incoming calls
    960         hid_dev->ops.default_handler = default_connection_handler;
     954        kbd_dev->ops.default_handler = default_connection_handler;
    961955       
    962956        /*
     
    983977       
    984978        usb_log_debug("Creating KBD function...\n");
    985         int rc = usb_kbd_create_function(hid_dev);
     979        int rc = usb_kbd_create_function(hid_dev, kbd_dev);
    986980        if (rc != EOK) {
    987981                usb_kbd_free(&kbd_dev);
     
    994988/*----------------------------------------------------------------------------*/
    995989
    996 bool usb_kbd_polling_callback(usb_hid_dev_t *hid_dev, uint8_t *buffer,
    997      size_t buffer_size)
    998 {
    999         if (hid_dev == NULL || buffer == NULL) {
     990bool usb_kbd_polling_callback(usb_hid_dev_t *hid_dev, void *data,
     991     uint8_t *buffer, size_t buffer_size)
     992{
     993        if (hid_dev == NULL || buffer == NULL || data == NULL) {
    1000994                // do not continue polling (???)
    1001995                return false;
    1002996        }
    1003997       
     998        usb_kbd_t *kbd_dev = (usb_kbd_t *)data;
     999        assert(kbd_dev != NULL);
     1000       
    10041001        // TODO: add return value from this function
    1005         usb_kbd_process_data(hid_dev, buffer, buffer_size);
     1002        usb_kbd_process_data(hid_dev, kbd_dev, buffer, buffer_size);
    10061003       
    10071004        return true;
     
    10661063/*----------------------------------------------------------------------------*/
    10671064
    1068 void usb_kbd_deinit(usb_hid_dev_t *hid_dev)
     1065void usb_kbd_deinit(usb_hid_dev_t *hid_dev, void *data)
    10691066{
    10701067        if (hid_dev == NULL) {
     
    10721069        }
    10731070       
    1074         if (hid_dev->data != NULL) {
    1075                 usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;
     1071        if (data != NULL) {
     1072                usb_kbd_t *kbd_dev = (usb_kbd_t *)data;
    10761073                if (usb_kbd_is_initialized(kbd_dev)) {
    10771074                        usb_kbd_mark_unusable(kbd_dev);
    10781075                } else {
    10791076                        usb_kbd_free(&kbd_dev);
    1080                         hid_dev->data = NULL;
    10811077                }
    10821078        }
  • uspace/drv/usbhid/kbd/kbddev.h

    rd736fe38 rc7b5826  
    4141#include <fibril_synch.h>
    4242
    43 #include <usb/classes/hid.h>
    44 #include <usb/classes/hidparser.h>
     43#include <usb/hid/hid.h>
     44#include <usb/hid/hidparser.h>
    4545#include <ddf/driver.h>
    46 #include <usb/pipes.h>
    47 #include <usb/devdrv.h>
     46#include <usb/dev/pipes.h>
     47#include <usb/dev/driver.h>
    4848
    4949#include "kbdrepeat.h"
     
    8383        int console_phone;
    8484       
     85        /** @todo What is this actually? */
     86        ddf_dev_ops_t ops;
     87       
    8588        /** Information for auto-repeat of keys. */
    8689        usb_kbd_repeat_t repeat;
     
    117120/*----------------------------------------------------------------------------*/
    118121
    119 int usb_kbd_init(struct usb_hid_dev *hid_dev);
     122int usb_kbd_init(struct usb_hid_dev *hid_dev, void **data);
    120123
    121 bool usb_kbd_polling_callback(struct usb_hid_dev *hid_dev, uint8_t *buffer,
    122     size_t buffer_size);
     124bool usb_kbd_polling_callback(struct usb_hid_dev *hid_dev, void *data,
     125                              uint8_t *buffer, size_t buffer_size);
    123126
    124127int usb_kbd_is_initialized(const usb_kbd_t *kbd_dev);
     
    131134    int type, unsigned int key);
    132135
    133 void usb_kbd_deinit(struct usb_hid_dev *hid_dev);
     136void usb_kbd_deinit(struct usb_hid_dev *hid_dev, void *data);
    134137
    135138int usb_kbd_set_boot_protocol(struct usb_hid_dev *hid_dev);
  • uspace/drv/usbhid/kbd/main.c

    rd736fe38 rc7b5826  
    4141#include <str_error.h>
    4242
    43 #include <usb/devdrv.h>
     43#include <usb/dev/driver.h>
    4444
    4545#include "kbddev.h"
  • uspace/drv/usbhid/main.c

    rd736fe38 rc7b5826  
    4141#include <str_error.h>
    4242
    43 #include <usb/devdrv.h>
    44 #include <usb/devpoll.h>
     43#include <usb/dev/driver.h>
     44#include <usb/dev/poll.h>
    4545
    4646#include "usbhid.h"
  • uspace/drv/usbhid/mouse/mousedev.c

    rd736fe38 rc7b5826  
    3737#include <usb/debug.h>
    3838#include <usb/classes/classes.h>
    39 #include <usb/classes/hid.h>
    40 #include <usb/classes/hidreq.h>
    41 #include <usb/classes/hidut.h>
     39#include <usb/hid/hid.h>
     40#include <usb/hid/request.h>
     41#include <usb/hid/usages/core.h>
    4242#include <errno.h>
    4343#include <str_error.h>
     
    122122        sysarg_t method = IPC_GET_IMETHOD(*icall);
    123123       
    124         usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)fun->driver_data;
    125        
    126         if (hid_dev == NULL || hid_dev->data == NULL) {
     124        usb_mouse_t *mouse_dev = (usb_mouse_t *)fun->driver_data;
     125       
     126        if (mouse_dev == NULL) {
    127127                usb_log_debug("default_connection_handler: Missing "
    128128                    "parameters.\n");
     
    131131        }
    132132       
    133         assert(hid_dev != NULL);
    134         assert(hid_dev->data != NULL);
    135         usb_mouse_t *mouse_dev = (usb_mouse_t *)hid_dev->data;
     133        usb_log_debug("default_connection_handler: fun->name: %s\n",
     134                      fun->name);
     135        usb_log_debug("default_connection_handler: mouse_phone: %d, wheel "
     136            "phone: %d\n", mouse_dev->mouse_phone, mouse_dev->wheel_phone);
    136137       
    137138        int *phone = (str_cmp(fun->name, HID_MOUSE_FUN_NAME) == 0)
     
    145146                            "phone to mouse already set.\n");
    146147                        async_answer_0(icallid, ELIMIT);
    147                         //async_answer_0(icallid, EOK);
    148148                        return;
    149149                }
    150150
    151151                *phone = callback;
    152                 usb_log_debug("Console phone to mouse set ok (%d).\n", callback);
     152                usb_log_debug("Console phone to mouse set ok (%d).\n", *phone);
    153153                async_answer_0(icallid, EOK);
    154154                return;
     
    224224/*----------------------------------------------------------------------------*/
    225225
    226 static bool usb_mouse_process_report(usb_hid_dev_t *hid_dev, uint8_t *buffer,
    227     size_t buffer_size)
    228 {
    229         usb_mouse_t *mouse_dev = (usb_mouse_t *)hid_dev->data;
     226static bool usb_mouse_process_report(usb_hid_dev_t *hid_dev,
     227                                     usb_mouse_t *mouse_dev, uint8_t *buffer,
     228                                     size_t buffer_size)
     229{
     230        assert(mouse_dev != NULL);
    230231       
    231232        usb_log_debug2("got buffer: %s.\n",
     
    378379/*----------------------------------------------------------------------------*/
    379380
    380 static int usb_mouse_create_function(usb_hid_dev_t *hid_dev)
    381 {
     381static int usb_mouse_create_function(usb_hid_dev_t *hid_dev, usb_mouse_t *mouse)
     382{
     383        assert(hid_dev != NULL);
     384        assert(mouse != NULL);
     385       
    382386        /* Create the function exposed under /dev/devices. */
    383387        usb_log_debug("Creating DDF function %s...\n", HID_MOUSE_FUN_NAME);
     
    389393        }
    390394       
    391         /*
    392          * Store the initialized HID device and HID ops
    393          * to the DDF function.
    394          */
    395         fun->ops = &hid_dev->ops;
    396         fun->driver_data = hid_dev;   // TODO: maybe change to hid_dev->data
     395        fun->ops = &mouse->ops;
     396        fun->driver_data = mouse;   // TODO: maybe change to hid_dev->data
    397397
    398398        int rc = ddf_fun_bind(fun);
     
    431431         * to the DDF function.
    432432         */
    433         fun->ops = &hid_dev->ops;
    434         fun->driver_data = hid_dev;   // TODO: maybe change to hid_dev->data
     433        fun->ops = &mouse->ops;
     434        fun->driver_data = mouse;   // TODO: maybe change to hid_dev->data
    435435
    436436        rc = ddf_fun_bind(fun);
     
    458458/*----------------------------------------------------------------------------*/
    459459
    460 int usb_mouse_init(usb_hid_dev_t *hid_dev)
     460int usb_mouse_init(usb_hid_dev_t *hid_dev, void **data)
    461461{
    462462        usb_log_debug("Initializing HID/Mouse structure...\n");
     
    485485       
    486486        // save the Mouse device structure into the HID device structure
    487         hid_dev->data = mouse_dev;
     487        *data = mouse_dev;
    488488       
    489489        // set handler for incoming calls
    490         hid_dev->ops.default_handler = default_connection_handler;
     490        // TODO: must be one for each subdriver!!
     491        mouse_dev->ops.default_handler = default_connection_handler;
    491492       
    492493        // TODO: how to know if the device supports the request???
     
    494495//          hid_dev->usb_dev->interface_no, IDLE_RATE);
    495496       
    496         int rc = usb_mouse_create_function(hid_dev);
     497        int rc = usb_mouse_create_function(hid_dev, mouse_dev);
    497498        if (rc != EOK) {
    498499                usb_mouse_free(&mouse_dev);
     
    505506/*----------------------------------------------------------------------------*/
    506507
    507 bool usb_mouse_polling_callback(usb_hid_dev_t *hid_dev, uint8_t *buffer,
    508      size_t buffer_size)
     508bool usb_mouse_polling_callback(usb_hid_dev_t *hid_dev, void *data,
     509     uint8_t *buffer, size_t buffer_size)
    509510{
    510511        usb_log_debug("usb_mouse_polling_callback()\n");
    511512        usb_debug_str_buffer(buffer, buffer_size, 0);
    512513       
    513         if (hid_dev == NULL) {
     514        if (hid_dev == NULL || data == NULL) {
    514515                usb_log_error("Missing argument to the mouse polling callback."
    515516                    "\n");
     
    517518        }
    518519       
    519         if (hid_dev->data == NULL) {
    520                 usb_log_error("Wrong argument to the mouse polling callback."
    521                     "\n");
    522                 return false;
    523         }
    524        
    525         return usb_mouse_process_report(hid_dev, buffer, buffer_size);
    526 }
    527 
    528 /*----------------------------------------------------------------------------*/
    529 
    530 void usb_mouse_deinit(usb_hid_dev_t *hid_dev)
    531 {
    532         usb_mouse_free((usb_mouse_t **)&hid_dev->data);
     520        usb_mouse_t *mouse_dev = (usb_mouse_t *)data;
     521               
     522        return usb_mouse_process_report(hid_dev, mouse_dev, buffer,
     523                                        buffer_size);
     524}
     525
     526/*----------------------------------------------------------------------------*/
     527
     528void usb_mouse_deinit(usb_hid_dev_t *hid_dev, void *data)
     529{
     530        if (data != NULL) {
     531                usb_mouse_free((usb_mouse_t **)&data);
     532        }
    533533}
    534534
  • uspace/drv/usbhid/mouse/mousedev.h

    rd736fe38 rc7b5826  
    3737#define USB_HID_MOUSEDEV_H_
    3838
    39 #include <usb/devdrv.h>
     39#include <usb/dev/driver.h>
    4040
    4141struct usb_hid_dev;
     
    5252       
    5353        int32_t *buttons;
     54       
     55        ddf_dev_ops_t ops;
    5456} usb_mouse_t;
    5557
     
    6365/*----------------------------------------------------------------------------*/
    6466
    65 int usb_mouse_init(struct usb_hid_dev *hid_dev);
     67int usb_mouse_init(struct usb_hid_dev *hid_dev, void **data);
    6668
    67 bool usb_mouse_polling_callback(struct usb_hid_dev *hid_dev, uint8_t *buffer,
    68     size_t buffer_size);
     69bool usb_mouse_polling_callback(struct usb_hid_dev *hid_dev, void *data,
     70    uint8_t *buffer, size_t buffer_size);
    6971
    70 void usb_mouse_deinit(struct usb_hid_dev *hid_dev);
     72void usb_mouse_deinit(struct usb_hid_dev *hid_dev, void *data);
    7173
    7274int usb_mouse_set_boot_protocol(struct usb_hid_dev *hid_dev);
  • uspace/drv/usbhid/multimedia/keymap.h

    rd736fe38 rc7b5826  
    3434 */
    3535
    36 #ifndef USB_HID_LGTCH_ULTRAX_KEYMAP_H_
    37 #define USB_HID_LGTCH_ULTRAX_KEYMAP_H_
     36#ifndef USB_HID_MULTIMEDIA_KEYMAP_H_
     37#define USB_HID_MULTIMEDIA_KEYMAP_H_
    3838
    39 unsigned int usb_lgtch_map_usage(int usage);
     39unsigned int usb_multimedia_map_usage(int usage);
    4040
    41 #endif /* USB_HID_LGTCH_ULTRAX_KEYMAP_H_ */
     41const char *usb_multimedia_usage_to_str(int usage);
     42
     43#endif /* USB_HID_MULTIMEDIA_KEYMAP_H_ */
    4244
    4345/**
  • uspace/drv/usbhid/multimedia/multimedia.c

    rd736fe38 rc7b5826  
    3232/**
    3333 * @file
    34  * USB Logitech UltraX Keyboard sample driver.
    35  */
    36 
    37 
    38 #include "lgtch-ultrax.h"
     34 * USB Keyboard multimedia keys subdriver.
     35 */
     36
     37
     38#include "multimedia.h"
    3939#include "../usbhid.h"
    4040#include "keymap.h"
    4141
    42 #include <usb/classes/hidparser.h>
     42#include <usb/hid/hidparser.h>
    4343#include <usb/debug.h>
    44 #include <usb/classes/hidut.h>
     44#include <usb/hid/usages/core.h>
    4545
    4646#include <errno.h>
     
    5050#include <io/console.h>
    5151
    52 #define NAME "lgtch-ultrax"
    53 
    54 typedef enum usb_lgtch_flags {
    55         USB_LGTCH_STATUS_UNINITIALIZED = 0,
    56         USB_LGTCH_STATUS_INITIALIZED = 1,
    57         USB_LGTCH_STATUS_TO_DESTROY = -1
    58 } usb_lgtch_flags;
     52#define NAME "multimedia-keys"
    5953
    6054/*----------------------------------------------------------------------------*/
     
    6256 * Logitech UltraX device type.
    6357 */
    64 typedef struct usb_lgtch_ultrax_t {
     58typedef struct usb_multimedia_t {
    6559        /** Previously pressed keys (not translated to key codes). */
    6660        int32_t *keys_old;
     
    6862        int32_t *keys;
    6963        /** Count of stored keys (i.e. number of keys in the report). */
    70         size_t key_count;
    71        
     64        size_t key_count;       
    7265        /** IPC phone to the console device (for sending key events). */
    7366        int console_phone;
    74 
    75         /** Information for auto-repeat of keys. */
    76 //      usb_kbd_repeat_t repeat;
    77        
    78         /** Mutex for accessing the information about auto-repeat. */
    79 //      fibril_mutex_t *repeat_mtx;
    80 
    81         /** State of the structure (for checking before use).
    82          *
    83          * 0 - not initialized
    84          * 1 - initialized
    85          * -1 - ready for destroying
    86          */
    87         int initialized;
    88 } usb_lgtch_ultrax_t;
     67} usb_multimedia_t;
    8968
    9069
     
    10887        sysarg_t method = IPC_GET_IMETHOD(*icall);
    10988       
    110         usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)fun->driver_data;
    111        
    112         if (hid_dev == NULL || hid_dev->data == NULL) {
     89        usb_multimedia_t *multim_dev = (usb_multimedia_t *)fun->driver_data;
     90        //usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)fun->driver_data;
     91       
     92        if (multim_dev == NULL) {
    11393                async_answer_0(icallid, EINVAL);
    11494                return;
    11595        }
    116        
    117         assert(hid_dev != NULL);
    118         assert(hid_dev->data != NULL);
    119         usb_lgtch_ultrax_t *lgtch_dev = (usb_lgtch_ultrax_t *)hid_dev->data;
    12096
    12197        if (method == IPC_M_CONNECT_TO_ME) {
    12298                int callback = IPC_GET_ARG5(*icall);
    12399
    124                 if (lgtch_dev->console_phone != -1) {
     100                if (multim_dev->console_phone != -1) {
    125101                        async_answer_0(icallid, ELIMIT);
    126102                        return;
    127103                }
    128104
    129                 lgtch_dev->console_phone = callback;
     105                multim_dev->console_phone = callback;
    130106                usb_log_debug(NAME " Saved phone to console: %d\n", callback);
    131107                async_answer_0(icallid, EOK);
     
    138114/*----------------------------------------------------------------------------*/
    139115
    140 static ddf_dev_ops_t lgtch_ultrax_ops = {
     116static ddf_dev_ops_t multimedia_ops = {
    141117        .default_handler = default_connection_handler
    142118};
    143 
    144 /*----------------------------------------------------------------------------*/
    145 
    146 //static void usb_lgtch_process_keycodes(const uint8_t *key_codes, size_t count,
    147 //    uint8_t report_id, void *arg);
    148 
    149 //static const usb_hid_report_in_callbacks_t usb_lgtch_parser_callbacks = {
    150 //      .keyboard = usb_lgtch_process_keycodes
    151 //};
    152 
    153 ///*----------------------------------------------------------------------------*/
    154 
    155 //static void usb_lgtch_process_keycodes(const uint8_t *key_codes, size_t count,
    156 //    uint8_t report_id, void *arg)
    157 //{
    158 //      // TODO: checks
    159        
    160 //      usb_log_debug(NAME " Got keys from parser (report id: %u): %s\n",
    161 //          report_id, usb_debug_str_buffer(key_codes, count, 0));
    162 //}
    163119
    164120/*----------------------------------------------------------------------------*/
     
    180136 * @param key Key code of the key according to HID Usage Tables.
    181137 */
    182 static void usb_lgtch_push_ev(usb_hid_dev_t *hid_dev, int type,
    183     unsigned int key)
     138static void usb_multimedia_push_ev(usb_hid_dev_t *hid_dev,
     139    usb_multimedia_t *multim_dev, int type, unsigned int key)
    184140{
    185141        assert(hid_dev != NULL);
    186         assert(hid_dev->data != NULL);
    187        
    188         usb_lgtch_ultrax_t *lgtch_dev = (usb_lgtch_ultrax_t *)hid_dev->data;
     142        assert(multim_dev != NULL);
     143       
     144//      usb_multimedia_t *multim_dev = (usb_multimedia_t *)hid_dev->data;
    189145       
    190146        console_event_t ev;
     
    193149        ev.key = key;
    194150        ev.mods = 0;
    195 
    196151        ev.c = 0;
    197152
    198153        usb_log_debug2(NAME " Sending key %d to the console\n", ev.key);
    199         if (lgtch_dev->console_phone < 0) {
     154        if (multim_dev->console_phone < 0) {
    200155                usb_log_warning(
    201156                    "Connection to console not ready, key discarded.\n");
     
    203158        }
    204159       
    205         async_msg_4(lgtch_dev->console_phone, KBD_EVENT, ev.type, ev.key,
     160        async_msg_4(multim_dev->console_phone, KBD_EVENT, ev.type, ev.key,
    206161            ev.mods, ev.c);
    207162}
     
    209164/*----------------------------------------------------------------------------*/
    210165
    211 static void usb_lgtch_free(usb_lgtch_ultrax_t **lgtch_dev)
    212 {
    213         if (lgtch_dev == NULL || *lgtch_dev == NULL) {
     166static void usb_multimedia_free(usb_multimedia_t **multim_dev)
     167{
     168        if (multim_dev == NULL || *multim_dev == NULL) {
    214169                return;
    215170        }
    216171       
    217172        // hangup phone to the console
    218         async_hangup((*lgtch_dev)->console_phone);
    219        
    220 //      if ((*lgtch_dev)->repeat_mtx != NULL) {
    221 //              /* TODO: replace by some check and wait */
    222 //              assert(!fibril_mutex_is_locked((*lgtch_dev)->repeat_mtx));
    223 //              free((*lgtch_dev)->repeat_mtx);
    224 //      }
     173        async_hangup((*multim_dev)->console_phone);
    225174       
    226175        // free all buffers
    227         if ((*lgtch_dev)->keys != NULL) {
    228                 free((*lgtch_dev)->keys);
    229         }
    230         if ((*lgtch_dev)->keys_old != NULL) {
    231                 free((*lgtch_dev)->keys_old);
    232         }
    233 
    234         free(*lgtch_dev);
    235         *lgtch_dev = NULL;
    236 }
    237 
    238 /*----------------------------------------------------------------------------*/
    239 
    240 static int usb_lgtch_create_function(usb_hid_dev_t *hid_dev)
     176        if ((*multim_dev)->keys != NULL) {
     177                free((*multim_dev)->keys);
     178        }
     179        if ((*multim_dev)->keys_old != NULL) {
     180                free((*multim_dev)->keys_old);
     181        }
     182
     183        free(*multim_dev);
     184        *multim_dev = NULL;
     185}
     186
     187/*----------------------------------------------------------------------------*/
     188
     189static int usb_multimedia_create_function(usb_hid_dev_t *hid_dev,
     190    usb_multimedia_t *multim_dev)
    241191{
    242192        /* Create the function exposed under /dev/devices. */
     
    248198        }
    249199       
    250         /*
    251          * Store the initialized HID device and HID ops
    252          * to the DDF function.
    253          */
    254         fun->ops = &lgtch_ultrax_ops;
    255         fun->driver_data = hid_dev;   // TODO: maybe change to hid_dev->data
     200        fun->ops = &multimedia_ops;
     201        fun->driver_data = multim_dev;   // TODO: maybe change to hid_dev->data
    256202       
    257203        int rc = ddf_fun_bind(fun);
     
    279225/*----------------------------------------------------------------------------*/
    280226
    281 int usb_lgtch_init(struct usb_hid_dev *hid_dev)
     227int usb_multimedia_init(struct usb_hid_dev *hid_dev, void **data)
    282228{
    283229        if (hid_dev == NULL || hid_dev->usb_dev == NULL) {
     
    285231        }
    286232       
    287         usb_log_debug(NAME " Initializing HID/lgtch_ultrax structure...\n");
    288        
    289         usb_lgtch_ultrax_t *lgtch_dev = (usb_lgtch_ultrax_t *)malloc(
    290             sizeof(usb_lgtch_ultrax_t));
    291         if (lgtch_dev == NULL) {
     233        usb_log_debug(NAME " Initializing HID/multimedia structure...\n");
     234       
     235        usb_multimedia_t *multim_dev = (usb_multimedia_t *)malloc(
     236            sizeof(usb_multimedia_t));
     237        if (multim_dev == NULL) {
    292238                return ENOMEM;
    293239        }
    294240       
    295         lgtch_dev->console_phone = -1;
     241        multim_dev->console_phone = -1;
    296242       
    297243        usb_hid_report_path_t *path = usb_hid_report_path();
     
    300246        usb_hid_report_path_set_report_id(path, 1);
    301247       
    302         lgtch_dev->key_count = usb_hid_report_input_length(
    303             hid_dev->report, path,
    304             USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY);
     248        multim_dev->key_count = usb_hid_report_size(
     249            hid_dev->report, 0, USB_HID_REPORT_TYPE_INPUT);
     250
    305251        usb_hid_report_path_free(path);
    306252       
    307253        usb_log_debug(NAME " Size of the input report: %zu\n",
    308             lgtch_dev->key_count);
    309        
    310         lgtch_dev->keys = (int32_t *)calloc(lgtch_dev->key_count,
     254            multim_dev->key_count);
     255       
     256        multim_dev->keys = (int32_t *)calloc(multim_dev->key_count,
    311257            sizeof(int32_t));
    312258       
    313         if (lgtch_dev->keys == NULL) {
     259        if (multim_dev->keys == NULL) {
    314260                usb_log_fatal("No memory!\n");
    315                 free(lgtch_dev);
     261                free(multim_dev);
    316262                return ENOMEM;
    317263        }
    318264       
    319         lgtch_dev->keys_old =
    320                 (int32_t *)calloc(lgtch_dev->key_count, sizeof(int32_t));
    321        
    322         if (lgtch_dev->keys_old == NULL) {
     265        multim_dev->keys_old =
     266                (int32_t *)calloc(multim_dev->key_count, sizeof(int32_t));
     267       
     268        if (multim_dev->keys_old == NULL) {
    323269                usb_log_fatal("No memory!\n");
    324                 free(lgtch_dev->keys);
    325                 free(lgtch_dev);
     270                free(multim_dev->keys);
     271                free(multim_dev);
    326272                return ENOMEM;
    327273        }
     
    330276       
    331277        // save the KBD device structure into the HID device structure
    332         hid_dev->data = lgtch_dev;
    333        
    334         lgtch_dev->initialized = USB_LGTCH_STATUS_INITIALIZED;
    335         usb_log_debug(NAME " HID/lgtch_ultrax device structure initialized.\n");
    336        
    337         int rc = usb_lgtch_create_function(hid_dev);
     278        *data = multim_dev;
     279       
     280        usb_log_debug(NAME " HID/multimedia device structure initialized.\n");
     281       
     282        int rc = usb_multimedia_create_function(hid_dev, multim_dev);
    338283        if (rc != EOK) {
    339                 usb_lgtch_free(&lgtch_dev);
     284                usb_multimedia_free(&multim_dev);
    340285                return rc;
    341286        }
    342287       
    343         usb_log_debug(NAME " HID/lgtch_ultrax structure initialized.\n");
     288        usb_log_debug(NAME " HID/multimedia structure initialized.\n");
    344289       
    345290        return EOK;
     
    348293/*----------------------------------------------------------------------------*/
    349294
    350 void usb_lgtch_deinit(struct usb_hid_dev *hid_dev)
     295void usb_multimedia_deinit(struct usb_hid_dev *hid_dev, void *data)
    351296{
    352297        if (hid_dev == NULL) {
     
    354299        }
    355300       
    356         if (hid_dev->data != NULL) {
    357                 usb_lgtch_ultrax_t *lgtch_dev =
    358                     (usb_lgtch_ultrax_t *)hid_dev->data;
    359 //              if (usb_kbd_is_initialized(kbd_dev)) {
    360 //                      usb_kbd_mark_unusable(kbd_dev);
    361 //              } else {
    362                         usb_lgtch_free(&lgtch_dev);
    363                         hid_dev->data = NULL;
    364 //              }
    365         }
    366 }
    367 
    368 /*----------------------------------------------------------------------------*/
    369 
    370 bool usb_lgtch_polling_callback(struct usb_hid_dev *hid_dev,
     301        if (data != NULL) {
     302                usb_multimedia_t *multim_dev = (usb_multimedia_t *)data;
     303                usb_multimedia_free(&multim_dev);
     304        }
     305}
     306
     307/*----------------------------------------------------------------------------*/
     308
     309bool usb_multimedia_polling_callback(struct usb_hid_dev *hid_dev, void *data,
    371310    uint8_t *buffer, size_t buffer_size)
    372311{
     
    375314        usb_log_debug(NAME " usb_lgtch_polling_callback(%p, %p, %zu)\n",
    376315            hid_dev, buffer, buffer_size);
     316       
     317        if (data == NULL) {
     318                return EINVAL;  // TODO: other error code?
     319        }
     320       
     321        usb_multimedia_t *multim_dev = (usb_multimedia_t *)data;
    377322
    378323        usb_log_debug(NAME " Calling usb_hid_parse_report() with "
     
    380325       
    381326        usb_hid_report_path_t *path = usb_hid_report_path();
    382         usb_hid_report_path_append_item(path, 0xc, 0);
     327        usb_hid_report_path_append_item(path, USB_HIDUT_PAGE_CONSUMER, 0);
    383328
    384329        uint8_t report_id;
     
    400345            USB_HID_REPORT_TYPE_INPUT);
    401346       
    402         unsigned int key;
     347//      unsigned int key;
    403348       
    404349        /*! @todo Is this iterating OK if done multiple times?
     
    406351         */
    407352        while (field != NULL) {
    408                 usb_log_debug(NAME " KEY VALUE(%X) USAGE(%X)\n", field->value,
    409                     field->usage);
    410                
    411                 key = usb_lgtch_map_usage(field->usage);
    412                 usb_lgtch_push_ev(hid_dev, KEY_PRESS, key);
     353                if(field->value != 0) {
     354                        usb_log_debug(NAME " KEY VALUE(%X) USAGE(%X)\n",
     355                            field->value, field->usage);
     356                        unsigned int key =
     357                            usb_multimedia_map_usage(field->usage);
     358                        const char *key_str =
     359                            usb_multimedia_usage_to_str(field->usage);
     360                        usb_log_info("Pressed key: %s\n", key_str);
     361                        usb_multimedia_push_ev(hid_dev, multim_dev, KEY_PRESS,
     362                                               key);
     363                }
    413364               
    414365                field = usb_hid_report_get_sibling(
  • uspace/drv/usbhid/multimedia/multimedia.h

    rd736fe38 rc7b5826  
    3131 */
    3232/** @file
    33  * USB Logitech UltraX Keyboard sample driver.
     33 * USB Keyboard multimedia keys subdriver.
    3434 */
    3535
    36 #ifndef USB_HID_LGTCH_ULTRAX_H_
    37 #define USB_HID_LGTCH_ULTRAX_H_
     36#ifndef USB_HID_MULTIMEDIA_H_
     37#define USB_HID_MULTIMEDIA_H_
    3838
    39 #include <usb/devdrv.h>
     39#include <usb/dev/driver.h>
    4040
    4141struct usb_hid_dev;
     
    4343/*----------------------------------------------------------------------------*/
    4444
    45 int usb_lgtch_init(struct usb_hid_dev *hid_dev);
     45int usb_multimedia_init(struct usb_hid_dev *hid_dev, void **data);
    4646
    47 void usb_lgtch_deinit(struct usb_hid_dev *hid_dev);
     47void usb_multimedia_deinit(struct usb_hid_dev *hid_dev, void *data);
    4848
    49 bool usb_lgtch_polling_callback(struct usb_hid_dev *hid_dev, uint8_t *buffer,
    50     size_t buffer_size);
     49bool usb_multimedia_polling_callback(struct usb_hid_dev *hid_dev, void *data,
     50    uint8_t *buffer, size_t buffer_size);
    5151
    5252/*----------------------------------------------------------------------------*/
    5353
    54 #endif // USB_HID_LGTCH_ULTRAX_H_
     54#endif // USB_HID_MULTIMEDIA_H_
    5555
    5656/**
  • uspace/drv/usbhid/subdrivers.c

    rd736fe38 rc7b5826  
    3535
    3636#include "subdrivers.h"
    37 #include "usb/classes/hidut.h"
    38 #include "usb/classes/hidpath.h"
     37#include <usb/hid/usages/core.h>
     38#include <usb/hid/hidpath.h>
    3939
    40 #include "lgtch-ultrax/lgtch-ultrax.h"
     40//#include "lgtch-ultrax/lgtch-ultrax.h"
     41#include "multimedia/multimedia.h"
    4142#include "mouse/mousedev.h"
    4243
    4344static usb_hid_subdriver_usage_t path_kbd[] = {
    44         {USB_HIDUT_PAGE_KEYBOARD, 0},
     45        {USB_HIDUT_PAGE_GENERIC_DESKTOP,
     46         USB_HIDUT_USAGE_GENERIC_DESKTOP_KEYBOARD},
    4547        {0, 0}
    4648};
    4749
    48 static usb_hid_subdriver_usage_t path_mouse2[] = {
    49         {USB_HIDUT_PAGE_GENERIC_DESKTOP, USB_HIDUT_USAGE_GENERIC_DESKTOP_X},
     50static usb_hid_subdriver_usage_t path_mouse[] = {
     51        {USB_HIDUT_PAGE_GENERIC_DESKTOP, USB_HIDUT_USAGE_GENERIC_DESKTOP_MOUSE},
    5052        {0, 0}
    5153};
    5254
    53 static usb_hid_subdriver_usage_t lgtch_path[] = {
    54         {0xc, 0},
     55static usb_hid_subdriver_usage_t multim_key_path[] = {
     56        {USB_HIDUT_PAGE_CONSUMER, USB_HIDUT_USAGE_CONSUMER_CONSUMER_CONTROL},
    5557        {0, 0}
    5658};
     
    6062                path_kbd,
    6163                -1,
    62                 USB_HID_PATH_COMPARE_END
    63                 | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
     64                USB_HID_PATH_COMPARE_BEGIN,
    6465                -1,
    6566                -1,
     
    7374        },
    7475        {
    75                 lgtch_path,
     76                multim_key_path,
    7677                1,
    77                 USB_HID_PATH_COMPARE_END
    78                 | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
    79                 0x046d,
    80                 0xc30e,
     78                USB_HID_PATH_COMPARE_BEGIN,
     79                -1,
     80                -1,
    8181                {
    82                         .init = usb_lgtch_init,
    83                         .deinit = usb_lgtch_deinit,
    84                         .poll = usb_lgtch_polling_callback,
     82                        .init = usb_multimedia_init,
     83                        .deinit = usb_multimedia_deinit,
     84                        .poll = usb_multimedia_polling_callback,
    8585                        .poll_end = NULL
    8686                }
    8787        },
    8888        {
    89                 path_mouse2,
     89                path_mouse,
    9090                -1,
    91                 USB_HID_PATH_COMPARE_END
    92                 | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
     91                USB_HID_PATH_COMPARE_BEGIN,
    9392                -1,
    9493                -1,
     
    10099                }
    101100        },
    102         {NULL, -1, 0, -1, -1, {NULL, NULL, NULL, NULL}}
     101        {NULL, -1, 0, -1, -1, {NULL, NULL, NULL, NULL, NULL}}
    103102};
    104103
  • uspace/drv/usbhid/usbhid.c

    rd736fe38 rc7b5826  
    3737#include <usb/debug.h>
    3838#include <usb/classes/classes.h>
    39 #include <usb/classes/hid.h>
    40 #include <usb/classes/hidparser.h>
    41 #include <usb/classes/hidreport.h>
    42 #include <usb/classes/hidreq.h>
     39#include <usb/hid/hid.h>
     40#include <usb/hid/hidparser.h>
     41#include <usb/hid/hidreport.h>
     42#include <usb/hid/request.h>
    4343#include <errno.h>
    4444#include <str_error.h>
     
    203203       
    204204        usb_log_debug("Compare flags: %d\n", mapping->compare);
    205         size_t size = usb_hid_report_input_length(hid_dev->report, usage_path,
    206             mapping->compare);
     205//      size_t size = usb_hid_report_size(hid_dev->report, 0,
     206//          USB_HID_REPORT_TYPE_INPUT);
     207        size_t size = 0;
     208        usb_hid_report_field_t *field = usb_hid_report_get_sibling (hid_dev->report,
     209                NULL, usage_path, mapping->compare, USB_HID_REPORT_TYPE_INPUT);
     210        while(field != NULL) {
     211                size++;
     212                field = usb_hid_report_get_sibling (hid_dev->report,
     213                                        field, usage_path, mapping->compare,
     214                            USB_HID_REPORT_TYPE_INPUT);
     215        }
     216       
    207217        usb_log_debug("Size of the input report: %zuB\n", size);
    208        
    209218        usb_hid_report_path_free(usage_path);
    210219       
     
    457466                        if (hid_dev->subdrivers[i].init != NULL) {
    458467                                usb_log_debug("Initializing subdriver %d.\n",i);
    459                                 rc = hid_dev->subdrivers[i].init(hid_dev);
     468                                rc = hid_dev->subdrivers[i].init(hid_dev,
     469                                    &hid_dev->subdrivers[i].data);
    460470                                if (rc != EOK) {
    461471                                        usb_log_warning("Failed to initialize"
     
    522532        for (i = 0; i < hid_dev->subdriver_count; ++i) {
    523533                if (hid_dev->subdrivers[i].poll != NULL
    524                     && hid_dev->subdrivers[i].poll(hid_dev, buffer,
    525                     buffer_size)) {
     534                    && hid_dev->subdrivers[i].poll(hid_dev,
     535                        hid_dev->subdrivers[i].data, buffer, buffer_size)) {
    526536                        cont = true;
    527537                }
     
    546556        for (i = 0; i < hid_dev->subdriver_count; ++i) {
    547557                if (hid_dev->subdrivers[i].poll_end != NULL) {
    548                         hid_dev->subdrivers[i].poll_end(hid_dev, reason);
     558                        hid_dev->subdrivers[i].poll_end(hid_dev,
     559                            hid_dev->subdrivers[i].data, reason);
    549560                }
    550561        }
     
    627638        for (i = 0; i < (*hid_dev)->subdriver_count; ++i) {
    628639                if ((*hid_dev)->subdrivers[i].deinit != NULL) {
    629                         (*hid_dev)->subdrivers[i].deinit(*hid_dev);
     640                        (*hid_dev)->subdrivers[i].deinit(*hid_dev,
     641                            (*hid_dev)->subdrivers[i].data);
    630642                }
    631643        }
  • uspace/drv/usbhid/usbhid.h

    rd736fe38 rc7b5826  
    3939#include <stdint.h>
    4040
    41 #include <usb/classes/hidparser.h>
     41#include <usb/hid/hidparser.h>
    4242#include <ddf/driver.h>
    43 #include <usb/pipes.h>
    44 #include <usb/devdrv.h>
    45 #include <usb/classes/hid.h>
     43#include <usb/dev/pipes.h>
     44#include <usb/dev/driver.h>
     45#include <usb/hid/hid.h>
    4646#include <bool.h>
    4747
    4848struct usb_hid_dev;
    4949
    50 typedef int (*usb_hid_driver_init_t)(struct usb_hid_dev *);
    51 typedef void (*usb_hid_driver_deinit_t)(struct usb_hid_dev *);
    52 typedef bool (*usb_hid_driver_poll)(struct usb_hid_dev *, uint8_t *, size_t);
    53 typedef int (*usb_hid_driver_poll_ended)(struct usb_hid_dev *, bool reason);
     50typedef int (*usb_hid_driver_init_t)(struct usb_hid_dev *, void **data);
     51typedef void (*usb_hid_driver_deinit_t)(struct usb_hid_dev *, void *data);
     52typedef bool (*usb_hid_driver_poll)(struct usb_hid_dev *, void *data, uint8_t *,
     53                                    size_t);
     54typedef int (*usb_hid_driver_poll_ended)(struct usb_hid_dev *, void *data,
     55                                         bool reason);
    5456
    5557// TODO: add function and class name??
     
    6365        /** Function to be called when polling ends. */
    6466        usb_hid_driver_poll_ended poll_end;
     67        /** Arbitrary data needed by the subdriver. */
     68        void *data;
    6569} usb_hid_subdriver_t;
    6670
     
    7276        /** Structure holding generic USB device information. */
    7377        usb_device_t *usb_dev;
    74        
    75         /** @todo What is this actually? */
    76         ddf_dev_ops_t ops;
    7778       
    7879        /** Index of the polling pipe in usb_hid_endpoints array. */
     
    9798       
    9899        size_t input_report_size;
    99        
    100         /** Arbitrary data (e.g. a special structure for handling keyboard). */
    101         void *data;
    102100} usb_hid_dev_t;
    103101
  • uspace/drv/usbhub/main.c

    rd736fe38 rc7b5826  
    3636#include <stdio.h>
    3737
    38 #include <usb/devdrv.h>
     38#include <usb/dev/driver.h>
    3939#include <usb/classes/classes.h>
    4040
  • uspace/drv/usbhub/port_status.h

    rd736fe38 rc7b5826  
    3535#include <bool.h>
    3636#include <sys/types.h>
    37 #include <usb/request.h>
     37#include <usb/dev/request.h>
    3838#include "usbhub_private.h"
    3939
  • uspace/drv/usbhub/ports.h

    rd736fe38 rc7b5826  
    3636#define DRV_USBHUB_PORTS_H
    3737
    38 #include <usb/devdrv.h>
    39 #include <usb/hub.h>
     38#include <usb/dev/driver.h>
     39#include <usb/dev/hub.h>
    4040
    4141typedef struct usb_hub_info_t usb_hub_info_t;
  • uspace/drv/usbhub/usbhub.c

    rd736fe38 rc7b5826  
    4242#include <usb/ddfiface.h>
    4343#include <usb/descriptor.h>
    44 #include <usb/recognise.h>
    45 #include <usb/request.h>
     44#include <usb/dev/recognise.h>
     45#include <usb/dev/request.h>
    4646#include <usb/classes/hub.h>
    47 #include <usb/devpoll.h>
     47#include <usb/dev/poll.h>
    4848#include <stdio.h>
    4949
     
    5151#include "usbhub_private.h"
    5252#include "port_status.h"
    53 #include "usb/usb.h"
    54 #include "usb/pipes.h"
    55 #include "usb/classes/classes.h"
     53#include <usb/usb.h>
     54#include <usb/dev/pipes.h>
     55#include <usb/classes/classes.h>
    5656
    5757
  • uspace/drv/usbhub/usbhub.h

    rd736fe38 rc7b5826  
    3939#include <ddf/driver.h>
    4040
    41 #include <usb/hub.h>
     41#include <usb/dev/hub.h>
    4242#include <usb/classes/hub.h>
    4343
    44 #include <usb/pipes.h>
    45 #include <usb/devdrv.h>
     44#include <usb/dev/pipes.h>
     45#include <usb/dev/driver.h>
    4646
    4747#include <fibril_synch.h>
  • uspace/drv/usbhub/usbhub_private.h

    rd736fe38 rc7b5826  
    4747#include <usb/usb.h>
    4848#include <usb/debug.h>
    49 #include <usb/request.h>
     49#include <usb/dev/request.h>
    5050
    5151//************
  • uspace/drv/usbmast/inquiry.c

    rd736fe38 rc7b5826  
    3434 * Main routines of USB mass storage driver.
    3535 */
    36 #include <usb/devdrv.h>
     36#include <usb/dev/driver.h>
    3737#include <usb/debug.h>
    3838#include <usb/classes/classes.h>
  • uspace/drv/usbmast/main.c

    rd736fe38 rc7b5826  
    3434 * Main routines of USB mass storage driver.
    3535 */
    36 #include <usb/devdrv.h>
     36#include <usb/dev/driver.h>
    3737#include <usb/debug.h>
    3838#include <usb/classes/classes.h>
  • uspace/drv/usbmast/mast.c

    rd736fe38 rc7b5826  
    4040#include <str_error.h>
    4141#include <usb/debug.h>
    42 #include <usb/request.h>
     42#include <usb/dev/request.h>
    4343
    4444bool usb_mast_verbose = true;
  • uspace/drv/usbmast/mast.h

    rd736fe38 rc7b5826  
    3939#include <sys/types.h>
    4040#include <usb/usb.h>
    41 #include <usb/pipes.h>
    42 #include <usb/devdrv.h>
     41#include <usb/dev/pipes.h>
     42#include <usb/dev/driver.h>
    4343
    4444/** Result of SCSI INQUIRY command.
  • uspace/drv/usbmid/dump.c

    rd736fe38 rc7b5826  
    3737#include <str_error.h>
    3838#include <stdlib.h>
    39 #include <usb/pipes.h>
    40 #include <usb/dp.h>
     39#include <usb/dev/pipes.h>
     40#include <usb/dev/dp.h>
    4141#include <usb/classes/classes.h>
    4242#include "usbmid.h"
  • uspace/drv/usbmid/explore.c

    rd736fe38 rc7b5826  
    3838#include <stdlib.h>
    3939#include <usb/classes/classes.h>
    40 #include <usb/request.h>
    41 #include <usb/dp.h>
     40#include <usb/dev/request.h>
     41#include <usb/dev/dp.h>
    4242#include <usb/ddfiface.h>
    4343#include "usbmid.h"
  • uspace/drv/usbmid/main.c

    rd736fe38 rc7b5826  
    3838#include <usb/debug.h>
    3939#include <usb/classes/classes.h>
    40 #include <usb/request.h>
     40#include <usb/dev/request.h>
    4141#include <usb/descriptor.h>
    42 #include <usb/pipes.h>
     42#include <usb/dev/pipes.h>
    4343
    4444#include "usbmid.h"
  • uspace/drv/usbmid/usbmid.c

    rd736fe38 rc7b5826  
    3939#include <usb_iface.h>
    4040#include <usb/ddfiface.h>
    41 #include <usb/pipes.h>
     41#include <usb/dev/pipes.h>
    4242#include <usb/classes/classes.h>
    43 #include <usb/recognise.h>
     43#include <usb/dev/recognise.h>
    4444#include "usbmid.h"
    4545
  • uspace/drv/usbmid/usbmid.h

    rd736fe38 rc7b5826  
    4040#include <ddf/driver.h>
    4141#include <usb/usb.h>
    42 #include <usb/pipes.h>
     42#include <usb/dev/pipes.h>
    4343#include <usb/debug.h>
    44 #include <usb/devdrv.h>
     44#include <usb/dev/driver.h>
    4545
    4646#define NAME "usbmid"
  • uspace/drv/usbmouse/init.c

    rd736fe38 rc7b5826  
    3737#include <usb/debug.h>
    3838#include <usb/classes/classes.h>
    39 #include <usb/classes/hid.h>
    40 #include <usb/request.h>
     39#include <usb/hid/hid.h>
     40#include <usb/dev/request.h>
    4141#include <errno.h>
    4242
  • uspace/drv/usbmouse/main.c

    rd736fe38 rc7b5826  
    3636#include "mouse.h"
    3737#include <usb/debug.h>
    38 #include <usb/devpoll.h>
     38#include <usb/dev/poll.h>
    3939#include <errno.h>
    4040#include <str_error.h>
  • uspace/drv/usbmouse/mouse.h

    rd736fe38 rc7b5826  
    3737#define USBMOUSE_MOUSE_H_
    3838
    39 #include <usb/devdrv.h>
    40 #include <usb/pipes.h>
     39#include <usb/dev/driver.h>
     40#include <usb/dev/pipes.h>
    4141#include <time.h>
    4242
  • uspace/drv/vhc/connhost.c

    rd736fe38 rc7b5826  
    3636#include <errno.h>
    3737#include <usb/usb.h>
    38 #include <usb/addrkeep.h>
    3938#include <usb/ddfiface.h>
    4039#include <usb/debug.h>
  • uspace/drv/vhc/hub.c

    rd736fe38 rc7b5826  
    4040#include <ddf/driver.h>
    4141#include <devman.h>
    42 #include <usb/hub.h>
    43 #include <usb/recognise.h>
     42#include <usb/dev/hub.h>
     43#include <usb/dev/recognise.h>
    4444
    4545#include "hub.h"
Note: See TracChangeset for help on using the changeset viewer.