nuttx/drivers/Kconfig

581 lines
15 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
config DISABLE_POLL
bool "Disable driver poll interfaces"
default n
---help---
The sizes of drivers can be reduced if the poll() method is not
supported. If you do not use poll() or select(), then you can
select DISABLE_POLL to reduce the code footprint by a small amount.
This selection disables the poll() interface as well as interfaces
the derive from poll() such as select().
config DEV_NULL
bool "Enable /dev/null"
default y
config DEV_ZERO
bool "Enable /dev/zero"
default n
config ARCH_HAVE_RNG
bool
config DEV_RANDOM
bool "Enable /dev/random"
default y
depends on ARCH_HAVE_RNG
---help---
Enable support for /dev/urandom provided by a hardware TRNG.
config DEV_URANDOM
bool "Enable /dev/urandom"
default n
---help---
Enable support for /dev/urandom provided by either a hardware TRNG or
by a software PRNG implementation.
NOTE: This option may not be cryptographially secure and should not
be enabled if you are concerned about cyptographically secure
pseudo-random numbers (CPRNG) and do not know the characteristics
of the software PRNG impelementation!
if DEV_URANDOM
choice
prompt "/dev/urandom algorithm"
default DEV_URANDOM_ARCH if ARCH_HAVE_RNG
default DEV_URANDOM_XORSHIFT128 if !ARCH_HAVE_RNG
config DEV_URANDOM_XORSHIFT128
bool "xorshift128"
---help---
xorshift128 is a pseudorandom number generator that is simple,
portable, and can also be used on 8-bit and 16-bit MCUs.
NOTE: Not cyptographically secure
config DEV_URANDOM_CONGRUENTIAL
bool "Conguential"
---help---
Use the same congruential general used with srand(). This algorithm
is computationally more intense and uses double precision floating
point. NOTE: Good randomness from the congruential generator also
requires that you also select CONFIG_LIB_RAND_ORDER > 2
NOTE: Not cyptographically secure
config DEV_URANDOM_ARCH
bool "Architecture-specific"
depends on ARCH_HAVE_RNG
---help---
The implementation of /dev/urandom is provided in archtecture-
specific logic using hardware TRNG logic. architecture-specific
logic must provide the whole implementation in this case, including
the function devurandom_register(). In this case, /dev/urandom may
refer to the same driver as /dev/random.
NOTE: May or may not be cyptographically secure, depending upon the
implementation.
endchoice # /dev/urandom algorithm
endif # DEV_URANDOM
source drivers/loop/Kconfig
menu "Buffering"
config DRVR_WRITEBUFFER
bool "Enable write buffer support"
default n
---help---
Enable generic write buffering support that can be used by a variety
of drivers.
if DRVR_WRITEBUFFER
config DRVR_WRDELAY
int "Write flush delay"
default 350
---help---
If there is no write activity for this configured amount of time,
then the contents will be automatically flushed to the media. This
reduces the likelihood that data will be stuck in the write buffer
at the time of power down.
endif # DRVR_WRITEBUFFER
config DRVR_READAHEAD
bool "Enable read-ahead buffer support"
default n
---help---
Enable generic read-ahead buffering support that can be used by a
variety of drivers.
if DRVR_WRITEBUFFER || DRVR_READAHEAD
config DRVR_READBYTES
bool "Support byte read method"
default y if MTD_BYTE_WRITE
default n if !MTD_BYTE_WRITE
config DRVR_REMOVABLE
bool "Support removable media"
default n
config DRVR_INVALIDATE
bool "Support cache invalidation"
default n
endif # DRVR_WRITEBUFFER || DRVR_READAHEAD
endmenu # Buffering
config RAMDISK
bool "RAM Disk Support"
default n
---help---
Can be used to set up a block of memory or (read-only) FLASH as
a block driver that can be mounted as a files system. See
include/nuttx/drivers/ramdisk.h.
menuconfig CAN
bool "CAN Driver Support"
default n
---help---
This selection enables building of the "upper-half" CAN driver.
See include/nuttx/drivers/can.h for further CAN driver information.
if CAN
config CAN_EXTID
bool "CAN extended IDs"
default n
---help---
Enables support for the 28-bit extended ID. Default Standard 11-bit
IDs.
config ARCH_HAVE_CAN_ERRORS
bool
default n
config CAN_ERRORS
bool "CAN error reporting"
default n
depends on ARCH_HAVE_CAN_ERRORS
---help---
Support CAN error reporting. If this option is selected then CAN
error reporting is enabled. In the event of an error, the ch_error
bit will be set in the CAN message and the following message payload
will include a more detailed description of certain errors.
config CAN_FD
bool "CAN FD"
default n
---help---
Enables support for the CAN_FD mode.
config CAN_FIFOSIZE
int "CAN driver I/O buffer size"
default 8
---help---
The size of the circular buffer of CAN messages. Default: 8
config CAN_NPENDINGRTR
int "Number of pending RTRs"
default 4
---help---
The size of the list of pending RTR requests. Default: 4
config CAN_TXREADY
bool "can_txready interface"
default n
select SCHED_WORKQUEUE
---help---
This selection enables the can_txready() interface. This interface
is needed only for CAN hardware that supports queing of outgoing
messages in a H/W FIFO.
The CAN upper half driver also supports a queue of output messages
in a S/W FIFO. Messages are added to that queue when when
can_write() is called and removed from the queue in can_txdone()
when each TX message is complete.
After each message is added to the S/W FIFO, the CAN upper half
driver will attempt to send the message by calling into the lower
half driver. That send will not be performed if the lower half
driver is busy, i.e., if dev_txready() returns false. In that
case, the number of messages in the S/W FIFO can grow. If the
S/W FIFO becomes full, then can_write() will wait for space in
the S/W FIFO.
If the CAN hardware does not support a H/W FIFO then busy means
that the hardware is actively sending the message and is
guaranteed to become non busy (i.e, dev_txready()) when the
send transfer completes and can_txdone() is called. So the call
to can_txdone() means that the transfer has completed and also
that the hardware is ready to accept another transfer.
If the CAN hardware supports a H/W FIFO, can_txdone() is not
called when the tranfer is complete, but rather when the
transfer is queued in the H/W FIFO. When the H/W FIFO becomes
full, then dev_txready() will report false and the number of
queued messages in the S/W FIFO will grow.
There is no mechanism in this case to inform the upper half
driver when the hardware is again available, when there is
again space in the H/W FIFO. can_txdone() will not be called
again. If the S/W FIFO becomes full, then the upper half
driver will wait for space to become available, but there is
no event to awaken it and the driver will hang.
Enabling this feature adds support for the can_txready()
interface. This function is called from the lower half
driver's CAN interrupt handler each time a TX transfer
completes. This is a sure indication that the H/W FIFO is
no longer full. can_txready() will then awaken the
can_write() logic and the hang condition is avoided.
choice
prompt "TX Ready Work Queue"
default CAN_TXREADY_HIPRI
depends on CAN_TXREADY
config CAN_TXREADY_LOPRI
bool "Low-priority work queue"
select SCHED_LPWORK
config CAN_TXREADY_HIPRI
bool "High-priority work queue"
select SCHED_HPWORK
endchoice # TX Ready Work Queue
config CAN_LOOPBACK
bool "CAN loopback mode"
default n
---help---
A CAN driver may or may not support a loopback mode for testing. If the
driver does support loopback mode, the setting will enable it. (If the
driver does not, this setting will have no effect).
config CAN_NPOLLWAITERS
int "Number of poll waiters"
default 2
depends on !DISABLE_POLL
---help---
The maximum number of threads that may be waiting on the
poll method.
endif # CAN
config ARCH_HAVE_PWM_PULSECOUNT
bool
default n
config ARCH_HAVE_PWM_MULTICHAN
bool
default n
menuconfig PWM
bool "PWM Driver Support"
default n
---help---
This selection enables building of the "upper-half" PWM driver.
See include/nuttx/drivers/pwm.h for further PWM driver information.
if PWM
config PWM_PULSECOUNT
bool "PWM Pulse Count Support"
default n
depends on ARCH_HAVE_PWM_PULSECOUNT
---help---
Some hardware will support generation of a fixed number of pulses.
This might be used, for example to support a stepper motor. If the
hardware will support a fixed pulse count, then this configuration
should be set to enable the capability.
config PWM_MULTICHAN
bool "PWM Multiple Output Channel Support"
default n
depends on ARCH_HAVE_PWM_MULTICHAN
depends on !PWM_PULSECOUNT
---help---
Enables support for multiple output channels per timer.
if PWM_MULTICHAN
config PWM_NCHANNELS
int "Number of Output Channels Per Timer"
default 1
range 1 6
---help---
Specifies the number of output channels per timer. Each timer
may support fewer output channels than this value.
endif # PWM_MULTICHAN
endif # PWM
config ARCH_HAVE_I2CRESET
bool
default n
menuconfig I2C
bool "I2C Driver Support"
default n
---help---
This selection enables building of the "upper-half" I2C driver.
See include/nuttx/i2c/i2c_master.h for further I2C driver information.
if I2C
source drivers/i2c/Kconfig
endif
source drivers/spi/Kconfig
menuconfig I2S
bool "I2S Driver Support"
default n
---help---
This selection enables selection of common I2S options. This option
should be enabled by all platforms that support I2S interfaces.
See include/nuttx/audio/i2s.h for further I2S driver information.
if I2S
endif # I2S
source drivers/timers/Kconfig
menuconfig ANALOG
bool "Analog Device(ADC/DAC) Support"
default n
---help---
This directory holds implementations of analog device drivers.
This includes drivers for Analog to Digital Conversion (ADC) as
well as drivers for Digital to Analog Conversion (DAC).
See include/nuttx/analog/*.h for registration information.
if ANALOG
source drivers/analog/Kconfig
endif # ANALOG
menuconfig AUDIO_DEVICES
bool "Audio Device Support"
default n
---help---
Enable support for audio device drivers. This includes drivers for
MP3, WMA and Ogg Vorbis encoding, decoding, as well as drivers for
interfacing with external DSP chips to perform custom audio functions.
NOTE: All of these drivers depend on support from the audio subsystem
enabled with the AUDIO selection.
if AUDIO_DEVICES
source drivers/audio/Kconfig
endif # AUDIO_DEVICES
menuconfig VIDEO_DEVICES
bool "Video Device Support"
default n
---help---
Enable support for video device drivers.
if VIDEO_DEVICES
source drivers/video/Kconfig
endif # VIDEO_DEVICES
menuconfig BCH
bool "Block-to-Character (BCH) Support"
default n
---help---
Contains logic that may be used to convert a block driver into
a character driver. This is the complementary conversion as that
performed by loop.c. See include/nuttx/drivers/drivers.h for
registration information.
if BCH
source drivers/bch/Kconfig
endif # BCH
menuconfig INPUT
bool "Input Device Support"
default n
---help---
This directory holds implementations of input device drivers.
This includes such things as touchscreen and keypad drivers.
See include/nuttx/input/*.h for registration information.
if INPUT
source drivers/input/Kconfig
endif # INPUT
source drivers/ioexpander/Kconfig
source drivers/lcd/Kconfig
source drivers/leds/Kconfig
menuconfig MMCSD
bool "MMC/SD Driver Support"
default n
---help---
Support for MMC/SD block drivers. MMC/SD block drivers based on
SPI and SDIO/MCI interfaces are supported. See include/nuttx/mmcsd.h
and include/nuttx/sdio.h for further information.
if MMCSD
source drivers/mmcsd/Kconfig
endif # MMCSD
menuconfig MODEM
bool "Modem Support"
default n
---help---
Enable modem support.
if MODEM
source drivers/modem/Kconfig
endif # MODEM
menuconfig MTD
bool "Memory Technology Device (MTD) Support"
default n
---help---
Memory Technology Device (MTD) drivers. Some simple drivers for
memory technologies like FLASH, EEPROM, NVRAM, etc. See
include/nuttx/mtd/mtd.h
(Note: This is a simple memory interface and should not be
confused with the "real" MTD developed at infradead.org. This
logic is unrelated; I just used the name MTD because I am not
aware of any other common way to refer to this class of devices).
if MTD
source drivers/mtd/Kconfig
endif # MTD
menuconfig EEPROM
bool "EEPROM support"
default n
---help---
This directory holds implementations of EEPROM drivers.
if EEPROM
source drivers/eeprom/Kconfig
endif
menuconfig NETDEVICES
bool "Network Device/PHY Support"
default n if !ARCH_HAVE_PHY
default y if ARCH_HAVE_PHY
depends on NET
---help---
Network interface driver and PHY selections. This options enables
selection of drivers for external Ethernet MAC chips. The majority
of MCUs, however, have built-in, internal Ethernet MAC peripherals
and that Ethernet support is selected in the MCU-specific
configuration menus.
Most Ethernet MAC drivers, whether internal or external, will
require configuration of an external PHY device. That external PHY
device is also selected via this menu.
if NETDEVICES
source drivers/net/Kconfig
endif # NETDEVICES
menuconfig PIPES
bool "FIFO and named pipe drivers"
default n
---help---
FIFO and named pipe drivers. Standard interfaces are declared
in include/unistd.h
if PIPES
source drivers/pipes/Kconfig
endif # PIPES
source drivers/power/Kconfig
menuconfig SENSORS
bool "Sensor Device Support"
default n
---help---
Drivers for various sensors
if SENSORS
source drivers/sensors/Kconfig
endif # SENSORS
menuconfig SERIAL
bool "Serial Driver Support"
default y
---help---
Front-end character drivers for chip-specific UARTs. This provide
some TTY-like functionality and are commonly used (but not required
for) the NuttX system console. See also include/nuttx/serial/serial.h
if SERIAL
source drivers/serial/Kconfig
endif # SERIAL
menuconfig USBDEV
bool "USB Device Driver Support"
default n
---help---
USB device drivers. See also include/nuttx/usb/usbdev.h
if USBDEV
source drivers/usbdev/Kconfig
endif # USBDEV
menuconfig USBHOST
bool "USB Host Driver Support"
default n
---help---
USB host drivers. See also include/nuttx/usb/usbhost.h
if USBHOST
source drivers/usbhost/Kconfig
endif # USBHOST
config HAVE_USBTRACE
bool
default n
menuconfig USBMONITOR
bool "USB Monitor"
default n
depends on HAVE_USBTRACE
---help---
If USB device tracing (USBDEV_TRACE) AND/OR USB host tracing
(USBHOST_TRACE) are enabled then this option will select the USB
monitor. The USB monitor is a daemon that will periodically collect
the buffered USB trace data and dump it to the SYSLOG device.
if USBMONITOR
source drivers/usbmonitor/Kconfig
endif # USBMONITOR
menuconfig DRIVERS_WIRELESS
bool "Wireless Device Support"
default n
---help---
Drivers for various wireless devices.
source drivers/wireless/Kconfig
menuconfig DRIVERS_CONTACTLESS
bool "Contactless Device Support"
default n
---help---
Drivers for various contactless devices.
source drivers/contactless/Kconfig
source drivers/syslog/Kconfig