summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
2013-02-26ENGR00241003-2 pfuze: using _sel interface to add delay supportrel_imx_3.0.35_1.0.2Anson Huang
use regulator _sel interface set to support auto delay, as when regulator's voltage go up, it will take some time to ramp up to the required voltage, so the delay is necessary. _sel interface set support such function, now we switch to this interface set. Signed-off-by: Anson Huang <b20788@freescale.com>
2012-09-14ENGR00224245 HDMI AUDIO: stop/start PCM while unplug,blank/plug, unblankrel_imx_3.0.35_12.09.013.0-imx6-12.09.01-201209132128Chen Liangjun
When unplug, blank happens, HDMI audio can't play properly. So in driver, audio pcm would be disconnected when event above happens. However, pulse audio can't process disconnect event properly and if an blank or unplug event happens, HDMI sink would lost and can't be back again. In this patch, instead of disconnecting audio PCM stream, triggering stop audio pcm while unplug and blank, triggering start again while plug and unblank if the audio pcm is triggerd stop in the unplug/blank event. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-09-13ENGR00223349-4 gpmi: enable the EDO support for mx6qHuang Shijie
Enable the EDO mode for mx6q. The following is the test result with the same nand chip (Micron MT29F32G08QAA) in mode 4: The test result without enable the EDO mode: ================================================= mtd_speedtest: MTD device: 2 mtd_speedtest: MTD device size 209715200, eraseblock size 524288, page size 4096, count of eraseblocks 400, pages per eraseblock 128, OOB size 218 mtd_speedtest: scanned 400 eraseblocks, 6 are bad mtd_speedtest: testing eraseblock write speed mtd_speedtest: eraseblock write speed is 1945 KiB/s mtd_speedtest: testing eraseblock read speed mtd_speedtest: eraseblock read speed is 3384 KiB/s mtd_speedtest: testing page write speed mtd_speedtest: page write speed is 1841 KiB/s mtd_speedtest: testing page read speed mtd_speedtest: page read speed is 3136 KiB/s mtd_speedtest: testing 2 page write speed mtd_speedtest: 2 page write speed is 1853 KiB/s mtd_speedtest: testing 2 page read speed mtd_speedtest: 2 page read speed is 3164 KiB/s mtd_speedtest: Testing erase speed mtd_speedtest: erase speed is 145441 KiB/s mtd_speedtest: Testing 2x multi-block erase speed mtd_speedtest: 2x multi-block erase speed is 146711 KiB/s mtd_speedtest: Testing 4x multi-block erase speed mtd_speedtest: 4x multi-block erase speed is 147139 KiB/s mtd_speedtest: Testing 8x multi-block erase speed mtd_speedtest: 8x multi-block erase speed is 147786 KiB/s mtd_speedtest: Testing 16x multi-block erase speed mtd_speedtest: 16x multi-block erase speed is 147569 KiB/s mtd_speedtest: Testing 32x multi-block erase speed mtd_speedtest: 32x multi-block erase speed is 147677 KiB/s mtd_speedtest: Testing 64x multi-block erase speed mtd_speedtest: 64x multi-block erase speed is 147677 KiB/s mtd_speedtest: finished ================================================= The test result enable the EDO mode: ================================================= mtd_speedtest: MTD device: 2 mtd_speedtest: MTD device size 209715200, eraseblock size 524288, page size 4096, count of eraseblocks 400, pages per eraseblock 128, OOB size 218 mtd_speedtest: scanned 400 eraseblocks, 6 are bad mtd_speedtest: testing eraseblock write speed mtd_speedtest: eraseblock write speed is 3733 KiB/s mtd_speedtest: testing eraseblock read speed mtd_speedtest: eraseblock read speed is 20413 KiB/s mtd_speedtest: testing page write speed mtd_speedtest: page write speed is 3603 KiB/s mtd_speedtest: testing page read speed mtd_speedtest: page read speed is 18966 KiB/s mtd_speedtest: testing 2 page write speed mtd_speedtest: 2 page write speed is 3668 KiB/s mtd_speedtest: testing 2 page read speed mtd_speedtest: 2 page read speed is 19686 KiB/s mtd_speedtest: Testing erase speed mtd_speedtest: erase speed is 146604 KiB/s mtd_speedtest: Testing 2x multi-block erase speed mtd_speedtest: 2x multi-block erase speed is 147354 KiB/s mtd_speedtest: Testing 4x multi-block erase speed mtd_speedtest: 4x multi-block erase speed is 147677 KiB/s mtd_speedtest: Testing 8x multi-block erase speed mtd_speedtest: 8x multi-block erase speed is 148002 KiB/s mtd_speedtest: Testing 16x multi-block erase speed mtd_speedtest: 16x multi-block erase speed is 147894 KiB/s mtd_speedtest: Testing 32x multi-block erase speed mtd_speedtest: 32x multi-block erase speed is 148329 KiB/s mtd_speedtest: Testing 64x multi-block erase speed mtd_speedtest: 64x multi-block erase speed is 148220 KiB/s mtd_speedtest: finished ================================================= We can see that there is 6 times performance improvement for reading when we enable the EDO mode. Signed-off-by: Huang Shijie <b32955@freescale.com>
2012-09-13ENGR00223349-3 gpmi: add a new field for HW_GPMI_CTRL1Huang Shijie
add the WRN_DLY_SEL field for HW_GPMI_CTRL1. This field is used as delay for gpmi write strobe. Signed-off-by: Huang Shijie <b32955@freescale.com>
2012-09-13ENGR00223349-2 gpmi: do not get the clock frequency in gpmi_begin()Huang Shijie
The current code will gets the clock frequency which is used by gpmi_nfc_compute_hardware_timing(). It makes the code a little mess. So move the `get clock frequency` code to the gpmi_nfc_compute_hardware_timing() itself. This makes the code tidy and clean. Signed-off-by: Huang Shijie <b32955@freescale.com>
2012-09-13ENGR00223349-1 gpmi: add a new field for HW_GPMI_TIMING1Huang Shijie
The gpmi_nfc_compute_hardware_timing{} should contains all the fields setting for gpmi timing registers. It already contains the fields for HW_GPMI_TIMING0 and HW_GPMI_CTRL1. So it is better to add a new field setting for HW_GPMI_TIMING1 in this data structure. This makes the code more clear in logic. This patch also changs some comments to make the code more readable. Signed-off-by: Huang Shijie <b32955@freescale.com>
2012-09-12ENGR00221671 - i2c :imx : fix some i2c devices can not suspendFugang Duan
i2c device (isl29023) can not suspend once during hdmi audio suspend/resume test, and print log: pm_op(): i2c_device_pm_suspend+0x0/0x38 returns -4 PM: Device 2-0044 failed to suspend: error -4 PM: Some devices failed to suspend PM: resume of devices complete after 40.936 msecs Restarting tasks ... done. Because suspend function in isl29023 driver requires i2c bus to write isl29023 device. I2C apdater driver process any signal as exception during waiting the bus idle, so once user space sent out signal during suspend, I2C device cannot request bus. Using "fatal_signal_pending()" instead of "signal_pending()" to avoid the waiting of bus idle to be terminated by general signals except SIGKILL. After the change, i2c adapter can be terminated by kill signal from user space with "CTRL+C" or kill command operation. Signed-off-by: Fugang Duan <B38611@freescale.com>
2012-09-12ENGR00223249 : fix Ethernet performance downgrade issue.Fugang Duan
Ethernet performance is downgraded when wait mode on in 100Mbps mode. wait mode off: 100Mbps mode: tx bandwidth is 94Mbps rx bandwidth is 94Mbps wait mode on: 100Mbps mode: tx bandwidth is 30Mbps rx bandwidth is 94Mbps After apply the patch: wait mode on: 100Mbps mode: tx bandwidth is 94Mbps rx bandwidth is 94Mbps Wait mode on cause enet interrupt has long latency, which results in BD entries are full and stop tx queue, so cpus have more chance to enter wait mode. Incresing TX BD entries can properly accommodate the blance between BD request before tx packets and BD release after tx completion in interrupt process. Signed-off-by: Fugang Duan <B38611@freescale.com>
2012-09-07ENGR00223344 [Thermal]Fix clk enable flow bugAnson Huang
We should make sure clk_enable is called after clk_get. Signed-off-by: Anson Huang <b20788@freescale.com>
2012-09-06ENGR00223236-2 [MX6]Change the temperature range to -40C ~ 125CAnson Huang
Previous temperature range is -25C ~ 125C, according to latest datasheet, change it to -40C to 125C. Signed-off-by: Anson Huang <b20788@freescale.com>
2012-09-06ENGR00223056 Fix HDMI build warningSandor Yu
Fix HDMI build warning. drivers/video/mxc_hdmi.c: In function 'mxc_hdmi_set_mode': drivers/video/mxc_hdmi.c:1659: warning: assignment discards qualifiers from pointer target type drivers/video/mxc_hdmi.c: At top level: driver/video/mxc_hdmi.c:1398: warning: 'mxc_hdmi_enable_pins' defined but not used Remove unused function mxc_hdmi_enable_pins() and mxc_hdmi_disable_pins() from code. Fix defined but unused function build warning. Added pointer conversion from const poniter to non-const pointer. Signed-off-by: Sandor Yu <R01008@freescale.com>
2012-09-05ENGR00222078 power battery:fix charger attach detect missing after resumeRong Dian
1.config gpio dok for AC charger as wake up irq, config gpio uok for USB charger as wake up irq. 2.add AC/USB charger detect in resume,fix charger detect status update missing after attach AC/USB charger and resume system Signed-off-by: Rong Dian <b38775@freescale.com>
2012-09-05ENGR00221854 HDMI: suspend/resume hdmi_phy fail to lock.Sandor Yu
HDMI PHY init function will been called four times during system resume. The first call before pixel clock enable, so it will print PHY PLL unlock message, but the PHY PLL will locked in the next three times called. It will not affect HDMI PHY function. Change message print function dev_err to dev_dbg. Signed-off-by: Sandor Yu <R01008@freescale.com>
2012-09-05ENGR00221370 IPUv3:Clean up IPUv3 interrupt handlerLiu Ying
1) In the interrupt handler, we access sync interrupt control registers 2 times, and each time with spin lock being held and then released, which may cause potential racing on the registers. We see that as long as the racing happens with two displays enabled on the same IPU, one IPU display channel will lose EOF interrupt and it makes its fb's pan display ioctrl fail with timeout. This patch changes to hold the spin lock one time for the whole irq handler, as the handler should return quickly. Holding and releasing the spin lock unnecessarily may bring performance penalty as well. 2) We do not need to use spin_lock_irqsave() and spin_unlock_irqrestore() in the interrupt handler, as we are already in the hard irq context. Using spin_lock() and spin_unlock() is enough to protect the registers. 3) Clear an interrupt control bit as soon as its related handler finishes. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit c5d3731fa0880a65efafb4826d3722aacb79edd5)
2012-09-05ENGR00221983 IPUv3:Correct ERR and SYNC interrupt line numbersLiu Ying
As we define ERR interrupt with 0 irq resource id and SYNC interrupt with 1 irq resource id in platform-imx_ipuv3.c, we wrongly assign them in IPUv3 driver. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit 52c9fc323e0f72e53de6fe0c6f7012fe7adf14b4)
2012-09-03ENGR00215875-2: caam: fix descriptor buffer overrun in hash_digest_key()Steve Cornelius
HMAC keys often need to be reduced to under the size of a digest to be used. The driver does this psuedo-synchronously through the use of hash_digest_key(), which builds a sequence pointered job descriptor to perform this function. When this function built the job descriptor, it correctly accounted for the number of instructions and number of pointers that would go into its construction. However, it failed to account for the fact that both the sequence in and out pointers used extended lengths, adding 8 more bytes to the required job descriptor. This caused the descriptor to overrun the allocated buffer by that amount, resulting in memory corruptions. Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com> Signed-off-by: Terry Lv <r65388@freescale.com>
2012-09-03ENGR00215875-1: caam: improve initalization for context state savesSteve Cornelius
Multiple function in asynchronous hashing use a saved-state block, a.k.a. struct caam_hash_state, which holds a stash of information between requests (init/update/final). Certain values in this state block are loaded for processing using an inline-if, and when this is done, the potential for uninitialized data can pose conflicts. Therefore, this patch improves initialization of state data to prevent false assignments using uninitialized data in the state block. This patch addresses the following traceback, originating in ahash_final_ctx(), although a problem like this could certainly exhibit other symptoms: kernel BUG at arch/arm/mm/dma-mapping.c:465! Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = 80004000 [00000000] *pgd=00000000 Internal error: Oops: 805 [#1] PREEMPT SMP Modules linked in: CPU: 0 Not tainted (3.0.15-01752-gdd441b9-dirty #40) PC is at __bug+0x1c/0x28 LR is at __bug+0x18/0x28 pc : [<80043240>] lr : [<8004323c>] psr: 60000013 sp : e423fd98 ip : 60000013 fp : 0000001c r10: e4191b84 r9 : 00000020 r8 : 00000009 r7 : 88005038 r6 : 00000001 r5 : 2d676572 r4 : e4191a60 r3 : 00000000 r2 : 00000001 r1 : 60000093 r0 : 00000033 Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 10c53c7d Table: 1000404a DAC: 00000015 Process cryptomgr_test (pid: 1306, stack limit = 0xe423e2f0) Stack: (0xe423fd98 to 0xe4240000) fd80: 11807fd1 80048544 fda0: 88005000 e4191a00 e5178040 8039dda0 00000000 00000014 2d676572 e4191008 fdc0: 88005018 e4191a60 00100100 e4191a00 00000000 8039ce0c e423fea8 00000007 fde0: e4191a00 e4227000 e5178000 8039ce18 e419183c 80203808 80a94a44 00000006 fe00: 00000000 80207180 00000000 00000006 e423ff08 00000000 00000007 e5178000 fe20: e41918a4 80a949b4 8c4844e2 00000000 00000049 74227000 8c4844e2 00000e90 fe40: 0000000e 74227e90 ffff8c58 80ac29e0 e423fed4 8006a350 8c81625c e423ff5c fe60: 00008576 e4002500 00000003 00030010 e4002500 00000003 e5180000 e4002500 fe80: e5178000 800e6d24 007fffff 00000000 00000010 e4001280 e4002500 60000013 fea0: 000000d0 804df078 00000000 00000000 00000000 00000000 00000000 00000000 fec0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 fee0: 00000000 00000000 e4227000 e4226000 e4753000 e4752000 e40a5000 e40a4000 ff00: e41e7000 e41e6000 00000000 00000000 00000000 e423ff14 e423ff14 00000000 ff20: 00000400 804f9080 e5178000 e4db0b40 00000000 e4db0b80 0000047c 00000400 ff40: 00000000 8020758c 00000400 ffffffff 0000008a 00000000 e4db0b40 80206e00 ff60: e4049dbc 00000000 00000000 00000003 e423ffa4 80062978 e41a8bfc 00000000 ff80: 00000000 e4049db4 00000013 e4049db0 00000013 00000000 00000000 00000000 ffa0: e4db0b40 e4db0b40 80204cbc 00000013 00000000 00000000 00000000 80204cfc ffc0: e4049da0 80089544 80040a40 00000000 e4db0b40 00000000 00000000 00000000 ffe0: e423ffe0 e423ffe0 e4049da0 800894c4 80040a40 80040a40 00000000 00000000 [<80043240>] (__bug+0x1c/0x28) from [<80048544>] (___dma_single_dev_to_cpu+0x84) [<80048544>] (___dma_single_dev_to_cpu+0x84/0x94) from [<8039dda0>] (ahash_fina) [<8039dda0>] (ahash_final_ctx+0x180/0x428) from [<8039ce18>] (ahash_final+0xc/0) [<8039ce18>] (ahash_final+0xc/0x10) from [<80203808>] (crypto_ahash_op+0x28/0xc) [<80203808>] (crypto_ahash_op+0x28/0xc0) from [<80207180>] (test_hash+0x214/0x5) [<80207180>] (test_hash+0x214/0x5b8) from [<8020758c>] (alg_test_hash+0x68/0x8c) [<8020758c>] (alg_test_hash+0x68/0x8c) from [<80206e00>] (alg_test+0x7c/0x1b8) [<80206e00>] (alg_test+0x7c/0x1b8) from [<80204cfc>] (cryptomgr_test+0x40/0x48) [<80204cfc>] (cryptomgr_test+0x40/0x48) from [<80089544>] (kthread+0x80/0x88) [<80089544>] (kthread+0x80/0x88) from [<80040a40>] (kernel_thread_exit+0x0/0x8) Code: e59f0010 e1a01003 eb126a8d e3a03000 (e5833000) ---[ end trace d52a403a1d1eaa86 ]--- Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com> Signed-off-by: Terry Lv <r65388@freescale.com>
2012-08-29ENGR00182456-3 HDMI VIDEO: abort audio when unblank and plugoutChen Liangjun
In this patch: 1. Close audio PCM stream when video unblank and plugout event happens. 2. Set HDMI cable and blank state into HDMI core driver when plug/unplug, blank/unblank events happens. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-08-29ENGR00182456-1 HDMI: Add interface for HDMI audio managementChen Liangjun
In this patch, add support for: 1. Interface for HDMI audio to register PCM into HDMI core driver. 2. Interface for HDMI video driver to stop HDMI audio 3. Interface for HDMI video driver to inform the state of HDMI cable and state of HDMI blank. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-08-29ENGR00221450 imx6 thermal: add sys_close() in cooling deviceRong Dian
add sys_close() to close opened file in cooling device Signed-off-by: Rong Dian <b38775@freescale.com>
2012-08-29ENGR00221444 HDMI: video mode wrong when bootup without HDMI cableSandor Yu
Bootup Android without HDMI cable plugin, then plugin HDMI cable, video mode in /sys/class/graphics/fb0/mode not same as actually HDMI work video mode. The root cause is in video mode point to one of video mode in original video modelist, but the modelist will be updated when HDMI cable plug to new monitor. If HDMI original worked video mode can work on new monitor, the HDMI and framebuffer will not updated, so HDMI actually work mode not same as /sys/class/graphics/fb0/mode Updated fbi mode pointer even if video mode no changed in case moselist is updated, the issue will fixed. Signed-off-by: Sandor Yu <R01008@freescale.com>
2012-08-29ENGR00221445 ov5642: return error number when change camera modeYuxi Sun
return error number when set camera change mode fail, if not the driver may continue to setup the video processing with wrong parameter. Signed-off-by: Yuxi Sun <b36102@freescale.com>
2012-08-24ENGR00220796-2: v4l2 imx6sl: Add V4L2 driver supportRobby Cai
Add V4L2 support -- driver part. Signed-off-by: Robby Cai <R63905@freescale.com>
2012-08-24ENGR00220796-1: pxp: Add stride configuration for some pixel formatRobby Cai
Set correct PITCH (aka, stride) for AS, PS, Output buffer. This is needed for V4L2. Signed-off-by: Robby Cai <R63905@freescale.com>
2012-08-24ENGR00221203-2 IPU Device: replace BUG macro with error messageWayne Zou
Replace BUG macro with error message Signed-off-by: Wayne Zou <b36644@freescale.com>
2012-08-24ENGR00221203-1 IPU Device: Avoid release resource twice when timeoutWayne Zou
Avoid release resource twice when timeout happen. Signed-off-by: Wayne Zou <b36644@freescale.com>
2012-08-24ENGR00221217 usb: device: fix usb_state incorrect problem after pc sends resumePeter Chen
At pc sends suspend/resume case, the udc_controller->usb_state should keep unchange during the suspend/resume process, at former code, the fsl_udc_resume set udc_controller->usb_state to USB_STATE_ATTACHED unconditionally. In fact, USB_STATE_ATTACHED stands for initial state and should be set when we try to run controller. Signed-off-by: Peter Chen <peter.chen@freescale.com>
2012-08-23ENGR00221185: mmc: sdhci: change info level when data preparation is invalidRyan QIAN
- invalid data preparation is a reasonable path, so no need to set to WARNING level, change it to DEBUG level. Signed-off-by: Ryan QIAN <b32804@freescale.com>
2012-08-23ENGR00221102-1 MX6Q: increase VPU frequence to 352MhzRobin Gong
Increase VPU frequency to 352Mhz for TV box, use pll2_pfd_400M.To avoid impact other code which assume ARM clock sourcing from pll2_pfd_400M, change cpu setpoint of 396M to 352M. and disable bus freq adjust. add CONFIG_MX6_VPU_352M to choose it, default is disabled. Signed-off-by: Robin Gong <B38343@freescale.com>
2012-08-23ENGR00221164 usb: device: fix calling mutex at atomic environmentPeter Chen
Move spin_unlock_irqrestore to avoid calling mutex at atomic environment, as dr_wake_up_enable will call mutex_lock Signed-off-by: Peter Chen <peter.chen@freescale.com>
2012-08-22ENGR00220538 HDMI: Clock mismatch in suspend&resume when video playbackSandor Yu
In suspend/resume and HDMI plugin/plugout stress test, sometimes fbcon will call fb_set_par with parameter fb_var_screeninfo that xres anfd yres is zero. MX frame buffer driver can not correct handle this casue, it will cause IPU pixel clock gating/ungating mismatch. Check fb_var_screeninfo parameter in mxcfb_check_var and mxcfb_set_par function, returned if xres,yres zero. Signed-off-by: Sandor Yu <R01008@freescale.com>
2012-08-22ENGR00221012 IPU: Clean up dead codeWayne Zou
IPU: Clean up dead code Signed-off-by: Wayne Zou <b36644@freescale.com>
2012-08-22ENGR00219601-02: mmc: sdhci: revise pre_req & post_req to improve performanceRyan QIAN
Test Env: 1. MX6DL SabreSD board. 2. On board eMMC (Sandisk: SDIN5C2-8G) running at 8-bit DDR @ 52MHz. 3. Test commands: 3.1 Writing command: # dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=100 conv=fsync 3.2 Reading command: # echo 1 > /proc/sys/vm/drop_caches # echo 1 > /proc/sys/vm/drop_caches # sleep 1 # dd if=/dev/mmcblk0 of=/dev/null bs=1M count=100 Performance result with this patch: ------------------------------------------------------- | CPU freq | SDMA (512KB) | SDMA (64KB) | ADMA | |----------+--------------+-------------+-------------| | 1Ghz | ~11MB/s (w) | ~5MB/s (w) | ~11MB/s (w) | | | ~25MB/s (r) | ~25MB/s (r) | ~23MB/s (r) | |----------+--------------+-------------+-------------| | 200Mhz | ~8MB/s (w) | ~5MB/s (w) | ~9MB/s (w) | | | ~16MB/s (r) | ~20MB/s (r) | ~13MB/s (r) | ------------------------------------------------------- Performance result without this patch: ------------------------------------------------------- | CPU freq | SDMA (512KB) | SDMA (64KB) | ADMA | |----------+--------------+-------------+-------------| | 1Ghz | ~10MB/s (w) | ~5MB/s (w) | ~10MB/s (w) | | | ~22MB/s (r) | ~23MB/s (r) | ~22MB/s (r) | |----------+--------------+-------------+-------------| | 200Mhz | ~8MB/s (w) | ~4MB/s (w) | ~8MB/s (w) | | | ~13MB/s (r) | ~16MB/s (r) | ~11MB/s (r) | ------------------------------------------------------- Signed-off-by: Ryan QIAN <b32804@freescale.com>
2012-08-22ENGR00219601-01: mmc: queue: enlarge the size of bounce buffer for SDMA.Ryan QIAN
- set bounce buffer to 512KB from 64K, which is hw max seg size for fsl sd host controller - by enlarging the size of bounce buffer, it will reduce the number of irq on writing by merging small requests into a large one, which will improve writing throughput. - the side effect is that the reading throughput of 512KB bounce buffer is lower than the one of 64KB bounce buffer, when cpu freq is at 200Mhz. Test Env: 1. MX6DL SabreSD board 2. On board eMMC (Sandisk: SDIN5C2-8G) running at 8-bit DDR @ 52Mhz 3. Test commands: 3.1 Writing test command: # dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=100 conv=fsync 3.2 Reading test command: # echo 1 > /proc/sys/vm/drop_caches # echo 1 > /proc/sys/vm/drop_caches # sleep 1 # dd if=/dev/mmcblk0 of=/dev/null bs=1M count=100 Performance result: ------------------------------------------------------- | CPU freq | SDMA (512KB) | SDMA (64KB) | ADMA | |----------+--------------+-------------+-------------| | 1Ghz | ~10MB/s (w) | ~5MB/s (w) | ~10MB/s (w) | | | ~22MB/s (r) | ~23MB/s (r) | ~22MB/s (r) | |----------+--------------+-------------+-------------| | 200Mhz | ~8MB/s (w) | ~4MB/s (w) | ~8MB/s (w) | | | ~13MB/s (r) | ~16MB/s (r) | ~11MB/s (r) | ------------------------------------------------------- Signed-off-by: Ryan QIAN <b32804@freescale.com>
2012-08-22ENGR00220734 IPUv3 fb:Rewind eof irq sync mechanism backLiu Ying
This patch changes to use original sync mechanism for eof irq, which may improve pan-display or alpha buffer update performance. 1) Initialize flip_completion and alpha_flip_completion only once when fb is initialized instead of initializing it every time when pan display is called. 2) Clear and enable eof irq after selecting buffer ready. In this way, we have no chance to lose an interrupt, as selecting a new buffer ready doesn't make the eof irq come(from the newly selected buffer) before we clear the irq status and enable the irq. Otherwise, if we clear the irq status and enable the irq before we doing down in pan-display or alpha buffer update, we have chance(users call pan-display or alpha buffer update faster than vsync frequency and blocks at down()) to clear an unhandled irq, which may cause performance issue. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit 67c2bd5edef363412a074e9b4130b5207dac8a7f)
2012-08-21ENGR00220913 LDB: disable LDB DI clock when suspendWayne Zou
Disable LDB DI clock when suspend. Signed-off-by: Wayne Zou <b36644@freescale.com>
2012-08-21ENGR00179425 HDMI: Sometime HDMI EDID read failedSandor Yu
EDID read will failed sometimes on some boards. Read EDID twice if first one failed. Signed-off-by: Sandor Yu <R01008@freescale.com>
2012-08-21ENGR00220884 uart: quit the early uart console as late as possibleHuang Shijie
If we use the late_initcall(), then there is a time slot between the exit of early uart console and the real console: -->late_initcall(mxc_early_uart_console_disable) ...... -->imx_startup() In this time slot, the clock will be closed, so the log printed during the time slot is buffered, this is why we can not see the NFS's log. Change the late_initcall() to late_initcall_sync() which eliminates the time slot. Signed-off-by: Huang Shijie <b32955@freescale.com>
2012-08-21ENGR00220848 imx6 thermal: export thermal hot variable for GPURong Dian
export thermal hot variable for GPU Signed-off-by: Rong Dian <b38775@freescale.com>
2012-08-21ENGR00220794 imx6 thermal: add suspend and resume for thermal_sys classRong Dian
1.Avoiding system wrong reboot caused by error temperature without cancel_delayed_work before entering into suspend,so to cancel thermal_zone_device temperature polling temperature delayed_work before entering into suspend, reenable polling temperature delayed_work after entering into resume. 2.In anatop_thermal_suspend, turn off alarm firstly Signed-off-by: Rong Dian <b38775@freescale.com>
2012-08-20ENGR00220732-1 Remove clk_disable in VPU driver interrupt handlingHongzhang Yang
Original design is VPU lib API StartOneFrame() enables clock, and VPU driver disables clock after codec done interrupt has been received. However there are known issues of interrupt handling as below: - VPU interrupt handling callback is not scheduled in time causing work queue overflow - JPU done interrupt is not received because JPU issues it while JPU buffer empty interrupt is still being served - VPU finishes a frame (!vpu_IsBusy) but VPU done interrupt is not received All above will cause clk_disable in interrupt handling not called, thus VPU clock count increases by 1. So I plan to resolve clock unbalance issue first by removing clk_disable from VPU driver interrupt handling. Interrupt problem will not affect clock issue any longer. 1. Driver: remove clk_disable from vpu_worker_callback 2.1. Lib: remove clk_enable from API GetOutputInfo 2.2. Lib: avoid disabling VPU clock when VPU is busy in SWReset 3. Test: replace GetOutputInfo with SWReset in decoder_close / encoder_close Signed-off-by: Hongzhang Yang <Hongzhang.Yang@freescale.com>
2012-08-18ENGR00220706 IPU Add more timeout when wait for the csi end of frameYuxi Sun
If this timeout is too small, it can't meet the require of some large frame such as 2592x1944 and 1080p, and the IDMAC maybe in a chaotic state, so at last access some invalid space caused the system hang. Signed-off-by: Yuxi Sun <b36102@freescale.com>
2012-08-18ENGR00220705 v4l2 overlay: Cancel the work structure schedule at overlay stopYuxi Sun
Add flush_work_sync and cancel_work_sync at the overlay stop to prevent moving data by DMA even when the space of those data address is freed. Signed-off-by: Yuxi Sun <b36102@freescale.com
2012-08-17ENGR00220440 Mx6:USB device: clear OWIE before phy out of low power modemake shi
There is a limitation on mx6 phy low power flow. During phy enter low power mode and out of low power mode with OWIE bit active,there will be abnormal usb wakeup interrupt happen. So we should clear OWIE bit before phy out of low power mode. Signed-off-by: make shi <b15407@freescale.com>
2012-08-17ENGR00219926-2 ASRC: use PAIR B for ASRC ideal ratio convertChen Liangjun
When use ASRC ideal ratio mode for convert, PAIR C can't work properly. However, when use PAIR C for internal ratio mode or non ratio mode convert, it can work properly. In this patch, Use PAIR B for 6 channel convert as a workaround. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-08-17ENGR00219926-1 ESAI ASRC: use ideal ratio for ASRC P2P playbackChen Liangjun
When use no ideal-ratio mode for ESAI playback, CPU should provide accurate clock for input clock, which means input clock should be divided by input sample rate. However, all our clock is from 24M crystal and if the input sample rate equal to 44.1k or so, CPU can't provide these clock. In this patch, use ideal ratio mode thus CPU need not provide accurate clock which can be divided by 44.1k. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-08-16ENGR00219931 ESAI ASRC: fix channel swap bug while playback 6 channelChen Liangjun
Channel swap caused by 2 reason: 1. To avoid ASRC underflow error, ASRC driver would prefill ASRC input FIFO with 160 samples. However, 160 can't be divided by 6. In this case, channel data miss alignment. In this patch, prefill ASRC input FIFO with 120, which can be divided by 2,4,6,8. 2. While start P2P playback, ESAI driver would first start SDMA, then ASRC, and last ESAI. While start ESAI, the data is not ready, thus ESAI underrun would happens and channel data miss alignment. In this patch, delay 1 ms between ASRC's start and ESAI's start. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-08-16ENGR00220341-2 usb: add spin_lock_irqsave protect for pdata->lowpowerPeter Chen
pdata->lowpower may be accessed at two drivers together, assumed the situation that host/device set phy to low power mode but still not set the flag lowpower, at this time the wakeup occurs, as the flag lowpower is still not set, the interrupt will be infinite loop as no one will serve it. This commit is for driver code and add protect at driver. Signed-off-by: Peter Chen <peter.chen@freescale.com>
2012-08-15ENGR00219859 MXC V4L2 capture:Pwr down/on opened camLiu Ying
Currently, we support 2 cameras, which are relevant to 2 video devices respectively. This patch checks if video device is opened to determine whether we need to power down/on relevant camera when doing suspend/resume. Also, this patch protects capture resources with busy lock semaphore. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit 874198b89a89aa6e792754a0a51c46084ed93d1a)
2012-08-15ENGR00180117 HDMI: No audio output in 1080P on some TVSandor Yu
Some TV support specific video mode that different with CEA standard, and it's pixel clock not comply CEA standard. But audio configuration paramter N and CTS should follow CEA standard. So audio may not work in these specific video mode. Filter video mode get from EDID, only keep standard CEA video mode in the modelist. Signed-off-by: Sandor Yu <R01008@freescale.com>