Commit graph

305008 commits

Author SHA1 Message Date
Hanumant Singh
33422eb812 msm: Fix ethernet gpiomux dependency on CONFIG_KS8551 on 8064.
All ethernet related gpio settings not encapsulated
within same CONFIG_KS8851 option.

Change-Id: Ic610f75e931a69c16e919f9b842a001e090806df
Signed-off-by: Hanumant Singh <hanumant@codeaurora.org>
2013-03-07 15:24:13 -08:00
Huaibin Yang
586da5d998 msm_fb: display: add mdp bandwidth runtime calculation
Currently mdp bandwidth request logic is based on source image size
and number of layers. This logic can not support complicated mdp
usecases and it is not power efficient. The logic is improved by
calculating mdp bandwidth request at runtime from all pipes and mixers.

Conflicts:

	drivers/video/msm/mdp.c
	drivers/video/msm/mdp4_overlay.c
	drivers/video/msm/mipi_dsi.c

CRs-fixed: 425823
Change-Id: I63206f00f8d3017a2449f8ac617fce3ba2a4d36c
Signed-off-by: Huaibin Yang <huaibiny@codeaurora.org>
2013-03-07 15:24:12 -08:00
Rajeev Kulkarni
1ddd0948c3 msm: kgsl: Issue conditional interrupts on internal submissions
Due to some mismatch in applying patches, one patch was overriding
the changes added  by commit bd5c9fcbf79d326817312138cf03298adf09df27.
This patch restores the changes.

Change-Id: I43223f01653c53df00682e8489b89e8978989944
Signed-off-by: Rajeev Kulkarni <krajeev@codeaurora.org>
2013-03-07 15:24:12 -08:00
Hamad Kadmany
e603abd2bd media: dvb: mpq: Enhance debugfs counters for decoder output
Add counter for number of decoder packets with transport error
indication. Reset all decoder counters exposed in debugfs when
video is started.

Change-Id: I9434b2da3c24e19bb57acf562dcdb7df49a10dad
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:11 -08:00
Bansidhar Gopalachari
2f67951c3d msm📷: Enabled af & rs_cs stats
Change-Id: Ibe7eb0c278b5c07c965e540c825b9691b7220f3b
Signed-off-by: Bansidhar Gopalachari <bansid@codeaurora.org>
2013-03-07 15:24:11 -08:00
Hamad Kadmany
e60f175c29 media: dvb: mpq: Improve handling of PCR packets
PCR packets with error indication is dropped to filter-out
invalid PCR values and flags that might cause errors
in clock recovery mechanism. In addition PCR is reported
also when playing from memory with 0 STC if the packet is
not in 192-tail format.

Change-Id: I3118877e0847f1df9aeb0d1891184c59b0d658c8
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:10 -08:00
Hamad Kadmany
0768112c18 dvb: mpq: Add option to allocate video buffer from IOMMU heap
Video buffer is allocated from CP-MM heap for both secure and non-secure
buffers. Some targets may restrict not to allocate non-secure buffer from
CP-MM heap, in such case need to make the allocation from IOMMU heap.

Change-Id: If0f56cab5fc6e3da1d4b7f1ec568184c9d16fed4
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:10 -08:00
Hamad Kadmany
ab3f614ae2 dvb: mpq: Fix initialization of video stream-buffer
Video stream buffer should be first initialized and then
registered to the adapter, otherwise, if registered
before initialization the video consumer may get uninitialized
stream-buffer.

Change-Id: I9f3e02ee360140b5132cd49df406cf2fa2ac6579
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:10 -08:00
Hamad Kadmany
cb437d4091 media: dvb: mpq: Enhance information exposed in debug-fs
Added the following files to existing demux directory in debug-fs:
1. decoder_out_count: Counts number of frames output to decoder.
2. decoder_out_interval_sum: Sum of time intervals between
   frames outputs.
3. decoder_out_interval_average: Average of time intervals between
   frames outputs.
4. decoder_out_interval_max: Maximum time interval between
   frames outputs.

All counters can read and reset by writing to the respective file.
demux device output in debug-fs was adjusted for better visibility.

