summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2013-04-11kernel header missing during installation3.0-wandboard-ts1jean charles mammana
Some video application require the "usb/video.h" header. So here the patch to add it during the kernel header installation :
2013-03-29ENGR00239734 Mx6 HDMI PHY: Add 2 variable to pass board specific configSandor Yu
The PHY register 0x9 and 0xe should setting to different value in different board to pass HCT. Add variable phy_reg_vlev and phy_reg_cksymtx to pass phy config data. Signed-off-by: Sandor Yu <R01008@freescale.com> (cherry picked from commit 844aab72e7edcdced9f8e4e0d8e54eb4b0461cd9)
2013-01-02Add phy_noscan_mask to fec_platform_data.Tapani
Now it is possible to only scan the relevant phy adresses.
2012-12-31Add missing includes to fsl_devices.hTapani
2012-12-27merge with tag imx-android-13.5.0-gaTapani
2012-11-30Merge remote-tracking branch 'fsl-linux-sdk/imx_3.0.35_1.1.0' into ↵Xinyu Chen
imx_3.0.35_android Conflicts: arch/arm/mach-mx6/board-mx6q_sabrelite.c arch/arm/mach-mx6/board-mx6q_sabresd.c arch/arm/plat-mxc/cpufreq.c
2012-11-28ENGR00234781 input: add novatek touch screen driver.Zhang Jiejing
This patch add device drvier for novatek touch screen driver. This touch screen chip will be support because it have more populary screen size. Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
2012-11-15ENGR00233570-1 ASRC: Use hook to add support for ASRC loadableGe Lei
ASoC ESAI machine driver and pcm platform driver use the APIs from mxc_asrc.c, but once ASRC is used as a loadable module, these files can't find the APIs from this ko. In this patch, we use 'asrc_p2p_hook' to hook the APIs which will be used in ASoC ESAI machine driver and pcm platform driver. Signed-off-by: Ge Lei <b42127@freescale.com>
2012-11-14ENGR00233427 ASRC: add interface to modify ASRC input/output watermarkChen Liangjun
In this patch, add interface to modify ASRC input/output watermark. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-11-08Merge remote branch 'fsl-linux-sdk/imx_3.0.35' into imx_3.0.35_androidXinyu Chen
Conflicts: arch/arm/plat-mxc/dvfs_core.c drivers/input/keyboard/mpr121.c drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_driver.c include/linux/i2c/mpr.h sound/soc/imx/imx-wm8962.c
2012-11-06ENGR00231266-1: fsl_devices add csi_tx_addrAdrian Alonso
* Add csi_tx_addr, so it can override slave addr for adv7280 tvin decoder device Signed-off-by: Adrian Alonso <aalonso@freescale.com>
2012-11-06ENGR00231773-8 ASRC: prevent user app from processing input/output processingChen Liangjun
To finish a buffer convert in ASRC, user should 1. prepare input buffer, 2. prepare output buffer 3. wait for output buffer's completion 4.wait for input buffer's comletion. The flow make user application ugly. In this patch, pack steps above to 1 stop: ASRC_CONVERT. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-11-06ENGR00231773-5 ASRC: use poll mode to receive last period of ASRC dataChen Liangjun
ASRC driver use DMA to transfer data from ASRC output FIFO to memory. However, DMA way require the data number in ASRC output FIFO being larger than watermark level. Thus a dma request can trigger a DMA burst. For the last period of output data, its number is possiblely less than output FIFO watermark level. In this case, the output DMA would pending for the last period of output data until timeout. In this patch: 1 divide expected output data length into 2 parts: DMA part and poll part. Using DMA to get the DMA part data and poll mode to get the poll part. 2 to prevent user from processing these 2 parts above, kernel buffers would be untouchable. User application only need send its data buffer address to driver instead of query the kernel buffer. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-11-06ENGR00231773-4 ASRC: use scatter list and stall bit for asrc convertChen Liangjun
In the origin code, ASRC driver use cyclic way to process DMA task transfering data to/from ASRC input/output FIFO. In this case, it is necessary that user application should promise that the input buffer flow is continuous. If not, there would be 0 data be inserted into data flow. The output data would be noisy. In this patch, 1 use scatter list instead of cyclic SDMA: with scatter list, SDMA would stop when the applied scatter list nents are finished. 2 set stall bit for ASRC "memory->ASRC->memory" convert to stop ASRC convert when input data is not send into ASRC input FIFO in time. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-11-06ENGR00231773-3 ASRC: use kzalloc to allocate buffer to support scatterlistChen Liangjun
For ASRC's "memory -> ASRC -> memory" using, new driver would support model below: user input one buffer into ASRC and an corresponding output buffer would be poped out. There is no timing requirement between this input buffer and next input buffer. Thus driver would not use the cyclic way to config SDMA and scatterlist is used. buffer allocated by dma_alloc_coherent() can't support scatterlist well. In this patch, use kzalloc to allocate buffer to support scatterlist. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-11-06ENGR00231773-2 ASRC: add work struct for asrc output data receiveChen Liangjun
SDMA driver can't promise receive all output data generated. Cause when the data in output FIFO is less than ASRC output FIFO watermark, there would be no DMA request generated and thus no SDMA transfer would happens. In this patch, add work struct to support ASRC driver receive last part of data in OUTPUT FIFO in polling way. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-11-06ENGR00231773-1 ASRC: remove queue operation in ASRC driverChen Liangjun
According to ASRC memory->ASRC->memory requirement, driver should satisfy the feature below: user application would passed into one buffer and waiting until the output buffer is generated. In this case, only one buffer is on processing and it is no necessary to use the queue to do the convert. What is worse, queue operation would make the ASRC driver hard to understand and maintain. In this patch, remove the queue operation in ASRC driver. Signed-off-by: Chen Liangjun <b36089@freescale.com>
2012-10-31ENGR00230381 when unplug HDMI, the audio will be pending for a whileb02247
Revert "ENGR00224245 HDMI AUDIO: stop/start PCM while unplug,blank/plug,unblank" This reverts commit f8dd4f6fea093e46a30d5e438baa33702f626372. This patch is for pulse audio. which is not fit for Android. Signed-off-by: b02247 <b02247@freescale.com>
2012-10-24ENGR00230923 Revert " input: FSL MPR121 capacitive touch button."Zhang Jiejing
There was a mpr121_touchkey.c driver already upstream, the orignall driver by 2.6.35 kernel development should be removed to avoid duplicate. This reverts commit 3d6df22ad54a14bc8cebb7753c36f7b3cd811665. Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
2012-10-24ENGR00230371-01 Add HDMI resolution select featureLiGang
Kernel need to pass the panel type to android framework via node fsl_disp_dev_property. Signed-off-by: LiGang <b41990@freescale.com>
2012-10-18ENGR00229430 - Return New Frame IRQ timestamp from MXCFB_WAIT_FOR_VSYNCOliver Brown
The Vsync IRQ timestamp is needed to synchronize applications with the actual Vsync event time. Change the IOCTL from write to read. Signed-off-by: Oliver Brown <oliver.brown@freescale.com>
2012-10-18ENGR00230334-2: Port 3.0.35 linux kernel to iMX53 SMD for Jellybean bringup.Nitin Garg
Port 3.0.35 linux kernel to iMX53 SMD for Jellybean bringup. Signed-off-by: Nitin Garg <nitin.garg@freescale.com>
2012-10-15ENGR00223348 EPDC: Unable to enable DISPLAY regulatorJack Lee
In the maxim 17135 driver, the power good is confirmed by the power good GPIO polarity change when comparing the status at the beginning of driver probe and display regulator enabled. However, it is not reliable since the initial value of the GPIO is not constant. Normally, it is 1 but it can be 0 after system reset unexpectedly. Now, it is changed to POK bit checking in FAULT register. Signed-off-by: Jack Lee <jack.lee@freescale.com>
2012-10-15ENGR00223348 EPDC: Unable to enable DISPLAY regulatorJack Lee
In the maxim 17135 driver, the power good is confirmed by the power good GPIO polarity change when comparing the status at the beginning of driver probe and display regulator enabled. However, it is not reliable since the initial value of the GPIO is not constant. Normally, it is 1 but it can be 0 after system reset unexpectedly. Now, it is changed to POK bit checking in FAULT register. Signed-off-by: Jack Lee <jack.lee@freescale.com>
2012-10-15Merge commit 'rel_imx_3.0.35_12.10.02_RC1' intoJack Lee
imx_3.0.35_android_r13.5-beta Conflicts: arch/arm/include/asm/hardware/coresight.h arch/arm/kernel/etm.c arch/arm/mach-mx6/board-mx6q_sabresd.c arch/arm/mach-mx6/mx6_suspend.S arch/arm/mach-mx6/pm.c arch/arm/plat-mxc/cpufreq.c drivers/video/mxc/mxc_ipuv3_fb.c Signed-off-by: Jack Lee <jack.lee@freescale.com>
2012-10-09Merge remote branch 'fsl-linux-sdk/imx_3.0.35' into imx_3.0.35_androidXinyu Chen
Conflicts: arch/arm/configs/imx6s_updater_defconfig arch/arm/include/asm/hardware/coresight.h arch/arm/kernel/etm.c arch/arm/mach-mx6/board-mx6q_sabresd.c arch/arm/mach-mx6/cpu_op-mx6.c arch/arm/mach-mx6/mx6_suspend.S arch/arm/mach-mx6/pm.c arch/arm/mach-mx6/system.c arch/arm/plat-mxc/cpufreq.c drivers/mfd/mxc-hdmi-core.c drivers/power/sabresd_battery.c drivers/video/mxc/mxc_ipuv3_fb.c drivers/video/mxc_hdmi.c include/linux/mfd/mxc-hdmi-core.h
2012-09-29ENGR00225960-02 FB: Support sii902x HDMI driver in ELCDIF FBSandor Yu
- Added mxcfb_elcdif_register_mode function. - Create video mode list, and check default video mode with video mode list before setting. - Adjust elcdif pixel clock setting, reconfig elcdif pixel parent clock video pll, get more accurate pixel clock according video mode. - Added video mode dump function for debug Signed-off-by: Sandor Yu <R01008@freescale.com>
2012-09-29ENGR00225960-02 FB: Support sii902x HDMI driver in ELCDIF FBSandor Yu
- Added mxcfb_elcdif_register_mode function. - Create video mode list, and check default video mode with video mode list before setting. - Adjust elcdif pixel clock setting, reconfig elcdif pixel parent clock video pll, get more accurate pixel clock according video mode. - Added video mode dump function for debug Signed-off-by: Sandor Yu <R01008@freescale.com>
2012-09-29Merge branch 'jb' into imx_3.0.35_androidXinyu Chen
Conflicts: drivers/cpufreq/cpufreq_interactive.c fs/proc/base.c
2012-09-25ENGR00225131-03 MX6 USB: add platform_phy_power_on platform data in head filemake shi
IC designer had clarified that 1P1 can be turned off if we do not need support remote wakeup. So If there is no requirement for USB remote wake up, the 1P1 can be turn off. USB driver will support dynamically turn on(off) 1P1 during system suspend. 1P1 will be turn on depend on USB wakeup is enabled. add platform_1p1_on platform data in head file. Signed-off-by: make shi <b15407@freescale.com>
2012-09-19ENGR00221594 Add Dithering algorism support into EPDC driverDaiyu Ko
Adding Atkinson's dithering alorism implementation into our EPDC Driver with Y8->Y1 and Y8->Y4 supported. Two EPDC flags have been added to support the features. EPDC_FLAG_USE_DITHERING_Y1 and EPDC_FLAG_USE_DITHERING_Y4. Signed-off-by: Daiyu Ko <dko@freescale.com>
2012-09-14ENGR00224245 HDMI AUDIO: stop/start PCM while unplug,blank/plug, unblankChen 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-12ENGR00223679-2 battery: Add battery driver support for mx6sl_evkRong Dian
Add battery driver support for mx6sl_evk. Signed-off-by: Rong Dian <b38775@freescale.com>
2012-09-07mtd: nand: add 'oob_required' argument to NAND {read,write}_page interfacesHuang Shijie
New NAND controllers can perform read/write via HW engines which don't expose OOB data in their DMA mode. To reflect this, we should rework the nand_chip / nand_ecc_ctrl interfaces that assume that drivers will always read/write OOB data in the nand_chip.oob_poi buffer. A better interface includes a boolean argument that explicitly tells the callee when OOB data is requested by the calling layer (for reading/writing to/from nand_chip.oob_poi). This patch adds the 'oob_required' parameter to each relevant {read,write}_page interface; all 'oob_required' parameters are left unused for now. The next patch will set the parameter properly in the nand_base.c callers, and follow-up patches will make use of 'oob_required' in some of the callee functions. Note that currently, there is no harm in ignoring the 'oob_required' parameter and *always* utilizing nand_chip.oob_poi, but there can be performance/complexity/design benefits from avoiding filling oob_poi in the common case. I will try to implement this for some drivers which can be ported easily. Note: I couldn't compile-test all of these easily, as some had ARCH dependencies. [Huang Shijie: I remove the unused code for the other drivers.] [dwmw2: Merge later 1/0 vs. true/false cleanup] Signed-off-by: Brian Norris <computersforpeace@gmail.com> Reviewed-by: Shmulik Ladkani <shmulik.ladkani@gmail.com> Acked-by: Jiandong Zheng <jdzheng@broadcom.com> Acked-by: Mike Dunn <mikedunn@newsguy.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>
2012-09-05Merge commit 'rel_imx_3.0.35_12.09.02_RC1' into imx_3.0.35_android_r13.5-betaJack Lee
Conflicts: arch/arm/mach-mx6/board-mx6q_sabresd.c arch/arm/mach-mx6/board-mx6sl_arm2.c arch/arm/mach-mx6/bus_freq.c arch/arm/mach-mx6/cpu_op-mx6.c arch/arm/plat-mxc/cpufreq.c Signed-off-by: Jack Lee <jacklee@freescale.com>
2012-08-30Merge remote branch 'fsl-linux-sdk/imx_3.0.35_12.09.01' into imx_3.0.35_androidXinyu Chen
Conflicts: arch/arm/mach-mx6/board-mx6q_sabresd.c arch/arm/mach-mx6/board-mx6sl_arm2.c arch/arm/mach-mx6/bus_freq.c arch/arm/mach-mx6/cpu_op-mx6.c arch/arm/plat-mxc/cpufreq.c
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-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-24cfg80211: allow registering to beaconsJohannes Berg
Add the ability to register to received beacon frames to allow implementing OLBC logic in userspace. The registration is per wiphy since there's no point in receiving the same frame multiple times. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-08-24nl80211: add API to probe a clientJohannes Berg
When the AP SME in hostapd is used it wants to probe the clients when they have been idle for some time. Add explicit API to support this. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-08-24nl80211: allow subscribing to unexpected class3 framesJohannes Berg
To implement AP mode without monitor interfaces we need to be able to send a deauth to stations that send frames without being associated. Enable this by adding a new nl80211 event for such frames that an application can subscribe to. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-08-24nl80211: advertise device AP SMEJohannes Berg
Add the ability to advertise that the device contains the AP SME and what features it can support. There are currently no features in the bitmap -- probe response offload will be advertised by a few patches Arik is working on now (who took over from Guy Eilam) and a device with AP SME will typically implement and require response offload. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Conflicts: drivers/net/wireless/ath/ath6kl/init.c Change-Id: Ib1a65814860cf97cadd142c17be0e91f43743832
2012-08-24nl80211: advertise GTK rekey support, new triggersJohannes Berg
Since we now have the necessary API in place to support GTK rekeying, applications will need to know whether it is supported by a device. Add a pseudo-trigger that is used only to advertise that capability. Also, add some new triggers that match what iwlagn devices can do. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-08-24nl80211: support sending TDLS commands/framesArik Nemtsov
Add support for sending high-level TDLS commands and TDLS frames via NL80211_CMD_TDLS_OPER and NL80211_CMD_TDLS_MGMT, respectively. Add appropriate cfg80211 callbacks for lower level drivers. Add wiphy capability flags for TDLS support and advertise them via nl80211. Signed-off-by: Arik Nemtsov <arik@wizery.com> Cc: Kalyan C Gaddam <chakkal@iit.edu> Signed-off-by: John W. Linville <linville@tuxdriver.com> Conflicts: include/linux/nl80211.h include/net/cfg80211.h net/wireless/nl80211.c Change-Id: I08e4de6e92680aed35b98838aa999d31963b6d50
2012-08-24cfg80211/nl80211: Add PMKSA caching candidate eventJouni Malinen
When the driver (or most likely firmware) decides which AP to use for roaming based on internal scan result processing, user space needs to be notified of PMKSA caching candidates to allow RSN pre-authentication to be used. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Conflicts: include/linux/nl80211.h Change-Id: I31aa113747b75f5f35658b857fdfe8d9a75e4534
2012-08-24cfg80211/nl80211: support GTK rekey offloadJohannes Berg
In certain circumstances, like WoWLAN scenarios, devices may implement (partial) GTK rekeying on the device to avoid waking up the host for it. In order to successfully go through GTK rekeying, the KEK, KCK and the replay counter are required. Add API to let the supplicant hand the parameters to the driver which may store it for future GTK rekey operations. Note that, of course, if GTK rekeying is done by the device, the EAP frame must not be passed up to userspace, instead a rekey event needs to be sent to let userspace update its replay counter. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Conflicts: include/linux/nl80211.h net/wireless/nl80211.c Change-Id: Icd3a157742b08c01a3be20d46d4112e5d4b93a58
2012-08-23ENGR00219601-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-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-17ENGR00219910 IPUv3 fb: add vsync event report to user space.Zhang Jiejing
add vsync uevent report for user space. add a IOCTL to enable/disable vsync uevent report to user space. VSYNC uevent can let user space start draw just receive VSYNC irq, and keep the draw within 16.7 ms that make the draw will show in this frame, enhance the draw speed after receive input event. Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
2012-08-16HID: uhid: implement feature requestsDavid Herrmann
HID standard allows sending a feature request to the device which is answered by an HID report. uhid implements this by sending a UHID_FEATURE event to user-space which then must answer with UHID_FEATURE_ANSWER. If it doesn't do this in a timely manner, the request is discarded silently. We serialize the feature requests, that is, there is always only a single active feature-request sent to user-space, other requests have to wait. HIDP and USB-HID do it the same way. Because we discard feature-requests silently, we must make sure to match a response to the corresponding request. We use sequence-IDs for this so user-space must copy the ID from the request into the answer. Feature-answers are ignored if they do not contain the same ID as the currently pending feature request. Internally, we must make sure that feature-requests are synchronized with UHID_DESTROY and close() events. We must not dead-lock when closing the HID device, either, so we have to use separate locks. Signed-off-by: David Herrmann <dh.herrmann@googlemail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>