Commit Graph

29405 Commits

Author SHA1 Message Date
Pratik Patel
040a9a7bf5 msm: jtag: move jtag related definitions to new jtag header
Create new jtag header file and move jtag related definitions to
it. This will decouple jtag code and help make coresight code
generic.

Change-Id: I722de9945800a4d0ba5b792c1b6dda5fc0b3cc40
Signed-off-by: Pratik Patel <pratikp@codeaurora.org>
2013-02-27 18:13:45 -08:00
Pratik Patel
2fce315bb4 cs: move shared data to external header
Move common shared data to external coresight header file.

Change-Id: I546ba939ef7d3d746cd171802498da5be872c234
Signed-off-by: Pratik Patel <pratikp@codeaurora.org>
2013-02-27 18:13:44 -08:00
Pratik Patel
8c45969706 cs: rename qdss files to coresight
As part of creating generic coresight driver code, rename qdss
to coresight.

Change-Id: I18f32ca96bb5c2e7ca540f592871e9942f2188e4
Signed-off-by: Pratik Patel <pratikp@codeaurora.org>
2013-02-27 18:13:44 -08:00
Laura Abbott
e167e0e65e msm: Remove pmem_kalloc APIs
All clients are now migrated from the pmem_kalloc APIs. Remove
references to these APIs so no one can call them.

Change-Id: I8cc388c347d48a20525efbb2f42e1065cbbc44e6
Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
2013-02-27 18:13:43 -08:00
Pratik Patel
7907eb535c cs: move qdss code under drivers
In preparation to create generic coresight drivers code move
existing qdss code under drivers/cs and include/linux

Change-Id: If7697a9961006fe94818e32d19aea75c56ce225d
Signed-off-by: Pratik Patel <pratikp@codeaurora.org>
2013-02-27 18:13:43 -08:00
Abhijeet Dharmapurikar
77d54c428a power_supply: add change the scope property
The scope property indicates the operating mode of the system. This
property could be used to switch to and from usb host mode.

Add a helper api to update this property.

CRs-Fixed: 373365
Change-Id: I5fb57f7b1075276ba90b0f7e0a44626e07ee196f
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2013-02-27 18:13:24 -08:00
Maya Erez
f5237919c5 block: Add test-iosched scheduler
The test scheduler allows testing a block device by dispatching
specific requests according to the test case and declare PASS/FAIL
according to the requests completion error code

Change-Id: Ief91f9fed6e3c3c75627d27264d5252ea14f10ad
Signed-off-by: Maya Erez <merez@codeaurora.org>
2013-02-27 18:13:18 -08:00
Michael Bohan
453c437b03 gpio: qpnp-pin: Add support for MPP devices
Add mpp support to the qpnp-pin driver. MPP support allows for
additional devices to be specified in the Device Tree topology.
This support is implemented in the same driver as the GPIO
support since the address map is very close between them.
The addition of this support does not change the existing gpio
support.

Default MPP configuration can be specified in the Device Tree
using the three new bindings for mpp. Any attribute not specified
in the Device Tree will assume its default configuration.

It's also possible to configure an MPP at runtime using the
existing qpnp_pin_config() API. If a given configuration feature
is not supported by the underlying hardware pin, then that
particular request is silently dropped with no error. This allows
for gpio users to continue specifying only a subset of the full
qpnp_pin_cfg structure.

Change-Id: I2b72768647de2a371edfa05c52fc1ed776c215c0
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2013-02-27 18:13:15 -08:00
Michael Bohan
6ee7045f1d gpio: qpnp-gpio: Issue lookups based on device name
qpnp-gpio manages gpio_chip queries based on the slave
ID. This has a limitation in that it restricts the number of
gpio_chips per slave ID to one. However, some PMICs have both MPP
and GPIO on the same slave, and thus the slave ID is not a
meaningful unit to search for.

Instead, make use of the 'label' binding to give the
primary dev-container node a name. This name will serve as the
gpio_chip label, which can be used in lookups.

