Commit graph

571025 commits

Author SHA1 Message Date
Konstantin Dorfman
aa4228ea9d mmc: block: add mmc_blk_disable_wr_packing() disables packing mode
The function disables packing mode. Right now the only reason is
change in data direction.

Change-Id: I0f4edba3da93fde28cf47ac95754a95e411fa2af
Signed-off-by: Konstantin Dorfman <kdorfman@codeaurora.org>
2016-05-31 15:25:44 -07:00
Subhash Jadavani
fec8ffcb2b mmc: core: run clock scaling only in valid card state
Clock scaling requires the tuning and if the tuning command
is sent to the card in invalid state, tuning procedure will
fail.

With urgent request mechanism implemented, there is a chance
that clock scaling invoked when card is not in a proper state
to receive the tuning command.

This change checks the card state (by sending the status command)
before invoking the clock scaling request.

Change-Id: Icb71a8e74a9afdc70380a5901cd3d28931959e9c
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:44 -07:00
Maya Erez
0b0df0844f mmc card: Initialize the packing info before running the test
We need to do all the packing related initialization when running
the test instead of in the test preparation to prevent a race condition
between FS requests and the test requests

CRs-Fixed: 430138
Change-Id: I0bc96d9faa823f3574623edd7948f141f0d40b79
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-31 15:25:43 -07:00
Oluwafemi Adeyemi
93896acd78 mmc: Keep track of current hard partition
eMMC may have several hard partitions such as BOOT and RPMB in addition
to the main USER partition. On resume(if card is reinitialized), the
current hard partition is always switched to the default USER partition.
But this switch to default partition is not propagated to the MMC block
driver, which may have set the hard partition to any partition(BOOT/RPMB)
other than USER before suspend. After resume, the MMC block driver still
assumes it is accessing the previously set partition(BOOT/RPMB), and
instead overwrites the USER partition(the current selected partition on
the eMMC device). To prevent this, make MMC block driver aware of the
partition switches done as part of card reinitialization.

CRs-Fixed: 439313
Change-Id: I3e959101a1c56c1e6631da3d660f4b914e100503
Signed-off-by: Oluwafemi Adeyemi <aadeyemi@codeaurora.org>
Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
[subhashj@codeaurora.org: fixed trivial merge conflicts]
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:43 -07:00
Krishna Konda
26a145722e mmc: card: Fix RPMB IOCTL to handle all cards
The eMMC 4.5 spec for RPMB accesses is not very clear on whether
user parition accesses can be allowed in the middle of RPMB accesses.
Due to this ambiguity, it turns out this is implementation defined
and certain cards support it while others do not.

In order to allow this feature to function across a wide variety of
cards, this patch takes the pessimistic approach and ensures that any
RPMB access is completed before user partition can be accessed.

Change-Id: I77959f462c874771a0a854d9a2bc48df446eff56
Signed-off-by: Krishna Konda <kkonda@codeaurora.org>
Signed-off-by: Oluwafemi Adeyemi <aadeyemi@codeaurora.org>
Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
[merez@codeaurora: fix conflicts due to changes in 3.14]
Signed-off-by: Maya Erez <merez@codeaurora.org>
[subhashj@codeaurora.org: fixed merge conflicts and fixed compilation
errors]
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:42 -07:00
Subhash Jadavani
18941a3b87 mmc: block: reduce the block timeout to 30 secs
After completion of block write request, MMC block driver waits for the
card to come out of the programming state. If card doesn't come out of
the programming state in 10 mins, it would be considered as error
condition and card would reinitialized. But this 10 mins is just too huge
and if card is continuously stuck in programming state for 10 mins,
mmcqd thread would take increase the CPU load significantly as we are
continuously polling for the card status (by sending status commands).

This patch reduces this timeout from 10 mins to 30 secs which is quite
reasonable for all well-behaved cards.

