diff --git a/Documentation/NuttxPortingGuide.html b/Documentation/NuttxPortingGuide.html
index 5ca42e14d49ae503d4e57be63cff810358092e85..a74984b2cbc7e9992e03addf4bead07a1d96eac3 100644
--- a/Documentation/NuttxPortingGuide.html
+++ b/Documentation/NuttxPortingGuide.html
@@ -3958,6 +3958,25 @@ build
   </li>
 </ul>
 
+<h3>Input Devices</h3>
+<ul>
+  <li>
+    <code>CONFIG_INPUT</code>:
+    Enables general support for input devices
+  </li>
+  <li>
+    <code>CONFIG_INPUT_TSC2007</code>:
+    If CONFIG_INPUT is selected, then this setting will enable building
+    of the TI TSC2007 touchscreen driver.
+  </li>
+  <li>
+    <code>CONFIG_TSC2007_MULTIPLE</code>:
+    Normally only a single TI TSC2007 touchscreen is used.  But if
+    there are multiple TSC2007 touchscreens, this setting will enable
+    multiple touchscreens with the same driver.
+  </li>
+</ul>
+
 <h3>ENC28J60 Ethernet Driver Configuration Settings</h3>
 <ul>
   <li>
@@ -4399,9 +4418,8 @@ build
 </p>
 
 <h2>Graphics related configuration settings</h3>
-<ul>
   <li>
-    <code>CONFIG_NX</code>
+    <code>CONFIG_NX</code>:
     Enables overall support for graphics library and NX
   </li>
 </ul>
@@ -4444,6 +4462,14 @@ build
     <code>CONFIG_LCD_MAXCONTRAST</code>:
     The maximum contrast value for an LCD device.
   </li>
+  <li>
+    <code>CONFIG_LCD_LANDSCAPE</code>, <code>CONFIG_LCD_PORTRAIT</code>,
+    <code>CONFIG_LCD_RLANDSCAPE</code>, and <code>CONFIG_LCD_RPORTRAIT</code>:
+    Some LCD drivers may support these options to present the display in
+    landscape, portrait, reverse landscape, or reverse portrait orientations.
+    Check the <code>README.txt</code> file in each board configuration directory to
+    see if any of these are supported by the board LCD logic.
+  </li>
   <li>
     <code>CONFIG_NX_MOUSE</code>:
     Build in support for mouse input.
diff --git a/TODO b/TODO
index 380006f47076a9abc7bf916d79e51c38ddf7e6f2..6dafc5c425370fdb12ad4791fcffb914cdc2fee5 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
-NuttX TODO List (Last updated July 12, 2011)
+NuttX TODO List (Last updated August 8, 2011)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 nuttx/
@@ -13,7 +13,7 @@ nuttx/
  (16)  Network (net/, drivers/net)
   (2)  USB (drivers/usbdev, drivers/usbhost)
   (6)  Libraries (lib/)
- (13)  File system/Generic drivers (fs/, drivers/)
+ (10)  File system/Generic drivers (fs/, drivers/)
   (1)  Graphics subystem (graphics/)
   (1)  Pascal add-on (pcode/)
   (1)  Documentation (Documentation/)
@@ -32,6 +32,7 @@ nuttx/
   (3)  AVR (arch/avr)
   (0)  Intel x86 (arch/x86)
   (4)  8051 / MCS51 (arch/8051/)
+  (1)  MIPS (arch/mips)
   (2)  Hitachi/Renesas SH-1 (arch/sh/src/sh1)
   (4)  Renesas M16C/26 (arch/sh/src/m16c)
   (8)  z80/z8/ez80 (arch/z80/)
@@ -345,6 +346,7 @@ o Network (net/, drivers/net)
                and the packet was rejected.
   Status:      Open
   Priority:    Low... fix defconfig files as necessary.
+
 o USB (drivers/usbdev, drivers/usbhost)
   ^^^^^^^^^^^^^^^^^^^^
 
