linux-2.6.34-lpc32xx.git
9 years agousbgadget: lpc32xx: Various fixes and improvements
Kevin Wells [Sat, 19 Feb 2011 00:03:07 +0000]
usbgadget: lpc32xx: Various fixes and improvements

This patch fixes many problems with the LPC32xx USB gadget driver.
Most of the fixes fix issues reported by multiple sources.

A complete list of the fixes is below:
 - Removed unused fields in lpc32xx_udc structure
 - Switched I2C control functions to work queues to prevent blocked
   I2C transactions during USB operation. This effects VBUS control,
   power control, and the USB pullup
 - Re-write of all the spinlock handling to work around spinlock issues
 - All non-DMA code has been removed. Driver is now DMA only.
 - Remove isp1301 references to support Micrel and Max parts
 - Fixed some of the state logic for the protocol engine
 - All while() loops now have timeouts, they should never hit them
 - Fixed an issue with USB speed variable that would kill connection
 - Changed "Device error" from an error to a warning. These messages
   usually indicate problems (noisy transfers, bad cable, etc), but
   usually self-correcting
 - Revised IN EP ZLP transfer to send ZLP when transfer size is 2x
   or greater than the max packet size and is an exact divider of
   the MAXP size. The ZLP will be sent right away if buffer space
   is available, but will be handled by the EP status IRQ if it has
   to be deferred.
 - Removed un-needed checks from udc_read_hwep() and udc_write_hwep()
 - Fixed isochronous EP support with OUT packets
 - Added extra checks in udc_handle_eps() to guard against spurious
   or unexpected interrupts, calls with requests, or calls when the
   FIFO is full
 - Removed unused and incorrect code about the 'wierd underrun issue'
 - Rewrite of lpc32xx_vbus_session to wait for gadget to fully shut
   down all EPs
 - Fixed an issue in the IRQ handlers where a status in DEVSTAT
   could get inadertently cleared and unhandled

Reported-by: Andy Green <andy@warmcat.com>
Reported-by: Trevor Willington <twellington@smarttech.com>
Signed-off-by: Bakki Srinivas <srinivas.bakki@nxp.com>
Signed-off-by: Kevin Wells <kevin.wells@nxp.com>

modified:   drivers/usb/gadget/lpc32xx_udc.c
modified:   drivers/usb/gadget/lpc32xx_udc.h

9 years agoarm: lpc32xx: Improve early serial initialization
Kevin Wells [Fri, 18 Feb 2011 23:05:51 +0000]
arm: lpc32xx: Improve early serial initialization

For the standard serial ports, run the FIFO clear to work around the HW
bug even if the UARTs are not used. For the high speed UARTs, revise the
base clock speed to use PCLK, not the OSC clock. Some code reorganization
for size optimization.

9 years agoMerge branch 'master' of lpclinux.com:linux-2.6.34-lpc32xx
Kevin Wells [Wed, 16 Feb 2011 01:04:23 +0000]
Merge branch 'master' of lpclinux.com:linux-2.6.34-lpc32xx

9 years agoserial: lpc32xx_hsuart: Fix console support
Kevin Wells [Wed, 16 Feb 2011 01:02:56 +0000]
serial: lpc32xx_hsuart: Fix console support

The console structure's data field pointed to an empty UART data
structure. This prevented the console from working correctly.

9 years agoARM: LPC32XX: Adding SD-Card support for FDI3250 board
Sundar Andithevar [Tue, 8 Feb 2011 08:52:41 +0000]
ARM: LPC32XX: Adding SD-Card support for FDI3250 board

Added platform device entry for SD-MMC card.

Signed-off-by: Sundar Andithevar <sundarapandian.andithevar@nxp.com>

9 years agoARM: LPC32XX: Adding SD-Card support for FDI3250 board
Sundar Andithevar [Tue, 8 Feb 2011 08:47:26 +0000]
ARM: LPC32XX: Adding SD-Card support for FDI3250 board

