kernel/kernel-generic.git
15 years agoARM: S5PC100: Clock and PLL support
Byungho Min [Tue, 23 Jun 2009 12:39:56 +0000 (21:39 +0900)]
ARM: S5PC100: Clock and PLL support

S5PC100 has 4 PLLs (APLL,MPLL,EPLL,HPLL) and 3 clock domains. Clock scheme is
implemented here.

Signed-off-by: Byungho Min <bhmin@samsung.com>
[ben-linux@fluff.org: edited title]
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S5PC100: IRQ and timer
Byungho Min [Tue, 23 Jun 2009 12:40:03 +0000 (21:40 +0900)]
ARM: S5PC100: IRQ and timer

S5PC100 has 3 VICs(Vectored Interrupt Controller). The VICs come from S3C64xx
series, so the driver source code can be shared with S3C families. The S5PC100
has 3 VICs while S3C64xx has only 2.

Signed-off-by: Byungho Min <bhmin@samsung.com>
[ben-linux@fluff.org: subject fixup]
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S5PC100: GPIO and I2C
Byungho Min [Tue, 23 Jun 2009 12:40:22 +0000 (21:40 +0900)]
ARM: S5PC100: GPIO and I2C

S5PC100 has more GPIO group then previous one. It has 34 groups of GPIO, while
S3C6410 has 17 groups. For now, only header files are written.

Signed-off-by: Byungho Min <bhmin@samsung.com>
[ben-linux@fluff.org: subject fixup]
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S5PC100: CPU initialization
Byungho Min [Tue, 23 Jun 2009 12:40:15 +0000 (21:40 +0900)]
ARM: S5PC100: CPU initialization

Signed-off-by: Byungho Min <bhmin@samsung.com>
[ben-linux@fluff.org: subject fixup]
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S5PC100: UART and Serial
Byungho Min [Tue, 23 Jun 2009 12:40:09 +0000 (21:40 +0900)]
ARM: S5PC100: UART and Serial

Serial driver of S5PC100 is the same as S3C6400, so S5PC100 shares the serial
driver with S3C6400. Uart driver is copied from plat-s3c64xx to plat-s5pc1xx,
as I do not use plat-s3c64xx directory.

Signed-off-by: Byungho Min <bhmin@samsung.com>
[ben-linux@fluff.org: title fixup]
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S5PC100: Memory map
Byungho Min [Tue, 23 Jun 2009 12:39:49 +0000 (21:39 +0900)]
ARM: S5PC100: Memory map

S5PC100's the physical IO space starts at 0xe000"0000. To maximize space for
vmalloc, the virtual IO space starts at 0xf400"0000 as same as other samsung
CPUs(s3c24xx and s3c64xx) do.

Signed-off-by: Byungho Min <bhmin@samsung.com>
[ben-linux@fluff.org: subject and description fixup]
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoMerge branch 'next-s3c64xx-moves' into next-s3c
Ben Dooks [Fri, 14 Aug 2009 14:24:06 +0000 (15:24 +0100)]
Merge branch 'next-s3c64xx-moves' into next-s3c

15 years agoMerge branch 'next-s3c64xx' into next-s3c
Ben Dooks [Fri, 14 Aug 2009 14:24:01 +0000 (15:24 +0100)]
Merge branch 'next-s3c64xx' into next-s3c

15 years agoMerge branch 'next-s3c24xx-cpufreq' into next-s3c
Ben Dooks [Fri, 14 Aug 2009 14:23:45 +0000 (15:23 +0100)]
Merge branch 'next-s3c24xx-cpufreq' into next-s3c

15 years agoMerge branch 'next-s3c24xx' into next-s3c
Ben Dooks [Fri, 14 Aug 2009 14:23:34 +0000 (15:23 +0100)]
Merge branch 'next-s3c24xx' into next-s3c

15 years agoMerge branch 'next-s3c-machines' into next-s3c
Ben Dooks [Fri, 14 Aug 2009 14:23:22 +0000 (15:23 +0100)]
Merge branch 'next-s3c-machines' into next-s3c

15 years agoMerge branch 'next-s3c-hwmon' into next-s3c
Ben Dooks [Fri, 14 Aug 2009 14:23:15 +0000 (15:23 +0100)]
Merge branch 'next-s3c-hwmon' into next-s3c

15 years agoARM: S3C24XX: Add SPI bus 1 on GPD8 through GPD10
Ben Dooks [Mon, 3 Aug 2009 16:26:50 +0000 (17:26 +0100)]
ARM: S3C24XX: Add SPI bus 1 on GPD8 through GPD10

Add configuration callback for SPI bus 1 on GPD[8..10] and ensure the
correct GPIO configuration register definitions in regs-gpio.h

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C24XX: Add platform device for AC97 controller
Mark Brown [Wed, 5 Aug 2009 17:29:57 +0000 (18:29 +0100)]
ARM: S3C24XX: Add platform device for AC97 controller

Move the definition of the "generic" IRQ in the process.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C24XX: Add FIQ IRQ routing support
Ben Dooks [Mon, 3 Aug 2009 16:26:57 +0000 (17:26 +0100)]
ARM: S3C24XX: Add FIQ IRQ routing support

Add support for routing an IRQ from the normal ARM IRQ mechanism to the
FIQ input of the processor.

Note, also fix a bug where the init_FIQ() function has not been called
when CONFIG_FIQ is enabled.

Signed-off-by; Ben Dooks <ben@simtec.co.uk>

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C: Move S3C64xx audio devices into S3C64xx directory
Mark Brown [Wed, 5 Aug 2009 17:21:57 +0000 (18:21 +0100)]
ARM: S3C: Move S3C64xx audio devices into S3C64xx directory