@@ -411,10 +413,6 @@ o File system / Generic drivers (fs/, drivers/)
   Status:      Open
   Priority:    Low
 
-  Description: FAT: long file names
-  Status:      Open
-  Priority:    Medium
-
   Description: The CAN driver is untested.  Add a test for the CAN driver.
   Status:      Open
   Priority:    Medium
@@ -443,17 +441,6 @@ o File system / Generic drivers (fs/, drivers/)
   Status:      Open
   Priority:    Medium-Low
 
-  Description: At present, mmap() only works with file descriptors associated
-               with a ROMFS file system.  Generalize this logic so that if
-               mmap is not supported by the file system or block driver, it
-               will allocate memory and copy the file into RAM.  This would
-               need some centralized logic so that the memory region would
-               be shared on later mmap()'s on the same inode.  Reference counting
-               would be required so that the multiply mmap()'ed region persists
-               until the last munmap().
-  Status:      Open
-  Priority:    Low
-
   Description: Block driver read-ahead buffer and write buffer support is
                implemented but not yet tested.
   Status:      Open
@@ -470,7 +457,7 @@ o File system / Generic drivers (fs/, drivers/)
   Status:      Open
   Priority:    Low
 
-  Description: Time stamping is not implemented in the NuttX FA file system.
+  Description: Time stamping is not implemented in the NuttX FAT file system.
                See the following functions in fs/fat/fs_fat32util.c:
                fat_systime2fattime() and fat_fattime2systime()
   Status:      Open
@@ -660,6 +647,13 @@ o ARM (arch/arm/)
                This user context switching time could be improved by eliminating
                the SVCalls and developing assembly language implementations
                of the context save and restore logic.
+               Also, because interrupts are always disabled when the SVCall is
+               executed, the SVC goes to the hard fault handler where it must
+               be handled as a special case.  I recall seeing some controls
+               somewhere that will allow to suppress one hard fault.  I don't 
+               recall the control, but something like this should be used before
+               executing the SVCall so that it vectors directly to the SVC
+               handler.
   Status:      Open
   Priority:    Low
 
@@ -922,17 +916,23 @@ o AVR (arch/avr)
   Priority:     Low.  The AVR is probably not the architecuture that you want to use
                 for extensive string operations.
 
-  Description:   An SPI driver and a USB device driver exist for the AT90USB (as well
-                 as a USB mass storage example).  However, this configuration is not
-                 fully debugged as of the NuttX-6.5 release.
-                 Update 7/11:  (1) The SPI/SD driver has been verified, however, (2) I
-                 believe that the current teensy/usbstorage configuration uses too
-                 much SRAM for the system to behave sanely.  A lower memory footprint
-                 version of the mass storage driver will be required before this can
-                 be debugged
+  Description:  An SPI driver and a USB device driver exist for the AT90USB (as well
+                as a USB mass storage example).  However, this configuration is not
+                fully debugged as of the NuttX-6.5 release.
+                Update 7/11:  (1) The SPI/SD driver has been verified, however, (2) I
+                believe that the current teensy/usbstorage configuration uses too
+                much SRAM for the system to behave sanely.  A lower memory footprint
+                version of the mass storage driver will be required before this can
+                be debugged
   Status:       Open
   Priority:     Medium-High.
 
+  Description:  A complete port for the AVR32 is provided and has been partially
+                debugged.  There may still be some issues with the serial port
+                driver.
+  Status:       Open
+  Priority:     Medium
+
 o Intel x86 (arch/x86)
   ^^^^^^^^^^^^^^^^^^^^
 
@@ -974,6 +974,14 @@ o 8051 / MCS51 (arch/8051/)
   Status:      Open
   Priority:    Low -- only because there as so many other issues with 8051
 