Change-Id: I4e8eaf29c836a81419220f312ee867b0dd5cccc7
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
[merez@codeaurora.org: fix trivial conflicts]
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-31 15:25:42 -07:00
Maya Erez
23bf711121 mmc: do not pack random requests
Packed commands causes higher latency since the completion of each
request is sent to the upper layer upon completion of the complete
packed request.
The benefit from this feature is card dependent. Some of the card
vendors do not have any benefit from using packed commands for random
requests. In case there is no benefit in random requests packing,
it is better to disable the packing to prevent this high latency.
This patch also add the new stop packing reason to the write packing
statistics.

Change-Id: I141887dcef2ceee14848634cc27c3c85f8edc7a5
Signed-off-by: Maya Erez <merez@codeaurora.org>
[merez@codeaurora.org: fix conflicts due to removal of BKOPS]
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-31 15:25:41 -07:00
Subhash Jadavani
62649ebdb6 mmc: core: interrupt Background Operations if it takes too long
Currently we have 4 mins timeout for the blocking BKOPs to complete
but we have seen instances where card is surprisingly taking even
longer time to complete background operations.

If card doesn't complete the BKOPs within specified timeout, we
will send the HPI command to interrupt the ongoing BKOPs.

Change-Id: I5df81bdfd9b19bee30a394ee0ff4390b292691d0
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
[merez@codeaurora.org: fix conflicts due to changes in 3.14]
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-31 15:25:41 -07:00
Sujit Reddy Thumma
7a2c9513a1 mmc: core: claim mmc host while enabling clock scaling from userspace
A race condition can occur while enabling clock scaling and removal
of the card. If the card is removed just after the host->card check
is successful then there could be NULL pointer dereference later.
Claim mmc host before card availability check to avoid this race
condition.

Change-Id: I6339cad5857732ec6b66280940cd6b8b7ed30614
Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
2016-05-31 15:25:40 -07:00
Sujit Reddy Thumma
d98ae31eee mmc: core: Add sysfs entries for dynamic control of clock scaling
Add sysfs attributes to allow dynamic control of clock scaling
parameters. These attributes are used to enable/disable clock
scaling at runtime and change the up_threshold, down_threshold,
and polling_interval values. Complete documentation for these
sysfs entries are provided at "Documentation/mmc/mmc-dev-attrs.txt".

Change-Id: I4753c75c3b3eeea91e93bceba7af2535b793612e
Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:40 -07:00
Maya Erez
f763541793 mmc: card: activate packing control only for eMMC4.5 cards
Since the write packing is an eMMc4.5 feature, packing control
should also be activated only for eMMc4.5 cards.

Change-Id: If094658943a536f39afc814f6684c0dbb0806778
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-31 15:25:39 -07:00
Sujit Reddy Thumma
baf82d92c5 mmc: core: Add load based clock scaling support
The SD3.0/eMMC4.5/SDIO3.0 cards can support clock rates upto
200MHz (SDR104 or HS200 bus speed modes). For some workloads
like video playback it isn't necessary for these cards to run
at such high speed. Running at lower frequency, say 50MHz, in
such cases can still meet the deadlines for data transfers.
Scaling down the clock frequency dynamically has huge power
savings not only because the bus is running at lower frequency
but also has an advantage of scaling down the system core
voltage, if supported.

Provide an ondemand clock scaling support similar to cpufreq
ondemand governor having two thresholds, up_threshold and
down_threshold to decide whether to increase the frequency or
scale it down respectively. The sampling interval is in the
order of milliseconds and should be chosen by host drivers that
enable MMC_CAP2_CLK_SCALE capability to take advantage of clock
scaling. The sampling interval mainly depends on the the clock
switching delays and hence a host driver decision. If sampling
interval is too low frequent switching of frequencies can lead
to high power consumption and if sampling interval is too high,
the clock scaling logic would take long time to realize that the
underlying hardware (controller and card) is busy and scale up
the clocks.

