summaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx')
-rw-r--r--nuttx/Documentation/NuttxUserGuide.html109
-rwxr-xr-xnuttx/configs/stm3210e-eval/RIDE/defconfig7
-rw-r--r--nuttx/configs/stm3210e-eval/buttons/defconfig7
-rwxr-xr-xnuttx/configs/stm3210e-eval/nsh/defconfig7
-rw-r--r--nuttx/configs/stm3210e-eval/nsh2/defconfig7
-rw-r--r--nuttx/configs/stm3210e-eval/nx/defconfig7
-rw-r--r--nuttx/configs/stm3210e-eval/nxlines/defconfig7
-rw-r--r--nuttx/configs/stm3210e-eval/nxtext/defconfig7
-rwxr-xr-xnuttx/configs/stm3210e-eval/ostest/defconfig7
-rw-r--r--nuttx/configs/stm3210e-eval/src/up_lcd.c96
-rwxr-xr-xnuttx/configs/stm3210e-eval/usbserial/defconfig7
-rwxr-xr-xnuttx/configs/stm3210e-eval/usbstorage/defconfig7
-rw-r--r--nuttx/sched/mq_notify.c22
13 files changed, 227 insertions, 70 deletions
diff --git a/nuttx/Documentation/NuttxUserGuide.html b/nuttx/Documentation/NuttxUserGuide.html
index a5997f972..09407bfb0 100644
--- a/nuttx/Documentation/NuttxUserGuide.html
+++ b/nuttx/Documentation/NuttxUserGuide.html
@@ -13,7 +13,7 @@
<h1><big><font color="#3c34ec"><i>NuttX Operating System<p>User's Manual</i></font></big></h1>
<p><small>by</small></p>
<p>Gregory Nutt<p>
- <p>Last Updated: July 19, 2011</p>
+ <p>Last Updated: December 5, 2011</p>
</td>
</tr>
</table>
@@ -1549,58 +1549,83 @@ interface of the same name.
<h3><a name="mqnotify">2.4.7 mq_notify</a></h3>
<p>
-<b>Function Prototype:</b>
+ <b>Function Prototype:</b>
<pre>
#include &lt;mqueue.h&gt;
int mq_notify(mqd_t mqdes, const struct sigevent *notification);
</pre>
-
+</p>
<p>
-<b>Description:</b> If the &quot;notification&quot; input parameter
-is not NULL, this function connects the task with the message queue such
-that the specified signal will be sent to the task whenever the message
-changes from empty to non-empty. One notification can be attached
-to a message queue.
+ <b>Description:</b> If the <code>notification</code> input parameter
+ is not <code>NULL</code>, this function connects the task with the message queue such
+ that the specified signal will be sent to the task whenever the message
+ changes from empty to non-empty. One notification can be attached
+ to a message queue.
+</p>
<p>
-If &quot;notification&quot; is NULL, the attached notification
-is detached (if it was held by the calling task) and the queue
-is available to attach another notification.
+ If <code>notification</code>; is <code>NULL</code>, the attached notification
+ is detached (if it was held by the calling task) and the queue
+ is available to attach another notification.
+</p>
<p>
-When the notification is sent to the registered task, its registration
-will be removed. The message queue will then be available for
-registration.
+ When the notification is sent to the registered task, its registration
+ will be removed. The message queue will then be available for
+ registration.
<p>
-<b>Input Parameters:</b>
-<ul>
-<li><i>mqdes</i>. Message queue descriptor
-<li><i>notification</i>. Real-time signal structure containing:
-<ul>
-<li><i>sigev_notify</i>. Should be SIGEV_SIGNAL (but actually
-ignored)
-<li><i>sigev_signo</i>. The signo to use for the notification
-<li><i>sigev_value</i>. Value associated with the signal
-</ul>
-
-</ul>
-
+ <b>Input Parameters:</b>
+ <ul>
+ <li>
+ <code>mqdes</code>. Message queue descriptor
+ </li>
+ <li><code>notification</code>. Real-time signal structure containing:
+ <ul>
+ <li><code>sigev_notify</code>. Should be SIGEV_SIGNAL (but actually ignored)
+ <li><code>sigev_signo</code>. The signo to use for the notification
+ <li><code>sigev_value</code>. Value associated with the signal
+ </ul>
+ </ul>
+</p>
<p>
-<b>Returned Values:</b> None.
+ <b>Returned Values:</b>
+ On success <code>mq_notify()</code> returns 0; on error, -1 is returned, with
+ <code>errno</code> set to indicate the error:
+ <ul>
+ <li>
+ <code>EBADF</code>. The descriptor specified in <code>mqdes</code> is invalid.
+ </li>
+ <li>
+ <code>EBUSY</code>. Another process has already registered to receive notification
+ for this message queue.
+ </li>
+ <li>
+ <code>EINVAL</code>. <code>sevp->sigev_notify</code> is not one of the permitted values; or
+ <code>sevp->sigev_notify</code> is <code>SIGEV_SIGNAL</code> and <code>sevp->sigev_signo</code> is not a
+ valid signal number.
+ </li>
+ <li>
+ <code>ENOMEM</code>. Insufficient memory.
+ </li>
+ </ul>
+</p>
<p>
-<b>Assumptions/Limitations:</b>
+ <b>Assumptions/Limitations:</b>
+</p>
<p>
-<b> POSIX Compatibility:</b> Comparable to the POSIX interface
-of the same name.
-Differences from the full POSIX implementation include:
-<ul>
-<li>The notification signal will be sent to the registered task even if
-another task is waiting for the message queue to become non-empty. This is
-inconsistent with the POSIX specification which states, &quot;If a process
-has registered for notification of message arrival at a message queue and
-some process is blocked in <i>mq_receive</i> waiting to receive a message
-when a message arrives at the queue, the arriving message shall satisfy the
-appropriate <i>mq_receive()</i> ... The resulting behavior is as if the
-message queue remains empty, and no notification shall be sent.&quot;
-</ul>
+ <b>POSIX Compatibility:</b> Comparable to the POSIX interface of the same name.
+ Differences from the full POSIX implementation include:
+ <ul>
+ <li>
+ The notification signal will be sent to the registered task even if
+ another task is waiting for the message queue to become non-empty. This is
+ inconsistent with the POSIX specification which states, &quot;If a process
+ has registered for notification of message arrival at a message queue and
+ some process is blocked in <i>mq_receive</i> waiting to receive a message
+ when a message arrives at the queue, the arriving message shall satisfy the
+ appropriate <i>mq_receive()</i> ... The resulting behavior is as if the
+ message queue remains empty, and no notification shall be sent.&quot;
+ </li>
+ </ul>
+</p>
<H3><a name="mqsetattr">2.4.8 mq_setattr</a></H3>
diff --git a/nuttx/configs/stm3210e-eval/RIDE/defconfig b/nuttx/configs/stm3210e-eval/RIDE/defconfig
index 21adf16ab..f47f40bf3 100755
--- a/nuttx/configs/stm3210e-eval/RIDE/defconfig
+++ b/nuttx/configs/stm3210e-eval/RIDE/defconfig
@@ -224,6 +224,13 @@ CONFIG_SSI_POLLWAIT=y
#CONFIG_SSI_TXLIMIT=4
#
+# STM3210E-EVAL specific LCD settings
+#
+CONFIG_STM32_AM240320_DISABLE=n
+CONFIG_STM32_SPFD5408B_DISABLE=n
+CONFIG_STM32_R61580_DISABLE=y
+
+#
# General build options
#
# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
diff --git a/nuttx/configs/stm3210e-eval/buttons/defconfig b/nuttx/configs/stm3210e-eval/buttons/defconfig
index 16c19e07f..7a1e4d78d 100644
--- a/nuttx/configs/stm3210e-eval/buttons/defconfig
+++ b/nuttx/configs/stm3210e-eval/buttons/defconfig
@@ -237,6 +237,13 @@ CONFIG_SSI_POLLWAIT=y
#CONFIG_SSI_TXLIMIT=4
#
+# STM3210E-EVAL specific LCD settings
+#
+CONFIG_STM32_AM240320_DISABLE=n
+CONFIG_STM32_SPFD5408B_DISABLE=n
+CONFIG_STM32_R61580_DISABLE=y
+
+#
# General build options
#
# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
diff --git a/nuttx/configs/stm3210e-eval/nsh/defconfig b/nuttx/configs/stm3210e-eval/nsh/defconfig
index 06df09d2e..8e1e1f848 100755
--- a/nuttx/configs/stm3210e-eval/nsh/defconfig
+++ b/nuttx/configs/stm3210e-eval/nsh/defconfig
@@ -233,6 +233,13 @@ CONFIG_SSI_POLLWAIT=y
#CONFIG_SSI_TXLIMIT=4
#
+# STM3210E-EVAL specific LCD settings
+#
+CONFIG_STM32_AM240320_DISABLE=n
+CONFIG_STM32_SPFD5408B_DISABLE=n
+CONFIG_STM32_R61580_DISABLE=y
+
+#
# General build options
#
# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
diff --git a/nuttx/configs/stm3210e-eval/nsh2/defconfig b/nuttx/configs/stm3210e-eval/nsh2/defconfig
index 281fec5b7..ae6a06606 100644
--- a/nuttx/configs/stm3210e-eval/nsh2/defconfig
+++ b/nuttx/configs/stm3210e-eval/nsh2/defconfig
@@ -233,6 +233,13 @@ CONFIG_SSI_POLLWAIT=y
#CONFIG_SSI_TXLIMIT=4
#
+# STM3210E-EVAL specific LCD settings
+#
+CONFIG_STM32_AM240320_DISABLE=n
+CONFIG_STM32_SPFD5408B_DISABLE=n
+CONFIG_STM32_R61580_DISABLE=y
+
+#
# General build options
#
# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
diff --git a/nuttx/configs/stm3210e-eval/nx/defconfig b/nuttx/configs/stm3210e-eval/nx/defconfig
index 8381ae8f6..94d843fb9 100644
--- a/nuttx/configs/stm3210e-eval/nx/defconfig
+++ b/nuttx/configs/stm3210e-eval/nx/defconfig
@@ -233,6 +233,13 @@ CONFIG_SSI_POLLWAIT=y
#CONFIG_SSI_TXLIMIT=4
#
+# STM3210E-EVAL specific LCD settings
+#
+CONFIG_STM32_AM240320_DISABLE=n
+CONFIG_STM32_SPFD5408B_DISABLE=n
+CONFIG_STM32_R61580_DISABLE=y
+
+#
# General build options
#
# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
diff --git a/nuttx/configs/stm3210e-eval/nxlines/defconfig b/nuttx/configs/stm3210e-eval/nxlines/defconfig
index 048476296..0ed46b6ad 100644
--- a/nuttx/configs/stm3210e-eval/nxlines/defconfig
+++ b/nuttx/configs/stm3210e-eval/nxlines/defconfig
@@ -233,6 +233,13 @@ CONFIG_SSI_POLLWAIT=y
#CONFIG_SSI_TXLIMIT=4
#
+# STM3210E-EVAL specific LCD settings
+#
+CONFIG_STM32_AM240320_DISABLE=n
+CONFIG_STM32_SPFD5408B_DISABLE=n
+CONFIG_STM32_R61580_DISABLE=y
+
+#
# General build options
#
# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
diff --git a/nuttx/configs/stm3210e-eval/nxtext/defconfig b/nuttx/configs/stm3210e-eval/nxtext/defconfig
index 07ab05c74..e48a147c9 100644
--- a/nuttx/configs/stm3210e-eval/nxtext/defconfig
+++ b/nuttx/configs/stm3210e-eval/nxtext/defconfig
@@ -233,6 +233,13 @@ CONFIG_SSI_POLLWAIT=y
#CONFIG_SSI_TXLIMIT=4
#
+# STM3210E-EVAL specific LCD settings
+#
+CONFIG_STM32_AM240320_DISABLE=n
+CONFIG_STM32_SPFD5408B_DISABLE=n
+CONFIG_STM32_R61580_DISABLE=y
+
+#
# General build options
#
# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
diff --git a/nuttx/configs/stm3210e-eval/ostest/defconfig b/nuttx/configs/stm3210e-eval/ostest/defconfig
index b3516fa5d..c4f81ecd8 100755
--- a/nuttx/configs/stm3210e-eval/ostest/defconfig
+++ b/nuttx/configs/stm3210e-eval/ostest/defconfig
@@ -235,6 +235,13 @@ CONFIG_SSI_POLLWAIT=y
#CONFIG_SSI_TXLIMIT=4
#
+# STM3210E-EVAL specific LCD settings
+#
+CONFIG_STM32_AM240320_DISABLE=n
+CONFIG_STM32_SPFD5408B_DISABLE=n
+CONFIG_STM32_R61580_DISABLE=y
+
+#
# General build options
#
# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
diff --git a/nuttx/configs/stm3210e-eval/src/up_lcd.c b/nuttx/configs/stm3210e-eval/src/up_lcd.c
index 481da54dd..a3fe6c810 100644
--- a/nuttx/configs/stm3210e-eval/src/up_lcd.c
+++ b/nuttx/configs/stm3210e-eval/src/up_lcd.c
@@ -289,6 +289,7 @@
#define LCD_REG_153 0x99
#define LCD_REG_154 0x9a
#define LCD_REG_157 0x9d
+#define LCD_REG_164 0xa4
#define LCD_REG_192 0xc0
#define LCD_REG_193 0xc1
#define LCD_REG_229 0xe5
@@ -1074,27 +1075,14 @@ static inline void stm3210e_lcdinitialize(void)
id = stm3210e_readreg(LCD_REG_0);
lcddbg("LCD ID: %04x\n", id);
- /* Check if the ID is for the SPFD5408B or the almost compatible R61580 */
+ /* Check if the ID is for the SPFD5408B */
-#if !defined(CONFIG_STM32_SPFD5408B_DISABLE) || !defined(CONFIG_STM32_R61580_DISABLE)
-#if !defined(CONFIG_STM32_SPFD5408B_DISABLE) && !defined(CONFIG_STM32_R61580_DISABLE)
- if (id == SPFD5408B_ID || id == R61580_ID)
-#elif !defined(CONFIG_STM32_SPFD5408B_DISABLE)
+#if !defined(CONFIG_STM32_SPFD5408B_DISABLE)
if (id == SPFD5408B_ID)
-#else
- if (id == R61580_ID)
-#endif
{
- /* Set the LCD type for the SPFD5408B or the R61580 */
-
-#if !defined(CONFIG_STM32_SPFD5408B_DISABLE) && !defined(CONFIG_STM32_R61580_DISABLE)
- g_lcddev.type = (id == SPFD5408B_ID ? LCD_TYPE_SPFD5408B : LCD_TYPE_R61580);
-#elif !defined(CONFIG_STM32_SPFD5408B_DISABLE)
- g_lcddev.type = SPFD5408B_ID;
-#else
- g_lcddev.type = LCD_TYPE_R61580;
-#endif
+ /* Set the LCD type for the SPFD5408B */
+ g_lcddev.type = LCD_TYPE_SPFD5408B;
lcddbg("LCD type: %d\n", g_lcddev.type);
/* Start Initial Sequence */
@@ -1191,6 +1179,80 @@ static inline void stm3210e_lcdinitialize(void)
}
else
#endif
+
+ /* Check if the ID is for the almost compatible R61580 */
+
+#if !defined(CONFIG_STM32_R61580_DISABLE)
+ if (id == R61580_ID)
+ {
+ /* Set the LCD type for the R61580 */
+
+ g_lcddev.type = LCD_TYPE_R61580;
+ lcddbg("LCD type: %d\n", g_lcddev.type);
+
+ /* Start Initial Sequence */
+
+ stm3210e_writereg(LCD_REG_0, 0x0000);
+ stm3210e_writereg(LCD_REG_0, 0x0000);
+ up_mdelay(100);
+ stm3210e_writereg(LCD_REG_0, 0x0000);
+ stm3210e_writereg(LCD_REG_0, 0x0000);
+ stm3210e_writereg(LCD_REG_0, 0x0000);
+ stm3210e_writereg(LCD_REG_0, 0x0000);
+ stm3210e_writereg(LCD_REG_164, 0x0001);
+ up_mdelay(100);
+ stm3210e_writereg(LCD_REG_96, 0xa700);
+ stm3210e_writereg(LCD_REG_8, 0x0808);
+
+ /* Gamma Setting */
+
+ stm3210e_writereg(LCD_REG_48, 0x0203);
+ stm3210e_writereg(LCD_REG_49, 0x080f);
+ stm3210e_writereg(LCD_REG_50, 0x0401);
+ stm3210e_writereg(LCD_REG_51, 0x050b);
+ stm3210e_writereg(LCD_REG_52, 0x3330);
+ stm3210e_writereg(LCD_REG_53, 0x0b05);
+ stm3210e_writereg(LCD_REG_54, 0x0005);
+ stm3210e_writereg(LCD_REG_55, 0x0f08);
+ stm3210e_writereg(LCD_REG_56, 0x0302);
+ stm3210e_writereg(LCD_REG_57, 0x3033);
+
+ /* Power Setting */
+
+ stm3210e_writereg(LCD_REG_144, 0x0018); /* 80Hz */
+ stm3210e_writereg(LCD_REG_16, 0x0530); /* BT, AP */
+ stm3210e_writereg(LCD_REG_17, 0x0237); /* DC1,DC0,VC */
+ stm3210e_writereg(LCD_REG_18, 0x01bf);
+ stm3210e_writereg(LCD_REG_19, 0x1000); /* VCOM */
+ up_mdelay(200);
+
+ stm3210e_writereg(LCD_REG_1, 0x0100); /* Set SS bit */
+ stm3210e_writereg(LCD_REG_2, 0x0200);
+ stm3210e_writereg(LCD_REG_3, 0x1030); /* Set GRAM write direction and BGR=1. */
+ stm3210e_writereg(LCD_REG_9, 0x0001);
+ stm3210e_writereg(LCD_REG_10, 0x0008);
+ stm3210e_writereg(LCD_REG_12, 0x0000); /* RGB 18-bit System interface setting */
+ stm3210e_writereg(LCD_REG_13, 0xd000);
+ stm3210e_writereg(LCD_REG_14, 0x0030);
+ stm3210e_writereg(LCD_REG_15, 0x0000); /* RGB interface polarity, no impact */
+ stm3210e_writereg(LCD_REG_32, 0x0000); /* H Start */
+ stm3210e_writereg(LCD_REG_33, 0x0000); /* V Start */
+ stm3210e_writereg(LCD_REG_41, 0x002e);
+ stm3210e_writereg(LCD_REG_80, 0x0000); /* Horizontal GRAM Start Address */
+ stm3210e_writereg(LCD_REG_81, 0x00ef); /* Horizontal GRAM End Address */
+ stm3210e_writereg(LCD_REG_82, 0x0000); /* Vertical GRAM Start Address */
+ stm3210e_writereg(LCD_REG_83, 0x013f); /* Vertical GRAM End Address */
+ stm3210e_writereg(LCD_REG_97, 0x0001); /* NDL, VLE, REV */
+ stm3210e_writereg(LCD_REG_106, 0x0000); /* set scrolling line */
+ stm3210e_writereg(LCD_REG_128, 0x0000);
+ stm3210e_writereg(LCD_REG_129, 0x0000);
+ stm3210e_writereg(LCD_REG_130, 0x005f);
+ stm3210e_writereg(LCD_REG_147, 0x0701);
+
+ stm3210e_writereg(LCD_REG_7, 0x0000); /* Display OFF */
+ }
+ else
+#endif
{
#ifndef CONFIG_STM32_AM240320_DISABLE
g_lcddev.type = LCD_TYPE_AM240320;
diff --git a/nuttx/configs/stm3210e-eval/usbserial/defconfig b/nuttx/configs/stm3210e-eval/usbserial/defconfig
index ef85b33bb..be28df966 100755
--- a/nuttx/configs/stm3210e-eval/usbserial/defconfig
+++ b/nuttx/configs/stm3210e-eval/usbserial/defconfig
@@ -235,6 +235,13 @@ CONFIG_SSI_POLLWAIT=y
#CONFIG_SSI_TXLIMIT=4
#
+# STM3210E-EVAL specific LCD settings
+#
+CONFIG_STM32_AM240320_DISABLE=n
+CONFIG_STM32_SPFD5408B_DISABLE=n
+CONFIG_STM32_R61580_DISABLE=y
+
+#
# General build options
#
# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
diff --git a/nuttx/configs/stm3210e-eval/usbstorage/defconfig b/nuttx/configs/stm3210e-eval/usbstorage/defconfig
index 7e7a447ce..9d4557ab9 100755
--- a/nuttx/configs/stm3210e-eval/usbstorage/defconfig
+++ b/nuttx/configs/stm3210e-eval/usbstorage/defconfig
@@ -233,6 +233,13 @@ CONFIG_SSI_POLLWAIT=y
#CONFIG_SSI_TXLIMIT=4
#
+# STM3210E-EVAL specific LCD settings
+#
+CONFIG_STM32_AM240320_DISABLE=n
+CONFIG_STM32_SPFD5408B_DISABLE=n
+CONFIG_STM32_R61580_DISABLE=y
+
+#
# General build options
#
# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
diff --git a/nuttx/sched/mq_notify.c b/nuttx/sched/mq_notify.c
index 4ec3d82c9..ce64d5a54 100644
--- a/nuttx/sched/mq_notify.c
+++ b/nuttx/sched/mq_notify.c
@@ -2,7 +2,7 @@
* sched/mq_notify.c
*
* Copyright (C) 2007, 2009, 2011 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ * Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -97,17 +97,17 @@
* sigev_value - Value associated with the signal
*
* Return Value:
- * On success mq_notify() returns 0; on error, -1 is returned, with
- * errno set to indicate the error.
+ * On success mq_notify() returns 0; on error, -1 is returned, with
+ * errno set to indicate the error.
*
- * EBADF The descriptor specified in mqdes is invalid.
- * EBUSY Another process has already registered to receive notification
- * for this message queue.
- * EINVAL sevp->sigev_notify is not one of the permitted values; or
- * sevp->sigev_notify is SIGEV_SIGNAL and sevp->sigev_signo is not a
- * valid signal number.
- * ENOMEM
- * Insufficient memory.
+ * EBADF The descriptor specified in mqdes is invalid.
+ * EBUSY Another process has already registered to receive notification
+ * for this message queue.
+ * EINVAL sevp->sigev_notify is not one of the permitted values; or
+ * sevp->sigev_notify is SIGEV_SIGNAL and sevp->sigev_signo is not a
+ * valid signal number.
+ * ENOMEM
+ * Insufficient memory.
*
* Assumptions:
*