diff --git a/docs/Doxyfile b/docs/Doxyfile
index 582fcc532..fc3f3f1f6 100644
--- a/docs/Doxyfile
+++ b/docs/Doxyfile
@@ -84,7 +84,7 @@ WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
-INPUT = ../src/include ../src/templates ../src ../docs/ch.txt ../src/lib ../ports/ARM7 ../ports/ARMCM3
+INPUT = ../src/include ../src/templates ../src ../docs/ch.txt ../src/lib ../ports/ARM7 ../ports/ARMCM3 ../ports/MSP430
INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py *.ddf
RECURSIVE = YES
diff --git a/docs/ch.txt b/docs/ch.txt
index fc475ec95..d61a735ce 100644
--- a/docs/ch.txt
+++ b/docs/ch.txt
@@ -328,40 +328,6 @@
*/
/** @} */
-/**
- * @defgroup MSP430 MSP430
- * @{
- *
- * Notes about the MSP430 port:
- *
- *
- * - The MSP430 does not have a dedicated interrupt stack, make sure to reserve
- * enough stack space for interrupts in each thread stack. This can be done
- * by modifying the @p INT_REQUIRED_STACK macro into
- * ./ports/MSP430/chcore.h.
- *
- * @ingroup Ports
- */
-/** @} */
-
-/**
- * @defgroup MSP430CONF Configuration Options
- * @{
- *
- * The MSP430 port allows some architecture-specific configurations settings
- * that can be specified externally, as example on the compiler command line:
- *
- * - @p INT_REQUIRED_STACK, this value represent the amount of stack space
- * used by the interrupt handlers.
- * The default for this value is @p 32, this space is allocated for each
- * thread so be careful in order to not waste precious RAM space.
- * The default value is set into ./ports/MSP430/chcore.h.
- *
- *
- * @ingroup MSP430
- */
-/** @} */
-
/**
* @defgroup Kernel Kernel
* @{
diff --git a/ports/MSP430/port.dox b/ports/MSP430/port.dox
new file mode 100644
index 000000000..d35317c75
--- /dev/null
+++ b/ports/MSP430/port.dox
@@ -0,0 +1,64 @@
+/**
+ * @defgroup MSP430 MSP430
+ * @{
+ * @details MSP430 port details. This section how the ChibiOS/RT features are
+ * implemented on this architecture.
+ *
+ * @section MSP430_STATES Mapping of the System States in the MSP430 port
+ * The ChibiOS/RT logical @ref system_states are mapped as follow in the MSP430
+ * port:
+ * - Initialization. This state is represented by the startup code and
+ * the initialization code before @p chSysInit() is executed. It has not a
+ * special hardware state associated.
+ * - Normal. This is the state the system has after executing
+ * @p chSysInit(). Interrupts are enabled.
+ * - Suspended. Interrupts are disabled.
+ * - Disabled. Interrupts are enabled. This state is equivalent to the
+ * Suspended state because there are no fast interrupts in this architecture.
+ * - Sleep. Not yet implemented.
+ * - S-Locked. Interrupts are disabled.
+ * - I-Locked. This state is equivalent to the SRI state, the
+ * @p chSysLockI() and @p chSysUnlockI() APIs do nothing (still use them in
+ * order to formally change state because this may change).
+ * - Serving Regular Interrupt. Normal interrupt service code.
+ * - Serving Fast Interrupt. Not present in this architecture.
+ * - Serving Non-Maskable Interrupt. Not present in this architecture.
+ * - Halted. Implemented as an infinite loop with interrupts disabled.
+ *
+ * @section MSP430_NOTES The MSP430 port notes
+ * - The MSP430 does not have a dedicated interrupt stack, make sure to reserve
+ * enough stack space for interrupts in each thread stack. This can be done
+ * by modifying the @p INT_REQUIRED_STACK macro into
+ * ./ports/MSP430/chcore.h.
+ *
+ * @ingroup Ports
+ */
+/** @} */
+
+/**
+ * @defgroup MSP430_CONF Configuration Options
+ * @{
+ * @brief MSP430 Configuration Options.
+ * The MSP430 port allows some architecture-specific configurations settings
+ * that can be specified externally, as example on the compiler command line:
+ * - @p INT_REQUIRED_STACK, this value represent the amount of stack space
+ * used by the interrupt handlers.
+ * The default for this value is @p 32, this space is allocated for each
+ * thread so be careful in order to not waste precious RAM space.
+ * The default value is set into ./ports/MSP430/chcore.h.
+ *
+ * @ingroup MSP430
+ */
+/** @} */
+
+/**
+ * @defgroup MSP430_CORE MSP430 Core Implementation
+ * @{
+ * @brief MSP430 specific port code, structures and macros.
+ *
+ * @ingroup MSP430
+ * @file ports/MSP430/chtypes.h Port types.
+ * @file ports/MSP430/chcore.h Port related structures and macros.
+ * @file ports/MSP430/chcore.c Port related code.
+ */
+/** @} */