]> git.karo-electronics.de Git - karo-tx-linux.git/log
karo-tx-linux.git
9 years agoMLK-9710-8 tcrypt: change memory allocation for test_ahash_speed output buffer
Victoria Milhoan [Wed, 5 Nov 2014 12:13:05 +0000 (05:13 -0700)]
MLK-9710-8 tcrypt: change memory allocation for test_ahash_speed output buffer

Change allocation of the tcrypt module's test_ahash_speed() output buffer to
use kmalloc().  This avoids a segmentation fault when the buffer is used in a
dma_map_*() call.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
(cherry picked from commit 3c8c56d1bd82433af6a565d183bdb632fd01a13a)

9 years agoMLK-9710-7 AEAD CBC DES DES3_EDE SHA* Support
Winston Hudson (b45308) [Wed, 18 Sep 2013 16:04:19 +0000 (09:04 -0700)]
MLK-9710-7 AEAD CBC DES DES3_EDE SHA* Support

This patch has been backported to the 3.5.7 kernel for use with i.MX6.

Note that CAAM also goes by sec-4.0 or sec-5.0 in other product families (such
as QorIQ). Thus the property names are often tied to the sec-4.0+ nomenclature.

The original patch can be found at the following link:
http://marc.info/?l=linux-crypto-vger&m=135771601829617&w=2

Test vectors were taken from existing test for CBC(DES3_EDE).
Associated data has been added to test vectors.
HMAC computed with Crypto++ has been used.
Following algos have been covered.

(a) "authenc(hmac(sha1),cbc(des))"
(b) "authenc(hmac(sha1),cbc(des3_ede))"
(c) "authenc(hmac(sha224),cbc(des))"
(d) "authenc(hmac(sha224),cbc(des3_ede))"
(e) "authenc(hmac(sha256),cbc(des))"
(f) "authenc(hmac(sha256),cbc(des3_ede))"
(g) "authenc(hmac(sha384),cbc(des))"
(h) "authenc(hmac(sha384),cbc(des3_ede))"
(i) "authenc(hmac(sha512),cbc(des))"
(j) "authenc(hmac(sha512),cbc(des3_ede))"

Signed-off-by: Vakul Garg <vakul@freescale.com>
Signed-off-by: Winston Hudson (b45308) <winston.h.hudson@freescale.com>
(cherry picked from commit 486265888badc647ef4d386310f0c1d895211d00)

9 years agoMLK-9710-6 AEAD CBC AES MD5 Test Support
Winston Hudson (b45308) [Wed, 18 Sep 2013 15:45:43 +0000 (08:45 -0700)]
MLK-9710-6 AEAD CBC AES MD5 Test Support

This patch adds support for the following tcrypt test:
(a) "authenc(hmac(md5),cbc(aes))"

Note that CAAM also goes by sec-4.0 or sec-5.0 in other product families (such as QorIQ).
Thus the property names are often tied to the sec-4.0+ nomenclature.

Signed-off-by: Winston Hudson (b45308) <winston.h.hudson@freescale.com>
(cherry picked from commit a8ad8329282f7381c7768b7f3d544864b8e9df33)

9 years agoMLK-9769-9 Adjust RNG timing to support more devices
Victoria Milhoan [Wed, 12 Nov 2014 16:58:24 +0000 (09:58 -0700)]
MLK-9769-9 Adjust RNG timing to support more devices

Adjust RNG timing parameters to support more i.MX6 devices.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
9 years agoMLK-9769-8 Add a test for the Freescale CAAM Random Number Generator
Victoria Milhoan (b42089) [Fri, 17 Oct 2014 23:30:56 +0000 (16:30 -0700)]
MLK-9769-8 Add a test for the Freescale CAAM Random Number Generator

Freescale's CAAM includes a Random Number Generator.  This change adds
a kernel configuration option to test the RNG's capabilities via the
hw_random framework.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
9 years agoMLK-9769-7 Add LKM support to the CAAM RNG module
Victoria Milhoan (b42089) [Fri, 17 Oct 2014 23:16:54 +0000 (16:16 -0700)]
MLK-9769-7 Add LKM support to the CAAM RNG module

This patch allocates memory for the CAAM RNG context information, to enable
the RNG module to be loaded and unloaded as a Linux Kernel Module.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
9 years agoMLK-9769-6 Add CAAM support to i.MX6SX device tree
Victoria Milhoan (b42089) [Thu, 16 Oct 2014 22:13:04 +0000 (15:13 -0700)]
MLK-9769-6 Add CAAM support to i.MX6SX device tree

Add support for CAAM job rings, Secure Memory, and SNVS
to the i.MX6SX device tree.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
9 years agoMLK-9769-5 Enable and disable clocks for the Freescale CAAM device on i.MX platforms
Victoria Milhoan (b42089) [Fri, 17 Oct 2014 21:56:36 +0000 (14:56 -0700)]
MLK-9769-5 Enable and disable clocks for the Freescale CAAM device on i.MX platforms

ARM-based systems may disable clocking to the CAAM device on the
Freescale i.MX platform for power management purposes.  This patch
enables the required clocks when the CAAM module is initialized and
disables the required clocks when the CAAM module is shut down.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
9 years agoMLK-9769-4 Add CAAM driver cache coherency support
Victoria Milhoan (b42089) [Thu, 16 Oct 2014 22:44:18 +0000 (15:44 -0700)]
MLK-9769-4 Add CAAM driver cache coherency support

i.MX6 ARM platforms do not support hardware cache coherency.  This patch
adds cache coherency support to the CAAM driver.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
9 years agoMLK-9769-3 caam: Add register I/O primitives for ARM compatibility
Steve Cornelius [Wed, 18 Apr 2012 20:59:05 +0000 (13:59 -0700)]
MLK-9769-3 caam: Add register I/O primitives for ARM compatibility

Add appropriate read/write register and set/clear 32-bit primitives
for compatibility with ARM devices.

Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com>
Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
9 years agoMLK-9769-2 Enable MXC devices to select CAAM driver in Kconfig
Steve Cornelius [Tue, 13 Mar 2012 21:51:17 +0000 (14:51 -0700)]
MLK-9769-2 Enable MXC devices to select CAAM driver in Kconfig

Allow CAAM to be selected in the kernel for i.MX6 devices if
ARCH_MXC is enabled.

Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com>
Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
9 years agoMLK-9769-1 caam: remove incorrect comment from job ring module
Victoria Milhoan [Wed, 29 Oct 2014 18:23:05 +0000 (11:23 -0700)]
MLK-9769-1 caam: remove incorrect comment from job ring module

The caam_jr_register() function is no longer part of the CAAM
driver.  This patch removes a comment referencing the function.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
9 years agoMLK-10082: vadc: Add suspend/resume function
Sandor Yu [Fri, 9 Jan 2015 08:55:59 +0000 (16:55 +0800)]
MLK-10082: vadc: Add suspend/resume function

Add suspend/resume function in vadc driver.

Signed-off-by: Sandor Yu <R01008@freescale.com>
9 years agoMLK-10081: csi: Add pm_runtime function
Sandor Yu [Fri, 9 Jan 2015 08:55:11 +0000 (16:55 +0800)]
MLK-10081: csi: Add pm_runtime function

Add pm_runtime function in csi driver.

Signed-off-by: Sandor Yu <R01008@freescale.com>
9 years agoMLK-10087 ARM: imx: sabreauto: enable USB function
Peter Chen [Wed, 4 Sep 2013 08:45:48 +0000 (16:45 +0800)]
MLK-10087 ARM: imx: sabreauto: enable USB function