+o MIPS (arch/mips)
+  ^^^^^^^^^^^^^^^^
+
+  Description: A port to the PIC32MX has been completed, but is pending debug.
+               Right now, there are some issues with intregating the PICKit 3
+               and MPLAB so I don't have capability to debug the port.
+  Status:      Open
+  Priority:    High
 
 o Hitachi/Renesas SH-1 (arch/sh/src/sh1)
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/configs/README.txt b/configs/README.txt
index 41c90e387688de470daad455be40c107c3110186..5eee4786cf9963f82e091a452a2e212b0dd3217f 100644
--- a/configs/README.txt
+++ b/configs/README.txt
@@ -499,29 +499,29 @@ defconfig -- This is a configuration file similar to the Linux
 
 		  CONFIG_ARCH_MATH_H, CONFIG_ARCH_STDBOOL_H, CONFIG_ARCH_STDINT_H
 
-        CONFIG_ARCH_ROMGETC - In Harvard architectures, data accesses and
-          instruction accesses occur on different busses, perhaps
-          concurrently.  All data accesses are performed on the data bus
-          unless special machine instructions are used to read data
-          from the instruction address space.  Also, in the typical
-          MCU, the available SRAM data memory is much smaller that the
-          non-volatile FLASH instruction memory.  So if the application
-          requires many constant strings, the only practical solution may
-          be to store those constant strings in FLASH memory where they
-          can only be accessed using architecture-specific machine
-          instructions.
-
-          If CONFIG_ARCH_ROMGETC is defined, then the architecture logic
-          must export the function up_romgetc().  up_romgetc() will simply
-          read one byte of data from the instruction space.
+		CONFIG_ARCH_ROMGETC - In Harvard architectures, data accesses and
+		  instruction accesses occur on different busses, perhaps
+		  concurrently.  All data accesses are performed on the data bus
+		  unless special machine instructions are used to read data
+		  from the instruction address space.  Also, in the typical
+		  MCU, the available SRAM data memory is much smaller that the
+		  non-volatile FLASH instruction memory.  So if the application
+		  requires many constant strings, the only practical solution may
+		  be to store those constant strings in FLASH memory where they
+		  can only be accessed using architecture-specific machine
+		  instructions.
+
+		  If CONFIG_ARCH_ROMGETC is defined, then the architecture logic
+		  must export the function up_romgetc().  up_romgetc() will simply
+		  read one byte of data from the instruction space.
  
-          If CONFIG_ARCH_ROMGETC, certain C stdio functions are effected:
-          (1) All format strings in printf, fprintf, sprintf, etc. are
-          assumed to lie in FLASH (string arguments for %s are still assumed
-          to reside in SRAM). And (2), the string argument to puts and fputs
-          is assumed to reside in FLASH.  Clearly, these assumptions may have
-          to modified for the particular needs of your environment.  There
-          is no "one-size-fits-all" solution for this problem.
+		  If CONFIG_ARCH_ROMGETC, certain C stdio functions are effected:
+		  (1) All format strings in printf, fprintf, sprintf, etc. are
+		  assumed to lie in FLASH (string arguments for %s are still assumed
+		  to reside in SRAM). And (2), the string argument to puts and fputs
+		  is assumed to reside in FLASH.  Clearly, these assumptions may have
+		  to modified for the particular needs of your environment.  There
+		  is no "one-size-fits-all" solution for this problem.
 
 	Sizes of configurable things (0 disables)
 
@@ -564,19 +564,19 @@ defconfig -- This is a configuration file similar to the Linux
 	Filesystem configuration
 		CONFIG_FS_FAT - Enable FAT filesystem support
 		CONFIG_FAT_SECTORSIZE - Max supported sector size
-        CONFIG_FAT_LCNAMES - Enable use of the NT-style upper/lower case 8.3
-          file name support.
+		CONFIG_FAT_LCNAMES - Enable use of the NT-style upper/lower case 8.3
+		  file name support.
 		CONFIG_FAT_LFN - Enable FAT long file names.  NOTE:  Microsoft claims