Removed trailing space from the fdi3250 platform file.

Signed-off-by: Sundar Andithevar <sundarapandian.andithevar@nxp.com>

9 years agoARM: LPC32XX: Move GPIO mux reg constants to platform.h file
Kevin Wells [Fri, 28 Jan 2011 16:49:08 +0000]
ARM: LPC32XX: Move GPIO mux reg constants to platform.h file

These constants have been moved to the global platform.h file
instead of the local gpiolib.c file as they may need visibility
outside of gpiolib and are not used in gpiolib.

Signed-off-by: Kendrick Hamilton <hamilton@sedsystems.ca>

9 years agoARM: LPC32XX: Fix incorrect initial setup of SIC/SIC1 APR and ATR
Kevin Wells [Fri, 28 Jan 2011 16:41:43 +0000]
ARM: LPC32XX: Fix incorrect initial setup of SIC/SIC1 APR and ATR

The IRQ driver's initial SIC1 and SIC2 polarity and type values were
setup with the MIC values. This patch fixes that.

Signed-off-by: Henry Li <Henry.Li@climax.com.tw>

9 years agoVarious power management updates and enhancements linux-2.6.34-lpc32x0_v1.07
Kevin Wells [Tue, 18 Jan 2011 20:00:30 +0000]
Various power management updates and enhancements

Added CPU standby mode for interrupt level wakeup
Added several missing IRQs for wakeup
Fixed some defines
Fixed ethernet support so it goes into a lower power state on sleep
Added suspend/resume for AMBA CLCD for disabling/enabling clocks

Signed-off-by: Martin Chaplet <m.chaplet@kerlink.fr>

9 years agoARM: LPC32xx: Add TSC driver for platform driver array
Kevin Wells [Tue, 18 Jan 2011 19:27:02 +0000]
ARM: LPC32xx: Add TSC driver for platform driver array

Add missing TSC driver to the platform driver initialization
array.

9 years agoARM: LPC32xx: Power management mem suspend/resume enhancements
Kevin Wells [Tue, 18 Jan 2011 19:06:48 +0000]
ARM: LPC32xx: Power management mem suspend/resume enhancements

Add a data cache flush prior to icache invalidation after moving the
system suspend image to IRAM. Move the allocation of the IRAM backup
buffer out of the suspend function to prevent possible blocking
issues with kmalloc().

9 years agoi2c-pnx: Enable clocking only during transfers
Kevin Wells [Tue, 18 Jan 2011 19:05:34 +0000]
i2c-pnx: Enable clocking only during transfers

To help reduce power usage during non-I2C transactions, setup I2C
clocking to only come on when an I2C transaction is in progress or
when the I2C peripheral registers need to be accessed.

9 years agoARM: LPC32xx: Suspend code tweaks
Kevin Wells [Tue, 18 Jan 2011 01:29:44 +0000]
ARM: LPC32xx: Suspend code tweaks

Fix issue with PCLK loss when switching from run to DRUN mode by
forcing PCLK divider to 1 prior to switch. Disable stop mode bit
early in system bring-up.

9 years agoserial: LPC32XX_hsuart: More spinlock issue corrections
Kevin Wells [Tue, 18 Jan 2011 01:23:39 +0000]
serial: LPC32XX_hsuart: More spinlock issue corrections

tty_flip_buffer_push() should not be called in locked context.
Removed locks for some functions that were already called with
locks enabled, added locks for some that should be locked.
Added lock for _startup for safety.

9 years agoSerial: LPC32xx_hsuart: Fix spinlock issues
Kevin Wells [Tue, 18 Jan 2011 00:29:22 +0000]
Serial: LPC32xx_hsuart: Fix spinlock issues

Signed-off-by: Andy Green <andy@warmcat.com>

