Commit Graph

211805 Commits

Author SHA1 Message Date
Erik Gilling
99bf62514f video: tegra: don't enable display when mode is invalid
Change-Id: I84a494f7c125ceadbe39a681a8ed7cfa244a6a2b
Signed-off-by: Erik Gilling <konkers@android.com>
2010-10-20 18:21:33 -07:00
Colin Cross
0b313530b3 video: tegra: fb: Add flag to flip fb during probe
Change-Id: Ibe65175392fe2fe491cb88b5df0771a17bc0c706
Signed-off-by: Colin Cross <ccross@android.com>
2010-10-20 14:30:18 -07:00
Colin Cross
4076bd38a5 video: tegra: dc: Move init to module_init
Move dc init to the device init level so that all clocks are
initialized before the late init level.  This depends on I2C
being initialized in the subsys init level.

Change-Id: Iafe759d943b6cc90d5c6718b69e872e14d6acd4e
Signed-off-by: Colin Cross <ccross@android.com>
2010-10-20 14:30:17 -07:00
Colin Cross
8b2a43378b i2c: busses: i2c-tegra: Move init to subsys_initcall
Some drivers (like hdmi) need to communicate over i2c during probe.
Move the i2c bus init to the subsys init level so that i2c is ready
for the start of the device init level.

Change-Id: I81234d42aa26b657ffc619099e47df09e12083bb
Signed-off-by: Colin Cross <ccross@android.com>
2010-10-20 14:30:17 -07:00
Colin Cross
00eb0f29e9 [ARM] tegra: Add function to copy framebuffer contents
Due to conflicting restrictions on the location of the framebuffer
between the bootloader and the protected aperture, the framebuffer
is likely to need to be moved during boot.  This patch provides
tegra_move_framebuffer, which can handle move the framebuffer from
lowmem, highmem, or unmapped memory into unmapped memory.

Change-Id: Ic37e5e337cd3129065fe56fd7777a86d06ad69ac
2010-10-20 14:30:17 -07:00
Colin Cross
bd5e7b5939 video: tegra: nvmap: Prevent reverting to sysmem for small allocations
Change-Id: Icfe552ad4a968329a1a2959d5b438062587a83b6
Signed-off-by: Colin Cross <ccross@android.com>
2010-10-20 14:30:17 -07:00
Colin Cross
25d5d351ec [ARM] tegra: suspend: Save protected aperture across LP0
Change-Id: Iab66c566957cfbac8ddab615ec92e57c2164ab68
Signed-off-by: Colin Cross <ccross@android.com>
2010-10-20 14:30:17 -07:00
Colin Cross
0f712aa808 [ARM] tegra: Add function to enable protected aperture
Change-Id: I699cee3bc9a131259b330655126146f5d1f92043
Signed-off-by: Colin Cross <ccross@android.com>
2010-10-20 14:30:17 -07:00
Colin Cross
9796850a6b [ARM] tegra: Use memblock_remove to allocate carveout and framebuffer
This uses the patch by rmk to allow memblock_remove to be used to
remove areas of memory from the 1:1 mapping, allowing them to be
remapped later using iomap or, for Tegra, nvmap.

Also uses memblock_reserve to reserve the lp0 boot vector, so it
doesn't need to be copied later in tegra_init_suspend.

tegra_reserve should be called from the machine reserve callback
after any board-specific memory areas are reserved.

Change-Id: I26be8544a03b6da74fe66dc53a77681d431c303c
Signed-off-by: Colin Cross <ccross@android.com>
2010-10-20 14:30:17 -07:00
Colin Cross
4263b27049 [ARM] mm: init: Use memblock to set up memory map
Based on patch by rmk on lkml at http://lkml.org/lkml/2010/10/11/179
Reverts changes to find_limits to fix crash when using memblock_remove
on the end of memory.

Original-author: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Colin Cross <ccross@android.com>
Change-Id: I6137a7939329381e4ed34bfcdc8b713dc50ebcc8
2010-10-20 14:30:16 -07:00
Rebecca Schultz Zavin
424e17f5a2 video: tegra: nvmap: Remove warning from nvmap_pin
The framebuffer driver needs to be able to arbitrarily pin whatever
gets handed to it.  Regardless of the interface used, functions need
to unpin as soon as they finish using the gart anyway.

Change-Id: Ida8aea2fb6eaca8bcbf3ae72f8dfa849dc198542
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
2010-10-20 14:19:25 -07:00
Chris Fries
1e7893b76b [ARM] tegra_i2s_audio: support mono capture
Support mono data formats such as DSP PCM Mode with 16 bit mono capture.