Change-Id: I22a5054beec41b0b66b3bf030ddfcf284de448b3
Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
[merez@codeaurora.org: fixed conflicts due to changes in 3.14]
Signed-off-by: Maya Erez <merez@codeaurora.org>
[venkatg@codeaurora.org: runtime pm related changes to
accommodate pm framework from 3.14 kernel]
Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
[subhashj@codeaurora.org: fixed merge conflicts and fixed compilation
errors]
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:39 -07:00
Sarada Prasanna Garnayak
39b2cf8cd2 defconfig: arm64: update cnss config flag
The cnss platform driver compilation config flags
has been changed to CONFIG_CNSS_PCI to CONFIG_CNSS.

CRs-Fixed: 988871
Change-Id: Ie245ac4ad028b543916c27b015a7ba33e55958a9
Signed-off-by: Sarada Prasanna Garnayak <sgarna@codeaurora.org>
2016-05-31 15:25:38 -07:00
Maya Erez
45af9e56df mmc: sdio: fix sdio_reset_comm() to take care of UHS card reset
sdio_reset_comm() function may be invoked by the SDIO card function
driver to execute soft reset of the card but this function currently
fails to reset the UHS SDIO cards.

This change fixes this issue by simply invoking SDIO power restore
function which is capable of resetting both UHS and non-UHS SDIO cards.

CRs-Fixed: 424685
Change-Id: I4f1d76a6bfc4bfec16661aedba85c45b601f24ac
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
[merez@codeaurora.org: fix trivial conflicts]
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-31 15:25:38 -07:00
Yaniv Gardi
3c0d768b70 mmc: card: re-run test because of timing issues
Due to timing issues, the BKOPS test: Level 1 with HPI, might
not yield the expected scenario. In this case we wouldn't like
to have a FAILURE but to mark the test as a test that should be
re-run.

Change-Id: If47d7f9ce250c46249c5ddc061d8b808100d2f94
Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
[merez@codeaurora.org: fix conflicts due to removal of BKOPS]
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-31 15:25:38 -07:00
Lee Susman
7e79d2183d mmc: relocation of print_mmc_packed_stats
This function belongs to the file mmc_block_test.c since
it is used only in this file.

Change-Id: Ia832da6341b3053f0e4825d711668a3642482221
Signed-off-by: Lee Susman <lsusman@codeaurora.org>
2016-05-31 15:25:37 -07:00
Maya Erez
eb587df25d mmc: block: Fix error handling of device attributes creation
When a failure occurs while creating a device attribute,
we need to remove previously created attributes prior to deleting
the disk.

Change-Id: I01a8d4437f372abdf33230c34a73b5806e97188b
Signed-off-by: Maya Erez <merez@codeaurora.org>
[merez@codeaurora.org: fixed conflicts as BKOPS is not taken]
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-31 15:25:37 -07:00
Tatyana Brokhman
cbaf05043f mmc: card: Add eMMC4.5 packing control unit-tests
Expose the packing control test.
Test the packing control feature under these scenarios:
- Packing expected: entering write packing state,
  staying in write packing state.
- Packing not expected: not entering write packing state
  when not supposed to.
- Mixed states: test the ability to shift from packing
  to no-packing and back, and the opposite.

Change-Id: I5a93df8b5b7c48d355c3cc881699a3f9592914e6
Signed-off-by: Lee Susman <lsusman@codeaurora.org>
Signed-off-by: Tatyana Brokhman <tlinder@codeaurora.org>
2016-05-31 15:25:36 -07:00
Tatyana Brokhman
fececf257d mmc: card: Add eMMC4.5 write packed commands unit-tests
Expose the following packed commands tests:
- Test the write packed commands list preparation
- Simulate a returned error code
- Send an invalid packed command to the card

Change-Id: I23a15f94571da3ff9553a342dc37e1a8de6827c6
Signed-off-by: Lee Susman <lsusman@codeaurora.org>
Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Tatyana Brokhman <tlinder@codeaurora.org>
2016-05-31 15:25:36 -07:00
Tatyana Brokhman
8a0840d289 mmc: card: Fix packing control enabling algorithm
When hitting a stop potential packing event, we should zero
num_of_potential_packed_wr_reqs, so that the packing won't be
enabled too early.

