This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/nuttx-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 6ce00d8f08 Publishing web: 31ab6eb45e7903daced4cf8f07660e86e8a79bb7 
docs: f47ff76589811abfc8534ca3303b7b50f99a2001
6ce00d8f08 is described below

commit 6ce00d8f086f5fa8f9e9b5045f35a07dc36a8e9b
Author: Tomasz 'CeDeROM' CEDRO <[email protected]>
AuthorDate: Wed Jan 14 00:37:38 2026 +0000

    Publishing web: 31ab6eb45e7903daced4cf8f07660e86e8a79bb7 docs: 
f47ff76589811abfc8534ca3303b7b50f99a2001
---
 content/docs/10.0.0/index.html                     |   2 +-
 content/docs/10.0.1/index.html                     |   2 +-
 content/docs/10.1.0/index.html                     |   2 +-
 content/docs/10.2.0/index.html                     |   2 +-
 content/docs/10.3.0/index.html                     |   2 +-
 content/docs/11.0.0/index.html                     |   2 +-
 content/docs/12.0.0/index.html                     |   2 +-
 content/docs/12.0.0/searchindex.js                 |   2 +-
 content/docs/12.1.0/index.html                     |   2 +-
 content/docs/12.1.0/searchindex.js                 |   2 +-
 content/docs/12.10.0/index.html                    |   2 +-
 content/docs/12.10.0/searchindex.js                |   2 +-
 content/docs/12.11.0/guides/fully_linked_elf.html  |   2 +-
 .../docs/12.11.0/guides/partially_linked_elf.html  |   2 +-
 content/docs/12.11.0/index.html                    |   2 +-
 content/docs/12.11.0/searchindex.js                |   2 +-
 content/docs/12.12.0/guides/fully_linked_elf.html  |   2 +-
 .../docs/12.12.0/guides/partially_linked_elf.html  |   2 +-
 content/docs/12.12.0/index.html                    |   2 +-
 content/docs/12.12.0/searchindex.js                |   2 +-
 content/docs/12.2.0/index.html                     |   2 +-
 content/docs/12.2.0/searchindex.js                 |   2 +-
 content/docs/12.2.1/index.html                     |   2 +-
 content/docs/12.2.1/searchindex.js                 |   2 +-
 content/docs/12.3.0/index.html                     |   2 +-
 content/docs/12.3.0/searchindex.js                 |   2 +-
 content/docs/12.4.0/index.html                     |   2 +-
 content/docs/12.4.0/searchindex.js                 |   2 +-
 content/docs/12.5.0/index.html                     |   2 +-
 content/docs/12.5.0/searchindex.js                 |   2 +-
 content/docs/12.5.1/index.html                     |   2 +-
 content/docs/12.5.1/searchindex.js                 |   2 +-
 content/docs/12.6.0/index.html                     |   2 +-
 content/docs/12.6.0/searchindex.js                 |   2 +-
 content/docs/12.7.0/index.html                     |   2 +-
 content/docs/12.7.0/searchindex.js                 |   2 +-
 content/docs/12.8.0/index.html                     |   2 +-
 content/docs/12.8.0/searchindex.js                 |   2 +-
 content/docs/12.9.0/index.html                     |   2 +-
 content/docs/12.9.0/searchindex.js                 |   2 +-
 .../components/drivers/special/ioexpander.rst.txt  | 256 ++++++++++++++++--
 .../latest/_sources/reference/os/nuttx.rst.txt     |  10 -
 .../_sources/reference/os/time_clock.rst.txt       |  59 +----
 .../latest/components/drivers/special/index.html   |  15 +-
 .../components/drivers/special/ioexpander.html     | 292 +++++++++++++++++++--
 content/docs/latest/genindex.html                  |  34 ++-
 content/docs/latest/guides/fully_linked_elf.html   |   2 +-
 .../docs/latest/guides/partially_linked_elf.html   |   2 +-
 content/docs/latest/index.html                     |   2 +-
 content/docs/latest/objects.inv                    | Bin 180350 -> 180617 bytes
 content/docs/latest/reference/os/nuttx.html        |  11 -
 content/docs/latest/reference/os/time_clock.html   |  79 +-----
 content/docs/latest/searchindex.js                 |   2 +-
 content/feed.xml                                   |   4 +-
 54 files changed, 617 insertions(+), 231 deletions(-)