This patch also disables the in-driver downsampler.

Signed-off-by: Iliyan Malchev <malchev@google.com>
2010-10-20 14:09:43 -07:00
Iliyan Malchev
ffd385c7f8 [ARM] tegra_i2s_audio: add support for selecting tx/rx channels separately
Signed-off-by: Iliyan Malchev <malchev@google.com>
2010-10-20 11:12:41 -07:00
Dmitry Shmidt
dc7ed6438a mmc: sdhci: Enable MMC_CAP_ERASE
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2010-10-19 16:06:36 -07:00
Gary King
7f91ddc135 Revert "[ARM] mm: add page allocator for modifying cache attributes"
This reverts commit 54d4145704.

Change-Id: I8e5cf6ef3555129da9741ef52a1e6a3a772ad588
Signed-off-by: Gary King <gking@nvidia.com>
2010-10-19 12:42:23 -07:00
Gary King
78d98c3245 video: tegra: nvmap: eliminate arm_attrib_allocator dependency
remove the dependency that nvmap has on the arm_attrib_allocator
and the lowmem in PTEs change by adding a private page allocator
utility function and calling vm_map_ram unconditionally for all
sysmem handles.

also, add Kconfig variables to allow platforms to disallow the
SYSMEM heap, and to optionally restrict the SYSMEM and IOVMM
heaps to just HIGHMEM.

Change-Id: I3dab1c7323f54a8ab3994dc672b27fd79a9057d7
Signed-off-by: Gary King <gking@nvidia.com>
2010-10-19 12:42:21 -07:00
Gary King
aba71d0453 [ARM] tegra: Set bit 22 in the PL310 AuxCtrl
Duplicate Catalin Marinas' <catalin.marinas@arm.com> ARM change
6395/1 for VExpress to tegra

Clearing bit 22 in the PL310 Auxiliary Control register (shared
attribute override enable) has the side effect of transforming Normal
Shared Non-cacheable reads into Cacheable no-allocate reads.

Coherent DMA buffers in Linux always have a Cacheable alias via the
kernel linear mapping and the processor can speculatively load cache
lines into the PL310 controller. With bit 22 cleared, Non-cacheable
reads would unexpectedly hit such cache lines leading to buffer
corruption.

Change-Id: I37232041c035f5153a7ad73257c6333634a5f4b8
Signed-off-by: Gary King <gking@nvidia.com>
2010-10-18 15:55:29 -07:00
Colin Cross
dca2f292ae spi: tegra: Use shared DMA channel
To avoid running out of DMA channels, use the shared DMA channel
for all four Tegra spi controllers.

Change-Id: Iff644253cf7fae36aa2e42321a1ded35a728da4f
Signed-off-by: Colin Cross <ccross@android.com>
2010-10-18 15:44:51 -07:00
Jay Cheng
faa973c0bd [arm/tegra]serial:rewrite interrupt handler
rewrite interrupt handler to prevent race condition between dma operation
 and serial isr.

Change-Id: I4464ba882f39ff1dc2423241f6582df687057420

Signed-off-by: Jay Cheng <jacheng@nvidia.com>
2010-10-18 15:44:51 -07:00
Jay Cheng
fc84cd7dba [ARM/tegra] dma: add transfer count query. Checking interrupt pending status.
Stopping Dma after last req transfer.

add an API to return the completed transfer count of a pending, active
or finished DMA request

originally fixed by Gary King <gking@nvidia.com>

It is observed that the dma interrupt has the lower priority then
its client interupt priority. When client's isr calls dma get transfer,
the dma status has not been upated as dma isr have not been served yet.
So before reading the status, explicitly checking the interrupt status and
handling accordingly.

The another issue which is observed is that if dma has transferred the data
of amount = requested -4 and if it moves to invalid requestor before stopping
then status got reset and tarnsfered bytes becomes 0. This seems the apb dma
hw behavior. Following is the suggestion to overcome this issue:
- Disable global enable bit.
- Read status.
- Stop dma.
- Enable global status bit.

Added this workaround and it worked fine.

originally fixed by Laxman Dewangan <ldewangan@nvidia.com>

In continous mode, dma should stop after last transfer completed and
if there is no more req pending.
If there is pending req then it should check whether it has updated
in hw for next transfer or not and if it has not started then stop dma
and start new req immediatley.

originally fixed by Laxman Dewangan <ldewangan@nvidia.com>