-          patents on FAT long file name technology.  Please read the
-          disclaimer in the top-level COPYING file and only enable this
-          feature if you understand these issues.
-        CONFIG_FAT_MAXFNAME - If CONFIG_FAT_LFN is defined, then the
-          default, maximum long file name is 255 bytes.  This can eat up
-          a lot of memory (especially stack space).  If you are willing
-          to live with some non-standard, short long file names, then
-          define this value.  A good choice would be the same value as
-          selected for CONFIG_NAME_MAX which will limit the visibility
-          of longer file names anyway.
+		  patents on FAT long file name technology.  Please read the
+		  disclaimer in the top-level COPYING file and only enable this
+		  feature if you understand these issues.
+		CONFIG_FAT_MAXFNAME - If CONFIG_FAT_LFN is defined, then the
+		  default, maximum long file name is 255 bytes.  This can eat up
+		  a lot of memory (especially stack space).  If you are willing
+		  to live with some non-standard, short long file names, then
+		  define this value.  A good choice would be the same value as
+		  selected for CONFIG_NAME_MAX which will limit the visibility
+		  of longer file names anyway.
 		CONFIG_FS_NXFFS: Enable NuttX FLASH file system (NXFF) support.
 		CONFIG_NXFFS_ERASEDSTATE: The erased state of FLASH. 
 		  This must have one of the values of 0xff or 0x00.
@@ -671,6 +671,18 @@ defconfig -- This is a configuration file similar to the Linux
 		  meaning to the driver.  Board-specific logic may place restrictions on
 		  this value.
 
+	Input Devices
+
+		CONFIG_INPUT
+		  Enables general support for input devices
+		CONFIG_INPUT_TSC2007
+		  If CONFIG_INPUT is selected, then this setting will enable building
+		  of the TI TSC2007 touchscreen driver.
+		CONFIG_TSC2007_MULTIPLE
+		  Normally only a single TI TSC2007 touchscreen is used.  But if
+		  there are multiple TSC2007 touchscreens, this setting will enable
+		  multiple touchscreens with the same driver.
+
 	ENC28J60 Ethernet Driver Configuration Settings:
 		CONFIG_NET_ENC28J60 - Enabled ENC28J60 support
 		CONFIG_ENC28J60_SPIMODE - Controls the SPI mode
@@ -886,6 +898,7 @@ defconfig -- This is a configuration file similar to the Linux
 	  and CONFIG_SCHED_WORKQUEUE=y
 
 	USB serial device class driver
+
 		CONFIG_USBSER
 		  Enable compilation of the USB serial driver
 		CONFIG_USBSER_EPINTIN
@@ -907,6 +920,7 @@ defconfig -- This is a configuration file similar to the Linux
 		  Size of the serial receive/transmit buffers
 
 	USB Storage Device Configuration
+
 		CONFIG_USBSTRG
 		  Enable compilation of the USB storage driver
 		CONFIG_USBSTRG_EP0MAXPACKET
@@ -954,6 +968,12 @@ defconfig -- This is a configuration file similar to the Linux
 		  device.
 		CONFIG_LCD_MAXCONTRAST - The maximum contrast value for an
 		  LCD device.
+		CONFIG_LCD_LANDSCAPE, CONFIG_LCD_PORTRAIT, CONFIG_LCD_RLANDSCAPE,
+		  and CONFIG_LCD_RPORTRAIT - Some LCD drivers may support
+		  these options to present the display in landscape, portrait,
+		  reverse landscape, or reverse portrait orientations.  Check
+		  the README.txt file in each board configuration directory to
+		  see if any of these are supported by the board LCD logic.
 		CONFIG_NX_MOUSE
 		  Build in support for mouse input.
 		CONFIG_NX_KBD