Allowing us to make the Kconfig a little bit saner.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C64XX: Add address mapping for AC97 controller
Mark Brown [Wed, 5 Aug 2009 17:21:59 +0000 (18:21 +0100)]
ARM: S3C64XX: Add address mapping for AC97 controller

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C64XX: Add mapping for IISv4 port
Mark Brown [Tue, 4 Aug 2009 15:25:12 +0000 (16:25 +0100)]
ARM: S3C64XX: Add mapping for IISv4 port

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C64XX: Add UART2,UART3 support for SMDK6410 (resend)
Matt Hsu [Mon, 29 Jun 2009 11:03:41 +0000 (19:03 +0800)]
ARM: S3C64XX: Add UART2,UART3 support for SMDK6410 (resend)

Add proper uartcfg for UART port 2,3 and tidy it up on SMDK6410.

Signed-off-by: Matt Hsu <matt@0xlab.org>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: NCP: make ncp_iodesc static and move it to initdata section
Marek Szyprowski [Wed, 24 Jun 2009 06:05:43 +0000 (08:05 +0200)]
ARM: NCP: make ncp_iodesc static and move it to initdata section

Make ncp_iodesc struct static to clean a public namespace a bit and move
it to __initdata section to save memory a bit.

Reviewed-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C: move timer/pwm handling from plat-s3c24xx to plat-s3c
Peter Korsgaard [Wed, 1 Jul 2009 15:47:07 +0000 (17:47 +0200)]
ARM: S3C: move timer/pwm handling from plat-s3c24xx to plat-s3c

The s3c64xx devices use the same hardware core as s3c24xx, so move
the timer/pwm handling to plat-s3c so it can be used by both.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C: move s3c_device_nand from plat-s3c24xx to plat-s3c
Peter Korsgaard [Wed, 1 Jul 2009 15:47:06 +0000 (17:47 +0200)]
ARM: S3C: move s3c_device_nand from plat-s3c24xx to plat-s3c

Move the s3c_device_nand platform device from plat-s3c24xx to plat-s3c,
now that the nand driver also support the s3c64xx devices.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C6410: airgoo hmt board support
Peter Korsgaard [Wed, 1 Jul 2009 15:47:09 +0000 (17:47 +0200)]
ARM: S3C6410: airgoo hmt board support

Add support for the Airgoo HMT (home media terminal) device.
The HMT is a tablet device with a s3c6410, a 7" LCD and a number
of peripheral connections.

For more details of the hardware specs, see:
http://article.gmane.org/gmane.linux.debian.devel.embedded/4307

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
[ben-linux@fluff.org: subject rewrite]
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C: CPUFREQ: Add debugfs support for cpufreq
Ben Dooks [Thu, 30 Jul 2009 22:23:42 +0000 (23:23 +0100)]
ARM: S3C: CPUFREQ: Add debugfs support for cpufreq

Add debugfs support for the cpufreq driver to allow
information about the system state to be exported to
the user.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C: CPUFREQ: Add documentation for system
Ben Dooks [Thu, 30 Jul 2009 22:23:41 +0000 (23:23 +0100)]
ARM: S3C: CPUFREQ: Add documentation for system

Add documentation for the S3C24XX style CPUFREQ driver.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C2410: Add armclk for cpufreq support
Ben Dooks [Thu, 30 Jul 2009 22:23:40 +0000 (23:23 +0100)]
ARM: S3C2410: Add armclk for cpufreq support

Add armclk for use with the cpufreq support and anything
else that may want it. This clock is just a direct
descendant of fclk.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: BAST: CPUFREQ: Add board support
Ben Dooks [Thu, 30 Jul 2009 22:23:39 +0000 (23:23 +0100)]
ARM: BAST: CPUFREQ: Add board support

Add board support for CPUFREQ with the Simtec BAST board
registering the necessary information with the core.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C2410: Add S3C2410A sysdev.
Ben Dooks [Thu, 30 Jul 2009 22:23:38 +0000 (23:23 +0100)]
ARM: S3C2410: Add S3C2410A sysdev.

Add a sysdev S3C2410A sysdev to allow the differentiation
of the S3C2410A from the S3C2410. This is needed for the
CPUFREQ code to enable the extra features and update cpu
specific information.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C24XX: CPUFREQ: S3C2412/S3C2443 IO timing support
Ben Dooks [Thu, 30 Jul 2009 22:23:37 +0000 (23:23 +0100)]
ARM: S3C24XX: CPUFREQ: S3C2412/S3C2443 IO timing support

Add IO bank timing support for S3C2412/S3C2443.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C2412: Update memory register mapping and definitions
Ben Dooks [Thu, 30 Jul 2009 22:23:36 +0000 (23:23 +0100)]
ARM: S3C2412: Update memory register mapping and definitions

Update the mapping of the memory controler registers and
add the missing definitions of the register block for the
SSMC.

The register contents definitions can be found in the pl093
header.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C: Update CPU register mapping practices.
Ben Dooks [Thu, 30 Jul 2009 22:23:35 +0000 (23:23 +0100)]
ARM: S3C: Update CPU register mapping practices.

Currently map-base.h defines the main virtual address mappings made
for all the support S3C SoC series, but does not then define any base
for per-cpu mappings to be made from.

Add S3C_ADDR_CPU() macro to define an virtual address as an offset
from the last of the core mappings.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: PL093: Header file for PL093 SSMC PrimeCell
Ben Dooks [Thu, 30 Jul 2009 22:23:34 +0000 (23:23 +0100)]
ARM: PL093: Header file for PL093 SSMC PrimeCell

Header to define the standard registers for an
PL093 SSMC memory controller.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C2412: CPUFREQ: Add core support.
Ben Dooks [Thu, 30 Jul 2009 22:23:33 +0000 (23:23 +0100)]
ARM: S3C2412: CPUFREQ: Add core support.

