summaryrefslogtreecommitdiff
path: root/firmware/usbstack/usb_charging_only.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/usbstack/usb_charging_only.c')
-rw-r--r--firmware/usbstack/usb_charging_only.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/firmware/usbstack/usb_charging_only.c b/firmware/usbstack/usb_charging_only.c
new file mode 100644
index 0000000000..501a7aa596
--- /dev/null
+++ b/firmware/usbstack/usb_charging_only.c
@@ -0,0 +1,72 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: $
9 *
10 * Copyright (C) 2008 by Frank Gevaerts
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19#include "string.h"
20#include "system.h"
21#include "usb_core.h"
22#include "usb_drv.h"
23#include "kernel.h"
24
25//#define LOGF_ENABLE
26#include "logf.h"
27
28#ifdef USB_CHARGING_ONLY
29
30/* charging_only interface */
31static struct usb_interface_descriptor __attribute__((aligned(2)))
32 interface_descriptor =
33{
34 .bLength = sizeof(struct usb_interface_descriptor),
35 .bDescriptorType = USB_DT_INTERFACE,
36 .bInterfaceNumber = 0,
37 .bAlternateSetting = 0,
38 .bNumEndpoints = 0,
39 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
40 .bInterfaceSubClass = 0,
41 .bInterfaceProtocol = 0,
42 .iInterface = 0
43};
44
45
46static int usb_interface;
47
48int usb_charging_only_set_first_endpoint(int endpoint)
49{
50 /* The dummy charging_only driver doesn't need an endpoint pair */
51 return endpoint;
52}
53int usb_charging_only_set_first_interface(int interface)
54{
55 usb_interface = interface;
56 return interface + 1;
57}
58
59int usb_charging_only_get_config_descriptor(unsigned char *dest,int max_packet_size)
60{
61 (void)max_packet_size;
62 unsigned char *orig_dest = dest;
63
64 interface_descriptor.bInterfaceNumber=usb_interface;
65 memcpy(dest,&interface_descriptor,sizeof(struct usb_interface_descriptor));
66
67 dest+=sizeof(struct usb_interface_descriptor);
68
69 return (dest-orig_dest);
70}
71
72#endif /*USB_CHARGING_ONLY*/