]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge tag 'staging-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 18 Mar 2016 05:13:41 +0000 (22:13 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 18 Mar 2016 05:13:41 +0000 (22:13 -0700)
Pull staging driver updates from Greg KH:
 "Here is the big staging driver pull request for 4.6-rc1.

  Lots of little things here, over 1600 patches or so.  Notable is all
  of the good Lustre work happening, those developers have finally woken
  up and are cleaning up their code greatly.  The Outreachy intern
  application process is also happening, which brought in another 400 or
  so patches.  Full details are in the very long shortlog.

  All of these have been in linux-next with no reported issues"

* tag 'staging-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (1673 commits)
  staging: lustre: fix aligments in lnet selftest
  staging: lustre: report minimum of two buffers for LNet selftest load test
  staging: lustre: test for proper errno code in lstcon_rpc_trans_abort
  staging: lustre: filter remaining extra spacing for lnet selftest
  staging: lustre: remove extra spacing when setting variable for lnet selftest
  staging: lustre: remove extra spacing of variable declartions for lnet selftest
  staging: lustre: fix spacing issues checkpatch reported in lnet selftest
  staging: lustre: remove returns in void function for lnet selftest
  staging: lustre: fix bogus lst errors for lnet selftest
  staging: netlogic: Replacing pr_err with dev_err after the call to devm_kzalloc
  staging: mt29f_spinand: Replacing pr_info with dev_info after the call to devm_kzalloc
  staging: android: ion: fix up file mode
  staging: ion: debugfs invalid gfp mask
  staging: rts5208: Replace pci_enable_device with pcim_enable_device
  Staging: ieee80211: Place constant on right side of the test.
  staging: speakup: Replace del_timer with del_timer_sync
  staging: lowmemorykiller: fix 2 checks that checkpatch complained
  staging: mt29f_spinand: Drop void pointer cast
  staging: rdma: hfi1: file_ops: Replace ALIGN with PAGE_ALIGN
  staging: rdma: hfi1: driver: Replace IS_ALIGNED with PAGE_ALIGNED
  ...

1  2 
Documentation/devicetree/bindings/vendor-prefixes.txt
MAINTAINERS
drivers/staging/dgnc/dgnc_tty.c
drivers/staging/lustre/lnet/libcfs/linux/linux-crypto.c
drivers/staging/media/davinci_vpfe/vpfe_video.c
drivers/staging/media/omap4iss/iss.c
drivers/staging/rtl8192e/rtllib_crypt_tkip.c
drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_wep.c
include/linux/irqdomain.h

index bd33a268fd1bfca9e24184a0ce3ad946d1f19d46,44ddc980b085a7119c33f6061c345dba3eb57d81..ee66defcdd8b74d7cdaa581ac6ad94f79ace1c09
@@@ -28,6 -28,7 +28,7 @@@ arm   ARM Ltd
  armadeus      ARMadeus Systems SARL
  artesyn       Artesyn Embedded Technologies Inc.
  asahi-kasei   Asahi Kasei Corp.
+ atlas Atlas Scientific LLC
  atmel Atmel Corporation
  auo   AU Optronics Corporation
  avago Avago Technologies
@@@ -120,7 -121,6 +121,7 @@@ intercontrol       Inter Control Grou
  invensense    InvenSense Inc.
  isee  ISEE 2007 S.L.
  isil  Intersil
 +issi  Integrated Silicon Solutions Inc.
  jedec JEDEC Solid State Technology Association
  karo  Ka-Ro electronics GmbH
  keymile       Keymile GmbH
@@@ -171,7 -171,6 +172,7 @@@ opencores  OpenCores.or
  option        Option NV
  ortustech     Ortus Technology Co., Ltd.
  ovti  OmniVision Technologies
 +ORCL  Oracle Corporation
  panasonic     Panasonic Corporation
  parade        Parade Technologies Inc.
  pericom       Pericom Technology Inc.
@@@ -206,7 -205,6 +207,7 @@@ seagate    Seagate Technology PL
  semtech       Semtech Corporation
  sgx   SGX Sensortech
  sharp Sharp Corporation
 +si-en Si-En Technology Ltd.
  sigma Sigma Designs, Inc.
  sil   Silicon Image
  silabs        Silicon Laboratories
@@@ -229,9 -227,7 +230,9 @@@ st STMicroelectronic
  startek       Startek
  ste   ST-Ericsson
  stericsson    ST-Ericsson
 +syna  Synaptics Inc.
  synology      Synology, Inc.
 +SUNW  Sun Microsystems, Inc
  tbs   TBS Technologies
  tcl   Toby Churchill Ltd.
  technologic   Technologic Systems
diff --combined MAINTAINERS
index 145289e3eb7a9384275d9dd9d02cd7196fcfb937,dd9ee367d05c647aecda8c92a12833238be9654f..15b4c417211ffcb00d48fb04fa1ff28324f86c75
@@@ -238,12 -238,6 +238,12 @@@ L:       lm-sensors@lm-sensors.or
  S:    Maintained
  F:    drivers/hwmon/abituguru3.c
  
 +ACCES 104-DIO-48E GPIO DRIVER
 +M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-104-dio-48e.c
 +
  ACCES 104-IDI-48 GPIO DRIVER
  M:    "William Breathitt Gray" <vilhelm.gray@gmail.com>
  L:    linux-gpio@vger.kernel.org