Change-Id: I91d36765c4a50be0e2805cd07c58962fb87153c6
Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Tatyana Brokhman <tlinder@codeaurora.org>
2016-05-31 15:25:35 -07:00
Tatyana Brokhman
a37b447025 mmc: block: Add MMC write packing statistics
The write packing statistics are used for the packed commands unit tests
in order to determine test success or failure

Change-Id: I5eea513991c794543fbb3d009d8b7db0b0912fc5
Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Tatyana Brokhman <tlinder@codeaurora.org>
[subhashj@codeaurora.org: fixed trivial merge conflicts]
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:35 -07:00
Tatyana Brokhman
86dc987a4f mmc: block: Add write packing control
The write packing control will ensure that read requests latency is
not increased due to long write packed commands.

The trigger for enabling the write packing is managing to pack several
write requests. The number of potential packed requests that will trigger
the packing can be configured via sysfs by writing the required value to:
/sys/block/<block_dev_name>/num_wr_reqs_to_start_packing.
The trigger for disabling the write packing is fetching a read request.

Change-Id: I22e8ab04cd9aca220678784c39306068a0996790
Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Tatyana Brokhman <tlinder@codeaurora.org>
[merez@codeaurora.org: fixed trivial conflicts]
Signed-off-by: Maya Erez <merez@codeaurora.org>
[subhashj@codeaurora.org: fixed trivial merge conflicts]
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:34 -07:00
Asutosh Das
fd7c52accf mmc: block: do not query the sd card if a fault is injected
When the fault injection framework introduces an error to the data
block, the current code queries the SD card to find the number of
blocks actually programmed. This value would be as requested by the
generic block layer. So the entire request would be completed.

Say, request 0 is pulled from queue and submitted. When this is being
processed, request 1 is pulled from queue and prepared. Request 0
though is successful, fault-injection framework injects an error
and modifies the bytes_xferred variable to a random value less than
requested transfer. Request 1 is not processed and during the handling
of error, the SD card is queried for the actual bytes programmed. This
would be the correct value. Thus blk_end_request would complete
this request and the control would return to fetch request 2. In this
process, request 1 is not processed at all and the application waits
indefinitely for request 1 to be processed. No further requests are
issued to the queue.

This patch identifies, if the fault injection-framework has inserted an
error to this request and doesn't query the card and uses
bytes_xferred to complete the request.

Change-Id: I496802e244745bc7550402027a594d967cf7b756
Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
[subhashj@codeaurora.org: fixed trivial merge conflicts]
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:34 -07:00
Author: Stephen Boyd
883e57df75 revert "mmc: core: Set correct bus mode before card init"
This reverts the if/else part of
4466903481. We don't know why it
was done though and this should probably be dropped after testing.

Change-Id: Ie453df2f62b6716c6c0aa83dd4822b8555c4e555
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
[merez@codeaurora.org: fix conflicts]
Signed-off-by: Maya Erez <merez@codeaurora.org>
[subhashj@codeaurora.org: fixed merge conflicts]
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:33 -07:00
Sujit Reddy Thumma
aa9dc5064e mmc: core: sdio: Ensure clocks are always enabled before host interaction
Ensure clocks are always enabled before any interaction with the
host controller driver. This makes sure that there is no race
between host execution and the core layer turning off clocks
in different context with clock gating framework.

Change-Id: Ib47d0641f02c4390d26567102ee178beaf63516c
Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Per Forlin <per.forlin@stericsson.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
[sboyd: Keep non-upstreamed bits for sdio.c]
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2016-05-31 15:25:33 -07:00
Subhash Jadavani
357f7f515e mmc: host: remove mmcq performance numbers statistics
mmcq performance numbers are not captured since asynchronous
MMC request support got added in MMC block driver. So printing
out these numbers (which are all zeros) just adds confusion.
This patch removes the printing of mmcq performance numbers
statistics.

