Commit Graph

212638 Commits

Author SHA1 Message Date
Colin Cross
5f2e1258ff Revert "mmc: fix non-arm build due to eMMC 4.3+ change"
This reverts commit 1c119f2c16.
2011-02-11 13:54:41 -08:00
Todd Poynor
6b825e9aaa ARM: tegra: Handle timers during LP2 idle ticks
Timer ticks aren't properly serviced while a CPU is in LP2 idle.
Although the Tegra LP2 idle code calls hrtimer_peek_ahead_timers,
because no IRQ regs have been saved, update_process_times is not
called, and thus the timer list is not serviced (and neither is
SMP rebalancing, etc.)  This can cause significant delays
scheduling timer-based activity, especially on CPU 1 (which is
not servicing most other IRQs).

Colin Cross suggested a patch based on upstream review feedback
that uses clock notifiers to switch to the "broadcast" clock event
source ("timer0" Tegra timer 3) during LP2, which has a real
interrupt handler defined that calls the clock event handler in
IRQ context, allowing timers to be checked.

Change-Id: Ifa3f4ec662f07dc9636e433f278358f75b65d10c
Signed-off-by: Todd Poynor <toddpoynor@google.com>
2011-02-08 18:50:26 -08:00
Robert Morell
da0fbc7f9b USB: ehci: tegra: Align DMA transfers to 32 bytes
The Tegra2 USB controller doesn't properly deal with misaligned DMA
buffers, causing corruption.  This is especially prevalent with USB
network adapters, where skbuff alignment is often in the middle of a
4-byte dword.

To avoid this, allocate a temporary buffer for the DMA if the provided
buffer isn't sufficiently aligned.

Signed-off-by: Robert Morell <rmorell@nvidia.com>
2011-02-08 15:18:24 -08:00
Robert Morell
a0d7774b25 USB: HCD: Add driver hooks for (un)?map_urb_for_dma
Provide optional hooks for the host controller driver to override the
default DMA mapping and unmapping routines.  In general, these shouldn't
be necessary unless the host controller has special DMA requirements,
such as alignment contraints.  If these are not specified, the
general usb_hcd_(un)?map_urb_for_dma functions will be used instead.
Also, pass the status to unmap_urb_for_dma so it can know whether the
DMA buffer has been overwritten.

Finally, add a flag to be used by these implementations if they
allocated a temporary buffer so it can be freed properly when unmapping.

Signed-off-by: Robert Morell <rmorell@nvidia.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-02-08 15:18:16 -08:00
Robert Morell
736268d863 USB: HCD: Add usb_hcd prefix to exported functions
The convention is to prefix symbols exported from the USB HCD core with
"usb_hcd".  This change makes unmap_urb_setup_for_dma() and
unmap_urb_for_dma() consistent with that.

Signed-off-by: Robert Morell <rmorell@nvidia.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-02-08 15:18:11 -08:00
Erik Gilling
719f267754 video: tegra: only enable HDMI features if detected from edid
Change-Id: I94c5c83c25a8aa1de344339f5759953074488720
Signed-off-by: Erik Gilling <konkers@android.com>
2011-02-07 14:56:21 -08:00
Erik Gilling
cef13d98eb video: fbmon: add HDMI dectetion to fbmod edid parsing
Looks for ieee registration numver 0x000c03 as per HDMI spec.

Change-Id: I6875b24c66e8754510edabcb4f9ba682a50d6ac1
Signed-off-by: Erik Gilling <konkers@android.com>
2011-02-07 14:56:20 -08:00
Erik Gilling
4a6469b9eb video: tegra: add height/width to dc and fb
Change-Id: I22c280928079af04263375fce63a87776588a457
Signed-off-by: Erik Gilling <konkers@android.com>
2011-02-03 13:21:31 -08:00
Erik Gilling
29c4c67185 video: tegra: set h/v sync polarity for HDMI
Change-Id: I4be0eb963c3779b9313ef94476b1589059d4aa3c
Signed-off-by: Erik Gilling <konkers@android.com>
2011-02-02 18:36:55 -08:00
Erik Gilling
29cf32156d video: tegra: support v/h sync polarity
Change-Id: Ida82a70efaeadc9d5b11d8703e688063680b72a8
Signed-off-by: Erik Gilling <konkers@android.com>
2011-02-02 18:36:55 -08:00
Erik Gilling
7baed3b180 video: tegra: correct HDMI h/vsync polairty in some modes
Change-Id: I0e988d1724461ff2d5bd1009f2fdc379bd154703
Signed-off-by: Erik Gilling <konkers@android.com>
2011-02-02 18:36:55 -08:00
Eric Laurent
a0bcb8eaba [ARM] tegra_i2s_audio: separate TX/RX DMA setup
Fixed a problem preventing independent setup/teardown
of TX and RX DMAs when setting playback or capture buffer count.