Change-Id: Ic20caeb4622d73449a983992275446c733ddd89a
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2013-02-27 18:13:13 -08:00
Michael Bohan
a22d6fb262 spmi: Add spmi_resource for non spmi-dev-container cases
The devnode array is currently being used for non
spmi-dev-container devices as a special case where the number of
devnodes is 1. This obfuscates the code and also removes the
ability to store the dev-container's device resource information,
since in that special case the devnode array is dedicated for the
child devices.

Add a new spmi_resource entry used for typical spmi_devices, and
treat the devnode array as the special case for
spmi-dev-container.

Also add a new API spmi_get_primary_dev_name() to return the name
of the device assigned with the 'label' binding if it exists.

Change-Id: Ibe7b12285e37bb0529024558550a96d71393bc10
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2013-02-27 18:13:13 -08:00
Michael Bohan
d2f455c4e2 gpio: qpnp-gpio: Rename driver to qpnp-pin
Since QPNP PMICs also include support for MPP, and since we
intend to support MPPs in the same code base, it's not
appropriate to limit this the scope of this driver to 'gpio'.
Change the driver name to 'pin' since it more accurately
describes the potential for this driver.

Also update the Device Tree include files for the name changes.
Remove a superflous 'gpio-pin' definition in the msmcopper
specific include file, since such configuration shall never
change. This binding should be defined in the PMIC specific
include only.

Change-Id: Id1d6407039908e3cf44dfc19af71f0cdc7aff8e6
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2013-02-27 18:13:12 -08:00
Michael Bohan
6e36ee317c of: spmi: Add support for device naming and lookups
Since we support multiple device_nodes per spmi_device when used
with the spmi-dev-container flag, it's often unclear how a driver
should make reference to a particular device. Therefore,
introduce the spmi specific binding spmi-dev-name that specifies
the device name for the device_node.

Also introduce an API that can be used from
the driver to lookup the specific device node associated with a
particular device name.

Note that it may seem at first glance that the binding 'label' is
redundant with device_node->name. However, per the ePAPR,
device_node->name is intended to be as generic as possible,
representing the function of the device and not the precise
programming model. 'label' is used to give a platform
specific name that can be queried from device drivers.

Change-Id: I28eca35d0b625372c26a6d8ad81e7679f200d14b
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2013-02-27 18:13:12 -08:00
Michael Bohan
c3a607b5d6 of: spmi: Support resource naming
reg-names and interrupt-names are standard bindings to map device
tree reg and interrupt indices to particular names. This way the
driver does not need to be concerned with hard coded assignments.
Therefore, add spmi support for these bindings.

Explicit support for reg-names is required since the
implementation does not make use of of_address_to_resource(),
which happens to already support this.
This is because of_address_to_resource() mandates address
translation, which is not relevant to spmi.

interrupt-names is already implicitly handled by
of_irq_to_resource(), which is used in the spmi implementation.
Add additional documentation to state clearly that this binding
is also supported.

Also add supporting routines to easily lookup a resource by name
for both registers and interrupts.

Change-Id: I94faf950da5106ecd4ff36f47e5b46102d9bd426
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2013-02-27 18:13:11 -08:00
Michael Bohan
902a511010 spmi: qpnp: Change APIs to take a spmi_resource pointer instead of index
Pointers are more flexible than index numbers, since index
numbers depend upon an additional reference to the array in
question. In particular, we'd like to add a new API to lookup a
devnode based on a predefined name in the Device Tree. This API
will return a spmi_resource, and so it's natural to want to use
this pointer directly with the other existing APIs.

Also introduce a new API spmi_for_each_devnode that can be used
to iterate each spmi_resource in the dev_node array. This
abstracts the traversal of the array, which was previously done
within the existing APIs.

Change-Id: I18f9397e5d78770e840a9f95dd8061201931df6e
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2013-02-27 18:13:11 -08:00
Michael Bohan
0f3f74345a spmi: Rename qpnp library to be part of the spmi framework
It turns out that the only use cases for the qpnp library use
the existing spmi data structures. As such, there's really
no justification for having the library not be called 'spmi'.
There is nothing Qualcomm specific about this code.

Also cleanup some inconsistencies in the Kernel Doc comments
while we're here.

