diff --git a/Documentation/NuttxUserGuide.html b/Documentation/NuttxUserGuide.html index a5997f9728c..09407bfb081 100644 --- a/Documentation/NuttxUserGuide.html +++ b/Documentation/NuttxUserGuide.html @@ -13,7 +13,7 @@

NuttX Operating System

User's Manual

by

Gregory Nutt

-

Last Updated: July 19, 2011

+

Last Updated: December 5, 2011

@@ -1549,58 +1549,83 @@ interface of the same name.

2.4.7 mq_notify

-Function Prototype: + Function Prototype:

     #include <mqueue.h>
     int mq_notify(mqd_t mqdes, const struct sigevent *notification);
 
- +

-Description: If the "notification" 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. + Description: If the notification 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. +

-If "notification" 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 notification; is NULL, the attached notification + is detached (if it was held by the calling task) and the queue + is available to attach another notification. +

-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.

-Input Parameters: -

- + Input Parameters: + +

-Returned Values: None. + Returned Values: + On success mq_notify() returns 0; on error, -1 is returned, with + errno set to indicate the error: +

+

-Assumptions/Limitations: + Assumptions/Limitations: +

- POSIX Compatibility: Comparable to the POSIX interface -of the same name. -Differences from the full POSIX implementation include: -

+ POSIX Compatibility: Comparable to the POSIX interface of the same name. + Differences from the full POSIX implementation include: + +

2.4.8 mq_setattr

diff --git a/configs/stm3210e-eval/RIDE/defconfig b/configs/stm3210e-eval/RIDE/defconfig index 21adf16aba4..f47f40bf375 100755 --- a/configs/stm3210e-eval/RIDE/defconfig +++ b/configs/stm3210e-eval/RIDE/defconfig @@ -223,6 +223,13 @@ CONFIG_SSI1_DISABLE=y 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 # diff --git a/configs/stm3210e-eval/buttons/defconfig b/configs/stm3210e-eval/buttons/defconfig index 16c19e07fe3..7a1e4d78dba 100644 --- a/configs/stm3210e-eval/buttons/defconfig +++ b/configs/stm3210e-eval/buttons/defconfig @@ -236,6 +236,13 @@ CONFIG_SSI1_DISABLE=y 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 # diff --git a/configs/stm3210e-eval/nsh/defconfig b/configs/stm3210e-eval/nsh/defconfig index 06df09d2e98..8e1e1f84843 100755 --- a/configs/stm3210e-eval/nsh/defconfig +++ b/configs/stm3210e-eval/nsh/defconfig @@ -232,6 +232,13 @@ CONFIG_SSI1_DISABLE=y 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 # diff --git a/configs/stm3210e-eval/nsh2/defconfig b/configs/stm3210e-eval/nsh2/defconfig index 281fec5b713..ae6a06606a4 100644 --- a/configs/stm3210e-eval/nsh2/defconfig +++ b/configs/stm3210e-eval/nsh2/defconfig @@ -232,6 +232,13 @@ CONFIG_SSI1_DISABLE=y 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 # diff --git a/configs/stm3210e-eval/nx/defconfig b/configs/stm3210e-eval/nx/defconfig index 8381ae8f6d1..94d843fb954 100644 --- a/configs/stm3210e-eval/nx/defconfig +++ b/configs/stm3210e-eval/nx/defconfig @@ -232,6 +232,13 @@ CONFIG_SSI1_DISABLE=y 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 # diff --git a/configs/stm3210e-eval/nxlines/defconfig b/configs/stm3210e-eval/nxlines/defconfig index 048476296ea..0ed46b6ad14 100644 --- a/configs/stm3210e-eval/nxlines/defconfig +++ b/configs/stm3210e-eval/nxlines/defconfig @@ -232,6 +232,13 @@ CONFIG_SSI1_DISABLE=y 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 # diff --git a/configs/stm3210e-eval/nxtext/defconfig b/configs/stm3210e-eval/nxtext/defconfig index 07ab05c7431..e48a147c94d 100644 --- a/configs/stm3210e-eval/nxtext/defconfig +++ b/configs/stm3210e-eval/nxtext/defconfig @@ -232,6 +232,13 @@ CONFIG_SSI1_DISABLE=y 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 # diff --git a/configs/stm3210e-eval/ostest/defconfig b/configs/stm3210e-eval/ostest/defconfig index b3516fa5d4f..c4f81ecd8c7 100755 --- a/configs/stm3210e-eval/ostest/defconfig +++ b/configs/stm3210e-eval/ostest/defconfig @@ -234,6 +234,13 @@ CONFIG_SSI1_DISABLE=y 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 # diff --git a/configs/stm3210e-eval/src/up_lcd.c b/configs/stm3210e-eval/src/up_lcd.c index 481da54dd6a..a3fe6c8107d 100644 --- a/configs/stm3210e-eval/src/up_lcd.c +++ b/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/configs/stm3210e-eval/usbserial/defconfig b/configs/stm3210e-eval/usbserial/defconfig index ef85b33bb5a..be28df9666a 100755 --- a/configs/stm3210e-eval/usbserial/defconfig +++ b/configs/stm3210e-eval/usbserial/defconfig @@ -234,6 +234,13 @@ CONFIG_SSI1_DISABLE=y 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 # diff --git a/configs/stm3210e-eval/usbstorage/defconfig b/configs/stm3210e-eval/usbstorage/defconfig index 7e7a447ce59..9d4557ab9fe 100755 --- a/configs/stm3210e-eval/usbstorage/defconfig +++ b/configs/stm3210e-eval/usbstorage/defconfig @@ -232,6 +232,13 @@ CONFIG_SSI1_DISABLE=y 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 # diff --git a/sched/mq_notify.c b/sched/mq_notify.c index 4ec3d82c981..ce64d5a54ea 100644 --- a/sched/mq_notify.c +++ b/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 + * Author: Gregory Nutt * * 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: *