Enable OTG and host 1 USB function.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Li Jun <jun.li@freescale.com>
9 years agoMLK-10088-18 usb: chipidea: Add errata for revision 2.40a
Sanchayan Maity [Fri, 19 Dec 2014 09:55:29 +0000 (15:25 +0530)]
MLK-10088-18 usb: chipidea: Add errata for revision 2.40a

At chipidea revision 2.40a, there is a below errata:

9000531823  B2-Medium  Adding a dTD to a Primed Endpoint May Not Get Recognized

Title: Adding a dTD to a Primed Endpoint May Not Get Recognized

Impacted Configuration: All device mode configurations.

Description:
There is an issue with the add dTD tripwire semaphore (ATDTW bit in USBCMD register)
that can cause the controller to ignore a dTD that is added to a primed endpoint.
When this happens, the software can read the tripwire bit and the status bit at '1'
even though the endpoint is unprimed.

After executing a dTD, the device controller endpoint state machine executes a final
read of the dTD terminate bit to check if the application added a dTD to the linked
list at the last moment. This read is done in the finpkt_read_latest_next_td (44) state.
After the read is performed, if the terminate bit is still set, the state machine moves
to unprime the endpoint. The decision to unprime the endpoint is done in the
checkqh_decision (59) state, based on the value of the terminate bit.
Before reaching the checkqh_decision state, the state machine traverses the
writeqhtd_status (57), writeqh_status (56), and release_prime_mask (42) states.
As shown in the waveform, the ep_addtd_tripwire_clr signal is not set to clear
the tripwire bit in these states.

Workaround:
The software must implement a periodic poll cycle, and check for each dTD
pending on execution (Active = 1), if the enpoint is primed. It can do this by reading
the corresponding bits in the ENDPTPRIME and ENDPTSTAT registers. If these bits are
read at 0, the software needs to re-prime the endpoint by writing 1 to the corresponding
bit in the ENDPTPRIME register. This can be done for every microframe, every frame or
with a larger interval, depending on the urgency of transfer execution for the application.

Tested-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
9 years agoMLK-10088-17 usb: chipidea: add chipidea revision information
Peter Chen [Wed, 17 Dec 2014 06:16:54 +0000 (14:16 +0800)]
MLK-10088-17 usb: chipidea: add chipidea revision information

Define ci_get_revision API to know the controller revision
information according to chipidea 1.1a, 2.0a and 2.5a spec.
Besides, add one entry at struct ci_hdrc to indicate revision
information, it can be used for adding different code for
revisions, eg kinds of errata.

Reviewed-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-16 usb: chipidea: add identification registers access APIs
Peter Chen [Wed, 17 Dec 2014 04:30:00 +0000 (12:30 +0800)]
MLK-10088-16 usb: chipidea: add identification registers access APIs

Using hw_write_id_reg and hw_read_id_reg to write and read identification
registers contents, they can be used to get controller information, change
some system configurations, and so on.

Reviewed-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-15 usb: phy: phy-mxs-usb: do not depend on speed for disconnect notifier
Peter Chen [Sun, 26 Oct 2014 05:49:02 +0000 (13:49 +0800)]
MLK-10088-15 usb: phy: phy-mxs-usb: do not depend on speed for disconnect notifier

For some user cases, like plug out and replug in usb device during
the system suspend, the speed negotiation will be error due to host
doesn't know the device's disconnection, and it still hopes the
high speed device, but the device backs to "powered" state which
its high speed termination is not enabled, the usb core calls
the PHY's disconnect notifier with "full speed", it will NOT
take effect at all.

If the usb core calls disconnect notifer, the port change must happen,
so it is safe to disable high speed disconenct detector, since
connect notifier will be called soon if the device is still connected
on the port, and we will enable high speed disconnect detector at that
time.

Acked-by: Li Jun <b47624@freescale.com>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-14 usb: phy: phy-mxs-usb: add power down and disable wakeup for .shutdown
Peter Chen [Wed, 24 Dec 2014 03:11:52 +0000 (11:11 +0800)]
MLK-10088-14 usb: phy: phy-mxs-usb: add power down and disable wakeup for .shutdown

When we shut down the PHY, we need to power down all PHY's functions
as well as disable wakeup, it is the opposite operation we do at .init.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-13 usb: chipidea: usbmisc_imx: add imx6sx initialization routine
Peter Chen [Tue, 23 Dec 2014 08:30:24 +0000 (16:30 +0800)]
MLK-10088-13 usb: chipidea: usbmisc_imx: add imx6sx initialization routine

Except the same process with earlier imx6, it has below two features:

- Choose which vbus voltage as vbus wakeup source
We choose B_SESSION_VALID as vbus wakeup source since when the system
goes to suspend, the vbus comparator can't compare the vbus voltage
for VBUS_VALID.

- Disable dp/dm (linestate) change as wakeup source at device mode
when the vbus is not there, we don't expect dp/dm change waking up
usb controller at this situation.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-12 doc: usb: usbmisc-imx: add imx6sx compatible string
Peter Chen [Wed, 24 Dec 2014 04:44:41 +0000 (12:44 +0800)]
MLK-10088-12 doc: usb: usbmisc-imx: add imx6sx compatible string

Add compatible string for imx6sx-usbmisc.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-11 usb: chipidea: clear otg interrupt status for otg capable controller
Peter Chen [Tue, 23 Dec 2014 02:30:07 +0000 (10:30 +0800)]
MLK-10088-11 usb: chipidea: clear otg interrupt status for otg capable controller

We need to do it for all otg capable controller, not only peripheral
featured otg capable controller, otherwise, the host-only role, but
otg capable controller may be responded by otg interrupt.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-10 doc: usb: chipidea: add usb wakeup enable example
Peter Chen [Tue, 23 Dec 2014 05:11:34 +0000 (13:11 +0800)]
MLK-10088-10 doc: usb: chipidea: add usb wakeup enable example

Add the example for how to enable USB as system wakeup source.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-9 usb: chipidea: imx: add usb as system wakeup source
Peter Chen [Tue, 23 Dec 2014 05:04:44 +0000 (13:04 +0800)]
MLK-10088-9 usb: chipidea: imx: add usb as system wakeup source

Enable USB as system wakeup source, and each platform needs to implement
imx_usbmisc_set_wakeup in usbmisc_imx.c to support.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-8 usb: chipidea: add usb as system wakeup source
Peter Chen [Tue, 23 Dec 2014 04:58:17 +0000 (12:58 +0800)]
MLK-10088-8 usb: chipidea: add usb as system wakeup source

The USB signal can be system wakeup source, this patch add the
support, for how to enable it, see Documentation/usb/chipidea.txt.
Since USB wakeup enable logic is vendor/platform specific, the
glue layer needs to implement it to support this feature.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-7 usb: chipidea: imx: add runtime power management support
Peter Chen [Tue, 23 Dec 2014 02:19:16 +0000 (10:19 +0800)]
MLK-10088-7 usb: chipidea: imx: add runtime power management support

Add runtime pm support for imx, only imx6 series are supported and tested.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-6 usb: chipidea: usbmisc_imx: add .set_wakeup interface
Peter Chen [Tue, 23 Dec 2014 02:17:30 +0000 (10:17 +0800)]
MLK-10088-6 usb: chipidea: usbmisc_imx: add .set_wakeup interface