Change-Id: I1c73c88be740b6f5d38ba2de62de1737981b30fa
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2013-02-27 18:13:11 -08:00
Michael Bohan
1682c9d9f8 irqdomain: Port system to new API
The following merge commit chose the irq_domain implementation
from AU_LINUX_ANDROID_ICS.04.00.04.00.126 instead of the version
in v3.4.

commit f132c6cf77251e011e1dad0ec88c0b1fda16d5aa
Merge: 23016de 3f6240f
Author: Steve Muckle <smuckle@codeaurora.org>
Date:   Wed Jun 6 18:30:57 2012 -0700

    Merge commit 'AU_LINUX_ANDROID_ICS.04.00.04.00.126' into
    msm-3.4

Since this version is inconsistent with the upstream,
port the irq_domain framework to the version in v3.4 and
makes all necessary changes to clients that are out of spec.

Details of client ports are below.

-Update the qpnp-int driver for revmap irq_domain API. The revmap
irq_domain implementation introduces a reverse lookup scheme using
a radix tree. This scheme is useful for controllers like qpnp-int
that require a large range of hwirqs.

-Bring the ARM GIC driver up to v3.4, being careful
to port existing CAF changes.

-Partially port the gpio-msm-common driver to the new irq_domain API.
Enable the gpio-msm-common driver to work with the new irq_domain
API using a linear revmap. It is not a full port since irq_domain
is still only registered for Device Tree configurations. It should
be registered even for legacy configurations.

In addition, the irq_domains .map function should be setting all
the fields currently done in msm_gpio_probe(). That's not
currently possible since msm_gpio_probe is invoked
unconditionally - even from Device Tree configurations.

Finally, gpio-msm-common should be converted into a real
platform_device so that probe() is invoked due to driver and
device matching.

Change-Id: I19fa50171bd244759fb6076e3cddc70896d8727b
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2013-02-27 18:13:08 -08:00
Mayank Chopra
663750f6d2 Revert "msm: rotator: Add secure session flag to rotator start data"
This reverts commit 32200301c56b5f8490dc199e4f16b790c879bdf4.

Change-Id: I25836b3f88f1b022e5190be70ebbf471692091db
Signed-off-by: Mayank Chopra <makchopra@codeaurora.org>
2013-02-27 18:12:56 -08:00
Vamsi Krishna
a197142a84 usb: ehci: Avoid phy lockup due to SOFs during port reset
There could be race condition between h/w initiating sof
(start of frames) and finishing port reset. This can
cause hsic phy lockup, which results in enumeration failure.
Avoid this race condition by:
1. Moving to the old enumeration sequence where set_address is
initiated before get_device descriptor. This results in one
port reset instead of two port resets.
2. Halt usb controller before initiating port reset and start it after
port reset is complete. This is tricky because PORT_RESET bit
automatically clears when h/w completes the reset and failure to
start the controller within 3ms causes the peripheral device to
suspend resulting in enumeration failure. Hence, after setting
port reset bit forcefully drive strobe/data lines to reset using
ulpi interface and once port reset is complete, disable forceful
reset and start the controller in atomic context.

CRs-fixed: 364458, 359930
Change-Id: I49a2eac8043eb3001956c7ee9ead2c3a901524db
Signed-off-by: Vamsi Krishna <vskrishn@codeaurora.org>
2013-02-27 18:12:54 -08:00
Maya Erez
e9fabc0058 mmc: host: Give a unique number to each CAPS2 capability
MMC_CAP2_POWER_OFF_VCCQ_DURING_SUSPEND and MMC_CAP2_PACKED_RD are defined
to the same value. Needs to give each one of them a unique number.

Change-Id: I5f55396075fbffdae305122cd8fbb9f4b056c751
Signed-off-by: Maya Erez <merez@codeaurora.org>
2013-02-27 18:12:51 -08:00
Mohan Pallaka
9984bb0dba isa1200: Add support for pwm clk
PWM generation mode needs clk to generate internal PWM
for vibration. Add clk apis to enable/disable clock as
needed.

