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>
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>
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
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>
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
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>
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>
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>
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>
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>
rewrite interrupt handler to prevent race condition between dma operation
and serial isr.
Change-Id: I4464ba882f39ff1dc2423241f6582df687057420
Signed-off-by: Jay Cheng <jacheng@nvidia.com>
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
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>
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>
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>
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>
Print an error message when a DMA channel cannot be allocated.
Change-Id: I93a96851ac12c5ea66b2fb053033aa4260c2178a
Signed-off-by: Mike Corrigan <michael.corrigan@motorola.com>
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>
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>
* 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
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>
-- 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>
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>
* '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
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>
* 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
* '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