This API is used to enable/disable usb wakeup, only imx6 series are
added, since I don't have other imx hardware on hand. Other imx users
can add their API according to reference manual after testing.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-5 usb: chipidea: add runtime power management support
Peter Chen [Mon, 13 Oct 2014 08:30:30 +0000 (16:30 +0800)]
MLK-10088-5 usb: chipidea: add runtime power management support

Add runtime power management support.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-4 usb: chipidea: imx: simplify the usbmisc callers
Peter Chen [Fri, 12 Dec 2014 06:53:32 +0000 (14:53 +0800)]
MLK-10088-4 usb: chipidea: imx: simplify the usbmisc callers

Move struct imx_usbmisc_data NULL pointer judgement from caller to
each API, it can simplify the caller.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-3 usb: chipidea: usbmisc_imx: delete clock information
Peter Chen [Fri, 12 Dec 2014 05:29:58 +0000 (13:29 +0800)]
MLK-10088-3 usb: chipidea: usbmisc_imx: delete clock information

All imx usb controller's non core registers uses the same clock gate with
core registers, the usbmisc_imx is the library for imx glue driver, the
glue keeps clock on when it calls usbmisc_imx API to change non-core register.

Besides, we will support runtime pm in the future, it also needs to
close this clock when the usb is not in use.

Philipp Zabel also verifies it at imx6q platform, see
http://www.spinics.net/lists/linux-usb/msg118491.html

Cc: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-2 usb: chipidea: imx: using common platform flag directly
Peter Chen [Fri, 12 Dec 2014 04:45:50 +0000 (12:45 +0800)]
MLK-10088-2 usb: chipidea: imx: using common platform flag directly

It is meaningless the glue layer driver has its own platform flag
which is the same meaning with common platform flag.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agoMLK-10088-1 usb: chipidea: udc: return immediately if re-enable non-empty endpoint
Peter Chen [Wed, 10 Dec 2014 06:49:41 +0000 (14:49 +0800)]
MLK-10088-1 usb: chipidea: udc: return immediately if re-enable non-empty endpoint

Some gadget driver (like uac1) will try to enable endpoint again even
the ep is not empty, it will cause the ep reset again and may affect
the dTD list which has already queued.

It returns -EBUSY immediately, and indicate the endpoint is in use.
In this way, the ep's behavior will not be affected, and the gadget
driver is also notified.

Cc: Xuebing Wang <xbing6@gmail.com>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
9 years agousb: chipidea: Fixed a few typos in comments
Mickael Maison [Wed, 26 Nov 2014 05:44:38 +0000 (13:44 +0800)]
usb: chipidea: Fixed a few typos in comments

Fixed typos in comments of 2 drivers/usb/chipidea files

Signed-off-by: Mickael Maison <mickael.maison@gmail.com>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 6629467ba5502cac22d31950e207a0334f2a0de5)

9 years agousb: chipidea: fix phy handling
Antoine Tenart [Wed, 26 Nov 2014 05:44:35 +0000 (13:44 +0800)]
usb: chipidea: fix phy handling

The generic plaftorm device for ChipIdea drivers is probed by calling
ci_hdrc_probe. The device structure used is not the one of the specific
ChipIdea driver but the one of the generic ChipIdea platform device.

This results in not being able to probe the PHYs as we're not using the
right device structure. Since all ChipIdea drivers are retrieving their
PHYs in their specific driver code, this didn't impact any of them yet.

Fixes it using the right device structure (dev->parent).

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 21a5b579cb63364b90e545e7e0a4bccb027711e8)

9 years agousb: chipidea: parameter 'mode' isn't needed for hw_device_reset
Peter Chen [Wed, 26 Nov 2014 05:44:33 +0000 (13:44 +0800)]
usb: chipidea: parameter 'mode' isn't needed for hw_device_reset

The hw_device_reset is dedicated to be used at device mode initializaiton,
so delete the parameter 'mode'. For host driver, the ehci driver will
handle all things.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 5b1573005a91dc448e6919d6bec076bedc7e1919)

9 years agousb: chipidea: add controller reset API
Peter Chen [Wed, 26 Nov 2014 05:44:32 +0000 (13:44 +0800)]
usb: chipidea: add controller reset API

Add controller reset API, currently it is used for device mode only.
It may be used for host/otg driver in future.

Ususally, we need this API for dual-role switch and back from hibernation
suspend to let the controller at default state.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit cdd278f21eea55412dd0c5bc468bbdfb0639879b)

9 years agousb: chipidea: remove flag CI_HDRC_REQUIRE_TRANSCEIVER
Peter Chen [Wed, 26 Nov 2014 05:44:31 +0000 (13:44 +0800)]
usb: chipidea: remove flag CI_HDRC_REQUIRE_TRANSCEIVER

Now, USB PHY is mandatory for chipidea core, the flag
CI_HDRC_REQUIRE_TRANSCEIVER is useless.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 947c88592f17bd299ff677049c3cda36cc6f93dd)

9 years agousb: chipidea: imx: add system power management support
Peter Chen [Wed, 26 Nov 2014 05:44:30 +0000 (13:44 +0800)]
usb: chipidea: imx: add system power management support

Add basic system power management support

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 2558c1f53bbbb5848fd5910918b97b03249d3885)

9 years agousb: chipidea: add system power management support
Peter Chen [Wed, 26 Nov 2014 05:44:29 +0000 (13:44 +0800)]
usb: chipidea: add system power management support

Add system power management support

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 8076932ff2fc0f6db0172420e6b148a8b2e8c805)

9 years agousb: chipidea: add hw_wait_phy_stable for getting stable status
Peter Chen [Wed, 26 Nov 2014 05:44:28 +0000 (13:44 +0800)]
usb: chipidea: add hw_wait_phy_stable for getting stable status

The phy needs some delay to output the stable status from low
power mode. And for OTGSC, the status inputs are debounced
using a 1 ms time constant, so, delay 2ms for controller to get
the stable status(like vbus and id) when the phy leaves low power.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit b82613cf09455d9a50fbb144ef07b68225f2b452)

9 years agousb: chipidea: remove the unnecessary delay after clear portsc.phcd
Peter Chen [Wed, 26 Nov 2014 05:44:27 +0000 (13:44 +0800)]
usb: chipidea: remove the unnecessary delay after clear portsc.phcd

The individual PHY driver should take this responsibility if it
needs to delay between clear portsc.phcd and let the phy leave
low power mode.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 6d037db6409c33738c7153e87ae1cf682ca2851b)

9 years agousb: chipidea: usbmisc_imx: Read MX53_USB_OTG_PHY_CTRL_1_OFFSET directly
Fabio Estevam [Wed, 26 Nov 2014 05:44:26 +0000 (13:44 +0800)]
usb: chipidea: usbmisc_imx: Read MX53_USB_OTG_PHY_CTRL_1_OFFSET directly

There is no need to do an intermediate step for reading the
MX53_USB_OTG_PHY_CTRL_1_OFFSET register.

Read it directly instead.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 4a1d6cf156dcf436e5037375007116197f03bfb1)

9 years agousb: chipidea: usbmisc_imx: Move the reading of USB_PHY_CTRL
Fabio Estevam [Wed, 26 Nov 2014 05:44:25 +0000 (13:44 +0800)]
usb: chipidea: usbmisc_imx: Move the reading of USB_PHY_CTRL

If 'evdo' property is not defined, then reading the MX25_USB_PHY_CTRL_OFFSET
register is an unneeded operation.

Move the reading of MX25_USB_PHY_CTRL_OFFSET inside the 'evdo' if block code,
where it is actually used.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 8d1dc4d055faafafca3edd8499aeeef3f77803e4)