Change-Id: I2ba591509fc899186bf0ad7069133a9f1d0e6a42
Signed-off-by: Mohan Pallaka <mpallaka@codeaurora.org>
2013-02-27 18:12:49 -08:00
Ravishangar Kalyanam
c9a959ff67 msm: rotator: Add secure session flag to rotator start data
Add flag for handling secure session to rotator data passed during
start ioctl call.

Change-Id: Iaf22b7584a15d4678cd44483c0118bf1fb4c7c9b
Signed-off-by: Ravishangar Kalyanam <rkalya@codeaurora.org>
2013-02-27 18:12:46 -08:00
Adrian Salido-Moreno
edfe39d325 mdss: display: add rotator interface to mdss driver
Add rotator session management support with overlay interface using MDP
flag MDSS_MDP_ROT_ONLY. Overlay interface can only support overlay
surface or rotator (written back to memory) but not both.

Change-Id: Ib2f494683b2e6c2fd8c67818df2b57afb82a3df3
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
2013-02-27 18:12:41 -08:00
Praveen Chidambaram
af014a3fc0 msm: thermal: Simplify kernel thermal safeguard mechanism
Using CPUFreq policy objects and setting the max frequency limit by
overriding the policy->max node, leads to race/overwrite conditions with
an user trying to use the scaling_max_frequency node.

The thermal limits are directly communicated to the 'msm' cpufreq driver
and use the cpufreq_update_policy() to ensure that the frequency is
limited as per the thermal safeguard requirements.

CRs-fixed: 370343
Change-Id: Iab5a15e0f0d25da4b9f6a9417dbfc01bf5d6f8f6
Signed-off-by: Praveen Chidambaram <pchidamb@codeaurora.org>
2013-02-27 18:12:38 -08:00
Amit Blay
042d742d21 usb: otg: Fix USB remote-wakeup with LPM
Some of USB clocks have to be enabled in order for A2 to
be able to wake up USB.
Since USB now enters LPM upon USB bus suspend, this fix keeps
USB pclk & core_clk enabled, to allow waking up from A2.

A similar fix was already introduced for HSIC driver. This
change adds similar fix for USB.

Change-Id: Icd434132bc3dc3466dc7a55bb40603a3de3b4b2f
CRs-Fixed: 369189
Signed-off-by: Amit Blay <ablay@codeaurora.org>
2013-02-27 18:12:38 -08:00
Ido Shayevitz
1fc5741fd2 usb: msm_hsusb: Add include to linux/hrtimer
This fixes a compilation problem.

Change-Id: Ie8a8ffb5f16351a6590f8743b1b2639c1cb6da73
Signed-off-by: Ido Shayevitz <idos@codeaurora.org>
2013-02-27 18:12:25 -08:00
Vinay Kalia
1138ebaacf msm: vidc: Video driver update to kernel 3.4.
During the migration from kernel 3.0 to 3.4, V4L2 framework changed.
This requires changes from video driver. This change makes video
driver code compatible with kernel 3.4.

Change-Id: I12fb28e4b7c261c9755fbb62bb6bb8ea299d5272
Signed-off-by: Vinay Kalia <vkalia@codeaurora.org>
2013-02-27 18:12:22 -08:00
Laura Abbott
ad867bc45c gpu: ion: Add support for content protection 2.0 in CP heap
Add support to allow ion_cp_heap.c to secure according to new
requirements. This includes adding versioning to the secure
calls to allow other types of securing to take place.

Change-Id: I65e07ebaeefa1d0572b6531753a707a28284aa0d
Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
2013-02-27 18:12:19 -08:00
David Collins
5f1b9eef24 mfd: pm8038-core: Add support for PMIC thermal alarm
Add pm8xxx-tm subdevice into pm8038-core.  The pm8xxx-tm device
can be used to access the real-time PMIC die temperature.  It
can also be used to trigger an interrupt when critical
temperature thresholds are reached.

Change-Id: I4b8bda1d51cafaa6b77408da4c183bdb2dc4327a
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-02-27 18:12:12 -08:00
Laura Abbott
81303fbf94 gpu: ion: Add scm calls for content protection 2.0
The next generation of content protection has separate SCM
calls into TZ. Add these functions in a dedicated file so they
can be used by any Ion heap.