Change-Id: I2c9835364c534cc4b9c1cbc74afee71c40f61d98
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:09 -08:00
Hamad Kadmany
9e8eeb6328 media: dvb: mpq: Fix contiguous allocation of TSPP output buffer
TSPP output buffer when allocated as physically contiguous to serve
as input to TrustZone should be allocated from QSEECOM heap and not
CP_MM heap since the latter may be locked in secure playback.

Added a module parameter for the heap to allocate the buffer from,
default is QSEECOM. In addition, the existing implementation allocated
TSPP output buffer once for each demux device though is it not one per
demux device but rather one per TSIF, the allocation was moved to be
done once an output channel from specific TSIF is opened.

Change-Id: Ie606c6074a4f78d9f51f0d47697539567a1643cd
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:09 -08:00
Hamad Kadmany
cde60f1e09 media: dvb: mpq: Unify PES and section pipes
For each TSIF two pipes were allocated, one for section output
and one for PES output. The two pipes were unified into a single
pipe as the pipes were configured with the same parameters and there's
no real need for separating them. A unified pipe allows recording of
section packets along with non-section packets while maintaining the
order of the packets in the output to be the same as they
appear in the input.

Change-Id: Ifb9c8d9a3e83b3c4b144ea26d2d7f144ec605b8c
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:08 -08:00
Hamad Kadmany
1d87a5685c media: dvb: mpq: Fix notification of first video PTS
demux reported the first video PTS using the PTS value within the
first video PES after playback starts. When playbak starts demux
drops all PES data until reaching sequence-header, the PTS of the
first PES holding a video frame after reaching the sequence header
should be used and not the one in the first PES before data is dropped.

Change-Id: I4c2b3f79e8320239d7c8e165093d4c6111dc8a27
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:08 -08:00
Hamad Kadmany
55e99fe933 media: dvb: Fix un-mapping of external buffers
The output buffers of demux filters can be set in decoder
and in non-PES filters, it is separate from the video output
buffers. When filter is stopped the buffer should be un-mapped
always if it was mapped previously regardless of the filter's type.

Change-Id: I5e0562b23e983a9c624be2dd71612ef23f3b50d0
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:07 -08:00
Liron Kuch
9484341aeb media: dvb: mpq: Support new elementary stream data events
Video elemenatry stream data is usually passed from demux to a video
consumer (e.g. video decoder) in kernel-space via tunneling. However
there are cases when the video consumer is a user-space application
controlled by the middleware. This change adds support for notifying
user-space about newly available elementary stream data and
associated meta-data, using the existing events queue mechanism.

Change-Id: I1994879f9056abea389602224fa970bd029b1e56
Signed-off-by: Liron Kuch <lkuch@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:07 -08:00
Hamad Kadmany
fff97e7a87 tspp: Disable read-complete interrupt
Read-complete interrupt can be generated from TSPP HW for test
purposes only. It is generated for each TS packet TSPP fetches from
TSIF interface. Having it enabled cause great load of interrupts
that are not used by the SW.

Change-Id: I4eb1be173cb3e30a8540fb17223abc034c54f048
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:07 -08:00
Gilad Broner
3b0ea8c77e drivers: media: dvb: mpq: Fix framing for external decoder buffers
Framing used to rely on underlying decoder buffer being managed as
ring buffer, and used absolute addresses to derive frame length.
This fix changes this and framing is now agnostic to the number
of decoder buffers, and whether they are managed as a ring-buffer
or as a group of linear buffers.
In addition, instead of reporting each pattern, framing now only
notifies video consumer on video frame patterns. Previous non-video
frame patterns are still included in the output data.

Change-Id: Ia3fe350110b77b3a7805e23f13927913e643f479
Signed-off-by: Gilad Broner <gbroner@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:06 -08:00
Gilad Broner
ba38c292f7 media: dvb: External buffers support for decoder filters
Extend Demux user-space API to set decoder buffers allocated externally
by user, supporting multiple linear buffers or a single cyclic buffer.
Internal decoder buffer allocation is still supported.

