diff --git a/Documentation/components/boards.rst b/Documentation/components/boards.rst
index 3d8b5e8038..b4dcb44680 100644
--- a/Documentation/components/boards.rst
+++ b/Documentation/components/boards.rst
@@ -1,5 +1,5 @@
==============
-Boards support
+Boards Support
==============
This page discusses the board support logic for NuttX.
diff --git a/Documentation/components/drivers/block/eeprom.rst b/Documentation/components/drivers/block/eeprom.rst
new file mode 100644
index 0000000000..9d4d253cdd
--- /dev/null
+++ b/Documentation/components/drivers/block/eeprom.rst
@@ -0,0 +1,97 @@
+======
+EEPROM
+======
+
+EEPROMs are a form of Memory
+ Technology Device (MTD). EEPROMs are non-volatile memory like FLASH, but
+ differ in underlying memory technology and differ in usage in many respects:
+ They may not be organized into blocks (at least from the standpoint of the
+ user) and it is not necessary to erase the EEPROM memory before re-writing
+ it. In addition, EEPROMs tend to be much smaller than FLASH parts, usually
+ only a few kilobytes vs megabytes for FLASH. EEPROM tends to be used to
+ retain a small amount of device configuration information; FLASH tends
+ to be used for program or massive data storage. For these reasons, it may
+ not be convenient to use the more complex MTD interface but instead use
+ the simple character interface provided by the EEPROM drivers.
+
+EEPROM Device Support
+=====================
+
+drivers/eeprom/spi_xx25xx.c
+---------------------------
+
+This is a driver for SPI EEPROMs that use the same commands as the
+25AA160::
+
+ Manufacturer Device Bytes PgSize AddrLen
+ Microchip
+ 25xx010A 128 16 1
+ 25xx020A 256 16 1
+ 25AA02UID 256 16 1
+ 25AA02E48 256 16 1
+ 25AA02E64 256 16 1
+ 25xx040 512 16 1+bit
+ 25xx040A 512 16 1+bit
+ 25xx080 1024 16 1
+ 25xx080A 1024 16 2
+ 25xx080B 1024 32 2
+ 25xx080C 1024 16 x
+ 25xx080D 1024 32 x
+ 25xx160 2048 16 2
+ 25xx160A/C 2048 16 2 TESTED
+ 25xx160B/D 2048 32 2
+ 25xx160C 2048 16 2
+ 25xx160D 2048 32 2
+ 25xx320 4096 32 2
+ 25xx320A 4096 32 2
+ 25xx640 8192 32 2
+ 25xx640A 8192 32 2
+ 25xx128 16384 64 2
+ 25xx256 32768 64 2
+ 25xx512 65536 128 2
+ 25xx1024 131072 256 3
+ Atmel
+ AT25010B 128 8 1
+ AT25020B 256 8 1
+ AT25040B 512 8 1+bit
+ AT25080B 1024 32 2
+ AT25160B 2048 32 2
+ AT25320B 4096 32 2
+ AT25640B 8192 32 2
+ AT25128B 16384 64 2
+ AT25256B 32768 64 2
+ AT25512 65536 128 2
+ AT25M01 131072 256 3
+
+drivers/mtd/at24xx.c
+--------------------
+
+This is a driver for I2C-based at24cxx EEPROM (at24c32, at24c64, at24c128,
+at24c256, at24c512). This driver is currently provided as an MTD driver
+but could easily be modified to support the character driver interface.
+
+File Systems
+============
+
+Most EEPROM parts are too small to be candidates for use with a file
+system. The character driver interface is optimal for these small parts
+because you can open and access the EEPROM part as if it were a single,
+fixed size file.
+
+It is also possible to use these character drivers with a file system.
+The character driver can converted to a block device using the NuttX loop
+device. The loop device can be found the file drivers/loop.c. Interface
+function prototypes can be found in include/nuttx/fs/fs.h::
+
+ int losetup(FAR const char *devname, FAR const char *filename,
+ uint16_t sectsize, off_t offset, bool readonly);
+
+Given a file or character devices at 'filename', losetup will create the
+block device 'devname' using a bogus sector size of sectsize. 'offset' is
+normally zero but can be used to provide an offset into the EEPROM where
+the block driver data starts; The EEPROM block driver can also be read-
+only.
+
+There is a corresponding function that will destroy the loop device::
+
+ int loteardown(FAR const char *devname);
diff --git a/Documentation/components/drivers/block/index.rst b/Documentation/components/drivers/block/index.rst
index b79bbdc80b..ffd45b04db 100644
--- a/Documentation/components/drivers/block/index.rst
+++ b/Documentation/components/drivers/block/index.rst
@@ -2,6 +2,13 @@
Block Device Drivers
====================
+.. toctree::
+ :maxdepth: 1
+
+ eeprom.rst
+ ramdisk.rst
+
+
Block device drivers have these properties:
- ``include/nuttx/fs/fs.h``. All structures and APIs needed
@@ -37,107 +44,3 @@ Block device drivers have these properties:
- **Examples**. ``drivers/loop.c``,
``drivers/mmcsd/mmcsd_spi.c``, ``drivers/ramdisk.c``, etc.
-
-``ramdisk.c``
-=============
-
-Can be used to set up a block of memory or (read-only) FLASH as
-a block driver that can be mounted as a file system. See
-include/nuttx/drivers/ramdisk.h.
-
-EEPROM
-======
-
-EEPROMs are a form of Memory
- Technology Device (MTD). EEPROMs are non-volatile memory like FLASH, but
- differ in underlying memory technology and differ in usage in many respects:
- They may not be organized into blocks (at least from the standpoint of the
- user) and it is not necessary to erase the EEPROM memory before re-writing
- it. In addition, EEPROMs tend to be much smaller than FLASH parts, usually
- only a few kilobytes vs megabytes for FLASH. EEPROM tends to be used to
- retain a small amount of device configuration information; FLASH tends
- to be used for program or massive data storage. For these reasons, it may
- not be convenient to use the more complex MTD interface but instead use
- the simple character interface provided by the EEPROM drivers.
-
-EEPROM Device Support
----------------------
-
-drivers/eeprom/spi_xx25xx.c
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This is a driver for SPI EEPROMs that use the same commands as the
-25AA160::
-
- Manufacturer Device Bytes PgSize AddrLen
- Microchip
- 25xx010A 128 16 1
- 25xx020A 256 16 1
- 25AA02UID 256 16 1
- 25AA02E48 256 16 1
- 25AA02E64 256 16 1
- 25xx040 512 16 1+bit
- 25xx040A 512 16 1+bit
- 25xx080 1024 16 1
- 25xx080A 1024 16 2
- 25xx080B 1024 32 2
- 25xx080C 1024 16 x
- 25xx080D 1024 32 x
- 25xx160 2048 16 2
- 25xx160A/C 2048 16 2 TESTED
- 25xx160B/D 2048 32 2
- 25xx160C 2048 16 2
- 25xx160D 2048 32 2
- 25xx320 4096 32 2
- 25xx320A 4096 32 2
- 25xx640 8192 32 2
- 25xx640A 8192 32 2
- 25xx128 16384 64 2
- 25xx256 32768 64 2
- 25xx512 65536 128 2
- 25xx1024 131072 256 3
- Atmel
- AT25010B 128 8 1
- AT25020B 256 8 1
- AT25040B 512 8 1+bit
- AT25080B 1024 32 2
- AT25160B 2048 32 2
- AT25320B 4096 32 2
- AT25640B 8192 32 2
- AT25128B 16384 64 2
- AT25256B 32768 64 2
- AT25512 65536 128 2
- AT25M01 131072 256 3
-
-drivers/mtd/at24xx.c
-~~~~~~~~~~~~~~~~~~~~
-
-This is a driver for I2C-based at24cxx EEPROM (at24c32, at24c64, at24c128,
-at24c256, at24c512). This driver is currently provided as an MTD driver
-but could easily be modified to support the character driver interface.
-
-File Systems
-------------
-
-Most EEPROM parts are too small to be candidates for use with a file
-system. The character driver interface is optimal for these small parts
-because you can open and access the EEPROM part as if it were a single,
-fixed size file.
-
-It is also possible to use these character drivers with a file system.
-The character driver can converted to a block device using the NuttX loop
-device. The loop device can be found the file drivers/loop.c. Interface
-function prototypes can be found in include/nuttx/fs/fs.h::
-
- int losetup(FAR const char *devname, FAR const char *filename,
- uint16_t sectsize, off_t offset, bool readonly);
-
-Given a file or character devices at 'filename', losetup will create the
-block device 'devname' using a bogus sector size of sectsize. 'offset' is
-normally zero but can be used to provide an offset into the EEPROM where
-the block driver data starts; The EEPROM block driver can also be read-
-only.
-
-There is a corresponding function that will destroy the loop device::
-
- int loteardown(FAR const char *devname);
diff --git a/Documentation/components/drivers/block/ramdisk.rst b/Documentation/components/drivers/block/ramdisk.rst
new file mode 100644
index 0000000000..64f26726a2
--- /dev/null
+++ b/Documentation/components/drivers/block/ramdisk.rst
@@ -0,0 +1,7 @@
+=============
+``ramdisk.c``
+=============
+
+Can be used to set up a block of memory or (read-only) FLASH as
+a block driver that can be mounted as a file system. See
+include/nuttx/drivers/ramdisk.h.
diff --git a/Documentation/components/drivers/character/1wire.rst b/Documentation/components/drivers/character/1wire.rst
new file mode 100644
index 0000000000..31cfeaa4a2
--- /dev/null
+++ b/Documentation/components/drivers/character/1wire.rst
@@ -0,0 +1,3 @@
+================
+One Wire Drivers
+================
diff --git a/Documentation/components/drivers/character/bch.rst b/Documentation/components/drivers/character/bch.rst
new file mode 100644
index 0000000000..3eb34ddf5e
--- /dev/null
+++ b/Documentation/components/drivers/character/bch.rst
@@ -0,0 +1,3 @@
+================================
+Block Driver to Character Driver
+================================
diff --git a/Documentation/components/drivers/character/contactless.rst b/Documentation/components/drivers/character/contactless.rst
new file mode 100644
index 0000000000..63f229f17e
--- /dev/null
+++ b/Documentation/components/drivers/character/contactless.rst
@@ -0,0 +1,3 @@
+====================
+Constactless Devices
+====================
diff --git a/Documentation/components/drivers/character/crypto/index.rst b/Documentation/components/drivers/character/crypto/index.rst
new file mode 100644
index 0000000000..cf172433b3
--- /dev/null
+++ b/Documentation/components/drivers/character/crypto/index.rst
@@ -0,0 +1,8 @@
+==============
+Crypto Drivers
+==============
+
+.. toctree::
+ :caption: Supported Drivers
+
+ se05x.rst
diff --git a/Documentation/components/drivers/character/se05x.rst b/Documentation/components/drivers/character/crypto/se05x.rst
similarity index 100%
rename from Documentation/components/drivers/character/se05x.rst
rename to Documentation/components/drivers/character/crypto/se05x.rst
diff --git a/Documentation/components/drivers/character/efuse.rst b/Documentation/components/drivers/character/efuse.rst
new file mode 100644
index 0000000000..ca0c526137
--- /dev/null
+++ b/Documentation/components/drivers/character/efuse.rst
@@ -0,0 +1,3 @@
+=============
+EFUSE Drivers
+=============
diff --git a/Documentation/components/drivers/character/i2s.rst b/Documentation/components/drivers/character/i2s.rst
new file mode 100644
index 0000000000..05572189fe
--- /dev/null
+++ b/Documentation/components/drivers/character/i2s.rst
@@ -0,0 +1,5 @@
+===========
+I2S Drivers
+===========
+
+See ``include/nuttx/audio/i2s.h``.
diff --git a/Documentation/components/drivers/character/index.rst b/Documentation/components/drivers/character/index.rst
index eeff407590..555b92bd0d 100644
--- a/Documentation/components/drivers/character/index.rst
+++ b/Documentation/components/drivers/character/index.rst
@@ -52,20 +52,28 @@ Character device drivers have these properties:
.. toctree::
:caption: Supported Drivers
+ :maxdepth: 2
- serial.rst
- touchscreen.rst
+ 1wire.rst
analog.rst
- pwm.rst
+ bch.rst
can.rst
- quadrature.rst
- timer.rst
- rtc.rst
- watchdog.rst
- keypad.rst
+ contactless.rst
+ crypto/index.rst
+ efuse.rst
+ i2s.rst
+ input/index.rst
+ ipcc.rst
+ leds/index.rst
+ loop.rst
+ math.rst
+ modem.rst
+ motor/index.rst
note.rst
- foc.rst
- ws2812.rst
- se05x.rst
nullzero.rst
-
+ quadrature.rst
+ rc.rst
+ rf.rst
+ serial.rst
+ timers/index.rst
+ touchscreen.rst
diff --git a/Documentation/components/drivers/character/input/index.rst b/Documentation/components/drivers/character/input/index.rst
new file mode 100644
index 0000000000..ce0d896c62
--- /dev/null
+++ b/Documentation/components/drivers/character/input/index.rst
@@ -0,0 +1,10 @@
+=============
+Input Devices
+=============
+
+.. toctree::
+ :caption: Supported Drivers
+
+ keypad.rst
+
+See ``include/nuttx/input/*.h`` for registration information.
diff --git a/Documentation/components/drivers/character/keypad.rst b/Documentation/components/drivers/character/input/keypad.rst
similarity index 100%
rename from Documentation/components/drivers/character/keypad.rst
rename to Documentation/components/drivers/character/input/keypad.rst
diff --git a/Documentation/components/drivers/character/ipcc.rst b/Documentation/components/drivers/character/ipcc.rst
new file mode 100644
index 0000000000..d7d2bb1beb
--- /dev/null
+++ b/Documentation/components/drivers/character/ipcc.rst
@@ -0,0 +1,3 @@
+======================================================
+IPCC (Inter Processor Communication Controller) Driver
+======================================================
diff --git a/Documentation/components/drivers/character/leds/index.rst b/Documentation/components/drivers/character/leds/index.rst
new file mode 100644
index 0000000000..bfed00549a
--- /dev/null
+++ b/Documentation/components/drivers/character/leds/index.rst
@@ -0,0 +1,8 @@
+====
+LEDS
+====
+
+.. toctree::
+ :caption: Supported Drivers
+
+ ws2812.rst
diff --git a/Documentation/components/drivers/character/ws2812.rst b/Documentation/components/drivers/character/leds/ws2812.rst
similarity index 100%
rename from Documentation/components/drivers/character/ws2812.rst
rename to Documentation/components/drivers/character/leds/ws2812.rst
diff --git a/Documentation/components/drivers/character/loop.rst b/Documentation/components/drivers/character/loop.rst
new file mode 100644
index 0000000000..e869123922
--- /dev/null
+++ b/Documentation/components/drivers/character/loop.rst
@@ -0,0 +1,6 @@
+===========
+Loop Device
+===========
+
+Supports the standard loop device that can be used to export a
+file (or character device) as a block device.
diff --git a/Documentation/components/drivers/character/math.rst b/Documentation/components/drivers/character/math.rst
new file mode 100644
index 0000000000..46a0640069
--- /dev/null
+++ b/Documentation/components/drivers/character/math.rst
@@ -0,0 +1,3 @@
+=========================
+Math Acceleration Drivers
+=========================
diff --git a/Documentation/components/drivers/character/modem.rst b/Documentation/components/drivers/character/modem.rst
new file mode 100644
index 0000000000..15e7e43026
--- /dev/null
+++ b/Documentation/components/drivers/character/modem.rst
@@ -0,0 +1,3 @@
+============
+Modem Device
+============
diff --git a/Documentation/components/drivers/character/foc.rst b/Documentation/components/drivers/character/motor/foc.rst
similarity index 100%
rename from Documentation/components/drivers/character/foc.rst
rename to Documentation/components/drivers/character/motor/foc.rst
diff --git a/Documentation/components/drivers/character/motor/index.rst b/Documentation/components/drivers/character/motor/index.rst
new file mode 100644
index 0000000000..8a58b8daf5
--- /dev/null
+++ b/Documentation/components/drivers/character/motor/index.rst
@@ -0,0 +1,8 @@
+=============
+Motor Drivers
+=============
+
+.. toctree::
+ :caption: Supported Drivers
+
+ foc.rst
diff --git a/Documentation/components/drivers/character/rc.rst b/Documentation/components/drivers/character/rc.rst
new file mode 100644
index 0000000000..4cb3d02d5e
--- /dev/null
+++ b/Documentation/components/drivers/character/rc.rst
@@ -0,0 +1,3 @@
+======================
+Remote Control Devices
+======================
diff --git a/Documentation/components/drivers/character/rf.rst b/Documentation/components/drivers/character/rf.rst
new file mode 100644
index 0000000000..311e510eec
--- /dev/null
+++ b/Documentation/components/drivers/character/rf.rst
@@ -0,0 +1,3 @@
+==========
+RF Devices
+==========
diff --git a/Documentation/components/drivers/character/timers/index.rst b/Documentation/components/drivers/character/timers/index.rst
new file mode 100644
index 0000000000..3ebe20aa3e
--- /dev/null
+++ b/Documentation/components/drivers/character/timers/index.rst
@@ -0,0 +1,12 @@
+==============
+Timers Drivers
+==============
+
+.. toctree::
+ :caption: Supported Drivers
+
+ timer.rst
+ pwm.rst
+ watchdog.rst
+ rtc.rst
+
diff --git a/Documentation/components/drivers/character/pwm.rst b/Documentation/components/drivers/character/timers/pwm.rst
similarity index 100%
rename from Documentation/components/drivers/character/pwm.rst
rename to Documentation/components/drivers/character/timers/pwm.rst
diff --git a/Documentation/components/drivers/character/rtc.rst b/Documentation/components/drivers/character/timers/rtc.rst
similarity index 100%
rename from Documentation/components/drivers/character/rtc.rst
rename to Documentation/components/drivers/character/timers/rtc.rst
diff --git a/Documentation/components/drivers/character/timer.rst b/Documentation/components/drivers/character/timers/timer.rst
similarity index 100%
rename from Documentation/components/drivers/character/timer.rst
rename to Documentation/components/drivers/character/timers/timer.rst
diff --git a/Documentation/components/drivers/character/watchdog.rst b/Documentation/components/drivers/character/timers/watchdog.rst
similarity index 100%
rename from Documentation/components/drivers/character/watchdog.rst
rename to Documentation/components/drivers/character/timers/watchdog.rst
diff --git a/Documentation/components/drivers/index.rst b/Documentation/components/drivers/index.rst
index 14f9b27aaf..dbf524ea8c 100644
--- a/Documentation/components/drivers/index.rst
+++ b/Documentation/components/drivers/index.rst
@@ -30,48 +30,57 @@ Drivers in NuttX generally work in two distinct layers:
* A "lower half" which is typically hardware-specific. This is
usually implemented at the architecture or board level.
-Subdirectories of `nuttx/drivers`
-=================================
+Subdirectories of ``nuttx/drivers``
+===================================
-* ``analog/``
+* ``1wire/`` :doc:`character/1wire`
+
+ 1wire device drivers.
+
+* ``analog/`` :doc:`character/analog`
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.
-* ``audio/``
+* ``audio/`` :doc:`special/audio`
Audio device drivers.
- See ``include/nuttx/audio/audio.h`` for interface definitions.
- See also the audio subsystem at ``nuttx/audio/``.
-
-* ``bch/``
+* ``bch/`` :doc:`character/bch`
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/fs/fs.h`` for registration information.
-
-* ``can/``
+* ``can/`` :doc:`character/can`
This is the CAN drivers and logic support.
- See ``include/nuttx/can/can.h`` for usage information.
+* ``clk/``:doc:`special/clk`
-* ``contactless/``
+ Clock management (CLK) device drivers.
+
+* ``contactless/`` :doc:`character/contactless`
Contactless devices are related to wireless devices. They are not
communication devices with other similar peers, but couplers/interfaces
to contactless cards and tags.
-* ``crypto/``
+* ``crypto/`` :doc:`character/crypto/index`
- Contains crypto drivers and support logic, including the ``/dev/urandom`` device.
+ Contains crypto drivers and support logic, including the
+ ``/dev/urandom`` device.
-* ``eeprom/``
+* ``devicetree/`` :doc:`special/devicetree`
+
+ Device Tree support.
+
+* ``dma/`` :doc:`special/dma`
+
+ DMA drivers support.
+
+* ``eeprom/`` :doc:`block/eeprom`
An EEPROM is a form of Memory Technology Device (see ``drivers/mtd``).
EEPROMs are non-volatile memory like FLASH, but differ in underlying
@@ -86,90 +95,123 @@ Subdirectories of `nuttx/drivers`
interface but instead use the simple character interface provided by
the EEPROM drivers.
-* ``i2c/``
+* ``efuse/`` :doc:`character/efuse`
+
+ EFUSE drivers support.
+
+* ``i2c/`` :doc:`special/i2c`
I2C drivers and support logic.
- See ``include/nuttx/i2c/i2c_master.h``
-
-* ``i2s/``
+* ``i2s/`` :doc:`character/i2s`
I2S drivers and support logic.
- See ``include/nuttx/audio/i2s.h``
-
-* ``input/``
+* ``input/`` :doc:`character/input/index`
This directory holds implementations of human input device (HID) drivers.
This includes such things as mouse, touchscreen, joystick,
keyboard and keypad drivers.
- See ``include/nuttx/input/*.h`` for registration information.
-
Note that USB HID devices are treated differently. These can be found under
``usbdev/`` or ``usbhost/``.
-* ``lcd/``
+* ``ioexpander/`` :doc:`special/ioexpander`
- Drivers for parallel and serial LCD and OLED type devices. These drivers support
- interfaces as defined in ``include/nuttx/lcd/lcd.h``
+ IO Expander drivers.
-* ``leds/``
+* ``ipcc/`` :doc:`character/ipcc`
+
+ IPCC (Inter Processor Communication Controller) driver.
+
+* ``lcd/`` :doc:`special/lcd`
+
+ Drivers for parallel and serial LCD and OLED type devices.
+
+* ``leds/`` :doc:`character/leds/index`
Various LED-related drivers including discrete as well as PWM- driven LEDs.
-* ``loop/``
+* ``loop/`` :doc:`character/loop`
Supports the standard loop device that can be used to export a
file (or character device) as a block device.
See ``losetup()`` and ``loteardown()`` in ``include/nuttx/fs/fs.h``.
-* ``mmcsd/``
+* ``math/`` :doc:`character/math`
+
+ MATH Acceleration drivers.
+
+* ``misc/`` :doc:`character/nullzero` :doc:`special/rwbuffer` :doc:`block/ramdisk`
+
+ Various drivers that don't fit elsewhere.
+
+* ``mmcsd/`` :doc:`special/sdio` :doc:`special/mmcsd`
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.
+* ``modem/`` :doc:`character/modem`
-* ``mtd/``
+ Modem Support.
+
+* ``motor/`` :doc:`character/motor/index`
+
+ Motor control drivers.
+
+* ``mtd/`` :doc:`special/mtd`
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).
-* ``net/``
+* ``net/`` :doc:`special/net/index`
Network interface drivers.
- See also ``include/nuttx/net/net.h``
+* ``notes/`` :doc:`character/note`
-* ``pipes/``
+ Note Driver Support.
- FIFO and named pipe drivers. Standard interfaces are declared in ``include/unistd.h``
+* ``pipes/`` :doc:`special/pipes`
-* ``power/``
+ FIFO and named pipe drivers.
+ Standard interfaces are declared in ``include/unistd.h``
- Power management (PM) driver interfaces. These interfaces are used
- to manage power usage of a platform by monitoring driver activity
- and by placing drivers into reduce power usage modes when the
- drivers are not active.
+* ``power/`` :doc:`special/power/index`
-* ``pwm/``
+ Various drivers related to power managament.
- Provides the "upper half" of a pulse width modulation (PWM) driver.
- The "lower half" of the PWM driver is provided by device-specific logic.
+* ``rc/`` :doc:`character/rc`
- See ``include/nuttx/timers/pwm.h`` for usage information.
+ Remote Control Device Support.
-* ``sensors/``
+* ``regmap/`` :doc:`special/regmap`
+
+ Regmap Subsystems Support.
+
+* ``reset/`` :doc:`special/reset`
+
+ Reset Driver Support.
+
+* ``rf/`` :doc:`character/rf`
+
+ RF Device Support.
+
+* ``rptun/`` :doc:`special/rptun`
+
+ Remote Proc Tunnel Driver Support.
+
+* ``segger/`` :doc:`special/segger`
+
+ Segger RTT drivers.
+
+* ``sensors/`` :doc:`special/sensors`
Drivers for various sensors. A sensor driver differs little from
other types of drivers other than they are use to provide measurements
@@ -180,57 +222,53 @@ Subdirectories of `nuttx/drivers`
measure and convert voltage levels. DACs, however, are retained in
the ``analog/`` sub-directory.
-* ``serial/``
+* ``serial/``:doc:`character/serial`
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``
-
-* ``spi/``
+* ``spi/`` :doc:`special/spi`
SPI drivers and support logic.
- See ``include/nuttx/spi/spi.h``
-
-* ``syslog/``
+* ``syslog/`` :doc:`special/syslog`
System logging devices.
- See ``include/syslog.h`` and ``include/nuttx/syslog/syslog.h``
+* ``timers/`` :doc:`character/timers/index`
-* ``timers/``
+ Includes support for various timer devices.
- Includes support for various timer devices including:
-
- - An "upper half" for a generic timer driver.
- See ``include/nuttx/timers/timer.h`` for more information.
-
- - An "upper half" for a generic watchdog driver.
- See ``include/nuttx/timers/watchdog.h`` for more information.
-
- - RTC drivers
-
-* ``usbdev/``
+* ``usbdev/`` :doc:`special/usbdev`
USB device drivers.
- See also ``include/nuttx/usb/usbdev.h``
-
-* ``usbhost/``
+* ``usbhost/`` :doc:`special/usbhost`
USB host drivers.
- See also ``include/nuttx/usb/usbhost.h``
+* ``usbmisc/`` :doc:`special/usbmisc`
-* ``video/``
+ USB Miscellaneous drivers.
+
+* ``usbmonitor/`` :doc:`special/usbmonitor`
+
+ USB Monitor support.
+
+* ``usrsock/`` :doc:`special/usrsock`
+
+ Usrsock Driver Support.
+
+* ``video/`` :doc:`special/video`
Video-related drivers.
- See ``include/nuttx/video/``
+* ``virtio/`` :doc:`special/virtio`
-* ``wireless/``
+ Virtio Device Support.
+
+* ``wireless/`` :doc:`special/wireless`
Drivers for various wireless devices.
diff --git a/Documentation/components/drivers/special/audio.rst b/Documentation/components/drivers/special/audio.rst
new file mode 100644
index 0000000000..bc03c10b7b
--- /dev/null
+++ b/Documentation/components/drivers/special/audio.rst
@@ -0,0 +1,6 @@
+====================
+Audio Device Drivers
+====================
+
+See ``include/nuttx/audio/audio.h`` for interface definitions.
+See also the audio subsystem at ``nuttx/audio/``.
diff --git a/Documentation/components/drivers/special/clk.rst b/Documentation/components/drivers/special/clk.rst
new file mode 100644
index 0000000000..981d3de2d6
--- /dev/null
+++ b/Documentation/components/drivers/special/clk.rst
@@ -0,0 +1,3 @@
+======================
+Clock management (CLK)
+======================
diff --git a/Documentation/components/drivers/special/devicetree.rst b/Documentation/components/drivers/special/devicetree.rst
new file mode 100644
index 0000000000..08d4f0171f
--- /dev/null
+++ b/Documentation/components/drivers/special/devicetree.rst
@@ -0,0 +1,3 @@
+===================
+Device Tree support
+===================
diff --git a/Documentation/components/drivers/special/dma.rst b/Documentation/components/drivers/special/dma.rst
new file mode 100644
index 0000000000..47dddf24de
--- /dev/null
+++ b/Documentation/components/drivers/special/dma.rst
@@ -0,0 +1,3 @@
+===========
+DMA Drivers
+===========
diff --git a/Documentation/components/drivers/special/i2c.rst b/Documentation/components/drivers/special/i2c.rst
index a284468636..fa722cbf2b 100644
--- a/Documentation/components/drivers/special/i2c.rst
+++ b/Documentation/components/drivers/special/i2c.rst
@@ -2,8 +2,9 @@
I2C Device Drivers
==================
-- ``include/nuttx/i2c/i2c.h``. All structures and APIs needed
- to work with I2C drivers are provided in this header file.
+- ``include/nuttx/i2c/i2c_master.h`` and ``include/nuttx/i2c/i2c_slave.h``.
+ All structures and APIs needed to work with I2C drivers are provided in
+ this header file.
- ``struct i2c_ops_s``. Each I2C device driver must implement
an instance of ``struct i2c_ops_s``. That structure defines a
diff --git a/Documentation/components/drivers/special/index.rst b/Documentation/components/drivers/special/index.rst
index bf55b4d34a..5b28073f06 100644
--- a/Documentation/components/drivers/special/index.rst
+++ b/Documentation/components/drivers/special/index.rst
@@ -22,17 +22,33 @@ following section.
.. toctree::
:caption: Supported Drivers
- syslog.rst
- spi.rst
- i2c.rst
- ethernet.rst
+ audio.rst
+ clk.rst
+ devicetree.rst
+ dma.rst
framebuffer.rst
+ i2c.rst
+ ioexpander.rst
lcd.rst
mtd.rst
- sdio.rst
- usbhost.rst
- usbdev.rst
- rwbuffer.rst
regmap.rst
+ reset.rst
+ rptun.rst
+ rwbuffer.rst
sensors.rst
+ segger.rst
+ spi.rst
+ syslog.rst
+ sdio.rst
+ usbdev.rst
+ usbhost.rst
+ usbmisc.rst
+ usbmonitor.rst
+ usrsock.rst
+ mmcsd.rst
+ net/index.rst
+ pipes.rst
+ power/index.rst
+ virtio.rst
video.rst
+ wireless.rst
diff --git a/Documentation/components/drivers/special/ioexpander.rst b/Documentation/components/drivers/special/ioexpander.rst
new file mode 100644
index 0000000000..18d78e8311
--- /dev/null
+++ b/Documentation/components/drivers/special/ioexpander.rst
@@ -0,0 +1,3 @@
+==========================
+IO Expander Device Drivers
+==========================
diff --git a/Documentation/components/drivers/special/mmcsd.rst b/Documentation/components/drivers/special/mmcsd.rst
new file mode 100644
index 0000000000..5ba08b325b
--- /dev/null
+++ b/Documentation/components/drivers/special/mmcsd.rst
@@ -0,0 +1,6 @@
+====================
+MMCSD Device Drivers
+====================
+
+- ``include/nuttx/mmcsd.h``. All structures and APIs needed to
+ work with MMCSD drivers are provided in this header file.
diff --git a/Documentation/components/drivers/special/ethernet.rst b/Documentation/components/drivers/special/net/ethernet.rst
similarity index 100%
rename from Documentation/components/drivers/special/ethernet.rst
rename to Documentation/components/drivers/special/net/ethernet.rst
diff --git a/Documentation/components/drivers/special/net/index.rst b/Documentation/components/drivers/special/net/index.rst
new file mode 100644
index 0000000000..483b70b4a1
--- /dev/null
+++ b/Documentation/components/drivers/special/net/index.rst
@@ -0,0 +1,14 @@
+=========================
+Network interface drivers
+=========================
+
+- ``include/nuttx/net/net.h``. All structures and APIs
+ needed to work with network device drivers are provided in
+ this header file.
+
+
+.. toctree::
+ :caption: Supported Drivers
+
+ ethernet.rst
+
diff --git a/Documentation/components/drivers/special/pipes.rst b/Documentation/components/drivers/special/pipes.rst
new file mode 100644
index 0000000000..878e8e1625
--- /dev/null
+++ b/Documentation/components/drivers/special/pipes.rst
@@ -0,0 +1,3 @@
+===========================
+FIFO and named pipe drivers
+===========================
diff --git a/Documentation/components/drivers/special/power/index.rst b/Documentation/components/drivers/special/power/index.rst
new file mode 100644
index 0000000000..956088be16
--- /dev/null
+++ b/Documentation/components/drivers/special/power/index.rst
@@ -0,0 +1,8 @@
+=====================
+Power-related Drivers
+=====================
+
+.. toctree::
+ :caption: Supported Drivers
+
+ pm/index.rst
diff --git a/Documentation/components/power.rst b/Documentation/components/drivers/special/power/pm/index.rst
similarity index 98%
rename from Documentation/components/power.rst
rename to Documentation/components/drivers/special/power/pm/index.rst
index 06452e1295..ac21a1a386 100644
--- a/Documentation/components/power.rst
+++ b/Documentation/components/drivers/special/power/pm/index.rst
@@ -85,8 +85,8 @@ All PM interfaces are declared in the file ``include/nuttx/power/pm.h``.
Called by a device driver in
order to register to receive power management event callbacks.
- Refer to the :ref:`components/power:Callbacks` section for more
- details.
+ Refer to the `Callbacks`_
+ section for more details.
:param callbacks:
An instance of :c:struct:`pm_callback_s`
@@ -100,8 +100,8 @@ All PM interfaces are declared in the file ``include/nuttx/power/pm.h``.
Called by a device driver in
order to unregister previously registered power management event
- callbacks. Refer to the :ref:`components/power:Callbacks` section for
- more details.
+ callbacks. Refer to the `Callbacks`_
+ section for more details.
**Input Parameters:**
diff --git a/Documentation/components/pm.png b/Documentation/components/drivers/special/power/pm/pm.png
similarity index 100%
rename from Documentation/components/pm.png
rename to Documentation/components/drivers/special/power/pm/pm.png
diff --git a/Documentation/components/drivers/special/reset.rst b/Documentation/components/drivers/special/reset.rst
new file mode 100644
index 0000000000..64bf4683e4
--- /dev/null
+++ b/Documentation/components/drivers/special/reset.rst
@@ -0,0 +1,3 @@
+============
+Reset Driver
+============
diff --git a/Documentation/components/drivers/special/rptun.rst b/Documentation/components/drivers/special/rptun.rst
new file mode 100644
index 0000000000..b977cde71a
--- /dev/null
+++ b/Documentation/components/drivers/special/rptun.rst
@@ -0,0 +1,23 @@
+==========================
+Remote Proc Tunnel Drivers
+==========================
+
+RPTUN driver is used for multi-cores' communication.
+
+Supported RPTUN drivers:
+
+- RPMSG File System
+- RPMSG domain (remote) sockets
+- RPMSG UART Driver
+- RPMSG net Driver
+- RPMSG Usersock
+- RPMSG Sensor Driver
+- RPMSG RTC Driver
+- RPMSG MTD
+- RPMSG Device
+- RPMSG Block Driver
+- RPMSG IO expander
+- RPMSG uinput
+- RPMSG clk Driver
+- RPMSG syslog
+- RPMSG regulator
diff --git a/Documentation/components/drivers/special/segger.rst b/Documentation/components/drivers/special/segger.rst
new file mode 100644
index 0000000000..37835720ee
--- /dev/null
+++ b/Documentation/components/drivers/special/segger.rst
@@ -0,0 +1,10 @@
+==================
+Segger RTT drivers
+==================
+
+Supported Segger drivers:
+
+- serial over RTT - ``CONFIG_SERIAL_RTTx``,
+- console over RTT - ``CONFIG_SERIAL_RTT_CONSOLE_CHANNEL``
+- Segger SystemView - ``CONFIG_SEGGER_SYSVIEW``
+- Note RTT - ``CONFIG_NOTE_RTT``
diff --git a/Documentation/components/drivers/special/usbmisc.rst b/Documentation/components/drivers/special/usbmisc.rst
new file mode 100644
index 0000000000..1b97b236d5
--- /dev/null
+++ b/Documentation/components/drivers/special/usbmisc.rst
@@ -0,0 +1,3 @@
+=========================
+USB Miscellaneous Drivers
+=========================
diff --git a/Documentation/components/drivers/special/usbmonitor.rst b/Documentation/components/drivers/special/usbmonitor.rst
new file mode 100644
index 0000000000..cc592d8d99
--- /dev/null
+++ b/Documentation/components/drivers/special/usbmonitor.rst
@@ -0,0 +1,3 @@
+===================
+USB Monitor support
+===================
diff --git a/Documentation/components/drivers/special/usrsock.rst b/Documentation/components/drivers/special/usrsock.rst
new file mode 100644
index 0000000000..7a98a50806
--- /dev/null
+++ b/Documentation/components/drivers/special/usrsock.rst
@@ -0,0 +1,3 @@
+==============
+Usrsock Driver
+==============
diff --git a/Documentation/components/drivers/special/video.rst b/Documentation/components/drivers/special/video.rst
index 7418da269b..9f948dfe87 100644
--- a/Documentation/components/drivers/special/video.rst
+++ b/Documentation/components/drivers/special/video.rst
@@ -2,6 +2,9 @@
Video Device Drivers
====================
+- ``include/nuttx/video/``. All structures and APIs
+ needed to work with video drivers are provided in this header
+ file.
max7456
-------
diff --git a/Documentation/components/drivers/special/virtio.rst b/Documentation/components/drivers/special/virtio.rst
new file mode 100644
index 0000000000..9e73d27a09
--- /dev/null
+++ b/Documentation/components/drivers/special/virtio.rst
@@ -0,0 +1,3 @@
+=====================
+Virtio Device Drivers
+=====================
diff --git a/Documentation/components/drivers/special/wireless.rst b/Documentation/components/drivers/special/wireless.rst
new file mode 100644
index 0000000000..9997ed887f
--- /dev/null
+++ b/Documentation/components/drivers/special/wireless.rst
@@ -0,0 +1,3 @@
+================
+Wireless Drivers
+================
diff --git a/Documentation/components/filesystem/aio.rst b/Documentation/components/filesystem/aio.rst
new file mode 100644
index 0000000000..a703a1b08d
--- /dev/null
+++ b/Documentation/components/filesystem/aio.rst
@@ -0,0 +1,5 @@
+========================
+Asynchronous I/O support
+========================
+
+See ``include/aio.h``.
diff --git a/Documentation/components/filesystem/cromfs.rst b/Documentation/components/filesystem/cromfs.rst
index 34f794bf36..381accf55d 100644
--- a/Documentation/components/filesystem/cromfs.rst
+++ b/Documentation/components/filesystem/cromfs.rst
@@ -1,5 +1,5 @@
======
-cromfs
+CROMFS
======
Overview
diff --git a/Documentation/components/filesystem/fat.rst b/Documentation/components/filesystem/fat.rst
new file mode 100644
index 0000000000..326f458031
--- /dev/null
+++ b/Documentation/components/filesystem/fat.rst
@@ -0,0 +1,5 @@
+===
+FAT
+===
+
+Support for FAT filesystem.
diff --git a/Documentation/components/filesystem/hostfs.rst b/Documentation/components/filesystem/hostfs.rst
new file mode 100644
index 0000000000..b3f8b66c70
--- /dev/null
+++ b/Documentation/components/filesystem/hostfs.rst
@@ -0,0 +1,13 @@
+================
+Host File System
+================
+
+The Host file system provides a mechanism to mount directories from the host OS
+during simulation mode. The host directory to be "mounted" is specified during
+the mount command using the ``-o`` command line switch, such as::
+
+ mount -t hostfs -o fs=/home/user/nuttx_root /host
+
+For non-NSH operation, the option ``fs=home/user/nuttx_root`` would
+be passed to the ``mount()`` routine using the optional ``void *data``
+parameter.
diff --git a/Documentation/components/filesystem/index.rst b/Documentation/components/filesystem/index.rst
index 637ba4b903..b9e120f225 100644
--- a/Documentation/components/filesystem/index.rst
+++ b/Documentation/components/filesystem/index.rst
@@ -45,13 +45,23 @@ scalability from the very tiny platform to the moderate platform.
.. toctree::
:maxdepth: 1
+ aio.rst
binfs.rst
cromfs.rst
+ fat.rst
+ hostfs.rst
+ littlefs.rst
mmap.rst
+ nfs.rst
nxffs.rst
- procfs.rst
- smartfs.rst
- spiffs.rst
- unionfs.rst
- zipfs.rst
partition.rst
+ procfs.rst
+ romfs.rst
+ rpmsgfs.rst
+ smartfs.rst
+ shmfs.rst
+ spiffs.rst
+ tmpfs.rst
+ unionfs.rst
+ userfs.rst
+ zipfs.rst
diff --git a/Documentation/components/filesystem/littlefs.rst b/Documentation/components/filesystem/littlefs.rst
new file mode 100644
index 0000000000..fb54b6adfd
--- /dev/null
+++ b/Documentation/components/filesystem/littlefs.rst
@@ -0,0 +1,6 @@
+========
+LITTLEFS
+========
+
+A little fail-safe filesystem designed for microcontrollers from
+https://github.com/littlefs-project/littlefs.
diff --git a/Documentation/components/filesystem/nfs.rst b/Documentation/components/filesystem/nfs.rst
new file mode 100644
index 0000000000..d883c323b1
--- /dev/null
+++ b/Documentation/components/filesystem/nfs.rst
@@ -0,0 +1,5 @@
+===
+NFS
+===
+
+Network file system (NFS) client file system.
diff --git a/Documentation/components/filesystem/romfs.rst b/Documentation/components/filesystem/romfs.rst
new file mode 100644
index 0000000000..f39fc8b2f2
--- /dev/null
+++ b/Documentation/components/filesystem/romfs.rst
@@ -0,0 +1,3 @@
+=====
+ROMFS
+=====
diff --git a/Documentation/components/filesystem/rpmsgfs.rst b/Documentation/components/filesystem/rpmsgfs.rst
new file mode 100644
index 0000000000..3d4b5ac58f
--- /dev/null
+++ b/Documentation/components/filesystem/rpmsgfs.rst
@@ -0,0 +1,5 @@
+=================
+RPMSG File System
+=================
+
+Use rpmsg file system to mount remote directories to local.
diff --git a/Documentation/components/filesystem/shmfs.rst b/Documentation/components/filesystem/shmfs.rst
new file mode 100644
index 0000000000..f5ed0b8315
--- /dev/null
+++ b/Documentation/components/filesystem/shmfs.rst
@@ -0,0 +1,5 @@
+=========================
+Shared Memory File System
+=========================
+
+Include support for shm_open() and shm_close.
diff --git a/Documentation/components/filesystem/tmpfs.rst b/Documentation/components/filesystem/tmpfs.rst
new file mode 100644
index 0000000000..97a88bf3c5
--- /dev/null
+++ b/Documentation/components/filesystem/tmpfs.rst
@@ -0,0 +1,5 @@
+=====
+TMPFS
+=====
+
+TMPFS filesystem.
diff --git a/Documentation/components/filesystem/userfs.rst b/Documentation/components/filesystem/userfs.rst
new file mode 100644
index 0000000000..40cebe5fbf
--- /dev/null
+++ b/Documentation/components/filesystem/userfs.rst
@@ -0,0 +1,5 @@
+================
+User file system
+================
+
+See ``include/nuttx/fs/userfs.h``.
diff --git a/Documentation/components/index.rst b/Documentation/components/index.rst
index ba2488dd4a..9e00cb0a72 100644
--- a/Documentation/components/index.rst
+++ b/Documentation/components/index.rst
@@ -1,3 +1,4 @@
+=============
OS Components
=============
@@ -10,7 +11,6 @@ case, you can head to the :doc:`reference <../reference/index>`.
:maxdepth: 2
:caption: Contents:
- power.rst
binfmt.rst
drivers/index.rst
nxflat.rst
diff --git a/Documentation/introduction/about.rst b/Documentation/introduction/about.rst
index 281fcada60..b7c21dee9c 100644
--- a/Documentation/introduction/about.rst
+++ b/Documentation/introduction/about.rst
@@ -120,7 +120,7 @@ Key features of NuttX include:
* Graphics: framebuffer drivers, graphic- and segment-LCD drivers. VNC server.
* Audio subsystem: CODECs, audio input and output drivers. Command line and graphic media player applications.
* Cryptographic subsystem.
- * :doc:`/components/power` sub-system.
+ * :doc:`/components/drivers/special/power/pm/index` sub-system.
* ModBus support provided by built-in `FreeModBus `__ version 1.5.0.
* **C/C++ Libraries**
diff --git a/Documentation/platforms/xtensa/esp32/index.rst b/Documentation/platforms/xtensa/esp32/index.rst
index 8ec4058a1e..7a6bd10098 100644
--- a/Documentation/platforms/xtensa/esp32/index.rst
+++ b/Documentation/platforms/xtensa/esp32/index.rst
@@ -240,7 +240,7 @@ Linker Segments
ESP32 has 4 generic timers of 64 bits (2 from Group 0 and 2 from Group 1). They're
accessible as character drivers, the configuration along with a guidance on how
to run the example and the description of the application level interface
-can be found :doc:`here `.
+can be found :doc:`here `.
Watchdog Timers
===============
@@ -249,7 +249,7 @@ ESP32 has 3 WDTs. 2 MWDTS from the Timers Module and 1 RWDT from the RTC Module
(Currently not supported yet). They're accessible as character drivers,
The configuration along with a guidance on how to run the example and the description
of the application level interface can be found
-:doc:`here `.
+:doc:`here `.
SMP
===
diff --git a/Documentation/platforms/xtensa/esp32s2/index.rst b/Documentation/platforms/xtensa/esp32s2/index.rst
index 0b06ca092d..d61a41d088 100644
--- a/Documentation/platforms/xtensa/esp32s2/index.rst
+++ b/Documentation/platforms/xtensa/esp32s2/index.rst
@@ -242,7 +242,7 @@ Linker Segments
ESP32-S2 has 4 generic timers of 64 bits (2 from Group 0 and 2 from Group 1).
They're accessible as character drivers, the configuration along with a
guidance on how to run the example and the description of the application level
-interface can be found in the :doc:`timer documentation `.
+interface can be found in the :doc:`timer documentation `.
Watchdog Timers
===============
@@ -251,7 +251,7 @@ ESP32-S2 has 3 WDTs. 2 MWDTs from the Timers Module and 1 RWDT from the RTC Modu
(Currently not supported yet). They're accessible as character drivers,
The configuration along with a guidance on how to run the example and the description
of the application level interface can be found in the
-:doc:`watchdog documentation `.
+:doc:`watchdog documentation `.
I2S
===
diff --git a/Documentation/reference/user/13_boardctl.rst b/Documentation/reference/user/13_boardctl.rst
index b7feb59c98..f5326f43ef 100644
--- a/Documentation/reference/user/13_boardctl.rst
+++ b/Documentation/reference/user/13_boardctl.rst
@@ -88,7 +88,7 @@ Power Management
Manage power state transition and query. The supplied argument
indicates the specific PM operation to perform, which map to
corresponding internal ``pm_`` functions
- (see :doc:`/components/power`).
+ (see :doc:`/components/drivers/special/power/pm/index`).
With this interface you can interact with PM handling arch/board logic
(typically done in IDLE loop) or you can directly manage state transitions