Add core support for frequency scaling on the S3C2412 SoC.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: OSIRIS: CPUFREQ: Add CPU frequency scaling support
Ben Dooks [Thu, 30 Jul 2009 22:23:32 +0000 (23:23 +0100)]
ARM: OSIRIS: CPUFREQ: Add CPU frequency scaling support

Add CPU frequency scalling support to the Simtec Osiris.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C2440: CPUFREQ: Add crystal frequency Kconfig entries.
Ben Dooks [Thu, 30 Jul 2009 22:23:31 +0000 (23:23 +0100)]
ARM: S3C2440: CPUFREQ: Add crystal frequency Kconfig entries.

Add entries to select the crystal to select for each different
supported board. This information is then available for anything
else requiring this, such as the CPUFreq PLL tables.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C2440: CPUFREQ: Add PLL tables
Ben Dooks [Thu, 30 Jul 2009 22:23:30 +0000 (23:23 +0100)]
ARM: S3C2440: CPUFREQ: Add PLL tables

Add PLL tables for the S3C2440.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C2440: CPUFREQ: Add core support.
Ben Dooks [Thu, 30 Jul 2009 22:23:29 +0000 (23:23 +0100)]
ARM: S3C2440: CPUFREQ: Add core support.

Add core support for frequency scaling on the S3C2440 SoC.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C2410: CPUFREQ: Add PLL table
Ben Dooks [Thu, 30 Jul 2009 22:23:28 +0000 (23:23 +0100)]
ARM: S3C2410: CPUFREQ: Add PLL table

Add PLL table for the S3C2410 SoC.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C2410: CPUFREQ: Add core support.
Ben Dooks [Thu, 30 Jul 2009 22:23:27 +0000 (23:23 +0100)]
ARM: S3C2410: CPUFREQ: Add core support.

Add core support for frequency scaling on the S3C2410 SoC.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C2410: CPUFREQ: Add io-timing support.
Ben Dooks [Thu, 30 Jul 2009 22:23:26 +0000 (23:23 +0100)]
ARM: S3C2410: CPUFREQ: Add io-timing support.

Add io-timing support for frequency scaling on the S3C2410 SoC.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: Add S3C24XX to CPUFreq KConfig
Ben Dooks [Thu, 30 Jul 2009 22:23:25 +0000 (23:23 +0100)]
ARM: Add S3C24XX to CPUFreq KConfig

Add the S3C24XX to the main ARM CPUFreq Kconfig support list.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: Add ARCH_HAS_CPUFREQ for presence of CPUFREQ driver
Ben Dooks [Thu, 30 Jul 2009 22:23:24 +0000 (23:23 +0100)]
ARM: Add ARCH_HAS_CPUFREQ for presence of CPUFREQ driver

Add ARCH_HAS_CPUFREQ so that each machine config can select
it if they have CPUFREQ driver support. This means that the
CPUFREQ specific area does not need the if statement updating
each time a new machine is added.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C: CPUFREQ: Move struct s3c_cpufreq_config to cpu-freq-core.h
Ben Dooks [Thu, 30 Jul 2009 22:23:23 +0000 (23:23 +0100)]
ARM: S3C: CPUFREQ: Move struct s3c_cpufreq_config to cpu-freq-core.h

Move the structure s3c_cpufreq_config from cpu-freq.h to the
less advertised cpu-freq-core.h as it is not needed by anything
outside the core drivers.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C: CPUFREQ: Documentation for cpufreq header
Ben Dooks [Thu, 30 Jul 2009 22:23:22 +0000 (23:23 +0100)]
ARM: S3C: CPUFREQ: Documentation for cpufreq header

Update arch/arm/plat-s3c/include/plat/cpu-freq.h to include kerneldoc
style documentation.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C24XX: CPUFREQ: Add core support.
Ben Dooks [Thu, 30 Jul 2009 22:23:21 +0000 (23:23 +0100)]
ARM: S3C24XX: CPUFREQ: Add core support.

Add the core of the support for enabling the CPUFreq driver on
all S3C24XX based systems.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoARM: S3C24XX: Add BWSCON per-bank information.
Ben Dooks [Thu, 30 Jul 2009 22:23:20 +0000 (23:23 +0100)]
ARM: S3C24XX: Add BWSCON per-bank information.

Add definitions and an accessor macro to deal with
reading bus information from S3C2410_BWSCON for any
given numbered bank.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoS3C64XX: Fix ARMCLK configuration
Mark Brown [Wed, 15 Jul 2009 12:03:35 +0000 (13:03 +0100)]
S3C64XX: Fix ARMCLK configuration

The value of armclk_mask needs to be inverted for use as a mask on
the register value when updating ARM_RATIO.

This is critical for cpufreq support, without it attempts to scale
the frequency of the core trash pretty much the entire clock tree.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoS3C64XX: Fix get_rate() for ARMCLK
Mark Brown [Wed, 15 Jul 2009 12:03:34 +0000 (13:03 +0100)]
S3C64XX: Fix get_rate() for ARMCLK

If the requested clock is faster than the parent clock then the
parent clock is the closest we can get to the request so we need
to return that instead of the requested clock.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agoS3C24XX: GPIO: Fix pin range check in s3c_gpiolib_getchip
Lars-Peter Clausen [Tue, 21 Jul 2009 22:33:06 +0000 (00:33 +0200)]
S3C24XX: GPIO: Fix pin range check in s3c_gpiolib_getchip

In the s3c_gpiolib_getchip implementation for s3c24xx the check whether a pin is
in the gpio banks range is reversed. Thus the function returns NULL for valid
pins and the gpio chip if its not valid.