9 years agousb: chipidea: ci_hdrc_imx.c: Remove unneeded OOM message
Fabio Estevam [Wed, 26 Nov 2014 05:44:24 +0000 (13:44 +0800)]
usb: chipidea: ci_hdrc_imx.c: Remove unneeded OOM message

MM core code already complains when devm_kzalloc() fails, so no need to print
the error locally.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 73529828cf896df5017255136b4dc2386dff0850)

9 years agousb: chipidea: core: Remove unneeded OOM message
Fabio Estevam [Wed, 26 Nov 2014 05:44:23 +0000 (13:44 +0800)]
usb: chipidea: core: Remove unneeded OOM message

MM core code already complains when devm_kzalloc() fails, so no need to print
the error locally.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit d0f992498e82e656646ad833e3f32ad69cd093e7)

9 years agousb: phy: propagate __of_usb_find_phy()'s error on failure
Arjun Sreedharan [Thu, 20 Nov 2014 15:53:36 +0000 (21:23 +0530)]
usb: phy: propagate __of_usb_find_phy()'s error on failure

When __of_usb_find_phy() fails, it returns -ENODEV - its
error code has to be returned by devm_usb_get_phy_by_phandle().
Only when the former function succeeds and try_module_get()
fails should -EPROBE_DEFER be returned.

[ balbi@ti.com : remove trailing whitespace ]

Signed-off-by: Arjun Sreedharan <arjun024@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
(cherry picked from commit 1290a958d48e30d60262a33acb5f068e87834ce4)

9 years agousb: phy: fsl: Fix build errors
Felipe Balbi [Wed, 12 Nov 2014 14:31:40 +0000 (08:31 -0600)]
usb: phy: fsl: Fix build errors

commit e47d925 (usb: move the OTG state from
the USB PHY to the OTG structure) moved the
OTG state from struct usb_phy to struct usb_otg.

Unfortunately, even though I fixed quite a few
build regressions with that patch already, this
one was still missing.

Note that this driver still has other randconfig
build problems which I'll leave for driver author
to fix, as that's less trivial.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
(cherry picked from commit e5ba1c024aa0c21ef1755402fd94fabfd6e18c16)

9 years agousb: core: notify disconnection when core detects disconnect
Peter Chen [Tue, 4 Nov 2014 03:14:31 +0000 (11:14 +0800)]
usb: core: notify disconnection when core detects disconnect

It is safe to call notify disconnect when the usb core
thinks the device is disconnected.

This commit also fixes one bug found at below situation:
we have not enabled usb wakeup, we do system suspend when
there is an usb device at the port, after suspend, we plug out
the usb device, then plug in device again. At that time,
the nofity disconnect was not called at current code, as
the controller doesn't know the usb device was disconnected
during the suspend, but USB core knows the port has changed
during that periods.

So to fix this problem, and let the usb core call notify disconnect.

Cc: 3.17+ <stable@vger.kernel.org>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit b2108f1e519e983e5dd5712b3a44f7366ab509e4)

9 years agousb: core: need to call usb_phy_notify_connect after device setup
Tony Zheng [Fri, 17 Oct 2014 11:43:02 +0000 (19:43 +0800)]
usb: core: need to call usb_phy_notify_connect after device setup

Since we notify disconnecting based on the usb device is existed
(port_dev->child, the child device at roothub is not NULL), we
need to notify connect after device has been registered.

This fixes a bug that do fast plug in/out test, and the notify_disconnect
is not called due to roothub child is NULL and the enumeration has failed.

Cc: v3.17+ <stable@vger.kernel.org>
Signed-off-by: Tony Zheng <Tony.Zheng@freescale.com>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 01ed67dc70834d00d62b6e754ee0f76301fbc140)

Conflicts:

drivers/usb/core/hub.c

9 years agousb: chipidea: otg_fsm: delete unnecessary 'out of memory' messages
Li Jun [Tue, 6 Jan 2015 09:11:24 +0000 (17:11 +0800)]
usb: chipidea: otg_fsm: delete unnecessary 'out of memory' messages

The memory subsystem has already had similar message for it.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
9 years agousb: chipidea: host: add portpower override
Michael Grzeschik [Mon, 13 Oct 2014 01:53:04 +0000 (09:53 +0800)]
usb: chipidea: host: add portpower override

This patch adds an external portpower override callback, only single
port regulator control is supported now.

Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit c8679a2fb8decc949c848ca58f93ff7fb619931a)

9 years agousb: ehci: add ehci_port_power interface
Michael Grzeschik [Mon, 13 Oct 2014 01:53:03 +0000 (09:53 +0800)]
usb: ehci: add ehci_port_power interface

The current EHCI implementation is prepared to toggle the
PORT_POWER bit to enable or disable a USB-Port. In some
cases this port power can not be just toggled by the PORT_POWER
bit, and the gpio-regulator is needed to be toggled too.

This patch defines a port power control interface ehci_port_power for
ehci core use, it toggles PORT_POWER bit as well as calls platform
defined .port_power if it is defined.

Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Acked-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 11a7e59405148c855e0a9d13588930ccec02c150)

9 years agousb: chipidea: add support to the generic PHY framework
Antoine Tenart [Thu, 30 Oct 2014 17:41:19 +0000 (18:41 +0100)]
usb: chipidea: add support to the generic PHY framework

This patch adds support of the PHY framework for ChipIdea drivers.
Changes are done in both the ChipIdea common code and in the drivers
accessing the PHY. This is done by adding a new PHY member in
ChipIdea's structures and by taking care of it in the code.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Acked-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
(cherry picked from commit 1e5e2d3d055436c114e2f16145b83339aed024ff)

9 years agousb: allow to supply the PHY in the drivers when using HCD
Antoine Tenart [Thu, 30 Oct 2014 17:41:16 +0000 (18:41 +0100)]
usb: allow to supply the PHY in the drivers when using HCD

This patch modify the generic code handling PHYs to allow them to be
supplied from the drivers. This adds checks to ensure no PHY was already
there when looking for one in the generic code. This also makes sure we
do not modify its state in the generic HCD functions, it was provided by
the driver.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Felipe Balbi <balbi@ti.com>
(cherry picked from commit ef44cb4226d132146e44f8ea562a16b27ff61126)

9 years agousb: add support to the generic PHY framework in OTG
Antoine Tenart [Thu, 30 Oct 2014 17:41:15 +0000 (18:41 +0100)]
usb: add support to the generic PHY framework in OTG

This patch adds support of the PHY framework in OTG and keeps the USB
PHY compatibility. Here the only modification is to add PHY member in
the OTG structure, along with the USB PHY one.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
(cherry picked from commit 48bcc18076df4e07ef86226ac6ce795f64c84f7f)

9 years agousb: rename phy to usb_phy in OTG
Antoine Tenart [Thu, 30 Oct 2014 17:41:14 +0000 (18:41 +0100)]
usb: rename phy to usb_phy in OTG

This patch prepares the introduction of the generic PHY support in the
USB OTG common functions. The USB PHY member of the OTG structure is
renamed to 'usb_phy' and modifications are done in all drivers accessing
it. Renaming this pointer will allow to keep the compatibility for USB
PHY drivers.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
(cherry picked from commit 19c1eac2685b62640ca2386a0a885ac2152668c8)

Conflicts:

drivers/phy/phy-omap-usb2.c
drivers/usb/phy/phy-msm-usb.c