Change-Id: I197130f6a5fc33efcd6871b0f7c362fa99f18d20
Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
2013-02-27 18:12:09 -08:00
Wentao Xu
1a4055c77b input: change mpu3050 driver to request regulator, add poll support
Needed on 8x30 MTP/MDP platforms, where interrupt line polled up and
does not work with driver's default configuration

Change-Id: I4827c7a1f7df147245336d18523088c013381f1e
Signed-off-by: Wentao Xu <wentaox@codeaurora.org>
2013-02-27 18:12:06 -08:00
Arun Menon
3658e5175d msm:vidc: provide support to raise afab and ebi1 clks to turbo mode.
This change provides support to raise the clks to turbo mode for mpeg4
clips with high number of slices. The firmware performance degrades if
the number of slices is more than 10. Without this fix, we see lot of
frame drops happening, causing a freeze effect.

Change-Id: Ia897854ef6d30bb97cd37810b22eb1ab5ad818fb
CRs-Fixed: 358615
Signed-off-by: Arun Menon <menon@codeaurora.org>
2013-02-27 18:11:59 -08:00
Vinay Kalia
95b8044d54 V4L2: msm: Add events for video codecs.
Adds events for video codecs so that clients can be
notified of important events asynchronously.

Change-Id: I0177bdc6249306ed580aca5ec2ed434174a57ba7
Signed-off-by: Vinay Kalia <vkalia@codeaurora.org>
2013-02-27 18:11:47 -08:00
Sujit Reddy Thumma
3de43b3e2a msm: msm_sdcc: Set default clock gating timeout to 200msecs
With commit c84f15ae, the default clock gating delay in mmc host
init is set to zero. For MSM targets this can cause huge
performance hit as sometimes the clocks are non-local and
requires a request to other subsystem leading to significant
roundtrip delay.

Fix this to have atleast 200msecs delay in turning off the sdcc
clocks after a request is completed.

Change-Id: I5f434cf98373154d817735dba8f5bc8810d27611
Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
2013-02-27 18:11:46 -08:00
Amit Blay
f7b891b01e usb: gadget: hsic: Add support for VDDCX corner voting
This change add support in ci13xxx_msm_hsic driver and
ehci-msm-hsic driver for VDDCX corner voting.
In case a VDDCX corner resource is supported by the platform,
it will be used. Else, the legacy voting for specific voltage
level will be used.

Change-Id: Iae91d1c945f9b61340628b2fc7c7727e4cca6a1e
CRs-Fixed: 354458
Signed-off-by: Amit Blay <ablay@codeaurora.org>
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-02-27 18:11:43 -08:00
David Keitel
d0d1363952 power: bms/ccadc: move ccadc calibration to ccadc driver
There is a dependency for the CCADC calibration work on the BMS
driver. This prevents some devices that do not use the BMS
to utilize the CCADC.

Remove this dependency by moving the ccadc calibration
work to the CCADC driver to avoid this.

Change-Id: If43c781d6d2bc27f64dbbe594b6e81c5a5642f0b
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
2013-02-27 18:11:38 -08:00
Adrian Salido-Moreno
145cc2b53c mdss: display: Add Mobile Display SubSystem driver
- Implements Linux frame buffer interface to interact with userspace
  libraries and applications, based on msm_fb frame buffer.
- Implement MDP driver which handles MDP core data path setup and
  hardware blocks programming.
- Support for UI through Linux frame buffer FBIOPAN_DISPLAY ioctl.

Change-Id: Ib98677b8d81d74283b27dea08a9f1a705c101bce
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
2013-02-27 18:11:36 -08:00
Ramesh Masavarapu
1a2b7fcc56 tzcom: Remove tzcom driver components.
Remove tzcom driver components that includes files,
clock definitions. Currently tzcom driver has been replaced
by qseecom driver.