Signed-off-by: Eric Laurent <elaurent@google.com>
2011-01-28 13:44:56 -08:00
Nathan Connell
769922c5aa ARM: tegra: usb_phy: Configure USB1 PHY to use programmed value
instead of fused value.  This is required
to meet High Speed USB signaling requirements.

Change-Id: I659b33faa950605ecf040598112e1972047ae7ad
Signed-off-by: Nathan Connell <w14185@motorola.com>
2011-01-25 17:33:24 -08:00
Dmitriy Gruzman
41fec00c4b watchdog: tegra_wdt: Several changes to watchdog driver
Fix not re-enabling watchdog resume if it was enabled in probe
Add clearing watchdog interrupt in probe
Remove tegra_wdt_set_timeout

Change-Id: I8fdbb6da3eda64a85a73ed85ab979a5ee0261c37
Signed-off-by: Dmitriy Gruzman <dmitriy.gruzman@motorola.com>
2011-01-25 17:12:59 -08:00
Benoit Goby
3f0fad7ec4 usb: host: tegra: Request 400MHz emc clock
while USB is active to eliminate all USB buffer underruns.

Change-Id: I9977224601e715e950284708958be98d37b3e6b1
Signed-off-by: Nathan Connell <w14185@motorola.com>
2011-01-25 12:37:56 -08:00
Benoit Goby
2418fe42cc usb: gadget: tegra_udc: Request 400MHz emc clock
while USB is active to eliminate all USB buffer underruns.

Change-Id: I7ad8ebfa2d802f91b81839e14fde906da1a0569e
Signed-off-by: Nathan Connell <w14185@motorola.com>
2011-01-25 12:37:50 -08:00
Rebecca Schultz Zavin
82fa87e2ca video: tegra: nvmap: Several changes to carveout killer
-Add a module param to enable/disable carveout killer
-Fix race condition in code to wait for something to free memory
after firing carveout killer
-Fix the check for current so we always compare task->group_leaders

Change-Id: Ie030978827dce6b0fbbfa1db0d80e4abe59eaa51
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
2011-01-24 15:44:07 -08:00
Erik Gilling
22dcde2e84 video: tegra: incresase delay in underflow recovery
Change-Id: I8093c83a2749c63b6ece051cc9b892d87e55fe04
Signed-off-by: Erik Gilling <konkers@android.com>
2011-01-24 15:35:28 -08:00
Erik Gilling
28b85f11c6 video: tegra: dump host state when timing out on suspend
Change-Id: I718fb071ac74f5a051a7d5b9fcdd782163ed48b6
Signed-off-by: Erik Gilling <konkers@android.com>
2011-01-24 12:37:38 -08:00
Colin Cross
3edd9628c0 ARM: tegra: Prevent dynamically ioremapping device io memory
Change-Id: I893a42bd773b1acdf2b83f8602fe1aa6a8ea6741
Signed-off-by: Colin Cross <ccross@android.com>
2011-01-21 17:05:18 -08:00
Colin Cross
5d8b46b6df ARM: tegra: Statically map all device io memory
Change-Id: I0c750b766dcdd166ddff6317b93556f9f5cce899
Signed-off-by: Colin Cross <ccross@android.com>
2011-01-21 17:05:16 -08:00
Benoit Goby
66eaaf9564 usb: gadget: tegra: Enable emc clock while usb is connected
Change-Id: Icb94c516a580e29b42b1899e622c9b91f8701dd2
Signed-off-by: Benoit Goby <benoit@android.com>
2011-01-20 15:42:52 -08:00
Benoit Goby
1df24cc5cf ARM: tegra: clocks: Add shared emc clocks for usb gadget
Change-Id: Idf1982fac02b987cb16ef89509cfe4d72953d1e5
Signed-off-by: Benoit Goby <benoit@android.com>
2011-01-20 15:41:58 -08:00
Benoit Goby
1b02fb1f5c usb: host: tegra: Enable emc clock while usb is resumed
Change-Id: I03a102f40134686fabbd5cfa1830816a691cf876
Signed-off-by: Benoit Goby <benoit@android.com>
2011-01-20 15:19:33 -08:00
Benoit Goby
d3cd98591c ARM: tegra: clocks: Add shared emc clocks for ehci driver
Change-Id: I02f9d798159e14007fa2e5abfc3493a2d779d515
Signed-off-by: Benoit Goby <benoit@android.com>
2011-01-20 15:19:32 -08:00
Jay Cheng
69f118a448 ARM: tegra: DVFS: set 1.2V core voltage for USB to work
Change-Id: Idb7822329f1975307748a72d1786da68c0635738
Signed-off-by: Jay Cheng <jacheng@nvidia.com>
2011-01-20 15:19:32 -08:00
Benoit Goby
ba487c7c5e usb: host: tegra: Fix SetPortFeature PORT_SUSPEND
This fixes a regression where hubs cannot detect new devices once they
have been auto-suspended.