CRs-Fixed: 364206
Change-Id: I7213b11c8e9e055894c9902af7e975de3be1c519
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:32 -07:00
Krishna Konda
16f0e48102 mmc: core: Remove BROKEN_CLK_GATING quirk for AR6003 cards
MMC_CLKGATE feature can be enabled for Atheros AR6003 cards as
the host supports asynchronous acitivity notification when the
clocks are off.

Change-Id: Ieff00382894a0841496776dc6a6b1db53e204d6d
Signed-off-by: Krishna Konda <kkonda@codeaurora.org>
2016-05-31 15:25:32 -07:00
Pratibhasagar V
0513b6cb1e mmc: quirks: Fix data timeout values for certain SanDisk eMMC cards
Some INAND MCP devices advertise incorrect data timeout values.
This leads to data timeout errors on the platform. So, add a quirk
for such devices to facilitate proper functionality.

CRs-Fixed: 355347
Change-Id: If4fdd2724dc407450da8529222efca7ee94f50df
Signed-off-by: Pratibhasagar V <pratibha@codeaurora.org>
[merez@codeaurora.org: fix num of quirk to an additional quirk on 3.14]
Signed-off-by: Maya Erez <merez@codeaurora.org>
[subhashj@codeaurora.org: fixed trivial merge conflicts]
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:31 -07:00
Sujit Reddy Thumma
2c7404ac25 mmc: mmc_test: Fix possible NULL pointer dereference
test->highmem can be NULL if no page can be allocated.
In this case don't try to free it which can cause NULL
pointer dereference crash.

Change-Id: I6c31a265fd801dfc4169530e3f39ffcf6590f5a8
Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
2016-05-31 15:25:31 -07:00
Subhash Jadavani
9a09218381 mmc: core: capture performance numbers only when asked
Currently performance numbers are captured for each SDCC
transfers unconditionally which may add the overhead and
could reduce the SDCC read/write throughput numbers.

This change adds additional control for enabling/disabling the
capturing of performance numbers at runtime. We already have sysfs
entry named "perf" for msm sdcc devices. Currently setting this
entry to 0 clears the performance statistics. But now we are
changing the definition of this entry as mentioned below:

Disable performance capturing and clear the performance statistics:
	"echo 0 > /sys/devices/platform/msm_sdcc.<n>/perf"

Enable performance capturing:
	"echo 1 > /sys/devices/platform/msm_sdcc.<n>/perf"

CRs-fixed: 345170
Change-Id: I3ab9288fd87cc8a8ada6c0c3d066cac4f68d79b7
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:30 -07:00
Aparna Mallavarapu
0f618d04ba mmc: Add profiling code to measure performance at MMC layers.
Profiling code is added to measure read, write times for
the MMC requests at various MMC layers. Profiling is done
at the MMC queue and at the driver level. This information
can be viewed through a sysfs entry called perf.

Change-Id: I7c65bfe25a1f7774e3a9abf1f9539e690b3718ec
Signed-off-by: Aparna Mallavarapu <aparnam@codeaurora.org>
Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
[subhashj@codeaurora.org: fixed trivial merge conflict]
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:30 -07:00
Sujit Reddy Thumma
e3b5cec789 mmc: core: Remove BROKEN_CLK_GATING quirk for WCN1314 cards
MMC_CLKGATE feature can be enabled for Volans cards as
the host supports asynchronous acitivity notification
when the clocks are off.

Change-Id: Ic6cfa7fb2e713dcf1d2c6b2ae9df9cf0394f8c4a
Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
[merez@codeaurora.org: fix trivial conflicts]
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-31 15:25:29 -07:00
Sujit Reddy Thumma
6e40d14408 mmc: core: Export mmc_set_ios so that host drivers can use it
mmc_set_ios() is used by host drivers during suspend/resume
routines in indirect way i.e., by calling host->ops->set_ios().
But now with MMC_CLKGATE enabled, mmc_set_ios() also updates
host->clk_gated flag. So export this API so that host controller
drivers can use it.

