1# Kconfig file for CherryUSB
2menuconfig CHERRYUSB
3    bool "CherryUSB Configuration"
4    default n
5
6if CHERRYUSB
7
8    menuconfig CHERRYUSB_DEVICE
9        bool "Enable usb device mode"
10        default n
11
12    if CHERRYUSB_DEVICE
13        choice
14            prompt "Select usb device speed"
15            default CHERRYUSB_DEVICE_SPEED_FS
16            config CHERRYUSB_DEVICE_SPEED_FS
17                bool "FS"
18            config CHERRYUSB_DEVICE_SPEED_HS
19                bool "HS"
20            config CHERRYUSB_DEVICE_SPEED_AUTO
21                bool "AUTO"
22        endchoice
23
24        choice
25            prompt "Select usb device ip, and some ip need config in usb_config.h, please check"
26            default CHERRYUSB_DEVICE_CUSTOM
27            config CHERRYUSB_DEVICE_CUSTOM
28                bool "CUSTOM (Implement it yourself)"
29            config CHERRYUSB_DEVICE_FSDEV_ST
30                bool "fsdev_st"
31            config CHERRYUSB_DEVICE_FSDEV_CUSTOM
32                bool "fsdev_custom"
33            config CHERRYUSB_DEVICE_DWC2_ST
34                bool "dwc2_st"
35            config CHERRYUSB_DEVICE_DWC2_ESP
36                bool "dwc2_esp"
37            config CHERRYUSB_DEVICE_DWC2_KENDRYTE
38                bool "dwc2_kendryte"
39            config CHERRYUSB_DEVICE_DWC2_AT
40                bool "dwc2_at"
41            config CHERRYUSB_DEVICE_DWC2_HC
42                bool "dwc2_hc"
43            config CHERRYUSB_DEVICE_DWC2_NATION
44                bool "dwc2_nation"
45            config CHERRYUSB_DEVICE_DWC2_GD
46                bool "dwc2_gd"
47            config CHERRYUSB_DEVICE_DWC2_CUSTOM
48                bool "dwc2_custom"
49            config CHERRYUSB_DEVICE_MUSB_ES
50                bool "musb_es"
51            config CHERRYUSB_DEVICE_MUSB_SUNXI
52                bool "musb_sunxi"
53            config CHERRYUSB_DEVICE_MUSB_BK
54                bool "musb_bk"
55            config CHERRYUSB_DEVICE_MUSB_SIFLI
56                bool "musb_sifli"
57            config CHERRYUSB_DEVICE_MUSB_CUSTOM
58                bool "musb_custom"
59            config CHERRYUSB_DEVICE_CHIPIDEA_MCX
60                bool "chipidea_mcx"
61            config CHERRYUSB_DEVICE_CHIPIDEA_CUSTOM
62                bool "chipidea_custom"
63            config CHERRYUSB_DEVICE_KINETIS_MCX
64                bool "kinetis_mcx"
65            config CHERRYUSB_DEVICE_KINETIS_MM32
66                bool "kinetis_mm32"
67            config CHERRYUSB_DEVICE_KINETIS_CUSTOM
68                bool "kinetis_custom"
69            config CHERRYUSB_DEVICE_BL
70                bool "bouffalo"
71            config CHERRYUSB_DEVICE_HPM
72                bool "hpm"
73            config CHERRYUSB_DEVICE_AIC
74                bool "aic"
75            config CHERRYUSB_DEVICE_RP2040
76                bool "rp2040"
77            config CHERRYUSB_DEVICE_CH32
78                bool "ch32"
79            config CHERRYUSB_DEVICE_PUSB2
80                bool "pusb2"
81        endchoice
82
83        config CHERRYUSB_DEVICE_CDC_ACM
84            bool
85            prompt "Enable usb cdc acm device"
86            default n
87
88        config CHERRYUSB_DEVICE_HID
89            bool
90            prompt "Enable usb hid device"
91            default n
92
93        config CHERRYUSB_DEVICE_MSC
94            bool
95            prompt "Enable usb msc device"
96            default n
97
98        config CHERRYUSB_DEVICE_AUDIO
99            bool
100            prompt "Enable usb audio device"
101            default n
102
103        config CHERRYUSB_DEVICE_VIDEO
104            bool
105            prompt "Enable usb video device"
106            default n
107
108        config CHERRYUSB_DEVICE_CDC_RNDIS
109            bool
110            prompt "Enable usb cdc rndis device"
111            default n
112
113        config CHERRYUSB_DEVICE_CDC_ECM
114            bool
115            prompt "Enable usb cdc ecm device"
116            default n
117
118        config CHERRYUSB_DEVICE_CDC_NCM
119            bool
120            prompt "Enable usb cdc ncm device"
121            default n
122
123        config CHERRYUSB_DEVICE_MTP
124            bool
125            prompt "Enable usb mtp device, it is commercial charge"
126            default n
127
128        config CHERRYUSB_DEVICE_ADB
129            bool
130            prompt "Enable usb adb device"
131            default n
132
133        config CHERRYUSB_DEVICE_DFU
134            bool
135            prompt "Enable usb dfu device"
136            default n
137
138        config USBDEV_REQUEST_BUFFER_LEN
139            int
140            prompt "Set device control transfer max buffer size"
141            default 512
142
143        config USBDEV_MSC_MAX_BUFSIZE
144            int
145            prompt "Set usb msc device max buffer size"
146            default 512
147            help
148                Set the maximum buffer size for usb msc device, it is used to transfer data.
149                you can change it to a larger value if you need larger speed but must be a power of blocksize.
150
151        config USBDEV_RNDIS_USING_LWIP
152            bool
153            prompt "Enable usb rndis device with lwip for lan"
154            default n
155
156        config USBDEV_CDC_ECM_USING_LWIP
157            bool
158            prompt "Enable usb cdc ecm device with lwip for lan"
159            default n
160
161        choice
162            prompt "Select usb device template, please select class driver first"
163            default CHERRYUSB_DEVICE_TEMPLATE_NONE
164            config CHERRYUSB_DEVICE_TEMPLATE_NONE
165                bool
166                prompt "none (Implement it yourself)"
167            config CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM
168                bool
169                prompt "cdc_acm"
170                depends on CHERRYUSB_DEVICE_CDC_ACM
171            config CHERRYUSB_DEVICE_TEMPLATE_MSC
172                bool
173                prompt "msc_ram"
174                depends on CHERRYUSB_DEVICE_MSC
175            config CHERRYUSB_DEVICE_TEMPLATE_HID_KEYBOARD
176                bool
177                prompt "hid_keyboard"
178                depends on CHERRYUSB_DEVICE_HID
179            config CHERRYUSB_DEVICE_TEMPLATE_HID_MOUSE
180                bool
181                prompt "hid_mouse"
182                depends on CHERRYUSB_DEVICE_HID
183            config CHERRYUSB_DEVICE_TEMPLATE_HID_CUSTOM
184                bool
185                prompt "hid_custom"
186                depends on CHERRYUSB_DEVICE_HID
187            config CHERRYUSB_DEVICE_TEMPLATE_VIDEO
188                bool
189                prompt "video"
190                depends on CHERRYUSB_DEVICE_VIDEO
191            config CHERRYUSB_DEVICE_TEMPLATE_AUDIO_V1_MIC_SPEAKER
192                bool
193                prompt "audio_v1_mic_speaker_multichan"
194                depends on CHERRYUSB_DEVICE_AUDIO
195            config CHERRYUSB_DEVICE_TEMPLATE_AUDIO_V2_MIC_SPEAKER
196                bool
197                prompt "audio_v2_mic_speaker_multichan"
198                depends on CHERRYUSB_DEVICE_AUDIO
199            config CHERRYUSB_DEVICE_TEMPLATE_CDC_RNDIS
200                bool
201                prompt "cdc_rndis"
202                depends on CHERRYUSB_DEVICE_CDC_RNDIS
203            config CHERRYUSB_DEVICE_TEMPLATE_CDC_ECM
204                bool
205                prompt "cdc_ecm"
206                depends on CHERRYUSB_DEVICE_CDC_ECM
207            config CHERRYUSB_DEVICE_TEMPLATE_CDC_NCM
208                bool
209                prompt "cdc_ncm"
210                depends on CHERRYUSB_DEVICE_CDC_NCM
211            config CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM_MSC
212                bool
213                prompt "cdc_acm_msc"
214                depends on CHERRYUSB_DEVICE_CDC_ACM && CHERRYUSB_DEVICE_MSC
215            config CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM_MSC_HID
216                bool
217                prompt "cdc_acm_msc_hid"
218                depends on CHERRYUSB_DEVICE_CDC_ACM && CHERRYUSB_DEVICE_MSC && CHERRYUSB_DEVICE_HID
219            config CHERRYUSB_DEVICE_TEMPLATE_WINUSBV1
220                bool
221                prompt "winusbv1"
222            config CHERRYUSB_DEVICE_TEMPLATE_WINUSBV2_CDC
223                bool
224                prompt "winusbv2_cdc"
225                depends on CHERRYUSB_DEVICE_CDC_ACM
226            config CHERRYUSB_DEVICE_TEMPLATE_WINUSBV2_HID
227                bool
228                prompt "winusbv2_hid"
229                depends on CHERRYUSB_DEVICE_HID
230        endchoice
231    endif
232
233    menuconfig CHERRYUSB_HOST
234        bool "Enable usb host mode"
235        default n
236
237    if CHERRYUSB_HOST
238        choice
239            prompt "Select usb host ip, and some ip need config in usb_config.h, please check"
240            default CHERRYUSB_HOST_CUSTOM
241            config CHERRYUSB_HOST_CUSTOM
242                bool "CUSTOM (Implement it yourself)"
243            config CHERRYUSB_HOST_EHCI_BL
244                bool "ehci_bouffalo"
245            config CHERRYUSB_HOST_EHCI_HPM
246                bool "ehci_hpm"
247            config CHERRYUSB_HOST_EHCI_AIC
248                bool "ehci_aic"
249            config CHERRYUSB_HOST_EHCI_MCX
250                bool "ehci_mcx"
251            config CHERRYUSB_HOST_EHCI_NUC980
252                bool "ehci_nuc980"
253            config CHERRYUSB_HOST_EHCI_MA35D0
254                bool "ehci_ma35d0"
255            config CHERRYUSB_HOST_EHCI_CUSTOM
256                bool "ehci_custom"
257            config CHERRYUSB_HOST_DWC2_ST
258                bool "dwc2_st"
259            config CHERRYUSB_HOST_DWC2_ESP
260                bool "dwc2_esp"
261            config CHERRYUSB_HOST_DWC2_KENDRYTE
262                bool "dwc2_kendryte"
263            config CHERRYUSB_HOST_DWC2_HC
264                bool "dwc2_hc"
265            config CHERRYUSB_HOST_DWC2_NATION
266                bool "dwc2_nation"
267            config CHERRYUSB_HOST_DWC2_CUSTOM
268                bool "dwc2_custom"
269            config CHERRYUSB_HOST_MUSB_ES
270                bool "musb_es"
271            config CHERRYUSB_HOST_MUSB_SUNXI
272                bool "musb_sunxi"
273            config CHERRYUSB_HOST_MUSB_BK
274                bool "musb_bk"
275            config CHERRYUSB_HOST_MUSB_SIFLI
276                bool "musb_sifli"
277            config CHERRYUSB_HOST_MUSB_CUSTOM
278                bool "musb_custom"
279            config CHERRYUSB_HOST_PUSB2
280                bool "pusb2"
281            config CHERRYUSB_HOST_XHCI_PHYTIUM
282                bool "xhci_phytium"
283            config CHERRYUSB_HOST_XHCI_CUSTOM
284                bool "xhci"
285            config CHERRYUSB_HOST_KINETIS_MCX
286                bool "kinetis_mcx"
287            config CHERRYUSB_HOST_KINETIS_MM32
288                bool "kinetis_mm32"
289            config CHERRYUSB_HOST_KINETIS_CUSTOM
290                bool "kinetis_custom"
291            config CHERRYUSB_HOST_RP2040
292                bool "rp2040"
293        endchoice
294
295        config CHERRYUSB_HOST_CDC_ACM
296            bool
297            prompt "Enable usb cdc acm driver"
298            default n
299
300        config CHERRYUSB_HOST_HID
301            bool
302            prompt "Enable usb hid driver"
303            default n
304
305        config CHERRYUSB_HOST_MSC
306            bool
307            prompt "Enable usb msc driver"
308            default n
309
310        config CHERRYUSB_HOST_CDC_ECM
311            bool
312            prompt "Enable usb cdc ecm driver"
313            select USBHOST_PLATFORM_CDC_ECM
314            default n
315
316        config CHERRYUSB_HOST_CDC_RNDIS
317            bool
318            prompt "Enable usb rndis driver"
319            select USBHOST_PLATFORM_CDC_RNDIS
320            default n
321
322        config CHERRYUSB_HOST_CDC_NCM
323            bool
324            prompt "Enable usb cdc ncm driver"
325            select USBHOST_PLATFORM_CDC_NCM
326            default n
327
328        config CHERRYUSB_HOST_VIDEO
329            bool
330            prompt "Enable usb video driver, it is commercial charge"
331            default n
332
333        config CHERRYUSB_HOST_AUDIO
334            bool
335            prompt "Enable usb audio driver, it is commercial charge"
336            default n
337
338        config CHERRYUSB_HOST_BLUETOOTH
339            bool
340            prompt "Enable usb bluetooth driver"
341            default n
342
343        config CHERRYUSB_HOST_ASIX
344            bool
345            prompt "Enable usb asix driver"
346            select USBHOST_PLATFORM_ASIX
347            default n
348
349        config CHERRYUSB_HOST_RTL8152
350            bool
351            prompt "Enable usb rtl8152 driver"
352            select USBHOST_PLATFORM_RTL8152
353            default n
354
355        config CHERRYUSB_HOST_FTDI
356            bool
357            prompt "Enable usb ftdi driver"
358            default n
359
360        config CHERRYUSB_HOST_CH34X
361            bool
362            prompt "Enable usb ch34x driver"
363            default n
364
365        config CHERRYUSB_HOST_CP210X
366            bool
367            prompt "Enable usb cp210x driver"
368            default n
369
370        config CHERRYUSB_HOST_PL2303
371            bool
372            prompt "Enable usb pl2303 driver"
373            default n
374
375        config CHERRYUSB_HOST_AOA
376            bool
377            prompt "Enable usb aoa driver"
378            default n
379
380        config USBHOST_PLATFORM_CDC_ECM
381            bool
382
383        config USBHOST_PLATFORM_CDC_RNDIS
384            bool
385
386        config USBHOST_PLATFORM_CDC_NCM
387            bool
388
389        config USBHOST_PLATFORM_ASIX
390            bool
391
392        config USBHOST_PLATFORM_RTL8152
393            bool
394
395        config USBHOST_PSC_PRIO
396            int
397            prompt "Set hubport change thread priority, 0 is the max priority"
398            default 0
399
400        config USBHOST_PSC_STACKSIZE
401            int
402            prompt "Set hubport change thread stacksize"
403            default 4096
404
405        config USBHOST_REQUEST_BUFFER_LEN
406            int
407            prompt "Set host control transfer max buffer size"
408            default 512
409
410        config USBHOST_CONTROL_TRANSFER_TIMEOUT
411            int
412            prompt "Set host control transfer timeout, unit is ms"
413            default 500
414
415        menu "Select USB host template, please select class driver first"
416            config TEST_USBH_CDC_ACM
417                int
418                prompt "demo for test cdc acm"
419                default 0
420                depends on CHERRYUSB_HOST_CDC_ACM
421            config TEST_USBH_HID
422                int
423                prompt "demo for test hid"
424                default 0
425                depends on CHERRYUSB_HOST_HID
426            config TEST_USBH_MSC
427                int
428                prompt "demo for test msc"
429                default 0
430                depends on CHERRYUSB_HOST_MSC
431        endmenu
432    endif
433endif
434