summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
2012-03-28ENGR00178052 v4l2_capture:Correct multi-sensor uninstallationrel_imx_3.0.15_12.03.00Yuxi Sun
Point the current sensor to the right existent camera, and remove the detached one Signed-off-by: Yuxi Sun <b36102@freescale.com>
2012-03-28ENGR00177302 ASRC: change clock managementChen Liangjun
1 close clock when asrc is not working. 2 enable the asrc core clock when user sucessfully request an ASRC pair and disable it when the pair is release.So the call from ESAI using the p2p DMA mode can be support. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-03-28ENGR00177756 usb-host: quit system suspend after usb remote wakeup occursPeter Chen
If the usb remote wakeup occurs before bus(roothub) suspend, it can stop the system suspend process, the patch adds handle error message process for roothub. If the remote wakeup occurs after bus(roothub) suspend, then the suspend will go on suspending, and usb phy will fail to respond wakeup signal. This patch is suggested by: Alan Stern <stern@rowland.harvard.edu> see: http://www.spinics.net/lists/linux-usb/msg58774.html Signed-off-by: Peter Chen <peter.chen@freescale.com>
2012-03-27ENGR00178118-1 fix some build warnings when using GCC 4.6.2Jason Liu
fix some build warnings when using GCC 4.6.2: drivers/cpufreq/cpufreq_interactive.c:127:6: warning:'irq_count' may be used uninitialized in this function [-Wuninitialized] drivers/media/video/mxc/output/mxc_vout.c:1346:5: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] drivers/video/mxc/mxc_ipuv3_fb.c:1329:23: warning: operation on 'mxc_fbi->cur_ipu_buf' may be undefined [-Wsequence-point] drivers/video/mxc/mxc_ipuv3_fb.c:1376:24: warning: operation on 'mxc_fbi->cur_ipu_buf' may be undefined [-Wsequence-point] drivers/video/mxc/mxc_ipuv3_fb.c:1377:24: warning: operation on 'mxc_fbi->cur_ipu_buf' may be undefined [-Wsequence-point] Signed-off-by: Jason Liu <r64343@freescale.com>
2012-03-27ENGR00178031 IPUv3 FB:Fix a typo in a kernel logLiu Ying
This patch fixes a typo in a kernel log. Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
2012-03-26ENGR00177944 v4l2 capture: enable mclk and power up when open cameraYuxi Sun
Set mclk enable and power up camera when open camera, and disable mclk, powerdown camera when close. Signed-off-by: Yuxi Sun <b36102@freescale.com>
2012-03-26ENGR00177589 USB: fix two USB common bug for i.MX6Peter Chen
- Without host wakeup enable, after doing system suspend/resume, plug in usb cable(both host/device) with no response, the reason is usb wakeup is not enable after suspend resume. - clock refcount will not be 0 after usb enters low power mode,the reason is OTG ID wake up not do recover hcd. Signed-off-by: Peter Chen <peter.chen@freescale.com>
2012-03-26ENGR00176177-2 Add irq count mechanism to interactive governorAnson Huang
Add irq count to CPUFreq as a freq change condition. Because some devices' working mode is unable to issue CPUFreq change because of low CPU loading, but the cpu freq will impact these devices' performace significantly. Interactive govervor will sample the cpu loading as well as the irq count which is registered. If the loading or the irq count exceed the threshold we set, governor will issue an CPUFreq change request. These devices' irq threshold and enable/disable can be modified via /sys/devices/system/cpu/cpufreq/interactive/irq_scaling echo 0xAABBBC to change the default setting as below AA : irq number BBB: threshold C :enable or disable Currently only enable USDHC3, USDHC4, GPU, SATA and USB by default, we can add device to the init struct which is located in arch/arm/mach-mx6/irq.c. Signed-off-by: Anson Huang <b20788@freescale.com>
2012-03-26ENGR00177745-1 Add interactive cpufreq governorAnson Huang
cpufreq: interactive: New 'interactive' governor This governor is designed for latency-sensitive workloads, such as interactive user interfaces. The interactive governor aims to be significantly more responsive to ramp CPU quickly up when CPU-intensive activity begins. Existing governors sample CPU load at a particular rate, typically every X ms. This can lead to under-powering UI threads for the period of time during which the user begins interacting with a previously-idle system until the next sample period happens. The 'interactive' governor uses a different approach. Instead of sampling the CPU at a specified rate, the governor will check whether to scale the CPU frequency up soon after coming out of idle. When the CPU comes out of idle, a timer is configured to fire within 1-2 ticks. If the CPU is very busy from exiting idle to when the timer fires then we assume the CPU is underpowered and ramp to MAX speed. If the CPU was not sufficiently busy to immediately ramp to MAX speed, then the governor evaluates the CPU load since the last speed adjustment, choosing the highest value between that longer-term load or the short-term load since idle exit to determine the CPU speed to ramp to. A realtime thread is used for scaling up, giving the remaining tasks the CPU performance benefit, unlike existing governors which are more likely to schedule rampup work to occur after your performance starved tasks have completed. The tuneables for this governor are: /sys/devices/system/cpu/cpufreq/interactive/min_sample_time: The minimum amount of time to spend at the current frequency before ramping down. This is to ensure that the governor has seen enough historic CPU load data to determine the appropriate workload. /sys/devices/system/cpu/cpufreq/interactive/go_maxspeed_load The CPU load at which to ramp to max speed. Signed-off-by: Anson Huang <b20788@freescale.com>
2012-03-23ENGR00177851 HDMI fix hotpug race conditionAlan Tull
hotplug_worker can't assume that the iahb_clk is enabled if the irq_enabled flag is set. Signed-off-by: Alan Tull <r80115@freescale.com>
2012-03-23ENGR00177737-1 change the drv name to sii902x_hdmiHake Huang
so that system can use 2 type of HDMI device driver sii902x and on chip one Signed-off-by: Hake Huang <b20222@freescale.com>
2012-03-22mxc: hdmi: fix potention deadlock issueJason Chen
Signed-off-by: Jason Chen <jason.chen@linaro.org>
2012-03-22ENGR00177310-3 v4l2 capture: enable mclk when open functionLily Zhang
Enable mclk when opening v4l2 capture device and disable mclk when closing v4l2 capture device. If mclk is disabled when operating MIPI camera, the test is failed. Signed-off-by: Lily Zhang <r58066@freescale.com>
2012-03-21ENGR00177048 Merge vivante 4.6.6 kernel part codeLoren Huang
Merge vivante 4.6.6 kernel part code Signed-off-by: Loren Huang <b02279@freescale.com> Acked-by: Lily Zhang
2012-03-21ENGR00171874 fix ASRC noise bug for i.MX6Chen Liangjun
Solve the ASRC noise: 1 change the DMA mode from normal mode to loop mode. 2 use dma_alloc_coherent alloc dma buffer instead of kzalloc. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-03-21ENGR00176299-4 usb host suspend/resume can't work randomlyTony LIU
driver part Signed-off-by: Tony LIU <junjie.liu@freescale.com>
2012-03-21ENGR00176299-2 usb host suspend/resume can't work randomlyTony LIU
usb core part Signed-off-by: Tony LIU <junjie.liu@freescale.com>
2012-03-19ENGR00177046: Add the platform dependency for PXP in KconfigRobby Cai
If there's no dependency, build will be broken when do `make ARCH=arm CROSS_COMPILE=<cross-compiler path> allmodconfig' `make' because PXP module will be turned on. This patch fixed it. Signed-off-by: Robby Cai <R63905@freescale.com>
2012-03-16ENGR00175884 System resume failed when the power key was pressed shortlyLin Fuzhen
Some platform like Android needs to get the power key event to reume the other devcies such as FB, TS. System resume failed when the gpio power key was pressed shortly sometime, but can resume the by long press the power key. The root cause of this issue is that the GPIO IRQ is registered as device IRQ, but device IRQs will just be enabled after early resume finished, so when the power key press shortly, the gpio-irq may still disabled in that time, and the ISR will be ignored and could not detect the key down event. To fix this bug, add the IRQF_EARLY_RESUME flag to the irq if platform has specified that the button can wake up the system , in this way, this irq will be enabled during syscore resume, so that the power key press can be handled and reported as early as possible. Signed-off-by: Lin Fuzhen <fuzhen.lin@freescale.com>
2012-03-15ENGR00176808 system crashes if switching between PAL & NTSCTony Lin
it's a video out issue instead of camera/tvin. the queue list and active list should be cleared in stream off function. Signed-off-by: Tony Lin <tony.lin@freescale.com>
2012-03-15ENGR00176921:gpu-viv: set outstanding request number for all chips that ↵Wu Guoxing
using gc320 this needs by all the chips(6dl, 6dq) that using gc320 this is vivante's IP bug, that when set outstanding number bigger than 16, it will have a chance for gc320 to dead lock the axi bus, which will lead to system hang. also, as our chip can only support axi outstanding of 8(for 6dl) and 4(6dq), this change have no performance impact. Signed-off-by: Wu Guoxing <b39297@freescale.com> Acked-by: Lily Zhang
2012-03-15ENGR00176469-5: Remove build warnings in mxc_mlb150.cTerry Lv
Remove build warnings in mxc_mlb150.c. Signed-off-by: Terry Lv <r65388@freescale.com>
2012-03-14ENGR00174923 - EPDC fb: Stress Test Failure FixedDanny Nold
- Changed workqueues to use strict ordering and one process at a time - Changed mutex ordering in IRQ handler to avoid race condition - Updated 64-bit logic operation to ensure proper logic - Fixed bug in how LUT cancellation case is handled. The wrong index was being used to clear LUT IRQ and IRQ_MASK. - Increased flush_updates timeout to 8s, since it may take several seconds if a long queue of updates is waiting. Signed-off-by: Danny Nold <dannynold@freescale.com>
2012-03-14ENGR00175700 System hang when change HDMI from XGA to 1080P with display blankSandor Yu
Change the vide mode from XGA to 1080P when display blank, the system will hang. It is cause by overflow interrupt will trigger when the video mode change, but clean the interrupt status bit depend on pixewl clock. In blank state the pixel clock is gating so the HDMI PHY can't work. Signed-off-by: Sandor Yu <R01008@freescale.com>
2012-03-14ENGR00176649-3 regulator:Support regulator set in sysfsRobin Gong
By default, regulator set is disabled by kernel, but if enable the function we can easily set regulator in sysfs, it's useful for unit test of pfuze regulator. Signed-off-by: Robin Gong <b38343@freescale.com>
2012-03-14ENGR00176629 [Thermal]Add 1.2G supportAnson Huang
Fix bug of saving previous cpufreq not support up to 1.2G freq. Max length set to 7 instead of 6. Signed-off-by: Anson Huang <b20788@freescale.com>
2012-03-13ENGR00176469-2: Improve the performance of MLBTerry Lv
Main changes: 1. Directly use ring buffer to read. 2. Trival code clean for improvement. Signed-off-by: Terry Lv <r65388@freescale.com>
2012-03-13ENGR00176656:gpu-viv:separate gpu 2d and vg core clock and axi clock operationWu Guoxing
separate gpu 2d and vg core clock and axi clock operation Signed-off-by: Wu Guoxing <b39297@freescale.com> Acked-by: Lily Zhang
2012-03-09ENGR00176504 - EPDC fb: Reduce number of PxP output buffers to 2Danny Nold
- Changed from one-buffer-per-LUT (up to 16 for EPDCv1.0 and 64 for EPDCv2.0) to using 2 static buffers for PxP output. This is facilitated by the switch to using a single-threaded workqueue to process each update, which guarantees that we can use just 2 buffers without clobbering concurrent updates. - One known limitation: This restricts the SNAPSHOT update scheme to only 2 concurrent updates. So if a user intends to use SNAPSHOT scheme, the EPDC_MAX_NUM_BUFFERS #define should be increased based on the desired number of allowable concurrent updates (with a corresponding penalty in static memory allocation). Signed-off-by: Danny Nold <dannynold@freescale.com>
2012-03-08ENGR00175090 Update the fsl copyright of gpu kernel driver to 2012Huang Loren
Update the fsl copyright of gpu kernel driver to 2012 Signed-off-by: Huang Loren <b02279@freescale.com>
2012-03-08ENGR00174654-2 Update gpu kernel driver to vivante 4.6.5 releaseLoren Huang
Merge 4.6.5 p1 kernel part code. Signed-off-by: Loren Huang <b02279@freescale.com> Acked-by: Lily Zhang
2012-03-07ENGR00176147-1: usb: fix some wakeup problemsPeter Chen
- Do not call hcd core adjust wakeup flag code. It may change wakeup flag, and cause port change detect(PCD) enable setting change. - For ID wakeup, it should not call host's fsl_usb_recover_hcd at ID interrupt. The coming ID switch event will resume host. - Do not need enable wakeup interrupt for host at platform driver resume routine, it may introduce unnessary wakeup interrupt during bus resume. The wakeup will be enabled again when usb host goes to controller again due to autosuspend. - When there is no gadget enabled, the otg port is still at host mode with interrupt enabled, so when male Micro-B to female A-type cable with usb device plugs in, there will be PCD interrupt before hcd core leaves suspend mode. Signed-off-by: Peter Chen <peter.chen@freescale.com>
2012-03-07ENGR00176061-1 usb: otg: delete discharge vbus operation at otg driverPeter Chen
It may be useless at most of platforms, the user can enable discharge vbus if he/she wants speed up vbus lower speed during OTG switch. Besides, disable vbus interrupt during vbus change due to device <--> host mode switch. Signed-off-by: Peter Chen <peter.chen@freescale.com>
2012-03-07ENGR00175864 [MMC]pipeline mmc requestsTony Lin
the patch is based on a series of patches by Per Forlin the patch is sdhci host side implementation. using a toshiba SDHC3.0 card, the performance increases from 48.5MB/s to 52.4MB/s. cmd: dd if=/dev/mmcblk0 of=/dev/null bs=1M count=500 the performance results running@1GHz, 200MHz CPU freq are: 52.4MB/s -> 20.7MB/s Signed-off-by: Tony Lin <tony.lin@freescale.com>
2012-03-07ENGR00175446 ldb: avoid NULL pointer when ldb driver is probed but not inited.Wayne Zou
ldb: avoid NULL pointer when ldb driver is probed but not inited. It can lead to kernel crash when framebuffer on LVDS panel is not inited. Signed-off-by: Wayne Zou <b36644@freescale.com>
2012-03-06ENGR00176159 video: ipuv3-fb: change to timeout semaphore to wait on irq.Zhang Jiejing
change to timeout semaphore to wait on irq. use no timeout semaphore have below issues: 1. since fbmem.c will hold the console_lock() before call PAN_DISPLAY ioictl, if have wrong happens on IPU, IRQ not come, any log printk will not ouput, it will become like a system hang, and developer don't know what's wrong. 2. semaphore don't have timeout, here we can't know irq not come, so hang it infintly. 3. semaphore lock and unlock in different context is a dangous operation. To fix these issue, use timedout version to wait on irq. But for better coding stly to align Kernel Coding Style Doc, better use complete to wait on irq, use semaphre little ugly. Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
2012-03-02ENGR00175219-7 camera: use clko_clk sourceGary Zhang
change clock source to clko_clk from cko1_clk Signed-off-by: Gary Zhang <b13634@freescale.com>
2012-03-01ENGR00172084 MX6Q: Add 4 capture modes for ov5642Daiane Angolini
capture modes included: VGA(640x480)@15fps QVGA(320x240)@15fps NTSC(720x480)@15fps PAL(720x576)@15fps in order to test it: mxc_v4l2_capture.out -iw 640 -ih 480 -ow 640 -oh 480 -r 0 -fr 15 -m 0 test.yuv mxc_v4l2_capture.out -iw 320 -ih 240 -ow 320 -oh 240 -r 0 -fr 15 -m 1 test.yuv mxc_v4l2_capture.out -iw 720 -ih 480 -ow 720 -oh 480 -r 0 -fr 15 -m 2 test.yuv mxc_v4l2_capture.out -iw 720 -ih 480 -ow 720 -oh 576 -r 0 -fr 15 -m 3 test.yuv Signed-off-by: Daiane Angolini <daiane.angolini@freescale.com>
2012-03-01ENGR00175261 - EPDC fb: Remove warning messages from EPDC initDanny Nold
- Remove screen update from probe function. This update is redundant. The update in mxc_epdc_fb_fw_handler() will update and show the tux logo if FB console is added, so this achieves the same effect as the update invocation that was removed. - Remove dmaengine_get(), because SDMA driver returns a failure when cycling through DMA channels. Since it is not essential to register with this call, it has been removed. dmaengine_put() also removed. - Added hw_inialization variable to track whether HW is in process of being initialized. In which case, we do not print an error message when an update is received. Signed-off-by: Danny Nold <dannynold@freescale.com>
2012-03-01mmc: block: add handling for two parallel block requests in issue_rw_rqPer Forlin
Change mmc_blk_issue_rw_rq() to become asynchronous. The execution flow looks like this: * The mmc-queue calls issue_rw_rq(), which sends the request to the host and returns back to the mmc-queue. * The mmc-queue calls issue_rw_rq() again with a new request. * This new request is prepared in issue_rw_rq(), then it waits for the active request to complete before pushing it to the host. * When the mmc-queue is empty it will call issue_rw_rq() with a NULL req to finish off the active request without starting a new request. Signed-off-by: Per Forlin <per.forlin@linaro.org> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Venkatraman S <svenkatr@ti.com> Tested-by: Sourav Poddar <sourav.poddar@ti.com> Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
2012-03-01mmc: queue: add a second mmc queue request memberPer Forlin
Add an additional mmc queue request instance to make way for two active block requests. One request may be active while the other request is being prepared. Signed-off-by: Per Forlin <per.forlin@linaro.org> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Venkatraman S <svenkatr@ti.com> Tested-by: Sourav Poddar <sourav.poddar@ti.com> Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
2012-03-01mmc: block: move error path in issue_rw_rq to a separate function.Per Forlin
Break out code without functional changes. This simplifies the code and makes way for handling two parallel requests. Signed-off-by: Per Forlin <per.forlin@linaro.org> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Venkatraman S <svenkatr@ti.com> Tested-by: Sourav Poddar<sourav.poddar@ti.com> Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
2012-03-01mmc: block: add a block request prepare functionPer Forlin
Break out code from mmc_blk_issue_rw_rq to create a block request prepare function. This doesn't change any functionallity. This helps when handling more than one active block request. Signed-off-by: Per Forlin <per.forlin@linaro.org> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Venkatraman S <svenkatr@ti.com> Tested-by: Sourav Poddar <sourav.poddar@ti.com> Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
2012-03-01mmc: block: add member in mmc queue struct to hold request dataPer Forlin
The way the request data is organized in the mmc queue struct, it only allows processing of one request at a time. This patch adds a new struct to hold mmc queue request data such as sg list, request, blk request and bounce buffers, and updates any functions depending on the mmc queue struct. This prepares for using multiple active requests in one mmc queue. Signed-off-by: Per Forlin <per.forlin@linaro.org> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Venkatraman S <svenkatr@ti.com> Tested-by: Sourav Poddar <sourav.poddar@ti.com> Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
2012-03-01mmc: queue: let host controllers specify maximum discard timeoutAdrian Hunter
Some host controllers will not operate without a hardware timeout that is limited in value. However large discards require large timeouts, so there needs to be a way to specify the maximum discard size. A host controller driver may now specify the maximum discard timeout possible so that max_discard_sectors can be calculated. However, for eMMC when the High Capacity Erase Group Size is not in use, the timeout calculation depends on clock rate which may change. For that case Preferred Erase Size is used instead. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Chris Ball <cjb@laptop.org>
2012-03-01mmc: block: add checking of r/w command responseRussell King - ARM Linux
Check the status bits in the r/w command response for any errors. If error bits are set, then we won't have seen any data transferred, so it's pointless doing any further checking. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Linus Walleij <linus.walleij@linaro.org> Tested-by: Pawel Moll <pawel.moll@arm.com> Signed-off-by: Chris Ball <cjb@laptop.org>
2012-03-01mmc: block: improve error recovery from command channel errorsRussell King - ARM Linux
Command channel errors fall into four classes: 1. The command was issued with the card in the wrong state 2. The command failed to be received by the card correctly 3. The cards response failed to be received by the host (CRC error) 4. The card failed to respond to the card For (1), in theory we should know that the card is in the correct state. However, a failed stop command (or other failure) may result in the card remaining in a data transfer state from the previous command. If we detect this condition, we try to recover by sending a stop command. For the initial commands (set block count and the read/write command) no data will have been transferred. All that we need deal with is retrying at this point. A failed stop command can be remedied as above. If we are unable to recover the card (eg, the card ignores our requests for status, or we don't recognise the error code) then we immediately fail the request. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Linus Walleij <linus.walleij@linaro.org> Tested-by: Pawel Moll <pawel.moll@arm.com> Signed-off-by: Chris Ball <cjb@laptop.org>
2012-03-01mmc: block: allow get_card_status() to return error statusRussell King - ARM Linux
If the MMC_SEND_STATUS command is not successful, we should not return a zero status word, but instead allow the caller to know positively that an error occurred. Convert the open-coded get_card_status() to use the helper function, and provide definitions for the card state field. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Linus Walleij <linus.walleij@linaro.org> Tested-by: Pawel Moll <pawel.moll@arm.com> Signed-off-by: Chris Ball <cjb@laptop.org>
2012-03-01mmc: mmc_test: test to measure how sg_len affect performancePer Forlin
Add a test that measures how the mmc bandwidth depends on the numbers of sg elements in the sg list. The transfer size if fixed and sg length goes from a few up to 512. The purpose is to measure overhead caused by multiple sg elements. Signed-off-by: Per Forlin <per.forlin@linaro.org> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Venkatraman S <svenkatr@ti.com> Tested-by: Sourav Poddar <sourav.poddar@ti.com> Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
2012-03-01mmc: mmc_test: add test for non-blocking transfersPer Forlin
Add four tests for read and write performance per different transfer size, 4k to 4M. * Read using blocking mmc request * Read using non-blocking mmc request * Write using blocking mmc request * Write using non-blocking mmc request The host driver must support pre_req() and post_req() in order to run the non-blocking test cases. Signed-off-by: Per Forlin <per.forlin@linaro.org> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Venkatraman S <svenkatr@ti.com> Tested-by: Sourav Poddar<sourav.poddar@ti.com> Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>