Change-Id: I4b3efcaa9634b9a912060e438527000bbc83dc32
Signed-off-by: Benoit Goby <benoit@android.com>
2011-01-18 19:40:17 -08:00
Benoit Goby
b3328e4c67 usb: host: tegra: Fix resuming low speed devices from lp0
Change-Id: I9576853bbe0fae52c5c2cfab26ce8f2017077d4e
Signed-off-by: Benoit Goby <benoit@android.com>
2011-01-18 17:14:04 -08:00
Benoit Goby
d72d507ae9 ARM: tegra: usb_phy: Program DPDM_OBSERVE depending on the device speed
Low speed devices require a K-state resume signaling instead of J.

Change-Id: Ic06011f45c2b0f4cd969d018f2783acea57cb510
Signed-off-by: Benoit Goby <benoit@android.com>
2011-01-18 17:13:53 -08:00
Varun Wadekar
65a1f91c2f crypto: tegra-aes: perf: remove unnecessary polling and memset
Change-Id: I69731fcd50933ccea73542d046c3c5d86d03fcd9
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
2011-01-15 16:44:22 +05:30
Colin Cross
684defe4fd video: tegra: host: Force memory bus to full when using 2d, 3d or mpe
Change-Id: I7138af5d26c3f406537bc4b2bc4bb052de37f7bf
Signed-off-by: Colin Cross <ccross@android.com>
2011-01-14 15:28:21 -08:00
Colin Cross
11dc248e04 ARM: tegra: clock: Add shared emc clock for tegra_grhost
Change-Id: Ie2814726d151777140c20d2bc0a3c1a3822043a8
Signed-off-by: Colin Cross <ccross@android.com>
2011-01-14 15:28:20 -08:00
Colin Cross
5feeeb6ace ARM: tegra: clock: Add round_rate op for shared clocks
Change-Id: Ica3f9fd9db4fe38f2c9ca3fc248526211f59c622
Signed-off-by: Colin Cross <ccross@android.com>
2011-01-14 15:28:20 -08:00
Mayuresh Kulkarni
cea5c11234 video: tegra: host: disable MPE auto-power-gate
It is seen that auto-power-gate of MPE causes some issues when long run
camera stress test is run. The issue manifest itself in the form of
MPE sync-point not getting triggered from hardware and hence the caller
who is waiting on it hangs up the system.

Disabling auto-power-gate for MPE seems to resolve this issue.

Original work of Jay Cheng <jacheng@nvidia.com>
Signed-off-by: Mayuresh Kulkarni <mkulkarni@nvidia.com>

Change-Id: Iaef9f959cbc00dd715352ca637955cd2bea6f355
2011-01-14 15:28:19 -08:00
Rebecca Schultz Zavin
5be6f571ae video: tegra: nvmap: Several fixes to the carveout killer
-Modify the carveout killer to only kill tasks with lower priorities
than the one that's trying to allocate
-After delivering a sigkill to a task, wait for something to exit and
cleanup before retrying the allocation

Change-Id: If62b6ed008a73fc3c347ff26735a83eee284909e
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
2011-01-12 17:37:17 -08:00
Sergey Kudakov
683d3f2a8f video: tegra: reset default window in release
Change-Id: I242e9fac525472c5c20f213a6de516f95b2f6a12
Cc: Sergey Kudakov <sergey.kudakov@motorola.com>
Signed-off-by: Erik Gilling <konkers@android.com>
2011-01-12 17:00:36 -08:00
Ken Sumrall
82bc79e717 crypto: tegra-aes: Hack to disable HW AES for dm-crypt
The hardware aes engine is required for key management for
HDCP, but since it's performance is bad, we don't want it
enabled for dm-crypt.  This hack changes the cra_name field
so dm-crypt won't find a match, but leaves the cra_driver_name
field unchanged to the device file interface will still find it.

Signed-off-by: Ken Sumrall <ksumrall@android.com>
2011-01-12 15:58:37 -08:00
Varun Wadekar
67c21536bf crypto: tegra-aes: improve encrypt/decrypt performance
- enable/disable clocks only once per request
- create a thread for handling the driver's work queue
- always set vde clocks to the max before processing a request

Change-Id: I935e5523e9e913c93705cc694f8a475d212c15ce
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
2011-01-13 02:29:14 +05:30
Rebecca Schultz Zavin
b7cb0ccbfe video: tegra: nvmap: Don't store task struct for kernel threads
No need to maintain a reference to the task struct if the client
is a kernel thread.  In this case just set the task to NULL.