9 years agousb: move the OTG state from the USB PHY to the OTG structure
Antoine Tenart [Thu, 30 Oct 2014 17:41:13 +0000 (18:41 +0100)]
usb: move the OTG state from the USB PHY to the OTG structure

Before using the PHY framework instead of the USB PHY one, we need to
move the OTG state into another place, since it won't be available when
USB PHY isn't used. This patch moves the OTG state into the OTG
structure, and makes all the needed modifications in the drivers
using the OTG state.

[ balbi@ti.com : fix build regressions with phy-tahvo.c, musb_dsps.c,
phy-isp1301-omap, and chipidea's debug.c ]

Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
Acked-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
(cherry picked from commit e47d92545c2972bcf3711e7db80f481e402163c7)

Conflicts:

drivers/usb/musb/musb_gadget.c
drivers/usb/phy/phy-msm-usb.c

9 years agousb: hcd: add generic PHY support
Sergei Shtylyov [Wed, 24 Sep 2014 19:09:44 +0000 (23:09 +0400)]
usb: hcd: add generic PHY support

Add the generic PHY support, analogous to the USB PHY support. Intended it to be
used with the PCI EHCI/OHCI drivers and the xHCI platform driver.

Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 0043325495222139daa0696db736f67658dc7770)

9 years agousb: rename phy to usb_phy in HCD
Antoine Tenart [Wed, 24 Sep 2014 19:05:50 +0000 (23:05 +0400)]
usb: rename phy to usb_phy in HCD

The USB PHY member of the HCD structure is renamed to 'usb_phy' and
modifications are done in all drivers accessing it.
This is in preparation to adding the generic PHY support.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
[Sergei: added missing 'drivers/usb/misc/lvstest.c' file, resolved rejects,
updated changelog.]
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Acked-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 3d46e73dfdb840f460e5b06416965d132570ec33)

Conflicts:

drivers/usb/core/hub.c
drivers/usb/misc/lvstest.c

9 years agoPM / domains: Turn latency warning into debug message
Philipp Zabel [Thu, 27 Feb 2014 18:26:44 +0000 (19:26 +0100)]
PM / domains: Turn latency warning into debug message

If devices don't provide latency data, this warning can be quite noisy until
the pm domain was enabled and disabled a few times. Turn this warning into
a debug message.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
(cherry picked from commit 7d1af287320b41909c070f68ffe1591060a32769)

9 years agoMLK-10079 ARM: dts: imx6q-sabresd-uart: Disabled the LEDS node in the imx6q-sabresd...
Shenwei Wang [Thu, 8 Jan 2015 14:48:47 +0000 (08:48 -0600)]
MLK-10079 ARM: dts: imx6q-sabresd-uart: Disabled the LEDS node in the imx6q-sabresd-uart.dts.

Silex UART BT is using GPIO1_2 as the reset, which is in conflict with
the one used by charging LEDS.

Signed-off-by: Shenwei Wang <shenwei.wang@freescale.com>
9 years agoMLK-10080 serial: imx: Fix imx_flush_buffer()
Fabio Estevam [Thu, 8 Jan 2015 21:17:05 +0000 (19:17 -0200)]
MLK-10080 serial: imx: Fix imx_flush_buffer()

When running an userspace program that does a 'tcflush(fd, TCIOFLUSH)' call
we still see the last received character in the URXD register afterwards.

Clear UCR2_SRST bit so that the FIFO is flushed properly.

Since UCR2_SRST also resets some UART registers, we need to save and restore
some of them.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
9 years agoMLK-10078-04 arm: mcc: enable mcc tests in dts
Richard Zhu [Thu, 8 Jan 2015 06:53:29 +0000 (14:53 +0800)]
MLK-10078-04 arm: mcc: enable mcc tests in dts

based on imx_3.14 kernel, add mcc pingpong and tty tests
on imx6sx sdb and ai boards.

Signed-off-by: Richard Zhu <Richard.Zhu@freescale.com>
9 years agoMLK-10078-03 mcc: tests: add mcc test and tty api
Richard Zhu [Thu, 8 Jan 2015 06:53:05 +0000 (14:53 +0800)]
MLK-10078-03 mcc: tests: add mcc test and tty api

add mcc tests and tty api on imx_3.14.
note:
the device type of the tty device should be
TTY_DRIVER_TYPE_CONSOLE, otherwise the TTY_DRIVER_TYPE_PTY.
link layer stuffs are mandatory requried by
TTY_DRIVER_TYPE_PTY type devices.

Signed-off-by: Richard Zhu <Richard.Zhu@freescale.com>
9 years agoMLK-10078-02 arm: mcc: platform related codes changes
Richard Zhu [Thu, 8 Jan 2015 07:09:38 +0000 (15:09 +0800)]
MLK-10078-02 arm: mcc: platform related codes changes

The platform related codes changes when enable mcc2.0
on imx_3.14 kernel, and tested on imx6sx sdb board.
- keep imx6sx soc related apis in mcc_imx6sx.c/h
- keep linux os related apis in mcc_linux.c/h
- add some new mcc callback in mu driver, since the
gie3 of mu is used as cpu2cpu interrupter in the mcc
implementation on imx6sx.

Signed-off-by: Richard Zhu <Richard.Zhu@freescale.com>
9 years agoMLK-10078-01 arm: mcc: platform related header changes
Richard Zhu [Thu, 8 Jan 2015 07:08:42 +0000 (15:08 +0800)]
MLK-10078-01 arm: mcc: platform related header changes

The platform related header changes when enable mcc2.0
on imx_3.14 kernel, and tested on imx6sx sdb board.
- keep imx6sx soc related apis in mcc_imx6sx.c/h
- keep linux os related apis in mcc_linux.c/h
- add some new mcc callback in mu driver, since the
gie3 of mu is used as cpu2cpu interrupter in the mcc
implementation on imx6sx.

Signed-off-by: Richard Zhu <Richard.Zhu@freescale.com>
9 years agoMLK-9843-02 arm: mcc: set dual copyright of mcc common header
Richard Zhu [Wed, 19 Nov 2014 07:53:03 +0000 (15:53 +0800)]
MLK-9843-02 arm: mcc: set dual copyright of mcc common header

set the dual bsd/gpl copyright of the mcc common codes
implemented in linux bsp release.
add 2015

Signed-off-by: Richard Zhu <Richard.Zhu@freescale.com>
(cherry picked from commit 2df3613c8a2635c55b4a4e7b98b74df49ff16299)

9 years agoMLK-9843-01 arm: mcc: set dual copyright of mcc common codes
Richard Zhu [Wed, 19 Nov 2014 07:52:18 +0000 (15:52 +0800)]
MLK-9843-01 arm: mcc: set dual copyright of mcc common codes

set the dual bsd/gpl copyright of the mcc common codes
implemented in linux bsp release.
add 2015.

Signed-off-by: Richard Zhu <Richard.Zhu@freescale.com>
(cherry picked from commit d7f8c4eff50ba78b82484597bd301c4a87dfe082)

9 years agoMLK-9707-3 arm: mcc: mcc 2.0 updates common codes changes
Richard Zhu [Mon, 20 Oct 2014 07:09:11 +0000 (15:09 +0800)]
MLK-9707-3 arm: mcc: mcc 2.0 updates common codes changes

Common codes changes in the mcc 2.0 updates
- common definitions are moved from mcc_config.h to mcc_common.h
because that these definitions are common for the standalone mcc
stack, and shared by different platforms, such as Linux, MQX.
- re-define the common api _psp_core_num(), and _psp_node_num().
Let them to be no platform dependency.
- move the definition of the MCC_OS_USED in mcc_config.h
- new add on mcc_config_linux.h file, contained the platform
related macro definitions contained in mcc_config.h before.
- add the related linux modifications into mcc_api.c/mcc_common.c
when implement the mcc2.0 into linux BSP.
- fix one potential bug that all the share memory operations should
be protected by sema4.