Change-Id: I49c97c96eacdf4060de6b21cec0e71d940d33f00
2010-10-18 15:44:51 -07:00
Erik Gilling
831bbd76da video: tegra: add hdmi switch_dev for hotplug notifications
Change-Id: I0454179633835d35367bc5c28513319e3aa6a069
Signed-off-by: Erik Gilling <konkers@android.com>
2010-10-18 15:40:06 -07:00
Erik Gilling
3a44a94cab video: tegra: disable display on hotunplug
Also tighents up the hotplug detect timing

Change-Id: I2d48c38250b5aaef2d30895fe44806e7d133a823
Signed-off-by: Erik Gilling <konkers@android.com>
2010-10-18 15:40:05 -07:00
Benoit Goby
45659f705d usb: host: ehci-tegra: Don't power down the phy on shutdown
There is no need to poweroff the phy and disable the clocks on shutdown.
This interferes with autopm that may try to disable the clocks after
shutdown.

Change-Id: I3aee19abe6dd11685b3be348e25fc3e195a2a416
Signed-off-by: Benoit Goby <benoit@android.com>
2010-10-18 15:27:33 -07:00
Erik Gilling
bf82ae424d i2c: tegra: fix repeated start handling
A repeated start should be used for all but the last msg in an xfer.  The
NOSTART flag is for skipping the START frame (addr/rw)

Change-Id: If4bc88478521a8c4e1ec761bd42a84d3e398fa26
Signed-off-by: Erik Gilling <konkers@android.com>
2010-10-18 15:23:35 -07:00
Erik Gilling
943300a8d5 video: tegra: don't assert/deassert reset in dc
There seems to be some interdependency between the two display controllers'
resets and HDMI.  If dc0 is put into reset while HDMI is connected to dc1,
HDMI will blank.

Change-Id: I978814628609ebe3d78e7809fccef6a3d19c0f7f
Signed-off-by: Erik Gilling <konkers@android.com>
2010-10-18 12:08:26 -07:00
Erik Gilling
686530be3e video: tegra: fb var info on monspecs change
activates the default mode

