diff options
author | Rafaël Carré <rafael.carre@gmail.com> | 2011-12-29 21:49:29 +0000 |
---|---|---|
committer | Rafaël Carré <rafael.carre@gmail.com> | 2011-12-29 21:49:29 +0000 |
commit | 6a6269ffd8dfaf921588bae47cd55716abb78abb (patch) | |
tree | bc0f6e2cbe4cb038720c2891b5067451be4d3ffe | |
parent | c17b0af89edb9818a195d72d80a41f457cc54a39 (diff) | |
download | rockbox-6a6269ffd8dfaf921588bae47cd55716abb78abb.tar.gz rockbox-6a6269ffd8dfaf921588bae47cd55716abb78abb.zip |
usb_hid: fix r31457
descriptor_hid_get() updates its parameter so we need to take its address
the update is hidden inside PACK_DATA macro
Fix HID on the Fuze+
Reported by jlbiasini
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31466 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/usbstack/usb_hid.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/firmware/usbstack/usb_hid.c b/firmware/usbstack/usb_hid.c index 46baff8222..b89e46f291 100644 --- a/firmware/usbstack/usb_hid.c +++ b/firmware/usbstack/usb_hid.c | |||
@@ -554,14 +554,14 @@ static size_t descriptor_report_get(unsigned char *dest) | |||
554 | return (size_t)(report - dest); | 554 | return (size_t)(report - dest); |
555 | } | 555 | } |
556 | 556 | ||
557 | static void descriptor_hid_get(unsigned char *dest) | 557 | static void descriptor_hid_get(unsigned char **dest) |
558 | { | 558 | { |
559 | hid_descriptor.wDescriptorLength0= descriptor_report_get(report_descriptor); | 559 | hid_descriptor.wDescriptorLength0= descriptor_report_get(report_descriptor); |
560 | 560 | ||
561 | logf("hid: desc len %u", hid_descriptor.wDescriptorLength0); | 561 | logf("hid: desc len %u", hid_descriptor.wDescriptorLength0); |
562 | buf_dump(report_descriptor, hid_descriptor.wDescriptorLength0, "desc"); | 562 | buf_dump(report_descriptor, hid_descriptor.wDescriptorLength0, "desc"); |
563 | 563 | ||
564 | PACK_DATA(dest, hid_descriptor); | 564 | PACK_DATA(*dest, hid_descriptor); |
565 | } | 565 | } |
566 | 566 | ||
567 | int usb_hid_get_config_descriptor(unsigned char *dest, int max_packet_size) | 567 | int usb_hid_get_config_descriptor(unsigned char *dest, int max_packet_size) |
@@ -577,7 +577,7 @@ int usb_hid_get_config_descriptor(unsigned char *dest, int max_packet_size) | |||
577 | PACK_DATA(dest, interface_descriptor); | 577 | PACK_DATA(dest, interface_descriptor); |
578 | 578 | ||
579 | /* HID descriptor */ | 579 | /* HID descriptor */ |
580 | descriptor_hid_get(dest); | 580 | descriptor_hid_get(&dest); |
581 | 581 | ||
582 | /* Endpoint descriptor */ | 582 | /* Endpoint descriptor */ |
583 | endpoint_descriptor.wMaxPacketSize = 8; | 583 | endpoint_descriptor.wMaxPacketSize = 8; |
@@ -703,7 +703,7 @@ bool usb_hid_control_request(struct usb_ctrlrequest *req, unsigned char *dest) | |||
703 | switch (type) | 703 | switch (type) |
704 | { | 704 | { |
705 | case USB_DT_HID: | 705 | case USB_DT_HID: |
706 | descriptor_hid_get(dest); | 706 | descriptor_hid_get(&dest); |
707 | break; | 707 | break; |
708 | case USB_DT_REPORT: | 708 | case USB_DT_REPORT: |
709 | len = descriptor_report_get(report_descriptor); | 709 | len = descriptor_report_get(report_descriptor); |