]> git.karo-electronics.de Git - karo-tx-linux.git/log
karo-tx-linux.git
11 years agoENGR00262528-2 usb: host: the clock needs to be off if probe fails
Peter Chen [Tue, 18 Jun 2013 00:30:51 +0000 (08:30 +0800)]
ENGR00262528-2 usb: host: the clock needs to be off if probe fails

The clock needs to be off if probe fails.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00262528-1 mx6-msl: usb: the static variables needs to be initialized
Peter Chen [Tue, 18 Jun 2013 00:24:35 +0000 (08:24 +0800)]
ENGR00262528-1 mx6-msl: usb: the static variables needs to be initialized

The static variables needs to be initialized at init function,
or the value may be incorrect during the module load/unload process.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00266285-3 mm: dmapool: export for normal case
Peter Chen [Sat, 8 Jun 2013 08:00:47 +0000 (16:00 +0800)]
ENGR00266285-3 mm: dmapool: export for normal case

It is the same issue with ENGR00217721, and it is also needed
for normal usb case.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00266285-2 mm: dmapool: export for normal case
Peter Chen [Sat, 8 Jun 2013 07:58:29 +0000 (15:58 +0800)]
ENGR00266285-2 mm: dmapool: export for normal case

It is the same issue with ENGR00217721, and it is also needed
for normal usb case.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00266285-1 usb: gadget: using non-buffer & non-cache memory for dma buffer
Peter Chen [Sat, 8 Jun 2013 07:55:25 +0000 (15:55 +0800)]
ENGR00266285-1 usb: gadget: using non-buffer & non-cache memory for dma buffer

It is the same issue with ENGR00217721, and it is also needed
for normal usb case.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00267442 mx6: clk: some clock settings are incorrect
Anson Huang [Tue, 18 Jun 2013 05:57:33 +0000 (13:57 +0800)]
ENGR00267442 mx6: clk: some clock settings are incorrect

1. The ipg_per clock rate setting should be done after
its parent initilization done, otherwise it will get wrong
parent rate and lead to incorrect rate setting;

2. The parent info of emi_clk has been changed in latest RM,
need to update it according to RM, the parent info is as below:

2b'00: 396M PFD;
2b'01: PLL3;
2b'10: AXI;
2b'11: 352M PFD.

Signed-off-by: Anson Huang <b20788@freescale.com>
11 years agoENGR00240112-2 crypto: caam: add ecb(aes) crypto algorithm to caam.
Zhang Jiejing [Fri, 21 Sep 2012 01:52:36 +0000 (09:52 +0800)]
ENGR00240112-2 crypto: caam: add ecb(aes) crypto algorithm to caam.

add ecb(aes) support for caam algorithm, the caam H/W
support both ecb and cbc, add the algorithm into template.

Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
11 years agoENGR00240112-1 caam: fix user space crypto API support.
Zhang Jiejing [Wed, 12 Sep 2012 10:04:49 +0000 (18:04 +0800)]
ENGR00240112-1 caam: fix user space crypto API support.

This patch fix the CAAM support for Crypto User Space API support.
in the dma_map_sg_chained() function, the chained mode will loop
until the scatter list end, but when the scatter list end, it will
return null and orignal code will set this to the sg list point
used by dma_sync, so it will panic.

When do chain dma, use a tmp do going through the list.

Signed-off-by Zhang Jiejing <jiejing.zhang@freescale.com>

11 years agoENGR00181680-2 No audio when play 3 streams after 3~10 seconds sometimes
b02247 [Mon, 14 May 2012 01:54:27 +0000 (09:54 +0800)]
ENGR00181680-2 No audio when play 3 streams after 3~10 seconds sometimes

sdma: bd is bufferable dma buffer, interrupt handler can not get correct
      data after sdma script updated. Which will cause there is no interrupt
      after failed period number times in the interrupt handler.
This is a workaround.

Signed-off-by: b02247 <b02247@freescale.com>
11 years agoENGR00181680-1 No audio when play 3 streams after 3~10 seconds sometimes
b02247 [Wed, 9 May 2012 09:30:41 +0000 (17:30 +0800)]
ENGR00181680-1 No audio when play 3 streams after 3~10 seconds sometimes

sdma: bd is bufferable dma buffer, interrupt handler can not get correct
      data after sdma script updated. Which will cause there is no interrupt
      after failed period number times in the interrupt handler.
This is a workaround.

Signed-off-by: b02247 <b02247@freescale.com>
11 years agoENGR00267024 mx6q: Stop DMA memory fragmentation
Jay Monkman [Fri, 14 Jun 2013 16:47:50 +0000 (11:47 -0500)]
ENGR00267024 mx6q: Stop DMA memory fragmentation

Applied patch from customer to prevent DMA memory
fragmentation. Customer reported system crashes due to running out of
DMA-able memory while playing videos. Reported in CT42391649.

Signed-off-by: Jay Monkman <jay.monkman@freescale.com>
11 years agoENGR00266881 mxc vout:Flush workqueue when change is needed for streaming
Liu Ying [Thu, 13 Jun 2013 04:50:27 +0000 (12:50 +0800)]
ENGR00266881 mxc vout:Flush workqueue when change is needed for streaming

We currently call cancel_work_sync() to have all left work be done. But,
this is not safe to make sure all left work being done successfully.
Instead, chances are that some work may be cancelled before starting
to be done, which may cause frame lost and make us hang at upcoming
wait_event_interruptible() in videobuf_waiton() called from video buffer
core v1 framework's dqbuf API. This patch replaces the function
call cancel_work_sync() with flush_workqueue() to fix the issue.

Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
11 years agoENGR00266873 mxc vout:Release or invalidate previous buffers correctly
Liu Ying [Thu, 13 Jun 2013 03:49:56 +0000 (11:49 +0800)]
ENGR00266873 mxc vout:Release or invalidate previous buffers correctly

Users may call VIDIOC_S_CTRL ioctrl to do rotation, such as 90 degree
rotation, when a video is streaming in IC bypass mode. The runtime
rotation setting may make the vout driver lose the track for a previous
video buffer and finally cause the streaming hang. This patch releases
that video buffer in this case and invalidates previous video buffers
when necessary.

Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
11 years agoENGR00266312 mx6dl: add i2c4 bus support for sabresd/auto, arm2 platforms
Fugang Duan [Sun, 9 Jun 2013 06:43:52 +0000 (14:43 +0800)]
ENGR00266312 mx6dl: add i2c4 bus support for sabresd/auto, arm2 platforms

imx6dq have 3 i2c controllers and 5 ecspi,imx6dl have 4 i2c4
controllers and 4 ecspi. imx6dl i2c4 clock source is routed
from pll3 through to ecspi_root gate.

Add i2c4 bus support for sabresd/auto, and arm2 platforms.

Signed-off-by: Fugang Duan <B38611@freescale.com>
11 years agoENGR00265465 gpu:Add global value for minimum 3D clock export
Loren Huang [Tue, 4 Jun 2013 07:08:15 +0000 (15:08 +0800)]
ENGR00265465 gpu:Add global value for minimum 3D clock export

Add global value gpu3DMinClock so that minimum 3D clock can be change by user.
When gpu min clock is too low, it may cause IPU starvation issue in certain case.
Use echo x > /sys/module/galcore/parameters/gpu3DMinClock to change it.

Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
11 years agoENGR00265377 ASoC: fm: fix section mismatch during kernel compiling
Nicolin Chen [Tue, 4 Jun 2013 02:46:28 +0000 (10:46 +0800)]
ENGR00265377 ASoC: fm: fix section mismatch during kernel compiling

Use __devinit instead of __int to fix section mismatch issue.

Acked-by: Wang Shengjiu <b02247@freescale.com>
Signed-off-by: Nicolin Chen <b42378@freescale.com>
11 years agoENGR00265130 gpu:Correct section mismatch in gpu kernel driver
Loren HUANG [Fri, 31 May 2013 10:29:58 +0000 (18:29 +0800)]
ENGR00265130 gpu:Correct section mismatch in gpu kernel driver

-Remove the __devinit for suspend/resume function.
-Replace __devinit to __devexit for remove function.

Cherry-pick from 3.5.7 branch.

Signed-off-by: Loren HUANG <b02279@freescale.com>
Acked-by: Lily Zhang
11 years agoENGR00265061 System hang when running the game lsh.emu.apk
guoyin.chen [Fri, 31 May 2013 05:01:25 +0000 (13:01 +0800)]
ENGR00265061 System hang when running the game lsh.emu.apk