Acked-by: Shawn Guo
Signed-off-by: Richard Zhu <richard.zhu@freescale.com>
(cherry picked from commit 541325a16b6db73a86a5a86049145b0060805c7c)

9 years agoMLK-9707-2 mcc: mcc version 2.0 base common codes
Richard Zhu [Mon, 20 Oct 2014 06:34:34 +0000 (14:34 +0800)]
MLK-9707-2 mcc: mcc version 2.0 base common codes

This is the base line of the mcc version 2.0.

Acked-by: Shawn Guo
Signed-off-by: Richard Zhu <richard.zhu@freescale.com>
(cherry picked from commit cfd44c266e3b8a833ac624b86be627efbda6aaa9)

9 years agommc: sdhci: use pipeline mmc requests to improve performance
Haibo Chen [Tue, 9 Dec 2014 09:04:05 +0000 (17:04 +0800)]
mmc: sdhci: use pipeline mmc requests to improve performance

This patch is based on the patches by Per Forlin, Tony Lin and Ryan QIAN.

This patch complete the API 'post_req' and 'pre_req' in sdhci host side,

Test Env:
1. i.MX6Q-SABREAUTO board, CPU @ 996MHz, use ADMA in uSDHC controller.
2. Test command:
$ echo 1 > /proc/sys/vm/drop_caches
write to sd card:
$ dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=2000 conv=fsync
read the sd card:
$ dd if=/dev/mmcblk0 of=/dev/null bs=1M count=2000

3. TOSHIBA 16GB SD3.0 card, running at 4 bit, SDR104 @ 198MHZ
Performance with and without this patch:
      -------------------------------------------------
  |                    | read speed | write speed |
  |------------------------------------------------
  | with this patch    | ~76.7 MB/s |  ~23.3 MB/s |
  |------------------------------------------------
  |without this patch  | ~60.5 MB/s |  ~22.5 MB/s |
  -------------------------------------------------

4. SanDisk 8GB SD3.0 card, running at 4 bit, DDR50 @ 50MHZ
Performance with and without this patch:
      -------------------------------------------------
  |                    | read speed | write speed |
  |------------------------------------------------
  | with this patch    | ~40.5 MB/s |  ~15.6 MB/s |
  |------------------------------------------------
  |without this patch  | ~36.1 MB/s |  ~14.1 MB/s |
  -------------------------------------------------

5. Kingston 8GB SD2.0 card, running at 4 bit, High-speed @ 50MHZ
Performance with and without this patch:
      -------------------------------------------------
  |                    | read speed | write speed |
  |------------------------------------------------
  | with this patch    | ~22.7 MB/s |  ~8.2 MB/s  |
  |------------------------------------------------
  |without this patch  | ~21.3 MB/s |  ~8.0 MB/s  |
  -------------------------------------------------

6. About eMMC, Sandisk 8GB eMMC on i.MX6DL-sabresd board, CPU @ 792MHZ,
   eMMC running at 8 bit, DDR52 @ 52MHZ.
Performance with and without this patch:
      -------------------------------------------------
  |                    | read speed | write speed |
  |------------------------------------------------
  | with this patch    | ~37.3 MB/s |  ~10.5 MB/s |
  |------------------------------------------------
  |without this patch  | ~33.4 MB/s |  ~10.5 MB/s |
  -------------------------------------------------

Signed-off-by: Haibo Chen <haibo.chen@freescale.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
(cherry picked from commit a0a60bf36806be9528d4011563e9367bddeff762)

9 years agoMLK-9986-4 dma: imx-sdma: add new ecspi tx script
Robin Gong [Thu, 18 Dec 2014 04:41:16 +0000 (12:41 +0800)]
MLK-9986-4 dma: imx-sdma: add new ecspi tx script

Current ecspi rom script didn't take care of rxfifo overflow risk. Add new
ecspi tx script to check the rxfifo status, if it is near to full(>=48 bytes),
do not copy data to txfifo which will trigger data push into rxfifo. Because
rx script may not read rxfifo in time, we have to consider it.

Signed-off-by: Robin Gong <b38343@freescale.com>
(cherry picked from commit 17f472aa698aba0af5da4566df447e23306f4289)
(cherry picked from commit 90c929d7d1a3f8e196641b5ed7a33d2ee03bd63c)

9 years agospi: Fix mapping from vmalloc-ed buffer to scatter list
Charles Keepax [Mon, 17 Nov 2014 09:14:31 +0000 (09:14 +0000)]
spi: Fix mapping from vmalloc-ed buffer to scatter list

We can only use page_address on memory that has been mapped using kmap,
when the buffer passed to the SPI has been allocated by vmalloc the page
has not necessarily been mapped through kmap. This means sometimes
page_address will return NULL causing the pointer we pass to sg_set_buf
to be invalid.

As we only call page_address so that we can pass a virtual address to
sg_set_buf which will then immediately call virt_to_page on it, fix this
by calling sg_set_page directly rather then relying on the sg_set_buf
helper.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org
(cherry picked from commit c1aefbdd050e1fb15e92bcaf34d95b17ea952097)

9 years agoMLK-9986-5 spi: spi-imx: decrease tx fifo wartermark level
Robin Gong [Thu, 18 Dec 2014 04:51:28 +0000 (12:51 +0800)]
MLK-9986-5 spi: spi-imx: decrease tx fifo wartermark level

We set both wartermark of txfifo and rxfifo 32 as half of fifo length 64.
That will cause easy rxfifo overflow:
If there is 31 bytes in rxfifo, rx script will wait the next dma request
(the 32th data come into the rxfifo) and schedule out to tx script. Once
tx script start to run, the rx script need to wait tx script finish even
if its priority higher than tx. Meanwhile, spi slave device may input
data continous, plus the rx data which triggered by new tx script(32 bytes).
That will quickly consume whole 64 bytes fifo, so we keep 16bytes availbale
even in the worst case new tx script triggered during two rx transfer. That
may slow down tx slightly, but better than overflow and RX DMA timeout.

Signed-off-by: Robin Gong <b38343@freescale.com>
(cherry picked from commit 16043ad0ad96aa04a90614e473aa17980af4b8af)
(cherry picked from commit 819efee83b7b1f47685dca6fad6bbe17f1c42092)

9 years agoMLK-9986-3 imx-sdma: add new ecspi tx sdma script
Robin Gong [Thu, 18 Dec 2014 04:39:13 +0000 (12:39 +0800)]
MLK-9986-3 imx-sdma: add new ecspi tx sdma script

Add new ecspi tx sdma script in the head file.

Signed-off-by: Robin Gong <b38343@freescale.com>
(cherry picked from commit 9ca3cf4f301dc6d4130624814e689b676125fd36)
(cherry picked from commit 4241bfb6920410de9a05c420e6abd9c98b6bf388)

9 years agoMLK-9986-2 spi: spi-imx: use pio mode for the tail data in DMA mode
Robin Gong [Sat, 13 Dec 2014 13:55:25 +0000 (21:55 +0800)]
MLK-9986-2 spi: spi-imx: use pio mode for the tail data in DMA mode

Sometimes the tail data can't trigger SDMA to read from rxfifo, or
SDMA miss the last dma request, in this case, DMA report RX timeout
and the rest tail data kept in rxfifo. Whatever, use pio read for the
tail rx data.