Change-Id: I1df53d3961ab7934bd4a969cff1dae435ae1dfc6
Signed-off-by: Gilad Broner <gbroner@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:06 -08:00
Liron Kuch
3ee5a7febc media: dvb: mpq: Improve PTS/DTS information reporting
PTS/DTS information may exist in the PES headers in the video
transport stream. PTS/DTS information must be reported for video frames
only if it hasn't been reported already. PTS/DTS information must be
reported according to the information available in the PES header
relevant for the video frame currently handled.
This commit updates the algorithm used to report PTS/DTS information
to comply with the above requirements.

Change-Id: Ie2276904e768a36dbd439b66b4aee7d3d98d8527
Signed-off-by: Liron Kuch <lkuch@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:05 -08:00
Gilad Broner
b53476103c media: dvb: mpq: mpq_streambuffer linear buffer support
Add linear buffer group management to mpq_streambuffer.
This change enables better support of video data consumers
that are required to use linear buffers scheme by eliminating
the need to copy data between buffers and may result in better
performance.

Change-Id: I8a893f9191ae441475fa535c25cc3295c879cfbc
Signed-off-by: Gilad Broner <gbroner@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:05 -08:00
Hamad Kadmany
4b31c3f28c tspp: Improve data-path handling
Existing driver allocated BAM descriptor at fixed sizes each
with interrupt flag set. Notification on data was received when
the descriptor is fully consumed by the HW. The descriptor size
on one hand need to be big enough so that we don't receive too much
interrupts for high-bitrate streams, and on other hand needs
to be small enough so that for low-bitrate stream we are not starved
waiting for data for a long period of time.

The change adds support of allocating small descriptors and set
interrupt flags on part of descriptors. In addition, expiration
timer is used so that if interrupt is not received after long period
of time the timer handler reports back descriptors are already ready
to be consumed. This allows low-rate of interrupts and
handling of low-bitrate streams.

As descriptors are smaller now (size of single TS packet), exposed
API within SW demux that handles a single packet to save the function
call to the API that handles multiple packets for efficiency. Information
regarding the new buffer allocation was added to debugfs.

CRs-Fixed: 420818

Change-Id: I9dedb1d1bc99c871d1aa12addeed9fe187f17bb1
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:05 -08:00
Yan He
ecf937c2ec msm: sps: support polling when pipe is in IRQ mode
BAM client has a new use case where active polling is needed when
the pipe is configured in the interrupt mode. Add the support in SPS
driver for this use case.

Change-Id: I55603de946b77004a38ab1dbca995072e9066f54
Signed-off-by: Yan He <yanhe@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:04 -08:00
Hamad Kadmany
4b868401f2 media: dvb: mpq: Use kthread instead of workqueue
demux used single-threaded workqueue to process TS packets
notified from the HW. Workqueue implementation was changed
so that all work scheduled to workqueues are submitted
to same kworker threads, this result on having TS packet
processing not to be done on demux own thread and compete
with other work scheduled by other drivers. Moved to separate
thread dedicated only for demux.

Change-Id: Ia8b96543f26428a0a12809d34c27849f900cc45e
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:04 -08:00
Hamad Kadmany
3b2854c970 dvb: dvb-core: Use kthread instead of workqueue to process DVR input
Existing code uses workqueue for DVR input work which constantly waits
for new data written to the input buffer. This causes the kworker
executing DVR work to be fully occupied by DVR device and does not
allow other drivers using workqueues to use that kworker. To solve
this switched to kernel thread which is solely used for DVR device.

Change-Id: Ica740965aceec63e95eb2be4b3c20e242a8301fe
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:03 -08:00
Hamad Kadmany
cf8e8b4daa misc: tspp: Enable notification of TSIF status and expose it in debugfs
Enable TSIF status interrupt to expose the following
information in debugfs:
- stat_rx_chunks: Counts number of TS packets chunks received from HW.
- stat_overflow: Counts number of times buffer has overflowed.
- stat_lost_sync: Counts number of times TSIF lost sync with input.
- stat_timeout: Counts number of times TSIF reached timeout
waiting for packets.