Change-Id: Ica4785388932f6b298eeb0da04b78b0e1cdc3a44
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
2011-01-12 11:14:55 -08:00
Varun Wadekar
1c10dcd996 crypto: tegra-aes: call INIT_COMPLETION before setting the transfer
Change-Id: I368a9bf8aa1c311532e54d18a813b556576b8da1
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
2011-01-12 00:08:22 -08:00
Varun Wadekar
269ae7240f crypto: tegra-aes: do not reset bsev/vde per operation
avp does not use the crypto engine inside the vde block,
so it is ok if we do not reset the entire block before
any crypto operation. this would save more than 100us per crypto
operation.

Change-Id: I4e6f4940c5b6e95498b6f7a62498fbf956e25254
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
2011-01-12 00:08:09 -08:00
Eric Laurent
a8ac34d55b [ARM] tegra_i2s_audio: fixed several issues
- Acquire the DMA request spinlock in dma_tx_complete_callback()
(this was omitted)
- allow_suspend() was called by mistake in start_recording_if_necessary()
every time it was executed which could cause the wake lock to be
released during audio capture.

Signed-off-by: Eric Laurent <elaurent@google.com>
Signed-off-by: Iliyan Malchev <malchev@google.com>
2011-01-11 20:09:34 -08:00
Colin Cross
55bfef75ea ARM: tegra: clock: Round frequency up in clock dividers
When picking clock divider values, the clock framework picks
the closest frequency that is lower than the requested
frequency.  If the value from a clock divider rounds down,
and then the new rounded down frequency is requested, it
will get rounded down again, resulting in a frequency two
steps lower than the original requested frequency.

Fix the problem by rounding up when calculating the frequency
coming out of a clock divider, so if that frequency is
requested again, the same divider value will be picked.

Change-Id: Ieaf74448f67d91aeb7ba08226e48c092d8afaa2b
Signed-off-by: Colin Cross <ccross@android.com>
2011-01-11 16:59:55 -08:00
Erik Gilling
4ce07d6140 video: tegra: work around overlay corruption on underflows
Overlays can get their internal state corrupted during and underflow
condition.  The only way to fix this state is to reset the DC.  If we get
4 consecutive frames with underflows, assume we're hosed and reset.

Change-Id: Icdf61517837c8570b8de35f585075de08aa35fe7
Signed-off-by: Erik Gilling <konkers@android.com>
Cc: Michael I. Gold <gold@nvidia.com>
2011-01-11 16:35:08 -08:00
Rebecca Schultz Zavin
8df53e4599 watchdog: tegra_wdt: Several changes to watchdog driver
Add a config option to enable the watchdog driver from probe
Reduce the default timeout to 30 seconds
Read the reset reason and print a messge if the last reboot was
	due to watchdog reset

Change-Id: I7500ef236089b06ffcff3d8e7d86a5b9060b59cb
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
2011-01-11 15:49:02 -08:00
Colin Cross
a8075881c1 ARM: tegra: clock: Save and restore audio clock during suspend
Change-Id: Id1c7a6c8e8679995ad462f17309c2f3550c00da1
Signed-off-by: Colin Cross <ccross@android.com>
2011-01-11 12:15:44 -08:00
Colin Cross
08da711a74 ARM: tegra: clock: Save and restore plld, plls, and pllu in suspend
HDMI was not working after LP0 because the plld were being reset
during suspend.  plls and pllu were also not being saved.  Add
all three to tegra_clk_suspend.

The lock time for plld is 1000 us, so increase the delay after
setting the PLLs.

Add a BUG_ON to ensure the size of the suspend context area is
correct.

Originally fixed by Mayuresh Kulkarni.

Original-author: Mayuresh Kulkarni <mkulkarni@nvidia.com>
Change-Id: I50a3e994c6e3cab5989aa7a8e26e7a2eb66b6dfb
Signed-off-by: Colin Cross <ccross@android.com>
2011-01-10 18:56:11 -08:00
Benoit Goby
f7120584fa ARM: tegra: Fix powergate_debugfs_init return value
Change-Id: Iff865e0f74e1667aa6e998a63d33d3b4cd09694c
Signed-off-by: Benoit Goby <benoit@android.com>
2011-01-10 15:16:51 -08:00
Rebecca Schultz Zavin
0479121df7 video: tegra: nvmap: Add carveout killer
This change attempts to reclaim carveout memory by killing
other carveout users when an allocation fails.  Processes
are killed in order of priority from lowest to highest, and then
from largest to smallest users.

Change-Id: Iee8a6f36269bc8165d691000a153dbf9f4337775
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
2011-01-10 12:37:27 -08:00
Stephen Warren
962feda6df ARM: tegra: pll_a clock fixes
Increase the max_frequency entries for clocks that can be driven from pll_a
to match the fastest pll_a table entry.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Colin Cross <ccross@android.com>
2011-01-09 19:18:07 -08:00