The game will creat a lot of hr timer, and make cpu tick broadcast
bit not been clear all time. It will cause user space thread not
been scheduled.

Signed-off-by: guoyin.chen <guoyin.chen@freescale.com>
11 years agoENGR00264863 IPU: Fix interger overflow and check for invalid zero parameter
Wayne Zou [Thu, 30 May 2013 06:59:26 +0000 (14:59 +0800)]
ENGR00264863 IPU: Fix interger overflow and check for invalid zero parameter

Fix interger overflow and check for invalid zero divider parameter

Signed-off-by: Wayne Zou <b36644@freescale.com>
11 years agoENGR00264288-1 [GPU]Integrate 4.6.9p12 release kernel part code
Loren Huang [Mon, 27 May 2013 09:45:48 +0000 (17:45 +0800)]
ENGR00264288-1 [GPU]Integrate 4.6.9p12 release kernel part code

Integrate 4.6.9p12 release kernel part code.

Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
11 years agoENGR00264275 [GPU]Correct suspend/resume calling after adding runtime pm.
Loren HUANG [Wed, 22 May 2013 09:21:30 +0000 (17:21 +0800)]
ENGR00264275 [GPU]Correct suspend/resume calling after adding runtime pm.

After enabling runtime pm the suspend/resume entry is changed.

-Add new entry for suspend/resume in runtime pm frame work.
-Add static define for all runtime pm function.

Cherry-pick from 3.5.7 kernel branch.

Signed-off-by: Loren HUANG <b02279@freescale.com>
Acked-by: Lily Zhang
11 years agoENGR00263639 MX6SL-Ensure Audio PLL (PLL4) is enabled correctly
Ranjani Vaidyanathan [Tue, 21 May 2013 19:40:13 +0000 (14:40 -0500)]
ENGR00263639 MX6SL-Ensure Audio PLL (PLL4) is enabled correctly

The following commit:
6f394da8b374dc4a063209deedeb5d8a62ae4c74
introduced a bug that does not enable audio PLL when its
frequency is something other than 24MHz.
This patch ensures that Audio PLL will be enabled for
all frequencies.

Signed-off-by: Ranjani Vaidyanathan <ra5478@freescale.com>
11 years agoENGR00263785 Update code to read GPIO signal value
Mahesh Mahadevan [Wed, 22 May 2013 22:05:06 +0000 (17:05 -0500)]
ENGR00263785 Update code to read GPIO signal value

The code reads the direction register and returns value from the
DR register if pin is configured as output and from the PSR
register if pin is configured as input.

Signed-off-by: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com>
11 years agoENGR00263304-3 IPUv3:Check NULL irq handler in ipu_request_irq()
Liu Ying [Tue, 21 May 2013 09:02:46 +0000 (17:02 +0800)]
ENGR00263304-3 IPUv3:Check NULL irq handler in ipu_request_irq()

To avoid NULL interrupt handler being called potentially in the
IPU sync interrupt source handler, this patch adds sanity check
on NULL interrupt handler in the function ipu_request_irq() for
sync interrupts because the callers are likely to request a sync
interrupt without specifying a handler. The error interrupts can
still be enabled by this function without this kind of sanity
check since we simply print out the relevant error interrupt
register values in the IPU error interrupt source's handler.
This patch also corrects _ipu_get() and _ipu_put() function call
in the function ipu_request_irq() to make them be called in pair
when handler has already been registered.

Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
11 years agoENGR00263304-2 IPUv3:Check NULL irq handler in ipu_enable_irq()
Liu Ying [Tue, 21 May 2013 09:00:35 +0000 (17:00 +0800)]
ENGR00263304-2 IPUv3:Check NULL irq handler in ipu_enable_irq()

To avoid NULL interrupt handler being called potentially in the
IPU sync interrupt source handler, this patch adds sanity check
on NULL interrupt handler in the function ipu_enable_irq() before
the relevant interrupt is enabled in the sync interrupt registers.
The error interrupts can still be enabled by this function without
this kind of sanity check since we simply print out the relevant
error interrupt register values in the IPU error interrupt source's
handler. This patch also makes the function return error code to
it's callers if any error happens.

Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
11 years agoENGR00263304-1 arm: IPUv3:Make ipu_enable_irq be able to return error
Liu Ying [Tue, 21 May 2013 03:37:59 +0000 (11:37 +0800)]
ENGR00263304-1 arm: IPUv3:Make ipu_enable_irq be able to return error

The callers of ipu_enable_irq() may choose to enable a sync interrupt
without calling ipu_request_irq() to assign an interrupt handler to
that interrupt beforehand. This is wrong and may cause NULL interrupt
handler being called in the IPU sync interrupt handler and finally
makes the system hang. This patch changes the return type of the
function ipu_enable_irq() from 'void' to 'int' so that the callers
may be aware of the error.

Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
11 years agoENGR00262815-2 MX6SL-Add support for SDMA buffers in IRAM
Ranjani Vaidyanathan [Wed, 15 May 2013 21:46:18 +0000 (16:46 -0500)]
ENGR00262815-2 MX6SL-Add support for SDMA buffers in IRAM

Store SDMA channel and buffer descriptors in IRAM for MX6SL.
This will improve the audio playback power when both the
SDMA and audio buffers are all in IRAM. The DDR will be
self-refresh for longer periods of time.

Signed-off-by: Ranjani Vaidyanathan <ra5478@freescale.com>
11 years agoENGR00262815-1 MX6SL-Add support for SDMA buffers in IRAM
Ranjani Vaidyanathan [Wed, 15 May 2013 21:45:39 +0000 (16:45 -0500)]
ENGR00262815-1 MX6SL-Add support for SDMA buffers in IRAM

Store SDMA channel and buffer descriptors in IRAM for MX6SL.
This will improve the audio playback power when both the
SDMA and audio buffers are all in IRAM. The DDR will be
self-refresh for longer periods of time.

Signed-off-by: Ranjani Vaidyanathan <ra5478@freescale.com>
11 years agoENGR00261884 fix system hang when thumbnail or playback interlace clips
Richard Liu [Tue, 21 May 2013 08:40:24 +0000 (16:40 +0800)]
ENGR00261884 fix system hang when thumbnail or playback interlace clips

fix system hang when thumbnail or playback interlace clips

Signed-off-by: Richard Liu <r66033@freescale.com>
11 years agoENGR00262832 MX6SL-Lower Audio playback power.
Ranjani Vaidyanathan [Wed, 24 Apr 2013 04:39:38 +0000 (23:39 -0500)]
ENGR00262832 MX6SL-Lower Audio playback power.

Move MMDC to be sourced from PLL2_200M in audio mode.
Set the DDR freq to be 100MHz in audio mode.
Add code to drop DDR to 25MHz when ARM is in WFI while
playing audio. This will be the case when SDMA is transferring
data from the audio buffer in IRAM. Also float the DDR IO
pins in this state.

Set Audio PLL to bypass mode.
Source both WM8962 and SSI2 from audio PLL (PLL4).

Set AHB to 8MHz in Audio playback mode when ARM is going to enter WFI.

Signed-off-by: Ranjani Vaidyanathan <ra5478@freescale.com>
11 years agoENGR00262748 Clean up regulator code for 3.5.7
Loren HUANG [Wed, 15 May 2013 10:57:56 +0000 (18:57 +0800)]
ENGR00262748 Clean up regulator code for 3.5.7

Remove gpu_regulator since 3.5.7 doesn't need it.

Cherry-pick from 3.5.7 branch.

Signed-off-by: Loren HUANG <b02279@freescale.com>
Acked-by: Lily Zhang
11 years agoENGR00261814-4 gpu: use new PU power on/off interface
Robin Gong [Thu, 9 May 2013 03:45:55 +0000 (11:45 +0800)]
ENGR00261814-4 gpu: use new PU power on/off interface

use new PU power on/off interface in GPU driver

Cherry-pick from 3.5.7 branch.

Signed-off-by: Robin Gong <b38343@freescale.com>
Acked-by: Lily Zhang
11 years agoENGR00262435 MX6x-Drain L1/L2 buffers before DDR enters self-refresh.
Ranjani Vaidyanathan [Mon, 13 May 2013 19:27:46 +0000 (14:27 -0500)]
ENGR00262435 MX6x-Drain L1/L2 buffers before DDR enters self-refresh.