Change-Id: Ib0c177635bb8d87ba68c98e08b8d940c73f2b80c
Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
[merez@codeaurora.org: fix trivial conflicts]
Signed-off-by: Maya Erez <merez@codeaurora.org>
2016-05-31 15:25:29 -07:00
Sarada Prasanna Garnayak
267a202df0 net: cnss: add dual cnss platform driver support for dual WiFi
For dual WiFi both cnss sdio and pcie platform needs to
be enabled. Added changes below to support dual platform
driver for dual WiFi.

Refactor the common api and data structure to avoid namespace
collision compilation error. Refactor sdio and pcie bus specific
kernel api and removed conditional compilation config flag.

The platform driver at run time identifies the wlan bus type
from the PHY device pointer passed by the wlan driver through
vos api and cnss platform driver redirects the cnss api according
the bus type.

Remove conditional compilation flag from cnss common api and
update cnss makefile for dual platform driver compilation
with single config flag.

CRs-Fixed: 988871
Change-Id: I8205c2979c857c2f3845ba2dc397d2f9dd1afa3b
Signed-off-by: Sarada Prasanna Garnayak <sgarna@codeaurora.org>
Signed-off-by: Ryan Hsu <ryanhsu@codeaurora.org>
2016-05-31 15:25:28 -07:00
Subhash Jadavani
71743a7317 mmc: sd: fix the issue with paranoid SD card init retry
mmc_resume_host() is called during resume (runtime or system) which calls
	1. mmc_power_up
	2. mmc_select_voltage
	3. host->bus_ops->resume() (mmc_sd_resume())

mmc_sd_resume() ultimately calls mmc_sd_init_card() to initialize the
SD card. But let's say if mmc_sd_init_card() fails during the
execute_tuning(). At this point, host controller timing is changed
to SDR104/SDR50 mode and host clock will also be > 100 MHz.

If there is an error returned by mmc_sd_init_card() and
if CONFIG_MMC_PARANOID_SD_INIT defined, it retries by calling
mmc_sd_init_card() without making sure that host controller timing
and clock be initialized again. This may cause the further
mmc_sd_init_card() also to fail.

To fix this, mmc_sd_resume() should call mmc_power_up()
and mmc_select_voltage() before retrying.

Change-Id: I8de39ea547fa0d5eca478719a4cf9255b6652503
[merez@codeaurora.org: changes already present in core.h and core.c]
Signed-off-by: Maya Erez <merez@codeaurora.org>
[venkatg@codeaurora.org: Fix args for mmc_power_up and mmc_select_voltage
as used in 3.14 kernel]
Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
[subhashj@codeaurora.org: fixed merge conflicts]
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2016-05-31 15:25:18 -07:00
Sarada Prasanna Garnayak
b48a17256e net: cnss: remove redundant and dead code from platform driver
The cnss subsystem restart and pm qos export API has been
refactor in respective platform driver according to the bus
type SDIO/PCIe.

Remove redundant and dead code from platform driver to avoid
the namespace collision compilation error. Refactor the recovery
work handler according to bus type. This feature adds support for
dual cnss platform driver support for dual WiFi.

CRs-Fixed: 987560
Change-Id: I0e1b5ff0e9970a40ad9d0619dcb7f8cbae241656
Signed-off-by: Sarada Prasanna Garnayak <sgarna@codeaurora.org>
2016-05-31 15:25:15 -07:00
Sarada Prasanna Garnayak
ca8c9aac25 net: cnss: add bus bandwidth support for sdio wlan module
Add cnss sdio platform driver support to vote for bus bandwidth
as per throughput requirement from wlan driver. The cnss sdio
platform driver export bus bandwidth api for wlan host driver.

CRs-Fixed: 990173
Change-Id: Ied2e5a78487b6f6076cd19f32c959a69050e055c
Signed-off-by: Sarada Prasanna Garnayak <sgarna@codeaurora.org>
2016-05-31 15:25:05 -07:00
Gaurav Singhal
1b18e29caa NFC: CE transaction failed during system suspend
IRQ was disabled at suspend so system was not able to
wake up during CE transaction.