As a result gpio states are not saved/restored properly during suspend/resume.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
15 years agokmemleak: Protect the seq start/next/stop sequence by rcu_read_lock()
Catalin Marinas [Wed, 29 Jul 2009 15:26:57 +0000 (16:26 +0100)]
kmemleak: Protect the seq start/next/stop sequence by rcu_read_lock()

Objects passed to kmemleak_seq_next() have an incremented reference
count (hence not freed) but they may point via object_list.next to
other freed objects. To avoid this, the whole start/next/stop sequence
must be protected by rcu_read_lock().

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
15 years agoMerge branch 'drm-radeon-kms' of git://git.kernel.org/pub/scm/linux/kernel/git/airlie...
Linus Torvalds [Wed, 29 Jul 2009 19:31:59 +0000 (12:31 -0700)]
Merge branch 'drm-radeon-kms' of git://git./linux/kernel/git/airlied/drm-2.6

* 'drm-radeon-kms' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (35 commits)
  drm/radeon: set fb aperture sizes for framebuffer handoff.
  drm/ttm: fix highuser vs dma32 confusion.
  drm/radeon: Fix size used for benchmarking BO copies.
  drm/radeon: Add radeon.test parameter for running BO GPU copy tests.
  drm/radeon/kms: allow interruptible waits for objects.
  drm/ttm: powerpc: Fix Highmem cache flushing.
  x86: Export kmap_atomic_prot() needed for TTM.
  drm/ttm: Fix ttm in-kernel copying of pages with non-standard caching attributes.
  drm/ttm: Fix an oops and sync object leak.
  drm/radeon/kms: vram sizing on certain r100 chips needs workaround.
  drm/radeon: Pay more attention to object placement requested by userspace.
  drm/radeon: Fall back to evicting BOs with memcpy if necessary.
  drm/radeon: Don't unreserve twice on failure to validate.
  drm/radeon/kms: fix bandwidth computation on avivo hardware
  drm/radeon/kms: add initial colortiling support.
  drm/radeon/kms: fix hotspot handling on pre-avivo chips
  drm/radeon/kms: enable frac fb divs on rs600/rs690/rs740
  drm/radeon/kms: add PLL flag to prefer frequencies <= the target freq
  drm/radeon/kms: block RN50 from using 3D engine.
  drm/radeon/kms: fix VRAM sizing like DDX does it.
  ...

15 years agoMerge branch 'zero-length' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik...
Linus Torvalds [Wed, 29 Jul 2009 19:30:54 +0000 (12:30 -0700)]
Merge branch 'zero-length' of git://git./linux/kernel/git/jgarzik/misc-2.6

* 'zero-length' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6:
  Remove zero-length file drivers/char/vr41xx_giu.c

15 years agoMerge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzi...
Linus Torvalds [Wed, 29 Jul 2009 19:29:39 +0000 (12:29 -0700)]
Merge branch 'upstream-linus' of git://git./linux/kernel/git/jgarzik/libata-dev

* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
  libata: accept late unlocking of HPA
  libata: Updates and fixes for pata_at91 driver
  ata_piix: Add new short cable ID
  ata_piix: Add new laptop short cable IDs
  ahci: add device IDs for Ibex Peak ahci controllers
  libata: remove superfluous NULL pointer checks
  libata: add missing NULL pointer check to ata_eh_reset()
  pata_pcmcia: add CNF-CDROM-ID

15 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6
Linus Torvalds [Wed, 29 Jul 2009 19:29:08 +0000 (12:29 -0700)]
Merge git://git./linux/kernel/git/gregkh/driver-core-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6:
  driver core: documentation: make it clear that sysfs is optional
  driver core: sysdev: do not send KOBJ_ADD uevent if kobject_init_and_add fails
  Dynamic debug: fix typo: -/->
  driver core: firmware_class:fix memory leak of page pointers array
  sysfs: fix hardlink count on device_move

15 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6
Linus Torvalds [Wed, 29 Jul 2009 19:28:49 +0000 (12:28 -0700)]
Merge git://git./linux/kernel/git/gregkh/staging-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6:
  staging: udlfb: Add vmalloc.h include
  staging: remove aten2011 driver
  Staging: android: lowmemorykiller.c: fix it for "oom: move oom_adj value from task_struct to mm_struct"
  Staging: serqt_usb2: fix memory leak in error case
  Staging: serqt_usb2: add missing calls to tty_kref_put()

15 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6
Linus Torvalds [Wed, 29 Jul 2009 19:28:23 +0000 (12:28 -0700)]
Merge git://git./linux/kernel/git/gregkh/usb-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (34 commits)
  USB: xhci: Stall handling bug fixes.
  USB: xhci: Support for 64-byte contexts
  USB: xhci: Always align output device contexts to 64 bytes.
  USB: xhci: Scratchpad buffer allocation
  USB: Fix parsing of SuperSpeed Endpoint Companion descriptor.
  USB: xhci: Fail gracefully if there's no SS ep companion descriptor.
  USB: xhci: Handle babble errors on transfers.
  USB: xhci: Setup HW retries correctly.
  USB: xhci: Check if the host controller died in IRQ handler.
  USB: xhci: Don't oops if the host doesn't halt.
  USB: xhci: Make debugging more verbose.
  USB: xhci: Correct Event Handler Busy flag usage.
  USB: xhci: Handle short control packets correctly.
  USB: xhci: Represent 64-bit addresses with one u64.
  USB: xhci: Use GFP_ATOMIC while holding spinlocks.
  USB: xhci: Deal with stalled endpoints.
  USB: xhci: Set TD size in transfer TRB.
  USB: xhci: fix less- and greater than confusion
  USB: usbtest: no need for USB_DEVICEFS
  USB: musb: fix CONFIGDATA register read issue
  ...