The DDR freq change code and the low power WFI code in
MX6SL runs from non-cacheable but bufferable IRAM space.
Its possible for an eviction to occur from the L1
and/or L2 sync buffers after the DDR has been put into
self-refresh. This will cause the system to hang. To
avoid this ensure that the L1/L2 sync buffers are drained
properly.

Following is the info from ARM on L2 store buffers:
**********************************************************
You can use L2 sync operation to drain L2store buffer manually,
and the store buffer would be drained in such conditions:

* store buffer slot is immediately drained if targeting
  device memory area
* store buffer slots are drained as soon as they are full
* store buffer is drained at each strongly  ordered read
  occurrence in slave ports
* store buffer is drained at each strongly ordered write
  occurrence in slave ports
* as soon as all three slots of the store buffer contain data,
  the least recently accessed slot starts draining
* if a hazard is detected in a store buffer slot , that slot
  is drained to resolve the hazard
* store buffer slots are drained when a lock ed transaction is
  received by one slave port
* store buffer slots are drained when a transaction targeting
  the configuration registers is received by one slave port
* store buffer slots are automatically drained after 256 cycles
  of presence in the store buffer.

You can refer to 2.5.3 Store buffer operation of PL310 trm(r3p3, DDI0246H)
for the detail.

You have to apply the explicit cache sync operation, which should be
followed by DSB, before entering the low power mode. And the bit0 of
the cache sync register(base offset 0x730) should be polling to guarantee
that the PL310 has finished sync operation.

PL310 owns three 256 bit entry store buffer & eviction buffer, and
four 256 bit LFB & LRB, and Cache sync would complete when all buffers,
LRB, LFB, STB, and EB, are empty.

The actual overhead should be close to your L3 access latency.
*************************************************************************
~
~

Signed-off-by: Ranjani Vaidyanathan <ra5478@freescale.com>
11 years agoENGR00262701 mxc v4l2 capture:Correct v4l2 internal master device name
Liu Ying [Wed, 15 May 2013 06:43:10 +0000 (14:43 +0800)]
ENGR00262701 mxc v4l2 capture:Correct v4l2 internal master device name

There could be two v4l2 internal master devices with the same name in
the system if the name is in 'mxc_v4l2_cap<csi>' fashion, since there
are two IPUs embedded in i.MX6Q and each IPU has two CSI ports. This
patch changes the name to be in 'mxc_v4l2_cap<pdev->id>' fashion to
fix the naming issue.

Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
11 years agoENGR00262270 IPUv3:Basic 16-bit generic data support for SMFC chan
Liu Ying [Mon, 13 May 2013 05:09:11 +0000 (13:09 +0800)]
ENGR00262270 IPUv3:Basic 16-bit generic data support for SMFC chan

This patch adds basic 16-bit generic data support for SMFC channel.
Although we didn't verify capturing frames with 16-bit generic
data, this could be a good starting point for developers to go on
with.

Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
11 years agoENGR00261749 IPU device: Fix potential uninitialized variable in split mode
Tristan Lelong [Thu, 7 Mar 2013 18:58:30 +0000 (10:58 -0800)]
ENGR00261749 IPU device: Fix potential uninitialized variable in split mode

Fix potential uninitialized variable in split mode

Signed-off-by: Tristan Lelong <b44337@freescale.com>
Signed-off-by: Wayne Zou <b36644@freescale.com>
11 years agoENGR00261928 IPU device: Check invalid parameters for frame width/height
Wayne Zou [Thu, 9 May 2013 04:40:43 +0000 (12:40 +0800)]
ENGR00261928 IPU device: Check invalid parameters for frame width/height

Check invalid parameters for frame width or frame height,
which might be equal to zero.

Signed-off-by: Wayne Zou <b36644@freescale.com>
11 years agoENGR00261451-5 usb: gadget: delete usb_debounce_id_vbus
Peter Chen [Tue, 7 May 2013 07:01:13 +0000 (15:01 +0800)]
ENGR00261451-5 usb: gadget: delete usb_debounce_id_vbus

Since we move the debounce time into get the PHY out
of low power mode function(f1ac6159, ENGR00261451-3:
mx6-msl: usb: add debounce time for otgsc value),
usb_debounce_id_vbus is useless now.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00261451-4 usb: host: Fix the bug that no id INT after system resume
Peter Chen [Tue, 7 May 2013 06:39:07 +0000 (14:39 +0800)]
ENGR00261451-4 usb: host: Fix the bug that no id INT after system resume

- Fix the bug that no id interrupt after system resume if we
plug ID cable during the system suspend periods.
- It needs to consider OTG and non-OTG condition when handling
system resume.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00261451-3 mx6-msl: usb: add debounce time for otgsc value
Peter Chen [Tue, 7 May 2013 06:36:06 +0000 (14:36 +0800)]
ENGR00261451-3 mx6-msl: usb: add debounce time for otgsc value

- For id/vbus value from otgsc, it needs 1ms debounce time
after the PHY enters stable.
- Delete the useless code.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00261451-2 mx6-msl: usb: using correct register
Peter Chen [Mon, 6 May 2013 23:59:09 +0000 (07:59 +0800)]
ENGR00261451-2 mx6-msl: usb: using correct register

- Replace portsc to otgsc
- Add define for otgsc

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00261451-1 usb: host: purify platform resume handler
Peter Chen [Mon, 6 May 2013 23:49:07 +0000 (07:49 +0800)]
ENGR00261451-1 usb: host: purify platform resume handler

- If the device is on the port during the system suspend,
and the USB as system wakeup source is not enabled. We
don't need to put the PHY into low power mode again after
platform resume, since usb bus layer will handle it. If
auto suspend is supported, the bus layer will put the PHY
into low power mode.
- Passed below two conditions for use cases, delete the useless
handling code.
1. Tested plug usb devices (high/full/low speed) during the system
suspend when usb wakeup is not enabled.
2. Tested unplug and replug usb devices (high/full/low speed) during
the system suspended when usb wakeup is not enabled.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00261860 IPUv3 dev:Correct uv offset for non-tiled formats
Liu Ying [Wed, 8 May 2013 08:16:48 +0000 (16:16 +0800)]
ENGR00261860 IPUv3 dev:Correct uv offset for non-tiled formats

This patch corrects the formulae to calculate uv offset for
several non-tiled planar yuv pixel formats:

1) NV12(partial interleaved):
A part of the formula does math in this way: (width * pos_y)/2.
This is wrong for odd crop pos_y. We should rigidly get half
of crop pos_y and then have the result multiply stride(in this
case, width) instead: width * (pos_y/2). The issue could be
reproduced by the following unit test case:
/unit_tests/mxc_v4l2_output.out -iw 1024 -ih 768
-cr 496, 377, 264, 195 -ow 1024 -oh 768  -fr 30
-f NV12 ./test_nv12_xga.yuv

2) YUV420/YVU420(non-interleaved):
Similar to NV12, the wrong part '(width/2 * pos_y/2)' should
be changed to '(width/2) * (pos_y/2)', otherwise, odd crop
pos_y would cause wrong uv offset. Moreover, although height
should be a muliply of 2 according to the IPUv3 spec, it still
probably can process frames with odd height, i.e, the last y
line might consume an additional line for u and v respectively.
So, this patch rounds up height to even value by '(height+1)',
which doesn't hurt in any way. The issue could be reproduced
by the following unit test case:
/unit_tests/mxc_v4l2_output.out -iw 1024 -ih 768
-cr 496, 378, 272, 195 -ow 1024 -oh 768  -fr 30
./test_yuv420_xga.yuv

3) YUV422/YVU422(non-interleaved):
Within the context, the width parameter in the function
update_offset() is equal to stride line. The function
ipu_init_channel_buffer() requires stride line to be 4-byte
aligned, so, for this part, code change only is done without
any logic modification to make the calculation be straightforward
to be understood.

Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
11 years agoENGR00261255 mxc vout:Replace classical timer with hrtimer
Liu Ying [Tue, 23 Apr 2013 06:36:11 +0000 (14:36 +0800)]
ENGR00261255 mxc vout:Replace classical timer with hrtimer

This patch replaces the old classical timer(low resolution timer)
with high resolution timer. This change improves the accuracy of
time point we put/activate buffers on display flow. For example,
we intend to show several frames in a framerate of 30fps(constant
interval bewteen 2 adjacent frames should be 33.33ms), the classical
timer would introduce a 10ms error in the interval which may
downgrade the video quality(jitter can be seen).

Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
11 years agoENGR00261533 MX6 HDMI add 59.94Hz support
Sandor [Tue, 7 May 2013 07:20:24 +0000 (15:20 +0800)]
ENGR00261533 MX6 HDMI add 59.94Hz support