@@@ -775,6 -769,12 +775,12 @@@ L:       alsa-devel@alsa-project.org (moderat
  S:    Maintained
  F:    sound/aoa/
  
+ APEX EMBEDDED SYSTEMS STX104 DAC DRIVER
+ M:    William Breathitt Gray <vilhelm.gray@gmail.com>
+ L:    linux-iio@vger.kernel.org
+ S:    Maintained
+ F:    drivers/iio/dac/stx104.c
  APM DRIVER
  M:    Jiri Kosina <jikos@kernel.org>
  S:    Odd fixes
@@@ -1962,6 -1962,12 +1968,12 @@@ M:    Nicolas Ferre <nicolas.ferre@atmel.c
  S:    Supported
  F:    drivers/tty/serial/atmel_serial.c
  
+ ATMEL SAMA5D2 ADC DRIVER
+ M:    Ludovic Desroches <ludovic.desroches@atmel.com>
+ L:    linux-iio@vger.kernel.org
+ S:    Supported
+ F:    drivers/iio/adc/at91-sama5d2_adc.c
  ATMEL Audio ALSA driver
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -2428,7 -2434,6 +2440,7 @@@ F:      arch/mips/bmips/
  F:    arch/mips/include/asm/mach-bmips/*
  F:    arch/mips/kernel/*bmips*
  F:    arch/mips/boot/dts/brcm/bcm*.dts*
 +F:    drivers/irqchip/irq-bcm63*
  F:    drivers/irqchip/irq-bcm7*
  F:    drivers/irqchip/irq-brcmstb*
  F:    include/linux/bcm963xx_nvram.h
@@@ -3548,13 -3553,6 +3560,6 @@@ L:     driverdev-devel@linuxdriverproject.o
  S:    Maintained
  F:    drivers/staging/dgnc/
  
- DIGI EPCA PCI PRODUCTS
- M:    Lidza Louina <lidza.louina@gmail.com>
- M:    Daeseok Youn <daeseok.youn@gmail.com>
- L:    driverdev-devel@linuxdriverproject.org
- S:    Maintained
- F:    drivers/staging/dgap/
  DIOLAN U2C-12 I2C DRIVER
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-i2c@vger.kernel.org
@@@ -4525,12 -4523,6 +4530,12 @@@ L:    linuxppc-dev@lists.ozlabs.or
  S:    Maintained
  F:    drivers/dma/fsldma.*
  
 +FREESCALE GPMI NAND DRIVER
 +M:    Han Xu <han.xu@nxp.com>
 +L:    linux-mtd@lists.infradead.org
 +S:    Maintained
 +F:    drivers/mtd/nand/gpmi-nand/*
 +
  FREESCALE I2C CPM DRIVER
  M:    Jochen Friedrich <jochen@scram.de>
  L:    linuxppc-dev@lists.ozlabs.org
@@@ -4547,7 -4539,7 +4552,7 @@@ F:      include/linux/platform_data/video-im
  F:    drivers/video/fbdev/imxfb.c
  
  FREESCALE QUAD SPI DRIVER
 -M:    Han Xu <han.xu@freescale.com>
 +M:    Han Xu <han.xu@nxp.com>
  L:    linux-mtd@lists.infradead.org
  S:    Maintained
  F:    drivers/mtd/spi-nor/fsl-quadspi.c
@@@ -4561,15 -4553,6 +4566,15 @@@ S:    Maintaine
  F:    drivers/net/ethernet/freescale/fs_enet/
  F:    include/linux/fs_enet_pd.h
  
 +FREESCALE IMX / MXC FEC DRIVER
 +M:    Fugang Duan <fugang.duan@nxp.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ethernet/freescale/fec_main.c
 +F:    drivers/net/ethernet/freescale/fec_ptp.c
 +F:    drivers/net/ethernet/freescale/fec.h
 +F:    Documentation/devicetree/bindings/net/fsl-fec.txt
 +
  FREESCALE QUICC ENGINE LIBRARY
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Orphan
@@@ -4833,14 -4816,10 +4838,14 @@@ L:   linux-gpio@vger.kernel.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git
  S:    Maintained
  F:    Documentation/gpio/
 +F:    Documentation/ABI/testing/gpio-cdev
 +F:    Documentation/ABI/obsolete/sysfs-gpio
  F:    drivers/gpio/
  F:    include/linux/gpio/
  F:    include/linux/gpio.h
  F:    include/asm-generic/gpio.h
 +F:    include/uapi/linux/gpio.h
 +F:    tools/gpio/
  
  GRE DEMULTIPLEXER DRIVER
  M:    Dmitry Kozlov <xeb@mail.ru>
@@@ -4989,7 -4968,6 +4994,7 @@@ F:      include/linux/hw_random.
  
  HARDWARE SPINLOCK CORE
  M:    Ohad Ben-Cohen <ohad@wizery.com>
 +M:    Bjorn Andersson <bjorn.andersson@linaro.org>
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ohad/hwspinlock.git
  F:    Documentation/hwspinlock.txt
@@@ -5018,9 -4996,9 +5023,9 @@@ F:      Documentation/blockdev/cpqarray.tx
  F:    drivers/block/cpqarray.*
  
  HEWLETT-PACKARD SMART ARRAY RAID DRIVER (hpsa)
 -M:    Don Brace <don.brace@pmcs.com>
 +M:    Don Brace <don.brace@microsemi.com>
  L:    iss_storagedev@hp.com
 -L:    storagedev@pmcs.com
 +L:    esc.storagedev@microsemi.com
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    Documentation/scsi/hpsa.txt
@@@ -5216,7 -5194,6 +5221,7 @@@ F:      arch/x86/kernel/cpu/mshyperv.
  F:    drivers/hid/hid-hyperv.c
  F:    drivers/hv/
  F:    drivers/input/serio/hyperv-keyboard.c
 +F:    drivers/pci/host/pci-hyperv.c
  F:    drivers/net/hyperv/
  F:    drivers/scsi/storvsc_drv.c
  F:    drivers/video/fbdev/hyperv_fb.c
@@@ -5581,7 -5558,6 +5586,7 @@@ F:      drivers/input
  F:    include/linux/input.h
  F:    include/uapi/linux/input.h
  F:    include/linux/input/
 +F:    Documentation/devicetree/bindings/input/
  
  INPUT MULTITOUCH (MT) PROTOCOL
  M:    Henrik Rydberg <rydberg@bitmath.org>
@@@ -6079,7 -6055,7 +6084,7 @@@ S:      Maintaine
  F:    drivers/media/platform/rcar_jpu.c
  
  JSM Neo PCI based serial card
 -M:    Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
 +M:    Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
  L:    linux-serial@vger.kernel.org
  S:    Maintained
  F:    drivers/tty/serial/jsm/
@@@ -6597,10 -6573,9 +6602,10 @@@ F:    drivers/platform/x86/hp_accel.
  
  LIVE PATCHING
  M:    Josh Poimboeuf <jpoimboe@redhat.com>
 -M:    Seth Jennings <sjenning@redhat.com>
 +M:    Jessica Yu <jeyu@redhat.com>
  M:    Jiri Kosina <jikos@kernel.org>
 -M:    Vojtech Pavlik <vojtech@suse.com>
 +M:    Miroslav Benes <mbenes@suse.cz>
 +R:    Petr Mladek <pmladek@suse.com>
  S:    Maintained
  F:    kernel/livepatch/
  F:    include/linux/livepatch.h
@@@ -6611,11 -6586,6 +6616,11 @@@ F:    samples/livepatch
  L:    live-patching@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching.git
  
 +LINUX KERNEL DUMP TEST MODULE (LKDTM)
 +M:    Kees Cook <keescook@chromium.org>
 +S:    Maintained
 +F:    drivers/misc/lkdtm.c
 +
  LLC (802.2)
  M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
  S:    Maintained
@@@ -6701,12 -6671,13 +6706,12 @@@ S:   Maintaine
  F:    arch/arm/mach-lpc32xx/
  
  LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
 -M:    Nagalakshmi Nandigama <nagalakshmi.nandigama@avagotech.com>
 -M:    Praveen Krishnamoorthy <praveen.krishnamoorthy@avagotech.com>
 -M:    Sreekanth Reddy <sreekanth.reddy@avagotech.com>
 -M:    Abhijit Mahajan <abhijit.mahajan@avagotech.com>
 -L:    MPT-FusionLinux.pdl@avagotech.com
 +M:    Sathya Prakash <sathya.prakash@broadcom.com>
 +M:    Chaitra P B <chaitra.basappa@broadcom.com>
 +M:    Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
 +L:    MPT-FusionLinux.pdl@broadcom.com
  L:    linux-scsi@vger.kernel.org
 -W:    http://www.lsilogic.com/support
 +W:    http://www.avagotech.com/support/
  S:    Supported
  F:    drivers/message/fusion/
  F:    drivers/scsi/mpt2sas/
@@@ -6799,7 -6770,6 +6804,7 @@@ S:      Maintaine
  F:    Documentation/networking/mac80211-injection.txt
  F:    include/net/mac80211.h
  F:    net/mac80211/
 +F:    drivers/net/wireless/mac80211_hwsim.[ch]
  
  MACVLAN DRIVER
  M:    Patrick McHardy <kaber@trash.net>
@@@ -6929,7 -6899,7 +6934,7 @@@ MAXIM MAX77802 MULTIFUNCTION PMIC DEVIC
  M:    Javier Martinez Canillas <javier@osg.samsung.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
 -F:    drivers/*/*max77802.c
 +F:    drivers/*/*max77802*.c
  F:    Documentation/devicetree/bindings/*/*max77802.txt
  F:    include/dt-bindings/*/*max77802.h
  
@@@ -6939,7 -6909,7 +6944,7 @@@ M:      Krzysztof Kozlowski <k.kozlowski@sam
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  F:    drivers/*/max14577.c
 -F:    drivers/*/max77686.c
 +F:    drivers/*/max77686*.c
  F:    drivers/*/max77693.c
  F:    drivers/extcon/extcon-max14577.c
  F:    drivers/extcon/extcon-max77693.c
@@@ -7255,8 -7225,10 +7260,8 @@@ L:     linux-media@vger.kernel.or
  W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 -T:    git git://linuxtv.org/anttip/media_tree.git
  S:    Maintained
 -F:    drivers/staging/media/mn88473/
 -F:    drivers/media/dvb-frontends/mn88473.h
 +F:    drivers/media/dvb-frontends/mn88473*
  
  MODULE SUPPORT
  M:    Rusty Russell <rusty@rustcorp.com.au>
@@@ -7417,17 -7389,6 +7422,17 @@@ W:    https://www.myricom.com/support/down
  S:    Supported
  F:    drivers/net/ethernet/myricom/myri10ge/
  
 +NAND FLASH SUBSYSTEM
 +M:    Boris Brezillon <boris.brezillon@free-electrons.com>
 +R:    Richard Weinberger <richard@nod.at>
 +L:    linux-mtd@lists.infradead.org
 +W:    http://www.linux-mtd.infradead.org/
 +Q:    http://patchwork.ozlabs.org/project/linux-mtd/list/
 +T:    git git://github.com/linux-nand/linux.git
 +S:    Maintained
 +F:    drivers/mtd/nand/
 +F:    include/linux/mtd/nand*.h
 +
  NATSEMI ETHERNET DRIVER (DP8381x)
  S:    Orphan
  F:    drivers/net/ethernet/natsemi/natsemi.c
@@@ -8202,6 -8163,13 +8207,13 @@@ S:    Maintaine
  F:    Documentation/mn10300/
  F:    arch/mn10300/
  
+ PARALLEL LCD/KEYPAD PANEL DRIVER
+ M:      Willy Tarreau <willy@haproxy.com>
+ M:      Ksenija Stanojevic <ksenija.stanojevic@gmail.com>
+ S:      Odd Fixes
+ F:      Documentation/misc-devices/lcd-panel-cgram.txt
+ F:      drivers/misc/panel.c
  PARALLEL PORT SUBSYSTEM
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  M:    Sudip Mukherjee <sudip@vectorindia.org>
@@@ -8400,20 -8368,12 +8412,20 @@@ L:   linux-pci@vger.kernel.or
  S:    Maintained
  F:    drivers/pci/host/*designware*
  
 +PCI DRIVER FOR SYNOPSYS PROTOTYPING DEVICE
 +M:    Joao Pinto <jpinto@synopsys.com>
 +L:    linux-pci@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pci/designware-pcie.txt
 +F:    drivers/pci/host/pcie-designware-plat.c
 +
  PCI DRIVER FOR GENERIC OF HOSTS
  M:    Will Deacon <will.deacon@arm.com>
  L:    linux-pci@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/host-generic-pci.txt
 +F:    drivers/pci/host/pci-host-common.c
  F:    drivers/pci/host/pci-host-generic.c
  
  PCI DRIVER FOR INTEL VOLUME MANAGEMENT DEVICE (VMD)
@@@ -8459,14 -8419,6 +8471,14 @@@ L:     linux-arm-msm@vger.kernel.or
  S:     Maintained
  F:     drivers/pci/host/*qcom*
  
 +PCIE DRIVER FOR CAVIUM THUNDERX
 +M:    David Daney <david.daney@cavium.com>
 +L:    linux-pci@vger.kernel.org
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Supported
 +F:    Documentation/devicetree/bindings/pci/pci-thunder-*
 +F:    drivers/pci/host/pci-thunder-*
 +
  PCMCIA SUBSYSTEM
  P:    Linux PCMCIA Team
  L:    linux-pcmcia@lists.infradead.org
@@@ -8509,7 -8461,6 +8521,7 @@@ PERFORMANCE EVENTS SUBSYSTE
  M:    Peter Zijlstra <peterz@infradead.org>
  M:    Ingo Molnar <mingo@redhat.com>
  M:    Arnaldo Carvalho de Melo <acme@kernel.org>
 +R:    Alexander Shishkin <alexander.shishkin@linux.intel.com>
  L:    linux-kernel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core
  S:    Supported
@@@ -9188,7 -9139,6 +9200,7 @@@ F:      include/linux/regmap.
  
  REMOTE PROCESSOR (REMOTEPROC) SUBSYSTEM
  M:    Ohad Ben-Cohen <ohad@wizery.com>
 +M:    Bjorn Andersson <bjorn.andersson@linaro.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ohad/remoteproc.git
  S:    Maintained
  F:    drivers/remoteproc/
@@@ -9197,7 -9147,6 +9209,7 @@@ F:      include/linux/remoteproc.
  
  REMOTE PROCESSOR MESSAGING (RPMSG) SUBSYSTEM
  M:    Ohad Ben-Cohen <ohad@wizery.com>
 +M:    Bjorn Andersson <bjorn.andersson@linaro.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ohad/rpmsg.git
  S:    Maintained
  F:    drivers/rpmsg/
@@@ -9709,7 -9658,7 +9721,7 @@@ F:      drivers/scsi/sg.
  F:    include/scsi/sg.h
  
  SCSI SUBSYSTEM
 -M:    "James E.J. Bottomley" <JBottomley@odin.com>
 +M:    "James E.J. Bottomley" <jejb@linux.vnet.ibm.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git
  M:    "Martin K. Petersen" <martin.petersen@oracle.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git
@@@ -10455,19 -10404,6 +10467,6 @@@ L:  linux-tegra@vger.kernel.or
  S:    Maintained
  F:    drivers/staging/nvec/
  
- STAGING - OLPC SECONDARY DISPLAY CONTROLLER (DCON)
- M:    Jens Frederich <jfrederich@gmail.com>
- M:    Daniel Drake <dsd@laptop.org>
- M:    Jon Nettleton <jon.nettleton@gmail.com>
- W:    http://wiki.laptop.org/go/DCON
- S:    Maintained
- F:    drivers/staging/olpc_dcon/
- STAGING - PARALLEL LCD/KEYPAD PANEL DRIVER
- M:    Willy Tarreau <willy@meta-x.org>
- S:    Odd Fixes
- F:    drivers/staging/panel/
  STAGING - REALTEK RTL8712U DRIVERS
  M:    Larry Finger <Larry.Finger@lwfinger.net>
  M:    Florian Schilhabel <florian.c.schilhabel@googlemail.com>.
@@@ -10916,14 -10852,6 +10915,14 @@@ L: linux-omap@vger.kernel.or
  S:    Maintained
  F:    drivers/thermal/ti-soc-thermal/
  
 +TI VPE/CAL DRIVERS
 +M:    Benoit Parrot <bparrot@ti.com>
 +L:    linux-media@vger.kernel.org
 +W:    http://linuxtv.org/
 +Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 +S:    Maintained
 +F:    drivers/media/platform/ti-vpe/
 +
  TI CDCE706 CLOCK DRIVER
  M:    Max Filippov <jcmvbkbc@gmail.com>
  S:    Maintained
@@@ -11147,8 -11075,8 +11146,8 @@@ M:   Jarkko Sakkinen <jarkko.sakkinen@lin
  R:    Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
  W:    http://tpmdd.sourceforge.net
  L:    tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers)
 -Q:    git git://github.com/PeterHuewe/linux-tpmdd.git
 -T:    git https://github.com/PeterHuewe/linux-tpmdd
 +Q:    https://patchwork.kernel.org/project/tpmdd-devel/list/
 +T:    git git://git.infradead.org/users/jjs/linux-tpmdd.git
  S:    Maintained
  F:    drivers/char/tpm/
  
@@@ -11328,7 -11256,7 +11327,7 @@@ F:   include/linux/mtd/ubi.
  F:    include/uapi/mtd/ubi-user.h
  
  USB ACM DRIVER
 -M:    Oliver Neukum <oliver@neukum.org>
 +M:    Oliver Neukum <oneukum@suse.com>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
  F:    Documentation/usb/acm.txt
@@@ -11452,7 -11380,6 +11451,7 @@@ M:   Valentina Manea <valentina.manea.m@g
  M:    Shuah Khan <shuah.kh@samsung.com>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
 +F:    Documentation/usb/usbip_protocol.txt
  F:    drivers/usb/usbip/
  F:    tools/usb/usbip/
  
@@@ -11943,12 -11870,6 +11942,12 @@@ M: David Härdeman <david@hardeman.nu
  S:    Maintained
  F:    drivers/media/rc/winbond-cir.c
  
 +WINSYSTEMS WS16C48 GPIO DRIVER
 +M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-ws16c48.c
 +
  WIMAX STACK
  M:    Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
  M:    linux-wimax@intel.com
index 8b1ba65a6984673dd092c2f3fa08673639e8df2c,f33c3b5b050dacfac8782014c33c1dd495f02b00..bcd2bdfb9c8f60fbb868044ce1cc61e70174a369
@@@ -443,15 -443,13 +443,13 @@@ void dgnc_tty_uninit(struct dgnc_board 
        brd->PrintDriver.termios = NULL;
  }
  
- /*=======================================================================
-  *
+ /*
   *    dgnc_wmove - Write data to transmit queue.
   *
   *            ch      - Pointer to channel structure.
   *            buf     - Pointer to characters to be moved.
   *            n       - Number of characters to move.
-  *
-  *=======================================================================*/
+  */
  static void dgnc_wmove(struct channel_t *ch, char *buf, uint n)
  {
        int     remain;
        ch->ch_w_head = head;
  }
  
- /*=======================================================================
-  *
+ /*
   *      dgnc_input - Process received data.
   *
   *          ch      - Pointer to channel structure.
-  *
-  *=======================================================================*/
+  */
  void dgnc_input(struct channel_t *ch)
  {
        struct dgnc_board *bd;
         */
        if (!tp || (tp->magic != TTY_MAGIC) ||
            !(ch->ch_tun.un_flags & UN_ISOPEN) ||
 -          !(tp->termios.c_cflag & CREAD) ||
 +          !C_CREAD(tp) ||
            (ch->ch_tun.un_flags & UN_CLOSING)) {
                ch->ch_r_head = tail;
  
@@@ -796,7 -792,7 +792,7 @@@ static void dgnc_set_custom_speed(struc
         *  And of course, rates above the dividend won't fly.
         */
        if (newrate && newrate < ((ch->ch_bd->bd_dividend / 0xFFFF) + 1))
-               newrate = ((ch->ch_bd->bd_dividend / 0xFFFF) + 1);
+               newrate = (ch->ch_bd->bd_dividend / 0xFFFF) + 1;
  
        if (newrate && newrate > ch->ch_bd->bd_dividend)
                newrate = ch->ch_bd->bd_dividend;
@@@ -933,7 -929,14 +929,7 @@@ void dgnc_wakeup_writes(struct channel_
        }
  
        if (ch->ch_tun.un_flags & UN_ISOPEN) {
 -              if ((ch->ch_tun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&
 -                  ch->ch_tun.un_tty->ldisc->ops->write_wakeup) {
 -                      spin_unlock_irqrestore(&ch->ch_lock, flags);
 -                      ch->ch_tun.un_tty->ldisc->ops->write_wakeup(ch->ch_tun.un_tty);
 -                      spin_lock_irqsave(&ch->ch_lock, flags);
 -              }
 -
 -              wake_up_interruptible(&ch->ch_tun.un_tty->write_wait);
 +              tty_wakeup(ch->ch_tun.un_tty);
  
                /*
                 * If unit is set to wait until empty, check to make sure
        }
  
        if (ch->ch_pun.un_flags & UN_ISOPEN) {
 -              if ((ch->ch_pun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&
 -                  ch->ch_pun.un_tty->ldisc->ops->write_wakeup) {
 -                      spin_unlock_irqrestore(&ch->ch_lock, flags);
 -                      ch->ch_pun.un_tty->ldisc->ops->write_wakeup(ch->ch_pun.un_tty);
 -                      spin_lock_irqsave(&ch->ch_lock, flags);
 -              }
 -
 -              wake_up_interruptible(&ch->ch_pun.un_tty->write_wait);
 +              tty_wakeup(ch->ch_pun.un_tty);
  
                /*
                 * If unit is set to wait until empty, check to make sure
@@@ -1786,8 -1796,8 +1782,8 @@@ static int dgnc_tty_write(struct tty_st
        }
  
        /* Update printer buffer empty time. */
-       if ((un->un_type == DGNC_PRINT) && (ch->ch_digi.digi_maxcps > 0)
-           && (ch->ch_digi.digi_bufsize > 0)) {
+       if ((un->un_type == DGNC_PRINT) && (ch->ch_digi.digi_maxcps > 0) &&
+           (ch->ch_digi.digi_bufsize > 0)) {
                ch->ch_cpstime += (HZ * count) / ch->ch_digi.digi_maxcps;
        }
  
@@@ -1834,7 -1844,7 +1830,7 @@@ static int dgnc_tty_tiocmget(struct tty
  
        spin_lock_irqsave(&ch->ch_lock, flags);
  
-       mstat = (ch->ch_mostat | ch->ch_mistat);
+       mstat = ch->ch_mostat | ch->ch_mistat;
  
        spin_unlock_irqrestore(&ch->ch_lock, flags);
  
@@@ -2034,7 -2044,7 +2030,7 @@@ static inline int dgnc_get_mstat(struc
  
        spin_lock_irqsave(&ch->ch_lock, flags);
  
-       mstat = (ch->ch_mostat | ch->ch_mistat);
+       mstat = ch->ch_mostat | ch->ch_mistat;
  
        spin_unlock_irqrestore(&ch->ch_lock, flags);
  
@@@ -2506,12 -2516,12 +2502,12 @@@ static void dgnc_tty_flush_buffer(struc
        /* Flush UARTs transmit FIFO */
        ch->ch_bd->bd_ops->flush_uart_write(ch);
  
-       if (ch->ch_tun.un_flags & (UN_LOW|UN_EMPTY)) {
-               ch->ch_tun.un_flags &= ~(UN_LOW|UN_EMPTY);
+       if (ch->ch_tun.un_flags & (UN_LOW | UN_EMPTY)) {
+               ch->ch_tun.un_flags &= ~(UN_LOW | UN_EMPTY);
                wake_up_interruptible(&ch->ch_tun.un_flags_wait);
        }
-       if (ch->ch_pun.un_flags & (UN_LOW|UN_EMPTY)) {
-               ch->ch_pun.un_flags &= ~(UN_LOW|UN_EMPTY);
+       if (ch->ch_pun.un_flags & (UN_LOW | UN_EMPTY)) {
+               ch->ch_pun.un_flags &= ~(UN_LOW | UN_EMPTY);
                wake_up_interruptible(&ch->ch_pun.un_flags_wait);
        }
  
@@@ -2705,13 -2715,13 +2701,13 @@@ static int dgnc_tty_ioctl(struct tty_st
  
                                if (ch->ch_tun.un_flags & (UN_LOW|UN_EMPTY)) {
                                        ch->ch_tun.un_flags &=
-                                               ~(UN_LOW|UN_EMPTY);
+                                               ~(UN_LOW | UN_EMPTY);
                                        wake_up_interruptible(&ch->ch_tun.un_flags_wait);
                                }
  
                                if (ch->ch_pun.un_flags & (UN_LOW|UN_EMPTY)) {
                                        ch->ch_pun.un_flags &=
-                                               ~(UN_LOW|UN_EMPTY);
+                                               ~(UN_LOW | UN_EMPTY);
                                        wake_up_interruptible(&ch->ch_pun.un_flags_wait);
                                }
                        }
index 94c01aad844be3a48dfaff19d08c09641e72eb13,1d2f70fda944d3313127d43b15674f9546ed8ce8..8c9377ed850c9b147af9d59c82255de850a06031
@@@ -27,7 -27,7 +27,7 @@@
   * Copyright (c) 2012, Intel Corporation.
   */
  
 -#include <linux/crypto.h>
 +#include <crypto/hash.h>
  #include <linux/scatterlist.h>
  #include "../../../include/linux/libcfs/libcfs.h"
  #include "linux-crypto.h"
@@@ -38,37 -38,30 +38,37 @@@ static int cfs_crypto_hash_speeds[CFS_H
  
  static int cfs_crypto_hash_alloc(unsigned char alg_id,
                                 const struct cfs_crypto_hash_type **type,
 -                               struct hash_desc *desc, unsigned char *key,
 +                               struct ahash_request **req,
 +                               unsigned char *key,
                                 unsigned int key_len)
  {
 +      struct crypto_ahash *tfm;
        int     err = 0;
  
        *type = cfs_crypto_hash_type(alg_id);
  
-       if (*type == NULL) {
+       if (!*type) {
                CWARN("Unsupported hash algorithm id = %d, max id is %d\n",
                      alg_id, CFS_HASH_ALG_MAX);
                return -EINVAL;
        }
 -      desc->tfm = crypto_alloc_hash((*type)->cht_name, 0, 0);
 +      tfm = crypto_alloc_ahash((*type)->cht_name, 0, CRYPTO_ALG_ASYNC);
  
 -      if (!desc->tfm)
 -              return -EINVAL;
 -
 -      if (IS_ERR(desc->tfm)) {
 +      if (IS_ERR(tfm)) {
                CDEBUG(D_INFO, "Failed to alloc crypto hash %s\n",
                       (*type)->cht_name);
 -              return PTR_ERR(desc->tfm);
 +              return PTR_ERR(tfm);
 +      }
 +
 +      *req = ahash_request_alloc(tfm, GFP_KERNEL);
 +      if (!*req) {
 +              CDEBUG(D_INFO, "Failed to alloc ahash_request for %s\n",
 +                     (*type)->cht_name);
 +              crypto_free_ahash(tfm);
 +              return -ENOMEM;
        }
  
 -      desc->flags = 0;
 +      ahash_request_set_callback(*req, 0, NULL, NULL);
  
        /** Shash have different logic for initialization then digest
         * shash: crypto_hash_setkey, crypto_hash_init
         * Skip this function for digest, because we use shash logic at
         * cfs_crypto_hash_alloc.
         */
-       if (key != NULL)
+       if (key)
 -              err = crypto_hash_setkey(desc->tfm, key, key_len);
 +              err = crypto_ahash_setkey(tfm, key, key_len);
        else if ((*type)->cht_key != 0)
 -              err = crypto_hash_setkey(desc->tfm,
 +              err = crypto_ahash_setkey(tfm,
                                         (unsigned char *)&((*type)->cht_key),
                                         (*type)->cht_size);
  
        if (err != 0) {
 -              crypto_free_hash(desc->tfm);
 +              crypto_free_ahash(tfm);
                return err;
        }
  
        CDEBUG(D_INFO, "Using crypto hash: %s (%s) speed %d MB/s\n",
 -             (crypto_hash_tfm(desc->tfm))->__crt_alg->cra_name,
 -             (crypto_hash_tfm(desc->tfm))->__crt_alg->cra_driver_name,
 +             crypto_ahash_alg_name(tfm), crypto_ahash_driver_name(tfm),
               cfs_crypto_hash_speeds[alg_id]);
  
 -      return crypto_hash_init(desc);
 +      err = crypto_ahash_init(*req);
 +      if (err) {
 +              ahash_request_free(*req);
 +              crypto_free_ahash(tfm);
 +      }
 +      return err;
  }
  
  int cfs_crypto_hash_digest(unsigned char alg_id,
                           unsigned char *hash, unsigned int *hash_len)
  {
        struct scatterlist      sl;
 -      struct hash_desc        hdesc;
 +      struct ahash_request *req;
        int                     err;
        const struct cfs_crypto_hash_type       *type;
  
-       if (buf == NULL || buf_len == 0 || hash_len == NULL)
+       if (!buf || buf_len == 0 || !hash_len)
                return -EINVAL;
  
 -      err = cfs_crypto_hash_alloc(alg_id, &type, &hdesc, key, key_len);
 +      err = cfs_crypto_hash_alloc(alg_id, &type, &req, key, key_len);
        if (err != 0)
                return err;
  
-       if (hash == NULL || *hash_len < type->cht_size) {
+       if (!hash || *hash_len < type->cht_size) {
                *hash_len = type->cht_size;
 -              crypto_free_hash(hdesc.tfm);
 +              crypto_free_ahash(crypto_ahash_reqtfm(req));
 +              ahash_request_free(req);
                return -ENOSPC;
        }
        sg_init_one(&sl, buf, buf_len);
  
 -      hdesc.flags = 0;
 -      err = crypto_hash_digest(&hdesc, &sl, sl.length, hash);
 -      crypto_free_hash(hdesc.tfm);
 +      ahash_request_set_crypt(req, &sl, hash, sl.length);
 +      err = crypto_ahash_digest(req);
 +      crypto_free_ahash(crypto_ahash_reqtfm(req));
 +      ahash_request_free(req);
  
        return err;
  }
@@@ -138,15 -125,21 +138,15 @@@ struct cfs_crypto_hash_desc 
        cfs_crypto_hash_init(unsigned char alg_id,
                             unsigned char *key, unsigned int key_len)
  {
 -      struct  hash_desc       *hdesc;
 +      struct ahash_request *req;
        int                  err;
        const struct cfs_crypto_hash_type       *type;
  
 -      hdesc = kmalloc(sizeof(*hdesc), 0);
 -      if (!hdesc)
 -              return ERR_PTR(-ENOMEM);
 -
 -      err = cfs_crypto_hash_alloc(alg_id, &type, hdesc, key, key_len);
 +      err = cfs_crypto_hash_alloc(alg_id, &type, &req, key, key_len);
  
 -      if (err) {
 -              kfree(hdesc);
 +      if (err)
                return ERR_PTR(err);
 -      }
 -      return (struct cfs_crypto_hash_desc *)hdesc;
 +      return (struct cfs_crypto_hash_desc *)req;
  }
  EXPORT_SYMBOL(cfs_crypto_hash_init);
  
@@@ -154,27 -147,23 +154,27 @@@ int cfs_crypto_hash_update_page(struct 
                                struct page *page, unsigned int offset,
                                unsigned int len)
  {
 +      struct ahash_request *req = (void *)hdesc;
        struct scatterlist sl;
  
        sg_init_table(&sl, 1);
        sg_set_page(&sl, page, len, offset & ~CFS_PAGE_MASK);
  
 -      return crypto_hash_update((struct hash_desc *)hdesc, &sl, sl.length);
 +      ahash_request_set_crypt(req, &sl, NULL, sl.length);
 +      return crypto_ahash_update(req);
  }
  EXPORT_SYMBOL(cfs_crypto_hash_update_page);
  
  int cfs_crypto_hash_update(struct cfs_crypto_hash_desc *hdesc,
                           const void *buf, unsigned int buf_len)
  {
 +      struct ahash_request *req = (void *)hdesc;
        struct scatterlist sl;
  
        sg_init_one(&sl, buf, buf_len);
  
 -      return crypto_hash_update((struct hash_desc *)hdesc, &sl, sl.length);
 +      ahash_request_set_crypt(req, &sl, NULL, sl.length);
 +      return crypto_ahash_update(req);
  }
  EXPORT_SYMBOL(cfs_crypto_hash_update);
  
@@@ -183,27 -172,25 +183,27 @@@ int cfs_crypto_hash_final(struct cfs_cr
                          unsigned char *hash, unsigned int *hash_len)
  {
        int     err;
 -      int     size = crypto_hash_digestsize(((struct hash_desc *)hdesc)->tfm);
 +      struct ahash_request *req = (void *)hdesc;
 +      int size = crypto_ahash_digestsize(crypto_ahash_reqtfm(req));
  
-       if (hash_len == NULL) {
+       if (!hash_len) {
 -              crypto_free_hash(((struct hash_desc *)hdesc)->tfm);
 -              kfree(hdesc);
 +              crypto_free_ahash(crypto_ahash_reqtfm(req));
 +              ahash_request_free(req);
                return 0;
        }
-       if (hash == NULL || *hash_len < size) {
+       if (!hash || *hash_len < size) {
                *hash_len = size;
                return -ENOSPC;
        }
 -      err = crypto_hash_final((struct hash_desc *)hdesc, hash);
 +      ahash_request_set_crypt(req, NULL, hash, 0);
 +      err = crypto_ahash_final(req);
  
        if (err < 0) {
                /* May be caller can fix error */
                return err;
        }
 -      crypto_free_hash(((struct hash_desc *)hdesc)->tfm);
 -      kfree(hdesc);
 +      crypto_free_ahash(crypto_ahash_reqtfm(req));
 +      ahash_request_free(req);
        return err;
  }
  EXPORT_SYMBOL(cfs_crypto_hash_final);
@@@ -224,7 -211,6 +224,6 @@@ static void cfs_crypto_performance_test
                                             hash, &hash_len);
                if (err)
                        break;
        }
        end = jiffies;
  
@@@ -247,8 -233,7 +246,7 @@@ int cfs_crypto_hash_speed(unsigned cha
  {
        if (hash_alg < CFS_HASH_ALG_MAX)
                return cfs_crypto_hash_speeds[hash_alg];
-       else
-               return -1;
+       return -1;
  }
  EXPORT_SYMBOL(cfs_crypto_hash_speed);
  
@@@ -261,14 -246,13 +259,13 @@@ static int cfs_crypto_test_hashes(void
        unsigned char      *data;
        unsigned int        j;
        /* Data block size for testing hash. Maximum
-        * kmalloc size for 2.6.18 kernel is 128K */
+        * kmalloc size for 2.6.18 kernel is 128K
+        */
        unsigned int        data_len = 1 * 128 * 1024;
  
        data = kmalloc(data_len, 0);
-       if (data == NULL) {
-               CERROR("Failed to allocate mem\n");
+       if (!data)
                return -ENOMEM;
-       }
  
        for (j = 0; j < data_len; j++)
                data[j] = j & 0xff;
@@@ -297,6 -281,4 +294,4 @@@ void cfs_crypto_unregister(void
  {
        if (adler32 == 0)
                cfs_crypto_adler32_unregister();
-       return;
  }
index db49af90217e3f62cc6f8e3dcf1ec713a732abb2,0a65405cc3d388c81e72e2031d6f3d420d7e0bf5..b793c04028a3034ac5b732c25af258dbded1f5f3
@@@ -147,7 -147,7 +147,7 @@@ static int vpfe_prepare_pipeline(struc
        mutex_lock(&mdev->graph_mutex);
        ret = media_entity_graph_walk_init(&graph, entity->graph_obj.mdev);
        if (ret) {
 -              mutex_unlock(&video->lock);
 +              mutex_unlock(&mdev->graph_mutex);
                return -ENOMEM;
        }
        media_entity_graph_walk_start(&graph, entity);
  static int vpfe_update_pipe_state(struct vpfe_video_device *video)
  {
        struct vpfe_pipeline *pipe = &video->pipe;
-       int ret;
  
-       ret = vpfe_prepare_pipeline(video);
-       if (ret)
-               return ret;
+       if (vpfe_prepare_pipeline(video))
+               return vpfe_prepare_pipeline(video);
  
-       /* Find out if there is any input video
-         if yes, it is single shot.
-       */
+       /*
+        * Find out if there is any input video
+        * if yes, it is single shot.
+        */
        if (pipe->input_num == 0) {
                pipe->state = VPFE_PIPELINE_STREAM_CONTINUOUS;
-               ret = vpfe_update_current_ext_subdev(video);
-               if (ret) {
+               if (vpfe_update_current_ext_subdev(video)) {
                        pr_err("Invalid external subdev\n");
-                       return ret;
+                       return vpfe_update_current_ext_subdev(video);
                }
        } else {
                pipe->state = VPFE_PIPELINE_STREAM_SINGLESHOT;
@@@ -460,7 -458,7 +458,7 @@@ void vpfe_video_schedule_next_buffer(st
        video->next_frm = list_entry(video->dma_queue.next,
                                        struct vpfe_cap_buffer, list);
  
-       if (VPFE_PIPELINE_STREAM_SINGLESHOT == video->pipe.state)
+       if (video->pipe.state == VPFE_PIPELINE_STREAM_SINGLESHOT)
                video->cur_frm = video->next_frm;
  
        list_del(&video->next_frm->list);
@@@ -529,10 -527,11 +527,11 @@@ static int vpfe_release(struct file *fi
        if (fh->io_allowed) {
                if (video->started) {
                        vpfe_stop_capture(video);
-                       /* mark pipe state as stopped in vpfe_release(),
-                          as app might call streamon() after streamoff()
-                          in which case driver has to start streaming.
-                       */
+                       /*
+                        * mark pipe state as stopped in vpfe_release(),
+                        * as app might call streamon() after streamoff()
+                        * in which case driver has to start streaming.
+                        */
                        video->pipe.state = VPFE_PIPELINE_STREAM_STOPPED;
                        vb2_streamoff(&video->buffer_queue,
                                      video->buffer_queue.type);
@@@ -668,12 -667,13 +667,13 @@@ static int vpfe_enum_fmt(struct file *f
        struct v4l2_subdev *subdev;
        struct v4l2_format format;
        struct media_pad *remote;
-       int ret;
  
        v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_enum_fmt\n");
  
-       /* since already subdev pad format is set,
-       only one pixel format is available */
+       /*
+        * since already subdev pad format is set,
+        * only one pixel format is available
+        */
        if (fmt->index > 0) {
                v4l2_err(&vpfe_dev->v4l2_dev, "Invalid index\n");
                return -EINVAL;
        sd_fmt.pad = remote->index;
        sd_fmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
        /* get output format of remote subdev */
-       ret = v4l2_subdev_call(subdev, pad, get_fmt, NULL, &sd_fmt);
-       if (ret) {
+       if (v4l2_subdev_call(subdev, pad, get_fmt, NULL, &sd_fmt)) {
                v4l2_err(&vpfe_dev->v4l2_dev,
                         "invalid remote subdev for video node\n");
-               return ret;
+               return v4l2_subdev_call(subdev, pad, get_fmt, NULL, &sd_fmt);
        }
        /* convert to pix format */
        mbus.code = sd_fmt.format.code;
@@@ -726,7 -725,6 +725,6 @@@ static int vpfe_s_fmt(struct file *file
        struct vpfe_video_device *video = video_drvdata(file);
        struct vpfe_device *vpfe_dev = video->vpfe_dev;
        struct v4l2_format format;
-       int ret;
  
        v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_s_fmt\n");
        /* If streaming is started, return error */
                return -EBUSY;
        }
        /* get adjacent subdev's output pad format */
-       ret = __vpfe_video_get_format(video, &format);
-       if (ret)
-               return ret;
+       if (__vpfe_video_get_format(video, &format))
+               return __vpfe_video_get_format(video, &format);
        *fmt = format;
        video->fmt = *fmt;
        return 0;
@@@ -760,13 -757,11 +757,11 @@@ static int vpfe_try_fmt(struct file *fi
        struct vpfe_video_device *video = video_drvdata(file);
        struct vpfe_device *vpfe_dev = video->vpfe_dev;
        struct v4l2_format format;
-       int ret;
  
        v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_try_fmt\n");
        /* get adjacent subdev's output pad format */
-       ret = __vpfe_video_get_format(video, &format);
-       if (ret)
-               return ret;
+       if (__vpfe_video_get_format(video, &format))
+               return __vpfe_video_get_format(video, &format);
  
        *fmt = format;
        return 0;
@@@ -843,9 -838,8 +838,8 @@@ static int vpfe_s_input(struct file *fi
  
        v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_s_input\n");
  
-       ret = mutex_lock_interruptible(&video->lock);
-       if (ret)
-               return ret;
+       if (mutex_lock_interruptible(&video->lock))
+               return mutex_lock_interruptible(&video->lock);
        /*
         * If streaming is started return device busy
         * error
@@@ -946,9 -940,8 +940,8 @@@ static int vpfe_s_std(struct file *file
        v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_s_std\n");
  
        /* Call decoder driver function to set the standard */
-       ret = mutex_lock_interruptible(&video->lock);
-       if (ret)
-               return ret;
+       if (mutex_lock_interruptible(&video->lock))
+               return mutex_lock_interruptible(&video->lock);
        sdinfo = video->current_ext_subdev;
        /* If streaming is started, return device busy error */
        if (video->started) {
@@@ -1328,15 -1321,14 +1321,14 @@@ static int vpfe_reqbufs(struct file *fi
  
        v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_reqbufs\n");
  
-       if (V4L2_BUF_TYPE_VIDEO_CAPTURE != req_buf->type &&
-           V4L2_BUF_TYPE_VIDEO_OUTPUT != req_buf->type) {
+       if (req_buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE &&
+           req_buf->type != V4L2_BUF_TYPE_VIDEO_OUTPUT){
                v4l2_err(&vpfe_dev->v4l2_dev, "Invalid buffer type\n");
                return -EINVAL;
        }
  
-       ret = mutex_lock_interruptible(&video->lock);
-       if (ret)
-               return ret;
+       if (mutex_lock_interruptible(&video->lock))
+               return mutex_lock_interruptible(&video->lock);
  
        if (video->io_usrs != 0) {
                v4l2_err(&vpfe_dev->v4l2_dev, "Only one IO user allowed\n");
        q->buf_struct_size = sizeof(struct vpfe_cap_buffer);
        q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
  
-       ret = vb2_queue_init(q);
-       if (ret) {
+       if (vb2_queue_init(q)) {
                v4l2_err(&vpfe_dev->v4l2_dev, "vb2_queue_init() failed\n");
                vb2_dma_contig_cleanup_ctx(vpfe_dev->pdev);
-               return ret;
+               return vb2_queue_init(q);
        }
  
        fh->io_allowed = 1;
@@@ -1390,8 -1381,8 +1381,8 @@@ static int vpfe_querybuf(struct file *f
  
        v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_querybuf\n");
  
-       if (V4L2_BUF_TYPE_VIDEO_CAPTURE != buf->type &&
-           V4L2_BUF_TYPE_VIDEO_OUTPUT != buf->type) {
+       if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE &&
+           buf->type != V4L2_BUF_TYPE_VIDEO_OUTPUT) {
                v4l2_err(&vpfe_dev->v4l2_dev, "Invalid buf type\n");
                return  -EINVAL;
        }
@@@ -1417,8 -1408,8 +1408,8 @@@ static int vpfe_qbuf(struct file *file
  
        v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_qbuf\n");
  
-       if (V4L2_BUF_TYPE_VIDEO_CAPTURE != p->type &&
-           V4L2_BUF_TYPE_VIDEO_OUTPUT != p->type) {
+       if (p->type != V4L2_BUF_TYPE_VIDEO_CAPTURE &&
+           p->type != V4L2_BUF_TYPE_VIDEO_OUTPUT) {
                v4l2_err(&vpfe_dev->v4l2_dev, "Invalid buf type\n");
                return -EINVAL;
        }
@@@ -1445,8 -1436,8 +1436,8 @@@ static int vpfe_dqbuf(struct file *file
  
        v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_dqbuf\n");
  
-       if (V4L2_BUF_TYPE_VIDEO_CAPTURE != buf->type &&
-           V4L2_BUF_TYPE_VIDEO_OUTPUT != buf->type) {
+       if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE &&
+           buf->type != V4L2_BUF_TYPE_VIDEO_OUTPUT) {
                v4l2_err(&vpfe_dev->v4l2_dev, "Invalid buf type\n");
                return -EINVAL;
        }
@@@ -1478,8 -1469,8 +1469,8 @@@ static int vpfe_streamon(struct file *f
  
        v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_streamon\n");
  
-       if (V4L2_BUF_TYPE_VIDEO_CAPTURE != buf_type &&
-           V4L2_BUF_TYPE_VIDEO_OUTPUT != buf_type) {
+       if (buf_type != V4L2_BUF_TYPE_VIDEO_CAPTURE &&
+           buf_type != V4L2_BUF_TYPE_VIDEO_OUTPUT) {
                v4l2_err(&vpfe_dev->v4l2_dev, "Invalid buf type\n");
                return ret;
        }
                return -EIO;
        }
        /* Validate the pipeline */
-       if (V4L2_BUF_TYPE_VIDEO_CAPTURE == buf_type) {
+       if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
                ret = vpfe_video_validate_pipeline(pipe);
                if (ret < 0)
                        return ret;
@@@ -1542,9 -1533,8 +1533,8 @@@ static int vpfe_streamoff(struct file *
                return -EINVAL;
        }
  
-       ret = mutex_lock_interruptible(&video->lock);
-       if (ret)
-               return ret;
+       if (mutex_lock_interruptible(&video->lock))
+               return mutex_lock_interruptible(&video->lock);
  
        vpfe_stop_capture(video);
        ret = vb2_streamoff(&video->buffer_queue, buf_type);
index fb80d2bc5a25a083e325c9c1196574c212a53398,dea67d96d704449a62d7bda55a88e11f7e414a4b..c5a5138b3d3b61a3430a65e1495e5e32fd81d9d6
@@@ -362,6 -362,215 +362,6 @@@ static irqreturn_t iss_isr(int irq, voi
        return IRQ_HANDLED;
  }
  
 -/* -----------------------------------------------------------------------------
 - * Pipeline power management
 - *
 - * Entities must be powered up when part of a pipeline that contains at least
 - * one open video device node.
 - *
 - * To achieve this use the entity use_count field to track the number of users.
 - * For entities corresponding to video device nodes the use_count field stores
 - * the users count of the node. For entities corresponding to subdevs the
 - * use_count field stores the total number of users of all video device nodes
 - * in the pipeline.
 - *
 - * The omap4iss_pipeline_pm_use() function must be called in the open() and
 - * close() handlers of video device nodes. It increments or decrements the use
 - * count of all subdev entities in the pipeline.
 - *
 - * To react to link management on powered pipelines, the link setup notification
 - * callback updates the use count of all entities in the source and sink sides
 - * of the link.
 - */
 -
 -/*
 - * iss_pipeline_pm_use_count - Count the number of users of a pipeline
 - * @entity: The entity
 - *
 - * Return the total number of users of all video device nodes in the pipeline.
 - */
 -static int iss_pipeline_pm_use_count(struct media_entity *entity,
 -                                   struct media_entity_graph *graph)
 -{
 -      int use = 0;
 -
 -      media_entity_graph_walk_start(graph, entity);
 -
 -      while ((entity = media_entity_graph_walk_next(graph))) {
 -              if (is_media_entity_v4l2_io(entity))
 -                      use += entity->use_count;
 -      }
 -
 -      return use;
 -}
 -
 -/*
 - * iss_pipeline_pm_power_one - Apply power change to an entity
 - * @entity: The entity
 - * @change: Use count change
 - *
 - * Change the entity use count by @change. If the entity is a subdev update its
 - * power state by calling the core::s_power operation when the use count goes
 - * from 0 to != 0 or from != 0 to 0.
 - *
 - * Return 0 on success or a negative error code on failure.
 - */
 -static int iss_pipeline_pm_power_one(struct media_entity *entity, int change)
 -{
 -      struct v4l2_subdev *subdev;
 -
 -      subdev = is_media_entity_v4l2_subdev(entity)
 -             ? media_entity_to_v4l2_subdev(entity) : NULL;
 -
 -      if (entity->use_count == 0 && change > 0 && subdev) {
 -              int ret;
 -
 -              ret = v4l2_subdev_call(subdev, core, s_power, 1);
 -              if (ret < 0 && ret != -ENOIOCTLCMD)
 -                      return ret;
 -      }
 -
 -      entity->use_count += change;
 -      WARN_ON(entity->use_count < 0);
 -
 -      if (entity->use_count == 0 && change < 0 && subdev)
 -              v4l2_subdev_call(subdev, core, s_power, 0);
 -
 -      return 0;
 -}
 -
 -/*
 - * iss_pipeline_pm_power - Apply power change to all entities in a pipeline
 - * @entity: The entity
 - * @change: Use count change
 - *
 - * Walk the pipeline to update the use count and the power state of all non-node
 - * entities.
 - *
 - * Return 0 on success or a negative error code on failure.
 - */
 -static int iss_pipeline_pm_power(struct media_entity *entity, int change,
 -                               struct media_entity_graph *graph)
 -{
 -      struct media_entity *first = entity;
 -      int ret = 0;
 -
 -      if (!change)
 -              return 0;
 -
 -      media_entity_graph_walk_start(graph, entity);
 -
 -      while (!ret && (entity = media_entity_graph_walk_next(graph)))
 -              if (is_media_entity_v4l2_subdev(entity))
 -                      ret = iss_pipeline_pm_power_one(entity, change);
 -
 -      if (!ret)
 -              return 0;
 -
 -      media_entity_graph_walk_start(graph, first);
 -
 -      while ((first = media_entity_graph_walk_next(graph)) &&
 -             first != entity)
 -              if (is_media_entity_v4l2_subdev(first))
 -                      iss_pipeline_pm_power_one(first, -change);
 -
 -      return ret;
 -}
 -
 -/*
 - * omap4iss_pipeline_pm_use - Update the use count of an entity
 - * @entity: The entity
 - * @use: Use (1) or stop using (0) the entity
 - *
 - * Update the use count of all entities in the pipeline and power entities on or
 - * off accordingly.
 - *
 - * Return 0 on success or a negative error code on failure. Powering entities
 - * off is assumed to never fail. No failure can occur when the use parameter is
 - * set to 0.
 - */
 -int omap4iss_pipeline_pm_use(struct media_entity *entity, int use,
 -                           struct media_entity_graph *graph)
 -{
 -      int change = use ? 1 : -1;
 -      int ret;
 -
 -      mutex_lock(&entity->graph_obj.mdev->graph_mutex);
 -
 -      /* Apply use count to node. */
 -      entity->use_count += change;
 -      WARN_ON(entity->use_count < 0);
 -
 -      /* Apply power change to connected non-nodes. */
 -      ret = iss_pipeline_pm_power(entity, change, graph);
 -      if (ret < 0)
 -              entity->use_count -= change;
 -
 -      mutex_unlock(&entity->graph_obj.mdev->graph_mutex);
 -
 -      return ret;
 -}
 -
 -/*
 - * iss_pipeline_link_notify - Link management notification callback
 - * @link: The link
 - * @flags: New link flags that will be applied
 - *
 - * React to link management on powered pipelines by updating the use count of
 - * all entities in the source and sink sides of the link. Entities are powered
 - * on or off accordingly.
 - *
 - * Return 0 on success or a negative error code on failure. Powering entities
 - * off is assumed to never fail. This function will not fail for disconnection
 - * events.
 - */
 -static int iss_pipeline_link_notify(struct media_link *link, u32 flags,
 -                                  unsigned int notification)
 -{
 -      struct media_entity_graph *graph =
 -              &container_of(link->graph_obj.mdev, struct iss_device,
 -                            media_dev)->pm_count_graph;
 -      struct media_entity *source = link->source->entity;
 -      struct media_entity *sink = link->sink->entity;
 -      int source_use;
 -      int sink_use;
 -      int ret;
 -
 -      if (notification == MEDIA_DEV_NOTIFY_PRE_LINK_CH) {
 -              ret = media_entity_graph_walk_init(graph,
 -                                                 link->graph_obj.mdev);
 -              if (ret)
 -                      return ret;
 -      }
 -
 -      source_use = iss_pipeline_pm_use_count(source, graph);
 -      sink_use = iss_pipeline_pm_use_count(sink, graph);
 -
 -      if (notification == MEDIA_DEV_NOTIFY_POST_LINK_CH &&
 -          !(flags & MEDIA_LNK_FL_ENABLED)) {
 -              /* Powering off entities is assumed to never fail. */
 -              iss_pipeline_pm_power(source, -sink_use, graph);
 -              iss_pipeline_pm_power(sink, -source_use, graph);
 -              return 0;
 -      }
 -
 -      if (notification == MEDIA_DEV_NOTIFY_PRE_LINK_CH &&
 -          (flags & MEDIA_LNK_FL_ENABLED)) {
 -              ret = iss_pipeline_pm_power(source, sink_use, graph);
 -              if (ret < 0)
 -                      return ret;
 -
 -              ret = iss_pipeline_pm_power(sink, source_use, graph);
 -              if (ret < 0)
 -                      iss_pipeline_pm_power(source, -sink_use, graph);
 -      }
 -
 -      if (notification == MEDIA_DEV_NOTIFY_POST_LINK_CH)
 -              media_entity_graph_walk_cleanup(graph);
 -
 -      return ret;
 -}
 -
  /* -----------------------------------------------------------------------------
   * Pipeline stream management
   */
@@@ -988,7 -1197,7 +988,7 @@@ static int iss_register_entities(struc
        strlcpy(iss->media_dev.model, "TI OMAP4 ISS",
                sizeof(iss->media_dev.model));
        iss->media_dev.hw_revision = iss->revision;
 -      iss->media_dev.link_notify = iss_pipeline_link_notify;
 +      iss->media_dev.link_notify = v4l2_pipeline_link_notify;
        ret = media_device_register(&iss->media_dev);
        if (ret < 0) {
                dev_err(iss->dev, "Media device registration failed (%d)\n",
@@@ -1318,8 -1527,6 +1318,6 @@@ error_modules
  error_iss:
        omap4iss_put(iss);
  error:
-       platform_set_drvdata(pdev, NULL);
        mutex_destroy(&iss->iss_mutex);
  
        return ret;
index 8eac7cdd5f3ebd65f10051568367d695ec0860a4,7df824b5fc34bc2c1f289734a3fc36993eac00fe..ae103b0b7a2a592a1759d86e764b957d8e9b654e
@@@ -9,8 -9,6 +9,8 @@@
   * more details.
   */
  
 +#include <crypto/hash.h>
 +#include <crypto/skcipher.h>
  #include <linux/module.h>
  #include <linux/init.h>
  #include <linux/slab.h>
@@@ -20,6 -18,7 +20,6 @@@
  #include <linux/if_ether.h>
  #include <linux/if_arp.h>
  #include <linux/string.h>
 -#include <linux/crypto.h>
  #include <linux/scatterlist.h>
  #include <linux/crc32.h>
  #include <linux/etherdevice.h>
@@@ -49,10 -48,10 +49,10 @@@ struct rtllib_tkip_data 
        u32 dot11RSNAStatsTKIPLocalMICFailures;
  
        int key_idx;
 -      struct crypto_blkcipher *rx_tfm_arc4;
 -      struct crypto_hash *rx_tfm_michael;
 -      struct crypto_blkcipher *tx_tfm_arc4;
 -      struct crypto_hash *tx_tfm_michael;
 +      struct crypto_skcipher *rx_tfm_arc4;
 +      struct crypto_ahash *rx_tfm_michael;
 +      struct crypto_skcipher *tx_tfm_arc4;
 +      struct crypto_ahash *tx_tfm_michael;
        /* scratch buffers for virt_to_page() (crypto API) */
        u8 rx_hdr[16];
        u8 tx_hdr[16];
@@@ -66,32 -65,32 +66,32 @@@ static void *rtllib_tkip_init(int key_i
        if (priv == NULL)
                goto fail;
        priv->key_idx = key_idx;
 -      priv->tx_tfm_arc4 = crypto_alloc_blkcipher("ecb(arc4)", 0,
 -                      CRYPTO_ALG_ASYNC);
 +      priv->tx_tfm_arc4 = crypto_alloc_skcipher("ecb(arc4)", 0,
 +                                                CRYPTO_ALG_ASYNC);
        if (IS_ERR(priv->tx_tfm_arc4)) {
                pr_debug("Could not allocate crypto API arc4\n");
                priv->tx_tfm_arc4 = NULL;
                goto fail;
        }
  
 -      priv->tx_tfm_michael = crypto_alloc_hash("michael_mic", 0,
 -                      CRYPTO_ALG_ASYNC);
 +      priv->tx_tfm_michael = crypto_alloc_ahash("michael_mic", 0,
 +                                                CRYPTO_ALG_ASYNC);
        if (IS_ERR(priv->tx_tfm_michael)) {
                pr_debug("Could not allocate crypto API michael_mic\n");
                priv->tx_tfm_michael = NULL;
                goto fail;
        }
  
 -      priv->rx_tfm_arc4 = crypto_alloc_blkcipher("ecb(arc4)", 0,
 -                      CRYPTO_ALG_ASYNC);
 +      priv->rx_tfm_arc4 = crypto_alloc_skcipher("ecb(arc4)", 0,
 +                                                CRYPTO_ALG_ASYNC);
        if (IS_ERR(priv->rx_tfm_arc4)) {
                pr_debug("Could not allocate crypto API arc4\n");
                priv->rx_tfm_arc4 = NULL;
                goto fail;
        }
  
 -      priv->rx_tfm_michael = crypto_alloc_hash("michael_mic", 0,
 -                      CRYPTO_ALG_ASYNC);
 +      priv->rx_tfm_michael = crypto_alloc_ahash("michael_mic", 0,
 +                                                CRYPTO_ALG_ASYNC);
        if (IS_ERR(priv->rx_tfm_michael)) {
                pr_debug("Could not allocate crypto API michael_mic\n");
                priv->rx_tfm_michael = NULL;
  
  fail:
        if (priv) {
 -              if (priv->tx_tfm_michael)
 -                      crypto_free_hash(priv->tx_tfm_michael);
 -              if (priv->tx_tfm_arc4)
 -                      crypto_free_blkcipher(priv->tx_tfm_arc4);
 -              if (priv->rx_tfm_michael)
 -                      crypto_free_hash(priv->rx_tfm_michael);
 -              if (priv->rx_tfm_arc4)
 -                      crypto_free_blkcipher(priv->rx_tfm_arc4);
 +              crypto_free_ahash(priv->tx_tfm_michael);
 +              crypto_free_skcipher(priv->tx_tfm_arc4);
 +              crypto_free_ahash(priv->rx_tfm_michael);
 +              crypto_free_skcipher(priv->rx_tfm_arc4);
                kfree(priv);
        }
  
@@@ -117,10 -120,14 +117,10 @@@ static void rtllib_tkip_deinit(void *pr
        struct rtllib_tkip_data *_priv = priv;
  
        if (_priv) {
 -              if (_priv->tx_tfm_michael)
 -                      crypto_free_hash(_priv->tx_tfm_michael);
 -              if (_priv->tx_tfm_arc4)
 -                      crypto_free_blkcipher(_priv->tx_tfm_arc4);
 -              if (_priv->rx_tfm_michael)
 -                      crypto_free_hash(_priv->rx_tfm_michael);
 -              if (_priv->rx_tfm_arc4)
 -                      crypto_free_blkcipher(_priv->rx_tfm_arc4);
 +              crypto_free_ahash(_priv->tx_tfm_michael);
 +              crypto_free_skcipher(_priv->tx_tfm_arc4);
 +              crypto_free_ahash(_priv->rx_tfm_michael);
 +              crypto_free_skcipher(_priv->rx_tfm_arc4);
        }
        kfree(priv);
  }
@@@ -294,6 -301,7 +294,6 @@@ static int rtllib_tkip_encrypt(struct s
        struct rtllib_hdr_4addr *hdr;
        struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb +
                                    MAX_DEV_ADDR_SIZE);
 -      struct blkcipher_desc desc = {.tfm = tkey->tx_tfm_arc4};
        int ret = 0;
        u8 rc4key[16],  *icv;
        u32 crc;
        *pos++ = (tkey->tx_iv32 >> 24) & 0xff;
  
        if (!tcb_desc->bHwSec) {
 +              SKCIPHER_REQUEST_ON_STACK(req, tkey->tx_tfm_arc4);
 +
                icv = skb_put(skb, 4);
                crc = ~crc32_le(~0, pos, len);
                icv[0] = crc;
                sg_init_one(&sg, pos, len+4);
  
  
 -              crypto_blkcipher_setkey(tkey->tx_tfm_arc4, rc4key, 16);
 -              ret = crypto_blkcipher_encrypt(&desc, &sg, &sg, len + 4);
 +              crypto_skcipher_setkey(tkey->tx_tfm_arc4, rc4key, 16);
 +              skcipher_request_set_tfm(req, tkey->tx_tfm_arc4);
 +              skcipher_request_set_callback(req, 0, NULL, NULL);
 +              skcipher_request_set_crypt(req, &sg, &sg, len + 4, NULL);
 +              ret = crypto_skcipher_encrypt(req);
 +              skcipher_request_zero(req);
        }
  
        tkey->tx_iv16++;
  
        if (!tcb_desc->bHwSec)
                return ret;
-       else
-               return 0;
+       return 0;
  
  
  }
@@@ -382,12 -383,12 +381,12 @@@ static int rtllib_tkip_decrypt(struct s
        struct rtllib_hdr_4addr *hdr;
        struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb +
                                    MAX_DEV_ADDR_SIZE);
 -      struct blkcipher_desc desc = {.tfm = tkey->rx_tfm_arc4};
        u8 rc4key[16];
        u8 icv[4];
        u32 crc;
        struct scatterlist sg;
        int plen;
 +      int err;
  
        if (skb->len < hdr_len + 8 + 4)
                return -1;
        pos += 8;
  
        if (!tcb_desc->bHwSec || (skb->cb[0] == 1)) {
 +              SKCIPHER_REQUEST_ON_STACK(req, tkey->rx_tfm_arc4);
 +
                if ((iv32 < tkey->rx_iv32 ||
                    (iv32 == tkey->rx_iv32 && iv16 <= tkey->rx_iv16)) &&
                    tkey->initialized) {
  
                sg_init_one(&sg, pos, plen+4);
  
 -              crypto_blkcipher_setkey(tkey->rx_tfm_arc4, rc4key, 16);
 -              if (crypto_blkcipher_decrypt(&desc, &sg, &sg, plen + 4)) {
 +              crypto_skcipher_setkey(tkey->rx_tfm_arc4, rc4key, 16);
 +              skcipher_request_set_tfm(req, tkey->rx_tfm_arc4);
 +              skcipher_request_set_callback(req, 0, NULL, NULL);
 +              skcipher_request_set_crypt(req, &sg, &sg, plen + 4, NULL);
 +              err = crypto_skcipher_decrypt(req);
 +              skcipher_request_zero(req);
 +              if (err) {
                        if (net_ratelimit()) {
                                netdev_dbg(skb->dev,
                                           "Failed to decrypt received packet from %pM\n",
  }
  
  
 -static int michael_mic(struct crypto_hash *tfm_michael, u8 *key, u8 *hdr,
 +static int michael_mic(struct crypto_ahash *tfm_michael, u8 *key, u8 *hdr,
                       u8 *data, size_t data_len, u8 *mic)
  {
 -      struct hash_desc desc;
 +      AHASH_REQUEST_ON_STACK(req, tfm_michael);
        struct scatterlist sg[2];
 +      int err;
  
        if (tfm_michael == NULL) {
                pr_warn("michael_mic: tfm_michael == NULL\n");
        sg_set_buf(&sg[0], hdr, 16);
        sg_set_buf(&sg[1], data, data_len);
  
 -      if (crypto_hash_setkey(tfm_michael, key, 8))
 +      if (crypto_ahash_setkey(tfm_michael, key, 8))
                return -1;
  
 -      desc.tfm = tfm_michael;
 -      desc.flags = 0;
 -      return crypto_hash_digest(&desc, sg, data_len + 16, mic);
 +      ahash_request_set_tfm(req, tfm_michael);
 +      ahash_request_set_callback(req, 0, NULL, NULL);
 +      ahash_request_set_crypt(req, sg, mic, data_len + 16);
 +      err = crypto_ahash_digest(req);
 +      ahash_request_zero(req);
 +      return err;
  }
  
  static void michael_mic_hdr(struct sk_buff *skb, u8 *hdr)
@@@ -664,10 -654,10 +663,10 @@@ static int rtllib_tkip_set_key(void *ke
  {
        struct rtllib_tkip_data *tkey = priv;
        int keyidx;
 -      struct crypto_hash *tfm = tkey->tx_tfm_michael;
 -      struct crypto_blkcipher *tfm2 = tkey->tx_tfm_arc4;
 -      struct crypto_hash *tfm3 = tkey->rx_tfm_michael;
 -      struct crypto_blkcipher *tfm4 = tkey->rx_tfm_arc4;
 +      struct crypto_ahash *tfm = tkey->tx_tfm_michael;
 +      struct crypto_skcipher *tfm2 = tkey->tx_tfm_arc4;
 +      struct crypto_ahash *tfm3 = tkey->rx_tfm_michael;
 +      struct crypto_skcipher *tfm4 = tkey->rx_tfm_arc4;
  
        keyidx = tkey->key_idx;
        memset(tkey, 0, sizeof(*tkey));
index ababb6de125bf12c6ae16b63a0ce82be943e6e92,cde8e2b958cb0d1f2874bf5167cc7dc16dce29eb..1999bc5cbbc138a752fe3298906b02dfee040a66
@@@ -18,7 -18,7 +18,7 @@@
  
  #include "ieee80211.h"
  
 -#include <linux/crypto.h>
 +#include <crypto/skcipher.h>
  #include <linux/scatterlist.h>
  #include <linux/crc32.h>
  
@@@ -32,8 -32,8 +32,8 @@@ struct prism2_wep_data 
        u8 key[WEP_KEY_LEN + 1];
        u8 key_len;
        u8 key_idx;
 -      struct crypto_blkcipher *tx_tfm;
 -      struct crypto_blkcipher *rx_tfm;
 +      struct crypto_skcipher *tx_tfm;
 +      struct crypto_skcipher *rx_tfm;
  };
  
  
@@@ -46,10 -46,10 +46,10 @@@ static void *prism2_wep_init(int keyidx
                return NULL;
        priv->key_idx = keyidx;
  
 -      priv->tx_tfm = crypto_alloc_blkcipher("ecb(arc4)", 0, CRYPTO_ALG_ASYNC);
 +      priv->tx_tfm = crypto_alloc_skcipher("ecb(arc4)", 0, CRYPTO_ALG_ASYNC);
        if (IS_ERR(priv->tx_tfm))
                goto free_priv;
 -      priv->rx_tfm = crypto_alloc_blkcipher("ecb(arc4)", 0, CRYPTO_ALG_ASYNC);
 +      priv->rx_tfm = crypto_alloc_skcipher("ecb(arc4)", 0, CRYPTO_ALG_ASYNC);
        if (IS_ERR(priv->rx_tfm))
                goto free_tx;
  
@@@ -58,7 -58,7 +58,7 @@@
  
        return priv;
  free_tx:
 -      crypto_free_blkcipher(priv->tx_tfm);
 +      crypto_free_skcipher(priv->tx_tfm);
  free_priv:
        kfree(priv);
        return NULL;
@@@ -70,8 -70,10 +70,8 @@@ static void prism2_wep_deinit(void *pri
        struct prism2_wep_data *_priv = priv;
  
        if (_priv) {
 -              if (_priv->tx_tfm)
 -                      crypto_free_blkcipher(_priv->tx_tfm);
 -              if (_priv->rx_tfm)
 -                      crypto_free_blkcipher(_priv->rx_tfm);
 +              crypto_free_skcipher(_priv->tx_tfm);
 +              crypto_free_skcipher(_priv->rx_tfm);
        }
        kfree(priv);
  }
@@@ -89,10 -91,10 +89,10 @@@ static int prism2_wep_encrypt(struct sk
        u8 key[WEP_KEY_LEN + 3];
        u8 *pos;
        cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE);
 -      struct blkcipher_desc desc = {.tfm = wep->tx_tfm};
        u32 crc;
        u8 *icv;
        struct scatterlist sg;
 +      int err;
  
        if (skb_headroom(skb) < 4 || skb_tailroom(skb) < 4 ||
            skb->len < hdr_len)
        memcpy(key + 3, wep->key, wep->key_len);
  
        if (!tcb_desc->bHwSec) {
 +              SKCIPHER_REQUEST_ON_STACK(req, wep->tx_tfm);
 +
                /* Append little-endian CRC32 and encrypt it to produce ICV */
                crc = ~crc32_le(~0, pos, len);
                icv = skb_put(skb, 4);
                icv[2] = crc >> 16;
                icv[3] = crc >> 24;
  
 -              crypto_blkcipher_setkey(wep->tx_tfm, key, klen);
 +              crypto_skcipher_setkey(wep->tx_tfm, key, klen);
                sg_init_one(&sg, pos, len+4);
  
 -              return crypto_blkcipher_encrypt(&desc, &sg, &sg, len + 4);
 +              skcipher_request_set_tfm(req, wep->tx_tfm);
 +              skcipher_request_set_callback(req, 0, NULL, NULL);
 +              skcipher_request_set_crypt(req, &sg, &sg, len + 4, NULL);
 +
 +              err = crypto_skcipher_encrypt(req);
 +              skcipher_request_zero(req);
 +              return err;
        }
  
        return 0;
@@@ -167,10 -161,10 +167,10 @@@ static int prism2_wep_decrypt(struct sk
        u8 key[WEP_KEY_LEN + 3];
        u8 keyidx, *pos;
        cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE);
 -      struct blkcipher_desc desc = {.tfm = wep->rx_tfm};
        u32 crc;
        u8 icv[4];
        struct scatterlist sg;
 +      int err;
  
        if (skb->len < hdr_len + 8)
                return -1;
        plen = skb->len - hdr_len - 8;
  
        if (!tcb_desc->bHwSec) {
 -              crypto_blkcipher_setkey(wep->rx_tfm, key, klen);
 +              SKCIPHER_REQUEST_ON_STACK(req, wep->rx_tfm);
 +
 +              crypto_skcipher_setkey(wep->rx_tfm, key, klen);
                sg_init_one(&sg, pos, plen+4);
  
 -              if (crypto_blkcipher_decrypt(&desc, &sg, &sg, plen + 4))
 +              skcipher_request_set_tfm(req, wep->rx_tfm);
 +              skcipher_request_set_callback(req, 0, NULL, NULL);
 +              skcipher_request_set_crypt(req, &sg, &sg, plen + 4, NULL);
 +
 +              err = crypto_skcipher_decrypt(req);
 +              skcipher_request_zero(req);
 +              if (err)
                        return -7;
  
                crc = ~crc32_le(~0, pos, plen);
@@@ -288,6 -274,3 +288,3 @@@ void __exit ieee80211_crypto_wep_exit(v
        ieee80211_unregister_crypto_ops(&ieee80211_crypt_wep);
  }
  
- void ieee80211_wep_null(void)
- {
- }
index ed48594e96d2562ddc1de9c1dc94559629f7a4da,0934d06c8b0076c9243cac38d1a7783ec2f42c01..2aed0439621056960b5107d32da874a4c61666f4
@@@ -74,7 -74,7 +74,8 @@@ enum irq_domain_bus_token 
        DOMAIN_BUS_PCI_MSI,
        DOMAIN_BUS_PLATFORM_MSI,
        DOMAIN_BUS_NEXUS,
 +      DOMAIN_BUS_IPI,
+       DOMAIN_BUS_FSL_MC_MSI,
  };
  
  /**
@@@ -173,12 -173,6 +174,12 @@@ enum 
        /* Core calls alloc/free recursive through the domain hierarchy. */
        IRQ_DOMAIN_FLAG_AUTO_RECURSIVE  = (1 << 1),
  
 +      /* Irq domain is an IPI domain with virq per cpu */
 +      IRQ_DOMAIN_FLAG_IPI_PER_CPU     = (1 << 2),
 +
 +      /* Irq domain is an IPI domain with single virq */
 +      IRQ_DOMAIN_FLAG_IPI_SINGLE      = (1 << 3),
 +
        /*
         * Flags starting from IRQ_DOMAIN_FLAG_NONCORE are reserved
         * for implementation specific purposes and ignored by the
@@@ -213,8 -207,6 +214,8 @@@ struct irq_domain *irq_domain_add_legac
  extern struct irq_domain *irq_find_matching_fwnode(struct fwnode_handle *fwnode,
                                                   enum irq_domain_bus_token bus_token);
  extern void irq_set_default_host(struct irq_domain *host);
 +extern int irq_domain_alloc_descs(int virq, unsigned int nr_irqs,
 +                                irq_hw_number_t hwirq, int node);
  
  static inline struct fwnode_handle *of_node_to_fwnode(struct device_node *node)
  {
@@@ -344,11 -336,6 +345,11 @@@ int irq_domain_xlate_onetwocell(struct 
                        const u32 *intspec, unsigned int intsize,
                        irq_hw_number_t *out_hwirq, unsigned int *out_type);
  
 +/* IPI functions */
 +unsigned int irq_reserve_ipi(struct irq_domain *domain,
 +                           const struct cpumask *dest);
 +void irq_destroy_ipi(unsigned int irq);
 +
  /* V2 interfaces to support hierarchy IRQ domains. */
  extern struct irq_data *irq_domain_get_irq_data(struct irq_domain *domain,
                                                unsigned int virq);
@@@ -414,22 -401,6 +415,22 @@@ static inline bool irq_domain_is_hierar
  {
        return domain->flags & IRQ_DOMAIN_FLAG_HIERARCHY;
  }
 +
 +static inline bool irq_domain_is_ipi(struct irq_domain *domain)
 +{
 +      return domain->flags &
 +              (IRQ_DOMAIN_FLAG_IPI_PER_CPU | IRQ_DOMAIN_FLAG_IPI_SINGLE);
 +}
 +
 +static inline bool irq_domain_is_ipi_per_cpu(struct irq_domain *domain)
 +{
 +      return domain->flags & IRQ_DOMAIN_FLAG_IPI_PER_CPU;
 +}
 +
 +static inline bool irq_domain_is_ipi_single(struct irq_domain *domain)
 +{
 +      return domain->flags & IRQ_DOMAIN_FLAG_IPI_SINGLE;
 +}
  #else /* CONFIG_IRQ_DOMAIN_HIERARCHY */
  static inline void irq_domain_activate_irq(struct irq_data *data) { }
  static inline void irq_domain_deactivate_irq(struct irq_data *data) { }
@@@ -443,21 -414,6 +444,21 @@@ static inline bool irq_domain_is_hierar
  {
        return false;
  }
 +
 +static inline bool irq_domain_is_ipi(struct irq_domain *domain)
 +{
 +      return false;
 +}
 +
 +static inline bool irq_domain_is_ipi_per_cpu(struct irq_domain *domain)
 +{
 +      return false;
 +}
 +
 +static inline bool irq_domain_is_ipi_single(struct irq_domain *domain)
 +{
 +      return false;
 +}
  #endif        /* CONFIG_IRQ_DOMAIN_HIERARCHY */
  
  #else /* CONFIG_IRQ_DOMAIN */