All counters can read and reset by writing to the respective file.

Change-Id: I42e71d072d8b92bdc8ecf941daef4ac0faa94de6
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:03 -08:00
Hamad Kadmany
942aa8cc2d media: dvb: dvb-core: Improve handling of 192 packets output
Different filters may have different output format, therefore
the ts packet output format should be per feed. It should also
allow outputting real time-stamp if available.

Change-Id: Id174610d50c94f24abae5637ae052aeee92eeec4
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:03 -08:00
Hamad Kadmany
3864db61be media: dvb: Add information on active filters in debugfs
Expose demux filters settings and status on debugfs to
improve debugging of demux devices.

Change-Id: I08df8a4c6a21a80bda7d0c6712edfdebef70ff0c
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:02 -08:00
Hamad Kadmany
c52249eafb media: dvb: dvb-core: Fix memory leak in DVR buffers
When DVR buffer mode changes between internal/external, the DVR
buffer pointer gets updated with the new allocated memory.
This overrides the existing pointer to the memory allocated
previously. The code was changed so that when switching between
internal and external modes the currently allocated memory
is released.

Change-Id: I07690cc3aa86827114419b1d47ee40f47338766b
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:02 -08:00
Hamad Kadmany
a94c2761f2 media: dvb: mpq: Set smaller descriptor size for section pipe
Section and PES/recording pipes had same descriptor sizes,
notification rate from BAM for both types was the same. Since
sections are lower-bitrate than PES/recording data, the descriptor
size for sections pipe was reduced to allow better responsiveness
to this kind of data.

Change-Id: I8b99a1b4c38bb9a9fdfa8d3fb4d1864b133d954a
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:01 -08:00
Liron Kuch
f765dfd37f media: dvb: mpq: TSPP output buffer allocation by demux plugin
The TSPP driver can allocate its output buffers internally or
externally. External buffer allocation is required when Demux wishes
to use the ION driver to allocate a physically contiguous buffer
(e.g. to pass to TZ).
This commit improves the TSPP driver support for external buffer
allocation and implements the external memory allocation and free
functions in the Demux driver.

Change-Id: Id7e815fa56b76401ed593a786eb61d97735deba9
Signed-off-by: Liron Kuch <lkuch@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:01 -08:00
Hamad Kadmany
b0f1cc06e2 media: dvb: dvb-core: Stall demux in PULL mode when events queue is full
In PULL mode demux should stall when output buffers are full until
there's free space for new data. The demux data events queue could
also get full and overflow if user is not reading data fast enough.
Added checking the fullness of data events queue when working in PULL
mode so that demux stalls in case it is full.

Change-Id: I3d2cb89a2e3c5fb8e1be4b1df9d7efbb8ca458e2
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:00 -08:00
Hamad Kadmany
c39b1f2dfd media: dvb: mpq: Extended and unified parameters of demux module
Demux parameters were unified to have same semantics across
different demux plugins. Extended the parameters to add option
to invert the tsif clock signal.

Change-Id: I1b253d27353feb0b9c9214fcfafb8b257da6528e
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:00 -08:00
Hamad Kadmany
df7e43cddf tspp: Add option to inverse tsif signals
TSIF signals (clock, data, enable and sync) may be configured
to be inversed at TSPP unit input. This is useful in case
TSIF signals from external units need to be inversed.

Change-Id: I4f0bfdc58fb8658dbf10fe3805b8787f9d36aeca
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:24:00 -08:00
Hamad Kadmany
408f458d7b media: dvb: mpq: Update calls to ION API
ION API was changed and the calls from dvb demux
needs to be updated accordingly

Change-Id: I8582d4cf544cf8fa4e52252bc8614f4866d6f774
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:23:59 -08:00
Hamad Kadmany
bd24d914f8 media: dvb: Add support for external demux buffer allocation
demux input/output buffers were allocated internally by the driver,
for MPQ use-cases there's a need for user-space MPQ player to
allocate the buffers through ION driver and set them to demux
similar to the way other kinds of buffers are managed
in android multimedia stack for video

