Changes in / [00b13408:3746bfe] in mainline


Ignore:
Location:
uspace
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/usbhub/usbhub.c

    r00b13408 r3746bfe  
    405405        //if this hub already uses default address, it cannot request it once more
    406406        if(hub->is_default_address_used) return;
     407        int opResult = usb_hub_clear_port_feature(&hub->endpoints.control,
     408                                port, USB_HUB_FEATURE_C_PORT_CONNECTION);
     409        if(opResult != EOK){
     410                usb_log_warning("could not clear port-change-connection flag");
     411        }
    407412
    408413        usb_device_request_setup_packet_t request;
    409         int opResult;
    410414        usb_log_info("some connection changed");
    411415        assert(hub->endpoints.control.hc_phone);
     
    431435                usb_hub_release_default_address(hub);
    432436        }
     437        return;
    433438}
    434439
     
    531536static void usb_hub_removed_device(
    532537    usb_hub_info_t * hub,uint16_t port) {
    533                
     538
     539        int opResult = usb_hub_clear_port_feature(&hub->endpoints.control,
     540                                port, USB_HUB_FEATURE_C_PORT_CONNECTION);
     541        if(opResult != EOK){
     542                usb_log_warning("could not clear port-change-connection flag");
     543        }
    534544        /** \TODO remove device from device manager - not yet implemented in
    535545         * devide manager
     
    611621        //something connected/disconnected
    612622        if (usb_port_connect_change(&status)) {
    613                 opResult = usb_hub_clear_port_feature(pipe,
    614                     port, USB_HUB_FEATURE_C_PORT_CONNECTION);
    615                 // TODO: check opResult
    616623                if (usb_port_dev_connected(&status)) {
    617624                        usb_log_info("some connection changed");
  • uspace/drv/usbmouse/init.c

    r00b13408 r3746bfe  
    124124                goto leave;
    125125        }
     126       
     127        /* Open the control pipe. */
     128        rc = usb_endpoint_pipe_start_session(&dev->ctrl_pipe);
     129        if (rc != EOK) {
     130                goto leave;
     131        }
     132       
     133        /* Set the boot protocol. */
     134        rc = usb_control_request_set(&dev->ctrl_pipe,
     135            USB_REQUEST_TYPE_CLASS, USB_REQUEST_RECIPIENT_INTERFACE,
     136            USB_HIDREQ_SET_PROTOCOL, USB_HID_PROTOCOL_BOOT, dev->interface_no,
     137            NULL, 0);
     138        if (rc != EOK) {
     139                goto leave;
     140        }
     141       
     142        /* Close the control pipe (ignore errors). */
     143        usb_endpoint_pipe_end_session(&dev->ctrl_pipe);
     144
    126145
    127146        /* Everything allright. */
  • uspace/lib/usb/include/usb/devdrv.h

    r00b13408 r3746bfe  
    4747         */
    4848        usb_endpoint_mapping_t *pipes;
     49        /** Current interface.
     50         * Usually, drivers operate on single interface only.
     51         * This item contains the value of the interface or -1 for any.
     52         */
     53        int interface_no;
    4954        /** Generic DDF device backing this one. */
    5055        ddf_dev_t *ddf_dev;
  • uspace/lib/usb/src/devdrv.c

    r00b13408 r3746bfe  
    109109{
    110110        int rc;
    111         int my_interface = usb_device_get_assigned_interface(dev->ddf_dev);
     111        dev->interface_no = usb_device_get_assigned_interface(dev->ddf_dev);
    112112
    113113        size_t pipe_count = count_other_pipes(drv);
     
    134134
    135135                dev->pipes[i].description = drv->endpoints[i];
    136                 dev->pipes[i].interface_no = my_interface;
     136                dev->pipes[i].interface_no = dev->interface_no;
    137137        }
    138138
Note: See TracChangeset for help on using the changeset viewer.