Change-Id: I34d27d2947377771e8f1c89f3933204d7e65364f
Signed-off-by: Erik Gilling <konkers@android.com>
2010-10-18 12:08:26 -07:00
Erik Gilling
a07fcc9ac9 video: tegra: ensure first video mode is marked with FB_MODE_IS_FIRST
Change-Id: If3c417c670962e4ca6ff92c3bd1a388c189f11ab
Signed-off-by: Erik Gilling <konkers@android.com>
2010-10-18 12:08:19 -07:00
Erik Gilling
3cebbf8d89 video: modedb: make fb_add_videomode keep modelist in order added
This makes the default case in fb_find_best_display ("last resort, use
the very first mode") actually use the first mode added.

Change-Id: Ia43ac4a4251522cd30c0da514da23e47b2906e2c
Signed-off-by: Erik Gilling <konkers@android.com>
2010-10-18 12:06:36 -07:00
Chris Fries
0c6062a8ff [ARM] tegra_i2s_audio: allow different DMA bus widths
Added separate APB DMA bus-width controls depending on the audio bus format.

Signed-off-by: Iliyan Malchev <malchev@google.com>
2010-10-16 21:07:26 -07:00
Chris Fries
eee4c1fd23 [ARM] tegra_i2s_audio: add suspend/resume handlers
The resume handler restores i2s state, which gets lost on LP0

Signed-off-by: Iliyan Malchev <malchev@google.com>
2010-10-16 20:53:07 -07:00
Iliyan Malchev
810694cfa9 [ARM] tegra_i2s_audio: add a few overlooked checks
Signed-off-by: Iliyan Malchev <malchev@google.com>
2010-10-16 19:56:22 -07:00
Colin Cross
89c37cce1c Merge commit 'v2.6.36-rc8' into linux-tegra-2.6.36 2010-10-15 12:03:22 -07:00
Linus Torvalds
cd07202cc8 Linux 2.6.36-rc8 v2.6.36-rc8 2010-10-14 16:26:43 -07:00
Mike Corrigan
43ca7cdda2 [arm]: tegra: dma: DMA error debugging.
Print an error message when a DMA channel cannot be allocated.

Change-Id: I93a96851ac12c5ea66b2fb053033aa4260c2178a
Signed-off-by: Mike Corrigan <michael.corrigan@motorola.com>
2010-10-14 16:07:43 -07:00
Mike Corrigan
1785cb19f0 [arm]: tegra: serial: DMA allocation fix.
Handle the case where DMA channels cannot be allocated and PIO must be used.
Fixed a typo for forcing RX to use PIO.

Change-Id: I167184f9ce936d4a08dd9919ae4f8b0d9ad7e0c4
Signed-off-by: Mike Corrigan <michael.corrigan@motorola.com>
2010-10-14 16:07:37 -07:00
Linus Torvalds
3aa0ce825a Un-inline the core-dump helper functions
Tony Luck reports that the addition of the access_ok() check in commit
0eead9ab41 ("Don't dump task struct in a.out core-dumps") broke the
ia64 compile due to missing the necessary header file includes.

Rather than add yet another include (<asm/unistd.h>) to make everything
happy, just uninline the silly core dump helper functions and move the
bodies to fs/exec.c where they make a lot more sense.

dump_seek() in particular was too big to be an inline function anyway,
and none of them are in any way performance-critical.  And we really
don't need to mess up our include file headers more than they already
are.

Reported-and-tested-by: Tony Luck <tony.luck@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-10-14 14:32:06 -07:00
Erik Gilling
90b46c5cf7 video: tegra: update overlay stride in fb_set_par
Fixes recovery graphics

Change-Id: I68824dfcd29b40eaa27a8b5ee437e5763288a49e
Signed-off-by: Erik Gilling <konkers@android.com>
2010-10-14 11:34:44 -07:00
Erik Gilling
cef728fe09 spi: tegra: cleanups from upstream review
Change-Id: Icecf7e64efcb39de072a15234ba1faa4bad40d25
Signed-off-by: Erik Gilling <konkers@android.com>
2010-10-14 11:33:12 -07:00
Linus Torvalds
ae42d8d441 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
  ehea: Fix a checksum issue on the receive path
  net: allow FEC driver to use fixed PHY support
  tg3: restore rx_dropped accounting
  b44: fix carrier detection on bind
  net: clear heap allocations for privileged ethtool actions
  NET: wimax, fix use after free
  ATM: iphase, remove sleep-inside-atomic
  ATM: mpc, fix use after free
  ATM: solos-pci, remove use after free
  net/fec: carrier off initially to avoid root mount failure
  r8169: use device model DMA API
  r8169: allocate with GFP_KERNEL flag when able to sleep
2010-10-14 11:19:44 -07:00
Linus Torvalds
0eead9ab41 Don't dump task struct in a.out core-dumps
akiphie points out that a.out core-dumps have that odd task struct
dumping that was never used and was never really a good idea (it goes
back into the mists of history, probably the original core-dumping
code).  Just remove it.

Also do the access_ok() check on dump_write().  It probably doesn't
matter (since normal filesystems all seem to do it anyway), but he
points out that it's normally done by the VFS layer, so ...

[ I suspect that we should possibly do "vfs_write()" instead of
  calling ->write directly.  That also does the whole fsnotify and write
  statistics thing, which may or may not be a good idea. ]

And just to be anal, do this all for the x86-64 32-bit a.out emulation
code too, even though it's not enabled (and won't currently even
compile)

Reported-by: akiphie <akiphie@lavabit.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-10-14 10:57:40 -07:00
Chris Fries
34179ead6c [ARM] tegra_i2s_audio: add support for DSP (PCM) mode.
Change-Id: I132b8b7709c154ca1fb52f437966bd90451e89f7
Signed-off-by: Iliyan Malchev <malchev@google.com>
2010-10-13 19:15:43 -07:00
Iliyan Malchev
ce3ae8e74b [ARM] tegra_i2s_audio: fixes
-- Ignore kfifo thresholds on recording and playback and adjust the delays.
-- Take out the code from TEGRA_AUDIO_IN_STOP into a separate function
   stop_recording_nosync()
-- Rename stop_recording() to wait_for_recording_to_stop().
-- add ioctl(TEGRA_AUDIO_OUT_FLUSH), which blocks the caller until the output
   fifo is drained.  While the caller is blocked, pending write() calls will
   return immediately with whatever data they had managed to queue up.
-- removed ioctl(TEGRA_AUDIO_OUT_PRELOAD_FIFO)
-- since TEGRA_AUDIO_OUT_FLUSH and TEGRA_AUDIO_IN_STOP act similarly, moved
   audio_driver_state::recording_cancelled to audio_stream::stop and changed
   the code accordingly.  Renamed functions wait_for_recording_to_stop() and
   stop_recording_nosync() to wait_till_stopped() and request_stop_nosync()
   since they handle both playback and recording.