In HDMI driver, such as 59.94/60 video mode use the same
parameter, but the 59.94 is filter by HDMI driver.
Change the video mode check, add 59.94 support.
In support modes list, the 59.94 show as 59.

Signed-off-by: Sandor <R01008@freescale.com>
11 years agoENGR00261398-02 MX6DL: Enable CEC function for SabreSD board
Sandor [Mon, 6 May 2013 05:46:55 +0000 (13:46 +0800)]
ENGR00261398-02 MX6DL: Enable CEC function for SabreSD board

Add HDMI CEC IOMUX setting for MX6DL SabreSD board.

Signed-off-by: Sandor <R01008@freescale.com>
11 years agoENGR00261398-01 MX6DL CEC PAD setting
Sandor [Mon, 6 May 2013 05:45:13 +0000 (13:45 +0800)]
ENGR00261398-01 MX6DL CEC PAD setting

Add HDMI CEC PAD setting for MX6DL.

Signed-off-by: Sandor <R01008@freescale.com>
11 years agoENGR00261037-2: usb: fix the bug that mark lowpower flag wrongly
Peter Chen [Thu, 2 May 2013 01:28:10 +0000 (09:28 +0800)]
ENGR00261037-2: usb: fix the bug that mark lowpower flag wrongly

At default, we mark lowpower as true. After PHY initialization
finishes, it should mark lowpower as false.

Besides, at error patch, we need to mark lowpower as true.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00261037-1: usb: usb host works abnormal after unload gadget module
Peter Chen [Thu, 2 May 2013 01:04:18 +0000 (09:04 +0800)]
ENGR00261037-1: usb: usb host works abnormal after unload gadget module

If there is usb device on the OTG port when controller works
at host mode, and at this time, we unload gadget module, the
usbcmd.rs will be cleared, it is unexpected behavior.

When the controller works at one mode(eg, host mode), the register
should not be written by other mode driver (eg, devcie driver).
The OTG driver does not consider this situation, and current i.mx
FSL OTG driver does not support fully OTG function, so we remove
the caller at fsl_otg_set_peripheral which will touch controller
register.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00259949 mxc vout:fix screen tearing issue in ic bypass case
Liu Ying [Tue, 23 Apr 2013 04:24:17 +0000 (12:24 +0800)]
ENGR00259949 mxc vout:fix screen tearing issue in ic bypass case

In ic bypass case, we put video buffers at a framebuffer display
channel directly. The display channel works at triple buffer
mode. To make sure a video buffer(buf N) has been shown on display
device, we at least need to wait for the second video buffer(buf N+2)
after the current buffer(buf N) is put on the display channel. Then,
the current buffer(buf N) can be added to the dequeue list, otherwise,
the user may get the buffer too early so that the buffer being shown
can be overwritten - screen tearing issue happens.

Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
11 years agoENGR00260754 mxc: asrc: fix memory leak
Nicolin Chen [Sun, 28 Apr 2013 09:42:48 +0000 (17:42 +0800)]
ENGR00260754 mxc: asrc: fix memory leak

ASRC allocated memory for output buffer but didn't correctly free it.
This patch removed the input-buffer's incorrect double-free code,
and freed the output-buffer instead.

Signed-off-by: Nicolin Chen <b42378@freescale.com>
11 years agoENGR00260231 mxc vout:fill black correctly for more planar formats
Liu Ying [Wed, 24 Apr 2013 06:55:46 +0000 (14:55 +0800)]
ENGR00260231 mxc vout:fill black correctly for more planar formats

In ic bypass mode, the display framebuffer pixel format will be
changed to the pixel format of the buffer queued by user. It could
be all the planar pixel formats. We will fall back to the wrong
black filling logic for UYVY and RGB pixel formats if the planar
pixel format is not NV12. This patch corrects the black filling
logic for the following planar pixel formats:
IPU_PIX_FMT_YUV420P2
IPU_PIX_FMT_YUV420P
IPU_PIX_FMT_YVU420P
IPU_PIX_FMT_YUV422P
IPU_PIX_FMT_YVU422P
IPU_PIX_FMT_YUV444P

Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
11 years agoENGR00259754 V4L2 output: Fix HDMI display green bar after video playback
Wayne Zou [Wed, 24 Apr 2013 01:06:36 +0000 (09:06 +0800)]
ENGR00259754 V4L2 output: Fix HDMI display green bar after video playback

After doing video playback with Bypass IC mode on HDMI display, there is
a green bar at the bottom of the display, it is caused by resetting
miscalculated display buffer size.

Signed-off-by: Wayne Zou <b36644@freescale.com>
11 years agoENGR00260082 mx6sl_evk: Change wm8962's MCLK to 24MHz
Nicolin Chen [Tue, 23 Apr 2013 12:06:29 +0000 (20:06 +0800)]
ENGR00260082 mx6sl_evk: Change wm8962's MCLK to 24MHz

The clock, output from wm8962's FLL, is sometimes inaccurate.
This's because 26MHz is not quite stable for wm8962's internal FLL,
So change to 24MHz, the value recommended by Wolfson,
which has been used on SabreSD for quite a long time.

Acked-by: Wang Shengjiu <b02247@freescale.com>
Signed-off-by: Nicolin Chen <b42378@freescale.com>
11 years agoENGR00258491-4 msl-mx6: usb: fix clock unmatch problem after unload module
Peter Chen [Tue, 16 Apr 2013 06:37:41 +0000 (14:37 +0800)]
ENGR00258491-4 msl-mx6: usb: fix clock unmatch problem after unload module

Move clock disable from MSL to driver

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00258491-3 usb: fix clock unmatch problem after unload module
Peter Chen [Tue, 16 Apr 2013 06:36:12 +0000 (14:36 +0800)]
ENGR00258491-3 usb: fix clock unmatch problem after unload module

Move clock disable from MSL to driver

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00258491-2 msl-mx6: usb: put PHY to be out of low power explicitly
Peter Chen [Tue, 16 Apr 2013 01:47:15 +0000 (09:47 +0800)]
ENGR00258491-2 msl-mx6: usb: put PHY to be out of low power explicitly

We have wrong understanding that reset controller will put PHY
to be out of low power automatically, but in fact, it is not.
So, we should put PHY to be out of low power explicitly if the
portsc.phcd = 1 before we need to access controller's register.
Some register writing will hang system (eg,PERIODICLISTBASE),
some reading will not get the correct value (eg, otgsc).

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00258491-1 usb: host: fix error at unload module path
Peter Chen [Fri, 12 Apr 2013 08:04:37 +0000 (16:04 +0800)]
ENGR00258491-1 usb: host: fix error at unload module path

- When take the PHY out of low power mode, it needs to
call PHY's API, only set controller register is
not enough for some platforms
- usb_put_hcd will free hcd, all hcd related operation should
be prior to it.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00259693 MX6DL/S-Enable routing of ENET interrupt to GPIO
Ranjani Vaidyanathan [Fri, 19 Apr 2013 16:39:48 +0000 (11:39 -0500)]
ENGR00259693 MX6DL/S-Enable routing of ENET interrupt to GPIO

In order to fix the performance issue on ENET when WAIT mode
is activated, route the ENET interrupts to a GPIO on all MX6DL boards.

This patch must be applied on top of:
MX6Q/DL-Fix Ethernet performance issue when WAIT mode is active
808863866d2c17aeb3e70a7fcd094bd96db4b601
bae4d40849f3acdd9663f5a0857c9415ed7e6d5d

Signed-off-by: Ranjani Vaidyanathan <ra5478@freescale.com>
11 years agoENGR00259593 IPU/V4L2 output: Fix video ouput to video16 can not work
Wayne Zou [Fri, 19 Apr 2013 08:33:24 +0000 (16:33 +0800)]
ENGR00259593 IPU/V4L2 output: Fix video ouput to video16 can not work

Revert"ENGR00254931 IPUv3 Fb: Fix display twinkling issue during suspend/resume"

This reverts commit 4bd475ba0603e10cdcab7e55f89599f7016cad25.

That patch will lead to kernel crash when doing video playback on video16 with
overlay on. The reason is that fb driver doesn't reallocate larger DMA buffer
requested by V4L2 driver, while IPU hardware write to large DMA address.
Other solution is needed for the original issue.