9 years agoRTC: LPC32xx: Improve RTC invalid state detection
Kevin Wells [Mon, 10 Jan 2011 22:30:44 +0000]
RTC: LPC32xx: Improve RTC invalid state detection

When a power cut of few seconds occurs (time depending on the board power
stage), RTC SRAM can be corrupted. When the RTC voltage starts to deteriorate,
bits in the RTC register change state. But if the key register stays valid and
other bits in the RTC like the up/down time change and the system is repowered
on with the key register still valid, the software will think the RTC is ok.

In these cases, you can see some weird dates like 2035, 1982, ...

This patch uses the down counter value to validate the up counter one (it must
be equal to u32 inverted up counter value). If values don't match, it reset
both counters.

Signed-off by: Martin Chaplet <m.chaplet@kernlink.fr>

9 years agoARM: LPC32xx: Fix mutex lock issues got clock driver
Kevin Wells [Mon, 10 Jan 2011 22:17:55 +0000]
ARM: LPC32xx: Fix mutex lock issues got clock driver

On some cases, the clock drivers could grab a mutex twice in an
improper context. This patch changes the mutec mechanism to a
simlpe irq lock/unlock mechanism and removes un-needed locks from
some functions.

9 years agoARM: LPC32xx: Changed 'o' to 'on'. Simple comment fix only.
Kevin Wells [Mon, 10 Jan 2011 22:17:17 +0000]
ARM: LPC32xx: Changed 'o' to 'on'. Simple comment fix only.

9 years agoARM: LPC32xx: Fixed structures improperly tagged with __init
Kevin Wells [Mon, 10 Jan 2011 22:14:21 +0000]
ARM: LPC32xx: Fixed structures improperly tagged with __init

Several platform structure related to NAND were improperly tagged
with the __init flag and were cleared after init. When modules or
functions that examined the platform data list were used, the system
would crash. This patch fixes that.

9 years agoiARM:LPC32XX: Updated NAND driver with inverted ECC linux-2.6.34-lpc32x0_v1.06a
Kevin Wells [Wed, 22 Dec 2010 20:56:06 +0000]
iARM:LPC32XX: Updated NAND driver with inverted ECC

9 years agoI2C:I2c-PNX: Add SMBus support to the I2C driver
Kevin Wells [Wed, 22 Dec 2010 20:55:39 +0000]
I2C:I2c-PNX: Add SMBus support to the I2C driver

9 years agoARM: LPC32XX: LPC32XX system defconfig updates linux-2.6.34-lpc32x0_v1.06
Kevin Wells [Tue, 21 Dec 2010 16:44:29 +0000]
ARM: LPC32XX: LPC32XX system defconfig updates

EA, FDI, and PHY _defconfig files have been updated with some small
tweaks to be more consistent with each other

9 years agoARM: LPC32XX: NAND related updates
Kevin Wells [Tue, 21 Dec 2010 16:43:03 +0000]
ARM: LPC32XX: NAND related updates

NAND partitions for large page systems have been reorganized to use
less space (EA, FDI boards). Several data structure not marked as
__initdata are now correctly marked.

9 years agoARM: LPC32xx: Added missing donfig file and FDI3250 platform file linux-2.6.34_lpc32x0_v1.05
Kevin Wells [Tue, 14 Dec 2010 18:30:16 +0000]
ARM: LPC32xx: Added missing donfig file and FDI3250 platform file

9 years agoARM: LPC32xx: Fix gpio00 name, was gpi000, is gpio00
Kevin Wells [Tue, 14 Dec 2010 18:17:29 +0000]
ARM: LPC32xx: Fix gpio00 name, was gpi000, is gpio00

10 years agoFixed display programming limits for EA and FDI boards.
Kevin Wells [Fri, 1 Oct 2010 13:39:23 +0000]
Fixed display programming limits for EA and FDI boards.
Fixed an issue where the VSYNC check would fail if it was over 32.