Change-Id: Ic28a279c0841fee12008cea7beac58f82409b9f9
Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:23:59 -08:00
Laura Abbott
a5e1696551 mm: Use correct define for CMA features
CMA features may ifdef out parts of the code with
CONFIG_CMA. Older code uses CONFIG_DMA_CMA. Switch
to using the newer CONFIG_CMA to ensure the code gets
compiled when needed.

Change-Id: I3cae639797787b4926a6c5e057de973b66196707
Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:23:58 -08:00
Larry Bassel
bad999e743 mm: make counts of CMA free pages correct
Both patches needed, second patch (among other things) fixes
a bug in the first.

commit 2139cbe627
Author: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Date:   Mon Oct 8 16:32:00 2012 -0700

    cma: fix counting of isolated pages

    Isolated free pages shouldn't be accounted to NR_FREE_PAGES counter.  Fix
    it by properly decreasing/increasing NR_FREE_PAGES counter in
    set_migratetype_isolate()/unset_migratetype_isolate() and removing counter
    adjustment for isolated pages from free_one_page() and split_free_page().

    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Cc: Michal Nazarewicz <mina86@mina86.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [lbassel@codeaurora.org: backport from 3.7, small changes needed]
    Signed-off-by: Larry Bassel <lbassel@codeaurora.org>

commit d1ce749a0d
Author: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Date:   Mon Oct 8 16:32:02 2012 -0700

    cma: count free CMA pages

    Add NR_FREE_CMA_PAGES counter to be later used for checking watermark in
    __zone_watermark_ok().  For simplicity and to avoid #ifdef hell make this
    counter always available (not only when CONFIG_CMA=y).

    [akpm@linux-foundation.org: use conventional migratetype naming]
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Cc: Michal Nazarewicz <mina86@mina86.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [lbassel@codeaurora.org: backport from 3.7, small changes needed]
    Signed-off-by: Larry Bassel <lbassel@codeaurora.org>

Change-Id: I7d4f5fe0b6931192706337e0b730f43e7cccd031
Signed-off-by: Larry Bassel <lbassel@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:23:58 -08:00
Pavankumar Kondeti
b8d8bfa400 usb: ks_bridge: Avoid allocating large buffers in atomic context
The current code allocates a new Rx buffer in Rx completion handler.
Rx buffers are freed after user space consumes them.  This results in
allocating larger buffers in atomic context which may fail some times.
Don't queue the Rx buffer immediately. Defer it till user space consumes
it and reuse the same buffer.  The test results indicate no throughput
degradation.  The Rx buffers will be freed when interface is suspended
or disconnected.

CRs-Fixed: 430595
Change-Id: I8e69e27df2e11b38497e0384a8edd87ecedcb24b
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
(cherry picked from commit 5c915c1949b79bc59d2b222bfcce02cd429619b2)
2013-03-07 15:23:57 -08:00
Kuogee Hsieh
e155e1826f msm_fb: display: free borderfill pipe when ref_cnt reach 0
Borderfill pipe need to be kept as baselayer which is not
suppose to be freed at suspend. It only be freed when
ref_cnt reach 0 by "adb stop".

CRs-fixed: 429196
Change-Id: Ibffe7960cc194162d1ba71e8dc8636393938483f
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
2013-03-07 15:23:57 -08:00
David Collins
946b76460c msm: rpm-regulator: Replace spinlocks with mutex locks
All calls of rpm_vreg_set_voltage() now take place in process
context.  Clock driver code on all targets has been written so
that atomic regulator control is no longer needed.

Refactor the rpm-regulator driver so that a mutex locks are used
in place of a spinlocks for sleep-selectable regulators which are
controlled via the rpm_vreg_set_voltage() function.

At the same time, move clk_prepare() and clk_unprepare calls in
the TCXO workaround so that these functions are correctly called
during each workaround invocation.  This is needed so that TCXO
isn't kept on forever after a single clk_prepare() call.