kernel BUG at arch/arm/mm/dma-mapping.c:478!
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = 80004000
[00000000] *pgd=00000000
Internal error: Oops: 817 [#1] PREEMPT SMP
Modules linked in: mxc_v4l2_capture ipu_csi_enc ipu_prp_enc ipu_fg_overlay_sdc
ipu_bg_overlay_sdc ipu_still ov5640_camera_mipi ov5640_camera
CPU: 0    Not tainted  (3.0.35-2506-g556681e #1)
PC is at __bug+0x1c/0x28
LR is at __bug+0x18/0x28
pc : [<800442ac>]    lr : [<800442a8>]    psr: 20000113
sp : 80a8fe88  ip : c09b2000  fp : 80aa3a70
r10: 80a90080  r9 : 00000040  r8 : bffecec4
r7 : 00000001  r6 : 00000002  r5 : 00000800  r4 : ce5c5e65
r3 : 00000000  r2 : 00000104  r1 : 0bfcf000  r0 : 00000033
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c53c7d  Table: 4a97404a  DAC: 00000015
Process swapper (pid: 0, stack limit = 0x80a8e2f0)
Stack: (0x80a8fe88 to 0x80a90000)
fe80:                   80afde30 8004a464 00000880 ffdfd6b0 bffec000 802fa678
fea0: bffec000 00000060 5e5c5e65 ce5c5e65 bffec250 80ad4c88 bffece4c 00000001
fec0: bffecec4 00000040 0000012c 8c009480 8c009488 80a90080 ffff9527 80423f58
fee0: 00000001 80a8e000 00000096 00000001 80a9004c 80a8e000 00000103 80af77e0
ff00: 00000000 80a90040 00000003 8007a034 00000096 00000000 80a8e000 0000000a
ff20: 80a94c4c 80a8e000 80039c00 80a8e000 00000096 00000000 80a8e000 00000000
ff40: 00000000 8007a570 80aa3cc0 80041874 ffffffff f2a00100 00000096 00000002
ff60: 00000001 80040a0c 80af9140 80000093 00000001 00000000 80a8e000 80af1ce4
ff80: 80511044 80aa6e7c 1000406a 412fc09a 00000000 00000000 00000000 80a8ffb0
ffa0: 8004f648 80041b04 40000013 ffffffff 80041ae0 80041d08 00000001 80aa3b3c
ffc0: 80af1c40 8002f538 8c005160 80008868 800082f8 00000000 00000000 8002f538
ffe0: 00000000 10c53c7d 80aa3a6c 8002f534 80aa6e74 10008040 00000000 00000000
[<800442ac>] (__bug+0x1c/0x28) from [<8004a464>]
(___dma_single_dev_to_cpu+0x84/0x94)
[<8004a464>] (___dma_single_dev_to_cpu+0x84/0x94) from [<802fa678>]
(fec_rx_poll+0x228/0x2c8)
[<802fa678>] (fec_rx_poll+0x228/0x2c8) from [<80423f58>]
(net_rx_action+0xb0/0x17c)
[<80423f58>] (net_rx_action+0xb0/0x17c) from [<8007a034>]
(__do_softirq+0xac/0x140)
[<8007a034>] (__do_softirq+0xac/0x140) from [<8007a570>] (irq_exit+0x94/0x9c)
[<8007a570>] (irq_exit+0x94/0x9c) from [<80041874>] (handle_IRQ+0x50/0xac)
[<80041874>] (handle_IRQ+0x50/0xac) from [<80040a0c>] (__irq_svc+0x4c/0xe8)
[<80040a0c>] (__irq_svc+0x4c/0xe8) from [<80041b04>] (default_idle+0x24/0x28)
[<80041d08>] (cpu_idle+0xc8/0x108) from [<80008868>] (start_kernel+0x248/0x288)
[<80008868>] (start_kernel+0x248/0x288) from [<10008040>] (0x10008040)

Signed-off-by: Wayne Zou <b36644@freescale.com>
11 years agoENGR00259341 mx6: Need to keep WAIT mode fix bit set before standby
Anson Huang [Thu, 18 Apr 2013 02:04:56 +0000 (10:04 +0800)]
ENGR00259341 mx6: Need to keep WAIT mode fix bit set before standby

According to hardware design requirement, the WAIT mode setting bit17
need to be set if system enter suspend without ARM power gated, so in
standby mode, we can NOT clear this bit.

Signed-off-by: Anson Huang <b20788@freescale.com>
11 years agoENGR00259411 remove __GFP_NOWARN in gpu memory allocator
Xianzhong [Thu, 18 Apr 2013 15:22:06 +0000 (23:22 +0800)]
ENGR00259411 remove __GFP_NOWARN in gpu memory allocator

More information can be dumped when lower-mem killer is triggered

Signed-off-by: Xianzhong <b07117@freescale.com>
Acked-by: Lily Zhang
11 years agoENGR00259189 thermal:mx6: Make sure thermal alarm working safely
Anson Huang [Wed, 17 Apr 2013 08:10:59 +0000 (16:10 +0800)]
ENGR00259189 thermal:mx6: Make sure thermal alarm working safely

The thermal sensor's value will be updated even it is power down,
as thermal sensor's clock source is from PLL3, so there is chance
that PLL3 is disabled before thermal driver is probed during kernel
boot up, so the value in thermal sensor can be incorrect in this
PLL3 disabled window.

Previous flow of thermal driver probe routine will enable PLL3
clock, then set the thermal alarm value and enable the alarm irq,
there is no delay or check about the thermal sensor's value, only
when the thermal sensor's value is correct, its alarm function
can be enabled. As adding delay in the probe routine is not a
good option, so we move the enabling of thermal alarm function
into the get temperature routine, as after the thermal value is
read, the alarm function is safe enough, as the thermal sensor
will be always working right after a read if its clock is enabled.

Signed-off-by: Anson Huang <b20788@freescale.com>
11 years agoENGR00239959 V4L2 output: Fix video playback bug if pulling window out of screen
Wayne Zou [Fri, 1 Mar 2013 08:05:47 +0000 (16:05 +0800)]
ENGR00239959 V4L2 output: Fix video playback bug if pulling window out of screen

Add strict input parameters check for v4l2 output drivers. The part of window
inside the display boundary is shown if pulling window out of screen.

About this issue: video playback error if pulling window out of screen
Using totem to play a video and using the mouse to pull the video window
out of the screen, it will print the follow errors:
imx-ipuv3 imx-ipuv3.0: ERR:[0xbad85200]-no:0x15c0 "wait_for_comp_timeo
ut" ret:0,line:2768
imx-ipuv3 imx-ipuv3.0: ERR: [0xbad85200] no-0x15c0, timeout:1000ms!
imx-ipuv3 imx-ipuv3.0: ERR: no-0x15c0,ipu_queue_task err:-110
mxc_v4l2_output mxc_v4l2_output.0: display work fail ret = -110
imx-ipuv3 imx-ipuv3.0: warning: disable ipu dma channel 21 during its busy state

Signed-off-by: Wayne Zou <b36644@freescale.com>
11 years agoENGR00259008: mlb: reduce iram usage amount in async mode
Terry Lv [Tue, 16 Apr 2013 11:05:54 +0000 (19:05 +0800)]
ENGR00259008: mlb: reduce iram usage amount in async mode

In testing async mode on mx6q ard and mx6dl ard, driver always said "can
not alloc rx buffer".
Change async's ring buffer size from 2048 to 1536(MEP package size) and
reduce the extra ring buffer for drop package, now the iram usage amount
in async mode reduced from 34816 to 24576.

Signed-off-by: Terry Lv <r65388@freescale.com>
11 years agoENGR00258651 thermal: update equation for i.MX6sl
Anson Huang [Mon, 15 Apr 2013 00:48:20 +0000 (08:48 +0800)]
ENGR00258651 thermal: update equation for i.MX6sl

New thermal equation is working for all i.MX6 series
SOCs, so update it for i.MX6SL as well.

Signed-off-by: Anson Huang <b20788@freescale.com>
11 years agoENGR00258885 flexcan: fix errata ERR005641 that MB may fail to be sent
Dong Aisheng [Fri, 12 Apr 2013 10:49:36 +0000 (18:49 +0800)]
ENGR00258885 flexcan: fix errata ERR005641 that MB may fail to be sent

This is an issue from IC errata ERR005641 which is described as follows:
----------------------------------------------------------
FlexCAN does not transmit a message that is enabled to be transmitted
in a specific moment during the arbitration process. The following
conditions are necessary to have the issue.
- Only one MB is configured to be transmitted
- The write which enables the MB to be transmitted (write on Control status
  word) happens during a specific clock during the arbitration process.

After this arbitration process occurs, the bus goes to Idle state and no
new message is received on bus.

For example:
1) MB13 is deactivated on RxIntermission (write 0x0 on CODE field from Control
Status word) - First write on CODE
2) Reconfigure the ID and data fields
3) Enable the MB13 to be transmitted on BusIdle (write 0xC on Code
field) - Second write on code
4) CAN bus keeps in Idle state
5) No write on Control status from any MB happens.
During the second write on code (step 3), the write must happen one clock
before the current MB13 is to be scanned by arbitration process.
In this case, it does not detect the new code (0xC) and no new arbitration is
scheduled.