15 years agopty: avoid forcing 'low_latency' tty flag
OGAWA Hirofumi [Wed, 29 Jul 2009 19:15:56 +0000 (12:15 -0700)]
pty: avoid forcing 'low_latency' tty flag

We really don't want to mark the pty as a low-latency device, because as
Alan points out, the ->write method can be called from an IRQ (ppp?),
and that means we can't use ->low_latency=1 as we take mutexes in the
low_latency case.

So rather than using low_latency to force the written data to be pushed
to the ldisc handling at 'write()' time, just make the reader side (or
the poll function) do the flush when it checks whether there is data to
be had.

This also fixes the problem with lost data in an emacs compile buffer
(bugzilla 13815), and we can thus revert the low_latency pty hack
(commit 3a54297478e6578f96fd54bf4daa1751130aca86: "pty: quickfix for the
pty ENXIO timing problems").

Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Tested-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
[ Modified to do the tty_flush_to_ldisc() inside input_available_p() so
  that it triggers for both read and poll()  - Linus]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
15 years agodrm/radeon: set fb aperture sizes for framebuffer handoff.
Dave Airlie [Wed, 29 Jul 2009 07:07:38 +0000 (17:07 +1000)]
drm/radeon: set fb aperture sizes for framebuffer handoff.

This will allow efi/vesa to handoff to radeon.

Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/ttm: fix highuser vs dma32 confusion.
Dave Airlie [Wed, 29 Jul 2009 06:56:52 +0000 (16:56 +1000)]
drm/ttm: fix highuser vs dma32 confusion.

DMA32 and highmem are sort of exclusive.

Noticed by AndrewR on #radeon.

Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/radeon: Fix size used for benchmarking BO copies.
Michel Dänzer [Sun, 19 Jul 2009 23:44:03 +0000 (01:44 +0200)]
drm/radeon: Fix size used for benchmarking BO copies.

The incorrect size caused benchmark results to be inflated by a factor of 4.

Signed-off-by: Michel Dänzer <daenzer@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/radeon: Add radeon.test parameter for running BO GPU copy tests.
Michel Dänzer [Tue, 21 Jul 2009 09:23:57 +0000 (11:23 +0200)]
drm/radeon: Add radeon.test parameter for running BO GPU copy tests.

If enabled, during initialization BO GTT->VRAM and VRAM->GTT GPU copies are
tested across the whole GTT aperture.

This has helped uncover the benchmark copy size bug and verify the maximum
aperture size supported by the AGP bridge in my PowerBook.

Signed-off-by: Michel Dänzer <daenzer@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/radeon/kms: allow interruptible waits for objects.
Dave Airlie [Fri, 24 Jul 2009 03:47:45 +0000 (13:47 +1000)]
drm/radeon/kms: allow interruptible waits for objects.

Blocking here isn't something the X server mouse appreciates,
avoid the block and let userspace retry the waits.

libdrm_radeon userspace library is also expecting EBUSY not ERESTART

Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/ttm: powerpc: Fix Highmem cache flushing.
Thomas Hellstrom [Fri, 24 Jul 2009 08:22:36 +0000 (10:22 +0200)]
drm/ttm: powerpc: Fix Highmem cache flushing.

Temporarily maps highmem pages while flushing to get a valid virtual
address to flush.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agox86: Export kmap_atomic_prot() needed for TTM.
Thomas Hellstrom [Fri, 24 Jul 2009 07:57:33 +0000 (09:57 +0200)]
x86: Export kmap_atomic_prot() needed for TTM.

This functionality is needed to kmap_atomic() highmem pages that may
potentially have or are about to set up other mappings with
non-standard caching attributes.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/ttm: Fix ttm in-kernel copying of pages with non-standard caching attributes.
Thomas Hellstrom [Fri, 24 Jul 2009 07:57:34 +0000 (09:57 +0200)]
drm/ttm: Fix ttm in-kernel copying of pages with non-standard caching attributes.

For x86 this affected highmem pages only, since they were always kmapped
cache-coherent, and this is fixed using kmap_atomic_prot().

For other architectures that may not modify the linear kernel map we
resort to vmap() for now, since kmap_atomic_prot() generally uses the
linear kernel map for lowmem pages. This of course comes with a
performance impact and should be optimized when possible.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/ttm: Fix an oops and sync object leak.
Thomas Hellstrom [Tue, 21 Jul 2009 15:45:13 +0000 (17:45 +0200)]
drm/ttm: Fix an oops and sync object leak.

The code was potentially dereferencig a NULL sync object pointer.
At the same time a sync object reference was potentially leaked.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/radeon/kms: vram sizing on certain r100 chips needs workaround.
Dave Airlie [Tue, 21 Jul 2009 10:39:30 +0000 (20:39 +1000)]
drm/radeon/kms: vram sizing on certain r100 chips needs workaround.

If an rn50/r100/m6/m7 GPU has < 64MB RAM, i.e. 8/16/32, the
aperture used to calculate the MC_FB_LOCATION needs to be worked
out from the CONFIG_APER_SIZE register, and not the actual vram size.

TTM VRAM size was also being initialised wrong, use actual vram size
to initialise it.

Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/radeon: Pay more attention to object placement requested by userspace.
Michel Dänzer [Tue, 28 Jul 2009 10:30:57 +0000 (12:30 +0200)]
drm/radeon: Pay more attention to object placement requested by userspace.

Previously we were basically always setting the GTT and VRAM flags regardless of
what userspace requested.

Signed-off-by: Michel Dänzer <daenzer@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/radeon: Fall back to evicting BOs with memcpy if necessary.
Michel Dänzer [Tue, 28 Jul 2009 10:30:56 +0000 (12:30 +0200)]
drm/radeon: Fall back to evicting BOs with memcpy if necessary.

Otherwise if there's no GTT space we would fail the eviction, leading to
cascaded failure.

Signed-off-by: Michel Dänzer <daenzer@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/radeon: Don't unreserve twice on failure to validate.
Michel Dänzer [Tue, 28 Jul 2009 10:30:55 +0000 (12:30 +0200)]
drm/radeon: Don't unreserve twice on failure to validate.

This is done later in radeon_object_list_unvalidate(). Doing it twice triggers
a BUG in TTM, rendering X on KMS unusable until reboot.

Signed-off-by: Michel Dänzer <daenzer@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/radeon/kms: fix bandwidth computation on avivo hardware
Jerome Glisse [Mon, 13 Jul 2009 19:04:08 +0000 (21:04 +0200)]
drm/radeon/kms: fix bandwidth computation on avivo hardware

Fix bandwidth computation and crtc priority in memory controller
so that crtc memory request are fullfill in time to avoid display
artifact.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agodrm/radeon/kms: add initial colortiling support.
Dave Airlie [Tue, 23 Jun 2009 23:48:08 +0000 (09:48 +1000)]
drm/radeon/kms: add initial colortiling support.

This adds new set/get tiling interfaces where the pitch
and macro/micro tiling enables can be set. Along with
a flag to decide if this object should have a surface when mapped.

The only thing we need to allocate with a mapped surface should be
the frontbuffer. Note rotate scanout shouldn't require one, and
back/depth shouldn't either, though mesa needs some fixes.

It fixes the TTM interfaces along Thomas's suggestions, and I've tested
the surface stealing code with two X servers and not seen any lockdep issues.

I've stopped tiling the fbcon frontbuffer, as I don't see there being
any advantage other than testing, I've left the testing commands in there,
just flip the fb_tiled to true in radeon_fb.c

Open: Can we integrate endian swapping in with this?

Future features:
texture tiling - need to relocate texture registers TXOFFSET* with tiling info.

This also merges Michel's cleanup surfaces regs at init time patch
even though it makes sense on its own, this patch really relies on it.

Some PowerMac firmwares set up a tiling surface at the beginning of VRAM
which messes us up otherwise.
that patch is:
Signed-off-by: Michel Dänzer <daenzer@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
15 years agoRemove zero-length file drivers/char/vr41xx_giu.c
Jeff Garzik [Wed, 29 Jul 2009 02:36:59 +0000 (22:36 -0400)]
Remove zero-length file drivers/char/vr41xx_giu.c

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15 years agolibata: accept late unlocking of HPA
Tejun Heo [Wed, 15 Jul 2009 08:11:41 +0000 (17:11 +0900)]
libata: accept late unlocking of HPA

On certain configurations, HPA isn't or can't be unlocked during
probing but it somehow ends up unlocked afterwards.  In the following
thread, the problem can be reliably reproduced after resuming from
STR.  The BIOS turns on HPA during boot but forgets to do it during
resume.

  http://thread.gmane.org/gmane.linux.kernel/858310

This patch updates libata revalidation such that it considers native
n_sectors.  If the device size has increased to match native
n_sectors, it's assumed that HPA has been unlocked involuntarily and
the device is recognized as the same one.  This should be fairly safe
while nicely working around the problem.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Christof Warlich <christof@warlich.name>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15 years agolibata: Updates and fixes for pata_at91 driver
Sergey Matyukevich [Thu, 16 Jul 2009 18:38:55 +0000 (22:38 +0400)]
libata: Updates and fixes for pata_at91 driver

Please consider the following updates and fixes for pata_at91 driver.

* Removed extra headers
Here we need only static memory controller properties, which are
contained in generic header at91sam9_smc.h.
No need to include any specific headers for at91sam9260 SoC.

* No harsh BUG_ON for get_clk in set_smc_timing function
        get_clk is now performed in driver probing function,
        probing fails if master clock is not available

* Fixed uint/ulong mess in calc_mck_cycles function

Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15 years agoata_piix: Add new short cable ID
Steve Conklin [Thu, 16 Jul 2009 21:31:10 +0000 (16:31 -0500)]
ata_piix: Add new short cable ID

OriginalAuthor: Tony Espy <espy@canonical.com>
Signed-off-by: Steve Conklin <sconklin@canonical.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15 years agoata_piix: Add new laptop short cable IDs
Steve Conklin [Thu, 16 Jul 2009 21:27:56 +0000 (16:27 -0500)]
ata_piix: Add new laptop short cable IDs

OriginalAuthor: Michael Frey <michael.frey@canonical.com>
Signed-off-by: Steve Conklin <sconklin@canonical.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15 years agoahci: add device IDs for Ibex Peak ahci controllers
David Milburn [Wed, 22 Jul 2009 20:15:56 +0000 (15:15 -0500)]
ahci: add device IDs for Ibex Peak ahci controllers

Add device IDS for Ibex Peak SATA AHCI Controllers

Signed-off-by: Jaroslav Kysela <jkysela@redhat.com>
Signed-off-by: David Milburn <dmilburn@redhat.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15 years agolibata: remove superfluous NULL pointer checks
Bartlomiej Zolnierkiewicz [Sun, 26 Jul 2009 14:05:13 +0000 (16:05 +0200)]
libata: remove superfluous NULL pointer checks

host->ports[] always contain pointers to valid port structures since
a "dummy port" structure is used in case if there is no physical port.

This patch takes care of two entries from Dan's list:

drivers/ata/sata_sil.c +535 sil_interrupt(13) warning: variable derefenced before check 'ap'
drivers/ata/sata_mv.c +2517 mv_unexpected_intr(6) warning: variable derefenced before check 'ap'

and of another needless NULL pointer check in pata_octeon_cf.c.

Reported-by: Dan Carpenter <error27@gmail.com>
Cc: corbet@lwn.net
Cc: eteo@redhat.com
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15 years agolibata: add missing NULL pointer check to ata_eh_reset()
Bartlomiej Zolnierkiewicz [Sun, 26 Jul 2009 14:21:01 +0000 (16:21 +0200)]
libata: add missing NULL pointer check to ata_eh_reset()

drivers/ata/libata-eh.c +2403 ata_eh_reset(80) warning: variable derefenced before check 'slave'

Please note that this is _not_ a real bug at the moment since ata_eh_context
structure is embedded into ata_list structure and the code alwas checks for
'slave' before accessing 'sehc'.

Anyway lets add missing check and always have a valid 'sehc' pointer (which
makes code easier to understand and prevents introducing some possible bugs
in the future).

Reported-by: Dan Carpenter <error27@gmail.com>
Cc: corbet@lwn.net
Cc: eteo@redhat.com
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15 years agopata_pcmcia: add CNF-CDROM-ID
Wolfram Sang [Sun, 26 Jul 2009 16:27:29 +0000 (18:27 +0200)]
pata_pcmcia: add CNF-CDROM-ID

Fixes this report:
http://article.gmane.org/gmane.linux.kernel.pcmcia.devel/2228/

Reported-by: John McGrath <john@john-mcgrath.com>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
15 years agoUSB: xhci: Stall handling bug fixes.
Sarah Sharp [Mon, 27 Jul 2009 19:05:21 +0000 (12:05 -0700)]
USB: xhci: Stall handling bug fixes.

Correct the xHCI code to handle stalls on USB endpoints.  We need to move
the endpoint ring's dequeue pointer past the stalled transfer, or the HW
will try to restart the transfer the next time the doorbell is rung.

Don't attempt to clear a halt on an endpoint if we haven't seen a stalled
transfer for it.  The USB core will attempt to clear a halt on all
endpoints when it selects a new configuration.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoMerge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelv...
Linus Torvalds [Tue, 28 Jul 2009 21:31:13 +0000 (14:31 -0700)]
Merge branch 'hwmon-for-linus' of git://git./linux/kernel/git/jdelvare/staging

* 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
  hwmon: (asus_atk0110) Fix upper limit readings
  hwmon: (smsc47m1) Differentiate between LPC47M233 and LPC47M292

15 years agoUSB: xhci: Support for 64-byte contexts
John Youn [Mon, 27 Jul 2009 19:05:15 +0000 (12:05 -0700)]
USB: xhci: Support for 64-byte contexts

Adds support for controllers that use 64-byte contexts.  The following context
data structures are affected by this: Device, Input, Input Control, Endpoint,
and Slot.  To accommodate the use of either 32 or 64-byte contexts, a Device or
Input context can only be accessed through functions which look-up and return
pointers to their contained contexts.

Signed-off-by: John Youn <johnyoun@synopsys.com>
Acked-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Always align output device contexts to 64 bytes.
Sarah Sharp [Mon, 27 Jul 2009 19:05:08 +0000 (12:05 -0700)]
USB: xhci: Always align output device contexts to 64 bytes.

Make sure the xHCI output device context is 64-byte aligned.  Previous
code was using the same structure for both the output device context and
the input control context.  Since the structure had 32 bytes of flags
before the device context, the output device context wouldn't be 64-byte
aligned.  Define a new structure to use for the output device context and
clean up the debugging for these two structures.

The copy of the device context in the input control context does *not*
need to be 64-byte aligned.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Scratchpad buffer allocation
John Youn [Mon, 27 Jul 2009 19:05:03 +0000 (12:05 -0700)]
USB: xhci: Scratchpad buffer allocation

Allocates and initializes the scratchpad buffer array (XHCI 4.20).  This is an
array of 64-bit DMA addresses to scratch pages that the controller may use
during operation.  The number of pages is specified in the "Max Scratchpad
Buffers" field of HCSPARAMS2.  The DMA address of this array is written into
slot 0 of the DCBAA.

Signed-off-by: John Youn <johnyoun@synopsys.com>
Acked-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: Fix parsing of SuperSpeed Endpoint Companion descriptor.
Sarah Sharp [Mon, 27 Jul 2009 19:04:52 +0000 (12:04 -0700)]
USB: Fix parsing of SuperSpeed Endpoint Companion descriptor.

usb_parse_ss_endpoint_companion() was supposed to allocate a structure to
hold the SuperSpeed Endpoint Companion descriptor, and either copy the
values the device returned, or fill in default values if the device
descriptor did not include the companion descriptor.

However, the previous code would miss the last endpoint in a configuration
with no descriptors after it.  Make usb_parse_endpoint() allocate the SS
endpoint companion descriptor and fill it with default values, even if
we've run out of buffer space in this configuration descriptor.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Fail gracefully if there's no SS ep companion descriptor.
Sarah Sharp [Mon, 27 Jul 2009 19:04:38 +0000 (12:04 -0700)]
USB: xhci: Fail gracefully if there's no SS ep companion descriptor.

This is a work around for a bug in the SuperSpeed Endpoint Companion Descriptor
parsing code.  It fails in some corner cases, which means ep->ss_ep_comp may be
NULL.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Handle babble errors on transfers.
Sarah Sharp [Mon, 27 Jul 2009 19:04:32 +0000 (12:04 -0700)]
USB: xhci: Handle babble errors on transfers.

Pass back a babble error when this error code is seen in the transfer event TRB.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Setup HW retries correctly.
Sarah Sharp [Mon, 27 Jul 2009 19:04:27 +0000 (12:04 -0700)]
USB: xhci: Setup HW retries correctly.

The xHCI host controller can be programmed to retry a transfer a certain number
of times per endpoint before it passes back an error condition to the host
controller driver.  The xHC will return an error code when the error count
transitions from 1 to 0.  Programming an error count of 3 means the xHC tries
the transfer 3 times, programming it with a 1 means it tries to transfer once,
and programming it with 0 means the HW tries the transfer infinitely.

We want isochronous transfers to only be tried once, so set the error count to
one.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Check if the host controller died in IRQ handler.
Sarah Sharp [Mon, 27 Jul 2009 19:04:01 +0000 (12:04 -0700)]
USB: xhci: Check if the host controller died in IRQ handler.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Don't oops if the host doesn't halt.
Sarah Sharp [Mon, 27 Jul 2009 19:03:50 +0000 (12:03 -0700)]
USB: xhci: Don't oops if the host doesn't halt.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Make debugging more verbose.
Sarah Sharp [Mon, 27 Jul 2009 19:03:46 +0000 (12:03 -0700)]
USB: xhci: Make debugging more verbose.

Add more debugging to the irq handler, slot context initialization, ring
operations, URB cancellation, and MMIO writes.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Correct Event Handler Busy flag usage.
Sarah Sharp [Mon, 27 Jul 2009 19:03:40 +0000 (12:03 -0700)]
USB: xhci: Correct Event Handler Busy flag usage.

The Event Handler Busy bit in the event ring dequeue pointer is write 1 to
clear.  Fix the interrupt service routine to clear that bit after the
event handler has run.

xhci_set_hc_event_deq() is designed to update the event ring dequeue pointer
without changing any of the four reserved bits in the lower nibble.  The event
handler busy (EHB) bit is write one to clear, so the new value must always
contain a zero in that bit in order to preserve the EHB value.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Handle short control packets correctly.
Sarah Sharp [Mon, 27 Jul 2009 19:03:36 +0000 (12:03 -0700)]
USB: xhci: Handle short control packets correctly.

When there is a short packet on a control transfer, the xHCI host controller
hardware will generate two events.  The first event will be for the data stage
TD with a completion code for a short packet.  The second event will be for the
status stage with a successful completion code.  Before this patch, the xHCI
driver would giveback the short control URB when it received the event for the
data stage TD.  Then it would become confused when it saw a status stage event
for the endpoint for an URB it had already finished processing.

Change the xHCI host controller driver to wait for the status stage event when
it receives a short transfer completion code for a data stage TD.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Represent 64-bit addresses with one u64.
Sarah Sharp [Mon, 27 Jul 2009 19:03:31 +0000 (12:03 -0700)]
USB: xhci: Represent 64-bit addresses with one u64.

There are several xHCI data structures that use two 32-bit fields to
represent a 64-bit address.  Since some architectures don't support 64-bit
PCI writes, the fields need to be written in two 32-bit writes.  The xHCI
specification says that if a platform is incapable of generating 64-bit
writes, software must write the low 32-bits first, then the high 32-bits.
Hardware that supports 64-bit addressing will wait for the high 32-bit
write before reading the revised value, and hardware that only supports
32-bit writes will ignore the high 32-bit write.

Previous xHCI code represented 64-bit addresses with two u32 values.  This
lead to buggy code that would write the 32-bits in the wrong order, or
forget to write the upper 32-bits.  Change the two u32s to one u64 and
create a function call to write all 64-bit addresses in the proper order.
This new function could be modified in the future if all platforms support
64-bit writes.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Use GFP_ATOMIC while holding spinlocks.
Sarah Sharp [Mon, 27 Jul 2009 19:03:23 +0000 (12:03 -0700)]
USB: xhci: Use GFP_ATOMIC while holding spinlocks.

The xHCI functions to queue an URB onto the hardware rings must be called
with the xhci spinlock held.  Those functions will allocate memory, and
take a gfp_t memory flags argument.  We must pass them the GFP_ATOMIC
flag, since we don't want the memory allocation to attempt to sleep while
waiting for more memory to become available.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Deal with stalled endpoints.
Sarah Sharp [Mon, 27 Jul 2009 19:03:15 +0000 (12:03 -0700)]
USB: xhci: Deal with stalled endpoints.

When an endpoint on a device under an xHCI host controller stalls, the
host controller driver must let the hardware know that the USB core has
successfully cleared the halt condition.  The HCD submits a Reset Endpoint
Command, which will clear the toggle bit for USB 2.0 devices, and set the
sequence number to zero for USB 3.0 devices.

The xHCI urb_enqueue will accept new URBs while the endpoint is halted,
and will queue them to the hardware rings.  However, the endpoint doorbell
will not be rung until the Reset Endpoint Command completes.

Don't queue a reset endpoint command for root hubs.  khubd clears halt
conditions on the roothub during the initialization process, but the roothub
isn't a real device, so the xHCI host controller doesn't need to know about the
cleared halt.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: Set TD size in transfer TRB.
Sarah Sharp [Mon, 27 Jul 2009 19:03:07 +0000 (12:03 -0700)]
USB: xhci: Set TD size in transfer TRB.

The 0.95 xHCI specification requires software to set the "TD size" field
in each transaction request block (TRB).  This field gives the host
controller an indication of how much data is remaining in the TD
(including the buffer in the current TRB).  Set this field in bulk TRBs
and data stage TRBs for control transfers.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
15 years agoUSB: xhci: fix less- and greater than confusion
Roel Kluin [Sun, 12 Jul 2009 22:23:47 +0000 (00:23 +0200)]
USB: xhci: fix less- and greater than confusion

Without this change the loops won't start

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Cc: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>