Change-Id: I07caed041dac6da073a0644271df2227b6c5a96e
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-03-07 15:23:57 -08:00
Vikram Mulukutla
594eb990dc msm: acpuclock-krait: Pre-emptively vote for the L2 HFPLL regulators
It is necessary that the L2 level computation and the setting
of the L2 rate happen atomically, so that the computed level
is still valid when the L2 rate is set. A spinlock protected
critical section is needed for these operations. However, the
votes for the HFPLLs necessitate invocation of the RPM
regulator APIs from a non-atomic context.

To solve this, we must first note that the problem only exists
when:
1. The L2 frequency is being switched away from an HFPLL source
   to a non-HFPLL source, or
   the L2 frequency is being switched away from a non-HFPLL
   source to an HFPLL source.
			--AND--
2. The CPU frequency switch (the cause of the L2 switch) is
   being performed as a result of cpufreq invoking the switch or
   hotplug onlining/offlining a core, since HFPLL regulator
   voting does not take place in the power-collapse and resume
   paths.

The solution is to pre-emptively vote for the L2 HFPLL regulators
if the target CPU frequency's required L2 level is sourced off of
an HFPLL. These votes are only removed after the spinlock
protected critical section completes, and only if the previous
CPU frequency's required L2 level was already sourced off of an
HFPLL source.

One further optimization is to disable only pre-emption, and
not interrupts in the afore-mentioned critical section.

Change-Id: I7b01f274f773ce513300ed3e4b074bae63e84c64
Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org>
2013-03-07 15:23:56 -08:00
Vikram Mulukutla
737d137135 msm: acpuclock-krait: Don't vote for PLL regulators in power-collapse paths.
The HFPLL regulator votes are active-set-only votes. This allows
us to get away with not voting for the HFPLL regulators in the
power collapse path by allowing the sleep-set <-> active-set
transition in the RPM to take care of this for us. Thus:

1. In the power-collapse path, if a CPU or the L2 switches from
   an HFPLL source to a non HFPLL source, the regulator votes
   remain in place, but will be removed once apps transitions
   to its sleep set.
2. In the power-collapse path, if a CPU or the L2 switches from
   a non HFPLL source to a non HFPLL source, the regulator votes
   are already not present.
3. In the resume path, when apps transitions to its active set,
   the HFPLL regulators would be turned back on before the HFPLL
   source is reselected.

Change-Id: Ifc66aaf23d601654367792ff2fb2cc35580db241
Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org>
(cherry picked from commit 3a78830598a34f67b48780b7e9e0f25f4448fd66)
2013-03-07 15:23:55 -08:00
Kuogee Hsieh
9f27d80763 msm_fb: display: add panel's late_init
Some panels need to be initialized after panel is on.
Add late_init to support this feature.

CRs-fixed: 433011
Change-Id: I73c623d1fe52363f070af79ce4bf7774cd84689e
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
2013-03-07 15:23:55 -08:00
Huaibin Yang
1844bc38ac msm_fb: display: skip one vsync event after enabling mdp and vsync clk
Both mdp and mdp_vsync clks are disabled for command mode panel when
no new frames are being played. When they are re-enabled if new
requests come in, the first vsync event which is signaled by read
pointer interrupt arrives in a random time due to the sync between mdp
and panel, so skip it to maintain correct vsync timing.

Change-Id: I683b765e4a16d3d152b9270f5982234b94921f1e
Signed-off-by: Huaibin Yang <huaibiny@codeaurora.org>
(cherry picked from commit a4567ac320abe5d74b3c7decdbddba4bd8c57463)
2013-03-07 15:23:54 -08:00
Girish Mahadevan
623763758a msm: event_timer: Fix potential race condition
There is a possible race condition which could happen in the following
scenario:

Core 0 PC: lock_hrtimer_base

 lock_hrtimer_base
 hrtimer_get_remaining
 get_next_event_time
 msm_pm_idle_prepare
 msm_cpuidle_enter

Core 1 PC: generic_exec_single

 generic_exec_single
 smp_call_function_single
 setup_event_timer
 mdp_update_pm