The suggested workaround which is implemented in this patch is:
The workaround consists of executing two extra steps:
6. Reserve the first valid mailbox as an inactive mailbox (CODE=0b1000).
If RX FIFO is disabled, this mailbox must be MB0. Otherwise, the first
valid mailbox can be found by using table "RX FIFO filters" on FlexCAN3 chapter.
7. Write twice INACTIVE code (0b1000) into the first valid mailbox.
Note: The first mailbox cannot be used for reception or transmission process.
-------------------------------------------------------------

Note: Although the currently flexcan driver does not have the step 1 to run,
it's also possible to meet this issue in theory because we can not predict
when the arbitration is scheduled.

With a modified can-utils/canfdttest tool simulating Pingpong test, we were
able to reproduce this issue after running a about one day.
After applying this patch, we ran six days and did not see the issue happen
again on two mx6q sabrelite boards.

Signed-off-by: Dong Aisheng <b29396@freescale.com>
11 years agocan: flexcan: Fix CAN_RAW_RECV_OWN_MSGS and CAN_RAW_LOOPBACK
Reuben Dowle [Mon, 31 Oct 2011 22:18:03 +0000 (11:18 +1300)]
can: flexcan: Fix CAN_RAW_RECV_OWN_MSGS and CAN_RAW_LOOPBACK

Currently the flexcan driver uses hardware local echo. This blindly
echos all transmitted frames to all receiving sockets, regardless what
CAN_RAW_RECV_OWN_MSGS and CAN_RAW_LOOPBACK are set to.

This patch now submits transmitted frames to be echoed in the transmit
complete interrupt, preserving the reference to the sending
socket. This allows the can protocol to correctly handle the local
echo.

Further this patch moves tx_bytes statistic accounting into the tx_complete
handler.

Signed-off-by: Reuben Dowle <reuben.dowle@navico.com>
[mkl: move tx_bytes accounting into tx_complete handler; cleanups]
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
11 years agocan: dev: let can_get_echo_skb() return dlc of CAN frame
Marc Kleine-Budde [Mon, 10 Oct 2011 21:43:53 +0000 (23:43 +0200)]
can: dev: let can_get_echo_skb() return dlc of CAN frame

can_get_echo_skb() is usually called in the TX complete handler.
The stats->tx_packets and stats->tx_bytes should be updated there, too.
This patch simplifies to figure out the size of the sent CAN frame.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
11 years agoENGR00257847-2 MX6Q/DL-Fix Ethernet performance issue when WAIT mode is active
Ranjani Vaidyanathan [Mon, 1 Apr 2013 21:03:31 +0000 (16:03 -0500)]
ENGR00257847-2 MX6Q/DL-Fix Ethernet performance issue when WAIT mode is active

All of the interrupts from the ENET block are not routed to
the GPC block. Hence ENET interrupts are not able to wake
up the SOC when the system is in WAIT mode. And the ENET
interrupt gets serviced only when another interrupt causes
the SOC to exit WAIT mode. This impacts the ENET performance.

To fix the issue two options:
1. Route the ENET interrupt to a GPIO. Need to enable the
CONFIG_MX6_ENET_IRQ_TO_GPIO in the config.
2. If the GPIO mechanism cannot be used and is not enabled
by the above mentioned config, the patch will disable entry
to WAIT mode until ENET clock is active. When the ENET clock
is disabled, WAIT mode will be automatically enetered.

Signed-off-by: Ranjani Vaidyanathan <ra5478@freescale.com>
11 years agoENGR00257847-1 MX6Q/DL-Fix Ethernet performance issue when WAIT mode is active
Ranjani Vaidyanathan [Mon, 1 Apr 2013 21:02:35 +0000 (16:02 -0500)]
ENGR00257847-1 MX6Q/DL-Fix Ethernet performance issue when WAIT mode is active

All of the interrupts from the ENET block are not routed to
the GPC block. Hence ENET interrupts are not able to wake
up the SOC when the system is in WAIT mode. And the ENET
interrupt gets serviced only when another interrupt causes
the SOC to exit WAIT mode. This impacts the ENET performance.

To fix the issue two options:
1. Route the ENET interrupt to a GPIO. Need to enable the
CONFIG_MX6_ENET_IRQ_TO_GPIO in the config.
This patch provides support for routing the ENET interrupt
to GPIO_1_6. Routing to this GPIO requires no HW board mods.
If the GPIO_1_6 is being used for some other peripheral,
this patch can be followed to route the ENET interrupt to
any other GPIO though a HW mode maybe required.
2. If the GPIO mechanism cannot be used and is not enabled
by the above mentioned config, the patch will disable entry
to WAIT mode until ENET clock is active. When the ENET clock
is disabled, WAIT mode will be automatically enetered.

Signed-off-by: Ranjani Vaidyanathan <ra5478@freescale.com>
11 years agoENGR00258733 WEIM-NOR: mtd: cfi_cmdset_0002: Do not release the mutex lock
Huang Shijie [Fri, 12 Apr 2013 07:33:11 +0000 (15:33 +0800)]
ENGR00258733 WEIM-NOR: mtd: cfi_cmdset_0002: Do not release the mutex lock

The NOR may suffers a write-buffer timeout during the bonnie++/ubifs stress
test. This patch is just a workaround to fix this issue.

With this patch, the read/write/erase will do in the synchronous way.

Signed-off-by: Huang Shijie <b32955@freescale.com>
11 years agoENGR00258357-5: mlb: Use circle buf macros to replace old ringbuf mechanism
Terry Lv [Fri, 12 Apr 2013 07:44:46 +0000 (15:44 +0800)]
ENGR00258357-5: mlb: Use circle buf macros to replace old ringbuf mechanism

Use circle buf to replace old ringbuf mechanism.
Change to use circle buffer in read, write, rx isr and tx isr functions.
In first design of MLB, it's using it's own mechanism to manage ring
buffer, like in mxc_mlb.c.
And then, I saw that kernel already had a serials of circ buffer macros
which can be used to manage ring buffers.
This patch is to use circle buffer macros to manage mlb internal ring
buffers.
For detail of circle buffers, you can refer to
linux-2.6-imx/Documentation/circular-buffers.txt.

Signed-off-by: Terry Lv <r65388@freescale.com>
11 years agoENGR00258357-4: mlb: Group static variables to structure mlb_data
Terry Lv [Fri, 12 Apr 2013 07:33:56 +0000 (15:33 +0800)]
ENGR00258357-4: mlb: Group static variables to structure mlb_data

Group static variables to structure mlb_data.
Use mlb_data as platform data to be passed to file operation
functions.
Change accordingly functions for this change.

Signed-off-by: Terry Lv <r65388@freescale.com>
11 years agoENGR00258357-3: mlb: Reset whole CDR in init function
Terry Lv [Fri, 12 Apr 2013 07:18:50 +0000 (15:18 +0800)]
ENGR00258357-3: mlb: Reset whole CDR in init function

Reset whole CDR in init function. This will make mlb connection to MITB
more stable.
This is a missed part in mx6 rm's mlb section, but new in mlb's latest
spec DS62420AP2.pdf 12.1.1-1.
Without this patch, mlb may receive irq from MITB during initialization.
It might cause some connection issue that mlb can't receive data
sometimes. It was treat to be MITB's fault before we get the latest
spec.

Signed-off-by: Terry Lv <r65388@freescale.com>
11 years agoENGR00258357-2: mlb: Add more debug msgs in DEBUG mode
Terry Lv [Fri, 12 Apr 2013 04:16:10 +0000 (12:16 +0800)]
ENGR00258357-2: mlb: Add more debug msgs in DEBUG mode