diff --git a/content/docs/10.0.0/index.html b/content/docs/10.0.0/index.html
index 7a97cd8144..13b82ff934 100644
--- a/content/docs/10.0.0/index.html
+++ b/content/docs/10.0.0/index.html
@@ -207,7 +207,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller 
environments, the primary governing standards in NuttX are Posix and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:15</p>
+<p>Last Updated: 14 January 26 at 00:16</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.0.1/index.html b/content/docs/10.0.1/index.html
index ea72a28397..b31241f1f4 100644
--- a/content/docs/10.0.1/index.html
+++ b/content/docs/10.0.1/index.html
@@ -249,7 +249,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller 
environments, the primary governing standards in NuttX are Posix and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:15</p>
+<p>Last Updated: 14 January 26 at 00:16</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.1.0/index.html b/content/docs/10.1.0/index.html
index e091065b8b..6a6e4bfe92 100644
--- a/content/docs/10.1.0/index.html
+++ b/content/docs/10.1.0/index.html
@@ -249,7 +249,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:15</p>
+<p>Last Updated: 14 January 26 at 00:17</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.2.0/index.html b/content/docs/10.2.0/index.html
index 0e9b7cd142..49b8928362 100644
--- a/content/docs/10.2.0/index.html
+++ b/content/docs/10.2.0/index.html
@@ -250,7 +250,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:15</p>
+<p>Last Updated: 14 January 26 at 00:17</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.3.0/index.html b/content/docs/10.3.0/index.html
index cf2183fb2b..49b8928362 100644
--- a/content/docs/10.3.0/index.html
+++ b/content/docs/10.3.0/index.html
@@ -250,7 +250,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:16</p>
+<p>Last Updated: 14 January 26 at 00:17</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/11.0.0/index.html b/content/docs/11.0.0/index.html
index cf2183fb2b..49b8928362 100644
--- a/content/docs/11.0.0/index.html
+++ b/content/docs/11.0.0/index.html
@@ -250,7 +250,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <div class="section" id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this headline">¶</a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:16</p>
+<p>Last Updated: 14 January 26 at 00:17</p>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Table of Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.0.0/index.html b/content/docs/12.0.0/index.html
index cf0cf7016f..24c6f660d5 100644
--- a/content/docs/12.0.0/index.html
+++ b/content/docs/12.0.0/index.html
@@ -175,7 +175,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this headline"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:16</p>
+<p>Last Updated: 14 January 26 at 00:18</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.0.0/searchindex.js 
b/content/docs/12.0.0/searchindex.js
index f684766cb3..63259044ad 100644
--- a/content/docs/12.0.0/searchindex.js
+++ b/content/docs/12.0.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["applications/index","applications/nsh/builtin","applications/nsh/commands","applications/nsh/config","applications/nsh/customizing","applications/nsh/index","applications/nsh/installation","applications/nsh/login","applications/nsh/nsh","components/binfmt","components/drivers/block/index","components/drivers/character/analog","components/drivers/character/can","components/drivers/character/foc","components/drivers/character/index","components/drivers/character
 [...]
\ No newline at end of file
+Search.setIndex({docnames:["applications/index","applications/nsh/builtin","applications/nsh/commands","applications/nsh/config","applications/nsh/customizing","applications/nsh/index","applications/nsh/installation","applications/nsh/login","applications/nsh/nsh","components/binfmt","components/drivers/block/index","components/drivers/character/analog","components/drivers/character/can","components/drivers/character/foc","components/drivers/character/index","components/drivers/character
 [...]
\ No newline at end of file
diff --git a/content/docs/12.1.0/index.html b/content/docs/12.1.0/index.html
index 99ff2077ef..5dea88e017 100644
--- a/content/docs/12.1.0/index.html
+++ b/content/docs/12.1.0/index.html
@@ -175,7 +175,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this headline"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:16</p>
+<p>Last Updated: 14 January 26 at 00:18</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.1.0/searchindex.js 
b/content/docs/12.1.0/searchindex.js
index f311de12ad..37f58c74e6 100644
--- a/content/docs/12.1.0/searchindex.js
+++ b/content/docs/12.1.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["applications/index","applications/nsh/builtin","applications/nsh/commands","applications/nsh/config","applications/nsh/customizing","applications/nsh/index","applications/nsh/installation","applications/nsh/login","applications/nsh/nsh","components/binfmt","components/drivers/block/index","components/drivers/character/analog","components/drivers/character/can","components/drivers/character/foc","components/drivers/character/index","components/drivers/character
 [...]
\ No newline at end of file
+Search.setIndex({docnames:["applications/index","applications/nsh/builtin","applications/nsh/commands","applications/nsh/config","applications/nsh/customizing","applications/nsh/index","applications/nsh/installation","applications/nsh/login","applications/nsh/nsh","components/binfmt","components/drivers/block/index","components/drivers/character/analog","components/drivers/character/can","components/drivers/character/foc","components/drivers/character/index","components/drivers/character
 [...]
\ No newline at end of file
diff --git a/content/docs/12.10.0/index.html b/content/docs/12.10.0/index.html
index 94f9f94475..af555d1887 100644
--- a/content/docs/12.10.0/index.html
+++ b/content/docs/12.10.0/index.html
@@ -187,7 +187,7 @@ standards. Additional standard APIs from Unix and other 
common RTOS’s (such as
 VxWorks) are adopted for functionality not available under these standards, or
 for functionality that is not appropriate for deeply-embedded environments 
(such
 as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:28</p>
+<p>Last Updated: 14 January 26 at 00:29</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.10.0/searchindex.js 
b/content/docs/12.10.0/searchindex.js
index e67d23b18f..3796bcd938 100644
--- a/content/docs/12.10.0/searchindex.js
+++ b/content/docs/12.10.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr", 
"_tags/arch-example", "_tags/chip-a527", "_tags/chip-a64", 
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega2560", 
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s", 
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3", 
"_tags/chip-esp32wroom32", "_tags/chip-esp32wrover32", "_tags/chip-example", 
"_tags/chip-fpga", "_tags/chip-imx8", "_tags/chip-imx93", "_tags/chip-nrf52", 
"_tags/ [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr", 
"_tags/arch-example", "_tags/chip-a527", "_tags/chip-a64", 
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega2560", 
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s", 
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3", 
"_tags/chip-esp32wroom32", "_tags/chip-esp32wrover32", "_tags/chip-example", 
"_tags/chip-fpga", "_tags/chip-imx8", "_tags/chip-imx93", "_tags/chip-nrf52", 
"_tags/ [...]
\ No newline at end of file
diff --git a/content/docs/12.11.0/guides/fully_linked_elf.html 
b/content/docs/12.11.0/guides/fully_linked_elf.html
index bb7e10d003..d1d3eceb5f 100644
--- a/content/docs/12.11.0/guides/fully_linked_elf.html
+++ b/content/docs/12.11.0/guides/fully_linked_elf.html
@@ -479,7 +479,7 @@ NuttX package: <code class="docutils literal 
notranslate"><span class="pre">nutt
 <div 
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version 
admonition">
 <p class="admonition-title">Here is an alternative minimal (and possibly 
outdated) version</p>
 <div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input" 
id="84b692f0-d89c-499e-a554-b29d209e6206" 
name="84b692f0-d89c-499e-a554-b29d209e6206" type="checkbox"><label 
class="sphinx_collapse__label" for="84b692f0-d89c-499e-a554-b29d209e6206"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input" 
id="430128ef-c77c-4245-ae57-0cffa7a71c34" 
name="430128ef-c77c-4245-ae57-0cffa7a71c34" type="checkbox"><label 
class="sphinx_collapse__label" for="430128ef-c77c-4245-ae57-0cffa7a71c34"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
 <div class="highlight-text notranslate"><div 
class="highlight"><pre><span></span>SECTIONS
 {
 .text 0x00000000 :
diff --git a/content/docs/12.11.0/guides/partially_linked_elf.html 
b/content/docs/12.11.0/guides/partially_linked_elf.html
index 09a49b91d5..9de04280b2 100644
--- a/content/docs/12.11.0/guides/partially_linked_elf.html
+++ b/content/docs/12.11.0/guides/partially_linked_elf.html
@@ -505,7 +505,7 @@ NuttX package: <code class="docutils literal 
notranslate"><span class="pre">nutt
 <div 
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version 
admonition">
 <p class="admonition-title">Here is an alternative minimal (and possibly 
outdated) version</p>
 <div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input" 
id="8ecb91e8-4de2-4e38-8877-640076a4b051" 
name="8ecb91e8-4de2-4e38-8877-640076a4b051" type="checkbox"><label 
class="sphinx_collapse__label" for="8ecb91e8-4de2-4e38-8877-640076a4b051"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input" 
id="ab4af277-11d5-4806-801a-0c2bb61e0c5a" 
name="ab4af277-11d5-4806-801a-0c2bb61e0c5a" type="checkbox"><label 
class="sphinx_collapse__label" for="ab4af277-11d5-4806-801a-0c2bb61e0c5a"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
 <div class="highlight-text notranslate"><div 
class="highlight"><pre><span></span>SECTIONS
 {
 .text 0x00000000 :
diff --git a/content/docs/12.11.0/index.html b/content/docs/12.11.0/index.html
index d23bd03dc8..6bc69b2d52 100644
--- a/content/docs/12.11.0/index.html
+++ b/content/docs/12.11.0/index.html
@@ -189,7 +189,7 @@ standards. Additional standard APIs from Unix and other 
common RTOS’s (such as
 VxWorks) are adopted for functionality not available under these standards, or
 for functionality that is not appropriate for deeply-embedded environments 
(such
 as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:29</p>
+<p>Last Updated: 14 January 26 at 00:31</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.11.0/searchindex.js 
b/content/docs/12.11.0/searchindex.js
index 7beff360b5..621c4aa4df 100644
--- a/content/docs/12.11.0/searchindex.js
+++ b/content/docs/12.11.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr", 
"_tags/arch-example", "_tags/chip-a527", "_tags/chip-a64", 
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega2560", 
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s", 
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3", 
"_tags/chip-esp32wroom32", "_tags/chip-esp32wrover32", "_tags/chip-example", 
"_tags/chip-fpga", "_tags/chip-imx8", "_tags/chip-imx93", "_tags/chip-imx95", 
"_tags/ [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr", 
"_tags/arch-example", "_tags/chip-a527", "_tags/chip-a64", 
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega2560", 
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s", 
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3", 
"_tags/chip-esp32wroom32", "_tags/chip-esp32wrover32", "_tags/chip-example", 
"_tags/chip-fpga", "_tags/chip-imx8", "_tags/chip-imx93", "_tags/chip-imx95", 
"_tags/ [...]
\ No newline at end of file
diff --git a/content/docs/12.12.0/guides/fully_linked_elf.html 
b/content/docs/12.12.0/guides/fully_linked_elf.html
index fa70ba27a2..c9f0c4d4a6 100644
--- a/content/docs/12.12.0/guides/fully_linked_elf.html
+++ b/content/docs/12.12.0/guides/fully_linked_elf.html
@@ -479,7 +479,7 @@ NuttX package: <code class="docutils literal 
notranslate"><span class="pre">nutt
 <div 
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version 
admonition">
 <p class="admonition-title">Here is an alternative minimal (and possibly 
outdated) version</p>
 <div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input" 
id="d2c559ea-6999-4e3a-8161-892ddcc96f10" 
name="d2c559ea-6999-4e3a-8161-892ddcc96f10" type="checkbox"><label 
class="sphinx_collapse__label" for="d2c559ea-6999-4e3a-8161-892ddcc96f10"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input" 
id="0c832845-b6cc-4eaa-8454-9c72f88f7927" 
name="0c832845-b6cc-4eaa-8454-9c72f88f7927" type="checkbox"><label 
class="sphinx_collapse__label" for="0c832845-b6cc-4eaa-8454-9c72f88f7927"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
 <div class="highlight-text notranslate"><div 
class="highlight"><pre><span></span>SECTIONS
 {
 .text 0x00000000 :
diff --git a/content/docs/12.12.0/guides/partially_linked_elf.html 
b/content/docs/12.12.0/guides/partially_linked_elf.html
index ec53aac801..b9d6084d4c 100644
--- a/content/docs/12.12.0/guides/partially_linked_elf.html
+++ b/content/docs/12.12.0/guides/partially_linked_elf.html
@@ -505,7 +505,7 @@ NuttX package: <code class="docutils literal 
notranslate"><span class="pre">nutt
 <div 
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version 
admonition">
 <p class="admonition-title">Here is an alternative minimal (and possibly 
outdated) version</p>
 <div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input" 
id="8b36f5cb-bab8-40c1-8aaa-3e2122051424" 
name="8b36f5cb-bab8-40c1-8aaa-3e2122051424" type="checkbox"><label 
class="sphinx_collapse__label" for="8b36f5cb-bab8-40c1-8aaa-3e2122051424"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input" 
id="b3cf0aa7-b080-42e6-a1f7-c1df1962ea0d" 
name="b3cf0aa7-b080-42e6-a1f7-c1df1962ea0d" type="checkbox"><label 
class="sphinx_collapse__label" for="b3cf0aa7-b080-42e6-a1f7-c1df1962ea0d"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
 <div class="highlight-text notranslate"><div 
class="highlight"><pre><span></span>SECTIONS
 {
 .text 0x00000000 :
diff --git a/content/docs/12.12.0/index.html b/content/docs/12.12.0/index.html
index 2f44fee6a4..48f4b9c53b 100644
--- a/content/docs/12.12.0/index.html
+++ b/content/docs/12.12.0/index.html
@@ -189,7 +189,7 @@ standards. Additional standard APIs from Unix and other 
common RTOS’s (such as
 VxWorks) are adopted for functionality not available under these standards, or
 for functionality that is not appropriate for deeply-embedded environments 
(such
 as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:31</p>
+<p>Last Updated: 14 January 26 at 00:32</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.12.0/searchindex.js 
b/content/docs/12.12.0/searchindex.js
index ead85919b0..fb7840f4cb 100644
--- a/content/docs/12.12.0/searchindex.js
+++ b/content/docs/12.12.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr", 
"_tags/arch-example", "_tags/arch-renesas", "_tags/arch-risc-v", 
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64", 
"_tags/chip-at32uc3", "_tags/chip-at90usb", "_tags/chip-atmega", 
"_tags/chip-atmega128", "_tags/chip-atmega1284p", "_tags/chip-atmega2560", 
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s", 
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3", "_tags/ch 
[...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr", 
"_tags/arch-example", "_tags/arch-renesas", "_tags/arch-risc-v", 
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64", 
"_tags/chip-at32uc3", "_tags/chip-at90usb", "_tags/chip-atmega", 
"_tags/chip-atmega128", "_tags/chip-atmega1284p", "_tags/chip-atmega2560", 
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s", 
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3", "_tags/ch 
[...]
\ No newline at end of file
diff --git a/content/docs/12.2.0/index.html b/content/docs/12.2.0/index.html
index 02a676bb1c..4925e11c67 100644
--- a/content/docs/12.2.0/index.html
+++ b/content/docs/12.2.0/index.html
@@ -176,7 +176,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:17</p>
+<p>Last Updated: 14 January 26 at 00:18</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.2.0/searchindex.js 
b/content/docs/12.2.0/searchindex.js
index 0a18797010..61c5e54264 100644
--- a/content/docs/12.2.0/searchindex.js
+++ b/content/docs/12.2.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.2.1/index.html b/content/docs/12.2.1/index.html
index 02a676bb1c..4925e11c67 100644
--- a/content/docs/12.2.1/index.html
+++ b/content/docs/12.2.1/index.html
@@ -176,7 +176,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:17</p>
+<p>Last Updated: 14 January 26 at 00:18</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.2.1/searchindex.js 
b/content/docs/12.2.1/searchindex.js
index 7328310bdb..1283e56ec7 100644
--- a/content/docs/12.2.1/searchindex.js
+++ b/content/docs/12.2.1/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.3.0/index.html b/content/docs/12.3.0/index.html
index 6b74862c80..8c0b7adc20 100644
--- a/content/docs/12.3.0/index.html
+++ b/content/docs/12.3.0/index.html
@@ -176,7 +176,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:17</p>
+<p>Last Updated: 14 January 26 at 00:19</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.3.0/searchindex.js 
b/content/docs/12.3.0/searchindex.js
index 0262a10625..6eebe53cb9 100644
--- a/content/docs/12.3.0/searchindex.js
+++ b/content/docs/12.3.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.4.0/index.html b/content/docs/12.4.0/index.html
index aac1a113bf..b7688ca343 100644
--- a/content/docs/12.4.0/index.html
+++ b/content/docs/12.4.0/index.html
@@ -183,7 +183,7 @@ standards. Additional standard APIs from Unix and other 
common RTOS’s (such as
 VxWorks) are adopted for functionality not available under these standards, or
 for functionality that is not appropriate for deeply-embedded environments 
(such
 as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:18</p>
+<p>Last Updated: 14 January 26 at 00:19</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.4.0/searchindex.js 
b/content/docs/12.4.0/searchindex.js
index 1190d6461f..3a5f2fbd75 100644
--- a/content/docs/12.4.0/searchindex.js
+++ b/content/docs/12.4.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
diff --git a/content/docs/12.5.0/index.html b/content/docs/12.5.0/index.html
index 19e7c3b425..5861db39ac 100644
--- a/content/docs/12.5.0/index.html
+++ b/content/docs/12.5.0/index.html
@@ -183,7 +183,7 @@ standards. Additional standard APIs from Unix and other 
common RTOS’s (such as
 VxWorks) are adopted for functionality not available under these standards, or
 for functionality that is not appropriate for deeply-embedded environments 
(such
 as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:19</p>
+<p>Last Updated: 14 January 26 at 00:20</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.5.0/searchindex.js 
b/content/docs/12.5.0/searchindex.js
index 19229eacb8..d5d0819c63 100644
--- a/content/docs/12.5.0/searchindex.js
+++ b/content/docs/12.5.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
diff --git a/content/docs/12.5.1/index.html b/content/docs/12.5.1/index.html
index 19934ec779..d1788a5a6d 100644
--- a/content/docs/12.5.1/index.html
+++ b/content/docs/12.5.1/index.html
@@ -183,7 +183,7 @@ standards. Additional standard APIs from Unix and other 
common RTOS’s (such as
 VxWorks) are adopted for functionality not available under these standards, or
 for functionality that is not appropriate for deeply-embedded environments 
(such
 as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:20</p>
+<p>Last Updated: 14 January 26 at 00:21</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.5.1/searchindex.js 
b/content/docs/12.5.1/searchindex.js
index 76bfd47c34..4d01649220 100644
--- a/content/docs/12.5.1/searchindex.js
+++ b/content/docs/12.5.1/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
diff --git a/content/docs/12.6.0/index.html b/content/docs/12.6.0/index.html
index d3cc5a6f49..f1dbec579f 100644
--- a/content/docs/12.6.0/index.html
+++ b/content/docs/12.6.0/index.html
@@ -184,7 +184,7 @@ standards. Additional standard APIs from Unix and other 
common RTOS’s (such as
 VxWorks) are adopted for functionality not available under these standards, or
 for functionality that is not appropriate for deeply-embedded environments 
(such
 as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:22</p>
+<p>Last Updated: 14 January 26 at 00:23</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.6.0/searchindex.js 
b/content/docs/12.6.0/searchindex.js
index 3547e9184b..c3236628ce 100644
--- a/content/docs/12.6.0/searchindex.js
+++ b/content/docs/12.6.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/benchmarks/iozone/index", 
"applications/bench [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/benchmarks/iozone/index", 
"applications/bench [...]
\ No newline at end of file
diff --git a/content/docs/12.7.0/index.html b/content/docs/12.7.0/index.html
index 8ad951653f..54788cb3fd 100644
--- a/content/docs/12.7.0/index.html
+++ b/content/docs/12.7.0/index.html
@@ -183,7 +183,7 @@ standards. Additional standard APIs from Unix and other 
common RTOS’s (such as
 VxWorks) are adopted for functionality not available under these standards, or
 for functionality that is not appropriate for deeply-embedded environments 
(such
 as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:23</p>
+<p>Last Updated: 14 January 26 at 00:24</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.7.0/searchindex.js 
b/content/docs/12.7.0/searchindex.js
index a417ac57f7..f0a03f1873 100644
--- a/content/docs/12.7.0/searchindex.js
+++ b/content/docs/12.7.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/benchmarks/iozone/index", 
"applications/bench [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/benchmarks/iozone/index", 
"applications/bench [...]
\ No newline at end of file
diff --git a/content/docs/12.8.0/index.html b/content/docs/12.8.0/index.html
index 6d0a33e62a..8910e6e3e8 100644
--- a/content/docs/12.8.0/index.html
+++ b/content/docs/12.8.0/index.html
@@ -183,7 +183,7 @@ standards. Additional standard APIs from Unix and other 
common RTOS’s (such as
 VxWorks) are adopted for functionality not available under these standards, or
 for functionality that is not appropriate for deeply-embedded environments 
(such
 as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:24</p>
+<p>Last Updated: 14 January 26 at 00:26</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.8.0/searchindex.js 
b/content/docs/12.8.0/searchindex.js
index d09b356387..6106d6fecb 100644
--- a/content/docs/12.8.0/searchindex.js
+++ b/content/docs/12.8.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/benchmarks/iozone/index", 
"applications/bench [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/benchmarks/iozone/index", 
"applications/bench [...]
\ No newline at end of file
diff --git a/content/docs/12.9.0/index.html b/content/docs/12.9.0/index.html
index 2aeb67829a..647a1bd044 100644
--- a/content/docs/12.9.0/index.html
+++ b/content/docs/12.9.0/index.html
@@ -183,7 +183,7 @@ standards. Additional standard APIs from Unix and other 
common RTOS’s (such as
 VxWorks) are adopted for functionality not available under these standards, or
 for functionality that is not appropriate for deeply-embedded environments 
(such
 as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:26</p>
+<p>Last Updated: 14 January 26 at 00:27</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.9.0/searchindex.js 
b/content/docs/12.9.0/searchindex.js
index b36566485f..8021f01315 100644
--- a/content/docs/12.9.0/searchindex.js
+++ b/content/docs/12.9.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/cyclictest/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/b [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/cachespeed/index", 
"applications/benchmarks/coremark-pro/index", 
"applications/benchmarks/coremark/index", 
"applications/benchmarks/cyclictest/index", 
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index", 
"applications/benchmarks/index", "applications/b [...]
\ No newline at end of file
diff --git 
a/content/docs/latest/_sources/components/drivers/special/ioexpander.rst.txt 
b/content/docs/latest/_sources/components/drivers/special/ioexpander.rst.txt
index 5a2f5134dd..f52f019df4 100644
--- a/content/docs/latest/_sources/components/drivers/special/ioexpander.rst.txt
+++ b/content/docs/latest/_sources/components/drivers/special/ioexpander.rst.txt
@@ -2,29 +2,37 @@
 IO Expander Device Drivers
 ==========================
 
--  ``include/nuttx/ioexpander/ioexpander.h`` and 
``include/nuttx/ioexpander/gpio.h``.
-   All structures and APIs needed to work with ioexpander drivers are provided 
in
-   this header file.
+The IO Expander subsystem is defined in the following headers:
 
--  ``struct ioexpander_ops_s``. Each ioexpand device driver must implement
-   an instance of ``struct ioexpander_ops_s``. That structure defines a
-   call table with the methods, and we also provide macros to help access 
methods.
+- ``include/nuttx/ioexpander/ioexpander.h`` — defines the public IO expander
+   interface: macros, types, and helper access macros used by drivers and
+   consumers.
+- ``include/nuttx/ioexpander/gpio.h`` — provides the "gpio lower half"
+   helper that allows registering an IO expander pin as a standard GPIO
+   character device (see ``gpio_lower_half`` and ``gpio_lower_half_byname``).
 
--  we also provide method ``gpio_lower_half`` to make ioexpander compatible 
with normal gpio.
+Each IO expander driver must implement an instance of ``struct
+ioexpander_ops_s``. That structure defines the lower-half call table and
+the operations a driver must provide; the public header also includes
+helper macros that dispatch to the lower-half operations table.
 
--  **Binding ioexpander Drivers**. ioexpander drivers are not normally directly
-   accessed by user code, we should always get lower level drivers, for 
example I2C,
-   and map extended gpio feature same asa normal gpio. See for example,
-   ``int nrf52_sx1509_initialize(void)``
-   in ``boards/arm/nrf52/thingy52/src/nrf52_sx1509.c``. In general, the binding
-   sequence is:
+The helper ``gpio_lower_half`` can be used to register individual expander
+pins as standard GPIO devices so that upper-half GPIO consumers can access
+expander pins through the common GPIO character driver.
 
-   #. Get an instance of ``struct i2c_master_s`` from the
-      hardware-specific I2C device driver, and
-   #. Provide that instance and configurations to the ioexpander 
initialization method
-      to get the ``struct ioexpander_dev_s`` ioe device instance.
-   #. Then use ioe device instance to do ioexpander operations, or use 
``gpio_lower_half``
-      to make ioexpand compatible with normal gpio.
+**Binding IO expander drivers**
+
+IO expander drivers are usually bound by board-specific code rather than
+accessed directly from application code. For I2C- or SPI-connected
+expanders the typical sequence is:
+
+#. Obtain the bus instance (for example, a ``struct i2c_master_s *``) from
+   the hardware-specific bus driver.
+#. Call the expander driver's initialization routine with the bus instance
+   and device-specific configuration; the init routine returns a
+   ``struct ioexpander_dev_s *`` instance.
+#. Use the returned ``ioe`` instance directly, or register individual
+   expander pins with the upper-half GPIO driver via ``gpio_lower_half``.
 
 
 -  **Examples**: ``drivers/ioexpander/pca9555.c``,
@@ -33,3 +41,213 @@ IO Expander Device Drivers
    ``drivers/ioexpander/ioe_rpmsg.c``,
    ``boards/sim/sim/sim/src/sim_ioexpander.c``,
    ``boards/arm/nrf52/thingy52/src/nrf52_sx1509.c`` etc.
+
+Further details
+===============
+
+Header files
+------------
+
+The relevant header files are:
+
+- ``include/nuttx/ioexpander/ioexpander.h`` — defines macros, types and access
+   macros used to interact with IO expanders.
+- ``include/nuttx/ioexpander/gpio.h`` — provides the "gpio lower half" helper
+   that allows registering an IO expander pin as a standard GPIO device.
+
+Overview of key macros and options
+----------------------------------
+
+The following is a concise reference of the important macros defined in the
+header. These are the options you will typically use through 
``IOEXP_SETOPTION``
+and the various access macros. The primary preprocessor definitions are
+listed below (C syntax):
+
+.. code-block:: c
+
+   /* Direction definitions */
+   #define IOEXPANDER_DIRECTION_IN            0  /* float */
+   #define IOEXPANDER_DIRECTION_IN_PULLUP     1
+   #define IOEXPANDER_DIRECTION_IN_PULLDOWN   2
+   #define IOEXPANDER_DIRECTION_OUT           3  /* push-pull */
+   #define IOEXPANDER_DIRECTION_OUT_OPENDRAIN 4
+   #define IOEXPANDER_DIRECTION_OUT_LED       5  /* LED output */
+
+   /* Pinset mask helpers */
+   #define IOEXPANDER_PINMASK  (((ioe_pinset_t)1 << CONFIG_IOEXPANDER_NPINS) - 
1)
+   #define PINSET_ALL          (~((ioe_pinset_t)0))
+
+   /* Common option values (used with IOEXP_SETOPTION) */
+   /* Invert (active level) */
+   #define IOEXPANDER_OPTION_INVERT      1
+   #define IOEXPANDER_VAL_NORMAL         0  /* normal polarity */
+   #define IOEXPANDER_VAL_INVERT         1  /* inverted polarity */
+
+   /* Interrupt configuration (level/edge and high/low/rising/falling/both) */
+   #define IOEXPANDER_OPTION_INTCFG      2
+   #define IOEXPANDER_VAL_DISABLE        0  /* 0000 disable interrupts */
+   #define IOEXPANDER_VAL_LEVEL          1  /* xx01: level triggered */
+   #define IOEXPANDER_VAL_EDGE           2  /* xx10: edge triggered */
+   #define IOEXPANDER_VAL_HIGH           5  /* 0101: high level */
+   #define IOEXPANDER_VAL_LOW            9  /* 1001: low level */
+   #define IOEXPANDER_VAL_RISING         6  /* 0110: rising edge */
+   #define IOEXPANDER_VAL_FALLING        10 /* 1010: falling edge */
+   #define IOEXPANDER_VAL_BOTH           14 /* 1110: both edges */
+
+   /* LED configuration */
+   #define IOEXPANDER_OPTION_LEDCFG      3  /* assign an LED number to a pin */
+
+   /* Non-generic (driver-specific) option */
+   #define IOEXPANDER_OPTION_NONGENERIC  4  /* pass driver-specific struct */
+
+   /* Wakeup configuration (configure pin as SoC wake-up source) */
+   #define IOEXPANDER_OPTION_WAKEUPCFG   5
+   #define IOEXPANDER_WAKEUP_DISABLE     0
+   #define IOEXPANDER_WAKEUP_ENABLE      1
+
+   /* Debounce and interrupt mask (recent additions) */
+   #define IOEXPANDER_OPTION_SETDEBOUNCE 6  /* configure debounce */
+   #define IOEXPANDER_DEBOUNCE_DISABLE  0
+   #define IOEXPANDER_DEBOUNCE_ENABLE   1
+
+   #define IOEXPANDER_OPTION_SETMASK     7  /* control interrupt masking */
+   #define IOEXPANDER_MASK_DISABLE       0  /* unmask (enable) interrupts */
+   #define IOEXPANDER_MASK_ENABLE        1  /* mask (suppress) interrupts */
+
+Access macros (API)
+-------------------
+
+The header exposes a set of helper macros that dispatch to the underlying
+driver operations table (``struct ioexpander_ops_s``):
+
+.. c:macro:: IOEXP_SETDIRECTION(dev, pin, dir)
+
+   Set a pin direction (input, output, open-drain, LED, pull-up/down).
+   Returns 0 on success or a negative errno on failure.
+
+.. c:macro:: IOEXP_SETOPTION(dev, pin, opt, val)
+
+   Generic option setting interface used to configure the options listed
+   above. Note that ``val`` is a ``void *``; drivers may accept an integer
+   casted to a pointer or a pointer to a driver-specific structure.
+
+   Examples::
+
+     /* Invert pin polarity */
+     IOEXP_SETOPTION(dev, 3, IOEXPANDER_OPTION_INVERT,
+                     (FAR void *)IOEXPANDER_VAL_INVERT);
+
+     /* Enable debounce on pin 2 */
+     IOEXP_SETOPTION(dev, 2, IOEXPANDER_OPTION_SETDEBOUNCE,
+                     (FAR void *)IOEXPANDER_DEBOUNCE_ENABLE);
+
+     /* Mask interrupts for pin 5 */
+     IOEXP_SETOPTION(dev, 5, IOEXPANDER_OPTION_SETMASK,
+                     (FAR void *)IOEXPANDER_MASK_ENABLE);
+
+.. c:macro:: IOEXP_WRITEPIN(dev, pin, val)
+
+   Set the pin level. Returns 0 on success or a negative errno on error.
+
+.. c:macro:: IOEXP_READPIN(dev, pin, valptr)
+
+   Read the actual physical pin level. The value is returned via ``valptr``.
+
+.. c:macro:: IOEXP_READBUF(dev, pin, valptr)
+
+   Read the buffered/register value cached by the expander.
+
+   - ``IOEXP_WRITEPIN`` sets the pin level (TRUE typically means high).
+     Drivers handle polarity inversion if configured.
+   - ``IOEXP_READPIN`` reads the actual physical pin level.
+   - ``IOEXP_READBUF`` reads the buffered/register value cached by the
+     expander.
+
+Multi-pin operations
+--------------------
+
+When ``CONFIG_IOEXPANDER_MULTIPIN`` is enabled, batch operations are
+available that may be more efficient than repeated single-pin calls:
+
+- ``IOEXP_MULTIWRITEPIN(dev, pins, vals, count)``
+- ``IOEXP_MULTIREADPIN(dev, pins, vals, count)``
+- ``IOEXP_MULTIREADBUF(dev, pins, vals, count)``
+
+Interrupts and callbacks
+------------------------
+
+If ``CONFIG_IOEXPANDER_INT_ENABLE`` is enabled the header defines the
+callback type and attach/detach helper macros. The callback signature
+is::
+
+   typedef CODE int (*ioe_callback_t)(FAR struct ioexpander_dev_s *dev,
+                                                       ioe_pinset_t pinset, 
FAR void *arg);
+
+The callback is invoked when events occur for the monitored pinset. The
+attach/detach helpers are provided as macros that dispatch to the lower-half
+driver when ``CONFIG_IOEXPANDER_INT_ENABLE`` is enabled:
+
+.. c:macro:: IOEP_ATTACH(dev, pinset, callback, arg)
+
+   Attach and enable a pin interrupt callback. Returns a non-NULL opaque
+   handle on success. ``pinset`` selects which pin(s) will generate the
+   callback; ``callback`` is a function of type ``ioe_callback_t`` and
+   ``arg`` is passed through to the callback.
+
+.. c:macro:: IOEP_DETACH(dev, handle)
+
+   Detach and disable a previously attached callback referenced by ``handle``.
+
+Note: when ``CONFIG_IOEXPANDER_NPINS`` > 64, ``ioe_pinset_t`` represents a
+single interrupt pin number rather than a bitmask.
+
+Driver interface (lower-half)
+-----------------------------
+
+Each IO expander driver must implement the operations table
+``struct ioexpander_ops_s``. At minimum the driver should provide:
+
+- ``ioe_direction``
+- ``ioe_option``
+- ``ioe_writepin``
+- ``ioe_readpin``
+- ``ioe_readbuf``
+
+Optional multi-pin and interrupt attach/detach methods should be provided
+when the corresponding configuration options are enabled.
+
+Binding to the upper layer (gpio_lower_half)
+--------------------------------------------
+
+Applications normally do not access IO expander drivers directly. Typical
+binding steps are:
+
+1. Obtain the bus instance (for example, ``struct i2c_master_s *``) from
+    the hardware-specific bus driver.
+2. Call the expander driver's initialization routine with the bus instance
+    and device configuration to obtain a ``struct ioexpander_dev_s *``.
+3. Use the returned ``ioe`` instance directly, or register individual
+    expander pins as standard GPIO devices via ``gpio_lower_half`` or
+    ``gpio_lower_half_byname``.
+
+Example (pseudocode)::
+
+   /* Get the I2C bus */
+   struct i2c_master_s *i2c = up_i2cinitialize(0);
+
+   /* Initialize the expander (driver-specific init) */
+   struct ioexpander_dev_s *ioe = pca9555_initialize(i2c, CONFIG_PCA9555_ADDR);
+
+   /* Configure pin 0 as input with pull-up and enable debounce */
+   IOEXP_SETDIRECTION(ioe, 0, IOEXPANDER_DIRECTION_IN_PULLUP);
+   IOEXP_SETOPTION(ioe, 0, IOEXPANDER_OPTION_SETDEBOUNCE,
+                           (FAR void *)IOEXPANDER_DEBOUNCE_ENABLE);
+
+Examples and references
+-----------------------
+
+See the following drivers and board examples for concrete usage:
+
+- ``drivers/ioexpander/pca9555.c`` — I2C IO expander implementation.
+- ``drivers/ioexpander/ioe_rpmsg.c`` — RPMSG-based IO expander.
+- ``boards/arm/nrf52/thingy52/src/nrf52_sx1509.c`` — binding example.
diff --git a/content/docs/latest/_sources/reference/os/nuttx.rst.txt 
b/content/docs/latest/_sources/reference/os/nuttx.rst.txt
index 9e38497342..04c8b60643 100644
--- a/content/docs/latest/_sources/reference/os/nuttx.rst.txt
+++ b/content/docs/latest/_sources/reference/os/nuttx.rst.txt
@@ -22,16 +22,6 @@ OS List Management APIs
   periodically -- the calling interval must be
   ``CONFIG_USEC_PER_TICK``.
 
-.. c:function:: void nxsched_tick_expiration(void)
-
-  Description: if ``CONFIG_SCHED_TICKLESS`` is defined, then this
-  function is provided by the RTOS base code and called from
-  platform-specific code when the interval timer used to implemented
-  the tick-less OS expires.
-
-  **Assumptions**: Base code implementation assumes that this
-  function is called from interrupt handling logic with interrupts disabled.
-
 .. c:function:: void irq_dispatch(int irq, FAR void *context)
 
   This function must be called from the
diff --git a/content/docs/latest/_sources/reference/os/time_clock.rst.txt 
b/content/docs/latest/_sources/reference/os/time_clock.rst.txt
index c679ea949b..f178f98075 100644
--- a/content/docs/latest/_sources/reference/os/time_clock.rst.txt
+++ b/content/docs/latest/_sources/reference/os/time_clock.rst.txt
@@ -372,7 +372,7 @@ In addition to these imported interfaces, the RTOS will 
export the
 following interfaces for use by the platform-specific interval
 timer implementation:
 
-- ``nxsched_tick_expiration()``: called by the platform-specific logic when 
the interval time expires.
+- ``nxsched_process_timer()``: called by the platform-specific logic when the 
interval time expires.
 
 .. c:function:: void archname_timer_initialize(void)
 
@@ -410,7 +410,7 @@ timer implementation:
 
   Cancel the alarm and return the time of cancellation of the alarm.
   These two steps need to be as nearly atomic as possible.
-  ``nxsched_tick_expiration()`` will not be called unless the alarm
+  ``nxsched_process_timer()`` will not be called unless the alarm
   is restarted with ``up_alarm_start()``. If, as a race condition,
   the alarm has already expired when this function is called, then
   time returned is the current time.
@@ -427,13 +427,13 @@ timer implementation:
 
 .. c:function:: int up_alarm_start(FAR const struct timespec *ts)
 
-  Start the alarm. ``nxsched_tick_expiration()`` will be called
+  Start the alarm. ``nxsched_process_timer()`` will be called
   when the alarm occurs (unless ``up_alarm_cancel`` is called to
   stop it).
 
   :param ts: The time in the future at the alarm is expected to
     occur. When the alarm occurs the timer logic will call
-    ``nxsched_tick_expiration()``.
+    ``nxsched_process_timer()``.
 
   :return: Zero (OK) on success; a negated errno value on failure.
 
@@ -445,11 +445,11 @@ timer implementation:
 
 Cancel the interval timer and return the time remaining on the
 timer. These two steps need to be as nearly atomic as possible.
-``nxsched_tick_expiration()`` will not be called unless the timer
+``nxsched_process_timer()`` will not be called unless the timer
 is restarted with ``up_timer_start()``. If, as a race condition,
 the timer has already expired when this function is called, then
 that pending interrupt must be cleared so that
-``nxsched_tick_expiration()`` is not called spuriously and the
+``nxsched_process_timer()`` is not called spuriously and the
 remaining time of zero should be returned.
 
 :param ts: Location to return the remaining time. Zero should be
@@ -463,12 +463,12 @@ disabled internally to assure non-reentrancy.
 
 .. c:function:: int up_timer_start(FAR const struct timespec *ts)
 
-Start the interval timer. ``nxsched_tick_expiration()`` will be
+Start the interval timer. ``nxsched_process_timer()`` will be
 called at the completion of the timeout (unless
 ``up_timer_cancel()`` is called to stop the timing).
 
 :param ts: Provides the time interval until
-  ``nxsched_tick_expiration()`` is called.
+  ``nxsched_process_timer()`` is called.
 
 :return: Zero (OK) on success; a negated errno value on failure.
 
@@ -564,41 +564,6 @@ or ``kill()`` to communicate with NuttX tasks.
   context of the timer interrupt handler and is subject to all ISR
   restrictions.
 
-.. c:function:: int wd_restart(FAR struct wdog_s *wdog, clock_t delay)
-
-  This function restarts the specified watchdog timer using the same
-  function and argument that were specified in the previous wd_start()
-  call, but with a new delay value. It can be used when the user wants
-  to restart the same watchdog with a different timeout value, or to
-  refresh (feed) an existing watchdog before it expires.
-
-  :param wdog: Pointer to the watchdog timer to restart
-  :param delay: Delay count in clock ticks
-
-  **NOTE**: The parameter must be of type ``wdparm_t``.
-
-  :return: Zero (``OK``) is returned on success; a negated ``errno`` value
-    is return to indicate the nature of any failure.
-
-.. c:function:: int wd_restart_next(FAR struct wdog_s *wdog, clock_t delay)
-
-  This function restarts the specified watchdog timer using a new delay
-  value, but schedules the next expiration based on the previous
-  expiration time (wdog->expired + delay).  This allows the watchdog to
-  maintain a consistent periodic interval even if there is some delay in
-  handling the expiration callback.
-
-  It can be used when the user wants to restart a watchdog for a different
-  purpose or continue periodic timing based on the previous timeout point.
-
-  :param wdog: Pointer to the watchdog timer to restart
-  :param delay: Delay count in clock ticks
-
-  **NOTE**: The parameter must be of type ``wdparm_t``.
-
-  :return: Zero (``OK``) is returned on success; a negated ``errno`` value
-    is return to indicate the nature of any failure.
-
 .. c:function:: int wd_cancel(FAR struct wdog_s *wdog)
 
   This function cancels a currently running
@@ -745,12 +710,15 @@ that returns immediately without waiting for the timer to 
stop executing.
 
   **POSIX Compatibility:** This is a NON-POSIX interface.
 
-.. c:function:: int hrtimer_start(FAR hrtimer_t *hrtimer, uint64_t ns, \
+.. c:function:: int hrtimer_start(FAR hrtimer_t *hrtimer, \
+                                  hrtimer_entry_t func, \
+                                  uint64_t expired, \
                                   enum hrtimer_mode_e mode)
 
   This function starts a high-resolution timer in absolute or relative mode.
 
   :param hrtimer: Timer instance to cancel
+  :param func: Expiration callback function
   :param ns: Timer expiration in nanoseconds (absolute or relative)
   :param mode: HRTIMER_MODE_ABS or HRTIMER_MODE_REL
 
@@ -758,7 +726,8 @@ that returns immediately without waiting for the timer to 
stop executing.
 
   **POSIX Compatibility:** This is a NON-POSIX interface.
 
-.. c:type:: uint64_t (*hrtimer_cb)(FAR hrtimer_t *hrtimer, uint64_t expired)
+.. c:type:: uint64_t (*hrtimer_entry_t)(FAR hrtimer_t *hrtimer, \
+                                        uint64_t expired)
 
   **High-resolution Timer Callback**: when a hrtimer expires,
   the callback function with this type is called.
diff --git a/content/docs/latest/components/drivers/special/index.html 
b/content/docs/latest/components/drivers/special/index.html
index d803827235..c91b53f171 100644
--- a/content/docs/latest/components/drivers/special/index.html
+++ b/content/docs/latest/components/drivers/special/index.html
@@ -308,7 +308,20 @@ and thus expose them to applications.</p>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="i3c.html">I3C 
Device Drivers</a></li>
-<li class="toctree-l1"><a class="reference internal" href="ioexpander.html">IO 
Expander Device Drivers</a></li>
+<li class="toctree-l1"><a class="reference internal" href="ioexpander.html">IO 
Expander Device Drivers</a><ul>
+<li class="toctree-l2"><a class="reference internal" 
href="ioexpander.html#further-details">Further details</a><ul>
+<li class="toctree-l3"><a class="reference internal" 
href="ioexpander.html#header-files">Header files</a></li>
+<li class="toctree-l3"><a class="reference internal" 
href="ioexpander.html#overview-of-key-macros-and-options">Overview of key 
macros and options</a></li>
+<li class="toctree-l3"><a class="reference internal" 
href="ioexpander.html#access-macros-api">Access macros (API)</a></li>
+<li class="toctree-l3"><a class="reference internal" 
href="ioexpander.html#multi-pin-operations">Multi-pin operations</a></li>
+<li class="toctree-l3"><a class="reference internal" 
href="ioexpander.html#interrupts-and-callbacks">Interrupts and 
callbacks</a></li>
+<li class="toctree-l3"><a class="reference internal" 
href="ioexpander.html#driver-interface-lower-half">Driver interface 
(lower-half)</a></li>
+<li class="toctree-l3"><a class="reference internal" 
href="ioexpander.html#binding-to-the-upper-layer-gpio-lower-half">Binding to 
the upper layer (gpio_lower_half)</a></li>
+<li class="toctree-l3"><a class="reference internal" 
href="ioexpander.html#examples-and-references">Examples and references</a></li>
+</ul>
+</li>
+</ul>
+</li>
 <li class="toctree-l1"><a class="reference internal" href="lcd.html">LCD 
Character Drivers</a><ul>
 <li class="toctree-l2"><a class="reference internal" 
href="lcd.html#binding">Binding</a><ul>
 <li class="toctree-l3"><a class="reference internal" 
href="lcd.html#generic-lcd-character-driver">Generic LCD Character 
Driver</a></li>
diff --git a/content/docs/latest/components/drivers/special/ioexpander.html 
b/content/docs/latest/components/drivers/special/ioexpander.html
index 7db4b3edf5..362f3598d5 100644
--- a/content/docs/latest/components/drivers/special/ioexpander.html
+++ b/content/docs/latest/components/drivers/special/ioexpander.html
@@ -150,7 +150,10 @@
 <li class="toctree-l4"><a class="reference internal" 
href="i2c.html#i2c-bit-bang-driver">I2C Bit-Bang Driver</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="i2c.html#i2c-slave-device-drivers">I2C Slave Device Drivers</a></li>
 <li class="toctree-l4"><a class="reference internal" href="i3c.html">I3C 
Device Drivers</a></li>
-<li class="toctree-l4 current"><a class="current reference internal" 
href="#">IO Expander Device Drivers</a></li>
+<li class="toctree-l4 current"><a class="current reference internal" 
href="#">IO Expander Device Drivers</a><ul>
+<li class="toctree-l5"><a class="reference internal" 
href="#further-details">Further details</a></li>
+</ul>
+</li>
 <li class="toctree-l4"><a class="reference internal" href="lcd.html">LCD 
Character Drivers</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="mtd/index.html">Memory Technology Device Drivers</a></li>
 <li class="toctree-l4"><a class="reference internal" 
href="regmap.html">drivers/regmap</a></li>
@@ -248,29 +251,42 @@
              
   <section id="io-expander-device-drivers">
 <h1>IO Expander Device Drivers<a class="headerlink" 
href="#io-expander-device-drivers" title="Permalink to this heading"></a></h1>
+<p>The IO Expander subsystem is defined in the following headers:</p>
 <ul class="simple">
-<li><p><code class="docutils literal notranslate"><span 
class="pre">include/nuttx/ioexpander/ioexpander.h</span></code> and <code 
class="docutils literal notranslate"><span 
class="pre">include/nuttx/ioexpander/gpio.h</span></code>.
-All structures and APIs needed to work with ioexpander drivers are provided in
-this header file.</p></li>
-<li><p><code class="docutils literal notranslate"><span 
class="pre">struct</span> <span class="pre">ioexpander_ops_s</span></code>. 
Each ioexpand device driver must implement
-an instance of <code class="docutils literal notranslate"><span 
class="pre">struct</span> <span class="pre">ioexpander_ops_s</span></code>. 
That structure defines a
-call table with the methods, and we also provide macros to help access 
methods.</p></li>
-<li><p>we also provide method <code class="docutils literal notranslate"><span 
class="pre">gpio_lower_half</span></code> to make ioexpander compatible with 
normal gpio.</p></li>
-<li><p><strong>Binding ioexpander Drivers</strong>. ioexpander drivers are not 
normally directly
-accessed by user code, we should always get lower level drivers, for example 
I2C,
-and map extended gpio feature same asa normal gpio. See for example,
-<code class="docutils literal notranslate"><span class="pre">int</span> <span 
class="pre">nrf52_sx1509_initialize(void)</span></code>
-in <code class="docutils literal notranslate"><span 
class="pre">boards/arm/nrf52/thingy52/src/nrf52_sx1509.c</span></code>. In 
general, the binding
-sequence is:</p>
+<li><dl class="simple">
+<dt><code class="docutils literal notranslate"><span 
class="pre">include/nuttx/ioexpander/ioexpander.h</span></code> — defines the 
public IO expander</dt><dd><p>interface: macros, types, and helper access 
macros used by drivers and
+consumers.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt><code class="docutils literal notranslate"><span 
class="pre">include/nuttx/ioexpander/gpio.h</span></code> — provides the “gpio 
lower half”</dt><dd><p>helper that allows registering an IO expander pin as a 
standard GPIO
+character device (see <code class="docutils literal notranslate"><span 
class="pre">gpio_lower_half</span></code> and <code class="docutils literal 
notranslate"><span class="pre">gpio_lower_half_byname</span></code>).</p>
+</dd>
+</dl>
+</li>
+</ul>
+<p>Each IO expander driver must implement an instance of <code class="docutils 
literal notranslate"><span class="pre">struct</span>
+<span class="pre">ioexpander_ops_s</span></code>. That structure defines the 
lower-half call table and
+the operations a driver must provide; the public header also includes
+helper macros that dispatch to the lower-half operations table.</p>
+<p>The helper <code class="docutils literal notranslate"><span 
class="pre">gpio_lower_half</span></code> can be used to register individual 
expander
+pins as standard GPIO devices so that upper-half GPIO consumers can access
+expander pins through the common GPIO character driver.</p>
+<p><strong>Binding IO expander drivers</strong></p>
+<p>IO expander drivers are usually bound by board-specific code rather than
+accessed directly from application code. For I2C- or SPI-connected
+expanders the typical sequence is:</p>
 <ol class="arabic simple">
-<li><p>Get an instance of <code class="docutils literal notranslate"><span 
class="pre">struct</span> <span class="pre">i2c_master_s</span></code> from the
-hardware-specific I2C device driver, and</p></li>
-<li><p>Provide that instance and configurations to the ioexpander 
initialization method
-to get the <code class="docutils literal notranslate"><span 
class="pre">struct</span> <span class="pre">ioexpander_dev_s</span></code> ioe 
device instance.</p></li>
-<li><p>Then use ioe device instance to do ioexpander operations, or use <code 
class="docutils literal notranslate"><span 
class="pre">gpio_lower_half</span></code>
-to make ioexpand compatible with normal gpio.</p></li>
+<li><p>Obtain the bus instance (for example, a <code class="docutils literal 
notranslate"><span class="pre">struct</span> <span 
class="pre">i2c_master_s</span> <span class="pre">*</span></code>) from
+the hardware-specific bus driver.</p></li>
+<li><p>Call the expander driver’s initialization routine with the bus instance
+and device-specific configuration; the init routine returns a
+<code class="docutils literal notranslate"><span class="pre">struct</span> 
<span class="pre">ioexpander_dev_s</span> <span class="pre">*</span></code> 
instance.</p></li>
+<li><p>Use the returned <code class="docutils literal notranslate"><span 
class="pre">ioe</span></code> instance directly, or register individual
+expander pins with the upper-half GPIO driver via <code class="docutils 
literal notranslate"><span class="pre">gpio_lower_half</span></code>.</p></li>
 </ol>
-</li>
+<ul class="simple">
 <li><p><strong>Examples</strong>: <code class="docutils literal 
notranslate"><span class="pre">drivers/ioexpander/pca9555.c</span></code>,
 <code class="docutils literal notranslate"><span 
class="pre">drivers/input/aw86225.c</span></code>,
 <code class="docutils literal notranslate"><span 
class="pre">drivers/analog/lmp92001.c</span></code>,
@@ -278,6 +294,240 @@ to make ioexpand compatible with normal gpio.</p></li>
 <code class="docutils literal notranslate"><span 
class="pre">boards/sim/sim/sim/src/sim_ioexpander.c</span></code>,
 <code class="docutils literal notranslate"><span 
class="pre">boards/arm/nrf52/thingy52/src/nrf52_sx1509.c</span></code> 
etc.</p></li>
 </ul>
+<section id="further-details">
+<h2>Further details<a class="headerlink" href="#further-details" 
title="Permalink to this heading"></a></h2>
+<section id="header-files">
+<h3>Header files<a class="headerlink" href="#header-files" title="Permalink to 
this heading"></a></h3>
+<p>The relevant header files are:</p>
+<ul class="simple">
+<li><dl class="simple">
+<dt><code class="docutils literal notranslate"><span 
class="pre">include/nuttx/ioexpander/ioexpander.h</span></code> — defines 
macros, types and access</dt><dd><p>macros used to interact with IO 
expanders.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt><code class="docutils literal notranslate"><span 
class="pre">include/nuttx/ioexpander/gpio.h</span></code> — provides the “gpio 
lower half” helper</dt><dd><p>that allows registering an IO expander pin as a 
standard GPIO device.</p>
+</dd>
+</dl>
+</li>
+</ul>
+</section>
+<section id="overview-of-key-macros-and-options">
+<h3>Overview of key macros and options<a class="headerlink" 
href="#overview-of-key-macros-and-options" title="Permalink to this 
heading"></a></h3>
+<p>The following is a concise reference of the important macros defined in the
+header. These are the options you will typically use through <code 
class="docutils literal notranslate"><span 
class="pre">IOEXP_SETOPTION</span></code>
+and the various access macros. The primary preprocessor definitions are
+listed below (C syntax):</p>
+<div class="highlight-c notranslate"><div 
class="highlight"><pre><span></span><span class="cm">/* Direction definitions 
*/</span>
+<span class="cp">#define IOEXPANDER_DIRECTION_IN            0  </span><span 
class="cm">/* float */</span>
+<span class="cp">#define IOEXPANDER_DIRECTION_IN_PULLUP     1</span>
+<span class="cp">#define IOEXPANDER_DIRECTION_IN_PULLDOWN   2</span>
+<span class="cp">#define IOEXPANDER_DIRECTION_OUT           3  </span><span 
class="cm">/* push-pull */</span>
+<span class="cp">#define IOEXPANDER_DIRECTION_OUT_OPENDRAIN 4</span>
+<span class="cp">#define IOEXPANDER_DIRECTION_OUT_LED       5  </span><span 
class="cm">/* LED output */</span>
+
+<span class="cm">/* Pinset mask helpers */</span>
+<span class="cp">#define IOEXPANDER_PINMASK  (((ioe_pinset_t)1 &lt;&lt; 
CONFIG_IOEXPANDER_NPINS) - 1)</span>
+<span class="cp">#define PINSET_ALL          (~((ioe_pinset_t)0))</span>
+
+<span class="cm">/* Common option values (used with IOEXP_SETOPTION) */</span>
+<span class="cm">/* Invert (active level) */</span>
+<span class="cp">#define IOEXPANDER_OPTION_INVERT      1</span>
+<span class="cp">#define IOEXPANDER_VAL_NORMAL         0  </span><span 
class="cm">/* normal polarity */</span>
+<span class="cp">#define IOEXPANDER_VAL_INVERT         1  </span><span 
class="cm">/* inverted polarity */</span>
+
+<span class="cm">/* Interrupt configuration (level/edge and 
high/low/rising/falling/both) */</span>
+<span class="cp">#define IOEXPANDER_OPTION_INTCFG      2</span>
+<span class="cp">#define IOEXPANDER_VAL_DISABLE        0  </span><span 
class="cm">/* 0000 disable interrupts */</span>
+<span class="cp">#define IOEXPANDER_VAL_LEVEL          1  </span><span 
class="cm">/* xx01: level triggered */</span>
+<span class="cp">#define IOEXPANDER_VAL_EDGE           2  </span><span 
class="cm">/* xx10: edge triggered */</span>
+<span class="cp">#define IOEXPANDER_VAL_HIGH           5  </span><span 
class="cm">/* 0101: high level */</span>
+<span class="cp">#define IOEXPANDER_VAL_LOW            9  </span><span 
class="cm">/* 1001: low level */</span>
+<span class="cp">#define IOEXPANDER_VAL_RISING         6  </span><span 
class="cm">/* 0110: rising edge */</span>
+<span class="cp">#define IOEXPANDER_VAL_FALLING        10 </span><span 
class="cm">/* 1010: falling edge */</span>
+<span class="cp">#define IOEXPANDER_VAL_BOTH           14 </span><span 
class="cm">/* 1110: both edges */</span>
+
+<span class="cm">/* LED configuration */</span>
+<span class="cp">#define IOEXPANDER_OPTION_LEDCFG      3  </span><span 
class="cm">/* assign an LED number to a pin */</span>
+
+<span class="cm">/* Non-generic (driver-specific) option */</span>
+<span class="cp">#define IOEXPANDER_OPTION_NONGENERIC  4  </span><span 
class="cm">/* pass driver-specific struct */</span>
+
+<span class="cm">/* Wakeup configuration (configure pin as SoC wake-up source) 
*/</span>
+<span class="cp">#define IOEXPANDER_OPTION_WAKEUPCFG   5</span>
+<span class="cp">#define IOEXPANDER_WAKEUP_DISABLE     0</span>
+<span class="cp">#define IOEXPANDER_WAKEUP_ENABLE      1</span>
+
+<span class="cm">/* Debounce and interrupt mask (recent additions) */</span>
+<span class="cp">#define IOEXPANDER_OPTION_SETDEBOUNCE 6  </span><span 
class="cm">/* configure debounce */</span>
+<span class="cp">#define IOEXPANDER_DEBOUNCE_DISABLE  0</span>
+<span class="cp">#define IOEXPANDER_DEBOUNCE_ENABLE   1</span>
+
+<span class="cp">#define IOEXPANDER_OPTION_SETMASK     7  </span><span 
class="cm">/* control interrupt masking */</span>
+<span class="cp">#define IOEXPANDER_MASK_DISABLE       0  </span><span 
class="cm">/* unmask (enable) interrupts */</span>
+<span class="cp">#define IOEXPANDER_MASK_ENABLE        1  </span><span 
class="cm">/* mask (suppress) interrupts */</span>
+</pre></div>
+</div>
+</section>
+<section id="access-macros-api">
+<h3>Access macros (API)<a class="headerlink" href="#access-macros-api" 
title="Permalink to this heading"></a></h3>
+<p>The header exposes a set of helper macros that dispatch to the underlying
+driver operations table (<code class="docutils literal notranslate"><span 
class="pre">struct</span> <span class="pre">ioexpander_ops_s</span></code>):</p>
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEXP_SETDIRECTION">
+<span class="sig-name descname"><span class="n"><span 
class="pre">IOEXP_SETDIRECTION</span></span></span><span 
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>, 
<span class="n"><span class="pre">pin</span></span>, <span class="n"><span 
class="pre">dir</span></span><span class="sig-paren">)</span><a 
class="headerlink" href="#c.IOEXP_SETDIRECTION" title="Permalink to this 
definition"></a><br /></dt>
+<dd><p>Set a pin direction (input, output, open-drain, LED, pull-up/down).
+Returns 0 on success or a negative errno on failure.</p>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEXP_SETOPTION">
+<span class="sig-name descname"><span class="n"><span 
class="pre">IOEXP_SETOPTION</span></span></span><span 
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>, 
<span class="n"><span class="pre">pin</span></span>, <span class="n"><span 
class="pre">opt</span></span>, <span class="n"><span 
class="pre">val</span></span><span class="sig-paren">)</span><a 
class="headerlink" href="#c.IOEXP_SETOPTION" title="Permalink to this 
definition"></a><br /></dt>
+<dd><p>Generic option setting interface used to configure the options listed
+above. Note that <code class="docutils literal notranslate"><span 
class="pre">val</span></code> is a <code class="docutils literal 
notranslate"><span class="pre">void</span> <span class="pre">*</span></code>; 
drivers may accept an integer
+casted to a pointer or a pointer to a driver-specific structure.</p>
+<p>Examples:</p>
+<div class="highlight-none notranslate"><div 
class="highlight"><pre><span></span>/* Invert pin polarity */
+IOEXP_SETOPTION(dev, 3, IOEXPANDER_OPTION_INVERT,
+                (FAR void *)IOEXPANDER_VAL_INVERT);
+
+/* Enable debounce on pin 2 */
+IOEXP_SETOPTION(dev, 2, IOEXPANDER_OPTION_SETDEBOUNCE,
+                (FAR void *)IOEXPANDER_DEBOUNCE_ENABLE);
+
+/* Mask interrupts for pin 5 */
+IOEXP_SETOPTION(dev, 5, IOEXPANDER_OPTION_SETMASK,
+                (FAR void *)IOEXPANDER_MASK_ENABLE);
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEXP_WRITEPIN">
+<span class="sig-name descname"><span class="n"><span 
class="pre">IOEXP_WRITEPIN</span></span></span><span 
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>, 
<span class="n"><span class="pre">pin</span></span>, <span class="n"><span 
class="pre">val</span></span><span class="sig-paren">)</span><a 
class="headerlink" href="#c.IOEXP_WRITEPIN" title="Permalink to this 
definition"></a><br /></dt>
+<dd><p>Set the pin level. Returns 0 on success or a negative errno on 
error.</p>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEXP_READPIN">
+<span class="sig-name descname"><span class="n"><span 
class="pre">IOEXP_READPIN</span></span></span><span 
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>, 
<span class="n"><span class="pre">pin</span></span>, <span class="n"><span 
class="pre">valptr</span></span><span class="sig-paren">)</span><a 
class="headerlink" href="#c.IOEXP_READPIN" title="Permalink to this 
definition"></a><br /></dt>
+<dd><p>Read the actual physical pin level. The value is returned via <code 
class="docutils literal notranslate"><span class="pre">valptr</span></code>.</p>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEXP_READBUF">
+<span class="sig-name descname"><span class="n"><span 
class="pre">IOEXP_READBUF</span></span></span><span 
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>, 
<span class="n"><span class="pre">pin</span></span>, <span class="n"><span 
class="pre">valptr</span></span><span class="sig-paren">)</span><a 
class="headerlink" href="#c.IOEXP_READBUF" title="Permalink to this 
definition"></a><br /></dt>
+<dd><p>Read the buffered/register value cached by the expander.</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span 
class="pre">IOEXP_WRITEPIN</span></code> sets the pin level (TRUE typically 
means high).
+Drivers handle polarity inversion if configured.</p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">IOEXP_READPIN</span></code> reads the actual physical pin 
level.</p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">IOEXP_READBUF</span></code> reads the buffered/register value 
cached by the
+expander.</p></li>
+</ul>
+</dd></dl>
+
+</section>
+<section id="multi-pin-operations">
+<h3>Multi-pin operations<a class="headerlink" href="#multi-pin-operations" 
title="Permalink to this heading"></a></h3>
+<p>When <code class="docutils literal notranslate"><span 
class="pre">CONFIG_IOEXPANDER_MULTIPIN</span></code> is enabled, batch 
operations are
+available that may be more efficient than repeated single-pin calls:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span 
class="pre">IOEXP_MULTIWRITEPIN(dev,</span> <span class="pre">pins,</span> 
<span class="pre">vals,</span> <span class="pre">count)</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">IOEXP_MULTIREADPIN(dev,</span> <span class="pre">pins,</span> <span 
class="pre">vals,</span> <span class="pre">count)</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">IOEXP_MULTIREADBUF(dev,</span> <span class="pre">pins,</span> <span 
class="pre">vals,</span> <span class="pre">count)</span></code></p></li>
+</ul>
+</section>
+<section id="interrupts-and-callbacks">
+<h3>Interrupts and callbacks<a class="headerlink" 
href="#interrupts-and-callbacks" title="Permalink to this heading"></a></h3>
+<p>If <code class="docutils literal notranslate"><span 
class="pre">CONFIG_IOEXPANDER_INT_ENABLE</span></code> is enabled the header 
defines the
+callback type and attach/detach helper macros. The callback signature
+is:</p>
+<div class="highlight-none notranslate"><div 
class="highlight"><pre><span></span>typedef CODE int (*ioe_callback_t)(FAR 
struct ioexpander_dev_s *dev,
+                                                    ioe_pinset_t pinset, FAR 
void *arg);
+</pre></div>
+</div>
+<p>The callback is invoked when events occur for the monitored pinset. The
+attach/detach helpers are provided as macros that dispatch to the lower-half
+driver when <code class="docutils literal notranslate"><span 
class="pre">CONFIG_IOEXPANDER_INT_ENABLE</span></code> is enabled:</p>
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEP_ATTACH">
+<span class="sig-name descname"><span class="n"><span 
class="pre">IOEP_ATTACH</span></span></span><span 
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>, 
<span class="n"><span class="pre">pinset</span></span>, <span class="n"><span 
class="pre">callback</span></span>, <span class="n"><span 
class="pre">arg</span></span><span class="sig-paren">)</span><a 
class="headerlink" href="#c.IOEP_ATTACH" title="Permalink to this 
definition"></a><br /></dt>
+<dd><p>Attach and enable a pin interrupt callback. Returns a non-NULL opaque
+handle on success. <code class="docutils literal notranslate"><span 
class="pre">pinset</span></code> selects which pin(s) will generate the
+callback; <code class="docutils literal notranslate"><span 
class="pre">callback</span></code> is a function of type <code class="docutils 
literal notranslate"><span class="pre">ioe_callback_t</span></code> and
+<code class="docutils literal notranslate"><span class="pre">arg</span></code> 
is passed through to the callback.</p>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEP_DETACH">
+<span class="sig-name descname"><span class="n"><span 
class="pre">IOEP_DETACH</span></span></span><span 
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>, 
<span class="n"><span class="pre">handle</span></span><span 
class="sig-paren">)</span><a class="headerlink" href="#c.IOEP_DETACH" 
title="Permalink to this definition"></a><br /></dt>
+<dd><p>Detach and disable a previously attached callback referenced by <code 
class="docutils literal notranslate"><span class="pre">handle</span></code>.</p>
+</dd></dl>
+
+<p>Note: when <code class="docutils literal notranslate"><span 
class="pre">CONFIG_IOEXPANDER_NPINS</span></code> &gt; 64, <code 
class="docutils literal notranslate"><span 
class="pre">ioe_pinset_t</span></code> represents a
+single interrupt pin number rather than a bitmask.</p>
+</section>
+<section id="driver-interface-lower-half">
+<h3>Driver interface (lower-half)<a class="headerlink" 
href="#driver-interface-lower-half" title="Permalink to this heading"></a></h3>
+<p>Each IO expander driver must implement the operations table
+<code class="docutils literal notranslate"><span class="pre">struct</span> 
<span class="pre">ioexpander_ops_s</span></code>. At minimum the driver should 
provide:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span 
class="pre">ioe_direction</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">ioe_option</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">ioe_writepin</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">ioe_readpin</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">ioe_readbuf</span></code></p></li>
+</ul>
+<p>Optional multi-pin and interrupt attach/detach methods should be provided
+when the corresponding configuration options are enabled.</p>
+</section>
+<section id="binding-to-the-upper-layer-gpio-lower-half">
+<h3>Binding to the upper layer (gpio_lower_half)<a class="headerlink" 
href="#binding-to-the-upper-layer-gpio-lower-half" title="Permalink to this 
heading"></a></h3>
+<p>Applications normally do not access IO expander drivers directly. Typical
+binding steps are:</p>
+<ol class="arabic simple">
+<li><dl class="simple">
+<dt>Obtain the bus instance (for example, <code class="docutils literal 
notranslate"><span class="pre">struct</span> <span 
class="pre">i2c_master_s</span> <span class="pre">*</span></code>) 
from</dt><dd><p>the hardware-specific bus driver.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt>Call the expander driver’s initialization routine with the bus 
instance</dt><dd><p>and device configuration to obtain a <code class="docutils 
literal notranslate"><span class="pre">struct</span> <span 
class="pre">ioexpander_dev_s</span> <span class="pre">*</span></code>.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt>Use the returned <code class="docutils literal notranslate"><span 
class="pre">ioe</span></code> instance directly, or register 
individual</dt><dd><p>expander pins as standard GPIO devices via <code 
class="docutils literal notranslate"><span 
class="pre">gpio_lower_half</span></code> or
+<code class="docutils literal notranslate"><span 
class="pre">gpio_lower_half_byname</span></code>.</p>
+</dd>
+</dl>
+</li>
+</ol>
+<p>Example (pseudocode):</p>
+<div class="highlight-none notranslate"><div 
class="highlight"><pre><span></span>/* Get the I2C bus */
+struct i2c_master_s *i2c = up_i2cinitialize(0);
+
+/* Initialize the expander (driver-specific init) */
+struct ioexpander_dev_s *ioe = pca9555_initialize(i2c, CONFIG_PCA9555_ADDR);
+
+/* Configure pin 0 as input with pull-up and enable debounce */
+IOEXP_SETDIRECTION(ioe, 0, IOEXPANDER_DIRECTION_IN_PULLUP);
+IOEXP_SETOPTION(ioe, 0, IOEXPANDER_OPTION_SETDEBOUNCE,
+                        (FAR void *)IOEXPANDER_DEBOUNCE_ENABLE);
+</pre></div>
+</div>
+</section>
+<section id="examples-and-references">
+<h3>Examples and references<a class="headerlink" 
href="#examples-and-references" title="Permalink to this heading"></a></h3>
+<p>See the following drivers and board examples for concrete usage:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span 
class="pre">drivers/ioexpander/pca9555.c</span></code> — I2C IO expander 
implementation.</p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">drivers/ioexpander/ioe_rpmsg.c</span></code> — RPMSG-based IO 
expander.</p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">boards/arm/nrf52/thingy52/src/nrf52_sx1509.c</span></code> — 
binding example.</p></li>
+</ul>
+</section>
+</section>
 </section>
 
 
diff --git a/content/docs/latest/genindex.html 
b/content/docs/latest/genindex.html
index 47da59947d..d9d5f9c651 100644
--- a/content/docs/latest/genindex.html
+++ b/content/docs/latest/genindex.html
@@ -595,7 +595,7 @@
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="reference/os/time_clock.html#c.hrtimer_cb">hrtimer_cb (C 
type)</a>
+      <li><a 
href="reference/os/time_clock.html#c.hrtimer_entry_t">hrtimer_entry_t (C 
type)</a>
 </li>
       <li><a href="reference/os/time_clock.html#c.hrtimer_init">hrtimer_init 
(C function)</a>
 </li>
@@ -653,8 +653,6 @@
 </li>
       <li><a href="reference/os/iob.html#c.iob_dump">iob_dump (C function)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="reference/os/iob.html#c.iob_free">iob_free (C function)</a>
 </li>
       <li><a href="reference/os/iob.html#c.iob_free_chain">iob_free_chain (C 
function)</a>
@@ -663,6 +661,8 @@
 </li>
       <li><a 
href="reference/os/iob.html#c.iob_free_queue_qentry">iob_free_queue_qentry (C 
function)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a 
href="reference/os/iob.html#c.iob_get_queue_size">iob_get_queue_size (C 
function)</a>
 </li>
       <li><a href="reference/os/iob.html#c.iob_initialize">iob_initialize (C 
function)</a>
@@ -688,6 +688,20 @@
       <li><a href="glossary.html#term-IOCTL"><strong>IOCTL</strong></a>
 </li>
       <li><a href="components/filesystem/index.html#c.ioctl">ioctl (C 
function)</a>, <a href="reference/user/10_filesystem.html#c.ioctl">[1]</a>
+</li>
+      <li><a 
href="components/drivers/special/ioexpander.html#c.IOEP_ATTACH">IOEP_ATTACH (C 
macro)</a>
+</li>
+      <li><a 
href="components/drivers/special/ioexpander.html#c.IOEP_DETACH">IOEP_DETACH (C 
macro)</a>
+</li>
+      <li><a 
href="components/drivers/special/ioexpander.html#c.IOEXP_READBUF">IOEXP_READBUF 
(C macro)</a>
+</li>
+      <li><a 
href="components/drivers/special/ioexpander.html#c.IOEXP_READPIN">IOEXP_READPIN 
(C macro)</a>
+</li>
+      <li><a 
href="components/drivers/special/ioexpander.html#c.IOEXP_SETDIRECTION">IOEXP_SETDIRECTION
 (C macro)</a>
+</li>
+      <li><a 
href="components/drivers/special/ioexpander.html#c.IOEXP_SETOPTION">IOEXP_SETOPTION
 (C macro)</a>
+</li>
+      <li><a 
href="components/drivers/special/ioexpander.html#c.IOEXP_WRITEPIN">IOEXP_WRITEPIN
 (C macro)</a>
 </li>
       <li><a href="glossary.html#term-IoT"><strong>IoT</strong></a>
 </li>
@@ -1086,11 +1100,11 @@
       <li><a href="components/nxgraphics/nx.html#c.nx_kbdchin">nx_kbdchin (C 
function)</a>
 </li>
       <li><a href="components/nxgraphics/nx.html#c.nx_kbdin">nx_kbdin (C 
function)</a>
-</li>
-      <li><a href="components/nxgraphics/nx.html#c.nx_lower">nx_lower (C 
function)</a>
 </li>
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="components/nxgraphics/nx.html#c.nx_lower">nx_lower (C 
function)</a>
+</li>
       <li><a href="components/nxgraphics/nx.html#c.nx_modal">nx_modal (C 
function)</a>
 </li>
       <li><a href="components/nxgraphics/nx.html#c.nx_mousein">nx_mousein (C 
function)</a>
@@ -1270,8 +1284,6 @@
       <li><a 
href="reference/os/nuttx.html#c.nxsched_process_timer">nxsched_process_timer (C 
function)</a>
 </li>
       <li><a href="reference/os/sleep.html#c.nxsched_sleep">nxsched_sleep (C 
function)</a>
-</li>
-      <li><a 
href="reference/os/nuttx.html#c.nxsched_tick_expiration">nxsched_tick_expiration
 (C function)</a>
 </li>
       <li><a 
href="reference/os/sleep.html#c.nxsched_ticksleep">nxsched_ticksleep (C 
function)</a>
 </li>
@@ -2136,10 +2148,6 @@
       <li><a href="reference/os/time_clock.html#c.wd_cancel">wd_cancel (C 
function)</a>
 </li>
       <li><a href="reference/os/time_clock.html#c.wd_gettime">wd_gettime (C 
function)</a>
-</li>
-      <li><a href="reference/os/time_clock.html#c.wd_restart">wd_restart (C 
function)</a>
-</li>
-      <li><a 
href="reference/os/time_clock.html#c.wd_restart_next">wd_restart_next (C 
function)</a>
 </li>
       <li><a href="reference/os/time_clock.html#c.wd_start">wd_start (C 
function)</a>
 </li>
@@ -2149,10 +2157,10 @@
 </li>
       <li><a 
href="components/drivers/character/timers/watchdog.html#c.WDIOC_CAPTURE">WDIOC_CAPTURE
 (C macro)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a 
href="components/drivers/character/timers/watchdog.html#c.WDIOC_GETSTATUS">WDIOC_GETSTATUS
 (C macro)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a 
href="components/drivers/character/timers/watchdog.html#c.WDIOC_KEEPALIVE">WDIOC_KEEPALIVE
 (C macro)</a>
 </li>
       <li><a 
href="components/drivers/character/timers/watchdog.html#c.WDIOC_SETTIMEOUT">WDIOC_SETTIMEOUT
 (C macro)</a>
diff --git a/content/docs/latest/guides/fully_linked_elf.html 
b/content/docs/latest/guides/fully_linked_elf.html
index 7b91b32530..8a870be192 100644
--- a/content/docs/latest/guides/fully_linked_elf.html
+++ b/content/docs/latest/guides/fully_linked_elf.html
@@ -482,7 +482,7 @@ NuttX package: <code class="docutils literal 
notranslate"><span class="pre">nutt
 <div 
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version 
admonition">
 <p class="admonition-title">Here is an alternative minimal (and possibly 
outdated) version</p>
 <div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input" 
id="adfee87c-0960-4d45-aa46-40f4a2ec0826" 
name="adfee87c-0960-4d45-aa46-40f4a2ec0826" type="checkbox"><label 
class="sphinx_collapse__label" for="adfee87c-0960-4d45-aa46-40f4a2ec0826"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input" 
id="79b9ff92-53f3-4b1c-b796-61fe7ae12359" 
name="79b9ff92-53f3-4b1c-b796-61fe7ae12359" type="checkbox"><label 
class="sphinx_collapse__label" for="79b9ff92-53f3-4b1c-b796-61fe7ae12359"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
 <div class="highlight-text notranslate"><div 
class="highlight"><pre><span></span>SECTIONS
 {
 .text 0x00000000 :
diff --git a/content/docs/latest/guides/partially_linked_elf.html 
b/content/docs/latest/guides/partially_linked_elf.html
index 215504f0ce..8959265987 100644
--- a/content/docs/latest/guides/partially_linked_elf.html
+++ b/content/docs/latest/guides/partially_linked_elf.html
@@ -508,7 +508,7 @@ NuttX package: <code class="docutils literal 
notranslate"><span class="pre">nutt
 <div 
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version 
admonition">
 <p class="admonition-title">Here is an alternative minimal (and possibly 
outdated) version</p>
 <div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input" 
id="50df57df-e074-4295-8a2e-e286d337fe1e" 
name="50df57df-e074-4295-8a2e-e286d337fe1e" type="checkbox"><label 
class="sphinx_collapse__label" for="50df57df-e074-4295-8a2e-e286d337fe1e"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input" 
id="2e4458a3-ff35-47ea-9832-2b1505000edb" 
name="2e4458a3-ff35-47ea-9832-2b1505000edb" type="checkbox"><label 
class="sphinx_collapse__label" for="2e4458a3-ff35-47ea-9832-2b1505000edb"><i 
class="sphinx_collapse__icon"></i>Show content:</label><div 
class="sphinx_collapse__content docutils">
 <div class="highlight-text notranslate"><div 
class="highlight"><pre><span></span>SECTIONS
 {
 .text 0x00000000 :
diff --git a/content/docs/latest/index.html b/content/docs/latest/index.html
index f72ef61e21..275cf84c6b 100644
--- a/content/docs/latest/index.html
+++ b/content/docs/latest/index.html
@@ -191,7 +191,7 @@ standards. Additional standard APIs from Unix and other 
common RTOS’s (such as
 VxWorks) are adopted for functionality not available under these standards, or
 for functionality that is not appropriate for deeply-embedded environments 
(such
 as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:33</p>
+<p>Last Updated: 14 January 26 at 00:34</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/latest/objects.inv b/content/docs/latest/objects.inv
index b334592619..a1032d1eb5 100644
Binary files a/content/docs/latest/objects.inv and 
b/content/docs/latest/objects.inv differ
diff --git a/content/docs/latest/reference/os/nuttx.html 
b/content/docs/latest/reference/os/nuttx.html
index eef2b9fab0..b278e73331 100644
--- a/content/docs/latest/reference/os/nuttx.html
+++ b/content/docs/latest/reference/os/nuttx.html
@@ -224,17 +224,6 @@ periodically – the calling interval must be
 <code class="docutils literal notranslate"><span 
class="pre">CONFIG_USEC_PER_TICK</span></code>.</p>
 </dd></dl>
 
-<dl class="c function">
-<dt class="sig sig-object c" id="c.nxsched_tick_expiration">
-<span class="kt"><span class="pre">void</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">nxsched_tick_expiration</span></span></span><span 
class="sig-paren">(</span><span class="kt"><span 
class="pre">void</span></span><span class="sig-paren">)</span><a 
class="headerlink" href="#c.nxsched_tick_expiration" title="Permalink to this 
definition"></a><br /></dt>
-<dd><p>Description: if <code class="docutils literal notranslate"><span 
class="pre">CONFIG_SCHED_TICKLESS</span></code> is defined, then this
-function is provided by the RTOS base code and called from
-platform-specific code when the interval timer used to implemented
-the tick-less OS expires.</p>
-<p><strong>Assumptions</strong>: Base code implementation assumes that this
-function is called from interrupt handling logic with interrupts disabled.</p>
-</dd></dl>
-
 <dl class="c function">
 <dt class="sig sig-object c" id="c.irq_dispatch">
 <span class="kt"><span class="pre">void</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">irq_dispatch</span></span></span><span 
class="sig-paren">(</span><span class="kt"><span 
class="pre">int</span></span><span class="w"> </span><span class="n"><span 
class="pre">irq</span></span>, <span class="pre">FAR</span><span class="w"> 
</span><span class="kt"><span class="pre">void</span></span><span class="w"> 
</span><span class="p"><span clas [...]
diff --git a/content/docs/latest/reference/os/time_clock.html 
b/content/docs/latest/reference/os/time_clock.html
index 21f5c8e053..00623555fc 100644
--- a/content/docs/latest/reference/os/time_clock.html
+++ b/content/docs/latest/reference/os/time_clock.html
@@ -562,7 +562,7 @@ and a free-running counter with the same timer!</p>
 following interfaces for use by the platform-specific interval
 timer implementation:</p>
 <ul class="simple">
-<li><p><code class="docutils literal notranslate"><span 
class="pre">nxsched_tick_expiration()</span></code>: called by the 
platform-specific logic when the interval time expires.</p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">nxsched_process_timer()</span></code>: called by the 
platform-specific logic when the interval time expires.</p></li>
 </ul>
 <dl class="c function">
 <dt class="sig sig-object c" id="c.archname_timer_initialize">
@@ -612,7 +612,7 @@ order to assure atomic register operations.</p>
 <span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">up_alarm_cancel</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><a class="reference internal" href="../user/structures.html#c.timespec" 
title="timespec"><span class="n"><span 
class="pre">timespec</span></span></a><sp [...]
 <dd><p>Cancel the alarm and return the time of cancellation of the alarm.
 These two steps need to be as nearly atomic as possible.
-<code class="docutils literal notranslate"><span 
class="pre">nxsched_tick_expiration()</span></code> will not be called unless 
the alarm
+<code class="docutils literal notranslate"><span 
class="pre">nxsched_process_timer()</span></code> will not be called unless the 
alarm
 is restarted with <code class="docutils literal notranslate"><span 
class="pre">up_alarm_start()</span></code>. If, as a race condition,
 the alarm has already expired when this function is called, then
 time returned is the current time.</p>
@@ -636,7 +636,7 @@ internally to assure non-reentrancy.</p>
 <dl class="c function">
 <dt class="sig sig-object c" id="c.up_alarm_start">
 <span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">up_alarm_start</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">const</span></span><span class="w"> 
</span><span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><a class="reference internal" href="../user/structures.html#c.timespec" 
titl [...]
-<dd><p>Start the alarm. <code class="docutils literal notranslate"><span 
class="pre">nxsched_tick_expiration()</span></code> will be called
+<dd><p>Start the alarm. <code class="docutils literal notranslate"><span 
class="pre">nxsched_process_timer()</span></code> will be called
 when the alarm occurs (unless <code class="docutils literal notranslate"><span 
class="pre">up_alarm_cancel</span></code> is called to
 stop it).</p>
 <dl class="field-list simple">
@@ -644,7 +644,7 @@ stop it).</p>
 <dd class="field-odd"><ul class="simple">
 <li><p><strong>ts</strong> – The time in the future at the alarm is expected to
 occur. When the alarm occurs the timer logic will call
-<code class="docutils literal notranslate"><span 
class="pre">nxsched_tick_expiration()</span></code>.</p></li>
+<code class="docutils literal notranslate"><span 
class="pre">nxsched_process_timer()</span></code>.</p></li>
 </ul>
 </dd>
 <dt class="field-even">Returns<span class="colon">:</span></dt>
@@ -663,11 +663,11 @@ disabled internally to assure non-reentrancy.</p>
 
 <p>Cancel the interval timer and return the time remaining on the
 timer. These two steps need to be as nearly atomic as possible.
-<code class="docutils literal notranslate"><span 
class="pre">nxsched_tick_expiration()</span></code> will not be called unless 
the timer
+<code class="docutils literal notranslate"><span 
class="pre">nxsched_process_timer()</span></code> will not be called unless the 
timer
 is restarted with <code class="docutils literal notranslate"><span 
class="pre">up_timer_start()</span></code>. If, as a race condition,
 the timer has already expired when this function is called, then
 that pending interrupt must be cleared so that
-<code class="docutils literal notranslate"><span 
class="pre">nxsched_tick_expiration()</span></code> is not called spuriously 
and the
+<code class="docutils literal notranslate"><span 
class="pre">nxsched_process_timer()</span></code> is not called spuriously and 
the
 remaining time of zero should be returned.</p>
 <dl class="field-list simple">
 <dt class="field-odd">param ts<span class="colon">:</span></dt>
@@ -686,13 +686,13 @@ disabled internally to assure non-reentrancy.</p>
 <span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">up_timer_start</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">const</span></span><span class="w"> 
</span><span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><a class="reference internal" href="../user/structures.html#c.timespec" 
titl [...]
 <dd></dd></dl>
 
-<p>Start the interval timer. <code class="docutils literal notranslate"><span 
class="pre">nxsched_tick_expiration()</span></code> will be
+<p>Start the interval timer. <code class="docutils literal notranslate"><span 
class="pre">nxsched_process_timer()</span></code> will be
 called at the completion of the timeout (unless
 <code class="docutils literal notranslate"><span 
class="pre">up_timer_cancel()</span></code> is called to stop the timing).</p>
 <dl class="field-list simple">
 <dt class="field-odd">param ts<span class="colon">:</span></dt>
 <dd class="field-odd"><p>Provides the time interval until
-<code class="docutils literal notranslate"><span 
class="pre">nxsched_tick_expiration()</span></code> is called.</p>
+<code class="docutils literal notranslate"><span 
class="pre">nxsched_process_timer()</span></code> is called.</p>
 </dd>
 <dt class="field-even">return<span class="colon">:</span></dt>
 <dd class="field-even"><p>Zero (OK) on success; a negated errno value on 
failure.</p>
@@ -716,8 +716,8 @@ or <code class="docutils literal notranslate"><span 
class="pre">kill()</span></c
 <ul class="simple">
 <li><p><a class="reference internal" href="#c.wd_start" title="wd_start"><code 
class="xref c c-func docutils literal notranslate"><span 
class="pre">wd_start()</span></code></a></p></li>
 <li><p><a class="reference internal" href="#c.wd_start_next" 
title="wd_start_next"><code class="xref c c-func docutils literal 
notranslate"><span class="pre">wd_start_next()</span></code></a></p></li>
-<li><p><a class="reference internal" href="#c.wd_restart" 
title="wd_restart"><code class="xref c c-func docutils literal 
notranslate"><span class="pre">wd_restart()</span></code></a></p></li>
-<li><p><a class="reference internal" href="#c.wd_restart_next" 
title="wd_restart_next"><code class="xref c c-func docutils literal 
notranslate"><span class="pre">wd_restart_next()</span></code></a></p></li>
+<li><p><code class="xref c c-func docutils literal notranslate"><span 
class="pre">wd_restart()</span></code></p></li>
+<li><p><code class="xref c c-func docutils literal notranslate"><span 
class="pre">wd_restart_next()</span></code></p></li>
 <li><p><a class="reference internal" href="#c.wd_cancel" 
title="wd_cancel"><code class="xref c c-func docutils literal 
notranslate"><span class="pre">wd_cancel()</span></code></a></p></li>
 <li><p><a class="reference internal" href="#c.wd_gettime" 
title="wd_gettime"><code class="xref c c-func docutils literal 
notranslate"><span class="pre">wd_gettime()</span></code></a></p></li>
 <li><p>Watchdog Timer Callback</p></li>
@@ -801,58 +801,6 @@ context of the timer interrupt handler and is subject to 
all ISR
 restrictions.</p>
 </dd></dl>
 
-<dl class="c function">
-<dt class="sig sig-object c" id="c.wd_restart">
-<span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">wd_restart</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><span class="n"><span class="pre">wdog_s</span></span><span class="w"> 
</span><span class="p"><span class="pre">*</span></span><span class="n"><span 
class="p [...]
-<dd><p>This function restarts the specified watchdog timer using the same
-function and argument that were specified in the previous wd_start()
-call, but with a new delay value. It can be used when the user wants
-to restart the same watchdog with a different timeout value, or to
-refresh (feed) an existing watchdog before it expires.</p>
-<dl class="field-list simple">
-<dt class="field-odd">Parameters<span class="colon">:</span></dt>
-<dd class="field-odd"><ul class="simple">
-<li><p><strong>wdog</strong> – Pointer to the watchdog timer to 
restart</p></li>
-<li><p><strong>delay</strong> – Delay count in clock ticks</p></li>
-</ul>
-</dd>
-</dl>
-<p><strong>NOTE</strong>: The parameter must be of type <code class="docutils 
literal notranslate"><span class="pre">wdparm_t</span></code>.</p>
-<dl class="field-list simple">
-<dt class="field-odd">Returns<span class="colon">:</span></dt>
-<dd class="field-odd"><p>Zero (<code class="docutils literal 
notranslate"><span class="pre">OK</span></code>) is returned on success; a 
negated <code class="docutils literal notranslate"><span 
class="pre">errno</span></code> value
-is return to indicate the nature of any failure.</p>
-</dd>
-</dl>
-</dd></dl>
-
-<dl class="c function">
-<dt class="sig sig-object c" id="c.wd_restart_next">
-<span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">wd_restart_next</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><span class="n"><span class="pre">wdog_s</span></span><span class="w"> 
</span><span class="p"><span class="pre">*</span></span><span class="n"><span 
cla [...]
-<dd><p>This function restarts the specified watchdog timer using a new delay
-value, but schedules the next expiration based on the previous
-expiration time (wdog-&gt;expired + delay).  This allows the watchdog to
-maintain a consistent periodic interval even if there is some delay in
-handling the expiration callback.</p>
-<p>It can be used when the user wants to restart a watchdog for a different
-purpose or continue periodic timing based on the previous timeout point.</p>
-<dl class="field-list simple">
-<dt class="field-odd">Parameters<span class="colon">:</span></dt>
-<dd class="field-odd"><ul class="simple">
-<li><p><strong>wdog</strong> – Pointer to the watchdog timer to 
restart</p></li>
-<li><p><strong>delay</strong> – Delay count in clock ticks</p></li>
-</ul>
-</dd>
-</dl>
-<p><strong>NOTE</strong>: The parameter must be of type <code class="docutils 
literal notranslate"><span class="pre">wdparm_t</span></code>.</p>
-<dl class="field-list simple">
-<dt class="field-odd">Returns<span class="colon">:</span></dt>
-<dd class="field-odd"><p>Zero (<code class="docutils literal 
notranslate"><span class="pre">OK</span></code>) is returned on success; a 
negated <code class="docutils literal notranslate"><span 
class="pre">errno</span></code> value
-is return to indicate the nature of any failure.</p>
-</dd>
-</dl>
-</dd></dl>
-
 <dl class="c function">
 <dt class="sig sig-object c" id="c.wd_cancel">
 <span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">wd_cancel</span></span></span><span class="sig-paren">(</span><span 
class="pre">FAR</span><span class="w"> </span><span class="k"><span 
class="pre">struct</span></span><span class="w"> </span><span class="n"><span 
class="pre">wdog_s</span></span><span class="w"> </span><span class="p"><span 
class="pre">*</span></span><span class="n"><span class="pr [...]
@@ -1024,12 +972,13 @@ transitioned to HRTIMER_STATE_INACTIVE.</p>
 
 <dl class="c function">
 <dt class="sig sig-object c" id="c.hrtimer_start">
-<span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">hrtimer_start</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="n"><span class="pre">hrtimer_t</span></span><span 
class="w"> </span><span class="p"><span class="pre">*</span></span><span 
class="n"><span class="pre">hrtimer</span></span>, <span class="n"><span 
class="pre">uint64_t</s [...]
+<span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">hrtimer_start</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="n"><span class="pre">hrtimer_t</span></span><span 
class="w"> </span><span class="p"><span class="pre">*</span></span><span 
class="n"><span class="pre">hrtimer</span></span>, <a class="reference 
internal" href="#c.hrtime [...]
 <dd><p>This function starts a high-resolution timer in absolute or relative 
mode.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Parameters<span class="colon">:</span></dt>
 <dd class="field-odd"><ul class="simple">
 <li><p><strong>hrtimer</strong> – Timer instance to cancel</p></li>
+<li><p><strong>func</strong> – Expiration callback function</p></li>
 <li><p><strong>ns</strong> – Timer expiration in nanoseconds (absolute or 
relative)</p></li>
 <li><p><strong>mode</strong> – HRTIMER_MODE_ABS or HRTIMER_MODE_REL</p></li>
 </ul>
@@ -1042,8 +991,8 @@ transitioned to HRTIMER_STATE_INACTIVE.</p>
 </dd></dl>
 
 <dl class="c type">
-<dt class="sig sig-object c" id="c.hrtimer_cb">
-<span class="k"><span class="pre">typedef</span></span><span class="w"> 
</span><span class="n"><span class="pre">uint64_t</span></span><span class="w"> 
</span><span class="p"><span class="pre">(</span></span><span class="p"><span 
class="pre">*</span></span><span class="sig-name descname"><span 
class="n"><span class="pre">hrtimer_cb</span></span></span><span 
class="p"><span class="pre">)</span></span><span class="p"><span 
class="pre">(</span></span><span class="pre">FAR</span><span class= [...]
+<dt class="sig sig-object c" id="c.hrtimer_entry_t">
+<span class="k"><span class="pre">typedef</span></span><span class="w"> 
</span><span class="n"><span class="pre">uint64_t</span></span><span class="w"> 
</span><span class="p"><span class="pre">(</span></span><span class="p"><span 
class="pre">*</span></span><span class="sig-name descname"><span 
class="n"><span class="pre">hrtimer_entry_t</span></span></span><span 
class="p"><span class="pre">)</span></span><span class="p"><span 
class="pre">(</span></span><span class="pre">FAR</span><span c [...]
 <dd><p><strong>High-resolution Timer Callback</strong>: when a hrtimer expires,
 the callback function with this type is called.</p>
 </dd></dl>
diff --git a/content/docs/latest/searchindex.js 
b/content/docs/latest/searchindex.js
index 59d2e41aec..49edc4f6dc 100644
--- a/content/docs/latest/searchindex.js
+++ b/content/docs/latest/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr", 
"_tags/arch-example", "_tags/arch-renesas", "_tags/arch-risc-v", 
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64", 
"_tags/chip-at32uc3", "_tags/chip-at90usb", "_tags/chip-atmega", 
"_tags/chip-atmega128", "_tags/chip-atmega1284p", "_tags/chip-atmega2560", 
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32-c3", 
"_tags/chip-esp32a1s", "_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/c 
[...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr", 
"_tags/arch-example", "_tags/arch-renesas", "_tags/arch-risc-v", 
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64", 
"_tags/chip-at32uc3", "_tags/chip-at90usb", "_tags/chip-atmega", 
"_tags/chip-atmega128", "_tags/chip-atmega1284p", "_tags/chip-atmega2560", 
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32-c3", 
"_tags/chip-esp32a1s", "_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/c 
[...]
\ No newline at end of file
diff --git a/content/feed.xml b/content/feed.xml
index a014fb13b6..6a87e18f2b 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -5,8 +5,8 @@
     <description></description>
     <link>/</link>
     <atom:link href="/feed.xml" rel="self" type="application/rss+xml"/>
-    <pubDate>Tue, 13 Jan 2026 00:36:13 +0000</pubDate>
-    <lastBuildDate>Tue, 13 Jan 2026 00:36:13 +0000</lastBuildDate>
+    <pubDate>Wed, 14 Jan 2026 00:37:16 +0000</pubDate>
+    <lastBuildDate>Wed, 14 Jan 2026 00:37:16 +0000</lastBuildDate>
     <generator>Jekyll v4.4.1</generator>
     
       <item>

Reply via email to