10 years agoAdded initial support for the FDI3250 board for kernel linux-2.6.34_lpc32x0_v1.04
Kevin Wells [Fri, 24 Sep 2010 16:38:00 +0000]
Added initial support for the FDI3250 board for kernel
version 2.6.34

10 years agoUpdated AMBA clcd limit check linux-2.6.34_lpc32x0_v1.03
Kevin Wells [Fri, 20 Aug 2010 19:58:41 +0000]
Updated AMBA clcd limit check

10 years agoFix an issue with DMA when sending a ZLP using non-DMA mode.
Kevin Wells [Fri, 20 Aug 2010 17:27:24 +0000]
Fix an issue with DMA when sending a ZLP using non-DMA mode.

10 years agoMajor rewrite of RTC driver with review comments from RTC subgroup
Kevin Wells [Wed, 18 Aug 2010 18:27:32 +0000]
Major rewrite of RTC driver with review comments from RTC subgroup
Based on v4 RCT release to mainline

10 years agoFixed GPIO_SSEL0 default state to output (from input). Fixes an
Kevin Wells [Wed, 18 Aug 2010 17:19:39 +0000]
Fixed GPIO_SSEL0 default state to output (from input). Fixes an
issue with the LCD SPI CS remaining driven and holding the SPI
data bus when other SPI peripherals are in use.

10 years agoRemoved enabled of USB host and gadget simultaneously. Only host is
Kevin Wells [Wed, 18 Aug 2010 16:55:07 +0000]
Removed enabled of USB host and gadget simultaneously. Only host is
enabled now.

10 years agoUpdate 1 of the 2.6.34 linux kernel release linux-2.6.34_lpc32x0_v1.02
Kevin Wells [Fri, 16 Jul 2010 15:57:38 +0000]
Update 1 of the 2.6.34 linux kernel release

    *  Fixed an issue with USB clock/enable disable that could sometimes prevent USB clock from starting
    * Revised SD card clock rate set, get, and rounding functions
    * Fixed scatter/gather linked list support (fixes an audio issue)
    * Added support in DMA driver for scatter/gather specific for NAND and software burst enable
    * Fixed a potential compilation issue in the ea3250.c file when the LCD is disabled
    * Re-sized and added/removed MTD partitions for NAND for EA and Phytec boards
    * Added DMA support for NAND/MTD for EA and Phytec boards
    * Fixed an issue with gpiolib that would return a wrong state for GPIO banks 3 input pins
    * Fixed several incorrectly named definitions (was LCP, now LPC)
    * Removed wakeup event clear logic from IRQ driver when interrupt is cleared, not needed
    * SD/MMC driver data handling completely re-written, now supports scatter/gather and is better optimized
    * Updated card detect, write protect, and power control logic for the SD card controller driver for the Phytec board (uses driver functions now instead of callbacks)
    * Added a simple GPIO interrupt and event wakeup example for the Phytec board using the BTN1 button
    * Added wakeup support to the touchscreen driver
    * Added suspend/resume functions to the high speed UART driver
    * NAND/MTD driver now supports hardware ECC
    * Fixed and improved alarm functions in the RTC driver
    * Fixed and enabled gadget driver DMA support
    * Fixed an issue with the gadget driver where the USB D pulldown would get stuck asserted when the module was removed
    * Fixed several clock crash issues with the gadget driver related to module removal and cable removal
    * Added default configurations in arch/arm/configs for the EA3250 and PHY3250 boards

10 years agoInitial 2.6.34 kernel release for the LPC32xx linux-2.6.34_lpc32x0_v1.00
Kevin Wells [Mon, 12 Jul 2010 15:14:55 +0000]
Initial 2.6.34 kernel release for the LPC32xx

10 years agoCheck-in of baseline 2.6.34 tree baseline
Kevin Wells [Mon, 12 Jul 2010 15:06:22 +0000]
Check-in of baseline 2.6.34 tree