Changes are:
1. Use print_hex_dump to print buffer in DEBUG mode.
2. Add more debug msgs.

Signed-off-by: Terry Lv <r65388@freescale.com>
11 years agoENGR00258357-1: mlb: Remove MLB150_ from macro define names
Terry Lv [Fri, 12 Apr 2013 04:08:07 +0000 (12:08 +0800)]
ENGR00258357-1: mlb: Remove MLB150_ from macro define names

Remove MLB150_ from macro define names to make code clean.

Signed-off-by: Terry Lv <r65388@freescale.com>
11 years agoENGR00256417: MLB: can't receive data in wait mode
Terry Lv [Thu, 11 Apr 2013 09:05:00 +0000 (17:05 +0800)]
ENGR00256417: MLB: can't receive data in wait mode

For MLB uses iram for data transfer, and there's a missing of dependency
on iram in MLB's clock setting, MLB can't receive data in wait mode.
We need to add ocram clock dependency in MLB clock.

Signed-off-by: Terry Lv <r65388@freescale.com>
11 years agoENGR00257130-7 usb: host: Disable wakeup when switch PHY from off to on
Peter Chen [Wed, 10 Apr 2013 07:18:39 +0000 (15:18 +0800)]
ENGR00257130-7 usb: host: Disable wakeup when switch PHY from off to on

Disable wakeup interrupt, since there is wakeup
when phcd from 1->0 if wakeup interrupt is enabled.
The unexpected wakeup can be disappeared using this fix.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00257130-6 mx6-msl: usb: Add 500us delay for phy stable time
Peter Chen [Tue, 9 Apr 2013 08:18:51 +0000 (16:18 +0800)]
ENGR00257130-6 mx6-msl: usb: Add 500us delay for phy stable time

The PHY needs 500us time to be stable when its clock
from off to on. If there is wakeup enable before the
PHY is stable, there will be an unexpected wakeup.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00257130-5 mx6sl: Add config for USB ID as system wakeup source
Peter Chen [Mon, 8 Apr 2013 08:02:14 +0000 (16:02 +0800)]
ENGR00257130-5 mx6sl: Add config for USB ID as system wakeup source

Since USB ID pin may affect power savings, we add enable/disable
USB ID pin as system wakeup source using Kconfig option, the user
can determine it.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00257130-4 mx6sl: different layout for stop_mode_config
Peter Chen [Mon, 8 Apr 2013 06:56:49 +0000 (14:56 +0800)]
ENGR00257130-4 mx6sl: different layout for stop_mode_config

The mx6sl has different register layout for STOP_MODE_CONFIG
bit at CCM_ANALOG_MISC0.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00257130-3 usb: host: open the PHY when changing wakeup setting
Peter Chen [Wed, 3 Apr 2013 08:36:45 +0000 (16:36 +0800)]
ENGR00257130-3 usb: host: open the PHY when changing wakeup setting

- Disable irq when we change wakeup setting as there is unexpected
interrupt when we power PHY but enables wakeup.
- Power PHY when we need to change wakeup setting, as some wakeup
settings at PHY domain.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00257130-2 msl: usb: Disable auto power PHY if usb wakeup disabled
Peter Chen [Wed, 3 Apr 2013 08:28:01 +0000 (16:28 +0800)]
ENGR00257130-2 msl: usb: Disable auto power PHY if usb wakeup disabled

- We need to disable auto power PHY if there is a wakeup at USB port,
but usb as wakeup source is disabled, otherwise, there will be unexpected
interrupt when the software thinks the controller is still at low power
mode.
- Rework usbh1_wakeup_event_clear. The old design was incorrect, align
it with usb_dr.c.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agoENGR00257130-1 mx6sl_evk: Add Host 1 vbus callback
Peter Chen [Wed, 3 Apr 2013 08:25:39 +0000 (16:25 +0800)]
ENGR00257130-1 mx6sl_evk: Add Host 1 vbus callback

- Make vbus is off default, and let the driver opens it.
- Add host 1 vbus callback, in that case, the driver can control it.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
11 years agomtd: fix recovery after failed write-buffer operation in cfi_cmdset_0002.c
Harald Nordgard-Hansen [Fri, 23 Nov 2012 22:11:03 +0000 (23:11 +0100)]
mtd: fix recovery after failed write-buffer operation in cfi_cmdset_0002.c

When working on a problem with some flash chips that lock up during
write-buffer operations, I think there may be a bug in the linux
handling of chips using cfi_cmdset_0002.c.

The datasheets I have found for a number of these chips all specify that
when aborting a write-buffer command, it is not enough to use the
standard reset.  Rather a "write-to-buffer-reset command" is needed.
This command is quite similar for all chips, the main variance seem to
be if the final 0xF0 can go to any address or must go to addr_unlock1.

The bug is then in the recovery handling when timing out at the end of
do_write_buffer, where using the normal reset command is not sufficient.

Without this change, if the write-buffer command fails then any
following operations on the flash also fail.

Signed-off-by: Harald Nordgard-Hansen <hhansen@pvv.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: Huang Shijie <b32955@freescale.com>
11 years agomtd: cfi_cmdset_0002: Micron M29EW bugfixes as per TN-13-07
Gerlando Falauto [Tue, 3 Jul 2012 07:09:47 +0000 (09:09 +0200)]
mtd: cfi_cmdset_0002: Micron M29EW bugfixes as per TN-13-07

Fix the following issues with Micron's (formerly Numonyx)
M29EW NOR flash chips, as documented on TN-13-07:
- Correcting Erase Suspend Hang Ups (page 20)
- Resolving the Delay After Resume Issue (page 22)

Signed-off-by: Gerlando Falauto <gerlando.falauto@keymile.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Huang Shijie <b32955@freescale.com>
11 years agomtd: cfi_cmdset_0002: Slight cleanup of fixup messages
David Woodhouse [Mon, 14 May 2012 04:34:24 +0000 (23:34 -0500)]
mtd: cfi_cmdset_0002: Slight cleanup of fixup messages

These should be semicolons, not commas.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Huang Shijie <b32955@freescale.com>
11 years agomtd: add fixup for S29NS512P NOR flash.
Javier Martin [Fri, 11 May 2012 10:15:41 +0000 (12:15 +0200)]
mtd: add fixup for S29NS512P NOR flash.

Spansion S29NS512P flash uses a 16bit transfer to report number
of sectors instead of two 8bit accesses as CFI specifies.

Artem: remove warning message which said that we are applying the
fixup - no need to scary the user unnecessarily.

Signed-off-by: Javier Martin <javier.martin@vista-silicon.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Huang Shijie <b32955@freescale.com>
11 years agomtd: chips: cfi_cmdset_0002: Match ENABLE_VPP()/DISABLE_VPP() calls
Paul Parsons [Wed, 7 Mar 2012 14:11:16 +0000 (14:11 +0000)]
mtd: chips: cfi_cmdset_0002: Match ENABLE_VPP()/DISABLE_VPP() calls

This patch is part of a set which fixes unnecessary flash erase and write errors
resulting from the MTD CFI driver turning off vpp while an erase is in progress.
This patch ensures that only those flash operations which call ENABLE_VPP() can
then call DISABLE_VPP(). Other operations should never call DISABLE_VPP().

Signed-off-by: Paul Parsons <lost.distance@yahoo.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Huang Shijie <b32955@freescale.com>
11 years agomtd: cfi: AMD/Fujitsu compatibles: add panic write support
Ira W. Snyder [Fri, 6 Jan 2012 19:29:19 +0000 (11:29 -0800)]
mtd: cfi: AMD/Fujitsu compatibles: add panic write support

This allows the mtdoops driver to work on flash chips using the
AMD/Fujitsu compatible command set.

As the code comments note, the locks used throughout the normal code
paths in the driver are ignored, so that the chance of writing out the
kernel's last messages are maximized.

Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Huang Shijie <b32955@freescale.com>
11 years agomtd: cleanup style on pr_debug messages
Brian Norris [Tue, 19 Jul 2011 17:06:10 +0000 (10:06 -0700)]
mtd: cleanup style on pr_debug messages

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
Signed-off-by: Huang Shijie <b32955@freescale.com>
11 years agomtd: replace DEBUG() with pr_debug()
Brian Norris [Tue, 19 Jul 2011 17:06:09 +0000 (10:06 -0700)]
mtd: replace DEBUG() with pr_debug()