Signed-off-by: Robin Gong <b38343@freescale.com>
(cherry picked from commit 61fec9e4511e7626a2c5299f37c12cca95d12e88)
(cherry picked from commit c7ecc24637babcb76edf20600f0535ab118e0101)

9 years agoMLK-9986-1 spi: spi-imx: change dma timeout value with transfer length
Robin Gong [Sat, 13 Dec 2014 04:46:31 +0000 (12:46 +0800)]
MLK-9986-1 spi: spi-imx: change dma timeout value with transfer length

Change dma timeout value with the transfer length if the length bigger than
1 MB.

Signed-off-by: Robin Gong <b38343@freescale.com>
(cherry picked from commit fb12a91a9ce6cd99d4c08483627ea0c94363ee08)
(cherry picked from commit d0fa9b74641285ef62bad2e8e39ee13467549967)

9 years agoMLK-9699: ARM: dts: imx6: enable spi dma support
Robin Gong [Thu, 16 Oct 2014 02:30:46 +0000 (10:30 +0800)]
MLK-9699: ARM: dts: imx6: enable spi dma support

There is one BUG(TKT238285) in ecspi module in DMA mode,but
it only found on i.mx6dl now, so enable dma support on all
i.mx6 chips except i.mx6dl

Signed-off-by: Robin Gong <b38343@freescale.com>
(cherry picked from commit fa9ef1796819aadbb1ea184613d4fdd3de1b46c6)

9 years agospi: spi-imx: add DMA support
Robin Gong [Thu, 11 Sep 2014 01:18:44 +0000 (09:18 +0800)]
spi: spi-imx: add DMA support

Enable DMA support on i.mx6. The read speed can increase from 600KB/s
to 1.2MB/s on i.mx6q. You can disable or enable dma function in dts.
If not set "dma-names" in dts, spi will use PIO mode. This patch only
validate on i.mx6, not i.mx5, but encourage ones to apply this patch
on i.mx5 since they share the same IP.

Note:
  Sometime, there is a weid data in rxfifo after one full tx/rx
transfer finish by DMA on i.mx6dl, so we disable dma functhion on
i.mx6dl.

Signed-off-by: Frank Li <Frank.Li@freescale.com>
Signed-off-by: Robin Gong <b38343@freescale.com>
Acked-by: Marek Vasut <marex@denx.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit f62caccd12c17e4cb516d43a6e4dd8a3abc1f7e0)
(cherry picked from commit b87c98a8944c76840ed1375ed4792ef608de5c01)

9 years agospi/imx: Use dev_name() for request_irq() to distinguish SPIs
Alexander Shiyan [Sat, 22 Feb 2014 13:23:46 +0000 (17:23 +0400)]
spi/imx: Use dev_name() for request_irq() to distinguish SPIs

Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 8fc39b516623f3beed18be701d2acfe0e50b8d86)
(cherry picked from commit fac24d90c8b851179d46aee6f9229f4665c14395)

9 years agospi: spi-imx: Propagate the real error code on platform_get_irq() failure
Fabio Estevam [Fri, 14 Feb 2014 03:19:22 +0000 (01:19 -0200)]
spi: spi-imx: Propagate the real error code on platform_get_irq() failure

No need to return a 'fake' return value on platform_get_irq() failure.

Just return the error code itself instead.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 82106e0e39c455957888dd44d43790306b30f73e)
(cherry picked from commit a4c564cb1206158a91678af2029dac7a3fbeb945)

9 years agospi: Use reinit_completion at appropriate places
Axel Lin [Sun, 9 Feb 2014 03:06:04 +0000 (11:06 +0800)]
spi: Use reinit_completion at appropriate places

Calling init_completion() once is enough.
For the rest of the iterations, call reinit_completion() instead.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit aa0fe82629f19efba5c870bc9be089a4f8056a75)
(cherry picked from commit fd20fe148977afbdda2f3d90eb6226b436ab9e09)

9 years agospi: delete non-required instances of include <linux/init.h>
Paul Gortmaker [Tue, 21 Jan 2014 21:22:47 +0000 (16:22 -0500)]
spi: delete non-required instances of include <linux/init.h>

None of these files are actually using any __init type directives
and hence don't need to include <linux/init.h>.  Most are just a
left over from __devinit and __cpuinit removal, or simply due to
code getting copied from one driver to the next.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 3a44623d5e1404b29786f1afd225d1aa04a4ae90)
(cherry picked from commit 324b6d43b9199eca4723c161be8b842397b58a9c)

9 years agospi: core: Pass correct device to dma_map_sg()
Geert Uytterhoeven [Thu, 10 Jul 2014 13:29:33 +0000 (15:29 +0200)]
spi: core: Pass correct device to dma_map_sg()

According to Documentation/dmaengine.txt, scatterlists must be mapped
using the DMA struct device.

However, "dma_chan.dev->device" is the sysfs class device's device.
Use "dma_chan.device->dev" instead, which is the real DMA device's device.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 3fc25421f55e36426f5e5cc227cacc840493a943)
(cherry picked from commit ff593afabbe51959293cf8434bbe72a3db24dda5)

9 years agospi: core: Fix check for dma_map_sg() failures
Geert Uytterhoeven [Thu, 10 Jul 2014 13:29:32 +0000 (15:29 +0200)]
spi: core: Fix check for dma_map_sg() failures

According to Documentation/DMA-API.txt, dma_map_sg() returns 0 on failure.
As spi_map_buf() returns an error code, convert zero into -ENOMEM.
Keep the existing check for negative numbers just in case.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 89e4b66a2e34744615c79349aa936df1b4204faf)
(cherry picked from commit d176f970196ecc2c0f0c30116061fdeba3461556)

9 years agospi: Remove unused variable
Mark Brown [Sat, 21 Jun 2014 10:40:40 +0000 (11:40 +0100)]
spi: Remove unused variable

Reported-by: kbuild test robot
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 840e9c354f3492259a65ae235351cde1089a409e)
(cherry picked from commit df473b0daee67eae1ebc1b76c1f5c3a1358ac7c6)

9 years agospi: Remove redundant OOM message in spi.c
Sachin Kamat [Fri, 13 Jun 2014 04:47:42 +0000 (10:17 +0530)]
spi: Remove redundant OOM message in spi.c

Let memory subsystem handle the error logging.

Signed-off-by: Sachin Kamat <sachin.kamat@samsung.com>
Reviewed-by: Naveen Krishna Chatradhi <ch.naveen@samsung.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 8331acb3a5515c01a1b73424a56f44c50ad7f1b4)
(cherry picked from commit 6cd6a0353c0f8e294f1372d436faba5d229a3aa0)

9 years agospi: core: Ignore unsupported spi-[tr]x-bus-width property values
Geert Uytterhoeven [Mon, 26 May 2014 12:05:25 +0000 (14:05 +0200)]
spi: core: Ignore unsupported spi-[tr]x-bus-width property values

Rejecting unsupported values of spi-tx-bus-width and spi-rx-bus-width
may break compatibility with future DTs. Just ignore them, falling back
to Single SPI Transfers.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 80874d8c9e9cbfa195572dfea46f2314098b3869)
(cherry picked from commit 391db8d1218fa531d6769dc69c89af48b0c4b60d)

9 years agospi: core: Don't destroy master queue if we fail to create it
Mark Brown [Thu, 1 May 2014 17:47:52 +0000 (10:47 -0700)]
spi: core: Don't destroy master queue if we fail to create it

