123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715 |
- #
- # For a description of the syntax of this configuration file,
- # see the file kconfig-language.txt in the NuttX tools repository.
- #
- config USBHOST_HAVE_ASYNCH
- bool
- default n
- menuconfig USBHOST
- bool "USB Host Driver Support"
- default n
- ---help---
- USB host drivers. See also include/nuttx/usb/usbhost.h
- if USBHOST
- config USBHOST_NPREALLOC
- int "Number of pre-allocated class instances"
- default 4
- ---help---
- Number of pre-allocated class instances
- config USBHOST_BULK_DISABLE
- bool "Disable bulk endpoint support"
- default n
- ---help---
- On some architectures, selecting this setting will reduce driver size
- by disabling bulk endpoint support
- config USBHOST_INT_DISABLE
- bool "Disable interrupt endpoint support"
- default n
- ---help---
- On some architectures, selecting this setting will reduce driver size
- by disabling interrupt endpoint support
- config USBHOST_ISOC_DISABLE
- bool "Disable isochronous endpoint support"
- default n
- ---help---
- On some architectures, selecting this setting will reduce driver size
- by disabling isochronous endpoint support
- config USBHOST_ASYNCH
- bool "Asynchronous transfer support"
- default n
- depends on USBHOST_HAVE_ASYNCH
- ---help---
- Select if the host controller driver needs to support asynchronous
- I/O transfer. This may be required, for example, to receive
- infrequent, asynchronous input from an interrupt pipe.
- config USBHOST_HUB
- bool "USB Hub Support"
- default n
- depends on USBHOST_HAVE_ASYNCH && !USBHOST_INT_DISABLE
- select USBHOST_ASYNCH
- ---help---
- Select this option to build in support for USB hubs.
- if USBHOST_HUB
- config USBHOST_HUB_POLLMSEC
- int "USB Hub Polling Interval (MSec)"
- default 400
- ---help---
- On higher end host controllers (OHCI and EHCI), the asynchronous,
- interrupt IN transfers will pend until data is available from the
- hub. On lower end host controllers (like STM32 and EFM32), the
- transfer will fail immediately when the device NAKs the first
- attempted interrupt IN transfer (with result == EGAIN) and the hub
- class driver will fall back to polling the hub.
- For the case of the higher end controllers, this polling interval
- is not critical since it would really only be used in the event of
- failures to communicate with the hub.
- But for the lower end host controllers, the asynchronous transfers
- are ineffective and this polling interval becomes a critical
- parameter that must be tuned to tradeoff CPU usage with
- responsiveness to hub-related events (It would, I suppose, be more
- efficient to use synchronous transfers with these lower end host
- controllers).
- endif # USBHOST_HUB
- config USBHOST_COMPOSITE
- bool "Composite device support"
- default n
- ---help---
- Build in USB host support for connected composite devices
- config USBHOST_COMPOSITE_STRICT
- bool "Strict composite membership"
- default n
- depends on USBHOST_COMPOSITE
- ---help---
- If selected, then the composite device will not be enumerated unless
- every member class in the composite is supported. If not selected
- then, for example, you could use the CDC/ACM interface of the device
- with no support for the other interfaces.
- config USBHOST_MSC
- bool "Mass Storage Class Support"
- default n
- depends on !BULK_DISABLE
- ---help---
- Enable support for the mass storage class driver. This also depends on
- SCHED_WORKQUEUE=y
- config USBHOST_MSC_NOTIFIER
- bool "Support USB Mass Storage notifications"
- default n
- depends on USBHOST_MSC
- select WQUEUE_NOTIFIER
- ---help---
- Enable building of USB MSC notifier logic that will execute a worker
- function on the low priority work queue when a mass storage device is
- connected or disconnected.
- config USBHOST_CDCACM
- bool "CDC/ACM support"
- default n
- depends on USBHOST_HAVE_ASYNCH && !USBHOST_BULK_DISABLE && !USBHOST_INT_DISABLE
- select USBHOST_ASYNCH
- select SERIAL_REMOVABLE
- ---help---
- Select this option to build in host support for CDC/ACM serial
- devices.
- if USBHOST_CDCACM
- choice
- prompt "CDC/ACM Protocol"
- default USBHOST_CDCACM_COMPLIANT if SERIAL_OFLOWCONTROL && !USBHOST_INT_DISABLE
- default USBHOST_CDCACM_REDUCED if !SERIAL_OFLOWCONTROL || USBHOST_INT_DISABLE
- config USBHOST_CDCACM_COMPLIANT
- bool "CDC/ACM compliant"
- depends on SERIAL_OFLOWCONTROL && !USBHOST_INT_DISABLE
- ---help---
- The device needs to implement the Abstract Control Model (ACM)
- subclass defined in the USB Communication Device Class (CDC)
- specification. This protocol requires two USB interfaces, a data
- interface which consists of two endpoints (bulk in + bulk out) and a
- control interface which consists of one interrupt in endpoint.
- Furthermore, on EP0 the device must implement the class-specific
- requests defined by the CDC specification. Because this USB protocol
- is compliant to the CDC/ACM standard on some other operating systems
- (e.g. Linux, MacOS) the device can work with in-box drivers.
- config USBHOST_CDCACM_REDUCED
- bool "CDC/ACM reduced"
- ---help---
- This mode uses the CDC data interface (bulk in + bulk out endpoint)
- only. No control interface (interrupt in endpoint) is required. The
- device needs to implement the CDC class-specific requests, so that
- is still possible to support baud rate settings and serial control/
- status lines. This mode is useful if the number of available
- endpoints is limited by hardware restrictions.
- If the CDC/ACM compliant protocol is selected, then the reduced
- protocol is supported for devices that provide not interrupt IN
- endpoint. This option is then most useful for testing purposes or
- if there are insufficient resources to support the compliant
- protocol. The interrupt IN control interface will not be used even
- if it is available in this case.
- config USBHOST_CDCACM_BULKONLY
- bool "Bulk only protocol"
- ---help---
- The device implements only the data interface (bulk in + bulk out
- endpoint). The device does not provide an additional control
- interface and does not need to implement any class-specific requests
- on EP0. Because bulk transfer mode provides flow control, there is
- no need to support serial control/status lines. The advantage of
- the bulk-only protocol is that the implementation efforts on the
- device side are reduced to a minimum.
- By default, both the CDC/ACM compliant protocol and the reduced
- protocol are supported. This option is then most useful for testing
- purposes. The interrupt IN control interface will not be used even
- if it is available; nor will EP0 class requests.
- endchoice # CDC/ACM Protocol
- config USBHOST_CDCACM_NTDELAY
- int "CDC/ACM notification polling interval (MSec)"
- default 400
- depends on USBHOST_CDCACM_COMPLIANT
- ---help---
- On higher end host controllers (OHCI and EHCI), the asynchronous,
- interrupt IN transfers will pend until data is available from the
- hub. On lower end host controllers (like STM32 and EFM32), the
- transfer will fail immediately when the device NAKs the first
- attempted interrupt IN transfer (with result == EGAIN) and the hub
- class driver will fall back to polling the hub.
- For the case of the higher end controllers, this polling interval
- is not critical since it would really only be used in the event of
- failures to communicate with the hub.
- But for the lower end host controllers, the asynchronous transfers
- are ineffective and this polling interval becomes a critical
- parameter that must be tuned to tradeoff CPU usage with
- responsiveness to hub-related events (It would, I suppose, be more
- efficient to use synchronous transfers with these lower end host
- controllers).
- config USBHOST_CDCACM_RXDELAY
- int "RX poll delay (MSec)"
- default 200
- ---help---
- When the CDC/ACM device is inactive, the host must poll it at this
- rate in order to discover if it has serial data to send to us.
- config USBHOST_CDCACM_TXDELAY
- int "TX poll delay (MSec)"
- default 200
- ---help---
- When the appellation is inactive, the host must poll it at this
- rate in order to discover if it has serial data to send to the
- device.
- config USBHOST_CDCACM_NPREALLOC
- int "Preallocated state"
- default 0
- ---help---
- If this setting is zero, the CDC/ACM class driver will allocate
- memory as needed for CDC/ACM device state. If this value is non-
- zero, then it provides a number of preallocated CDC/ACM state
- structures. This increases the static size of the code image, but
- eliminates all, direct, run-time allocations by the driver.
- config USBHOST_CDCACM_BAUD
- int "Initialize CDC/ACM BAUD"
- default 115200
- config USBHOST_CDCACM_PARITY
- int "Initialize CDC/ACM parity"
- default 0
- range 0 2
- ---help---
- Initialize CDC/ACM parity. 0=None, 1=Odd, 2=Even. Default: None
- config USBHOST_CDCACM_BITS
- int "Initialize CDC/ACM number of bits"
- default 8
- ---help---
- Initialize CDC/ACM number of bits. Default: 8
- config USBHOST_CDCACM_2STOP
- int "Initialize CDC/ACM two stop bits"
- default 0
- ---help---
- 0=1 stop bit, 1=Two stop bits. Default: 1 stop bit
- config USBHOST_CDCACM_RXBUFSIZE
- int "Serial RX buffer size"
- default 128
- ---help---
- This is the size of the serial buffer that will be used to hold
- received data.
- config USBHOST_CDCACM_TXBUFSIZE
- int "Serial TX buffer size"
- default 128
- ---help---
- This is the size of the serial buffer that will be used to hold
- data waiting for transmission.
- endif # USBHOST_CDCACM
- config USBHOST_CDCMBIM
- bool "CDC/MBIM support"
- default n
- depends on USBHOST_HAVE_ASYNCH && !USBHOST_BULK_DISABLE && !USBHOST_INT_DISABLE && EXPERIMENTAL
- select USBHOST_ASYNCH
- select NET_MBIM
- ---help---
- Select this option to build in host support for CDC/MBIM network
- devices.
- config USBHOST_HIDKBD
- bool "HID Keyboard Class Support"
- default n
- depends on !INT_DISABLE
- ---help---
- Enable support for the keyboard class driver. This also depends on
- SCHED_WORKQUEUE
- if USBHOST_HIDKBD
- config HIDKBD_POLLUSEC
- int "Keyboard Poll Rate (MSEC)"
- default 40000
- ---help---
- Device poll rate in microseconds. Default: 40,000 microseconds.
- config HIDKBD_DEFPRIO
- int "Polling Thread Priority"
- default 50
- ---help---
- Priority of the polling thread. Default: 50.
- config HIDKBD_STACKSIZE
- int "Polling thread stack size"
- default 1024
- ---help---
- Stack size for polling thread. Default: 1024
- config HIDKBD_BUFSIZE
- int "Scancode Buffer Size"
- default 64
- ---help---
- Scancode buffer size. Default: 64.
- config HIDKBD_NPOLLWAITERS
- int "Max Number of Waiters for Poll Event"
- default 2
- ---help---
- If the poll() method is enabled, this defines the maximum number
- of threads that can be waiting for keyboard events. Default: 2.
- config HIDKBD_RAWSCANCODES
- bool "Use Raw Scan Codes"
- default n
- ---help---
- If set to y no conversions will be made on the raw keyboard scan
- codes. This option is useful during testing. Default: ASCII conversion.
- config HIDKBD_ENCODED
- bool "Encode Special Keys"
- default n
- depends on !HIDKBD_RAWSCANCODES && LIB_KBDCODEC
- ---help---
- Encode special key press events in the user buffer. In this case,
- the user end must decode the encoded special key values using the
- interfaces defined in include/nuttx/input/kbd_codec.h. These
- special keys include such things as up/down arrows, home and end
- keys, etc. If this not defined, only 7-bit print-able and control
- ASCII characters will be provided to the user.
- config HIDKBD_ALLSCANCODES
- bool "Use All Scancodes"
- default n
- ---help---
- If set to y all 231 possible scancodes will be converted to
- something. Default: 104 key US keyboard.
- config HIDKBD_NODEBOUNCE
- bool "Disable Debounce"
- default n
- ---help---
- If set to y normal debouncing is disabled. Default:
- Debounce enabled (No repeat keys).
- endif
- config USBHOST_HIDMOUSE
- bool "HID Mouse Class Support"
- default n
- depends on !INT_DISABLE
- select INPUT
- select MOUSE
- ---help---
- Enable support for the mouse class driver. This also depends on
- SCHED_WORKQUEUE
- NOTE: This driver checks out on a Labtec and an AOpen mouse, but
- does not work correctly on a Microsoft mouse. A little more work
- would be needed to support the Microsoft mouse.
- if USBHOST_HIDMOUSE
- config HIDMOUSE_TSCIF
- bool "Touchscreen Emulation"
- default n
- ---help---
- Normally, the HID mouse driver uses the mouse report structure
- defined in include/nuttx/input/mouse.h. The mouse driver can,
- however, be configured to use the touchscreen interface defined in
- include/nuttx/input/touchcreen.h. If the touch screen interface is
- used, only support for the left button will be provided.
- NOTE: Unlike touchscreen drivers, mouse drivers will report
- position data even when the "pen is up", i.e., when no buttons are
- pressed. This behavior is necessary to provide the positional data
- would would be needed to drive a cursor. Without a cursor of some
- kind, the mouse is not very useful. So this option may not be useful.
- config HIDMOUSE_DEFPRIO
- int "Polling Thread Priority"
- default 50
- ---help---
- Priority of the polling thread. Default: 50.
- config HIDMOUSE_STACKSIZE
- int "Polling thread stack size"
- default 1024
- ---help---
- Stack size for polling thread. Default: 1024
- config HIDMOUSE_BUFSIZE
- int "Scancode Buffer Size"
- default 64
- ---help---
- Scancode buffer size. Default: 64.
- config HIDMOUSE_NPOLLWAITERS
- int "Max Number of Waiters for Poll Event"
- default 2
- ---help---
- If the poll() method is enabled, this defines the maximum number
- of threads that can be waiting for mouse events. Default: 2.
- config HIDMOUSE_SWAPXY
- bool "Swap X/Y"
- default n
- ---help---
- Reverse the meaning of X and Y to handle different display orientations.
- NOTE: All of the following settings apply AFTER X and Y have been swapped.
- config HIDMOUSE_XMAX
- int "Maximum X position"
- default 320
- range 0 32767
- ---help---
- This is the maximum value of the X position that will be reported.
- Default: 320
- config HIDMOUSE_YMAX
- int "Maximum Y position"
- default 240
- range 0 32767
- ---help---
- This is the maximum value of the Y position that will be reported.
- Default: 240
- config HIDMOUSE_XSCALE
- hex "X scaling factor"
- default 0x00010000
- ---help---
- Mouse positions are accumulated from X/Y displacements reported by
- the mouse device. This setting provides a scaling value for the X
- displacement. This is a fixed precision floating point number with
- 16 bits of fraction. So a value of 0x00010000 is 1.0, 0x00018000
- is 1.5, 0x00024000 is 2.25, etc.
- NOTE that a negative value of HIDMOUSE_XSCALE such as 0xffff0000
- (-1.0) can be used to change the direction of movement.
- Default: 0x00010000 (1.0)
- config HIDMOUSE_YSCALE
- hex "Y scaling factor"
- default 0x00010000
- ---help---
- Mouse positions are accumulated from X/Y displacements reported by
- the mouse device. This setting provides a scaling value for the Y
- displacement. This is a fixed precision floating point number with
- 16 bits of fraction. So a value of 0x00010000 is 1.0, 0x00018000
- is 1.5, 0x00024000 is 2.25, etc.
- NOTE that a negative value of HIDMOUSE_YSCALE such as 0xffff0000
- (-1.0) can be used to change the direction of movement.
- Default: 0x00010000 (1.0)
- config HIDMOUSE_XTHRESH
- int "X threshold"
- default 12
- ---help---
- New mouse positions will only be reported when the X or Y data changes by these
- thresholds. This tradeoff reduces data rate for some loss in dragging accuracy.
- Both X and Y axis thresholding can be disabled by setting this value to zero.
- Default: 12
- config HIDMOUSE_THRESHY
- int "Y threshold"
- default 12
- ---help---
- New touch positions will only be reported when the X or Y data changes by these
- thresholds. This tradeoff reduces data rate for some loss in dragging accuracy.
- Both X and Y axis thresholding can be disabled by setting this value to zero.
- Default: 12
- if INPUT_MOUSE_WHEEL
- config HIDMOUSE_WMAX
- int "Maximum wheel position"
- default 320
- range 0 32767
- ---help---
- This is the maximum value of the wheel position that will be
- reported. Default: 320
- config HIDMOUSE_WSCALE
- hex "Wheel scaling factor"
- default 0x00010000
- ---help---
- Mouse wheel position are accumulated from wheel displacements
- reported by the mouse device. This setting provides a scaling
- value for the wheel displacement. This is a fixed precision
- floating point number with 16 bits of fraction. So a value of
- 0x00010000 is 1.0, 0x00018000 is 1.5, 0x00024000 is 2.25, etc.
- NOTE that a negative value of HIDMOUSE_XSCALE such as 0xffff0000
- (-1.0) can be used to change the direction of wheel output.
- Default: 0x00010000 (1.0)
- config HIDMOUSE_WTHRESH
- int "Wheel threshold"
- default 1
- ---help---
- New wheel positions will only be reported when the wheel position
- changes by these thresholds. This tradeoff reduces data rate for some
- loss in wheel responsiveness.
- Default: 1
- endif # INPUT_MOUSE_WHEEL
- endif # USBHOST_HIDMOUSE
- config USBHOST_XBOXCONTROLLER
- bool "Xbox Controller Support"
- default n
- depends on !INT_DISABLE
- select INPUT
- ---help---
- Enable support for the Xbox Controller driver.
- if USBHOST_XBOXCONTROLLER
- config XBOXCONTROLLER_DEFPRIO
- int "Polling Thread Priority"
- default 50
- ---help---
- Priority of the polling thread. Default: 50.
- config XBOXCONTROLLER_STACKSIZE
- int "Polling thread stack size"
- default 1024
- ---help---
- Stack size for polling thread. Default: 1024
- config XBOXCONTROLLER_NPOLLWAITERS
- int "Max Number of Waiters for Poll Event"
- default 2
- ---help---
- If the poll() method is enabled, this defines the maximum number
- of threads that can be waiting for mouse events. Default: 2.
- endif # USBHOST_XBOXCONTROLLER
- config USBHOST_MAX3421E
- bool "Maxim MAX3421E FS host controller"
- default n
- select SPI
- select SCHED_LPWORK
- depends on EXPERIMENTAL
- ---help---
- Enable support for the Maxim MAX3421E FS host controller
- if USBHOST_MAX3421E
- config MAX3421E_DESCSIZE
- int "Max descriptor size"
- default 128
- ---help---
- Maximum size of a descriptor. Default: 128
- config MAX3421E_USBHOST_REGDEBUG
- bool "MAX3421 register debug"
- default n
- depends on DEBUG_USB_INFO
- ---help---
- Enable very low-level register access debug. Depends on
- CONFIG_DEBUG_USB_INFO.
- config MAX3421E_USBHOST_PKTDUMP
- bool "MAX3421 packet dump"
- default n
- depends on DEBUG_USB_INFO
- ---help---
- Dump all incoming and outgoing USB packets. Depends on
- CONFIG_DEBUG_USB_INFO.
- endif # USBHOST_MAX3421E
- config USBHOST_TRACE
- bool "Enable USB HCD tracing for debug"
- default n
- select HAVE_USBTRACE
- ---help---
- Enables USB tracing for debug. Only supported for the HCD and,
- further, no supported by all HCD implementations.
- if USBHOST_TRACE
- config USBHOST_TRACE_NRECORDS
- int "Number of trace entries to remember"
- default 128
- ---help---
- Number of trace entries to remember.
- config USBHOST_TRACE_VERBOSE
- bool "Enable verbose debug trace"
- default n
- ---help---
- Enable verbose trace output if supported by the platform. The
- intent is that if USBHOST_TRACE_VERBOSE is not defined, then only
- errors, warnings, and critical messages would be logged. If
- USBHOST_TRACE_VERBOSE is defined, then general informative trace
- information would also be included.
- endif
- config USBHOST_FT232R
- bool "FTDI FT232R support"
- default n
- depends on !USBHOST_BULK_DISABLE && !USBHOST_INT_DISABLE
- select SERIAL_REMOVABLE
- ---help---
- Select this option to build in host support for FTDI FT232R
- serial devices.
- if USBHOST_FT232R
- config USBHOST_FT232R_RXDELAY
- int "RX poll delay (MSec)"
- default 200
- ---help---
- When the CDC/ACM device is inactive, the host must poll it at this
- rate in order to discover if it has serial data to send to us.
- config USBHOST_FT232R_TXDELAY
- int "TX poll delay (MSec)"
- default 200
- ---help---
- When the appellation is inactive, the host must poll it at this
- rate in order to discover if it has serial data to send to the
- device.
- config USBHOST_FT232R_NPREALLOC
- int "Preallocated state"
- default 0
- ---help---
- If this setting is zero, the FT232R driver will allocate
- memory as needed for FT232R device state. If this value is non-
- zero, then it provides a number of preallocated FT232R state
- structures. This increases the static size of the code image, but
- eliminates all, direct, run-time allocations by the driver.
- config USBHOST_FT232R_BAUD
- int "Initialize FT232R BAUD"
- default 115200
- config USBHOST_FT232R_PARITY
- int "Initialize FT232R parity"
- default 0
- range 0 2
- ---help---
- Initialize FT232R parity. 0=None, 1=Odd, 2=Even. Default: None
- config USBHOST_FT232R_BITS
- int "Initialize FT232R transfer size"
- default 8
- range 7 8
- ---help---
- Initialize FT232R number of bits. Default: 8
- config USBHOST_FT232R_2STOP
- bool "FT232R use two stop bits"
- default n
- ---help---
- False = 1 stop bit, True = Two stop bits. Default: 1 stop bit
- config USBHOST_FT232R_HWFLOWCTRL
- bool "Use FT232R RTS/CTS"
- default n
- ---help---
- Enables the FT232R to use its flow control signals
- config USBHOST_FT232R_RXBUFSIZE
- int "Serial RX buffer size"
- default 128
- ---help---
- This is the size of the serial buffer that will be used to hold
- received data.
- config USBHOST_FT232R_TXBUFSIZE
- int "Serial TX buffer size"
- default 128
- ---help---
- This is the size of the serial buffer that will be used to hold
- data waiting for transmission.
- config USBHOST_FT232R_LATENCY
- int "Latency Timer"
- default 16
- range 0 255
- ---help---
- A timeout for UART to USB packet reception. The FT232R will
- release its buffer for sending to the USB host once this timeout
- occurs or the buffer is full. Measured in ms.
- endif # USBHOST_FT232R
- endif # USBHOST
|