Change-Id: I1832d921a7b949057b84a7e0aa9afaa445be5194
Signed-off-by: Ramesh Masavarapu <rameshm@codeaurora.org>
2013-02-27 18:11:13 -08:00
Kiran Kandi
3534eb6906 ASoC: wcd9320: Add intial driver for WCD9320 codec
The WCD9320 Codec Driver is an ALSA-compliant codec driver. This driver
constructs the internal codec audio paths with DAPM widgets and
controls and provides the controls to the upper layers to enable and
configure audio paths.

Change-Id: Iee29359bebfc838cd200732b7191a2eb6a2087ee
Signed-off-by: Kiran Kandi <kkandi@codeaurora.org>
2013-02-27 18:11:03 -08:00
Karthikeyan Ramasubramanian
2e378e8de8 msm: ipc: Update server lookup operation to return complete information
QMI Server lookup returns only node_id and port_id. This information is
not sufficient when the QMI clients look for a specific instance of a
service. Hence the server lookup routine returns the instance ID along
with the server address information.

Change-Id: I644e6c8bb9dc3108c0198b7779ef277aa65f7bc5
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
2013-02-27 18:10:43 -08:00
Stephen Boyd
567fec6a4b Add snapshot of mach-msm from beginning of msm-3.4
This also includes various documentation files and the devicetree
files for msm boards.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2013-02-27 18:09:25 -08:00
Arve Hjønnevåg
cb40a6a8cb rtc: alarm: Add in-kernel alarm interface
Drivers can now create alarms that will use an hrtimer while the
system is running and the rtc to wake up from suspend.

Signed-off-by: Arve Hjønnevåg <arve@android.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2013-02-25 11:41:25 -08:00
Seungwon Jeon
eb072ec2c5 mmc: core: fix the decision of HS200/DDR card-type
Current implementation decides the card type exclusively. Even though
eMMC device can support both HS200 and DDR mode, card type will be
set only for HS200. If the host doesn't support HS200 but has DDR
capability, then DDR mode can't be selected.

Change-Id: Ifb5bb7fb0b7f4472734e10ec39d47e3f12e32cf8
Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
2013-02-25 11:41:03 -08:00
Asutosh Das
460cee698a mmc: core: fix improper clock frequency being passed to set_ios
This bug was introduced in the 'MMC-4.5 Power OFF Notify Rework' fix.

Prior to the aforementioned patch, during resume mmc_init_card was being
invoked. The aforesaid patch invokes mmc_card_awake, prior to which
mmc_power_up has already set the clock frequency to 400Khz. Since the card
init is not done again, this frequency stays as is and results in data
time-out errors.

Two new functions
	* mmc_save_ios
	* mmc_restore_ios
were added.
The mmc_save_ios is invoked during mmc_suspend process and it saves the
current ios values, while mmc_restore_ios is invoked during mmc_resume process
and restores the previous ios values before sending the awake command. This
ensures that the clock, timing, bus-width etc are set properly before any
request is sent to the driver.

Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
2013-02-25 11:41:01 -08:00
Saugata Das
06d8e2a3ad MMC-4.5 Power OFF Notify Rework
This is a rework of the existing POWER OFF NOTIFY patch. The current problem
with the patch comes from the ambiguity on the usage of POWER OFF NOTIFY
together with SLEEP and misunderstanding on the usage of MMC_POWER_OFF
power_mode from mmc_set_ios in different host controller drivers.

This new patch works around this problem by adding a new host CAP,
MMC_CAP2_POWER_OFF_VCCQ_DURING_SUSPEND, which when set sends a
POWER OFF NOTIFY from mmc_suspend instead of SLEEP. It is expected that host
controller drivers will set this CAP, if they switch off both Vcc and Vccq
from MMC_POWER_OFF condition within mmc_set_ios. However, note that there
is no harm in sending MMC_POWER_NOTIFY even if Vccq is not switched off.

This patch also sends POWER OFF NOTIFY from power management routines (e.g.
mmc_power_save_host, mmc_pm_notify/PM_SUSPEND_PREPARE, mmc_stop_host), which
does reinitialization of the eMMC on the return path of the power management
routines (e.g. mmc_power_restore_host, mmc_pm_notify/PM_POST_RESTORE,
mmc_start_host).

This patch sets POWER_OFF_NOTIFICATION to POWER_OFF_SHORT if it is sent from
the suspend sequence. If it is sent from shutdown sequence then it is set to
POWER_OFF_LONG.