If we fail to create the master queue for some reason we should not attempt
to clean it up since attempting to stop a kthread that was not created will
hang and it's just generally bad practice. Unfortunately at present we call
spi_destroy_queue() even in cases where the creation fails.

Fix this by fixing the error handling in spi_master_initialize_queue() so
that we only flag the master as queued or destroy the queue if creation
succeeded. The change to the flag is done since the general master
cleanup uses this to destroy the queue.

Reported-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
(cherry picked from commit c3676d5ceff213cba35af5ee5f320d2e8dc48cdf)
(cherry picked from commit 849521899b7906b6c4e2894b82a730d08e9bbbe8)

9 years agospi: core: Protect DMA code by #ifdef CONFIG_HAS_DMA
Geert Uytterhoeven [Fri, 2 May 2014 04:29:34 +0000 (06:29 +0200)]
spi: core: Protect DMA code by #ifdef CONFIG_HAS_DMA

If NO_DMA=y:

drivers/built-in.o: In function `spi_map_buf':
spi.c:(.text+0x21bc60): undefined reference to `dma_map_sg'
drivers/built-in.o: In function `spi_unmap_buf.isra.33':
spi.c:(.text+0x21c32e): undefined reference to `dma_unmap_sg'
make[3]: *** [vmlinux] Error 1

Protect the DMA code by #ifdef CONFIG_HAS_DMA to fix this:
  - Extract __spi_map_msg() from spi_map_msg(),
  - Provide dummy definitions of __spi_map_msg() and spi_unmap_msg() if
    !CONFIG_HAS_DMA.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 2de440f59ca9615c92820d165d5e59756e54026b)
(cherry picked from commit 61d339b48df0672b2f1a7ac4edaf5013d0f445cc)

9 years agospi: add "spi-lsb-first" to devicetree
Zhao Qiang [Tue, 1 Apr 2014 09:10:50 +0000 (17:10 +0800)]
spi: add "spi-lsb-first" to devicetree

add optional property devicetree for SPI slave nodes
into devicetree so that LSB mode can be enabled by devicetree.

Signed-off-by: Zhao Qiang <B45475@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit cd6339e6ced387ad67b5551dd2931cfd7e8b970b)
(cherry picked from commit 09623c20b3e6b11a914343d4b0f15b63e683f0d8)

9 years agospi: core: Increase timeout value
Harini Katakam [Fri, 11 Apr 2014 06:36:28 +0000 (12:06 +0530)]
spi: core: Increase timeout value

The existing timeout value in wait_for_completion_timeout is
calculated from the transfer length and speed with tolerance of 10msec.
This is too low because this is used for error conditions such as
hardware hang etc.
The xfer->speed_hz considered may not be the actual speed set
because the best clock divisor is chosen from a limited set such that
the actual speed <= requested speed. This will lead to timeout being
less than actual transfer time.
Considering acceptable latencies, this timeout can be set to a
value double the expected transfer plus 100 msecs.
This patch adds the same in the core.

Signed-off-by: Harini Katakam <harinik@xilinx.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit eee668a92bc775030178c8a7f0d0abe9cce441d7)
(cherry picked from commit e123573ecd0b16f52998e731a0659fdc89d841e4)

9 years agospi: Fix handling of cs_change in core implementation
Mark Brown [Sat, 29 Mar 2014 23:48:07 +0000 (23:48 +0000)]
spi: Fix handling of cs_change in core implementation

The core implementation of cs_change didn't follow the documentation
which says that cs_change in the middle of the transfer means to briefly
deassert chip select, instead it followed buggy drivers which change the
polarity of chip select.  Use a delay of 10us between deassert and
reassert simply from pulling numbers out of a hat.

Reported-by: Gerhard Sittig <gsi@denx.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 0b73aa63c193006c3d503d4903dd4792a26e1d50)
(cherry picked from commit f5ec8bd357c3f3fddb46a9bf17293cc6f77d2563)

9 years agospi: Do not require a completion
Mark Brown [Tue, 25 Mar 2014 19:28:22 +0000 (19:28 +0000)]
spi: Do not require a completion

There is no real reason why we require transfers to have a completion and
the only user of the completion now checks to see if one has been provided
before using it so stop enforcing this. This makes it more convenient for
drivers to chain multiple asynchronous transfers together.

Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 1e25cd4729bd76662d02b142a6a7f8504bb6aea7)
(cherry picked from commit 3d780e874e52daf0a976460a62f520cb438b6743)

9 years agospi: core: Use master->max_speed_hz as transfer speed when xfer->speed_hz > master...
Axel Lin [Mon, 17 Mar 2014 02:08:12 +0000 (10:08 +0800)]
spi: core: Use master->max_speed_hz as transfer speed when xfer->speed_hz > master->max_speed_hz

When xfer->speed_hz is greater than master->max_speed_hz, it's generally safe
to use master->max_speed_hz as transfer speed.
Thus use master->max_speed_hz as transfer speed rather than return error when
xfer->speed_hz > master->max_speed_hz.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit a6f87fad7b5132f026592729ccf65b995cdec35d)
(cherry picked from commit fe70982ad2c56031804d56ca8ed5e4f884c50c5b)

9 years agospi: core: make zero length transfer valid again
Atsushi Nemoto [Fri, 28 Feb 2014 14:03:16 +0000 (23:03 +0900)]
spi: core: make zero length transfer valid again

Zero length transfer becomes invalid since
"spi: core: Validate length of the transfers in message" commit,
but it should be valid to support an odd device, for example, which
requires long delay between chipselect and the first transfer, etc.

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Tested-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 6ea312936d68b557766dafa9a3c4617e14ffa076)
(cherry picked from commit 2e6324d5d3d41454776a6be0b369c758448242ea)

9 years agospi: core: Replace msleep with usleep_range to get more accurate sleep time
Axel Lin [Fri, 21 Feb 2014 01:15:18 +0000 (09:15 +0800)]
spi: core: Replace msleep with usleep_range to get more accurate sleep time

Fixes below checkpatch warning:
WARNING: msleep < 20ms can sleep for up to 20ms; see Documentation/timers/timers-howto.txt
+               msleep(10);

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit f97b26b05b1dcd307b2f79d1f9e9d99551987dbb)
(cherry picked from commit 658bc13e4a2d204479ee1978f32eb0e8f06ef643)

9 years agospi: core: Validate length of the transfers in message
Ivan T. Ivanov [Thu, 20 Feb 2014 10:02:08 +0000 (12:02 +0200)]
spi: core: Validate length of the transfers in message

SPI transfer length should be multiple of SPI word size,
where SPI word size should be power-of-two multiple

Signed-off-by: Ivan T. Ivanov <iivanov@mm-sol.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit 4d94bd21b333c695eba97746b615e2efb30240cc)
(cherry picked from commit 591b5303f19da193ca20d3434c25797dd8b24b08)

9 years agospi: Clean up probe and remove functions
Jean Delvare [Thu, 13 Feb 2014 14:28:41 +0000 (15:28 +0100)]
spi: Clean up probe and remove functions

While backporting 33cf00e5 ("spi: attach/detach SPI device to the ACPI
power domain"), I noticed that the code changes were suboptimal:

* Why use &spi->dev when we have dev at hand?

* After fixing the above, spi is used only once, so we don't really
  need a local variable for it.

This results in the following clean-up.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit aec35f4ee6eefba616065547e6882c084cc7f5cb)
(cherry picked from commit 9ca113486e72c145c8c448672e0ea2009f6383d7)