Even after irq was enabled we were not able to wake up in irq handler
because wakeup event was not going due to is_suspended condition.

Change-Id: I5a088230786ef780cca0a3b767ad80e7b0c69f9e
Signed-off-by: Gaurav Singhal <gsinghal@codeaurora.org>
2016-05-31 15:24:53 -07:00
Aravind Venkateswaran
36a70eb4e5 msm: mdss: dsi: update DSI clamp configuration for msmcobalt
DSI clamps need not be configured for msmcobalt since the lanes
will be maintained in ULPS or LP11 through the DSI PHY. As such,
the only required programming is to disable the propagation of
the reset signal from the ahb domain. Update the SW programming
accordingly.

CRs-Fixed: 1019289
Change-Id: I0ba4858015457c971a42233c5a5f3dec9ca25ea6
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
2016-05-31 15:24:44 -07:00
Aravind Venkateswaran
652bc9dae0 ARM: dts: msm: add needed resources to support DSI clamps on msmcobalt
Add the register offset and the corresponding clocks to support
configuring DSI clamps on msmcobalt.

CRs-Fixed: 1019289
Change-Id: I4f9ed290416f95957b0f17424c624530f7a6794d
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
2016-05-31 15:24:35 -07:00
Amir Samuelov
8fe91ba970 ARM: dts: msm: add spss ion heap to msmcobalt
The Secure Processor Subsystem (SPSS) shall use its own ION heap
for allocation of memory shared between HLOS Applications
and SPSS Applications.

Change-Id: I05434cb559cc397c62d888e1c54c1f209765d92f
Signed-off-by: Amir Samuelov <amirs@codeaurora.org>
2016-05-31 15:24:25 -07:00
Ingrid Gallardo
53da3741b0 ARM: dts: msm: add 4k dsc panel for msmcobalt
Add required settings for command mode and video
mode 4k sharp panels in msmcobalt CDP. Add panels
to the list of supported panels so they can be
selected at runtime from kernel command line.

CRs-Fixed: 1019289
Change-Id: I7e289168c04221e9e272a8c0543d66af0e233450
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
2016-05-31 15:24:15 -07:00
Siddartha Mohanadoss
6cd1930871 iio: adc: Add round robin ADC driver
Round robin ADC (RRADC) driver provides an interface to enable
clients to read ADC values from the RRADC controller. The ADC
values are updated in a round robin sequence among the enabled
channels.

Clients include reading voltage, current and temperature channels
such as battery ID, battery thermistors, skin temperature,
PMI die temperature, charger temperature, USB_IN and DCIN voltage
and current.

Change-Id: I927c0f6a7db654880d951729996a27310f6628cf
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
2016-05-31 15:24:05 -07:00
Aravind Venkateswaran
2fcd240ed3 ARM: dts: msm: add mnoc_ahb clock for DSI device on msmcobalt
mnoc_ahb clock should be enabled prior to enabling the mdss_ahb
clock for any register access in the DSI domain.

Change-Id: I19bd72aebd9f82596dc04fe4b3179c81ab3c162d
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
2016-05-31 15:23:52 -07:00
Vinayak Menon
350c68c124 mm: swap_ratio: bail out if there aren't any other swap device
It is pointless to calculate the swap ratio when there is only
one swap device in the group. Moreover the existing code would
result in a spinlock recursion because of not taking this into
consideration. Interestingly, this check is already performed
in swap_ratio_slow by this piece of code

if (&(*si)->avail_list == plist_last(&swap_avail_head)) {
	/* just to make skip work */
	n = *si;
	ret = -ENODEV;
	goto skip;
}

But there is window where we drop the swap_avail_lock before
invoking swap_ratio() and take it back again in swap_ratio_slow.
In this period the si can get removed from swap_avail_head,
resulting in the failure of above logic. So recheck again.

Similarly, bail out from swap_ratio() if the sysctl is disabled,
and thus avoiding overhead of taking unnecessary locks.