Start moving away from the MTD_DEBUG_LEVEL messages. The dynamic
debugging feature is a generic kernel feature that provides more
flexibility.

(See Documentation/dynamic-debug-howto.txt)

Also fix some punctuation, indentation, and capitalization that went
along with the affected lines.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
Signed-off-by: Huang Shijie <b32955@freescale.com>
11 years agoENGR00257755-4 ASoC: WM8962: Disable FLL when chip's not being used
Nicolin Chen [Mon, 8 Apr 2013 13:12:07 +0000 (21:12 +0800)]
ENGR00257755-4 ASoC: WM8962: Disable FLL when chip's not being used

There might be a case that SYSCLK_SRC is not FLL, but FLL's still open.
If so, next time we use FLL as SYSCLK_SRC, it won't work normally.

This patch disabled FLL if FLL's enabled no matter what SYSCLK_SRC is.

Acked-by: Wang Shengjiu <b02247@freescale.com>
Signed-off-by: Nicolin Chen <b42378@freescale.com>
11 years agoENGR00257755-3 Revert "ENGR00256933 ASoC: WM8962: Add delay after FLL-enable"
Nicolin Chen [Tue, 9 Apr 2013 01:12:31 +0000 (09:12 +0800)]
ENGR00257755-3 Revert "ENGR00256933 ASoC: WM8962: Add delay after FLL-enable"

This reverts commit 0ed997878dd59c1dac6bf8f9eda412790bdd1df6.

We already reverted FLL-enable code in set_fll(), so we don't need delay any
more.

Acked-by: Wang Shengjiu <b02247@freescale.com>
Signed-off-by: Nicolin Chen <b42378@freescale.com>
11 years agoENGR00257755-2 Revert "ENGR00256310 ASoC: imx-wm8962: Fix playback abnormally"
Nicolin Chen [Mon, 8 Apr 2013 11:58:26 +0000 (19:58 +0800)]
ENGR00257755-2 Revert "ENGR00256310 ASoC: imx-wm8962: Fix playback abnormally"

This reverts commit 85c5c1eb91a25787f8cdefdb40bcd4735d37270e.

With this patch, WM8962 couldn't work normally after SabreSD power-on.
So revert it and find a better solution.

Acked-by: Wang Shengjiu <b02247@freescale.com>
Signed-off-by: Nicolin Chen <b42378@freescale.com>
11 years agoENGR00257755-1 Revert "ASoC: wm8962: Don't automatically enable and disable"
Nicolin Chen [Mon, 8 Apr 2013 11:38:34 +0000 (19:38 +0800)]
ENGR00257755-1 Revert "ASoC: wm8962: Don't automatically enable and disable"

This reverts commit 1fe3d0961814ad1fb1c1d691bfb85fc664caab05.

With this patch, WM8962 couldn't work normally after SabreSD power-on.
So revert it and find a better solution.

Acked-by: Wang Shengjiu <b02247@freescale.com>
Signed-off-by: Nicolin Chen <b42378@freescale.com>
11 years agoENGR00257947 mtd: use memcpy to replace the memcpy_fromio
Huang Shijie [Mon, 8 Apr 2013 08:56:46 +0000 (16:56 +0800)]
ENGR00257947 mtd: use memcpy to replace the memcpy_fromio

During the read of NOR, the kernel actually calls the inline_map_copy_from()
to read the data out. And inline_map_copy_from() will use the memcpy_fromio()
to do the real job.

The memcpy_fromio macro maps _memcpy_fromio() in the current code.
But the _memcpy_fromio() will use readb() to do the copy work one byte
by one byte. This makes the read performance of NOR very slow(about 2~3MB/s).

A similiar discussion could be found in:
http://lists.infradead.org/pipermail/linux-arm-kernel/2009-November/003860.html

This patch replace the memcpy_fromio with memcpy which is optimized by the
kernel.

The following is the result from mtd_speedtest with M29W256GL7AN6E:
=================================================
mtd_speedtest: MTD device: 2
mtd_speedtest: not NAND flash, assume page size is 512 bytes.
mtd_speedtest: MTD device size 4194304, eraseblock size 131072, page size 512,
count of eraseblocks 32, pages per eraseblock 256, OOB size 0
mtd_speedtest: testing eraseblock write speed
mtd_speedtest: eraseblock write speed is 845 KiB/s
mtd_speedtest: testing eraseblock read speed
mtd_speedtest: eraseblock read speed is 19504 KiB/s
mtd_speedtest: testing page write speed
mtd_speedtest: page write speed is 845 KiB/s
mtd_speedtest: testing page read speed
mtd_speedtest: page read speed is 19140 KiB/s
mtd_speedtest: testing 2 page write speed
mtd_speedtest: 2 page write speed is 846 KiB/s
mtd_speedtest: testing 2 page read speed
mtd_speedtest: 2 page read speed is 19320 KiB/s
mtd_speedtest: Testing erase speed
mtd_speedtest: erase speed is 233 KiB/s
mtd_speedtest: Testing 2x multi-block erase speed
mtd_speedtest: 2x multi-block erase speed is 225 KiB/s
mtd_speedtest: Testing 4x multi-block erase speed
mtd_speedtest: 4x multi-block erase speed is 224 KiB/s
mtd_speedtest: Testing 8x multi-block erase speed
mtd_speedtest: 8x multi-block erase speed is 225 KiB/s
mtd_speedtest: Testing 16x multi-block erase speed
mtd_speedtest: 16x multi-block erase speed is 225 KiB/s
mtd_speedtest: Testing 32x multi-block erase speed
mtd_speedtest: 32x multi-block erase speed is 225 KiB/s
mtd_speedtest: Testing 64x multi-block erase speed
mtd_speedtest: 64x multi-block erase speed is 224 KiB/s
mtd_speedtest: finished
=================================================

Signed-off-by: Huang Shijie <b32955@freescale.com>
11 years agoENGR00257661 pcie: imx: pcie ep/rc validation
Richard Zhu [Tue, 12 Mar 2013 08:35:42 +0000 (16:35 +0800)]
ENGR00257661 pcie: imx: pcie ep/rc validation

HW setup:
* Two i.MX6Q SD boards, one is used as PCIe RC, the other
is used as PCIe EP. Connected by 2*mini_PCIe to standard_PCIe
adaptors, 2*PEX cable adaptors, One PCIe cable.

SW setup:
* When build RC image, make sure that
CONFIG_IMX_PCIE=y
# CONFIG_IMX_PCIE_EP_MODE_IN_EP_RC_SYS is not set
CONFIG_IMX_PCIE_RC_MODE_IN_EP_RC_SYS=y
* When build EP image, make sure that
CONFIG_IMX_PCIE=y
CONFIG_IMX_PCIE_EP_MODE_IN_EP_RC_SYS=y
# CONFIG_IMX_PCIE_RC_MODE_IN_EP_RC_SYS is not set

Features:
* Set-up link between RC and EP by their stand-alone
125MHz running internally.
* In EP's system, EP can access the reserved ddr memory
(default address:0x40000000) of PCIe RC's system, by the
interconnection between PCIe EP and PCIe RC.
* add the configuration methods in the EP side, used to
configure the start address and the size of the reserved
RC's memory window.
  - cat /sys/devices/platform/imx-pcie/rc_memw_info
  - echo 0x41000000 > /sys/devices/platform/imx-pcie/rc_memw_start_set
  - echo 0x800000 > /sys/devices/platform/imx-pcie/rc_memw_size_set

Throughput:
* when enable the EP_SELF_IO_TEST, and ARM core used as the
bus master: write speed ~300MB/s, read speed ~100MB/s.
* IPU used as the bus master: write speed ~344MB/s, read
speed ~211MB/s.

Signed-off-by: Richard Zhu <r65037@freescale.com>
11 years agoENGR00257658 Revert "ENGR00256893-1 MX6Q/DL-Fix Ethernet performance issue
Jason Liu [Sun, 7 Apr 2013 01:10:25 +0000 (09:10 +0800)]
ENGR00257658 Revert "ENGR00256893-1 MX6Q/DL-Fix Ethernet performance issue

This reverts commit 067c8dcfa79a169d86809272569fe734c4222c79.

i.mx6dl/dq sabreauto/sabresd board will boot up failed
randomly with this patch-set, thus revert it. [Jason]

Signed-off-by: Jason Liu <r64343@freescale.com>
Signed-off-by: Huang Shijie <b32955@freescale.com>