-- print errors on close() if wakelocks are still held
-- Call request_stop_nosync() on close() of a recording file handle
-- Do not use struct audio_stream::active for playback streams.  Instead,
   where applicable, use kfifo_len().  As a consequence, playback kfifo
   underruns are no longer reported.  These were bogus anyway, as we really
   need the DMA engine to tell us if there are underruns.
-- Because of above item, had to rework tx_fifo_atn_store(),
   rx_fifo_atn_store(), and __attr_fifo_atn_write().
-- Set struct audio_stream::active for a recording stream to true when a
   recording starts, and set it to false when recording get stopped.  Do not
   set/clear it within the body of read(), because just being within read()
   does not mean that recording is in progress.
-- In tegra_audio_read(), check for stop == true before calling
   start_recording_if_necessary(); this makes sure that if a user calls read()
   after calling ioctl(TEGRA_AUDIO_IN_STOP), recording will not resume unless
   ioctl(TEGRA_AUDIO_IN_START) gets called, or the file is closed and
   re-opened.
-- Fixed TEGRA_AUDIO_IN_START
-- In PIO mode, enabled FIFOs before enabling interrupts as specified in the
   TRM.
-- Added missing break in tegra_audio_ioctl().
-- Silenced some debug spew

Signed-off-by: Iliyan Malchev <malchev@google.com>
2010-10-13 19:15:43 -07:00
Jay Cheng
d774220d60 usb: gadget: fsl_udc: Add support for USB test mode feature
Adding support for USB-IF High Speed electrical test mode for device mode.
Support added for electrical test modes:
1. TEST_J
2. TEST_K
3. TEST_SE0_NAK
4. TEST_PACKET
5. TEST_FORCE_ENABLE

originally fixed by Venkat Moganty <vmoganty@nvidia.com>

Change-Id: If5a4dcf9eb81dc368f24c660460d35495b6a4253
Signed-off-by: Jay Cheng <jacheng@nvidia.com>
2010-10-13 17:10:40 -07:00
Linus Torvalds
53eeb64e80 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx
* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:
  ioat2: fix performance regression
2010-10-13 16:51:59 -07:00
Linus Torvalds
8c35bf368c Merge branch 'for-2.6.36' of git://linux-nfs.org/~bfields/linux
* 'for-2.6.36' of git://linux-nfs.org/~bfields/linux:
  nfsd: fix BUG at fs/nfsd/nfsfh.h:199 on unlink
2010-10-13 16:51:29 -07:00
Linus Torvalds
fec896e21b Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  ring-buffer: Fix typo of time extends per page
  perf, MIPS: Support cross compiling of tools/perf for MIPS
  perf: Fix incorrect copy_from_user() usage
2010-10-13 16:50:23 -07:00
Benoit Goby
5aca5c3c19 usb: gadget: fsl_udc: Fix dTDs allocation gfp flags
fsl_build_dtd may be called from atomic context. Don't hardcode the gfp
flag to GFP_KERNEL. Pass down to dma_pool_alloc the flag used by the
function driver to enqueue the request.

Change-Id: Iba1ccf73bbcd648b8c13228157431d2ce52979ef
Signed-off-by: Benoit Goby <benoit@android.com>
2010-10-13 16:37:08 -07:00
Colin Cross
cafc989dd8 usb: gadget: fsl_udc: Prevent udc timeout on suspend
Change-Id: Ic4780063d432860df835c54c17b2b9249132c8c5
Signed-off-by: Colin Cross <ccross@android.com>
2010-10-13 16:37:07 -07:00
Linus Torvalds
d94bc4fc24 Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm:
  ARM: relax ioremap prohibition (309caa9) for -final and -stable
  ARM: 6440/1: ep93xx: DMA: fix channel_disable
  cpuimx27: fix i2c bus selection
  cpuimx27: fix compile when ULPI is selected
  ARM: 6435/1: Fix HWCAP_TLS flag for ARM11MPCore/Cortex-A9
  ARM: 6436/1: AT91: Fix power-saving in idle-mode on 926T processors
  ARM: fix section mismatch warnings in Versatile Express
  ARM: 6412/1: kprobes-decode: add support for MOVW instruction
  ARM: 6419/1: mmu: Fix MT_MEMORY and MT_MEMORY_NONCACHED pte flags
  ARM: 6416/1: errata: faulty hazard checking in the Store Buffer may lead to data corruption
2010-10-13 16:35:33 -07:00
Linus Torvalds
7081319658 Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6
* 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6:
  omap: iommu-load cam register before flushing the entry
2010-10-13 16:35:05 -07:00