Change-Id: I81a9dd61d24b7da55d5341c48a1f71d2b4b1978d
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
2016-05-31 15:23:38 -07:00
Vinayak Menon
44bd107fc9 mm: vmscan: fix the page state calculation in too_many_isolated
It is observed that sometimes multiple tasks get blocked in
the congestion_wait loop below, in shrink_inactive_list.

(__schedule) from [<c0a03328>]
(schedule_timeout) from [<c0a04940>]
(io_schedule_timeout) from [<c01d585c>]
(congestion_wait) from [<c01cc9d8>]
(shrink_inactive_list) from [<c01cd034>]
(shrink_zone) from [<c01cdd08>]
(try_to_free_pages) from [<c01c442c>]
(__alloc_pages_nodemask) from [<c01f1884>]
(new_slab) from [<c09fcf60>]
(__slab_alloc) from [<c01f1a6c>]

In one such instance, zone_page_state(zone, NR_ISOLATED_FILE)
had returned 14, zone_page_state(zone, NR_INACTIVE_FILE)
returned 92, and the gfp_flag was GFP_KERNEL which resulted
in too_many_isolated to return true. But one of the CPU pageset
vmstat diff had NR_ISOLATED_FILE as -14. As there weren't any more
update to per cpu pageset, the threshold wasn't met, and the
tasks were blocked in the congestion wait.

This patch uses zone_page_state_snapshot instead, but restricts
its usage to avoid performance penalty.

Change-Id: Iec767a548e524729c7ed79a92fe4718cdd08ce69
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
2016-05-31 15:23:28 -07:00
Amir Samuelov
eaee620aa2 ion: msm: add Secure Processor heap id
The Secure Processor Subsystem (SPSS) shall use its own ION heap
for allocation of memory shared between HLOS Applications
and SPSS Applications.

Change-Id: I4345d14dc22ddbdc34ff98b7b16719ba760951df
Signed-off-by: Amir Samuelov <amirs@codeaurora.org>
2016-05-31 15:23:16 -07:00
Satya Durga Srinivasu Prabhala
a45a1c4c78 arm64: defconfig: update config options for msmcortex_defconfig
Disable unnecessary options like KSM, ATA, VIRTUALIZATION etc.,
and enable options like IRQ_TIME_ACCOUNTING, CGROUPS, ZRAM etc.,
to match with msm_defconfig.

CRs-Fixed: 1021169
Change-Id: I11143ca9beae526c80c8b94a81c2369a7c489d11
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
2016-05-31 15:23:05 -07:00
Aravind Venkateswaran
b8dbd377af msm: mdss: dsi: enable additional clocks for register access on msmcobalt
MMMS mnoc_ahb clock needs to be enabled prior to enabling the mdss_ahb
clock on msmcobalt as there is a core fsm dependency between these
clocks.

Change-Id: I475b44619b68e731abc8b1a91a214c6cdf8cfc5e
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
2016-05-31 15:22:52 -07:00
Tapas Kumar Kundu
2caa570df2 defconfig: msmcortex: Enable performance driver
This module provides support to userspace entity for hotplugging
and setting cpufreq policy min/max limits. It can also detect
cpu/io workload and notify userspace via sysfs nodes.

A userspace entity can specify a CPU mask and the number of CPUs
it wants online within that mask and this module will try to make
a best effort to keep those many CPUs online. Userspace can also
specify the min and max limits on CPUs instead of writing to the
scaling_min/max nodes from sysfs so that if any CPU is offline
this module maintains a vote for it which is applied
once the CPU comes back online.

A userspace entity can also set threshold value in sysfs nodes of
this module for cpu/io workload detection and this module can notify
userspace entity when that crietia is met via sysfs nodes.

Change-Id: I2c92b689ae49af85489dbf9a6aef196f4f6abf4b
Signed-off-by: Tapas Kumar Kundu <tkundu@codeaurora.org>
2016-05-31 15:22:41 -07:00