If core0 idle thread runs before core1 has had the chance to make the
smp_call_function_single, then idle thread could end up spinning on
lock_hrtimer_base() since setup_event_timer adds an event to the event
queue but the smp cross call is the one that initializes the event timer.
So Core0 could spin on lock_hrtimer_base() since CPU1's SMP call won't be
handled as idle thread runs in noirq context.

To prevent this scenario make a change to the code flow to do the queue
operations and the timer operations on the same CPU. Meaning
setup_event_timer will only make an SMP cross call to re-organize the event
queue and reset the event timer all of which will be run on CPU0.

CRs-fixed: 425587
Change-Id: I53fc551d18f350c47e05a94976b56a5fd2e9050b
Signed-off-by: Girish Mahadevan <girishm@codeaurora.org>
(cherry picked from commit e73869cb18ee79bd0b951fd7effd6565ce7ccfb4)
2013-03-07 15:23:54 -08:00
Sunid Wilson
a90291cc60 msm: gemini: Support upto 64mp encoding
Redesign the output ping pong mechanism to support
upto 64mp encoding using gemini hardware.

Change-Id: Id7801861e0fe119f61a02fb3409155f312a85d21
Signed-off-by: Sunid Wilson <sunidw@codeaurora.org>
2013-03-07 15:23:54 -08:00
Narayanan Gopalakrishnan
8011fdc939 ondemand: Add support to consider other cpu load when scaling frequencies
Currently only current cpu load is considered when frequency scaling.
As a side effect of this when scheduler migrates a thread to a slower
core, the execution time increases unexpectedly.

The new algorithm not only considers current cpu load for frequency
scaling, but also takes into account load of other online cpus. The
treshold for this can be controlled using up_threshold_any_cpu_load.
When the up_threshold_any_cpu_load is crossed in any cpu then the
current cpu is set to sync_freq.

Also, when more than one cpu is online a two step ramp-up mechanism
is used. When the up_threshold_multi_core is crossed the cpu is ramped
up to optimal_freq which is less than policy->max and set to a power
friendly value.

Change-Id: I64bed1b142cde1f239e73aa1f78981c78aaf59ce
Signed-off-by: Narayanan Gopalakrishnan <nargop@codeaurora.org>
(cherry picked from commit d3ca78370df00ec7a5b6816321ea1a1a371f2850)
2013-03-07 15:23:53 -08:00
Abhijeet Dharmapurikar
f2d1773a81 power: pm8921-bms: fix fake battery emulation
With the recent split of functions to calculate and report state of
charge, the faking battery feature broke, it remained in the calculate
function.

Move the fake battery feature in the reporting function, where it really
belongs.

Change-Id: I6a3fcc3b233792d87ea4ac8fe2e155e10ca24e21
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:23:53 -08:00
Pavankumar Kondeti
f1b73a188a USB: android: Fix adb device file closing bug
adb device file closing and config disabling can happen in
parallel during composition switch.  If adb device file
is closed prior to config disable, adb function driver request
android to disable configuration.  But this is not undone later
when adb device file is opened.  Due to this bug config remains
disabled after composition switch completion.  Fix this bug.

CRs-Fixed: 414360

Change-Id: Ia7b352c63d860028c02b8dd7a52522460557e6fd
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:23:52 -08:00
Simmi Pateriya
c48395436b ASoC: apq8064: Fix button detection voltage thresholds
Recent measurements indicate that the button threshold voltages
have changed. Adjust the button voltages accordingly

CRs-fixed: 432596
Change-Id: Ibee4db3b9c76df1d464dcad443f0f90d24751ee3
Signed-off-by: Simmi Pateriya <simmip@codeaurora.org>
2013-03-07 15:23:52 -08:00
Jay Chokshi
d11bccad3f msm: Ensure krait pll clamp is always set for CPU0
To turn off droop detectors in glitch free mux, the krait PLL clamp
is set permanently for secondary cores in platsmp secondary boot path.
Set the pll clamp for primary core as well.

Change-Id: I4d59864e32c9b5e221275ba780b449f21d727254
Signed-off-by: Jay Chokshi <jchokshi@codeaurora.org>
Signed-off-by: Neha Pandey <nehap@codeaurora.org>
2013-03-07 15:23:52 -08:00