diff --git a/configs/sam3u-ek/README.txt b/configs/sam3u-ek/README.txt
index a350c72d7e6038f82aa5c1706ace355b1c0e3a81..b94e668ef62e9bbe0538de48ad1e70e66a41c413 100755
--- a/configs/sam3u-ek/README.txt
+++ b/configs/sam3u-ek/README.txt
@@ -295,6 +295,13 @@ SAM3U-EK-specific Configuration Options
 	CONFIG_U[S]ARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity
 	CONFIG_U[S]ARTn_2STOP - Two stop bits
 
+  LCD Options.  Other than the standard LCD configuration options
+  (see configs/README.txt), the SAM3U-EK driver also supports:
+
+	CONFIG_LCD_PORTRAIT - Present the display in the standard 240x320
+	   "Portrait" orientation.  Default:  The display is rotated to
+	   support a 320x240 "Landscape" orientation.
+
 Configurations
 ^^^^^^^^^^^^^^
 
diff --git a/configs/sam3u-ek/src/up_lcd.c b/configs/sam3u-ek/src/up_lcd.c
index 8b0a919f7b4c266b10265109c83289eec0d70028..2de563f9b9c2294542cb784106a3fcf8c9eb833b 100755
--- a/configs/sam3u-ek/src/up_lcd.c
+++ b/configs/sam3u-ek/src/up_lcd.c
@@ -2,7 +2,7 @@
  * configs/sam3u-ek/src/up_lcd.c
  * arch/arm/src/board/up_lcd.c
  *
- *   Copyright (C) 2010 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2010-2011 Gregory Nutt. All rights reserved.
  *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
  *
  * Redistribution and use in source and binary forms, with or without
@@ -168,12 +168,12 @@
 /* Graphics Capbilities ***************************************************************/
 
 /* LCD resolution: 320 (columns) by 240 (rows).  The physical dimensions of the device
- * are really 240 (columns) by 320 (rows), but unless CONFIG_SAM3U_240x320 is defined,
+ * are really 240 (columns) by 320 (rows), but unless CONFIG_LCD_PORTRAIT is defined,
  * we swap rows and columns in setcursor to make things behave nicer (there IS a
  * performance hit for this swap!).
  */
 
-#ifdef CONFIG_SAM3U_240x320
+#ifdef CONFIG_LCD_PORTRAIT
 #  define SAM3UEK_XRES         240
 #  define SAM3UEK_YRES         320
 #else
@@ -606,7 +606,7 @@ static int sam3u_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_t *buffe
   gvdbg("row: %d col: %d npixels: %d\n", row, col, npixels);
   DEBUGASSERT(buffer && ((uintptr_t)buffer & 1) == 0);
 
-#ifdef CONFIG_SAM3U_240x320
+#ifdef CONFIG_LCD_PORTRAIT
   /* Set up to write the run. */
 
   sam3u_setcursor(row, col);
@@ -672,7 +672,7 @@ static int sam3u_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
   gvdbg("row: %d col: %d npixels: %d\n", row, col, npixels);
   DEBUGASSERT(buffer && ((uintptr_t)buffer & 1) == 0);
 
-#ifdef CONFIG_SAM3U_240x320
+#ifdef CONFIG_LCD_PORTRAIT
   /* Set up to read the run */
 
   sam3u_setcursor(row, col);
diff --git a/graphics/nxglib/nxglib_splitline.c b/graphics/nxglib/nxglib_splitline.c
index 31d6949adaa1a0dc7cfde5b9c2532d69f905c6b5..5cc33fd2bd49cfd751a169d3c19f8772551636fb 100644
--- a/graphics/nxglib/nxglib_splitline.c
+++ b/graphics/nxglib/nxglib_splitline.c
@@ -226,7 +226,7 @@ int nxgl_splitline(FAR struct nxgl_vector_s *vector,
    */
 
   angle        = b16atan2(itob16(iheight), itob16(iwidth));
-  triheight    = b16toi(linewidth * b16cos(angle));
+  triheight    = b16toi(linewidth * b16cos(angle) + b16HALF);
   halfheight   = (triheight >> 1);
 
   /* If the sine of the angle is tiny (i.e., the line is nearly horizontal),