Earlier implementation of PowerOff Notify as a core function is replaced as
a device's bus operation.

Signed-off-by: Saugata Das <saugata.das@linaro.org>
Signed-off-by: Girish K S <girish.shivananjappa@linaro.org>

changes in v5:
	modified the the handling of return value in mmc_poweroff_notify.
changes in v4:
	As suggested in review,
	- Moved mmc_can_poweroff_notify to core.c
	- Moved mmc_claim_host, mmc_release_host outside mmc_poweroff_notify
	- Added check for wrong initialization for poweroff_notify_type
	- mmc_poweroff_notify is modified to take as 2nd parameter
changes in v3:
	This version addresses the review comments given by Subhash and Ulf
changes in v2:
	This version addresses the changes suggested by Ulf
[smuckle@codeaurora.org: resolve minor merge conflicts]
Signed-off-by: Steve Muckle <smuckle@codeaurora.org>
2013-02-25 11:41:00 -08:00
Maya Erez
9a5a71e879 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: I1b330033e59a775c64fb915038d58615aff0dbdd
Signed-off-by: Maya Erez <merez@codeaurora.org>
2013-02-25 11:40:58 -08:00
Maya Erez
081e5b9636 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: I982170fa6dca9150ea4310bb546b838b7fd30e9b
Signed-off-by: Maya Erez <merez@codeaurora.org>
2013-02-25 11:40:57 -08:00
Seungwon Jeon
4dc768ff31 mmc: core: Support packed write command for eMMC4.5 device
This patch supports packed write command of eMMC4.5 device.
Several writes can be grouped in packed command and all data
of the individual commands can be sent in a single transfer
on the bus.

Change-Id: I391c3e5f73b785a8b7d25eb8256051020cfb0631
Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
Signed-off-by: Maya Erez <merez@codeaurora.org>
2013-02-25 11:40:55 -08:00
Jaehoon Chung
89c6b6a1a7 mmc: support BKOPS feature for eMMC v4.5
Enable eMMC background operations (BKOPS) feature.

If URGENT_BKOPS is set after a response, note that BKOPS
are required. After all I/O requests are finished, run
BKOPS if required. Should read/write operations be requested
during BKOPS, first issue HPI to interrupt the ongoing BKOPS
and then service the request.
If BKOPS-STATUS is upper than LEVEL2, need to check until clear
the BKOPS-STATUS vaule.

If you want to enable this feature, set MMC_CAP2_BKOPS.
And if you want to set the BKOPS_EN bit in ext_csd register,
use the MMC_CAP2_INIT_BKOPS.

Future considerations
 * Check BKOPS_LEVEL=1 and start BKOPS in a preventive manner.
 * Interrupt ongoing BKOPS before powering off the card.
 * How get BKOPS_STATUS value.(periodically send ext_csd command?)

Change-Id: Ia679c661a282072a7e54d10fc59d8ec1cbecae96
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Konstantin Dorfman <kdorfman@codeaurora.org>
2013-02-25 11:40:52 -08:00
Maya Erez
a2fc655089 mmc: card: Adding support for sanitize in eMMC 4.5
This feature delete the unmap memory region of the eMMC card,
by writing to a specific register in the EXT_CSD
unmap region is the memory region that were previously deleted
(by erase, trim or discard operation)

Change-Id: I7f1df8e87fb782979fd90e064eca00704caca54b
Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
Signed-off-by: Maya Erez <merez@codeaurora.org>
2013-02-25 11:40:51 -08:00
Seungwon Jeon
911034d6e8 mmc: core: Add packed command feature of eMMC4.5
This patch adds packed command feature of eMMC4.5.
The maximum number for packing read(or write) is offered
and exception event relevant to packed command which is
used for error handling is enabled. If host wants to use
this feature, MMC_CAP2_PACKED_CMD should be set.

Change-Id: I8013970fc9d54da7d92b0aca2bb0746189b9825b
Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
Signed-off-by: Maya Erez <merez@codeaurora.org>
2013-02-25 11:40:50 -08:00