From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [85.220.165.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E67882CA3 for ; Sun, 23 Jan 2022 17:53:57 +0000 (UTC) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nBh2H-0007aK-MJ; Sun, 23 Jan 2022 18:52:17 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1nBh29-00BycU-QC; Sun, 23 Jan 2022 18:52:09 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1nBh27-000tzn-QZ; Sun, 23 Jan 2022 18:52:08 +0100 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: Mark Brown Cc: =?utf-8?q?Marek_Beh=C3=BAn?= , Peter Huewe , Jarkko Sakkinen , Jason Gunthorpe , Michael Turquette , Stephen Boyd , Linus Walleij , Bartosz Golaszewski , Thierry Reding , Sam Ravnborg , David Airlie , Daniel Vetter , Markuss Broks , Emma Anholt , David Lechner , Kamlesh Gurudasani , =?utf-8?q?Noralf_Tr=C3=B8nnes?= , Jean Delvare , Guenter Roeck , Dan Robertson , Jonathan Cameron , Lars-Peter Clausen , Michael Hennerich , Marcus Folkesson , Kent Gustavsson , Rui Miguel Silva , Dmitry Torokhov , Pavel Machek , Yasunari Takiguchi , Mauro Carvalho Chehab , Charles-Antoine Couret , Antti Palosaari , Lee Jones , Support Opensource , Charles Keepax , Richard Fitzgerald , Maxime Coquelin , Alexandre Torgue , Arnd Bergmann , Greg Kroah-Hartman , Eric Piel , Ulf Hansson , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Wolfgang Grandegger , Marc Kleine-Budde , "David S. Miller" , Jakub Kicinski , Manivannan Sadhasivam , Thomas Kopp , Florian Fainelli , Andrew Lunn , Vivien Didelot , Vladimir Oltean , Woojung Huh , UNGLinuxDriver@microchip.com, =?utf-8?q?=C5=81ukasz_Stelmach?= , Alexander Aring , Stefan Schmidt , Harry Morris , Varka Bhadram , Xue Liu , Alan Ott , Heiner Kallweit , Russell King , Christian Lamparter , Kalle Valo , Ajay Singh , Claudiu Beznea , Solomon Peachy , Krzysztof Kozlowski , Mark Greer , Benson Leung , Hans de Goede , Mark Gross , Alessandro Zummo , Alexandre Belloni , =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= , Jiri Slaby , Felipe Balbi , Daniel Thompson , Jingoo Han , Helge Deller , James Schulman , David Rhodes , Lucas Tanure , Jaroslav Kysela , Takashi Iwai , =?utf-8?q?Nuno_S=C3=A1?= , Liam Girdwood , Daniel Mack , Thomas Zimmermann , Maxime Ripard , Andy Shevchenko , Stephan Gerhold , Alexandru Ardelean , Mike Looijmans , Gwendal Grignou , Cai Huoqing , Minghao Chi , Antoniu Miclaus , Julia Lawall , =?utf-8?q?Ronald_Tschal=C3=A4r?= , Marco Felsch , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Emmanuel Gil Peyrot , Jon Hunter , Andrew Morton , Heiko Schocher , Fabio Estevam , Colin Ian King , Dan Carpenter , Tudor Ambarus , Matt Kline , Torin Cooper-Bennun , Vincent Mailhol , =?utf-8?q?Stefan_M=C3=A4tje?= , Frieder Schrempf , Wei Yongjun , Randy Dunlap , Nanyong Sun , Yang Shen , dingsenjie , Aditya Srivastava , Stefan Wahren , Peter Zijlstra , Michael Walle , Yang Li , Geert Uytterhoeven , wengjianfeng , Sidong Yang , Paulo Miguel Almeida , Zhang Qilong , Will Deacon , Mark Tomlinson , Davidlohr Bueso , Claudius Heine , Jiri Prchal , linux-kernel@vger.kernel.org, linux-integrity@vger.kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-hwmon@vger.kernel.org, linux-iio@vger.kernel.org, linux-input@vger.kernel.org, linux-leds@vger.kernel.org, linux-media@vger.kernel.org, patches@opensource.cirrus.com, alsa-devel@alsa-project.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-mmc@vger.kernel.org, linux-mtd@lists.infradead.org, linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-wpan@vger.kernel.org, linux-wireless@vger.kernel.org, libertas-dev@lists.infradead.org, platform-driver-x86@vger.kernel.org, linux-rtc@vger.kernel.org, linux-spi@vger.kernel.org, linux-fbdev@vger.kernel.org, linux-staging@lists.linux.dev, linux-serial@vger.kernel.org, linux-usb@vger.kernel.org, linux-omap@vger.kernel.org, kernel@pengutronix.de Subject: [PATCH 5/5] spi: make remove callback a void function Date: Sun, 23 Jan 2022 18:52:01 +0100 Message-Id: <20220123175201.34839-6-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220123175201.34839-1-u.kleine-koenig@pengutronix.de> References: <20220123175201.34839-1-u.kleine-koenig@pengutronix.de> Precedence: bulk X-Mailing-List: linux-staging@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Developer-Signature: v=1; a=openpgp-sha256; l=136955; h=from:subject; bh=mTgAH3ErkqXVYUcCOca3lK9yPv7m+NI0k2rkz3mv030=; b=owGbwMvMwMV48I9IxdpTbzgZT6slMSS+nbozdZKy7F6VnNITCcfFvwis8j2omxhsx/JEV/lKrnB7 0+qjnYzGLAyMXAyyYoosdUVaYhMk1vy3K1nCDTOIlQlkCgMXpwBMxH0pB0Onv4znwXnH3z9xvOdbFh Dcwvbro0GTnaTVSc2CxgbXu9cfVlVY5Z9Lmy2cPt9pzo+w0odRpi+kE3TfifRnVLIt5bvQIld8+ZFw ytsJxS+09Zxt1Z/lKHLHLfwlucCI+dgS7uRXZnM4HCT/ijZppJwRYHU0miE+aW2Ev27DMUPLEx4aIY YfstJ0gpcwlXDoGEacyzm4INJ0mZd+mPdMkfzF7XdW64eyeks9vy8237G5o7Q7OHXxhoKdwbWzvjH5 nlSo2lMS5XSZ57ytwRqGzq4nbLc7/GoENrde/LhndR+XYUHU8q2bH3V0BZbuWi7Sbd/eFiLopO4+a6 u7zhP/eNeHM4un+f8UlZwiuwYA X-Developer-Key: i=u.kleine-koenig@pengutronix.de; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-staging@lists.linux.dev The value returned by an spi driver's remove function is mostly ignored. (Only an error message is printed if the value is non-zero that the error is ignored.) So change the prototype of the remove function to return no value. This way driver authors are not tempted to assume that passing an error to the upper layer is a good idea. All drivers are adapted accordingly. There is no intended change of behaviour, all callbacks were prepared to return 0 before. Signed-off-by: Uwe Kleine-König --- drivers/bus/moxtet.c | 4 +--- drivers/char/tpm/st33zp24/spi.c | 4 +--- drivers/char/tpm/tpm_tis_spi_main.c | 3 +-- drivers/clk/clk-lmk04832.c | 4 +--- drivers/gpio/gpio-74x164.c | 4 +--- drivers/gpio/gpio-max3191x.c | 4 +--- drivers/gpio/gpio-max7301.c | 4 +--- drivers/gpio/gpio-mc33880.c | 4 +--- drivers/gpio/gpio-pisosr.c | 4 +--- drivers/gpu/drm/panel/panel-abt-y030xx067a.c | 4 +--- drivers/gpu/drm/panel/panel-ilitek-ili9322.c | 4 +--- drivers/gpu/drm/panel/panel-ilitek-ili9341.c | 3 +-- drivers/gpu/drm/panel/panel-innolux-ej030na.c | 4 +--- drivers/gpu/drm/panel/panel-lg-lb035q02.c | 4 +--- drivers/gpu/drm/panel/panel-lg-lg4573.c | 4 +--- drivers/gpu/drm/panel/panel-nec-nl8048hl11.c | 4 +--- drivers/gpu/drm/panel/panel-novatek-nt39016.c | 4 +--- drivers/gpu/drm/panel/panel-samsung-db7430.c | 3 +-- drivers/gpu/drm/panel/panel-samsung-ld9040.c | 4 +--- drivers/gpu/drm/panel/panel-samsung-s6d27a1.c | 3 +-- drivers/gpu/drm/panel/panel-samsung-s6e63m0-spi.c | 3 +-- drivers/gpu/drm/panel/panel-sitronix-st7789v.c | 4 +--- drivers/gpu/drm/panel/panel-sony-acx565akm.c | 4 +--- drivers/gpu/drm/panel/panel-tpo-td028ttec1.c | 4 +--- drivers/gpu/drm/panel/panel-tpo-td043mtea1.c | 4 +--- drivers/gpu/drm/panel/panel-tpo-tpg110.c | 3 +-- drivers/gpu/drm/panel/panel-widechips-ws2401.c | 3 +-- drivers/gpu/drm/tiny/hx8357d.c | 4 +--- drivers/gpu/drm/tiny/ili9163.c | 4 +--- drivers/gpu/drm/tiny/ili9225.c | 4 +--- drivers/gpu/drm/tiny/ili9341.c | 4 +--- drivers/gpu/drm/tiny/ili9486.c | 4 +--- drivers/gpu/drm/tiny/mi0283qt.c | 4 +--- drivers/gpu/drm/tiny/repaper.c | 4 +--- drivers/gpu/drm/tiny/st7586.c | 4 +--- drivers/gpu/drm/tiny/st7735r.c | 4 +--- drivers/hwmon/adcxx.c | 4 +--- drivers/hwmon/adt7310.c | 3 +-- drivers/hwmon/max1111.c | 3 +-- drivers/hwmon/max31722.c | 4 +--- drivers/iio/accel/bma400_spi.c | 4 +--- drivers/iio/accel/bmc150-accel-spi.c | 4 +--- drivers/iio/accel/bmi088-accel-spi.c | 4 +--- drivers/iio/accel/kxsd9-spi.c | 4 +--- drivers/iio/accel/mma7455_spi.c | 4 +--- drivers/iio/accel/sca3000.c | 4 +--- drivers/iio/adc/ad7266.c | 4 +--- drivers/iio/adc/ltc2496.c | 4 +--- drivers/iio/adc/mcp320x.c | 4 +--- drivers/iio/adc/mcp3911.c | 4 +--- drivers/iio/adc/ti-adc12138.c | 4 +--- drivers/iio/adc/ti-ads7950.c | 4 +--- drivers/iio/adc/ti-ads8688.c | 4 +--- drivers/iio/adc/ti-tlc4541.c | 4 +--- drivers/iio/amplifiers/ad8366.c | 4 +--- drivers/iio/common/ssp_sensors/ssp_dev.c | 4 +--- drivers/iio/dac/ad5360.c | 4 +--- drivers/iio/dac/ad5380.c | 4 +--- drivers/iio/dac/ad5446.c | 4 +--- drivers/iio/dac/ad5449.c | 4 +--- drivers/iio/dac/ad5504.c | 4 +--- drivers/iio/dac/ad5592r.c | 4 +--- drivers/iio/dac/ad5624r_spi.c | 4 +--- drivers/iio/dac/ad5686-spi.c | 4 +--- drivers/iio/dac/ad5761.c | 4 +--- drivers/iio/dac/ad5764.c | 4 +--- drivers/iio/dac/ad5791.c | 4 +--- drivers/iio/dac/ad8801.c | 4 +--- drivers/iio/dac/ltc1660.c | 4 +--- drivers/iio/dac/ltc2632.c | 4 +--- drivers/iio/dac/mcp4922.c | 4 +--- drivers/iio/dac/ti-dac082s085.c | 4 +--- drivers/iio/dac/ti-dac7311.c | 3 +-- drivers/iio/frequency/adf4350.c | 4 +--- drivers/iio/gyro/bmg160_spi.c | 4 +--- drivers/iio/gyro/fxas21002c_spi.c | 4 +--- drivers/iio/health/afe4403.c | 4 +--- drivers/iio/magnetometer/bmc150_magn_spi.c | 4 +--- drivers/iio/magnetometer/hmc5843_spi.c | 4 +--- drivers/iio/potentiometer/max5487.c | 4 +--- drivers/iio/pressure/ms5611_spi.c | 4 +--- drivers/iio/pressure/zpa2326_spi.c | 4 +--- drivers/input/keyboard/applespi.c | 4 +--- drivers/input/misc/adxl34x-spi.c | 4 +--- drivers/input/touchscreen/ads7846.c | 4 +--- drivers/input/touchscreen/cyttsp4_spi.c | 4 +--- drivers/input/touchscreen/tsc2005.c | 4 +--- drivers/leds/leds-cr0014114.c | 4 +--- drivers/leds/leds-dac124s085.c | 4 +--- drivers/leds/leds-el15203000.c | 4 +--- drivers/leds/leds-spi-byte.c | 4 +--- drivers/media/spi/cxd2880-spi.c | 4 +--- drivers/media/spi/gs1662.c | 4 +--- drivers/media/tuners/msi001.c | 3 +-- drivers/mfd/arizona-spi.c | 4 +--- drivers/mfd/da9052-spi.c | 3 +-- drivers/mfd/ezx-pcap.c | 4 +--- drivers/mfd/madera-spi.c | 4 +--- drivers/mfd/mc13xxx-spi.c | 3 +-- drivers/mfd/rsmu_spi.c | 4 +--- drivers/mfd/stmpe-spi.c | 4 +--- drivers/mfd/tps65912-spi.c | 4 +--- drivers/misc/ad525x_dpot-spi.c | 3 +-- drivers/misc/eeprom/eeprom_93xx46.c | 4 +--- drivers/misc/lattice-ecp3-config.c | 4 +--- drivers/misc/lis3lv02d/lis3lv02d_spi.c | 4 +--- drivers/mmc/host/mmc_spi.c | 3 +-- drivers/mtd/devices/mchp23k256.c | 4 +--- drivers/mtd/devices/mchp48l640.c | 4 +--- drivers/mtd/devices/mtd_dataflash.c | 4 +--- drivers/mtd/devices/sst25l.c | 4 +--- drivers/net/can/m_can/tcan4x5x-core.c | 4 +--- drivers/net/can/spi/hi311x.c | 4 +--- drivers/net/can/spi/mcp251x.c | 4 +--- drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 4 +--- drivers/net/dsa/b53/b53_spi.c | 4 +--- drivers/net/dsa/microchip/ksz8795_spi.c | 4 +--- drivers/net/dsa/microchip/ksz9477_spi.c | 4 +--- drivers/net/dsa/sja1105/sja1105_main.c | 6 ++---- drivers/net/dsa/vitesse-vsc73xx-spi.c | 6 ++---- drivers/net/ethernet/asix/ax88796c_main.c | 4 +--- drivers/net/ethernet/micrel/ks8851_spi.c | 4 +--- drivers/net/ethernet/microchip/enc28j60.c | 4 +--- drivers/net/ethernet/microchip/encx24j600.c | 4 +--- drivers/net/ethernet/qualcomm/qca_spi.c | 4 +--- drivers/net/ethernet/vertexcom/mse102x.c | 4 +--- drivers/net/ethernet/wiznet/w5100-spi.c | 4 +--- drivers/net/ieee802154/adf7242.c | 4 +--- drivers/net/ieee802154/at86rf230.c | 4 +--- drivers/net/ieee802154/ca8210.c | 6 ++---- drivers/net/ieee802154/cc2520.c | 4 +--- drivers/net/ieee802154/mcr20a.c | 4 +--- drivers/net/ieee802154/mrf24j40.c | 4 +--- drivers/net/phy/spi_ks8995.c | 4 +--- drivers/net/wan/slic_ds26522.c | 3 +-- drivers/net/wireless/intersil/p54/p54spi.c | 4 +--- drivers/net/wireless/marvell/libertas/if_spi.c | 4 +--- drivers/net/wireless/microchip/wilc1000/spi.c | 4 +--- drivers/net/wireless/st/cw1200/cw1200_spi.c | 4 +--- drivers/net/wireless/ti/wl1251/spi.c | 4 +--- drivers/net/wireless/ti/wlcore/spi.c | 4 +--- drivers/nfc/nfcmrvl/spi.c | 3 +-- drivers/nfc/st-nci/spi.c | 4 +--- drivers/nfc/st95hf/core.c | 4 +--- drivers/nfc/trf7970a.c | 4 +--- drivers/platform/chrome/cros_ec_spi.c | 4 +--- drivers/platform/olpc/olpc-xo175-ec.c | 4 +--- drivers/rtc/rtc-ds1302.c | 3 +-- drivers/rtc/rtc-ds1305.c | 4 +--- drivers/rtc/rtc-ds1343.c | 4 +--- drivers/spi/spi-mem.c | 6 ++---- drivers/spi/spi-slave-system-control.c | 3 +-- drivers/spi/spi-slave-time.c | 3 +-- drivers/spi/spi-tle62x0.c | 3 +-- drivers/spi/spi.c | 11 ++--------- drivers/spi/spidev.c | 4 +--- drivers/staging/fbtft/fbtft.h | 3 +-- drivers/staging/pi433/pi433_if.c | 4 +--- drivers/staging/wfx/bus_spi.c | 3 +-- drivers/tty/serial/max3100.c | 5 ++--- drivers/tty/serial/max310x.c | 3 +-- drivers/tty/serial/sc16is7xx.c | 4 +--- drivers/usb/gadget/udc/max3420_udc.c | 4 +--- drivers/usb/host/max3421-hcd.c | 3 +-- drivers/video/backlight/ams369fg06.c | 3 +-- drivers/video/backlight/corgi_lcd.c | 3 +-- drivers/video/backlight/ili922x.c | 3 +-- drivers/video/backlight/l4f00242t03.c | 3 +-- drivers/video/backlight/lms501kf03.c | 3 +-- drivers/video/backlight/ltv350qv.c | 3 +-- drivers/video/backlight/tdo24m.c | 3 +-- drivers/video/backlight/tosa_lcd.c | 4 +--- drivers/video/backlight/vgg2432a4.c | 4 +--- drivers/video/fbdev/omap/lcd_mipid.c | 4 +--- .../omap2/omapfb/displays/panel-lgphilips-lb035q02.c | 4 +--- .../omap2/omapfb/displays/panel-nec-nl8048hl11.c | 4 +--- .../omap2/omapfb/displays/panel-sony-acx565akm.c | 4 +--- .../omap2/omapfb/displays/panel-tpo-td028ttec1.c | 4 +--- .../omap2/omapfb/displays/panel-tpo-td043mtea1.c | 4 +--- include/linux/spi/spi.h | 2 +- sound/pci/hda/cs35l41_hda_spi.c | 4 +--- sound/soc/codecs/adau1761-spi.c | 3 +-- sound/soc/codecs/adau1781-spi.c | 3 +-- sound/soc/codecs/cs35l41-spi.c | 4 +--- sound/soc/codecs/pcm3168a-spi.c | 4 +--- sound/soc/codecs/pcm512x-spi.c | 3 +-- sound/soc/codecs/tlv320aic32x4-spi.c | 4 +--- sound/soc/codecs/tlv320aic3x-spi.c | 4 +--- sound/soc/codecs/wm0010.c | 4 +--- sound/soc/codecs/wm8804-spi.c | 3 +-- sound/spi/at73c213.c | 4 +--- 191 files changed, 197 insertions(+), 545 deletions(-) diff --git a/drivers/bus/moxtet.c b/drivers/bus/moxtet.c index fd87a59837fa..5eb0fe73ddc4 100644 --- a/drivers/bus/moxtet.c +++ b/drivers/bus/moxtet.c @@ -815,7 +815,7 @@ static int moxtet_probe(struct spi_device *spi) return 0; } -static int moxtet_remove(struct spi_device *spi) +static void moxtet_remove(struct spi_device *spi) { struct moxtet *moxtet = spi_get_drvdata(spi); @@ -828,8 +828,6 @@ static int moxtet_remove(struct spi_device *spi) device_for_each_child(moxtet->dev, NULL, __unregister); mutex_destroy(&moxtet->lock); - - return 0; } static const struct of_device_id moxtet_dt_ids[] = { diff --git a/drivers/char/tpm/st33zp24/spi.c b/drivers/char/tpm/st33zp24/spi.c index ccd9e42b8eab..22d184884694 100644 --- a/drivers/char/tpm/st33zp24/spi.c +++ b/drivers/char/tpm/st33zp24/spi.c @@ -381,13 +381,11 @@ static int st33zp24_spi_probe(struct spi_device *dev) * @param: client, the spi_device description (TPM SPI description). * @return: 0 in case of success. */ -static int st33zp24_spi_remove(struct spi_device *dev) +static void st33zp24_spi_remove(struct spi_device *dev) { struct tpm_chip *chip = spi_get_drvdata(dev); st33zp24_remove(chip); - - return 0; } static const struct spi_device_id st33zp24_spi_id[] = { diff --git a/drivers/char/tpm/tpm_tis_spi_main.c b/drivers/char/tpm/tpm_tis_spi_main.c index aaa59a00eeae..184396b3af50 100644 --- a/drivers/char/tpm/tpm_tis_spi_main.c +++ b/drivers/char/tpm/tpm_tis_spi_main.c @@ -254,13 +254,12 @@ static int tpm_tis_spi_driver_probe(struct spi_device *spi) static SIMPLE_DEV_PM_OPS(tpm_tis_pm, tpm_pm_suspend, tpm_tis_spi_resume); -static int tpm_tis_spi_remove(struct spi_device *dev) +static void tpm_tis_spi_remove(struct spi_device *dev) { struct tpm_chip *chip = spi_get_drvdata(dev); tpm_chip_unregister(chip); tpm_tis_remove(chip); - return 0; } static const struct spi_device_id tpm_tis_spi_id[] = { diff --git a/drivers/clk/clk-lmk04832.c b/drivers/clk/clk-lmk04832.c index 8f02c0b88000..f416f8bc2898 100644 --- a/drivers/clk/clk-lmk04832.c +++ b/drivers/clk/clk-lmk04832.c @@ -1544,14 +1544,12 @@ static int lmk04832_probe(struct spi_device *spi) return ret; } -static int lmk04832_remove(struct spi_device *spi) +static void lmk04832_remove(struct spi_device *spi) { struct lmk04832 *lmk = spi_get_drvdata(spi); clk_disable_unprepare(lmk->oscin); of_clk_del_provider(spi->dev.of_node); - - return 0; } static const struct spi_device_id lmk04832_id[] = { { "lmk04832", LMK04832 }, diff --git a/drivers/gpio/gpio-74x164.c b/drivers/gpio/gpio-74x164.c index 4a55cdf089d6..e00c33310517 100644 --- a/drivers/gpio/gpio-74x164.c +++ b/drivers/gpio/gpio-74x164.c @@ -163,15 +163,13 @@ static int gen_74x164_probe(struct spi_device *spi) return ret; } -static int gen_74x164_remove(struct spi_device *spi) +static void gen_74x164_remove(struct spi_device *spi) { struct gen_74x164_chip *chip = spi_get_drvdata(spi); gpiod_set_value_cansleep(chip->gpiod_oe, 0); gpiochip_remove(&chip->gpio_chip); mutex_destroy(&chip->lock); - - return 0; } static const struct spi_device_id gen_74x164_spi_ids[] = { diff --git a/drivers/gpio/gpio-max3191x.c b/drivers/gpio/gpio-max3191x.c index 51cd6f98d1c7..161c4751c5f7 100644 --- a/drivers/gpio/gpio-max3191x.c +++ b/drivers/gpio/gpio-max3191x.c @@ -443,14 +443,12 @@ static int max3191x_probe(struct spi_device *spi) return 0; } -static int max3191x_remove(struct spi_device *spi) +static void max3191x_remove(struct spi_device *spi) { struct max3191x_chip *max3191x = spi_get_drvdata(spi); gpiochip_remove(&max3191x->gpio); mutex_destroy(&max3191x->lock); - - return 0; } static int __init max3191x_register_driver(struct spi_driver *sdrv) diff --git a/drivers/gpio/gpio-max7301.c b/drivers/gpio/gpio-max7301.c index 5862d73bf325..11813f41d460 100644 --- a/drivers/gpio/gpio-max7301.c +++ b/drivers/gpio/gpio-max7301.c @@ -64,11 +64,9 @@ static int max7301_probe(struct spi_device *spi) return ret; } -static int max7301_remove(struct spi_device *spi) +static void max7301_remove(struct spi_device *spi) { __max730x_remove(&spi->dev); - - return 0; } static const struct spi_device_id max7301_id[] = { diff --git a/drivers/gpio/gpio-mc33880.c b/drivers/gpio/gpio-mc33880.c index 31d2be1bebc8..cd9b16dbe1a9 100644 --- a/drivers/gpio/gpio-mc33880.c +++ b/drivers/gpio/gpio-mc33880.c @@ -134,7 +134,7 @@ static int mc33880_probe(struct spi_device *spi) return ret; } -static int mc33880_remove(struct spi_device *spi) +static void mc33880_remove(struct spi_device *spi) { struct mc33880 *mc; @@ -142,8 +142,6 @@ static int mc33880_remove(struct spi_device *spi) gpiochip_remove(&mc->chip); mutex_destroy(&mc->lock); - - return 0; } static struct spi_driver mc33880_driver = { diff --git a/drivers/gpio/gpio-pisosr.c b/drivers/gpio/gpio-pisosr.c index 8e04054cf07e..81a47ae09ff8 100644 --- a/drivers/gpio/gpio-pisosr.c +++ b/drivers/gpio/gpio-pisosr.c @@ -163,15 +163,13 @@ static int pisosr_gpio_probe(struct spi_device *spi) return 0; } -static int pisosr_gpio_remove(struct spi_device *spi) +static void pisosr_gpio_remove(struct spi_device *spi) { struct pisosr_gpio *gpio = spi_get_drvdata(spi); gpiochip_remove(&gpio->chip); mutex_destroy(&gpio->lock); - - return 0; } static const struct spi_device_id pisosr_gpio_id_table[] = { diff --git a/drivers/gpu/drm/panel/panel-abt-y030xx067a.c b/drivers/gpu/drm/panel/panel-abt-y030xx067a.c index f043b484055b..ed626fdc08e8 100644 --- a/drivers/gpu/drm/panel/panel-abt-y030xx067a.c +++ b/drivers/gpu/drm/panel/panel-abt-y030xx067a.c @@ -293,15 +293,13 @@ static int y030xx067a_probe(struct spi_device *spi) return 0; } -static int y030xx067a_remove(struct spi_device *spi) +static void y030xx067a_remove(struct spi_device *spi) { struct y030xx067a *priv = spi_get_drvdata(spi); drm_panel_remove(&priv->panel); drm_panel_disable(&priv->panel); drm_panel_unprepare(&priv->panel); - - return 0; } static const struct drm_display_mode y030xx067a_modes[] = { diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9322.c b/drivers/gpu/drm/panel/panel-ilitek-ili9322.c index 8e84df9a0033..3dfafa585127 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9322.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9322.c @@ -896,14 +896,12 @@ static int ili9322_probe(struct spi_device *spi) return 0; } -static int ili9322_remove(struct spi_device *spi) +static void ili9322_remove(struct spi_device *spi) { struct ili9322 *ili = spi_get_drvdata(spi); ili9322_power_off(ili); drm_panel_remove(&ili->panel); - - return 0; } /* diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9341.c b/drivers/gpu/drm/panel/panel-ilitek-ili9341.c index 2c3378a259b1..a07ef26234e5 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9341.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9341.c @@ -728,7 +728,7 @@ static int ili9341_probe(struct spi_device *spi) return -1; } -static int ili9341_remove(struct spi_device *spi) +static void ili9341_remove(struct spi_device *spi) { const struct spi_device_id *id = spi_get_device_id(spi); struct ili9341 *ili = spi_get_drvdata(spi); @@ -741,7 +741,6 @@ static int ili9341_remove(struct spi_device *spi) drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); } - return 0; } static void ili9341_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/panel/panel-innolux-ej030na.c b/drivers/gpu/drm/panel/panel-innolux-ej030na.c index c558de3f99be..e3b1daa0cb72 100644 --- a/drivers/gpu/drm/panel/panel-innolux-ej030na.c +++ b/drivers/gpu/drm/panel/panel-innolux-ej030na.c @@ -219,15 +219,13 @@ static int ej030na_probe(struct spi_device *spi) return 0; } -static int ej030na_remove(struct spi_device *spi) +static void ej030na_remove(struct spi_device *spi) { struct ej030na *priv = spi_get_drvdata(spi); drm_panel_remove(&priv->panel); drm_panel_disable(&priv->panel); drm_panel_unprepare(&priv->panel); - - return 0; } static const struct drm_display_mode ej030na_modes[] = { diff --git a/drivers/gpu/drm/panel/panel-lg-lb035q02.c b/drivers/gpu/drm/panel/panel-lg-lb035q02.c index f3183b68704f..9d0d4faa3f58 100644 --- a/drivers/gpu/drm/panel/panel-lg-lb035q02.c +++ b/drivers/gpu/drm/panel/panel-lg-lb035q02.c @@ -203,14 +203,12 @@ static int lb035q02_probe(struct spi_device *spi) return 0; } -static int lb035q02_remove(struct spi_device *spi) +static void lb035q02_remove(struct spi_device *spi) { struct lb035q02_device *lcd = spi_get_drvdata(spi); drm_panel_remove(&lcd->panel); drm_panel_disable(&lcd->panel); - - return 0; } static const struct of_device_id lb035q02_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-lg-lg4573.c b/drivers/gpu/drm/panel/panel-lg-lg4573.c index 8e5160af1de5..cf246d15b7b6 100644 --- a/drivers/gpu/drm/panel/panel-lg-lg4573.c +++ b/drivers/gpu/drm/panel/panel-lg-lg4573.c @@ -266,14 +266,12 @@ static int lg4573_probe(struct spi_device *spi) return 0; } -static int lg4573_remove(struct spi_device *spi) +static void lg4573_remove(struct spi_device *spi) { struct lg4573 *ctx = spi_get_drvdata(spi); lg4573_display_off(ctx); drm_panel_remove(&ctx->panel); - - return 0; } static const struct of_device_id lg4573_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-nec-nl8048hl11.c b/drivers/gpu/drm/panel/panel-nec-nl8048hl11.c index 6e5ab1debc8b..81c5c541a351 100644 --- a/drivers/gpu/drm/panel/panel-nec-nl8048hl11.c +++ b/drivers/gpu/drm/panel/panel-nec-nl8048hl11.c @@ -212,15 +212,13 @@ static int nl8048_probe(struct spi_device *spi) return 0; } -static int nl8048_remove(struct spi_device *spi) +static void nl8048_remove(struct spi_device *spi) { struct nl8048_panel *lcd = spi_get_drvdata(spi); drm_panel_remove(&lcd->panel); drm_panel_disable(&lcd->panel); drm_panel_unprepare(&lcd->panel); - - return 0; } static const struct of_device_id nl8048_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-novatek-nt39016.c b/drivers/gpu/drm/panel/panel-novatek-nt39016.c index d036853db865..f58cfb10b58a 100644 --- a/drivers/gpu/drm/panel/panel-novatek-nt39016.c +++ b/drivers/gpu/drm/panel/panel-novatek-nt39016.c @@ -292,7 +292,7 @@ static int nt39016_probe(struct spi_device *spi) return 0; } -static int nt39016_remove(struct spi_device *spi) +static void nt39016_remove(struct spi_device *spi) { struct nt39016 *panel = spi_get_drvdata(spi); @@ -300,8 +300,6 @@ static int nt39016_remove(struct spi_device *spi) nt39016_disable(&panel->drm_panel); nt39016_unprepare(&panel->drm_panel); - - return 0; } static const struct drm_display_mode kd035g6_display_modes[] = { diff --git a/drivers/gpu/drm/panel/panel-samsung-db7430.c b/drivers/gpu/drm/panel/panel-samsung-db7430.c index ead479719f00..04640c5256a8 100644 --- a/drivers/gpu/drm/panel/panel-samsung-db7430.c +++ b/drivers/gpu/drm/panel/panel-samsung-db7430.c @@ -314,12 +314,11 @@ static int db7430_probe(struct spi_device *spi) return 0; } -static int db7430_remove(struct spi_device *spi) +static void db7430_remove(struct spi_device *spi) { struct db7430 *db = spi_get_drvdata(spi); drm_panel_remove(&db->panel); - return 0; } /* diff --git a/drivers/gpu/drm/panel/panel-samsung-ld9040.c b/drivers/gpu/drm/panel/panel-samsung-ld9040.c index c4b388850a13..01eb211f32f7 100644 --- a/drivers/gpu/drm/panel/panel-samsung-ld9040.c +++ b/drivers/gpu/drm/panel/panel-samsung-ld9040.c @@ -358,14 +358,12 @@ static int ld9040_probe(struct spi_device *spi) return 0; } -static int ld9040_remove(struct spi_device *spi) +static void ld9040_remove(struct spi_device *spi) { struct ld9040 *ctx = spi_get_drvdata(spi); ld9040_power_off(ctx); drm_panel_remove(&ctx->panel); - - return 0; } static const struct of_device_id ld9040_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-samsung-s6d27a1.c b/drivers/gpu/drm/panel/panel-samsung-s6d27a1.c index 1696ceb36aa0..2adb223a895c 100644 --- a/drivers/gpu/drm/panel/panel-samsung-s6d27a1.c +++ b/drivers/gpu/drm/panel/panel-samsung-s6d27a1.c @@ -291,12 +291,11 @@ static int s6d27a1_probe(struct spi_device *spi) return 0; } -static int s6d27a1_remove(struct spi_device *spi) +static void s6d27a1_remove(struct spi_device *spi) { struct s6d27a1 *ctx = spi_get_drvdata(spi); drm_panel_remove(&ctx->panel); - return 0; } static const struct of_device_id s6d27a1_match[] = { diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e63m0-spi.c b/drivers/gpu/drm/panel/panel-samsung-s6e63m0-spi.c index c178d962b0d5..d99afcc672ca 100644 --- a/drivers/gpu/drm/panel/panel-samsung-s6e63m0-spi.c +++ b/drivers/gpu/drm/panel/panel-samsung-s6e63m0-spi.c @@ -62,10 +62,9 @@ static int s6e63m0_spi_probe(struct spi_device *spi) s6e63m0_spi_dcs_write, false); } -static int s6e63m0_spi_remove(struct spi_device *spi) +static void s6e63m0_spi_remove(struct spi_device *spi) { s6e63m0_remove(&spi->dev); - return 0; } static const struct of_device_id s6e63m0_spi_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c index 61e565524542..bbc4569cbcdc 100644 --- a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c +++ b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c @@ -387,13 +387,11 @@ static int st7789v_probe(struct spi_device *spi) return 0; } -static int st7789v_remove(struct spi_device *spi) +static void st7789v_remove(struct spi_device *spi) { struct st7789v *ctx = spi_get_drvdata(spi); drm_panel_remove(&ctx->panel); - - return 0; } static const struct of_device_id st7789v_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-sony-acx565akm.c b/drivers/gpu/drm/panel/panel-sony-acx565akm.c index ba0b3ead150f..0d7541a33f87 100644 --- a/drivers/gpu/drm/panel/panel-sony-acx565akm.c +++ b/drivers/gpu/drm/panel/panel-sony-acx565akm.c @@ -655,7 +655,7 @@ static int acx565akm_probe(struct spi_device *spi) return 0; } -static int acx565akm_remove(struct spi_device *spi) +static void acx565akm_remove(struct spi_device *spi) { struct acx565akm_panel *lcd = spi_get_drvdata(spi); @@ -666,8 +666,6 @@ static int acx565akm_remove(struct spi_device *spi) drm_panel_disable(&lcd->panel); drm_panel_unprepare(&lcd->panel); - - return 0; } static const struct of_device_id acx565akm_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-tpo-td028ttec1.c b/drivers/gpu/drm/panel/panel-tpo-td028ttec1.c index ba0c00d1a001..4dbf8b88f264 100644 --- a/drivers/gpu/drm/panel/panel-tpo-td028ttec1.c +++ b/drivers/gpu/drm/panel/panel-tpo-td028ttec1.c @@ -350,15 +350,13 @@ static int td028ttec1_probe(struct spi_device *spi) return 0; } -static int td028ttec1_remove(struct spi_device *spi) +static void td028ttec1_remove(struct spi_device *spi) { struct td028ttec1_panel *lcd = spi_get_drvdata(spi); drm_panel_remove(&lcd->panel); drm_panel_disable(&lcd->panel); drm_panel_unprepare(&lcd->panel); - - return 0; } static const struct of_device_id td028ttec1_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-tpo-td043mtea1.c b/drivers/gpu/drm/panel/panel-tpo-td043mtea1.c index 1866cdb8f9c1..cf4609bb9b1d 100644 --- a/drivers/gpu/drm/panel/panel-tpo-td043mtea1.c +++ b/drivers/gpu/drm/panel/panel-tpo-td043mtea1.c @@ -463,7 +463,7 @@ static int td043mtea1_probe(struct spi_device *spi) return 0; } -static int td043mtea1_remove(struct spi_device *spi) +static void td043mtea1_remove(struct spi_device *spi) { struct td043mtea1_panel *lcd = spi_get_drvdata(spi); @@ -472,8 +472,6 @@ static int td043mtea1_remove(struct spi_device *spi) drm_panel_unprepare(&lcd->panel); sysfs_remove_group(&spi->dev.kobj, &td043mtea1_attr_group); - - return 0; } static const struct of_device_id td043mtea1_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-tpo-tpg110.c b/drivers/gpu/drm/panel/panel-tpo-tpg110.c index e3791dad6830..0b1f5a11a055 100644 --- a/drivers/gpu/drm/panel/panel-tpo-tpg110.c +++ b/drivers/gpu/drm/panel/panel-tpo-tpg110.c @@ -450,12 +450,11 @@ static int tpg110_probe(struct spi_device *spi) return 0; } -static int tpg110_remove(struct spi_device *spi) +static void tpg110_remove(struct spi_device *spi) { struct tpg110 *tpg = spi_get_drvdata(spi); drm_panel_remove(&tpg->panel); - return 0; } static const struct of_device_id tpg110_match[] = { diff --git a/drivers/gpu/drm/panel/panel-widechips-ws2401.c b/drivers/gpu/drm/panel/panel-widechips-ws2401.c index 8bc976f54b80..236f3cb2b594 100644 --- a/drivers/gpu/drm/panel/panel-widechips-ws2401.c +++ b/drivers/gpu/drm/panel/panel-widechips-ws2401.c @@ -407,12 +407,11 @@ static int ws2401_probe(struct spi_device *spi) return 0; } -static int ws2401_remove(struct spi_device *spi) +static void ws2401_remove(struct spi_device *spi) { struct ws2401 *ws = spi_get_drvdata(spi); drm_panel_remove(&ws->panel); - return 0; } /* diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c index 9b33c05732aa..ebb025543f8d 100644 --- a/drivers/gpu/drm/tiny/hx8357d.c +++ b/drivers/gpu/drm/tiny/hx8357d.c @@ -263,14 +263,12 @@ static int hx8357d_probe(struct spi_device *spi) return 0; } -static int hx8357d_remove(struct spi_device *spi) +static void hx8357d_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void hx8357d_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/ili9163.c b/drivers/gpu/drm/tiny/ili9163.c index bcc181351236..fc8ed245b0bc 100644 --- a/drivers/gpu/drm/tiny/ili9163.c +++ b/drivers/gpu/drm/tiny/ili9163.c @@ -193,14 +193,12 @@ static int ili9163_probe(struct spi_device *spi) return 0; } -static int ili9163_remove(struct spi_device *spi) +static void ili9163_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void ili9163_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c index 976d3209f164..cc92eb9f2a07 100644 --- a/drivers/gpu/drm/tiny/ili9225.c +++ b/drivers/gpu/drm/tiny/ili9225.c @@ -411,14 +411,12 @@ static int ili9225_probe(struct spi_device *spi) return 0; } -static int ili9225_remove(struct spi_device *spi) +static void ili9225_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void ili9225_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c index 37e0c33399c8..5b8cc770ee7b 100644 --- a/drivers/gpu/drm/tiny/ili9341.c +++ b/drivers/gpu/drm/tiny/ili9341.c @@ -225,14 +225,12 @@ static int ili9341_probe(struct spi_device *spi) return 0; } -static int ili9341_remove(struct spi_device *spi) +static void ili9341_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void ili9341_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c index e9a63f4b2993..6d655e18e0aa 100644 --- a/drivers/gpu/drm/tiny/ili9486.c +++ b/drivers/gpu/drm/tiny/ili9486.c @@ -243,14 +243,12 @@ static int ili9486_probe(struct spi_device *spi) return 0; } -static int ili9486_remove(struct spi_device *spi) +static void ili9486_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void ili9486_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c index 023de49e7a8e..5e060f6910bb 100644 --- a/drivers/gpu/drm/tiny/mi0283qt.c +++ b/drivers/gpu/drm/tiny/mi0283qt.c @@ -233,14 +233,12 @@ static int mi0283qt_probe(struct spi_device *spi) return 0; } -static int mi0283qt_remove(struct spi_device *spi) +static void mi0283qt_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void mi0283qt_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c index 97a775c48cea..beeeb170d0b1 100644 --- a/drivers/gpu/drm/tiny/repaper.c +++ b/drivers/gpu/drm/tiny/repaper.c @@ -1140,14 +1140,12 @@ static int repaper_probe(struct spi_device *spi) return 0; } -static int repaper_remove(struct spi_device *spi) +static void repaper_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void repaper_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c index 51b9b9fb3ead..3f38faa1cd8c 100644 --- a/drivers/gpu/drm/tiny/st7586.c +++ b/drivers/gpu/drm/tiny/st7586.c @@ -360,14 +360,12 @@ static int st7586_probe(struct spi_device *spi) return 0; } -static int st7586_remove(struct spi_device *spi) +static void st7586_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void st7586_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c index fc40dd10efa8..29d618093e94 100644 --- a/drivers/gpu/drm/tiny/st7735r.c +++ b/drivers/gpu/drm/tiny/st7735r.c @@ -247,14 +247,12 @@ static int st7735r_probe(struct spi_device *spi) return 0; } -static int st7735r_remove(struct spi_device *spi) +static void st7735r_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void st7735r_shutdown(struct spi_device *spi) diff --git a/drivers/hwmon/adcxx.c b/drivers/hwmon/adcxx.c index e5bc5ce09f4e..de37bce24fa6 100644 --- a/drivers/hwmon/adcxx.c +++ b/drivers/hwmon/adcxx.c @@ -194,7 +194,7 @@ static int adcxx_probe(struct spi_device *spi) return status; } -static int adcxx_remove(struct spi_device *spi) +static void adcxx_remove(struct spi_device *spi) { struct adcxx *adc = spi_get_drvdata(spi); int i; @@ -205,8 +205,6 @@ static int adcxx_remove(struct spi_device *spi) device_remove_file(&spi->dev, &ad_input[i].dev_attr); mutex_unlock(&adc->lock); - - return 0; } static const struct spi_device_id adcxx_ids[] = { diff --git a/drivers/hwmon/adt7310.c b/drivers/hwmon/adt7310.c index c40cac16af68..832d9ec64934 100644 --- a/drivers/hwmon/adt7310.c +++ b/drivers/hwmon/adt7310.c @@ -88,10 +88,9 @@ static int adt7310_spi_probe(struct spi_device *spi) &adt7310_spi_ops); } -static int adt7310_spi_remove(struct spi_device *spi) +static void adt7310_spi_remove(struct spi_device *spi) { adt7x10_remove(&spi->dev, spi->irq); - return 0; } static const struct spi_device_id adt7310_id[] = { diff --git a/drivers/hwmon/max1111.c b/drivers/hwmon/max1111.c index 5fcfd57df61e..4c5487aeb3cf 100644 --- a/drivers/hwmon/max1111.c +++ b/drivers/hwmon/max1111.c @@ -254,7 +254,7 @@ static int max1111_probe(struct spi_device *spi) return err; } -static int max1111_remove(struct spi_device *spi) +static void max1111_remove(struct spi_device *spi) { struct max1111_data *data = spi_get_drvdata(spi); @@ -265,7 +265,6 @@ static int max1111_remove(struct spi_device *spi) sysfs_remove_group(&spi->dev.kobj, &max1110_attr_group); sysfs_remove_group(&spi->dev.kobj, &max1111_attr_group); mutex_destroy(&data->drvdata_lock); - return 0; } static const struct spi_device_id max1111_ids[] = { diff --git a/drivers/hwmon/max31722.c b/drivers/hwmon/max31722.c index 4cf4fe6809a3..93e048ee4955 100644 --- a/drivers/hwmon/max31722.c +++ b/drivers/hwmon/max31722.c @@ -100,7 +100,7 @@ static int max31722_probe(struct spi_device *spi) return 0; } -static int max31722_remove(struct spi_device *spi) +static void max31722_remove(struct spi_device *spi) { struct max31722_data *data = spi_get_drvdata(spi); int ret; @@ -111,8 +111,6 @@ static int max31722_remove(struct spi_device *spi) if (ret) /* There is nothing we can do about this ... */ dev_warn(&spi->dev, "Failed to put device in stand-by mode\n"); - - return 0; } static int __maybe_unused max31722_suspend(struct device *dev) diff --git a/drivers/iio/accel/bma400_spi.c b/drivers/iio/accel/bma400_spi.c index 9f622e37477b..9040a717b247 100644 --- a/drivers/iio/accel/bma400_spi.c +++ b/drivers/iio/accel/bma400_spi.c @@ -87,11 +87,9 @@ static int bma400_spi_probe(struct spi_device *spi) return bma400_probe(&spi->dev, regmap, id->name); } -static int bma400_spi_remove(struct spi_device *spi) +static void bma400_spi_remove(struct spi_device *spi) { bma400_remove(&spi->dev); - - return 0; } static const struct spi_device_id bma400_spi_ids[] = { diff --git a/drivers/iio/accel/bmc150-accel-spi.c b/drivers/iio/accel/bmc150-accel-spi.c index 11559567cb39..80007cc2d044 100644 --- a/drivers/iio/accel/bmc150-accel-spi.c +++ b/drivers/iio/accel/bmc150-accel-spi.c @@ -35,11 +35,9 @@ static int bmc150_accel_probe(struct spi_device *spi) true); } -static int bmc150_accel_remove(struct spi_device *spi) +static void bmc150_accel_remove(struct spi_device *spi) { bmc150_accel_core_remove(&spi->dev); - - return 0; } static const struct acpi_device_id bmc150_accel_acpi_match[] = { diff --git a/drivers/iio/accel/bmi088-accel-spi.c b/drivers/iio/accel/bmi088-accel-spi.c index 758ad2f12896..06d99d9949f3 100644 --- a/drivers/iio/accel/bmi088-accel-spi.c +++ b/drivers/iio/accel/bmi088-accel-spi.c @@ -56,11 +56,9 @@ static int bmi088_accel_probe(struct spi_device *spi) true); } -static int bmi088_accel_remove(struct spi_device *spi) +static void bmi088_accel_remove(struct spi_device *spi) { bmi088_accel_core_remove(&spi->dev); - - return 0; } static const struct spi_device_id bmi088_accel_id[] = { diff --git a/drivers/iio/accel/kxsd9-spi.c b/drivers/iio/accel/kxsd9-spi.c index 441e6b764281..57c451cfb9e5 100644 --- a/drivers/iio/accel/kxsd9-spi.c +++ b/drivers/iio/accel/kxsd9-spi.c @@ -32,11 +32,9 @@ static int kxsd9_spi_probe(struct spi_device *spi) spi_get_device_id(spi)->name); } -static int kxsd9_spi_remove(struct spi_device *spi) +static void kxsd9_spi_remove(struct spi_device *spi) { kxsd9_common_remove(&spi->dev); - - return 0; } static const struct spi_device_id kxsd9_spi_id[] = { diff --git a/drivers/iio/accel/mma7455_spi.c b/drivers/iio/accel/mma7455_spi.c index ecf690692dcc..b746031551a3 100644 --- a/drivers/iio/accel/mma7455_spi.c +++ b/drivers/iio/accel/mma7455_spi.c @@ -22,11 +22,9 @@ static int mma7455_spi_probe(struct spi_device *spi) return mma7455_core_probe(&spi->dev, regmap, id->name); } -static int mma7455_spi_remove(struct spi_device *spi) +static void mma7455_spi_remove(struct spi_device *spi) { mma7455_core_remove(&spi->dev); - - return 0; } static const struct spi_device_id mma7455_spi_ids[] = { diff --git a/drivers/iio/accel/sca3000.c b/drivers/iio/accel/sca3000.c index 43ecacbdc95a..83c81072511e 100644 --- a/drivers/iio/accel/sca3000.c +++ b/drivers/iio/accel/sca3000.c @@ -1524,7 +1524,7 @@ static int sca3000_stop_all_interrupts(struct sca3000_state *st) return ret; } -static int sca3000_remove(struct spi_device *spi) +static void sca3000_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct sca3000_state *st = iio_priv(indio_dev); @@ -1535,8 +1535,6 @@ static int sca3000_remove(struct spi_device *spi) sca3000_stop_all_interrupts(st); if (spi->irq) free_irq(spi->irq, indio_dev); - - return 0; } static const struct spi_device_id sca3000_id[] = { diff --git a/drivers/iio/adc/ad7266.c b/drivers/iio/adc/ad7266.c index 1d345d66742d..c17d9b5fbaf6 100644 --- a/drivers/iio/adc/ad7266.c +++ b/drivers/iio/adc/ad7266.c @@ -479,7 +479,7 @@ static int ad7266_probe(struct spi_device *spi) return ret; } -static int ad7266_remove(struct spi_device *spi) +static void ad7266_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad7266_state *st = iio_priv(indio_dev); @@ -488,8 +488,6 @@ static int ad7266_remove(struct spi_device *spi) iio_triggered_buffer_cleanup(indio_dev); if (!IS_ERR(st->reg)) regulator_disable(st->reg); - - return 0; } static const struct spi_device_id ad7266_id[] = { diff --git a/drivers/iio/adc/ltc2496.c b/drivers/iio/adc/ltc2496.c index dd956a7c216e..5a55f79f2574 100644 --- a/drivers/iio/adc/ltc2496.c +++ b/drivers/iio/adc/ltc2496.c @@ -78,13 +78,11 @@ static int ltc2496_probe(struct spi_device *spi) return ltc2497core_probe(dev, indio_dev); } -static int ltc2496_remove(struct spi_device *spi) +static void ltc2496_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); ltc2497core_remove(indio_dev); - - return 0; } static const struct of_device_id ltc2496_of_match[] = { diff --git a/drivers/iio/adc/mcp320x.c b/drivers/iio/adc/mcp320x.c index 8d1cff28cae0..b4c69acb33e3 100644 --- a/drivers/iio/adc/mcp320x.c +++ b/drivers/iio/adc/mcp320x.c @@ -459,15 +459,13 @@ static int mcp320x_probe(struct spi_device *spi) return ret; } -static int mcp320x_remove(struct spi_device *spi) +static void mcp320x_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct mcp320x *adc = iio_priv(indio_dev); iio_device_unregister(indio_dev); regulator_disable(adc->reg); - - return 0; } static const struct of_device_id mcp320x_dt_ids[] = { diff --git a/drivers/iio/adc/mcp3911.c b/drivers/iio/adc/mcp3911.c index 13535f148c4c..1cb4590fe412 100644 --- a/drivers/iio/adc/mcp3911.c +++ b/drivers/iio/adc/mcp3911.c @@ -321,7 +321,7 @@ static int mcp3911_probe(struct spi_device *spi) return ret; } -static int mcp3911_remove(struct spi_device *spi) +static void mcp3911_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct mcp3911 *adc = iio_priv(indio_dev); @@ -331,8 +331,6 @@ static int mcp3911_remove(struct spi_device *spi) clk_disable_unprepare(adc->clki); if (adc->vref) regulator_disable(adc->vref); - - return 0; } static const struct of_device_id mcp3911_dt_ids[] = { diff --git a/drivers/iio/adc/ti-adc12138.c b/drivers/iio/adc/ti-adc12138.c index 6eb62b564dae..59d75d09604f 100644 --- a/drivers/iio/adc/ti-adc12138.c +++ b/drivers/iio/adc/ti-adc12138.c @@ -503,7 +503,7 @@ static int adc12138_probe(struct spi_device *spi) return ret; } -static int adc12138_remove(struct spi_device *spi) +static void adc12138_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct adc12138 *adc = iio_priv(indio_dev); @@ -514,8 +514,6 @@ static int adc12138_remove(struct spi_device *spi) regulator_disable(adc->vref_n); regulator_disable(adc->vref_p); clk_disable_unprepare(adc->cclk); - - return 0; } static const struct of_device_id adc12138_dt_ids[] = { diff --git a/drivers/iio/adc/ti-ads7950.c b/drivers/iio/adc/ti-ads7950.c index a7efa3eada2c..e3658b969c5b 100644 --- a/drivers/iio/adc/ti-ads7950.c +++ b/drivers/iio/adc/ti-ads7950.c @@ -662,7 +662,7 @@ static int ti_ads7950_probe(struct spi_device *spi) return ret; } -static int ti_ads7950_remove(struct spi_device *spi) +static void ti_ads7950_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ti_ads7950_state *st = iio_priv(indio_dev); @@ -672,8 +672,6 @@ static int ti_ads7950_remove(struct spi_device *spi) iio_triggered_buffer_cleanup(indio_dev); regulator_disable(st->reg); mutex_destroy(&st->slock); - - return 0; } static const struct spi_device_id ti_ads7950_id[] = { diff --git a/drivers/iio/adc/ti-ads8688.c b/drivers/iio/adc/ti-ads8688.c index 2e24717d7f55..22c2583eedd0 100644 --- a/drivers/iio/adc/ti-ads8688.c +++ b/drivers/iio/adc/ti-ads8688.c @@ -479,7 +479,7 @@ static int ads8688_probe(struct spi_device *spi) return ret; } -static int ads8688_remove(struct spi_device *spi) +static void ads8688_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ads8688_state *st = iio_priv(indio_dev); @@ -489,8 +489,6 @@ static int ads8688_remove(struct spi_device *spi) if (!IS_ERR(st->reg)) regulator_disable(st->reg); - - return 0; } static const struct spi_device_id ads8688_id[] = { diff --git a/drivers/iio/adc/ti-tlc4541.c b/drivers/iio/adc/ti-tlc4541.c index 403b787f9f7e..2406eda9dfc6 100644 --- a/drivers/iio/adc/ti-tlc4541.c +++ b/drivers/iio/adc/ti-tlc4541.c @@ -224,7 +224,7 @@ static int tlc4541_probe(struct spi_device *spi) return ret; } -static int tlc4541_remove(struct spi_device *spi) +static void tlc4541_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct tlc4541_state *st = iio_priv(indio_dev); @@ -232,8 +232,6 @@ static int tlc4541_remove(struct spi_device *spi) iio_device_unregister(indio_dev); iio_triggered_buffer_cleanup(indio_dev); regulator_disable(st->reg); - - return 0; } static const struct of_device_id tlc4541_dt_ids[] = { diff --git a/drivers/iio/amplifiers/ad8366.c b/drivers/iio/amplifiers/ad8366.c index cfcf18a0bce8..1134ae12e531 100644 --- a/drivers/iio/amplifiers/ad8366.c +++ b/drivers/iio/amplifiers/ad8366.c @@ -298,7 +298,7 @@ static int ad8366_probe(struct spi_device *spi) return ret; } -static int ad8366_remove(struct spi_device *spi) +static void ad8366_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad8366_state *st = iio_priv(indio_dev); @@ -308,8 +308,6 @@ static int ad8366_remove(struct spi_device *spi) if (!IS_ERR(reg)) regulator_disable(reg); - - return 0; } static const struct spi_device_id ad8366_id[] = { diff --git a/drivers/iio/common/ssp_sensors/ssp_dev.c b/drivers/iio/common/ssp_sensors/ssp_dev.c index 1aee87100038..eafaf4529df5 100644 --- a/drivers/iio/common/ssp_sensors/ssp_dev.c +++ b/drivers/iio/common/ssp_sensors/ssp_dev.c @@ -586,7 +586,7 @@ static int ssp_probe(struct spi_device *spi) return ret; } -static int ssp_remove(struct spi_device *spi) +static void ssp_remove(struct spi_device *spi) { struct ssp_data *data = spi_get_drvdata(spi); @@ -608,8 +608,6 @@ static int ssp_remove(struct spi_device *spi) mutex_destroy(&data->pending_lock); mfd_remove_devices(&spi->dev); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/iio/dac/ad5360.c b/drivers/iio/dac/ad5360.c index 2d3b14c407d8..ecbc6a51d60f 100644 --- a/drivers/iio/dac/ad5360.c +++ b/drivers/iio/dac/ad5360.c @@ -521,7 +521,7 @@ static int ad5360_probe(struct spi_device *spi) return ret; } -static int ad5360_remove(struct spi_device *spi) +static void ad5360_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad5360_state *st = iio_priv(indio_dev); @@ -531,8 +531,6 @@ static int ad5360_remove(struct spi_device *spi) kfree(indio_dev->channels); regulator_bulk_disable(st->chip_info->num_vrefs, st->vref_reg); - - return 0; } static const struct spi_device_id ad5360_ids[] = { diff --git a/drivers/iio/dac/ad5380.c b/drivers/iio/dac/ad5380.c index e38860a6a9f3..82e1d9bd773e 100644 --- a/drivers/iio/dac/ad5380.c +++ b/drivers/iio/dac/ad5380.c @@ -488,11 +488,9 @@ static int ad5380_spi_probe(struct spi_device *spi) return ad5380_probe(&spi->dev, regmap, id->driver_data, id->name); } -static int ad5380_spi_remove(struct spi_device *spi) +static void ad5380_spi_remove(struct spi_device *spi) { ad5380_remove(&spi->dev); - - return 0; } static const struct spi_device_id ad5380_spi_ids[] = { diff --git a/drivers/iio/dac/ad5446.c b/drivers/iio/dac/ad5446.c index 1c9b54c012a7..14cfabacbea5 100644 --- a/drivers/iio/dac/ad5446.c +++ b/drivers/iio/dac/ad5446.c @@ -491,11 +491,9 @@ static int ad5446_spi_probe(struct spi_device *spi) &ad5446_spi_chip_info[id->driver_data]); } -static int ad5446_spi_remove(struct spi_device *spi) +static void ad5446_spi_remove(struct spi_device *spi) { ad5446_remove(&spi->dev); - - return 0; } static struct spi_driver ad5446_spi_driver = { diff --git a/drivers/iio/dac/ad5449.c b/drivers/iio/dac/ad5449.c index f5e93c6acc9d..bad9bdaafa94 100644 --- a/drivers/iio/dac/ad5449.c +++ b/drivers/iio/dac/ad5449.c @@ -330,7 +330,7 @@ static int ad5449_spi_probe(struct spi_device *spi) return ret; } -static int ad5449_spi_remove(struct spi_device *spi) +static void ad5449_spi_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad5449 *st = iio_priv(indio_dev); @@ -338,8 +338,6 @@ static int ad5449_spi_remove(struct spi_device *spi) iio_device_unregister(indio_dev); regulator_bulk_disable(st->chip_info->num_channels, st->vref_reg); - - return 0; } static const struct spi_device_id ad5449_spi_ids[] = { diff --git a/drivers/iio/dac/ad5504.c b/drivers/iio/dac/ad5504.c index b631261efa97..8507573aa13e 100644 --- a/drivers/iio/dac/ad5504.c +++ b/drivers/iio/dac/ad5504.c @@ -336,7 +336,7 @@ static int ad5504_probe(struct spi_device *spi) return ret; } -static int ad5504_remove(struct spi_device *spi) +static void ad5504_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad5504_state *st = iio_priv(indio_dev); @@ -345,8 +345,6 @@ static int ad5504_remove(struct spi_device *spi) if (!IS_ERR(st->reg)) regulator_disable(st->reg); - - return 0; } static const struct spi_device_id ad5504_id[] = { diff --git a/drivers/iio/dac/ad5592r.c b/drivers/iio/dac/ad5592r.c index 6bfd7951e18c..0f7abfa75bec 100644 --- a/drivers/iio/dac/ad5592r.c +++ b/drivers/iio/dac/ad5592r.c @@ -130,11 +130,9 @@ static int ad5592r_spi_probe(struct spi_device *spi) return ad5592r_probe(&spi->dev, id->name, &ad5592r_rw_ops); } -static int ad5592r_spi_remove(struct spi_device *spi) +static void ad5592r_spi_remove(struct spi_device *spi) { ad5592r_remove(&spi->dev); - - return 0; } static const struct spi_device_id ad5592r_spi_ids[] = { diff --git a/drivers/iio/dac/ad5624r_spi.c b/drivers/iio/dac/ad5624r_spi.c index 3c98941b9f99..371e812850eb 100644 --- a/drivers/iio/dac/ad5624r_spi.c +++ b/drivers/iio/dac/ad5624r_spi.c @@ -293,7 +293,7 @@ static int ad5624r_probe(struct spi_device *spi) return ret; } -static int ad5624r_remove(struct spi_device *spi) +static void ad5624r_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad5624r_state *st = iio_priv(indio_dev); @@ -301,8 +301,6 @@ static int ad5624r_remove(struct spi_device *spi) iio_device_unregister(indio_dev); if (!IS_ERR(st->reg)) regulator_disable(st->reg); - - return 0; } static const struct spi_device_id ad5624r_id[] = { diff --git a/drivers/iio/dac/ad5686-spi.c b/drivers/iio/dac/ad5686-spi.c index 2628810fdbb1..d26fb29b6b04 100644 --- a/drivers/iio/dac/ad5686-spi.c +++ b/drivers/iio/dac/ad5686-spi.c @@ -95,11 +95,9 @@ static int ad5686_spi_probe(struct spi_device *spi) ad5686_spi_write, ad5686_spi_read); } -static int ad5686_spi_remove(struct spi_device *spi) +static void ad5686_spi_remove(struct spi_device *spi) { ad5686_remove(&spi->dev); - - return 0; } static const struct spi_device_id ad5686_spi_id[] = { diff --git a/drivers/iio/dac/ad5761.c b/drivers/iio/dac/ad5761.c index e37e095e94fc..4cb8471db81e 100644 --- a/drivers/iio/dac/ad5761.c +++ b/drivers/iio/dac/ad5761.c @@ -394,7 +394,7 @@ static int ad5761_probe(struct spi_device *spi) return ret; } -static int ad5761_remove(struct spi_device *spi) +static void ad5761_remove(struct spi_device *spi) { struct iio_dev *iio_dev = spi_get_drvdata(spi); struct ad5761_state *st = iio_priv(iio_dev); @@ -403,8 +403,6 @@ static int ad5761_remove(struct spi_device *spi) if (!IS_ERR_OR_NULL(st->vref_reg)) regulator_disable(st->vref_reg); - - return 0; } static const struct spi_device_id ad5761_id[] = { diff --git a/drivers/iio/dac/ad5764.c b/drivers/iio/dac/ad5764.c index ae089b9145cb..d235a8047ba0 100644 --- a/drivers/iio/dac/ad5764.c +++ b/drivers/iio/dac/ad5764.c @@ -332,7 +332,7 @@ static int ad5764_probe(struct spi_device *spi) return ret; } -static int ad5764_remove(struct spi_device *spi) +static void ad5764_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad5764_state *st = iio_priv(indio_dev); @@ -341,8 +341,6 @@ static int ad5764_remove(struct spi_device *spi) if (st->chip_info->int_vref == 0) regulator_bulk_disable(ARRAY_SIZE(st->vref_reg), st->vref_reg); - - return 0; } static const struct spi_device_id ad5764_ids[] = { diff --git a/drivers/iio/dac/ad5791.c b/drivers/iio/dac/ad5791.c index 7b4579d73d18..2b14914b4050 100644 --- a/drivers/iio/dac/ad5791.c +++ b/drivers/iio/dac/ad5791.c @@ -428,7 +428,7 @@ static int ad5791_probe(struct spi_device *spi) return ret; } -static int ad5791_remove(struct spi_device *spi) +static void ad5791_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad5791_state *st = iio_priv(indio_dev); @@ -439,8 +439,6 @@ static int ad5791_remove(struct spi_device *spi) if (!IS_ERR(st->reg_vss)) regulator_disable(st->reg_vss); - - return 0; } static const struct spi_device_id ad5791_id[] = { diff --git a/drivers/iio/dac/ad8801.c b/drivers/iio/dac/ad8801.c index 5ecfdad54dec..6be35c92d435 100644 --- a/drivers/iio/dac/ad8801.c +++ b/drivers/iio/dac/ad8801.c @@ -193,7 +193,7 @@ static int ad8801_probe(struct spi_device *spi) return ret; } -static int ad8801_remove(struct spi_device *spi) +static void ad8801_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad8801_state *state = iio_priv(indio_dev); @@ -202,8 +202,6 @@ static int ad8801_remove(struct spi_device *spi) if (state->vrefl_reg) regulator_disable(state->vrefl_reg); regulator_disable(state->vrefh_reg); - - return 0; } static const struct spi_device_id ad8801_ids[] = { diff --git a/drivers/iio/dac/ltc1660.c b/drivers/iio/dac/ltc1660.c index f6ec9bf5815e..c76233c9bb72 100644 --- a/drivers/iio/dac/ltc1660.c +++ b/drivers/iio/dac/ltc1660.c @@ -206,15 +206,13 @@ static int ltc1660_probe(struct spi_device *spi) return ret; } -static int ltc1660_remove(struct spi_device *spi) +static void ltc1660_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ltc1660_priv *priv = iio_priv(indio_dev); iio_device_unregister(indio_dev); regulator_disable(priv->vref_reg); - - return 0; } static const struct of_device_id ltc1660_dt_ids[] = { diff --git a/drivers/iio/dac/ltc2632.c b/drivers/iio/dac/ltc2632.c index 53e4b887d372..aed46c80757e 100644 --- a/drivers/iio/dac/ltc2632.c +++ b/drivers/iio/dac/ltc2632.c @@ -372,7 +372,7 @@ static int ltc2632_probe(struct spi_device *spi) return iio_device_register(indio_dev); } -static int ltc2632_remove(struct spi_device *spi) +static void ltc2632_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ltc2632_state *st = iio_priv(indio_dev); @@ -381,8 +381,6 @@ static int ltc2632_remove(struct spi_device *spi) if (st->vref_reg) regulator_disable(st->vref_reg); - - return 0; } static const struct spi_device_id ltc2632_id[] = { diff --git a/drivers/iio/dac/mcp4922.c b/drivers/iio/dac/mcp4922.c index 0ae414ee1716..cb9e60e71b91 100644 --- a/drivers/iio/dac/mcp4922.c +++ b/drivers/iio/dac/mcp4922.c @@ -172,7 +172,7 @@ static int mcp4922_probe(struct spi_device *spi) return ret; } -static int mcp4922_remove(struct spi_device *spi) +static void mcp4922_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct mcp4922_state *state; @@ -180,8 +180,6 @@ static int mcp4922_remove(struct spi_device *spi) iio_device_unregister(indio_dev); state = iio_priv(indio_dev); regulator_disable(state->vref_reg); - - return 0; } static const struct spi_device_id mcp4922_id[] = { diff --git a/drivers/iio/dac/ti-dac082s085.c b/drivers/iio/dac/ti-dac082s085.c index 6beda2193683..4e1156e6deb2 100644 --- a/drivers/iio/dac/ti-dac082s085.c +++ b/drivers/iio/dac/ti-dac082s085.c @@ -313,7 +313,7 @@ static int ti_dac_probe(struct spi_device *spi) return ret; } -static int ti_dac_remove(struct spi_device *spi) +static void ti_dac_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ti_dac_chip *ti_dac = iio_priv(indio_dev); @@ -321,8 +321,6 @@ static int ti_dac_remove(struct spi_device *spi) iio_device_unregister(indio_dev); mutex_destroy(&ti_dac->lock); regulator_disable(ti_dac->vref); - - return 0; } static const struct of_device_id ti_dac_of_id[] = { diff --git a/drivers/iio/dac/ti-dac7311.c b/drivers/iio/dac/ti-dac7311.c index 99f275829ec2..e10d17e60ed3 100644 --- a/drivers/iio/dac/ti-dac7311.c +++ b/drivers/iio/dac/ti-dac7311.c @@ -292,7 +292,7 @@ static int ti_dac_probe(struct spi_device *spi) return ret; } -static int ti_dac_remove(struct spi_device *spi) +static void ti_dac_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ti_dac_chip *ti_dac = iio_priv(indio_dev); @@ -300,7 +300,6 @@ static int ti_dac_remove(struct spi_device *spi) iio_device_unregister(indio_dev); mutex_destroy(&ti_dac->lock); regulator_disable(ti_dac->vref); - return 0; } static const struct of_device_id ti_dac_of_id[] = { diff --git a/drivers/iio/frequency/adf4350.c b/drivers/iio/frequency/adf4350.c index 3d9eba716b69..f3521330f6fb 100644 --- a/drivers/iio/frequency/adf4350.c +++ b/drivers/iio/frequency/adf4350.c @@ -589,7 +589,7 @@ static int adf4350_probe(struct spi_device *spi) return ret; } -static int adf4350_remove(struct spi_device *spi) +static void adf4350_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct adf4350_state *st = iio_priv(indio_dev); @@ -604,8 +604,6 @@ static int adf4350_remove(struct spi_device *spi) if (!IS_ERR(reg)) regulator_disable(reg); - - return 0; } static const struct of_device_id adf4350_of_match[] = { diff --git a/drivers/iio/gyro/bmg160_spi.c b/drivers/iio/gyro/bmg160_spi.c index 745962e1e423..fc2e453527b9 100644 --- a/drivers/iio/gyro/bmg160_spi.c +++ b/drivers/iio/gyro/bmg160_spi.c @@ -27,11 +27,9 @@ static int bmg160_spi_probe(struct spi_device *spi) return bmg160_core_probe(&spi->dev, regmap, spi->irq, id->name); } -static int bmg160_spi_remove(struct spi_device *spi) +static void bmg160_spi_remove(struct spi_device *spi) { bmg160_core_remove(&spi->dev); - - return 0; } static const struct spi_device_id bmg160_spi_id[] = { diff --git a/drivers/iio/gyro/fxas21002c_spi.c b/drivers/iio/gyro/fxas21002c_spi.c index 77ceebef4e34..c3ac169facf9 100644 --- a/drivers/iio/gyro/fxas21002c_spi.c +++ b/drivers/iio/gyro/fxas21002c_spi.c @@ -34,11 +34,9 @@ static int fxas21002c_spi_probe(struct spi_device *spi) return fxas21002c_core_probe(&spi->dev, regmap, spi->irq, id->name); } -static int fxas21002c_spi_remove(struct spi_device *spi) +static void fxas21002c_spi_remove(struct spi_device *spi) { fxas21002c_core_remove(&spi->dev); - - return 0; } static const struct spi_device_id fxas21002c_spi_id[] = { diff --git a/drivers/iio/health/afe4403.c b/drivers/iio/health/afe4403.c index 273f16dcaff8..856ec901b091 100644 --- a/drivers/iio/health/afe4403.c +++ b/drivers/iio/health/afe4403.c @@ -570,7 +570,7 @@ static int afe4403_probe(struct spi_device *spi) return ret; } -static int afe4403_remove(struct spi_device *spi) +static void afe4403_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct afe4403_data *afe = iio_priv(indio_dev); @@ -586,8 +586,6 @@ static int afe4403_remove(struct spi_device *spi) ret = regulator_disable(afe->regulator); if (ret) dev_warn(afe->dev, "Unable to disable regulator\n"); - - return 0; } static const struct spi_device_id afe4403_ids[] = { diff --git a/drivers/iio/magnetometer/bmc150_magn_spi.c b/drivers/iio/magnetometer/bmc150_magn_spi.c index c6ed3ea8460a..4c570412d65c 100644 --- a/drivers/iio/magnetometer/bmc150_magn_spi.c +++ b/drivers/iio/magnetometer/bmc150_magn_spi.c @@ -29,11 +29,9 @@ static int bmc150_magn_spi_probe(struct spi_device *spi) return bmc150_magn_probe(&spi->dev, regmap, spi->irq, id->name); } -static int bmc150_magn_spi_remove(struct spi_device *spi) +static void bmc150_magn_spi_remove(struct spi_device *spi) { bmc150_magn_remove(&spi->dev); - - return 0; } static const struct spi_device_id bmc150_magn_spi_id[] = { diff --git a/drivers/iio/magnetometer/hmc5843_spi.c b/drivers/iio/magnetometer/hmc5843_spi.c index 89cf59a62c28..a99dd9b33e95 100644 --- a/drivers/iio/magnetometer/hmc5843_spi.c +++ b/drivers/iio/magnetometer/hmc5843_spi.c @@ -74,11 +74,9 @@ static int hmc5843_spi_probe(struct spi_device *spi) id->driver_data, id->name); } -static int hmc5843_spi_remove(struct spi_device *spi) +static void hmc5843_spi_remove(struct spi_device *spi) { hmc5843_common_remove(&spi->dev); - - return 0; } static const struct spi_device_id hmc5843_id[] = { diff --git a/drivers/iio/potentiometer/max5487.c b/drivers/iio/potentiometer/max5487.c index 007c2bd324cb..42723c996c9f 100644 --- a/drivers/iio/potentiometer/max5487.c +++ b/drivers/iio/potentiometer/max5487.c @@ -112,7 +112,7 @@ static int max5487_spi_probe(struct spi_device *spi) return iio_device_register(indio_dev); } -static int max5487_spi_remove(struct spi_device *spi) +static void max5487_spi_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); int ret; @@ -123,8 +123,6 @@ static int max5487_spi_remove(struct spi_device *spi) ret = max5487_write_cmd(spi, MAX5487_COPY_AB_TO_NV); if (ret) dev_warn(&spi->dev, "Failed to save wiper regs to NV regs\n"); - - return 0; } static const struct spi_device_id max5487_id[] = { diff --git a/drivers/iio/pressure/ms5611_spi.c b/drivers/iio/pressure/ms5611_spi.c index 9fa2dcd71760..7ccd960ced5d 100644 --- a/drivers/iio/pressure/ms5611_spi.c +++ b/drivers/iio/pressure/ms5611_spi.c @@ -107,11 +107,9 @@ static int ms5611_spi_probe(struct spi_device *spi) spi_get_device_id(spi)->driver_data); } -static int ms5611_spi_remove(struct spi_device *spi) +static void ms5611_spi_remove(struct spi_device *spi) { ms5611_remove(spi_get_drvdata(spi)); - - return 0; } static const struct of_device_id ms5611_spi_matches[] = { diff --git a/drivers/iio/pressure/zpa2326_spi.c b/drivers/iio/pressure/zpa2326_spi.c index 85201a4bae44..ee8ed77536ca 100644 --- a/drivers/iio/pressure/zpa2326_spi.c +++ b/drivers/iio/pressure/zpa2326_spi.c @@ -57,11 +57,9 @@ static int zpa2326_probe_spi(struct spi_device *spi) spi->irq, ZPA2326_DEVICE_ID, regmap); } -static int zpa2326_remove_spi(struct spi_device *spi) +static void zpa2326_remove_spi(struct spi_device *spi) { zpa2326_remove(&spi->dev); - - return 0; } static const struct spi_device_id zpa2326_spi_ids[] = { diff --git a/drivers/input/keyboard/applespi.c b/drivers/input/keyboard/applespi.c index eda1b23002b5..d1f5354d5ea2 100644 --- a/drivers/input/keyboard/applespi.c +++ b/drivers/input/keyboard/applespi.c @@ -1858,7 +1858,7 @@ static void applespi_drain_reads(struct applespi_data *applespi) spin_unlock_irqrestore(&applespi->cmd_msg_lock, flags); } -static int applespi_remove(struct spi_device *spi) +static void applespi_remove(struct spi_device *spi) { struct applespi_data *applespi = spi_get_drvdata(spi); @@ -1871,8 +1871,6 @@ static int applespi_remove(struct spi_device *spi) applespi_drain_reads(applespi); debugfs_remove_recursive(applespi->debugfs_root); - - return 0; } static void applespi_shutdown(struct spi_device *spi) diff --git a/drivers/input/misc/adxl34x-spi.c b/drivers/input/misc/adxl34x-spi.c index 6e51c9bc619f..91e44d4c66f7 100644 --- a/drivers/input/misc/adxl34x-spi.c +++ b/drivers/input/misc/adxl34x-spi.c @@ -87,13 +87,11 @@ static int adxl34x_spi_probe(struct spi_device *spi) return 0; } -static int adxl34x_spi_remove(struct spi_device *spi) +static void adxl34x_spi_remove(struct spi_device *spi) { struct adxl34x *ac = spi_get_drvdata(spi); adxl34x_remove(ac); - - return 0; } static int __maybe_unused adxl34x_spi_suspend(struct device *dev) diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c index a25a77dd9a32..bed68a68f330 100644 --- a/drivers/input/touchscreen/ads7846.c +++ b/drivers/input/touchscreen/ads7846.c @@ -1411,13 +1411,11 @@ static int ads7846_probe(struct spi_device *spi) return 0; } -static int ads7846_remove(struct spi_device *spi) +static void ads7846_remove(struct spi_device *spi) { struct ads7846 *ts = spi_get_drvdata(spi); ads7846_stop(ts); - - return 0; } static struct spi_driver ads7846_driver = { diff --git a/drivers/input/touchscreen/cyttsp4_spi.c b/drivers/input/touchscreen/cyttsp4_spi.c index 2aec41eb76b7..5d7db84f2749 100644 --- a/drivers/input/touchscreen/cyttsp4_spi.c +++ b/drivers/input/touchscreen/cyttsp4_spi.c @@ -164,12 +164,10 @@ static int cyttsp4_spi_probe(struct spi_device *spi) return PTR_ERR_OR_ZERO(ts); } -static int cyttsp4_spi_remove(struct spi_device *spi) +static void cyttsp4_spi_remove(struct spi_device *spi) { struct cyttsp4 *ts = spi_get_drvdata(spi); cyttsp4_remove(ts); - - return 0; } static struct spi_driver cyttsp4_spi_driver = { diff --git a/drivers/input/touchscreen/tsc2005.c b/drivers/input/touchscreen/tsc2005.c index a2f55920b9b2..555dfe98b3c4 100644 --- a/drivers/input/touchscreen/tsc2005.c +++ b/drivers/input/touchscreen/tsc2005.c @@ -64,11 +64,9 @@ static int tsc2005_probe(struct spi_device *spi) tsc2005_cmd); } -static int tsc2005_remove(struct spi_device *spi) +static void tsc2005_remove(struct spi_device *spi) { tsc200x_remove(&spi->dev); - - return 0; } #ifdef CONFIG_OF diff --git a/drivers/leds/leds-cr0014114.c b/drivers/leds/leds-cr0014114.c index d03cfd3c0bfb..c87686bd7c18 100644 --- a/drivers/leds/leds-cr0014114.c +++ b/drivers/leds/leds-cr0014114.c @@ -266,14 +266,12 @@ static int cr0014114_probe(struct spi_device *spi) return 0; } -static int cr0014114_remove(struct spi_device *spi) +static void cr0014114_remove(struct spi_device *spi) { struct cr0014114 *priv = spi_get_drvdata(spi); cancel_delayed_work_sync(&priv->work); mutex_destroy(&priv->lock); - - return 0; } static const struct of_device_id cr0014114_dt_ids[] = { diff --git a/drivers/leds/leds-dac124s085.c b/drivers/leds/leds-dac124s085.c index 20dc9b9d7dea..cf5fb1195f87 100644 --- a/drivers/leds/leds-dac124s085.c +++ b/drivers/leds/leds-dac124s085.c @@ -85,15 +85,13 @@ static int dac124s085_probe(struct spi_device *spi) return ret; } -static int dac124s085_remove(struct spi_device *spi) +static void dac124s085_remove(struct spi_device *spi) { struct dac124s085 *dac = spi_get_drvdata(spi); int i; for (i = 0; i < ARRAY_SIZE(dac->leds); i++) led_classdev_unregister(&dac->leds[i].ldev); - - return 0; } static struct spi_driver dac124s085_driver = { diff --git a/drivers/leds/leds-el15203000.c b/drivers/leds/leds-el15203000.c index f9eb59a25570..7e7b617bcd56 100644 --- a/drivers/leds/leds-el15203000.c +++ b/drivers/leds/leds-el15203000.c @@ -315,13 +315,11 @@ static int el15203000_probe(struct spi_device *spi) return el15203000_probe_dt(priv); } -static int el15203000_remove(struct spi_device *spi) +static void el15203000_remove(struct spi_device *spi) { struct el15203000 *priv = spi_get_drvdata(spi); mutex_destroy(&priv->lock); - - return 0; } static const struct of_device_id el15203000_dt_ids[] = { diff --git a/drivers/leds/leds-spi-byte.c b/drivers/leds/leds-spi-byte.c index f1964c96fb15..2bc5c99daf51 100644 --- a/drivers/leds/leds-spi-byte.c +++ b/drivers/leds/leds-spi-byte.c @@ -130,13 +130,11 @@ static int spi_byte_probe(struct spi_device *spi) return 0; } -static int spi_byte_remove(struct spi_device *spi) +static void spi_byte_remove(struct spi_device *spi) { struct spi_byte_led *led = spi_get_drvdata(spi); mutex_destroy(&led->mutex); - - return 0; } static struct spi_driver spi_byte_driver = { diff --git a/drivers/media/spi/cxd2880-spi.c b/drivers/media/spi/cxd2880-spi.c index 6f2a66bc87fb..6be4e5528879 100644 --- a/drivers/media/spi/cxd2880-spi.c +++ b/drivers/media/spi/cxd2880-spi.c @@ -625,7 +625,7 @@ cxd2880_spi_probe(struct spi_device *spi) return ret; } -static int +static void cxd2880_spi_remove(struct spi_device *spi) { struct cxd2880_dvb_spi *dvb_spi = spi_get_drvdata(spi); @@ -643,8 +643,6 @@ cxd2880_spi_remove(struct spi_device *spi) kfree(dvb_spi); pr_info("cxd2880_spi remove ok.\n"); - - return 0; } static const struct spi_device_id cxd2880_spi_id[] = { diff --git a/drivers/media/spi/gs1662.c b/drivers/media/spi/gs1662.c index f86ef1ca1288..75c21a93e6d0 100644 --- a/drivers/media/spi/gs1662.c +++ b/drivers/media/spi/gs1662.c @@ -458,13 +458,11 @@ static int gs_probe(struct spi_device *spi) return ret; } -static int gs_remove(struct spi_device *spi) +static void gs_remove(struct spi_device *spi) { struct v4l2_subdev *sd = spi_get_drvdata(spi); v4l2_device_unregister_subdev(sd); - - return 0; } static struct spi_driver gs_driver = { diff --git a/drivers/media/tuners/msi001.c b/drivers/media/tuners/msi001.c index 44247049a319..ad6c72c1ed04 100644 --- a/drivers/media/tuners/msi001.c +++ b/drivers/media/tuners/msi001.c @@ -472,7 +472,7 @@ static int msi001_probe(struct spi_device *spi) return ret; } -static int msi001_remove(struct spi_device *spi) +static void msi001_remove(struct spi_device *spi) { struct v4l2_subdev *sd = spi_get_drvdata(spi); struct msi001_dev *dev = sd_to_msi001_dev(sd); @@ -486,7 +486,6 @@ static int msi001_remove(struct spi_device *spi) v4l2_device_unregister_subdev(&dev->sd); v4l2_ctrl_handler_free(&dev->hdl); kfree(dev); - return 0; } static const struct spi_device_id msi001_id_table[] = { diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c index 9fe06dda3782..03620c8efe34 100644 --- a/drivers/mfd/arizona-spi.c +++ b/drivers/mfd/arizona-spi.c @@ -206,13 +206,11 @@ static int arizona_spi_probe(struct spi_device *spi) return arizona_dev_init(arizona); } -static int arizona_spi_remove(struct spi_device *spi) +static void arizona_spi_remove(struct spi_device *spi) { struct arizona *arizona = spi_get_drvdata(spi); arizona_dev_exit(arizona); - - return 0; } static const struct spi_device_id arizona_spi_ids[] = { diff --git a/drivers/mfd/da9052-spi.c b/drivers/mfd/da9052-spi.c index 5faf3766a5e2..b79a57b45c1e 100644 --- a/drivers/mfd/da9052-spi.c +++ b/drivers/mfd/da9052-spi.c @@ -55,12 +55,11 @@ static int da9052_spi_probe(struct spi_device *spi) return da9052_device_init(da9052, id->driver_data); } -static int da9052_spi_remove(struct spi_device *spi) +static void da9052_spi_remove(struct spi_device *spi) { struct da9052 *da9052 = spi_get_drvdata(spi); da9052_device_exit(da9052); - return 0; } static const struct spi_device_id da9052_spi_id[] = { diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c index 70fa18b04ad2..2280f756f422 100644 --- a/drivers/mfd/ezx-pcap.c +++ b/drivers/mfd/ezx-pcap.c @@ -392,7 +392,7 @@ static int pcap_add_subdev(struct pcap_chip *pcap, return ret; } -static int ezx_pcap_remove(struct spi_device *spi) +static void ezx_pcap_remove(struct spi_device *spi) { struct pcap_chip *pcap = spi_get_drvdata(spi); unsigned long flags; @@ -412,8 +412,6 @@ static int ezx_pcap_remove(struct spi_device *spi) irq_set_chip_and_handler(i, NULL, NULL); destroy_workqueue(pcap->workqueue); - - return 0; } static int ezx_pcap_probe(struct spi_device *spi) diff --git a/drivers/mfd/madera-spi.c b/drivers/mfd/madera-spi.c index e860f5ff0933..da84eb50e53a 100644 --- a/drivers/mfd/madera-spi.c +++ b/drivers/mfd/madera-spi.c @@ -112,13 +112,11 @@ static int madera_spi_probe(struct spi_device *spi) return madera_dev_init(madera); } -static int madera_spi_remove(struct spi_device *spi) +static void madera_spi_remove(struct spi_device *spi) { struct madera *madera = spi_get_drvdata(spi); madera_dev_exit(madera); - - return 0; } static const struct spi_device_id madera_spi_ids[] = { diff --git a/drivers/mfd/mc13xxx-spi.c b/drivers/mfd/mc13xxx-spi.c index 4d8913d647e6..f803527e5819 100644 --- a/drivers/mfd/mc13xxx-spi.c +++ b/drivers/mfd/mc13xxx-spi.c @@ -166,10 +166,9 @@ static int mc13xxx_spi_probe(struct spi_device *spi) return mc13xxx_common_init(&spi->dev); } -static int mc13xxx_spi_remove(struct spi_device *spi) +static void mc13xxx_spi_remove(struct spi_device *spi) { mc13xxx_common_exit(&spi->dev); - return 0; } static struct spi_driver mc13xxx_spi_driver = { diff --git a/drivers/mfd/rsmu_spi.c b/drivers/mfd/rsmu_spi.c index fec2b4ec477c..d2f3d8f1e05a 100644 --- a/drivers/mfd/rsmu_spi.c +++ b/drivers/mfd/rsmu_spi.c @@ -220,13 +220,11 @@ static int rsmu_spi_probe(struct spi_device *client) return rsmu_core_init(rsmu); } -static int rsmu_spi_remove(struct spi_device *client) +static void rsmu_spi_remove(struct spi_device *client) { struct rsmu_ddata *rsmu = spi_get_drvdata(client); rsmu_core_exit(rsmu); - - return 0; } static const struct spi_device_id rsmu_spi_id[] = { diff --git a/drivers/mfd/stmpe-spi.c b/drivers/mfd/stmpe-spi.c index 6c5915016be5..ad8055a0e286 100644 --- a/drivers/mfd/stmpe-spi.c +++ b/drivers/mfd/stmpe-spi.c @@ -102,13 +102,11 @@ stmpe_spi_probe(struct spi_device *spi) return stmpe_probe(&spi_ci, id->driver_data); } -static int stmpe_spi_remove(struct spi_device *spi) +static void stmpe_spi_remove(struct spi_device *spi) { struct stmpe *stmpe = spi_get_drvdata(spi); stmpe_remove(stmpe); - - return 0; } static const struct of_device_id stmpe_spi_of_match[] = { diff --git a/drivers/mfd/tps65912-spi.c b/drivers/mfd/tps65912-spi.c index d701926aa46e..bba38fbc781d 100644 --- a/drivers/mfd/tps65912-spi.c +++ b/drivers/mfd/tps65912-spi.c @@ -50,13 +50,11 @@ static int tps65912_spi_probe(struct spi_device *spi) return tps65912_device_init(tps); } -static int tps65912_spi_remove(struct spi_device *spi) +static void tps65912_spi_remove(struct spi_device *spi) { struct tps65912 *tps = spi_get_drvdata(spi); tps65912_device_exit(tps); - - return 0; } static const struct spi_device_id tps65912_spi_id_table[] = { diff --git a/drivers/misc/ad525x_dpot-spi.c b/drivers/misc/ad525x_dpot-spi.c index a9e75d80ad36..263055bda48b 100644 --- a/drivers/misc/ad525x_dpot-spi.c +++ b/drivers/misc/ad525x_dpot-spi.c @@ -90,10 +90,9 @@ static int ad_dpot_spi_probe(struct spi_device *spi) spi_get_device_id(spi)->name); } -static int ad_dpot_spi_remove(struct spi_device *spi) +static void ad_dpot_spi_remove(struct spi_device *spi) { ad_dpot_remove(&spi->dev); - return 0; } static const struct spi_device_id ad_dpot_spi_id[] = { diff --git a/drivers/misc/eeprom/eeprom_93xx46.c b/drivers/misc/eeprom/eeprom_93xx46.c index 1f15399e5cb4..b630625b3024 100644 --- a/drivers/misc/eeprom/eeprom_93xx46.c +++ b/drivers/misc/eeprom/eeprom_93xx46.c @@ -555,14 +555,12 @@ static int eeprom_93xx46_probe(struct spi_device *spi) return 0; } -static int eeprom_93xx46_remove(struct spi_device *spi) +static void eeprom_93xx46_remove(struct spi_device *spi) { struct eeprom_93xx46_dev *edev = spi_get_drvdata(spi); if (!(edev->pdata->flags & EE_READONLY)) device_remove_file(&spi->dev, &dev_attr_erase); - - return 0; } static struct spi_driver eeprom_93xx46_driver = { diff --git a/drivers/misc/lattice-ecp3-config.c b/drivers/misc/lattice-ecp3-config.c index 98828030b5a4..bac4df2e5231 100644 --- a/drivers/misc/lattice-ecp3-config.c +++ b/drivers/misc/lattice-ecp3-config.c @@ -211,13 +211,11 @@ static int lattice_ecp3_probe(struct spi_device *spi) return 0; } -static int lattice_ecp3_remove(struct spi_device *spi) +static void lattice_ecp3_remove(struct spi_device *spi) { struct fpga_data *data = spi_get_drvdata(spi); wait_for_completion(&data->fw_loaded); - - return 0; } static const struct spi_device_id lattice_ecp3_id[] = { diff --git a/drivers/misc/lis3lv02d/lis3lv02d_spi.c b/drivers/misc/lis3lv02d/lis3lv02d_spi.c index 9e40dfb60742..203a108b8883 100644 --- a/drivers/misc/lis3lv02d/lis3lv02d_spi.c +++ b/drivers/misc/lis3lv02d/lis3lv02d_spi.c @@ -96,15 +96,13 @@ static int lis302dl_spi_probe(struct spi_device *spi) return lis3lv02d_init_device(&lis3_dev); } -static int lis302dl_spi_remove(struct spi_device *spi) +static void lis302dl_spi_remove(struct spi_device *spi) { struct lis3lv02d *lis3 = spi_get_drvdata(spi); lis3lv02d_joystick_disable(lis3); lis3lv02d_poweroff(lis3); lis3lv02d_remove_fs(&lis3_dev); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c index a576181e9db0..106dd204b1a7 100644 --- a/drivers/mmc/host/mmc_spi.c +++ b/drivers/mmc/host/mmc_spi.c @@ -1489,7 +1489,7 @@ static int mmc_spi_probe(struct spi_device *spi) } -static int mmc_spi_remove(struct spi_device *spi) +static void mmc_spi_remove(struct spi_device *spi) { struct mmc_host *mmc = dev_get_drvdata(&spi->dev); struct mmc_spi_host *host = mmc_priv(mmc); @@ -1507,7 +1507,6 @@ static int mmc_spi_remove(struct spi_device *spi) spi->max_speed_hz = mmc->f_max; mmc_spi_put_pdata(spi); mmc_free_host(mmc); - return 0; } static const struct spi_device_id mmc_spi_dev_ids[] = { diff --git a/drivers/mtd/devices/mchp23k256.c b/drivers/mtd/devices/mchp23k256.c index a8b31bddf14b..008df9d8898d 100644 --- a/drivers/mtd/devices/mchp23k256.c +++ b/drivers/mtd/devices/mchp23k256.c @@ -209,13 +209,11 @@ static int mchp23k256_probe(struct spi_device *spi) return 0; } -static int mchp23k256_remove(struct spi_device *spi) +static void mchp23k256_remove(struct spi_device *spi) { struct mchp23k256_flash *flash = spi_get_drvdata(spi); WARN_ON(mtd_device_unregister(&flash->mtd)); - - return 0; } static const struct of_device_id mchp23k256_of_table[] = { diff --git a/drivers/mtd/devices/mchp48l640.c b/drivers/mtd/devices/mchp48l640.c index 231a10790196..a3fd426df74b 100644 --- a/drivers/mtd/devices/mchp48l640.c +++ b/drivers/mtd/devices/mchp48l640.c @@ -341,13 +341,11 @@ static int mchp48l640_probe(struct spi_device *spi) return 0; } -static int mchp48l640_remove(struct spi_device *spi) +static void mchp48l640_remove(struct spi_device *spi) { struct mchp48l640_flash *flash = spi_get_drvdata(spi); WARN_ON(mtd_device_unregister(&flash->mtd)); - - return 0; } static const struct of_device_id mchp48l640_of_table[] = { diff --git a/drivers/mtd/devices/mtd_dataflash.c b/drivers/mtd/devices/mtd_dataflash.c index 734878abaa23..134e27328597 100644 --- a/drivers/mtd/devices/mtd_dataflash.c +++ b/drivers/mtd/devices/mtd_dataflash.c @@ -916,7 +916,7 @@ static int dataflash_probe(struct spi_device *spi) return status; } -static int dataflash_remove(struct spi_device *spi) +static void dataflash_remove(struct spi_device *spi) { struct dataflash *flash = spi_get_drvdata(spi); @@ -925,8 +925,6 @@ static int dataflash_remove(struct spi_device *spi) WARN_ON(mtd_device_unregister(&flash->mtd)); kfree(flash); - - return 0; } static struct spi_driver dataflash_driver = { diff --git a/drivers/mtd/devices/sst25l.c b/drivers/mtd/devices/sst25l.c index 7f124c1bfa40..8813994ce9f4 100644 --- a/drivers/mtd/devices/sst25l.c +++ b/drivers/mtd/devices/sst25l.c @@ -398,13 +398,11 @@ static int sst25l_probe(struct spi_device *spi) return 0; } -static int sst25l_remove(struct spi_device *spi) +static void sst25l_remove(struct spi_device *spi) { struct sst25l_flash *flash = spi_get_drvdata(spi); WARN_ON(mtd_device_unregister(&flash->mtd)); - - return 0; } static struct spi_driver sst25l_driver = { diff --git a/drivers/net/can/m_can/tcan4x5x-core.c b/drivers/net/can/m_can/tcan4x5x-core.c index 04687b15b250..41645a24384c 100644 --- a/drivers/net/can/m_can/tcan4x5x-core.c +++ b/drivers/net/can/m_can/tcan4x5x-core.c @@ -388,7 +388,7 @@ static int tcan4x5x_can_probe(struct spi_device *spi) return ret; } -static int tcan4x5x_can_remove(struct spi_device *spi) +static void tcan4x5x_can_remove(struct spi_device *spi) { struct tcan4x5x_priv *priv = spi_get_drvdata(spi); @@ -397,8 +397,6 @@ static int tcan4x5x_can_remove(struct spi_device *spi) tcan4x5x_power_enable(priv->power, 0); m_can_class_free_dev(priv->cdev.net); - - return 0; } static const struct of_device_id tcan4x5x_of_match[] = { diff --git a/drivers/net/can/spi/hi311x.c b/drivers/net/can/spi/hi311x.c index cfcc14fe3e42..664b8f14d7b0 100644 --- a/drivers/net/can/spi/hi311x.c +++ b/drivers/net/can/spi/hi311x.c @@ -948,7 +948,7 @@ static int hi3110_can_probe(struct spi_device *spi) return dev_err_probe(dev, ret, "Probe failed\n"); } -static int hi3110_can_remove(struct spi_device *spi) +static void hi3110_can_remove(struct spi_device *spi) { struct hi3110_priv *priv = spi_get_drvdata(spi); struct net_device *net = priv->net; @@ -960,8 +960,6 @@ static int hi3110_can_remove(struct spi_device *spi) clk_disable_unprepare(priv->clk); free_candev(net); - - return 0; } static int __maybe_unused hi3110_can_suspend(struct device *dev) diff --git a/drivers/net/can/spi/mcp251x.c b/drivers/net/can/spi/mcp251x.c index 025e07cb7439..d23edaf22420 100644 --- a/drivers/net/can/spi/mcp251x.c +++ b/drivers/net/can/spi/mcp251x.c @@ -1427,7 +1427,7 @@ static int mcp251x_can_probe(struct spi_device *spi) return ret; } -static int mcp251x_can_remove(struct spi_device *spi) +static void mcp251x_can_remove(struct spi_device *spi) { struct mcp251x_priv *priv = spi_get_drvdata(spi); struct net_device *net = priv->net; @@ -1442,8 +1442,6 @@ static int mcp251x_can_remove(struct spi_device *spi) clk_disable_unprepare(priv->clk); free_candev(net); - - return 0; } static int __maybe_unused mcp251x_can_suspend(struct device *dev) diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c index b5986df6eca0..65c9b31666a6 100644 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c @@ -1966,7 +1966,7 @@ static int mcp251xfd_probe(struct spi_device *spi) return err; } -static int mcp251xfd_remove(struct spi_device *spi) +static void mcp251xfd_remove(struct spi_device *spi) { struct mcp251xfd_priv *priv = spi_get_drvdata(spi); struct net_device *ndev = priv->ndev; @@ -1975,8 +1975,6 @@ static int mcp251xfd_remove(struct spi_device *spi) mcp251xfd_unregister(priv); spi->max_speed_hz = priv->spi_max_speed_hz_orig; free_candev(ndev); - - return 0; } static int __maybe_unused mcp251xfd_runtime_suspend(struct device *device) diff --git a/drivers/net/dsa/b53/b53_spi.c b/drivers/net/dsa/b53/b53_spi.c index 2b88f03e5252..0e54b2a0c211 100644 --- a/drivers/net/dsa/b53/b53_spi.c +++ b/drivers/net/dsa/b53/b53_spi.c @@ -314,7 +314,7 @@ static int b53_spi_probe(struct spi_device *spi) return 0; } -static int b53_spi_remove(struct spi_device *spi) +static void b53_spi_remove(struct spi_device *spi) { struct b53_device *dev = spi_get_drvdata(spi); @@ -322,8 +322,6 @@ static int b53_spi_remove(struct spi_device *spi) b53_switch_remove(dev); spi_set_drvdata(spi, NULL); - - return 0; } static void b53_spi_shutdown(struct spi_device *spi) diff --git a/drivers/net/dsa/microchip/ksz8795_spi.c b/drivers/net/dsa/microchip/ksz8795_spi.c index 866767b70d65..673589dc88ab 100644 --- a/drivers/net/dsa/microchip/ksz8795_spi.c +++ b/drivers/net/dsa/microchip/ksz8795_spi.c @@ -87,7 +87,7 @@ static int ksz8795_spi_probe(struct spi_device *spi) return 0; } -static int ksz8795_spi_remove(struct spi_device *spi) +static void ksz8795_spi_remove(struct spi_device *spi) { struct ksz_device *dev = spi_get_drvdata(spi); @@ -95,8 +95,6 @@ static int ksz8795_spi_remove(struct spi_device *spi) ksz_switch_remove(dev); spi_set_drvdata(spi, NULL); - - return 0; } static void ksz8795_spi_shutdown(struct spi_device *spi) diff --git a/drivers/net/dsa/microchip/ksz9477_spi.c b/drivers/net/dsa/microchip/ksz9477_spi.c index e3cb0e6c9f6f..940bb9665f15 100644 --- a/drivers/net/dsa/microchip/ksz9477_spi.c +++ b/drivers/net/dsa/microchip/ksz9477_spi.c @@ -65,7 +65,7 @@ static int ksz9477_spi_probe(struct spi_device *spi) return 0; } -static int ksz9477_spi_remove(struct spi_device *spi) +static void ksz9477_spi_remove(struct spi_device *spi) { struct ksz_device *dev = spi_get_drvdata(spi); @@ -73,8 +73,6 @@ static int ksz9477_spi_remove(struct spi_device *spi) ksz_switch_remove(dev); spi_set_drvdata(spi, NULL); - - return 0; } static void ksz9477_spi_shutdown(struct spi_device *spi) diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c index b513713be610..c2a47c6693b8 100644 --- a/drivers/net/dsa/sja1105/sja1105_main.c +++ b/drivers/net/dsa/sja1105/sja1105_main.c @@ -3346,18 +3346,16 @@ static int sja1105_probe(struct spi_device *spi) return dsa_register_switch(priv->ds); } -static int sja1105_remove(struct spi_device *spi) +static void sja1105_remove(struct spi_device *spi) { struct sja1105_private *priv = spi_get_drvdata(spi); if (!priv) - return 0; + return; dsa_unregister_switch(priv->ds); spi_set_drvdata(spi, NULL); - - return 0; } static void sja1105_shutdown(struct spi_device *spi) diff --git a/drivers/net/dsa/vitesse-vsc73xx-spi.c b/drivers/net/dsa/vitesse-vsc73xx-spi.c index 645398901e05..3110895358d8 100644 --- a/drivers/net/dsa/vitesse-vsc73xx-spi.c +++ b/drivers/net/dsa/vitesse-vsc73xx-spi.c @@ -159,18 +159,16 @@ static int vsc73xx_spi_probe(struct spi_device *spi) return vsc73xx_probe(&vsc_spi->vsc); } -static int vsc73xx_spi_remove(struct spi_device *spi) +static void vsc73xx_spi_remove(struct spi_device *spi) { struct vsc73xx_spi *vsc_spi = spi_get_drvdata(spi); if (!vsc_spi) - return 0; + return; vsc73xx_remove(&vsc_spi->vsc); spi_set_drvdata(spi, NULL); - - return 0; } static void vsc73xx_spi_shutdown(struct spi_device *spi) diff --git a/drivers/net/ethernet/asix/ax88796c_main.c b/drivers/net/ethernet/asix/ax88796c_main.c index e7a9f9863258..bf70481bb1ca 100644 --- a/drivers/net/ethernet/asix/ax88796c_main.c +++ b/drivers/net/ethernet/asix/ax88796c_main.c @@ -1102,7 +1102,7 @@ static int ax88796c_probe(struct spi_device *spi) return ret; } -static int ax88796c_remove(struct spi_device *spi) +static void ax88796c_remove(struct spi_device *spi) { struct ax88796c_device *ax_local = dev_get_drvdata(&spi->dev); struct net_device *ndev = ax_local->ndev; @@ -1112,8 +1112,6 @@ static int ax88796c_remove(struct spi_device *spi) netif_info(ax_local, probe, ndev, "removing network device %s %s\n", dev_driver_string(&spi->dev), dev_name(&spi->dev)); - - return 0; } #ifdef CONFIG_OF diff --git a/drivers/net/ethernet/micrel/ks8851_spi.c b/drivers/net/ethernet/micrel/ks8851_spi.c index 0303e727e99f..d167d93e4c12 100644 --- a/drivers/net/ethernet/micrel/ks8851_spi.c +++ b/drivers/net/ethernet/micrel/ks8851_spi.c @@ -452,11 +452,9 @@ static int ks8851_probe_spi(struct spi_device *spi) return ks8851_probe_common(netdev, dev, msg_enable); } -static int ks8851_remove_spi(struct spi_device *spi) +static void ks8851_remove_spi(struct spi_device *spi) { ks8851_remove_common(&spi->dev); - - return 0; } static const struct of_device_id ks8851_match_table[] = { diff --git a/drivers/net/ethernet/microchip/enc28j60.c b/drivers/net/ethernet/microchip/enc28j60.c index 634ac7649c43..db5a3edb4c3c 100644 --- a/drivers/net/ethernet/microchip/enc28j60.c +++ b/drivers/net/ethernet/microchip/enc28j60.c @@ -1612,15 +1612,13 @@ static int enc28j60_probe(struct spi_device *spi) return ret; } -static int enc28j60_remove(struct spi_device *spi) +static void enc28j60_remove(struct spi_device *spi) { struct enc28j60_net *priv = spi_get_drvdata(spi); unregister_netdev(priv->netdev); free_irq(spi->irq, priv); free_netdev(priv->netdev); - - return 0; } static const struct of_device_id enc28j60_dt_ids[] = { diff --git a/drivers/net/ethernet/microchip/encx24j600.c b/drivers/net/ethernet/microchip/encx24j600.c index b90efc80fb59..dc1840cb5b10 100644 --- a/drivers/net/ethernet/microchip/encx24j600.c +++ b/drivers/net/ethernet/microchip/encx24j600.c @@ -1093,7 +1093,7 @@ static int encx24j600_spi_probe(struct spi_device *spi) return ret; } -static int encx24j600_spi_remove(struct spi_device *spi) +static void encx24j600_spi_remove(struct spi_device *spi) { struct encx24j600_priv *priv = dev_get_drvdata(&spi->dev); @@ -1101,8 +1101,6 @@ static int encx24j600_spi_remove(struct spi_device *spi) kthread_stop(priv->kworker_task); free_netdev(priv->ndev); - - return 0; } static const struct spi_device_id encx24j600_spi_id_table[] = { diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c index 955cce644392..3c5494afd3c0 100644 --- a/drivers/net/ethernet/qualcomm/qca_spi.c +++ b/drivers/net/ethernet/qualcomm/qca_spi.c @@ -1001,7 +1001,7 @@ qca_spi_probe(struct spi_device *spi) return 0; } -static int +static void qca_spi_remove(struct spi_device *spi) { struct net_device *qcaspi_devs = spi_get_drvdata(spi); @@ -1011,8 +1011,6 @@ qca_spi_remove(struct spi_device *spi) unregister_netdev(qcaspi_devs); free_netdev(qcaspi_devs); - - return 0; } static const struct spi_device_id qca_spi_id[] = { diff --git a/drivers/net/ethernet/vertexcom/mse102x.c b/drivers/net/ethernet/vertexcom/mse102x.c index 89a31783fbb4..25739b182ac7 100644 --- a/drivers/net/ethernet/vertexcom/mse102x.c +++ b/drivers/net/ethernet/vertexcom/mse102x.c @@ -731,7 +731,7 @@ static int mse102x_probe_spi(struct spi_device *spi) return 0; } -static int mse102x_remove_spi(struct spi_device *spi) +static void mse102x_remove_spi(struct spi_device *spi) { struct mse102x_net *mse = dev_get_drvdata(&spi->dev); struct mse102x_net_spi *mses = to_mse102x_spi(mse); @@ -741,8 +741,6 @@ static int mse102x_remove_spi(struct spi_device *spi) mse102x_remove_device_debugfs(mses); unregister_netdev(mse->ndev); - - return 0; } static const struct of_device_id mse102x_match_table[] = { diff --git a/drivers/net/ethernet/wiznet/w5100-spi.c b/drivers/net/ethernet/wiznet/w5100-spi.c index 7779a36da3c8..7c52796273a4 100644 --- a/drivers/net/ethernet/wiznet/w5100-spi.c +++ b/drivers/net/ethernet/wiznet/w5100-spi.c @@ -461,11 +461,9 @@ static int w5100_spi_probe(struct spi_device *spi) return w5100_probe(&spi->dev, ops, priv_size, mac, spi->irq, -EINVAL); } -static int w5100_spi_remove(struct spi_device *spi) +static void w5100_spi_remove(struct spi_device *spi) { w5100_remove(&spi->dev); - - return 0; } static const struct spi_device_id w5100_spi_ids[] = { diff --git a/drivers/net/ieee802154/adf7242.c b/drivers/net/ieee802154/adf7242.c index 7db9cbd0f5de..6afdf1622944 100644 --- a/drivers/net/ieee802154/adf7242.c +++ b/drivers/net/ieee802154/adf7242.c @@ -1304,7 +1304,7 @@ static int adf7242_probe(struct spi_device *spi) return ret; } -static int adf7242_remove(struct spi_device *spi) +static void adf7242_remove(struct spi_device *spi) { struct adf7242_local *lp = spi_get_drvdata(spi); @@ -1316,8 +1316,6 @@ static int adf7242_remove(struct spi_device *spi) ieee802154_unregister_hw(lp->hw); mutex_destroy(&lp->bmux); ieee802154_free_hw(lp->hw); - - return 0; } static const struct of_device_id adf7242_of_match[] = { diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c index 7d67f41387f5..a4734323dc29 100644 --- a/drivers/net/ieee802154/at86rf230.c +++ b/drivers/net/ieee802154/at86rf230.c @@ -1759,7 +1759,7 @@ static int at86rf230_probe(struct spi_device *spi) return rc; } -static int at86rf230_remove(struct spi_device *spi) +static void at86rf230_remove(struct spi_device *spi) { struct at86rf230_local *lp = spi_get_drvdata(spi); @@ -1769,8 +1769,6 @@ static int at86rf230_remove(struct spi_device *spi) ieee802154_free_hw(lp->hw); at86rf230_debugfs_remove(); dev_dbg(&spi->dev, "unregistered at86rf230\n"); - - return 0; } static const struct of_device_id at86rf230_of_match[] = { diff --git a/drivers/net/ieee802154/ca8210.c b/drivers/net/ieee802154/ca8210.c index ece6ff6049f6..b499bbe4d48f 100644 --- a/drivers/net/ieee802154/ca8210.c +++ b/drivers/net/ieee802154/ca8210.c @@ -831,7 +831,7 @@ static void ca8210_rx_done(struct cas_control *cas_ctl) finish:; } -static int ca8210_remove(struct spi_device *spi_device); +static void ca8210_remove(struct spi_device *spi_device); /** * ca8210_spi_transfer_complete() - Called when a single spi transfer has @@ -3048,7 +3048,7 @@ static void ca8210_test_interface_clear(struct ca8210_priv *priv) * * Return: 0 or linux error code */ -static int ca8210_remove(struct spi_device *spi_device) +static void ca8210_remove(struct spi_device *spi_device) { struct ca8210_priv *priv; struct ca8210_platform_data *pdata; @@ -3088,8 +3088,6 @@ static int ca8210_remove(struct spi_device *spi_device) if (IS_ENABLED(CONFIG_IEEE802154_CA8210_DEBUGFS)) ca8210_test_interface_clear(priv); } - - return 0; } /** diff --git a/drivers/net/ieee802154/cc2520.c b/drivers/net/ieee802154/cc2520.c index 89c046b204e0..1e1f40f628a0 100644 --- a/drivers/net/ieee802154/cc2520.c +++ b/drivers/net/ieee802154/cc2520.c @@ -1213,7 +1213,7 @@ static int cc2520_probe(struct spi_device *spi) return ret; } -static int cc2520_remove(struct spi_device *spi) +static void cc2520_remove(struct spi_device *spi) { struct cc2520_private *priv = spi_get_drvdata(spi); @@ -1222,8 +1222,6 @@ static int cc2520_remove(struct spi_device *spi) ieee802154_unregister_hw(priv->hw); ieee802154_free_hw(priv->hw); - - return 0; } static const struct spi_device_id cc2520_ids[] = { diff --git a/drivers/net/ieee802154/mcr20a.c b/drivers/net/ieee802154/mcr20a.c index 8dc04e2590b1..a3af52a8e6dd 100644 --- a/drivers/net/ieee802154/mcr20a.c +++ b/drivers/net/ieee802154/mcr20a.c @@ -1335,7 +1335,7 @@ mcr20a_probe(struct spi_device *spi) return ret; } -static int mcr20a_remove(struct spi_device *spi) +static void mcr20a_remove(struct spi_device *spi) { struct mcr20a_local *lp = spi_get_drvdata(spi); @@ -1343,8 +1343,6 @@ static int mcr20a_remove(struct spi_device *spi) ieee802154_unregister_hw(lp->hw); ieee802154_free_hw(lp->hw); - - return 0; } static const struct of_device_id mcr20a_of_match[] = { diff --git a/drivers/net/ieee802154/mrf24j40.c b/drivers/net/ieee802154/mrf24j40.c index ff83e00b77af..ee4cfbf2c5cc 100644 --- a/drivers/net/ieee802154/mrf24j40.c +++ b/drivers/net/ieee802154/mrf24j40.c @@ -1356,7 +1356,7 @@ static int mrf24j40_probe(struct spi_device *spi) return ret; } -static int mrf24j40_remove(struct spi_device *spi) +static void mrf24j40_remove(struct spi_device *spi) { struct mrf24j40 *devrec = spi_get_drvdata(spi); @@ -1366,8 +1366,6 @@ static int mrf24j40_remove(struct spi_device *spi) ieee802154_free_hw(devrec->hw); /* TODO: Will ieee802154_free_device() wait until ->xmit() is * complete? */ - - return 0; } static const struct of_device_id mrf24j40_of_match[] = { diff --git a/drivers/net/phy/spi_ks8995.c b/drivers/net/phy/spi_ks8995.c index 8b5445a724ce..ff37f8ba6758 100644 --- a/drivers/net/phy/spi_ks8995.c +++ b/drivers/net/phy/spi_ks8995.c @@ -517,7 +517,7 @@ static int ks8995_probe(struct spi_device *spi) return 0; } -static int ks8995_remove(struct spi_device *spi) +static void ks8995_remove(struct spi_device *spi) { struct ks8995_switch *ks = spi_get_drvdata(spi); @@ -526,8 +526,6 @@ static int ks8995_remove(struct spi_device *spi) /* assert reset */ if (ks->pdata && gpio_is_valid(ks->pdata->reset_gpio)) gpiod_set_value(gpio_to_desc(ks->pdata->reset_gpio), 1); - - return 0; } /* ------------------------------------------------------------------------ */ diff --git a/drivers/net/wan/slic_ds26522.c b/drivers/net/wan/slic_ds26522.c index 8e3b1c717c10..6063552cea9b 100644 --- a/drivers/net/wan/slic_ds26522.c +++ b/drivers/net/wan/slic_ds26522.c @@ -194,10 +194,9 @@ static int slic_ds26522_init_configure(struct spi_device *spi) return 0; } -static int slic_ds26522_remove(struct spi_device *spi) +static void slic_ds26522_remove(struct spi_device *spi) { pr_info("DS26522 module uninstalled\n"); - return 0; } static int slic_ds26522_probe(struct spi_device *spi) diff --git a/drivers/net/wireless/intersil/p54/p54spi.c b/drivers/net/wireless/intersil/p54/p54spi.c index ab0fe8565851..f99b7ba69fc3 100644 --- a/drivers/net/wireless/intersil/p54/p54spi.c +++ b/drivers/net/wireless/intersil/p54/p54spi.c @@ -669,7 +669,7 @@ static int p54spi_probe(struct spi_device *spi) return ret; } -static int p54spi_remove(struct spi_device *spi) +static void p54spi_remove(struct spi_device *spi) { struct p54s_priv *priv = spi_get_drvdata(spi); @@ -684,8 +684,6 @@ static int p54spi_remove(struct spi_device *spi) mutex_destroy(&priv->mutex); p54_free_common(priv->hw); - - return 0; } diff --git a/drivers/net/wireless/marvell/libertas/if_spi.c b/drivers/net/wireless/marvell/libertas/if_spi.c index cd9f8ecf171f..ff1c7ec8c450 100644 --- a/drivers/net/wireless/marvell/libertas/if_spi.c +++ b/drivers/net/wireless/marvell/libertas/if_spi.c @@ -1195,7 +1195,7 @@ static int if_spi_probe(struct spi_device *spi) return err; } -static int libertas_spi_remove(struct spi_device *spi) +static void libertas_spi_remove(struct spi_device *spi) { struct if_spi_card *card = spi_get_drvdata(spi); struct lbs_private *priv = card->priv; @@ -1212,8 +1212,6 @@ static int libertas_spi_remove(struct spi_device *spi) if (card->pdata->teardown) card->pdata->teardown(spi); free_if_spi_card(card); - - return 0; } static int if_spi_suspend(struct device *dev) diff --git a/drivers/net/wireless/microchip/wilc1000/spi.c b/drivers/net/wireless/microchip/wilc1000/spi.c index 2c2ed4b09efd..d2db52289399 100644 --- a/drivers/net/wireless/microchip/wilc1000/spi.c +++ b/drivers/net/wireless/microchip/wilc1000/spi.c @@ -240,7 +240,7 @@ static int wilc_bus_probe(struct spi_device *spi) return ret; } -static int wilc_bus_remove(struct spi_device *spi) +static void wilc_bus_remove(struct spi_device *spi) { struct wilc *wilc = spi_get_drvdata(spi); struct wilc_spi *spi_priv = wilc->bus_data; @@ -248,8 +248,6 @@ static int wilc_bus_remove(struct spi_device *spi) clk_disable_unprepare(wilc->rtc_clk); wilc_netdev_cleanup(wilc); kfree(spi_priv); - - return 0; } static const struct of_device_id wilc_of_match[] = { diff --git a/drivers/net/wireless/st/cw1200/cw1200_spi.c b/drivers/net/wireless/st/cw1200/cw1200_spi.c index 271ed2ce2d7f..fe0d220da44d 100644 --- a/drivers/net/wireless/st/cw1200/cw1200_spi.c +++ b/drivers/net/wireless/st/cw1200/cw1200_spi.c @@ -423,7 +423,7 @@ static int cw1200_spi_probe(struct spi_device *func) } /* Disconnect Function to be called by SPI stack when device is disconnected */ -static int cw1200_spi_disconnect(struct spi_device *func) +static void cw1200_spi_disconnect(struct spi_device *func) { struct hwbus_priv *self = spi_get_drvdata(func); @@ -435,8 +435,6 @@ static int cw1200_spi_disconnect(struct spi_device *func) } } cw1200_spi_off(dev_get_platdata(&func->dev)); - - return 0; } static int __maybe_unused cw1200_spi_suspend(struct device *dev) diff --git a/drivers/net/wireless/ti/wl1251/spi.c b/drivers/net/wireless/ti/wl1251/spi.c index 5b894bd6237e..9df38726e8b0 100644 --- a/drivers/net/wireless/ti/wl1251/spi.c +++ b/drivers/net/wireless/ti/wl1251/spi.c @@ -327,14 +327,12 @@ static int wl1251_spi_probe(struct spi_device *spi) return ret; } -static int wl1251_spi_remove(struct spi_device *spi) +static void wl1251_spi_remove(struct spi_device *spi) { struct wl1251 *wl = spi_get_drvdata(spi); wl1251_free_hw(wl); regulator_disable(wl->vio); - - return 0; } static struct spi_driver wl1251_spi_driver = { diff --git a/drivers/net/wireless/ti/wlcore/spi.c b/drivers/net/wireless/ti/wlcore/spi.c index 354a7e1c3315..7eae1ec2eb2b 100644 --- a/drivers/net/wireless/ti/wlcore/spi.c +++ b/drivers/net/wireless/ti/wlcore/spi.c @@ -546,13 +546,11 @@ static int wl1271_probe(struct spi_device *spi) return ret; } -static int wl1271_remove(struct spi_device *spi) +static void wl1271_remove(struct spi_device *spi) { struct wl12xx_spi_glue *glue = spi_get_drvdata(spi); platform_device_unregister(glue->core); - - return 0; } static struct spi_driver wl1271_spi_driver = { diff --git a/drivers/nfc/nfcmrvl/spi.c b/drivers/nfc/nfcmrvl/spi.c index 5b833a9a83f8..a38e2fcdfd39 100644 --- a/drivers/nfc/nfcmrvl/spi.c +++ b/drivers/nfc/nfcmrvl/spi.c @@ -174,12 +174,11 @@ static int nfcmrvl_spi_probe(struct spi_device *spi) return 0; } -static int nfcmrvl_spi_remove(struct spi_device *spi) +static void nfcmrvl_spi_remove(struct spi_device *spi) { struct nfcmrvl_spi_drv_data *drv_data = spi_get_drvdata(spi); nfcmrvl_nci_unregister_dev(drv_data->priv); - return 0; } static const struct of_device_id of_nfcmrvl_spi_match[] __maybe_unused = { diff --git a/drivers/nfc/st-nci/spi.c b/drivers/nfc/st-nci/spi.c index 4e723992e74c..169eacc0a32a 100644 --- a/drivers/nfc/st-nci/spi.c +++ b/drivers/nfc/st-nci/spi.c @@ -263,13 +263,11 @@ static int st_nci_spi_probe(struct spi_device *dev) return r; } -static int st_nci_spi_remove(struct spi_device *dev) +static void st_nci_spi_remove(struct spi_device *dev) { struct st_nci_spi_phy *phy = spi_get_drvdata(dev); ndlc_remove(phy->ndlc); - - return 0; } static struct spi_device_id st_nci_spi_id_table[] = { diff --git a/drivers/nfc/st95hf/core.c b/drivers/nfc/st95hf/core.c index b23f47936473..ed704bb77226 100644 --- a/drivers/nfc/st95hf/core.c +++ b/drivers/nfc/st95hf/core.c @@ -1198,7 +1198,7 @@ static int st95hf_probe(struct spi_device *nfc_spi_dev) return ret; } -static int st95hf_remove(struct spi_device *nfc_spi_dev) +static void st95hf_remove(struct spi_device *nfc_spi_dev) { int result = 0; unsigned char reset_cmd = ST95HF_COMMAND_RESET; @@ -1236,8 +1236,6 @@ static int st95hf_remove(struct spi_device *nfc_spi_dev) /* disable regulator */ if (stcontext->st95hf_supply) regulator_disable(stcontext->st95hf_supply); - - return 0; } /* Register as SPI protocol driver */ diff --git a/drivers/nfc/trf7970a.c b/drivers/nfc/trf7970a.c index 29ca9c328df2..21d68664fe08 100644 --- a/drivers/nfc/trf7970a.c +++ b/drivers/nfc/trf7970a.c @@ -2144,7 +2144,7 @@ static int trf7970a_probe(struct spi_device *spi) return ret; } -static int trf7970a_remove(struct spi_device *spi) +static void trf7970a_remove(struct spi_device *spi) { struct trf7970a *trf = spi_get_drvdata(spi); @@ -2160,8 +2160,6 @@ static int trf7970a_remove(struct spi_device *spi) regulator_disable(trf->regulator); mutex_destroy(&trf->lock); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/platform/chrome/cros_ec_spi.c b/drivers/platform/chrome/cros_ec_spi.c index 713c58687721..8493af0f680e 100644 --- a/drivers/platform/chrome/cros_ec_spi.c +++ b/drivers/platform/chrome/cros_ec_spi.c @@ -786,13 +786,11 @@ static int cros_ec_spi_probe(struct spi_device *spi) return 0; } -static int cros_ec_spi_remove(struct spi_device *spi) +static void cros_ec_spi_remove(struct spi_device *spi) { struct cros_ec_device *ec_dev = spi_get_drvdata(spi); cros_ec_unregister(ec_dev); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/platform/olpc/olpc-xo175-ec.c b/drivers/platform/olpc/olpc-xo175-ec.c index 0d46706afd2d..4823bd2819f6 100644 --- a/drivers/platform/olpc/olpc-xo175-ec.c +++ b/drivers/platform/olpc/olpc-xo175-ec.c @@ -648,7 +648,7 @@ static struct olpc_ec_driver olpc_xo175_ec_driver = { .ec_cmd = olpc_xo175_ec_cmd, }; -static int olpc_xo175_ec_remove(struct spi_device *spi) +static void olpc_xo175_ec_remove(struct spi_device *spi) { if (pm_power_off == olpc_xo175_ec_power_off) pm_power_off = NULL; @@ -657,8 +657,6 @@ static int olpc_xo175_ec_remove(struct spi_device *spi) platform_device_unregister(olpc_ec); olpc_ec = NULL; - - return 0; } static int olpc_xo175_ec_probe(struct spi_device *spi) diff --git a/drivers/rtc/rtc-ds1302.c b/drivers/rtc/rtc-ds1302.c index 2f83adef966e..6d66ab5a8b17 100644 --- a/drivers/rtc/rtc-ds1302.c +++ b/drivers/rtc/rtc-ds1302.c @@ -185,10 +185,9 @@ static int ds1302_probe(struct spi_device *spi) return 0; } -static int ds1302_remove(struct spi_device *spi) +static void ds1302_remove(struct spi_device *spi) { spi_set_drvdata(spi, NULL); - return 0; } #ifdef CONFIG_OF diff --git a/drivers/rtc/rtc-ds1305.c b/drivers/rtc/rtc-ds1305.c index 9ef107b99b65..ed9360486953 100644 --- a/drivers/rtc/rtc-ds1305.c +++ b/drivers/rtc/rtc-ds1305.c @@ -720,7 +720,7 @@ static int ds1305_probe(struct spi_device *spi) return 0; } -static int ds1305_remove(struct spi_device *spi) +static void ds1305_remove(struct spi_device *spi) { struct ds1305 *ds1305 = spi_get_drvdata(spi); @@ -730,8 +730,6 @@ static int ds1305_remove(struct spi_device *spi) devm_free_irq(&spi->dev, spi->irq, ds1305); cancel_work_sync(&ds1305->work); } - - return 0; } static struct spi_driver ds1305_driver = { diff --git a/drivers/rtc/rtc-ds1343.c b/drivers/rtc/rtc-ds1343.c index f14ed6c96437..ed5a6ba89a3e 100644 --- a/drivers/rtc/rtc-ds1343.c +++ b/drivers/rtc/rtc-ds1343.c @@ -434,11 +434,9 @@ static int ds1343_probe(struct spi_device *spi) return 0; } -static int ds1343_remove(struct spi_device *spi) +static void ds1343_remove(struct spi_device *spi) { dev_pm_clear_wake_irq(&spi->dev); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/spi/spi-mem.c b/drivers/spi/spi-mem.c index 37f4443ce9a0..e9d83d65873b 100644 --- a/drivers/spi/spi-mem.c +++ b/drivers/spi/spi-mem.c @@ -854,15 +854,13 @@ static int spi_mem_probe(struct spi_device *spi) return memdrv->probe(mem); } -static int spi_mem_remove(struct spi_device *spi) +static void spi_mem_remove(struct spi_device *spi) { struct spi_mem_driver *memdrv = to_spi_mem_drv(spi->dev.driver); struct spi_mem *mem = spi_get_drvdata(spi); if (memdrv->remove) - return memdrv->remove(mem); - - return 0; + memdrv->remove(mem); } static void spi_mem_shutdown(struct spi_device *spi) diff --git a/drivers/spi/spi-slave-system-control.c b/drivers/spi/spi-slave-system-control.c index 169f3d595f60..d37cfe995a63 100644 --- a/drivers/spi/spi-slave-system-control.c +++ b/drivers/spi/spi-slave-system-control.c @@ -132,13 +132,12 @@ static int spi_slave_system_control_probe(struct spi_device *spi) return 0; } -static int spi_slave_system_control_remove(struct spi_device *spi) +static void spi_slave_system_control_remove(struct spi_device *spi) { struct spi_slave_system_control_priv *priv = spi_get_drvdata(spi); spi_slave_abort(spi); wait_for_completion(&priv->finished); - return 0; } static struct spi_driver spi_slave_system_control_driver = { diff --git a/drivers/spi/spi-slave-time.c b/drivers/spi/spi-slave-time.c index f2e07a392d68..f56c1afb8534 100644 --- a/drivers/spi/spi-slave-time.c +++ b/drivers/spi/spi-slave-time.c @@ -106,13 +106,12 @@ static int spi_slave_time_probe(struct spi_device *spi) return 0; } -static int spi_slave_time_remove(struct spi_device *spi) +static void spi_slave_time_remove(struct spi_device *spi) { struct spi_slave_time_priv *priv = spi_get_drvdata(spi); spi_slave_abort(spi); wait_for_completion(&priv->finished); - return 0; } static struct spi_driver spi_slave_time_driver = { diff --git a/drivers/spi/spi-tle62x0.c b/drivers/spi/spi-tle62x0.c index f8ad0709d015..a565352f6381 100644 --- a/drivers/spi/spi-tle62x0.c +++ b/drivers/spi/spi-tle62x0.c @@ -288,7 +288,7 @@ static int tle62x0_probe(struct spi_device *spi) return ret; } -static int tle62x0_remove(struct spi_device *spi) +static void tle62x0_remove(struct spi_device *spi) { struct tle62x0_state *st = spi_get_drvdata(spi); int ptr; @@ -298,7 +298,6 @@ static int tle62x0_remove(struct spi_device *spi) device_remove_file(&spi->dev, &dev_attr_status_show); kfree(st); - return 0; } static struct spi_driver tle62x0_driver = { diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 4599b121d744..ead9a132dcb9 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -404,15 +404,8 @@ static void spi_remove(struct device *dev) { const struct spi_driver *sdrv = to_spi_driver(dev->driver); - if (sdrv->remove) { - int ret; - - ret = sdrv->remove(to_spi_device(dev)); - if (ret) - dev_warn(dev, - "Failed to unbind driver (%pe), ignoring\n", - ERR_PTR(ret)); - } + if (sdrv->remove) + sdrv->remove(to_spi_device(dev)); dev_pm_domain_detach(dev, true); } diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c index a5cceca8b82b..9468f74308bd 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c @@ -803,7 +803,7 @@ static int spidev_probe(struct spi_device *spi) return status; } -static int spidev_remove(struct spi_device *spi) +static void spidev_remove(struct spi_device *spi) { struct spidev_data *spidev = spi_get_drvdata(spi); @@ -820,8 +820,6 @@ static int spidev_remove(struct spi_device *spi) if (spidev->users == 0) kfree(spidev); mutex_unlock(&device_list_lock); - - return 0; } static struct spi_driver spidev_spi_driver = { diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h index 6a7545b5bcd2..b68f5f9b7c78 100644 --- a/drivers/staging/fbtft/fbtft.h +++ b/drivers/staging/fbtft/fbtft.h @@ -286,12 +286,11 @@ static int fbtft_driver_probe_spi(struct spi_device *spi) \ return fbtft_probe_common(_display, spi, NULL); \ } \ \ -static int fbtft_driver_remove_spi(struct spi_device *spi) \ +static void fbtft_driver_remove_spi(struct spi_device *spi) \ { \ struct fb_info *info = spi_get_drvdata(spi); \ \ fbtft_remove_common(&spi->dev, info); \ - return 0; \ } \ \ static struct spi_driver fbtft_driver_spi_driver = { \ diff --git a/drivers/staging/pi433/pi433_if.c b/drivers/staging/pi433/pi433_if.c index 68c09fa016ed..1d31c35875e3 100644 --- a/drivers/staging/pi433/pi433_if.c +++ b/drivers/staging/pi433/pi433_if.c @@ -1264,7 +1264,7 @@ static int pi433_probe(struct spi_device *spi) return retval; } -static int pi433_remove(struct spi_device *spi) +static void pi433_remove(struct spi_device *spi) { struct pi433_device *device = spi_get_drvdata(spi); @@ -1284,8 +1284,6 @@ static int pi433_remove(struct spi_device *spi) kfree(device->rx_buffer); kfree(device); - - return 0; } static const struct of_device_id pi433_dt_ids[] = { diff --git a/drivers/staging/wfx/bus_spi.c b/drivers/staging/wfx/bus_spi.c index 55ffcd7c42e2..fa0ff66a457d 100644 --- a/drivers/staging/wfx/bus_spi.c +++ b/drivers/staging/wfx/bus_spi.c @@ -232,12 +232,11 @@ static int wfx_spi_probe(struct spi_device *func) return wfx_probe(bus->core); } -static int wfx_spi_remove(struct spi_device *func) +static void wfx_spi_remove(struct spi_device *func) { struct wfx_spi_priv *bus = spi_get_drvdata(func); wfx_release(bus->core); - return 0; } /* For dynamic driver binding, kernel does not use OF to match driver. It only diff --git a/drivers/tty/serial/max3100.c b/drivers/tty/serial/max3100.c index 3c92d4e01488..516cff362434 100644 --- a/drivers/tty/serial/max3100.c +++ b/drivers/tty/serial/max3100.c @@ -805,7 +805,7 @@ static int max3100_probe(struct spi_device *spi) return 0; } -static int max3100_remove(struct spi_device *spi) +static void max3100_remove(struct spi_device *spi) { struct max3100_port *s = spi_get_drvdata(spi); int i; @@ -828,13 +828,12 @@ static int max3100_remove(struct spi_device *spi) for (i = 0; i < MAX_MAX3100; i++) if (max3100s[i]) { mutex_unlock(&max3100s_lock); - return 0; + return; } pr_debug("removing max3100 driver\n"); uart_unregister_driver(&max3100_uart_driver); mutex_unlock(&max3100s_lock); - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c index dde0824b2fa5..3112b4a05448 100644 --- a/drivers/tty/serial/max310x.c +++ b/drivers/tty/serial/max310x.c @@ -1487,10 +1487,9 @@ static int max310x_spi_probe(struct spi_device *spi) return max310x_probe(&spi->dev, devtype, regmap, spi->irq); } -static int max310x_spi_remove(struct spi_device *spi) +static void max310x_spi_remove(struct spi_device *spi) { max310x_remove(&spi->dev); - return 0; } static const struct spi_device_id max310x_id_table[] = { diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c index 64e7e6c8145f..25d67b8c4db7 100644 --- a/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c @@ -1440,11 +1440,9 @@ static int sc16is7xx_spi_probe(struct spi_device *spi) return sc16is7xx_probe(&spi->dev, devtype, regmap, spi->irq); } -static int sc16is7xx_spi_remove(struct spi_device *spi) +static void sc16is7xx_spi_remove(struct spi_device *spi) { sc16is7xx_remove(&spi->dev); - - return 0; } static const struct spi_device_id sc16is7xx_spi_id_table[] = { diff --git a/drivers/usb/gadget/udc/max3420_udc.c b/drivers/usb/gadget/udc/max3420_udc.c index d2a2b20cc1ad..7d9bd16190c0 100644 --- a/drivers/usb/gadget/udc/max3420_udc.c +++ b/drivers/usb/gadget/udc/max3420_udc.c @@ -1292,7 +1292,7 @@ static int max3420_probe(struct spi_device *spi) return err; } -static int max3420_remove(struct spi_device *spi) +static void max3420_remove(struct spi_device *spi) { struct max3420_udc *udc = spi_get_drvdata(spi); unsigned long flags; @@ -1304,8 +1304,6 @@ static int max3420_remove(struct spi_device *spi) kthread_stop(udc->thread_task); spin_unlock_irqrestore(&udc->lock, flags); - - return 0; } static const struct of_device_id max3420_udc_of_match[] = { diff --git a/drivers/usb/host/max3421-hcd.c b/drivers/usb/host/max3421-hcd.c index 30de85a707fe..99a5523a79fb 100644 --- a/drivers/usb/host/max3421-hcd.c +++ b/drivers/usb/host/max3421-hcd.c @@ -1926,7 +1926,7 @@ max3421_probe(struct spi_device *spi) return retval; } -static int +static void max3421_remove(struct spi_device *spi) { struct max3421_hcd *max3421_hcd; @@ -1947,7 +1947,6 @@ max3421_remove(struct spi_device *spi) free_irq(spi->irq, hcd); usb_put_hcd(hcd); - return 0; } static const struct of_device_id max3421_of_match_table[] = { diff --git a/drivers/video/backlight/ams369fg06.c b/drivers/video/backlight/ams369fg06.c index 8a4361e95a11..522dd81110b8 100644 --- a/drivers/video/backlight/ams369fg06.c +++ b/drivers/video/backlight/ams369fg06.c @@ -506,12 +506,11 @@ static int ams369fg06_probe(struct spi_device *spi) return 0; } -static int ams369fg06_remove(struct spi_device *spi) +static void ams369fg06_remove(struct spi_device *spi) { struct ams369fg06 *lcd = spi_get_drvdata(spi); ams369fg06_power(lcd, FB_BLANK_POWERDOWN); - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/video/backlight/corgi_lcd.c b/drivers/video/backlight/corgi_lcd.c index 33f5d80495e6..0a57033ae31d 100644 --- a/drivers/video/backlight/corgi_lcd.c +++ b/drivers/video/backlight/corgi_lcd.c @@ -542,7 +542,7 @@ static int corgi_lcd_probe(struct spi_device *spi) return 0; } -static int corgi_lcd_remove(struct spi_device *spi) +static void corgi_lcd_remove(struct spi_device *spi) { struct corgi_lcd *lcd = spi_get_drvdata(spi); @@ -550,7 +550,6 @@ static int corgi_lcd_remove(struct spi_device *spi) lcd->bl_dev->props.brightness = 0; backlight_update_status(lcd->bl_dev); corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_POWERDOWN); - return 0; } static struct spi_driver corgi_lcd_driver = { diff --git a/drivers/video/backlight/ili922x.c b/drivers/video/backlight/ili922x.c index 328aba9cddad..e7b6bd827986 100644 --- a/drivers/video/backlight/ili922x.c +++ b/drivers/video/backlight/ili922x.c @@ -526,10 +526,9 @@ static int ili922x_probe(struct spi_device *spi) return 0; } -static int ili922x_remove(struct spi_device *spi) +static void ili922x_remove(struct spi_device *spi) { ili922x_poweroff(spi); - return 0; } static struct spi_driver ili922x_driver = { diff --git a/drivers/video/backlight/l4f00242t03.c b/drivers/video/backlight/l4f00242t03.c index 46f97d1c3d21..cc763cf15f53 100644 --- a/drivers/video/backlight/l4f00242t03.c +++ b/drivers/video/backlight/l4f00242t03.c @@ -223,12 +223,11 @@ static int l4f00242t03_probe(struct spi_device *spi) return 0; } -static int l4f00242t03_remove(struct spi_device *spi) +static void l4f00242t03_remove(struct spi_device *spi) { struct l4f00242t03_priv *priv = spi_get_drvdata(spi); l4f00242t03_lcd_power_set(priv->ld, FB_BLANK_POWERDOWN); - return 0; } static void l4f00242t03_shutdown(struct spi_device *spi) diff --git a/drivers/video/backlight/lms501kf03.c b/drivers/video/backlight/lms501kf03.c index f949b66dce1b..5c46df8022bf 100644 --- a/drivers/video/backlight/lms501kf03.c +++ b/drivers/video/backlight/lms501kf03.c @@ -364,12 +364,11 @@ static int lms501kf03_probe(struct spi_device *spi) return 0; } -static int lms501kf03_remove(struct spi_device *spi) +static void lms501kf03_remove(struct spi_device *spi) { struct lms501kf03 *lcd = spi_get_drvdata(spi); lms501kf03_power(lcd, FB_BLANK_POWERDOWN); - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/video/backlight/ltv350qv.c b/drivers/video/backlight/ltv350qv.c index 5cbf621e48bd..b6d373af6e3f 100644 --- a/drivers/video/backlight/ltv350qv.c +++ b/drivers/video/backlight/ltv350qv.c @@ -255,12 +255,11 @@ static int ltv350qv_probe(struct spi_device *spi) return 0; } -static int ltv350qv_remove(struct spi_device *spi) +static void ltv350qv_remove(struct spi_device *spi) { struct ltv350qv *lcd = spi_get_drvdata(spi); ltv350qv_power(lcd, FB_BLANK_POWERDOWN); - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/video/backlight/tdo24m.c b/drivers/video/backlight/tdo24m.c index 0de044dcafd5..fc6fbaf85594 100644 --- a/drivers/video/backlight/tdo24m.c +++ b/drivers/video/backlight/tdo24m.c @@ -397,12 +397,11 @@ static int tdo24m_probe(struct spi_device *spi) return 0; } -static int tdo24m_remove(struct spi_device *spi) +static void tdo24m_remove(struct spi_device *spi) { struct tdo24m *lcd = spi_get_drvdata(spi); tdo24m_power(lcd, FB_BLANK_POWERDOWN); - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/video/backlight/tosa_lcd.c b/drivers/video/backlight/tosa_lcd.c index 38765544345b..23d6c6bf0f54 100644 --- a/drivers/video/backlight/tosa_lcd.c +++ b/drivers/video/backlight/tosa_lcd.c @@ -232,15 +232,13 @@ static int tosa_lcd_probe(struct spi_device *spi) return ret; } -static int tosa_lcd_remove(struct spi_device *spi) +static void tosa_lcd_remove(struct spi_device *spi) { struct tosa_lcd_data *data = spi_get_drvdata(spi); i2c_unregister_device(data->i2c); tosa_lcd_tg_off(data); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/video/backlight/vgg2432a4.c b/drivers/video/backlight/vgg2432a4.c index 3567b45f9ba9..bfc1913e8b55 100644 --- a/drivers/video/backlight/vgg2432a4.c +++ b/drivers/video/backlight/vgg2432a4.c @@ -233,11 +233,9 @@ static int vgg2432a4_probe(struct spi_device *spi) return 0; } -static int vgg2432a4_remove(struct spi_device *spi) +static void vgg2432a4_remove(struct spi_device *spi) { ili9320_remove(spi_get_drvdata(spi)); - - return 0; } static void vgg2432a4_shutdown(struct spi_device *spi) diff --git a/drivers/video/fbdev/omap/lcd_mipid.c b/drivers/video/fbdev/omap/lcd_mipid.c index a75ae0c9b14c..03cff39d392d 100644 --- a/drivers/video/fbdev/omap/lcd_mipid.c +++ b/drivers/video/fbdev/omap/lcd_mipid.c @@ -570,14 +570,12 @@ static int mipid_spi_probe(struct spi_device *spi) return 0; } -static int mipid_spi_remove(struct spi_device *spi) +static void mipid_spi_remove(struct spi_device *spi) { struct mipid_device *md = dev_get_drvdata(&spi->dev); mipid_disable(&md->panel); kfree(md); - - return 0; } static struct spi_driver mipid_spi_driver = { diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c index 1bec7a4422e8..aab67721263d 100644 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c @@ -316,7 +316,7 @@ static int lb035q02_panel_spi_probe(struct spi_device *spi) return r; } -static int lb035q02_panel_spi_remove(struct spi_device *spi) +static void lb035q02_panel_spi_remove(struct spi_device *spi) { struct panel_drv_data *ddata = spi_get_drvdata(spi); struct omap_dss_device *dssdev = &ddata->dssdev; @@ -328,8 +328,6 @@ static int lb035q02_panel_spi_remove(struct spi_device *spi) lb035q02_disconnect(dssdev); omap_dss_put_device(in); - - return 0; } static const struct of_device_id lb035q02_of_match[] = { diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-nec-nl8048hl11.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-nec-nl8048hl11.c index dff9ebbadfc0..be9910ff6e62 100644 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-nec-nl8048hl11.c +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-nec-nl8048hl11.c @@ -327,7 +327,7 @@ static int nec_8048_probe(struct spi_device *spi) return r; } -static int nec_8048_remove(struct spi_device *spi) +static void nec_8048_remove(struct spi_device *spi) { struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); struct omap_dss_device *dssdev = &ddata->dssdev; @@ -341,8 +341,6 @@ static int nec_8048_remove(struct spi_device *spi) nec_8048_disconnect(dssdev); omap_dss_put_device(in); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c index 8d8b5ff7d43c..a909b5385ca5 100644 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c @@ -857,7 +857,7 @@ static int acx565akm_probe(struct spi_device *spi) return r; } -static int acx565akm_remove(struct spi_device *spi) +static void acx565akm_remove(struct spi_device *spi) { struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); struct omap_dss_device *dssdev = &ddata->dssdev; @@ -874,8 +874,6 @@ static int acx565akm_remove(struct spi_device *spi) acx565akm_disconnect(dssdev); omap_dss_put_device(in); - - return 0; } static const struct of_device_id acx565akm_of_match[] = { diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c index 595ebd8bd5dc..3c0f887d3092 100644 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c @@ -425,7 +425,7 @@ static int td028ttec1_panel_probe(struct spi_device *spi) return r; } -static int td028ttec1_panel_remove(struct spi_device *spi) +static void td028ttec1_panel_remove(struct spi_device *spi) { struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); struct omap_dss_device *dssdev = &ddata->dssdev; @@ -439,8 +439,6 @@ static int td028ttec1_panel_remove(struct spi_device *spi) td028ttec1_panel_disconnect(dssdev); omap_dss_put_device(in); - - return 0; } static const struct of_device_id td028ttec1_of_match[] = { diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c index afac1d9445aa..58bbba7c037f 100644 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c @@ -564,7 +564,7 @@ static int tpo_td043_probe(struct spi_device *spi) return r; } -static int tpo_td043_remove(struct spi_device *spi) +static void tpo_td043_remove(struct spi_device *spi) { struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); struct omap_dss_device *dssdev = &ddata->dssdev; @@ -580,8 +580,6 @@ static int tpo_td043_remove(struct spi_device *spi) omap_dss_put_device(in); sysfs_remove_group(&spi->dev.kobj, &tpo_td043_attr_group); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index 7ab3fed7b804..c84e61b99c7b 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h @@ -280,7 +280,7 @@ struct spi_message; struct spi_driver { const struct spi_device_id *id_table; int (*probe)(struct spi_device *spi); - int (*remove)(struct spi_device *spi); + void (*remove)(struct spi_device *spi); void (*shutdown)(struct spi_device *spi); struct device_driver driver; }; diff --git a/sound/pci/hda/cs35l41_hda_spi.c b/sound/pci/hda/cs35l41_hda_spi.c index 9f8123893cc8..50eb6c0e6658 100644 --- a/sound/pci/hda/cs35l41_hda_spi.c +++ b/sound/pci/hda/cs35l41_hda_spi.c @@ -28,11 +28,9 @@ static int cs35l41_hda_spi_probe(struct spi_device *spi) devm_regmap_init_spi(spi, &cs35l41_regmap_spi)); } -static int cs35l41_hda_spi_remove(struct spi_device *spi) +static void cs35l41_hda_spi_remove(struct spi_device *spi) { cs35l41_hda_remove(&spi->dev); - - return 0; } static const struct spi_device_id cs35l41_hda_spi_id[] = { diff --git a/sound/soc/codecs/adau1761-spi.c b/sound/soc/codecs/adau1761-spi.c index 655689c9778a..7c9242c2ff94 100644 --- a/sound/soc/codecs/adau1761-spi.c +++ b/sound/soc/codecs/adau1761-spi.c @@ -45,10 +45,9 @@ static int adau1761_spi_probe(struct spi_device *spi) id->driver_data, adau1761_spi_switch_mode); } -static int adau1761_spi_remove(struct spi_device *spi) +static void adau1761_spi_remove(struct spi_device *spi) { adau17x1_remove(&spi->dev); - return 0; } static const struct spi_device_id adau1761_spi_id[] = { diff --git a/sound/soc/codecs/adau1781-spi.c b/sound/soc/codecs/adau1781-spi.c index bb5613574786..1a09633d5a88 100644 --- a/sound/soc/codecs/adau1781-spi.c +++ b/sound/soc/codecs/adau1781-spi.c @@ -45,10 +45,9 @@ static int adau1781_spi_probe(struct spi_device *spi) id->driver_data, adau1781_spi_switch_mode); } -static int adau1781_spi_remove(struct spi_device *spi) +static void adau1781_spi_remove(struct spi_device *spi) { adau17x1_remove(&spi->dev); - return 0; } static const struct spi_device_id adau1781_spi_id[] = { diff --git a/sound/soc/codecs/cs35l41-spi.c b/sound/soc/codecs/cs35l41-spi.c index 6dfd5459aa20..169221a5b09f 100644 --- a/sound/soc/codecs/cs35l41-spi.c +++ b/sound/soc/codecs/cs35l41-spi.c @@ -55,13 +55,11 @@ static int cs35l41_spi_probe(struct spi_device *spi) return cs35l41_probe(cs35l41, pdata); } -static int cs35l41_spi_remove(struct spi_device *spi) +static void cs35l41_spi_remove(struct spi_device *spi) { struct cs35l41_private *cs35l41 = spi_get_drvdata(spi); cs35l41_remove(cs35l41); - - return 0; } #ifdef CONFIG_OF diff --git a/sound/soc/codecs/pcm3168a-spi.c b/sound/soc/codecs/pcm3168a-spi.c index ecd379f308e6..b5b08046f545 100644 --- a/sound/soc/codecs/pcm3168a-spi.c +++ b/sound/soc/codecs/pcm3168a-spi.c @@ -26,11 +26,9 @@ static int pcm3168a_spi_probe(struct spi_device *spi) return pcm3168a_probe(&spi->dev, regmap); } -static int pcm3168a_spi_remove(struct spi_device *spi) +static void pcm3168a_spi_remove(struct spi_device *spi) { pcm3168a_remove(&spi->dev); - - return 0; } static const struct spi_device_id pcm3168a_spi_id[] = { diff --git a/sound/soc/codecs/pcm512x-spi.c b/sound/soc/codecs/pcm512x-spi.c index 7cf559b47e1c..4d29e7196380 100644 --- a/sound/soc/codecs/pcm512x-spi.c +++ b/sound/soc/codecs/pcm512x-spi.c @@ -26,10 +26,9 @@ static int pcm512x_spi_probe(struct spi_device *spi) return pcm512x_probe(&spi->dev, regmap); } -static int pcm512x_spi_remove(struct spi_device *spi) +static void pcm512x_spi_remove(struct spi_device *spi) { pcm512x_remove(&spi->dev); - return 0; } static const struct spi_device_id pcm512x_spi_id[] = { diff --git a/sound/soc/codecs/tlv320aic32x4-spi.c b/sound/soc/codecs/tlv320aic32x4-spi.c index a8958cd1c692..03cce8d6404f 100644 --- a/sound/soc/codecs/tlv320aic32x4-spi.c +++ b/sound/soc/codecs/tlv320aic32x4-spi.c @@ -46,11 +46,9 @@ static int aic32x4_spi_probe(struct spi_device *spi) return aic32x4_probe(&spi->dev, regmap); } -static int aic32x4_spi_remove(struct spi_device *spi) +static void aic32x4_spi_remove(struct spi_device *spi) { aic32x4_remove(&spi->dev); - - return 0; } static const struct spi_device_id aic32x4_spi_id[] = { diff --git a/sound/soc/codecs/tlv320aic3x-spi.c b/sound/soc/codecs/tlv320aic3x-spi.c index 494e84402232..deed6ec7e081 100644 --- a/sound/soc/codecs/tlv320aic3x-spi.c +++ b/sound/soc/codecs/tlv320aic3x-spi.c @@ -35,11 +35,9 @@ static int aic3x_spi_probe(struct spi_device *spi) return aic3x_probe(&spi->dev, regmap, id->driver_data); } -static int aic3x_spi_remove(struct spi_device *spi) +static void aic3x_spi_remove(struct spi_device *spi) { aic3x_remove(&spi->dev); - - return 0; } static const struct spi_device_id aic3x_spi_id[] = { diff --git a/sound/soc/codecs/wm0010.c b/sound/soc/codecs/wm0010.c index 28b4656c4e14..1bef1c500c8e 100644 --- a/sound/soc/codecs/wm0010.c +++ b/sound/soc/codecs/wm0010.c @@ -969,7 +969,7 @@ static int wm0010_spi_probe(struct spi_device *spi) return 0; } -static int wm0010_spi_remove(struct spi_device *spi) +static void wm0010_spi_remove(struct spi_device *spi) { struct wm0010_priv *wm0010 = spi_get_drvdata(spi); @@ -980,8 +980,6 @@ static int wm0010_spi_remove(struct spi_device *spi) if (wm0010->irq) free_irq(wm0010->irq, wm0010); - - return 0; } static struct spi_driver wm0010_spi_driver = { diff --git a/sound/soc/codecs/wm8804-spi.c b/sound/soc/codecs/wm8804-spi.c index 9a8da1511c34..628568724c20 100644 --- a/sound/soc/codecs/wm8804-spi.c +++ b/sound/soc/codecs/wm8804-spi.c @@ -24,10 +24,9 @@ static int wm8804_spi_probe(struct spi_device *spi) return wm8804_probe(&spi->dev, regmap); } -static int wm8804_spi_remove(struct spi_device *spi) +static void wm8804_spi_remove(struct spi_device *spi) { wm8804_remove(&spi->dev); - return 0; } static const struct of_device_id wm8804_of_match[] = { diff --git a/sound/spi/at73c213.c b/sound/spi/at73c213.c index 76c0e37a838c..56d2c712e257 100644 --- a/sound/spi/at73c213.c +++ b/sound/spi/at73c213.c @@ -1001,7 +1001,7 @@ static int snd_at73c213_probe(struct spi_device *spi) return retval; } -static int snd_at73c213_remove(struct spi_device *spi) +static void snd_at73c213_remove(struct spi_device *spi) { struct snd_card *card = dev_get_drvdata(&spi->dev); struct snd_at73c213 *chip = card->private_data; @@ -1066,8 +1066,6 @@ static int snd_at73c213_remove(struct spi_device *spi) ssc_free(chip->ssc); snd_card_free(card); - - return 0; } #ifdef CONFIG_PM_SLEEP -- 2.34.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5BB25C433EF for ; Sun, 23 Jan 2022 17:54:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=6VLUXtK+S+AooQDy/aLKciXRpX8si6l8zGzdgEy3izI=; b=ma19K4/oWbkVRJ opkstn6lKjpT7IZDQfbSSCrwMmjHxmhXVCC2V9YSACTCr0UVaS9G6f6aj9ElEtqrfI8VaFUmNUSqD KZkIn5O6661hoDTSi/gtlImmxLyxkN3RytnaaR3WhB7XwGLe2HhJKHw5JP/pdv4d0NLTqoMOfLKyy BmmroeIOVwPrNIacgwVShGfmSXBn5lQfu6zqZUM72iCN43gUw2XYP+hT3UOR3L3Bp7LJzL/87rKdG aHr5FU0wRumAwvMm7OTUbarviBfQeElkCw0LtGKKKCk1ABaJ+TSkewT4kcspN+DXAADF4XY6P2v+E AxHYH9T+JFGPpnRg+fkQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nBh3u-001WFI-IB; Sun, 23 Jan 2022 17:53:58 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nBh3m-001WDy-TQ for linux-mtd@lists.infradead.org; Sun, 23 Jan 2022 17:53:56 +0000 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nBh2H-0007aK-MJ; Sun, 23 Jan 2022 18:52:17 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1nBh29-00BycU-QC; Sun, 23 Jan 2022 18:52:09 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1nBh27-000tzn-QZ; Sun, 23 Jan 2022 18:52:08 +0100 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: Mark Brown Cc: =?utf-8?q?Marek_Beh=C3=BAn?= , Peter Huewe , Jarkko Sakkinen , Jason Gunthorpe , Michael Turquette , Stephen Boyd , Linus Walleij , Bartosz Golaszewski , Thierry Reding , Sam Ravnborg , David Airlie , Daniel Vetter , Markuss Broks , Emma Anholt , David Lechner , Kamlesh Gurudasani , =?utf-8?q?Noralf_Tr=C3=B8nnes?= , Jean Delvare , Guenter Roeck , Dan Robertson , Jonathan Cameron , Lars-Peter Clausen , Michael Hennerich , Marcus Folkesson , Kent Gustavsson , Rui Miguel Silva , Dmitry Torokhov , Pavel Machek , Yasunari Takiguchi , Mauro Carvalho Chehab , Charles-Antoine Couret , Antti Palosaari , Lee Jones , Support Opensource , Charles Keepax , Richard Fitzgerald , Maxime Coquelin , Alexandre Torgue , Arnd Bergmann , Greg Kroah-Hartman , Eric Piel , Ulf Hansson , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Wolfgang Grandegger , Marc Kleine-Budde , "David S. Miller" , Jakub Kicinski , Manivannan Sadhasivam , Thomas Kopp , Florian Fainelli , Andrew Lunn , Vivien Didelot , Vladimir Oltean , Woojung Huh , UNGLinuxDriver@microchip.com, =?utf-8?q?=C5=81ukasz_Stelmach?= , Alexander Aring , Stefan Schmidt , Harry Morris , Varka Bhadram , Xue Liu , Alan Ott , Heiner Kallweit , Russell King , Christian Lamparter , Kalle Valo , Ajay Singh , Claudiu Beznea , Solomon Peachy , Krzysztof Kozlowski , Mark Greer , Benson Leung , Hans de Goede , Mark Gross , Alessandro Zummo , Alexandre Belloni , =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= , Jiri Slaby , Felipe Balbi , Daniel Thompson , Jingoo Han , Helge Deller , James Schulman , David Rhodes , Lucas Tanure , Jaroslav Kysela , Takashi Iwai , =?utf-8?q?Nuno_S=C3=A1?= , Liam Girdwood , Daniel Mack , Thomas Zimmermann , Maxime Ripard , Andy Shevchenko , Stephan Gerhold , Alexandru Ardelean , Mike Looijmans , Gwendal Grignou , Cai Huoqing , Minghao Chi , Antoniu Miclaus , Julia Lawall , =?utf-8?q?Ronald_Tschal=C3=A4r?= , Marco Felsch , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Emmanuel Gil Peyrot , Jon Hunter , Andrew Morton , Heiko Schocher , Fabio Estevam , Colin Ian King , Dan Carpenter , Tudor Ambarus , Matt Kline , Torin Cooper-Bennun , Vincent Mailhol , =?utf-8?q?Stefan_M=C3=A4tje?= , Frieder Schrempf , Wei Yongjun , Randy Dunlap , Nanyong Sun , Yang Shen , dingsenjie , Aditya Srivastava , Stefan Wahren , Peter Zijlstra , Michael Walle , Yang Li , Geert Uytterhoeven , wengjianfeng , Sidong Yang , Paulo Miguel Almeida , Zhang Qilong , Will Deacon , Mark Tomlinson , Davidlohr Bueso , Claudius Heine , Jiri Prchal , linux-kernel@vger.kernel.org, linux-integrity@vger.kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-hwmon@vger.kernel.org, linux-iio@vger.kernel.org, linux-input@vger.kernel.org, linux-leds@vger.kernel.org, linux-media@vger.kernel.org, patches@opensource.cirrus.com, alsa-devel@alsa-project.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-mmc@vger.kernel.org, linux-mtd@lists.infradead.org, linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-wpan@vger.kernel.org, linux-wireless@vger.kernel.org, libertas-dev@lists.infradead.org, platform-driver-x86@vger.kernel.org, linux-rtc@vger.kernel.org, linux-spi@vger.kernel.org, linux-fbdev@vger.kernel.org, linux-staging@lists.linux.dev, linux-serial@vger.kernel.org, linux-usb@vger.kernel.org, linux-omap@vger.kernel.org, kernel@pengutronix.de Subject: [PATCH 5/5] spi: make remove callback a void function Date: Sun, 23 Jan 2022 18:52:01 +0100 Message-Id: <20220123175201.34839-6-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220123175201.34839-1-u.kleine-koenig@pengutronix.de> References: <20220123175201.34839-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=136955; h=from:subject; bh=mTgAH3ErkqXVYUcCOca3lK9yPv7m+NI0k2rkz3mv030=; b=owGbwMvMwMV48I9IxdpTbzgZT6slMSS+nbozdZKy7F6VnNITCcfFvwis8j2omxhsx/JEV/lKrnB7 0+qjnYzGLAyMXAyyYoosdUVaYhMk1vy3K1nCDTOIlQlkCgMXpwBMxH0pB0Onv4znwXnH3z9xvOdbFh Dcwvbro0GTnaTVSc2CxgbXu9cfVlVY5Z9Lmy2cPt9pzo+w0odRpi+kE3TfifRnVLIt5bvQIld8+ZFw ytsJxS+09Zxt1Z/lKHLHLfwlucCI+dgS7uRXZnM4HCT/ijZppJwRYHU0miE+aW2Ev27DMUPLEx4aIY YfstJ0gpcwlXDoGEacyzm4INJ0mZd+mPdMkfzF7XdW64eyeks9vy8237G5o7Q7OHXxhoKdwbWzvjH5 nlSo2lMS5XSZ57ytwRqGzq4nbLc7/GoENrde/LhndR+XYUHU8q2bH3V0BZbuWi7Sbd/eFiLopO4+a6 u7zhP/eNeHM4un+f8UlZwiuwYA X-Developer-Key: i=u.kleine-koenig@pengutronix.de; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-mtd@lists.infradead.org X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org VGhlIHZhbHVlIHJldHVybmVkIGJ5IGFuIHNwaSBkcml2ZXIncyByZW1vdmUgZnVuY3Rpb24gaXMg bW9zdGx5IGlnbm9yZWQuCihPbmx5IGFuIGVycm9yIG1lc3NhZ2UgaXMgcHJpbnRlZCBpZiB0aGUg dmFsdWUgaXMgbm9uLXplcm8gdGhhdCB0aGUKZXJyb3IgaXMgaWdub3JlZC4pCgpTbyBjaGFuZ2Ug dGhlIHByb3RvdHlwZSBvZiB0aGUgcmVtb3ZlIGZ1bmN0aW9uIHRvIHJldHVybiBubyB2YWx1ZS4g VGhpcwp3YXkgZHJpdmVyIGF1dGhvcnMgYXJlIG5vdCB0ZW1wdGVkIHRvIGFzc3VtZSB0aGF0IHBh c3NpbmcgYW4gZXJyb3IgdG8KdGhlIHVwcGVyIGxheWVyIGlzIGEgZ29vZCBpZGVhLiBBbGwgZHJp dmVycyBhcmUgYWRhcHRlZCBhY2NvcmRpbmdseS4KVGhlcmUgaXMgbm8gaW50ZW5kZWQgY2hhbmdl IG9mIGJlaGF2aW91ciwgYWxsIGNhbGxiYWNrcyB3ZXJlIHByZXBhcmVkIHRvCnJldHVybiAwIGJl Zm9yZS4KClNpZ25lZC1vZmYtYnk6IFV3ZSBLbGVpbmUtS8O2bmlnIDx1LmtsZWluZS1rb2VuaWdA cGVuZ3V0cm9uaXguZGU+Ci0tLQogZHJpdmVycy9idXMvbW94dGV0LmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2NoYXIvdHBtL3N0MzN6cDI0L3Nw aS5jICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvY2hhci90cG0vdHBt X3Rpc19zcGlfbWFpbi5jICAgICAgICAgICAgICAgICAgIHwgIDMgKy0tCiBkcml2ZXJzL2Nsay9j bGstbG1rMDQ4MzIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZl cnMvZ3Bpby9ncGlvLTc0eDE2NC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0t LQogZHJpdmVycy9ncGlvL2dwaW8tbWF4MzE5MXguYyAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgNCArLS0tCiBkcml2ZXJzL2dwaW8vZ3Bpby1tYXg3MzAxLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvZ3Bpby9ncGlvLW1jMzM4ODAuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9ncGlvL2dwaW8tcGlzb3NyLmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwv cGFuZWwtYWJ0LXkwMzB4eDA2N2EuYyAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9wYW5lbC1pbGl0ZWstaWxpOTMyMi5jICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVy cy9ncHUvZHJtL3BhbmVsL3BhbmVsLWlsaXRlay1pbGk5MzQxLmMgICAgICAgICAgfCAgMyArLS0K IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1pbm5vbHV4LWVqMDMwbmEuYyAgICAgICAgIHwg IDQgKy0tLQogZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWxnLWxiMDM1cTAyLmMgICAgICAg ICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtbGctbGc0NTczLmMg ICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1uZWMt bmw4MDQ4aGwxMS5jICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9ncHUvZHJtL3BhbmVsL3Bh bmVsLW5vdmF0ZWstbnQzOTAxNi5jICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2dwdS9kcm0v cGFuZWwvcGFuZWwtc2Ftc3VuZy1kYjc0MzAuYyAgICAgICAgICB8ICAzICstLQogZHJpdmVycy9n cHUvZHJtL3BhbmVsL3BhbmVsLXNhbXN1bmctbGQ5MDQwLmMgICAgICAgICAgfCAgNCArLS0tCiBk cml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1zNmQyN2ExLmMgICAgICAgICB8ICAz ICstLQogZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXNhbXN1bmctczZlNjNtMC1zcGkuYyAg ICAgfCAgMyArLS0KIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zaXRyb25peC1zdDc3ODl2 LmMgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXNvbnktYWN4 NTY1YWttLmMgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwt dHBvLXRkMDI4dHRlYzEuYyAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvZ3B1L2RybS9wYW5l bC9wYW5lbC10cG8tdGQwNDNtdGVhMS5jICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9ncHUv ZHJtL3BhbmVsL3BhbmVsLXRwby10cGcxMTAuYyAgICAgICAgICAgICAgfCAgMyArLS0KIGRyaXZl cnMvZ3B1L2RybS9wYW5lbC9wYW5lbC13aWRlY2hpcHMtd3MyNDAxLmMgICAgICAgIHwgIDMgKy0t CiBkcml2ZXJzL2dwdS9kcm0vdGlueS9oeDgzNTdkLmMgICAgICAgICAgICAgICAgICAgICAgICB8 ICA0ICstLS0KIGRyaXZlcnMvZ3B1L2RybS90aW55L2lsaTkxNjMuYyAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9ncHUvZHJtL3RpbnkvaWxpOTIyNS5jICAgICAgICAg ICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5MzQxLmMg ICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvZ3B1L2RybS90aW55L2ls aTk0ODYuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9ncHUvZHJt L3RpbnkvbWkwMjgzcXQuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJz L2dwdS9kcm0vdGlueS9yZXBhcGVyLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0K IGRyaXZlcnMvZ3B1L2RybS90aW55L3N0NzU4Ni5jICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDQgKy0tLQogZHJpdmVycy9ncHUvZHJtL3Rpbnkvc3Q3NzM1ci5jICAgICAgICAgICAgICAgICAg ICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2h3bW9uL2FkY3h4LmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvaHdtb24vYWR0NzMxMC5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0tCiBkcml2ZXJzL2h3bW9uL21heDExMTEuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZHJpdmVycy9od21vbi9tYXgz MTcyMi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2lp by9hY2NlbC9ibWE0MDBfc3BpLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRy aXZlcnMvaWlvL2FjY2VsL2JtYzE1MC1hY2NlbC1zcGkuYyAgICAgICAgICAgICAgICAgIHwgIDQg Ky0tLQogZHJpdmVycy9paW8vYWNjZWwvYm1pMDg4LWFjY2VsLXNwaS5jICAgICAgICAgICAgICAg ICAgfCAgNCArLS0tCiBkcml2ZXJzL2lpby9hY2NlbC9reHNkOS1zcGkuYyAgICAgICAgICAgICAg ICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvaWlvL2FjY2VsL21tYTc0NTVfc3BpLmMgICAg ICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9paW8vYWNjZWwvc2NhMzAwMC5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2lpby9hZGMvYWQ3 MjY2LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvaWlv L2FkYy9sdGMyNDk2LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJp dmVycy9paW8vYWRjL21jcDMyMHguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCAr LS0tCiBkcml2ZXJzL2lpby9hZGMvbWNwMzkxMS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICA0ICstLS0KIGRyaXZlcnMvaWlvL2FkYy90aS1hZGMxMjEzOC5jICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9paW8vYWRjL3RpLWFkczc5NTAuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2lpby9hZGMvdGktYWRzODY4OC5j ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvaWlvL2FkYy90aS10 bGM0NTQxLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9paW8v YW1wbGlmaWVycy9hZDgzNjYuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2 ZXJzL2lpby9jb21tb24vc3NwX3NlbnNvcnMvc3NwX2Rldi5jICAgICAgICAgICAgICB8ICA0ICst LS0KIGRyaXZlcnMvaWlvL2RhYy9hZDUzNjAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDQgKy0tLQogZHJpdmVycy9paW8vZGFjL2FkNTM4MC5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2lpby9kYWMvYWQ1NDQ2LmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvaWlvL2RhYy9hZDU0NDkuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9paW8vZGFjL2FkNTUw NC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2lpby9k YWMvYWQ1NTkyci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZl cnMvaWlvL2RhYy9hZDU2MjRyX3NwaS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0t LQogZHJpdmVycy9paW8vZGFjL2FkNTY4Ni1zcGkuYyAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgNCArLS0tCiBkcml2ZXJzL2lpby9kYWMvYWQ1NzYxLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvaWlvL2RhYy9hZDU3NjQuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9paW8vZGFjL2FkNTc5MS5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2lpby9kYWMvYWQ4ODAx LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvaWlvL2Rh Yy9sdGMxNjYwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVy cy9paW8vZGFjL2x0YzI2MzIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0t CiBkcml2ZXJzL2lpby9kYWMvbWNwNDkyMi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA0ICstLS0KIGRyaXZlcnMvaWlvL2RhYy90aS1kYWMwODJzMDg1LmMgICAgICAgICAgICAgICAg ICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9paW8vZGFjL3RpLWRhYzczMTEuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvaWlvL2ZyZXF1ZW5jeS9hZGY0MzUwLmMg ICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9paW8vZ3lyby9ibWcxNjBf c3BpLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2lpby9neXJv L2Z4YXMyMTAwMmNfc3BpLmMgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMv aWlvL2hlYWx0aC9hZmU0NDAzLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQog ZHJpdmVycy9paW8vbWFnbmV0b21ldGVyL2JtYzE1MF9tYWduX3NwaS5jICAgICAgICAgICAgfCAg NCArLS0tCiBkcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvaG1jNTg0M19zcGkuYyAgICAgICAgICAg ICAgICB8ICA0ICstLS0KIGRyaXZlcnMvaWlvL3BvdGVudGlvbWV0ZXIvbWF4NTQ4Ny5jICAgICAg ICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9paW8vcHJlc3N1cmUvbXM1NjExX3NwaS5j ICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2lpby9wcmVzc3VyZS96cGEy MzI2X3NwaS5jICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvaW5wdXQva2V5 Ym9hcmQvYXBwbGVzcGkuYyAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9p bnB1dC9taXNjL2FkeGwzNHgtc3BpLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBk cml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2Fkczc4NDYuYyAgICAgICAgICAgICAgICAgICB8ICA0 ICstLS0KIGRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vY3l0dHNwNF9zcGkuYyAgICAgICAgICAg ICAgIHwgIDQgKy0tLQogZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi90c2MyMDA1LmMgICAgICAg ICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2xlZHMvbGVkcy1jcjAwMTQxMTQuYyAgICAg ICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvbGVkcy9sZWRzLWRhYzEyNHMw ODUuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9sZWRzL2xlZHMt ZWwxNTIwMzAwMC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL2xl ZHMvbGVkcy1zcGktYnl0ZS5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRy aXZlcnMvbWVkaWEvc3BpL2N4ZDI4ODAtc3BpLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDQg Ky0tLQogZHJpdmVycy9tZWRpYS9zcGkvZ3MxNjYyLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgNCArLS0tCiBkcml2ZXJzL21lZGlhL3R1bmVycy9tc2kwMDEuYyAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAzICstLQogZHJpdmVycy9tZmQvYXJpem9uYS1zcGkuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL21mZC9kYTkwNTItc3BpLmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZHJpdmVycy9tZmQvZXp4LXBjYXAu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL21mZC9t YWRlcmEtc3BpLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZl cnMvbWZkL21jMTN4eHgtc3BpLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0t CiBkcml2ZXJzL21mZC9yc211X3NwaS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA0ICstLS0KIGRyaXZlcnMvbWZkL3N0bXBlLXNwaS5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9tZmQvdHBzNjU5MTItc3BpLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL21pc2MvYWQ1MjV4X2Rwb3Qtc3BpLmMg ICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZHJpdmVycy9taXNjL2VlcHJvbS9lZXBy b21fOTN4eDQ2LmMgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL21pc2MvbGF0 dGljZS1lY3AzLWNvbmZpZy5jICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMv bWlzYy9saXMzbHYwMmQvbGlzM2x2MDJkX3NwaS5jICAgICAgICAgICAgICAgIHwgIDQgKy0tLQog ZHJpdmVycy9tbWMvaG9zdC9tbWNfc3BpLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MyArLS0KIGRyaXZlcnMvbXRkL2RldmljZXMvbWNocDIzazI1Ni5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDQgKy0tLQogZHJpdmVycy9tdGQvZGV2aWNlcy9tY2hwNDhsNjQwLmMgICAgICAgICAg ICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL210ZC9kZXZpY2VzL210ZF9kYXRhZmxhc2gu YyAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvbXRkL2RldmljZXMvc3N0MjVs LmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9uZXQvY2FuL21f Y2FuL3RjYW40eDV4LWNvcmUuYyAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL25l dC9jYW4vc3BpL2hpMzExeC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRy aXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQg Ky0tLQogZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYyAgICAg ICAgfCAgNCArLS0tCiBkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYyAgICAgICAgICAgICAg ICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODc5NV9z cGkuYyAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9r c3o5NDc3X3NwaS5jICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL25ldC9kc2Evc2ph MTEwNS9zamExMTA1X21haW4uYyAgICAgICAgICAgICAgICB8ICA2ICsrLS0tLQogZHJpdmVycy9u ZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1zcGkuYyAgICAgICAgICAgICAgICAgfCAgNiArKy0tLS0K IGRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jICAgICAgICAgICAgIHwg IDQgKy0tLQogZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9zcGkuYyAgICAgICAg ICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvZW5jMjhqNjAu YyAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9l bmN4MjRqNjAwLmMgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVh bGNvbW0vcWNhX3NwaS5jICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL25ldC9ldGhl cm5ldC92ZXJ0ZXhjb20vbXNlMTAyeC5jICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMv bmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYyAgICAgICAgICAgICAgIHwgIDQgKy0tLQog ZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9hZGY3MjQyLmMgICAgICAgICAgICAgICAgICAgICAgfCAg NCArLS0tCiBkcml2ZXJzL25ldC9pZWVlODAyMTU0L2F0ODZyZjIzMC5jICAgICAgICAgICAgICAg ICAgICB8ICA0ICstLS0KIGRyaXZlcnMvbmV0L2llZWU4MDIxNTQvY2E4MjEwLmMgICAgICAgICAg ICAgICAgICAgICAgIHwgIDYgKystLS0tCiBkcml2ZXJzL25ldC9pZWVlODAyMTU0L2NjMjUyMC5j ICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvbmV0L2llZWU4MDIxNTQv bWNyMjBhLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9uZXQvaWVl ZTgwMjE1NC9tcmYyNGo0MC5jICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJz L25ldC9waHkvc3BpX2tzODk5NS5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0K IGRyaXZlcnMvbmV0L3dhbi9zbGljX2RzMjY1MjIuYyAgICAgICAgICAgICAgICAgICAgICAgIHwg IDMgKy0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0c3BpLmMgICAgICAg ICAgICB8ICA0ICstLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvaWZf c3BpLmMgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dp bGMxMDAwL3NwaS5jICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9zdC9j dzEyMDAvY3cxMjAwX3NwaS5jICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvbmV0L3dpcmVs ZXNzL3RpL3dsMTI1MS9zcGkuYyAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9u ZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3NwaS5jICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBk cml2ZXJzL25mYy9uZmNtcnZsL3NwaS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAz ICstLQogZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgNCArLS0tCiBkcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvbmZjL3RyZjc5NzBhLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9wbGF0Zm9ybS9jaHJvbWUvY3Jv c19lY19zcGkuYyAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBkcml2ZXJzL3BsYXRmb3JtL29s cGMvb2xwYy14bzE3NS1lYy5jICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRyaXZlcnMvcnRj L3J0Yy1kczEzMDIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0tCiBkcml2 ZXJzL3J0Yy9ydGMtZHMxMzA1LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICst LS0KIGRyaXZlcnMvcnRjL3J0Yy1kczEzNDMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDQgKy0tLQogZHJpdmVycy9zcGkvc3BpLW1lbS5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNiArKy0tLS0KIGRyaXZlcnMvc3BpL3NwaS1zbGF2ZS1zeXN0ZW0tY29udHJv bC5jICAgICAgICAgICAgICAgIHwgIDMgKy0tCiBkcml2ZXJzL3NwaS9zcGktc2xhdmUtdGltZS5j ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZHJpdmVycy9zcGkvc3BpLXRsZTYy eDAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvc3BpL3Nw aS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEgKystLS0tLS0tLS0K IGRyaXZlcnMvc3BpL3NwaWRldi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDQgKy0tLQogZHJpdmVycy9zdGFnaW5nL2ZidGZ0L2ZidGZ0LmggICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMyArLS0KIGRyaXZlcnMvc3RhZ2luZy9waTQzMy9waTQzM19pZi5jICAgICAgICAg ICAgICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy9zdGFnaW5nL3dmeC9idXNfc3BpLmMgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvdHR5L3NlcmlhbC9tYXgzMTAw LmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKystLS0KIGRyaXZlcnMvdHR5L3Nlcmlh bC9tYXgzMTB4LmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0tCiBkcml2ZXJzL3R0 eS9zZXJpYWwvc2MxNmlzN3h4LmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIGRy aXZlcnMvdXNiL2dhZGdldC91ZGMvbWF4MzQyMF91ZGMuYyAgICAgICAgICAgICAgICAgIHwgIDQg Ky0tLQogZHJpdmVycy91c2IvaG9zdC9tYXgzNDIxLWhjZC5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMyArLS0KIGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2FtczM2OWZnMDYuYyAgICAgICAg ICAgICAgICAgIHwgIDMgKy0tCiBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9jb3JnaV9sY2QuYyAg ICAgICAgICAgICAgICAgICB8ICAzICstLQogZHJpdmVycy92aWRlby9iYWNrbGlnaHQvaWxpOTIy eC5jICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0 L2w0ZjAwMjQydDAzLmMgICAgICAgICAgICAgICAgIHwgIDMgKy0tCiBkcml2ZXJzL3ZpZGVvL2Jh Y2tsaWdodC9sbXM1MDFrZjAzLmMgICAgICAgICAgICAgICAgICB8ICAzICstLQogZHJpdmVycy92 aWRlby9iYWNrbGlnaHQvbHR2MzUwcXYuYyAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGRy aXZlcnMvdmlkZW8vYmFja2xpZ2h0L3RkbzI0bS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMg Ky0tCiBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC90b3NhX2xjZC5jICAgICAgICAgICAgICAgICAg ICB8ICA0ICstLS0KIGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3ZnZzI0MzJhNC5jICAgICAgICAg ICAgICAgICAgIHwgIDQgKy0tLQogZHJpdmVycy92aWRlby9mYmRldi9vbWFwL2xjZF9taXBpZC5j ICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiAuLi4vb21hcDIvb21hcGZiL2Rpc3BsYXlzL3Bh bmVsLWxncGhpbGlwcy1sYjAzNXEwMi5jICB8ICA0ICstLS0KIC4uLi9vbWFwMi9vbWFwZmIvZGlz cGxheXMvcGFuZWwtbmVjLW5sODA0OGhsMTEuYyAgICAgIHwgIDQgKy0tLQogLi4uL29tYXAyL29t YXBmYi9kaXNwbGF5cy9wYW5lbC1zb255LWFjeDU2NWFrbS5jICAgICAgfCAgNCArLS0tCiAuLi4v b21hcDIvb21hcGZiL2Rpc3BsYXlzL3BhbmVsLXRwby10ZDAyOHR0ZWMxLmMgICAgICB8ICA0ICst LS0KIC4uLi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvcGFuZWwtdHBvLXRkMDQzbXRlYTEuYyAgICAg IHwgIDQgKy0tLQogaW5jbHVkZS9saW51eC9zcGkvc3BpLmggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMiArLQogc291bmQvcGNpL2hkYS9jczM1bDQxX2hkYV9zcGkuYyAgICAgICAg ICAgICAgICAgICAgICAgfCAgNCArLS0tCiBzb3VuZC9zb2MvY29kZWNzL2FkYXUxNzYxLXNwaS5j ICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogc291bmQvc29jL2NvZGVjcy9hZGF1MTc4 MS1zcGkuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIHNvdW5kL3NvYy9jb2RlY3Mv Y3MzNWw0MS1zcGkuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogc291bmQvc29j L2NvZGVjcy9wY20zMTY4YS1zcGkuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0tCiBz b3VuZC9zb2MvY29kZWNzL3BjbTUxMngtc3BpLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAz ICstLQogc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzMng0LXNwaS5jICAgICAgICAgICAgICAg ICAgfCAgNCArLS0tCiBzb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzN4LXNwaS5jICAgICAgICAg ICAgICAgICAgICB8ICA0ICstLS0KIHNvdW5kL3NvYy9jb2RlY3Mvd20wMDEwLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogc291bmQvc29jL2NvZGVjcy93bTg4MDQtc3Bp LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIHNvdW5kL3NwaS9hdDczYzIxMy5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tLQogMTkxIGZpbGVzIGNo YW5nZWQsIDE5NyBpbnNlcnRpb25zKCspLCA1NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9idXMvbW94dGV0LmMgYi9kcml2ZXJzL2J1cy9tb3h0ZXQuYwppbmRleCBmZDg3YTU5 ODM3ZmEuLjVlYjBmZTczZGRjNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9idXMvbW94dGV0LmMKKysr IGIvZHJpdmVycy9idXMvbW94dGV0LmMKQEAgLTgxNSw3ICs4MTUsNyBAQCBzdGF0aWMgaW50IG1v eHRldF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiAwOwogfQogCi1zdGF0 aWMgaW50IG1veHRldF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lk IG1veHRldF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgbW94dGV0 ICptb3h0ZXQgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIApAQCAtODI4LDggKzgyOCw2IEBAIHN0 YXRpYyBpbnQgbW94dGV0X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCWRldmljZV9m b3JfZWFjaF9jaGlsZChtb3h0ZXQtPmRldiwgTlVMTCwgX191bnJlZ2lzdGVyKTsKIAogCW11dGV4 X2Rlc3Ryb3koJm1veHRldC0+bG9jayk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0 IHN0cnVjdCBvZl9kZXZpY2VfaWQgbW94dGV0X2R0X2lkc1tdID0gewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9jaGFyL3RwbS9zdDMzenAyNC9zcGkuYyBiL2RyaXZlcnMvY2hhci90cG0vc3QzM3pwMjQv c3BpLmMKaW5kZXggY2NkOWU0MmI4ZWFiLi4yMmQxODQ4ODQ2OTQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvY2hhci90cG0vc3QzM3pwMjQvc3BpLmMKKysrIGIvZHJpdmVycy9jaGFyL3RwbS9zdDMzenAy NC9zcGkuYwpAQCAtMzgxLDEzICszODEsMTEgQEAgc3RhdGljIGludCBzdDMzenAyNF9zcGlfcHJv YmUoc3RydWN0IHNwaV9kZXZpY2UgKmRldikKICAqIEBwYXJhbTogY2xpZW50LCB0aGUgc3BpX2Rl dmljZSBkZXNjcmlwdGlvbiAoVFBNIFNQSSBkZXNjcmlwdGlvbikuCiAgKiBAcmV0dXJuOiAwIGlu IGNhc2Ugb2Ygc3VjY2Vzcy4KICAqLwotc3RhdGljIGludCBzdDMzenAyNF9zcGlfcmVtb3ZlKHN0 cnVjdCBzcGlfZGV2aWNlICpkZXYpCitzdGF0aWMgdm9pZCBzdDMzenAyNF9zcGlfcmVtb3ZlKHN0 cnVjdCBzcGlfZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IHRwbV9jaGlwICpjaGlwID0gc3BpX2dl dF9kcnZkYXRhKGRldik7CiAKIAlzdDMzenAyNF9yZW1vdmUoY2hpcCk7Ci0KLQlyZXR1cm4gMDsK IH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIHN0MzN6cDI0X3NwaV9pZFtd ID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmMgYi9k cml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYwppbmRleCBhYWE1OWEwMGVlYWUuLjE4 NDM5NmIzYWY1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWlu LmMKKysrIGIvZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmMKQEAgLTI1NCwxMyAr MjU0LDEyIEBAIHN0YXRpYyBpbnQgdHBtX3Rpc19zcGlfZHJpdmVyX3Byb2JlKHN0cnVjdCBzcGlf ZGV2aWNlICpzcGkpCiAKIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyh0cG1fdGlzX3BtLCB0cG1f cG1fc3VzcGVuZCwgdHBtX3Rpc19zcGlfcmVzdW1lKTsKIAotc3RhdGljIGludCB0cG1fdGlzX3Nw aV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIHRwbV90aXNfc3Bp X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqZGV2KQogewogCXN0cnVjdCB0cG1fY2hpcCAqY2hp cCA9IHNwaV9nZXRfZHJ2ZGF0YShkZXYpOwogCiAJdHBtX2NoaXBfdW5yZWdpc3RlcihjaGlwKTsK IAl0cG1fdGlzX3JlbW92ZShjaGlwKTsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0 cnVjdCBzcGlfZGV2aWNlX2lkIHRwbV90aXNfc3BpX2lkW10gPSB7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Nsay9jbGstbG1rMDQ4MzIuYyBiL2RyaXZlcnMvY2xrL2Nsay1sbWswNDgzMi5jCmluZGV4 IDhmMDJjMGI4ODAwMC4uZjQxNmY4YmMyODk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Nsay9jbGst bG1rMDQ4MzIuYworKysgYi9kcml2ZXJzL2Nsay9jbGstbG1rMDQ4MzIuYwpAQCAtMTU0NCwxNCAr MTU0NCwxMiBAQCBzdGF0aWMgaW50IGxtazA0ODMyX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBsbWswNDgzMl9yZW1vdmUoc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIGxtazA0ODMyX3JlbW92ZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQogewogCXN0cnVjdCBsbWswNDgzMiAqbG1rID0gc3BpX2dldF9kcnZkYXRh KHNwaSk7CiAKIAljbGtfZGlzYWJsZV91bnByZXBhcmUobG1rLT5vc2Npbik7CiAJb2ZfY2xrX2Rl bF9wcm92aWRlcihzcGktPmRldi5vZl9ub2RlKTsKLQotCXJldHVybiAwOwogfQogc3RhdGljIGNv bnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIGxtazA0ODMyX2lkW10gPSB7CiAJeyAibG1rMDQ4MzIi LCBMTUswNDgzMiB9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncGlvL2dwaW8tNzR4MTY0LmMgYi9k cml2ZXJzL2dwaW8vZ3Bpby03NHgxNjQuYwppbmRleCA0YTU1Y2RmMDg5ZDYuLmUwMGMzMzMxMDUx NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncGlvL2dwaW8tNzR4MTY0LmMKKysrIGIvZHJpdmVycy9n cGlvL2dwaW8tNzR4MTY0LmMKQEAgLTE2MywxNSArMTYzLDEzIEBAIHN0YXRpYyBpbnQgZ2VuXzc0 eDE2NF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAKLXN0 YXRpYyBpbnQgZ2VuXzc0eDE2NF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRp YyB2b2lkIGdlbl83NHgxNjRfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3Ry dWN0IGdlbl83NHgxNjRfY2hpcCAqY2hpcCA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCiAJZ3Bp b2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGNoaXAtPmdwaW9kX29lLCAwKTsKIAlncGlvY2hpcF9yZW1v dmUoJmNoaXAtPmdwaW9fY2hpcCk7CiAJbXV0ZXhfZGVzdHJveSgmY2hpcC0+bG9jayk7Ci0KLQly ZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIGdlbl83NHgx NjRfc3BpX2lkc1tdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncGlvL2dwaW8tbWF4MzE5MXgu YyBiL2RyaXZlcnMvZ3Bpby9ncGlvLW1heDMxOTF4LmMKaW5kZXggNTFjZDZmOThkMWM3Li4xNjFj NDc1MWM1ZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3Bpby9ncGlvLW1heDMxOTF4LmMKKysrIGIv ZHJpdmVycy9ncGlvL2dwaW8tbWF4MzE5MXguYwpAQCAtNDQzLDE0ICs0NDMsMTIgQEAgc3RhdGlj IGludCBtYXgzMTkxeF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiAwOwog fQogCi1zdGF0aWMgaW50IG1heDMxOTF4X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQor c3RhdGljIHZvaWQgbWF4MzE5MXhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJ c3RydWN0IG1heDMxOTF4X2NoaXAgKm1heDMxOTF4ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAK IAlncGlvY2hpcF9yZW1vdmUoJm1heDMxOTF4LT5ncGlvKTsKIAltdXRleF9kZXN0cm95KCZtYXgz MTkxeC0+bG9jayk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBfX2luaXQgbWF4MzE5 MXhfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBzcGlfZHJpdmVyICpzZHJ2KQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncGlvL2dwaW8tbWF4NzMwMS5jIGIvZHJpdmVycy9ncGlvL2dwaW8tbWF4NzMwMS5j CmluZGV4IDU4NjJkNzNiZjMyNS4uMTE4MTNmNDFkNDYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw aW8vZ3Bpby1tYXg3MzAxLmMKKysrIGIvZHJpdmVycy9ncGlvL2dwaW8tbWF4NzMwMS5jCkBAIC02 NCwxMSArNjQsOSBAQCBzdGF0aWMgaW50IG1heDczMDFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IG1heDczMDFfcmVtb3ZlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBtYXg3MzAxX3JlbW92ZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQogewogCV9fbWF4NzMweF9yZW1vdmUoJnNwaS0+ZGV2KTsKLQotCXJldHVy biAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgbWF4NzMwMV9pZFtd ID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncGlvL2dwaW8tbWMzMzg4MC5jIGIvZHJpdmVycy9n cGlvL2dwaW8tbWMzMzg4MC5jCmluZGV4IDMxZDJiZTFiZWJjOC4uY2Q5YjE2ZGJlMWE5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwaW8vZ3Bpby1tYzMzODgwLmMKKysrIGIvZHJpdmVycy9ncGlvL2dw aW8tbWMzMzg4MC5jCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGljIGludCBtYzMzODgwX3Byb2Jl KHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBt YzMzODgwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgbWMzMzg4 MF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgbWMzMzg4MCAqbWM7 CiAKQEAgLTE0Miw4ICsxNDIsNiBAQCBzdGF0aWMgaW50IG1jMzM4ODBfcmVtb3ZlKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCiAKIAlncGlvY2hpcF9yZW1vdmUoJm1jLT5jaGlwKTsKIAltdXRleF9k ZXN0cm95KCZtYy0+bG9jayk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBzcGlf ZHJpdmVyIG1jMzM4ODBfZHJpdmVyID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncGlvL2dwaW8t cGlzb3NyLmMgYi9kcml2ZXJzL2dwaW8vZ3Bpby1waXNvc3IuYwppbmRleCA4ZTA0MDU0Y2YwN2Uu LjgxYTQ3YWUwOWZmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncGlvL2dwaW8tcGlzb3NyLmMKKysr IGIvZHJpdmVycy9ncGlvL2dwaW8tcGlzb3NyLmMKQEAgLTE2MywxNSArMTYzLDEzIEBAIHN0YXRp YyBpbnQgcGlzb3NyX2dwaW9fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4g MDsKIH0KIAotc3RhdGljIGludCBwaXNvc3JfZ3Bpb19yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKK3N0YXRpYyB2b2lkIHBpc29zcl9ncGlvX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQogewogCXN0cnVjdCBwaXNvc3JfZ3BpbyAqZ3BpbyA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkp OwogCiAJZ3Bpb2NoaXBfcmVtb3ZlKCZncGlvLT5jaGlwKTsKIAogCW11dGV4X2Rlc3Ryb3koJmdw aW8tPmxvY2spOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2Rl dmljZV9pZCBwaXNvc3JfZ3Bpb19pZF90YWJsZVtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3BhbmVsL3BhbmVsLWFidC15MDMweHgwNjdhLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvcGFuZWwtYWJ0LXkwMzB4eDA2N2EuYwppbmRleCBmMDQzYjQ4NDA1NWIuLmVkNjI2ZmRjMDhl OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWFidC15MDMweHgwNjdh LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWFidC15MDMweHgwNjdhLmMKQEAg LTI5MywxNSArMjkzLDEzIEBAIHN0YXRpYyBpbnQgeTAzMHh4MDY3YV9wcm9iZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHkwMzB4eDA2N2FfcmVt b3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCB5MDMweHgwNjdhX3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCB5MDMweHgwNjdhICpwcml2ID0g c3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAlkcm1fcGFuZWxfcmVtb3ZlKCZwcml2LT5wYW5lbCk7 CiAJZHJtX3BhbmVsX2Rpc2FibGUoJnByaXYtPnBhbmVsKTsKIAlkcm1fcGFuZWxfdW5wcmVwYXJl KCZwcml2LT5wYW5lbCk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlIHkwMzB4eDA2N2FfbW9kZXNbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1pbGl0ZWstaWxpOTMyMi5jIGIvZHJpdmVycy9ncHUvZHJt L3BhbmVsL3BhbmVsLWlsaXRlay1pbGk5MzIyLmMKaW5kZXggOGU4NGRmOWEwMDMzLi4zZGZhZmE1 ODUxMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1pbGl0ZWstaWxp OTMyMi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1pbGl0ZWstaWxpOTMyMi5j CkBAIC04OTYsMTQgKzg5NiwxMiBAQCBzdGF0aWMgaW50IGlsaTkzMjJfcHJvYmUoc3RydWN0IHNw aV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBpbGk5MzIyX3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgaWxpOTMyMl9yZW1vdmUoc3Ry dWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgaWxpOTMyMiAqaWxpID0gc3BpX2dldF9k cnZkYXRhKHNwaSk7CiAKIAlpbGk5MzIyX3Bvd2VyX29mZihpbGkpOwogCWRybV9wYW5lbF9yZW1v dmUoJmlsaS0+cGFuZWwpOwotCi0JcmV0dXJuIDA7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaWxpdGVrLWlsaTkzNDEuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9wYW5lbC1pbGl0ZWstaWxpOTM0MS5jCmluZGV4IDJjMzM3OGEyNTliMS4uYTA3ZWYy NjIzNGU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaWxpdGVrLWls aTkzNDEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaWxpdGVrLWlsaTkzNDEu YwpAQCAtNzI4LDcgKzcyOCw3IEBAIHN0YXRpYyBpbnQgaWxpOTM0MV9wcm9iZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQogCXJldHVybiAtMTsKIH0KIAotc3RhdGljIGludCBpbGk5MzQxX3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgaWxpOTM0MV9yZW1vdmUoc3Ry dWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAljb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCAqaWQg PSBzcGlfZ2V0X2RldmljZV9pZChzcGkpOwogCXN0cnVjdCBpbGk5MzQxICppbGkgPSBzcGlfZ2V0 X2RydmRhdGEoc3BpKTsKQEAgLTc0MSw3ICs3NDEsNiBAQCBzdGF0aWMgaW50IGlsaTkzNDFfcmVt b3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJCWRybV9kZXZfdW5wbHVnKGRybSk7CiAJCWRy bV9hdG9taWNfaGVscGVyX3NodXRkb3duKGRybSk7CiAJfQotCXJldHVybiAwOwogfQogCiBzdGF0 aWMgdm9pZCBpbGk5MzQxX3NodXRkb3duKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaW5ub2x1eC1lajAzMG5hLmMgYi9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaW5ub2x1eC1lajAzMG5hLmMKaW5kZXggYzU1OGRlM2Y5 OWJlLi5lM2IxZGFhMGNiNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5l bC1pbm5vbHV4LWVqMDMwbmEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaW5u b2x1eC1lajAzMG5hLmMKQEAgLTIxOSwxNSArMjE5LDEzIEBAIHN0YXRpYyBpbnQgZWowMzBuYV9w cm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50 IGVqMDMwbmFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBlajAz MG5hX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBlajAzMG5hICpw cml2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAlkcm1fcGFuZWxfcmVtb3ZlKCZwcml2LT5w YW5lbCk7CiAJZHJtX3BhbmVsX2Rpc2FibGUoJnByaXYtPnBhbmVsKTsKIAlkcm1fcGFuZWxfdW5w cmVwYXJlKCZwcml2LT5wYW5lbCk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlIGVqMDMwbmFfbW9kZXNbXSA9IHsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1sZy1sYjAzNXEwMi5jIGIvZHJpdmVycy9ncHUvZHJt L3BhbmVsL3BhbmVsLWxnLWxiMDM1cTAyLmMKaW5kZXggZjMxODNiNjg3MDRmLi45ZDBkNGZhYTNm NTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1sZy1sYjAzNXEwMi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1sZy1sYjAzNXEwMi5jCkBAIC0yMDMs MTQgKzIwMywxMiBAQCBzdGF0aWMgaW50IGxiMDM1cTAyX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNl ICpzcGkpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgbGIwMzVxMDJfcmVtb3ZlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBsYjAzNXEwMl9yZW1vdmUoc3RydWN0IHNw aV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgbGIwMzVxMDJfZGV2aWNlICpsY2QgPSBzcGlfZ2V0 X2RydmRhdGEoc3BpKTsKIAogCWRybV9wYW5lbF9yZW1vdmUoJmxjZC0+cGFuZWwpOwogCWRybV9w YW5lbF9kaXNhYmxlKCZsY2QtPnBhbmVsKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCBsYjAzNXEwMl9vZl9tYXRjaFtdID0gewpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWxnLWxnNDU3My5jIGIvZHJpdmVycy9ncHUv ZHJtL3BhbmVsL3BhbmVsLWxnLWxnNDU3My5jCmluZGV4IDhlNTE2MGFmMWRlNS4uY2YyNDZkMTVi N2I2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtbGctbGc0NTczLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWxnLWxnNDU3My5jCkBAIC0yNjYsMTQg KzI2NiwxMiBAQCBzdGF0aWMgaW50IGxnNDU3M19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3Bp KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGxnNDU3M19yZW1vdmUoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIGxnNDU3M19yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKIHsKIAlzdHJ1Y3QgbGc0NTczICpjdHggPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAog CWxnNDU3M19kaXNwbGF5X29mZihjdHgpOwogCWRybV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwp OwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxn NDU3M19vZl9tYXRjaFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3Bh bmVsLW5lYy1ubDgwNDhobDExLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtbmVjLW5s ODA0OGhsMTEuYwppbmRleCA2ZTVhYjFkZWJjOGIuLjgxYzVjNTQxYTM1MSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLW5lYy1ubDgwNDhobDExLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3BhbmVsL3BhbmVsLW5lYy1ubDgwNDhobDExLmMKQEAgLTIxMiwxNSArMjEyLDEz IEBAIHN0YXRpYyBpbnQgbmw4MDQ4X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0 dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgbmw4MDQ4X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQorc3RhdGljIHZvaWQgbmw4MDQ4X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog ewogCXN0cnVjdCBubDgwNDhfcGFuZWwgKmxjZCA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCiAJ ZHJtX3BhbmVsX3JlbW92ZSgmbGNkLT5wYW5lbCk7CiAJZHJtX3BhbmVsX2Rpc2FibGUoJmxjZC0+ cGFuZWwpOwogCWRybV9wYW5lbF91bnByZXBhcmUoJmxjZC0+cGFuZWwpOwotCi0JcmV0dXJuIDA7 CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG5sODA0OF9vZl9tYXRjaFtd ID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLW5vdmF0ZWstbnQz OTAxNi5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLW5vdmF0ZWstbnQzOTAxNi5jCmlu ZGV4IGQwMzY4NTNkYjg2NS4uZjU4Y2ZiMTBiNThhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vcGFuZWwvcGFuZWwtbm92YXRlay1udDM5MDE2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Bh bmVsL3BhbmVsLW5vdmF0ZWstbnQzOTAxNi5jCkBAIC0yOTIsNyArMjkyLDcgQEAgc3RhdGljIGlu dCBudDM5MDE2X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIDA7CiB9CiAK LXN0YXRpYyBpbnQgbnQzOTAxNl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRp YyB2b2lkIG50MzkwMTZfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0 IG50MzkwMTYgKnBhbmVsID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKQEAgLTMwMCw4ICszMDAs NiBAQCBzdGF0aWMgaW50IG50MzkwMTZfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAK IAludDM5MDE2X2Rpc2FibGUoJnBhbmVsLT5kcm1fcGFuZWwpOwogCW50MzkwMTZfdW5wcmVwYXJl KCZwYW5lbC0+ZHJtX3BhbmVsKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUga2QwMzVnNl9kaXNwbGF5X21vZGVzW10gPSB7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1kYjc0MzAuYyBiL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zYW1zdW5nLWRiNzQzMC5jCmluZGV4IGVhZDQ3OTcxOWYw MC4uMDQ2NDBjNTI1NmE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwt c2Ftc3VuZy1kYjc0MzAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3Vu Zy1kYjc0MzAuYwpAQCAtMzE0LDEyICszMTQsMTEgQEAgc3RhdGljIGludCBkYjc0MzBfcHJvYmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBkYjc0 MzBfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBkYjc0MzBfcmVt b3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IGRiNzQzMCAqZGIgPSBzcGlf Z2V0X2RydmRhdGEoc3BpKTsKIAogCWRybV9wYW5lbF9yZW1vdmUoJmRiLT5wYW5lbCk7Ci0JcmV0 dXJuIDA7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwt c2Ftc3VuZy1sZDkwNDAuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zYW1zdW5nLWxk OTA0MC5jCmluZGV4IGM0YjM4ODg1MGExMy4uMDFlYjIxMWYzMmY3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1sZDkwNDAuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1sZDkwNDAuYwpAQCAtMzU4LDE0ICszNTgsMTIgQEAg c3RhdGljIGludCBsZDkwNDBfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4g MDsKIH0KIAotc3RhdGljIGludCBsZDkwNDBfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkp CitzdGF0aWMgdm9pZCBsZDkwNDBfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJ c3RydWN0IGxkOTA0MCAqY3R4ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAlsZDkwNDBfcG93 ZXJfb2ZmKGN0eCk7CiAJZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7Ci0KLQlyZXR1cm4g MDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbGQ5MDQwX29mX21hdGNo W10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1z NmQyN2ExLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1zNmQyN2ExLmMK aW5kZXggMTY5NmNlYjM2YWEwLi4yYWRiMjIzYTg5NWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9wYW5lbC9wYW5lbC1zYW1zdW5nLXM2ZDI3YTEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvcGFuZWwtc2Ftc3VuZy1zNmQyN2ExLmMKQEAgLTI5MSwxMiArMjkxLDExIEBAIHN0YXRp YyBpbnQgczZkMjdhMV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiAwOwog fQogCi1zdGF0aWMgaW50IHM2ZDI3YTFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitz dGF0aWMgdm9pZCBzNmQyN2ExX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0 cnVjdCBzNmQyN2ExICpjdHggPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCWRybV9wYW5lbF9y ZW1vdmUoJmN0eC0+cGFuZWwpOwotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBzNmQyN2ExX21hdGNoW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1zNmU2M20wLXNwaS5jIGIvZHJpdmVycy9ncHUvZHJt L3BhbmVsL3BhbmVsLXNhbXN1bmctczZlNjNtMC1zcGkuYwppbmRleCBjMTc4ZDk2MmIwZDUuLmQ5 OWFmY2M2NzJjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXNhbXN1 bmctczZlNjNtMC1zcGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3Vu Zy1zNmU2M20wLXNwaS5jCkBAIC02MiwxMCArNjIsOSBAQCBzdGF0aWMgaW50IHM2ZTYzbTBfc3Bp X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJCQkgICAgIHM2ZTYzbTBfc3BpX2Rjc193 cml0ZSwgZmFsc2UpOwogfQogCi1zdGF0aWMgaW50IHM2ZTYzbTBfc3BpX3JlbW92ZShzdHJ1Y3Qg c3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgczZlNjNtMF9zcGlfcmVtb3ZlKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCiB7CiAJczZlNjNtMF9yZW1vdmUoJnNwaS0+ZGV2KTsKLQlyZXR1cm4g MDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgczZlNjNtMF9zcGlfb2Zf bWF0Y2hbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zaXRy b25peC1zdDc3ODl2LmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2l0cm9uaXgtc3Q3 Nzg5di5jCmluZGV4IDYxZTU2NTUyNDU0Mi4uYmJjNDU2OWNiY2RjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2l0cm9uaXgtc3Q3Nzg5di5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5lbC9wYW5lbC1zaXRyb25peC1zdDc3ODl2LmMKQEAgLTM4NywxMyArMzg3LDEx IEBAIHN0YXRpYyBpbnQgc3Q3Nzg5dl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJl dHVybiAwOwogfQogCi1zdGF0aWMgaW50IHN0Nzc4OXZfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNl ICpzcGkpCitzdGF0aWMgdm9pZCBzdDc3ODl2X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3Bp KQogewogCXN0cnVjdCBzdDc3ODl2ICpjdHggPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCWRy bV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0Nzc4OXZfb2ZfbWF0Y2hbXSA9IHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zb255LWFjeDU2NWFrbS5jIGIvZHJpdmVy cy9ncHUvZHJtL3BhbmVsL3BhbmVsLXNvbnktYWN4NTY1YWttLmMKaW5kZXggYmEwYjNlYWQxNTBm Li4wZDc1NDFhMzNmODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1z b255LWFjeDU2NWFrbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zb255LWFj eDU2NWFrbS5jCkBAIC02NTUsNyArNjU1LDcgQEAgc3RhdGljIGludCBhY3g1NjVha21fcHJvYmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBhY3g1 NjVha21fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBhY3g1NjVh a21fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IGFjeDU2NWFrbV9w YW5lbCAqbGNkID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKQEAgLTY2Niw4ICs2NjYsNiBAQCBz dGF0aWMgaW50IGFjeDU2NWFrbV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAogCWRy bV9wYW5lbF9kaXNhYmxlKCZsY2QtPnBhbmVsKTsKIAlkcm1fcGFuZWxfdW5wcmVwYXJlKCZsY2Qt PnBhbmVsKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCBhY3g1NjVha21fb2ZfbWF0Y2hbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9wYW5lbC10cG8tdGQwMjh0dGVjMS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3Bh bmVsLXRwby10ZDAyOHR0ZWMxLmMKaW5kZXggYmEwYzAwZDFhMDAxLi40ZGJmOGI4OGYyNjQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10cG8tdGQwMjh0dGVjMS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10cG8tdGQwMjh0dGVjMS5jCkBAIC0zNTAs MTUgKzM1MCwxMyBAQCBzdGF0aWMgaW50IHRkMDI4dHRlYzFfcHJvYmUoc3RydWN0IHNwaV9kZXZp Y2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCB0ZDAyOHR0ZWMxX3JlbW92ZShz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgdGQwMjh0dGVjMV9yZW1vdmUoc3Ry dWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgdGQwMjh0dGVjMV9wYW5lbCAqbGNkID0g c3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAlkcm1fcGFuZWxfcmVtb3ZlKCZsY2QtPnBhbmVsKTsK IAlkcm1fcGFuZWxfZGlzYWJsZSgmbGNkLT5wYW5lbCk7CiAJZHJtX3BhbmVsX3VucHJlcGFyZSgm bGNkLT5wYW5lbCk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgdGQwMjh0dGVjMV9vZl9tYXRjaFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3BhbmVsL3BhbmVsLXRwby10ZDA0M210ZWExLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvcGFuZWwtdHBvLXRkMDQzbXRlYTEuYwppbmRleCAxODY2Y2RiOGY5YzEuLmNmNDYwOWJiOWIx ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRwby10ZDA0M210ZWEx LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRwby10ZDA0M210ZWExLmMKQEAg LTQ2Myw3ICs0NjMsNyBAQCBzdGF0aWMgaW50IHRkMDQzbXRlYTFfcHJvYmUoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCB0ZDA0M210ZWExX3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgdGQwNDNtdGVhMV9yZW1vdmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgdGQwNDNtdGVhMV9wYW5lbCAqbGNk ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKQEAgLTQ3Miw4ICs0NzIsNiBAQCBzdGF0aWMgaW50 IHRkMDQzbXRlYTFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJZHJtX3BhbmVsX3Vu cHJlcGFyZSgmbGNkLT5wYW5lbCk7CiAKIAlzeXNmc19yZW1vdmVfZ3JvdXAoJnNwaS0+ZGV2Lmtv YmosICZ0ZDA0M210ZWExX2F0dHJfZ3JvdXApOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRkMDQzbXRlYTFfb2ZfbWF0Y2hbXSA9IHsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10cG8tdHBnMTEwLmMgYi9kcml2ZXJz L2dwdS9kcm0vcGFuZWwvcGFuZWwtdHBvLXRwZzExMC5jCmluZGV4IGUzNzkxZGFkNjgzMC4uMGIx ZjVhMTFhMDU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtdHBvLXRw ZzExMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10cG8tdHBnMTEwLmMKQEAg LTQ1MCwxMiArNDUwLDExIEBAIHN0YXRpYyBpbnQgdHBnMTEwX3Byb2JlKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgdHBnMTEwX3JlbW92ZShzdHJ1 Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgdHBnMTEwX3JlbW92ZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQogewogCXN0cnVjdCB0cGcxMTAgKnRwZyA9IHNwaV9nZXRfZHJ2ZGF0YShz cGkpOwogCiAJZHJtX3BhbmVsX3JlbW92ZSgmdHBnLT5wYW5lbCk7Ci0JcmV0dXJuIDA7CiB9CiAK IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRwZzExMF9tYXRjaFtdID0gewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXdpZGVjaGlwcy13czI0MDEuYyBi L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC13aWRlY2hpcHMtd3MyNDAxLmMKaW5kZXggOGJj OTc2ZjU0YjgwLi4yMzZmM2NiMmI1OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5l bC9wYW5lbC13aWRlY2hpcHMtd3MyNDAxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3Bh bmVsLXdpZGVjaGlwcy13czI0MDEuYwpAQCAtNDA3LDEyICs0MDcsMTEgQEAgc3RhdGljIGludCB3 czI0MDFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3Rh dGljIGludCB3czI0MDFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9p ZCB3czI0MDFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IHdzMjQw MSAqd3MgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCWRybV9wYW5lbF9yZW1vdmUoJndzLT5w YW5lbCk7Ci0JcmV0dXJuIDA7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dGlueS9oeDgzNTdkLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9oeDgzNTdkLmMKaW5kZXggOWIz M2MwNTczMmFhLi5lYmIwMjU1NDNmOGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55 L2h4ODM1N2QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9oeDgzNTdkLmMKQEAgLTI2Mywx NCArMjYzLDEyIEBAIHN0YXRpYyBpbnQgaHg4MzU3ZF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGh4ODM1N2RfcmVtb3ZlKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBoeDgzNTdkX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rl dmljZSAqc3BpKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBzcGlfZ2V0X2RydmRhdGEo c3BpKTsKIAogCWRybV9kZXZfdW5wbHVnKGRybSk7CiAJZHJtX2F0b21pY19oZWxwZXJfc2h1dGRv d24oZHJtKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBoeDgzNTdkX3NodXRkb3du KHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlu eS9pbGk5MTYzLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5MTYzLmMKaW5kZXggYmNjMTgx MzUxMjM2Li5mYzhlZDI0NWIwYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2ls aTkxNjMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5MTYzLmMKQEAgLTE5MywxNCAr MTkzLDEyIEBAIHN0YXRpYyBpbnQgaWxpOTE2M19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3Bp KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGlsaTkxNjNfcmVtb3ZlKHN0cnVjdCBzcGlf ZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBpbGk5MTYzX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rldmlj ZSAqc3BpKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBzcGlfZ2V0X2RydmRhdGEoc3Bp KTsKIAogCWRybV9kZXZfdW5wbHVnKGRybSk7CiAJZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24o ZHJtKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBpbGk5MTYzX3NodXRkb3duKHN0 cnVjdCBzcGlfZGV2aWNlICpzcGkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9p bGk5MjI1LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5MjI1LmMKaW5kZXggOTc2ZDMyMDlm MTY0Li5jYzkyZWI5ZjJhMDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2lsaTky MjUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5MjI1LmMKQEAgLTQxMSwxNCArNDEx LDEyIEBAIHN0YXRpYyBpbnQgaWxpOTIyNV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog CXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGlsaTkyMjVfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpCitzdGF0aWMgdm9pZCBpbGk5MjI1X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsK IAogCWRybV9kZXZfdW5wbHVnKGRybSk7CiAJZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24oZHJt KTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBpbGk5MjI1X3NodXRkb3duKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5 MzQxLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5MzQxLmMKaW5kZXggMzdlMGMzMzM5OWM4 Li41YjhjYzc3MGVlN2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2lsaTkzNDEu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5MzQxLmMKQEAgLTIyNSwxNCArMjI1LDEy IEBAIHN0YXRpYyBpbnQgaWxpOTM0MV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJl dHVybiAwOwogfQogCi1zdGF0aWMgaW50IGlsaTkzNDFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNl ICpzcGkpCitzdGF0aWMgdm9pZCBpbGk5MzQxX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3Bp KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAog CWRybV9kZXZfdW5wbHVnKGRybSk7CiAJZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24oZHJtKTsK LQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBpbGk5MzQxX3NodXRkb3duKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5NDg2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5NDg2LmMKaW5kZXggZTlhNjNmNGIyOTkzLi42 ZDY1NWUxOGUwYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2lsaTk0ODYuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5NDg2LmMKQEAgLTI0MywxNCArMjQzLDEyIEBA IHN0YXRpYyBpbnQgaWxpOTQ4Nl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVy biAwOwogfQogCi1zdGF0aWMgaW50IGlsaTk0ODZfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCitzdGF0aWMgdm9pZCBpbGk5NDg2X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog ewogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCWRy bV9kZXZfdW5wbHVnKGRybSk7CiAJZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24oZHJtKTsKLQot CXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBpbGk5NDg2X3NodXRkb3duKHN0cnVjdCBzcGlf ZGV2aWNlICpzcGkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9taTAyODNxdC5j IGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvbWkwMjgzcXQuYwppbmRleCAwMjNkZTQ5ZTdhOGUuLjVl MDYwZjY5MTBiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvbWkwMjgzcXQuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9taTAyODNxdC5jCkBAIC0yMzMsMTQgKzIzMywxMiBA QCBzdGF0aWMgaW50IG1pMDI4M3F0X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0 dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgbWkwMjgzcXRfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNl ICpzcGkpCitzdGF0aWMgdm9pZCBtaTAyODNxdF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAK IAlkcm1fZGV2X3VucGx1Zyhkcm0pOwogCWRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKGRybSk7 Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgbWkwMjgzcXRfc2h1dGRvd24oc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L3JlcGFw ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L3JlcGFwZXIuYwppbmRleCA5N2E3NzVjNDhjZWEu LmJlZWViMTcwZDBiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvcmVwYXBlci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L3JlcGFwZXIuYwpAQCAtMTE0MCwxNCArMTE0MCwx MiBAQCBzdGF0aWMgaW50IHJlcGFwZXJfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAly ZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCByZXBhcGVyX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rldmlj ZSAqc3BpKQorc3RhdGljIHZvaWQgcmVwYXBlcl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAK IAlkcm1fZGV2X3VucGx1Zyhkcm0pOwogCWRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKGRybSk7 Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgcmVwYXBlcl9zaHV0ZG93bihzdHJ1Y3Qg c3BpX2RldmljZSAqc3BpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnkvc3Q3NTg2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9zdDc1ODYuYwppbmRleCA1MWI5YjlmYjNlYWQuLjNm MzhmYWExY2Q4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rpbnkvc3Q3NTg2LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL3Rpbnkvc3Q3NTg2LmMKQEAgLTM2MCwxNCArMzYwLDEyIEBAIHN0 YXRpYyBpbnQgc3Q3NTg2X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIDA7 CiB9CiAKLXN0YXRpYyBpbnQgc3Q3NTg2X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQor c3RhdGljIHZvaWQgc3Q3NTg2X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0 cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCWRybV9kZXZf dW5wbHVnKGRybSk7CiAJZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24oZHJtKTsKLQotCXJldHVy biAwOwogfQogCiBzdGF0aWMgdm9pZCBzdDc1ODZfc2h1dGRvd24oc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L3N0NzczNXIuYyBiL2RyaXZl cnMvZ3B1L2RybS90aW55L3N0NzczNXIuYwppbmRleCBmYzQwZGQxMGVmYTguLjI5ZDYxODA5M2U5 NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rpbnkvc3Q3NzM1ci5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS90aW55L3N0NzczNXIuYwpAQCAtMjQ3LDE0ICsyNDcsMTIgQEAgc3RhdGljIGlu dCBzdDc3MzVyX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIDA7CiB9CiAK LXN0YXRpYyBpbnQgc3Q3NzM1cl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRp YyB2b2lkIHN0NzczNXJfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0 IGRybV9kZXZpY2UgKmRybSA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCiAJZHJtX2Rldl91bnBs dWcoZHJtKTsKIAlkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bihkcm0pOwotCi0JcmV0dXJuIDA7 CiB9CiAKIHN0YXRpYyB2b2lkIHN0NzczNXJfc2h1dGRvd24oc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRjeHguYyBiL2RyaXZlcnMvaHdtb24vYWRj eHguYwppbmRleCBlNWJjNWNlMDlmNGUuLmRlMzdiY2UyNGZhNiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9od21vbi9hZGN4eC5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWRjeHguYwpAQCAtMTk0LDcgKzE5 NCw3IEBAIHN0YXRpYyBpbnQgYWRjeHhfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAly ZXR1cm4gc3RhdHVzOwogfQogCi1zdGF0aWMgaW50IGFkY3h4X3JlbW92ZShzdHJ1Y3Qgc3BpX2Rl dmljZSAqc3BpKQorc3RhdGljIHZvaWQgYWRjeHhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCiB7CiAJc3RydWN0IGFkY3h4ICphZGMgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAlpbnQg aTsKQEAgLTIwNSw4ICsyMDUsNiBAQCBzdGF0aWMgaW50IGFkY3h4X3JlbW92ZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQogCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJnNwaS0+ZGV2LCAmYWRfaW5wdXRb aV0uZGV2X2F0dHIpOwogCiAJbXV0ZXhfdW5sb2NrKCZhZGMtPmxvY2spOwotCi0JcmV0dXJuIDA7 CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBhZGN4eF9pZHNbXSA9IHsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWR0NzMxMC5jIGIvZHJpdmVycy9od21vbi9hZHQ3 MzEwLmMKaW5kZXggYzQwY2FjMTZhZjY4Li44MzJkOWVjNjQ5MzQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaHdtb24vYWR0NzMxMC5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWR0NzMxMC5jCkBAIC04OCwx MCArODgsOSBAQCBzdGF0aWMgaW50IGFkdDczMTBfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNl ICpzcGkpCiAJCQkmYWR0NzMxMF9zcGlfb3BzKTsKIH0KIAotc3RhdGljIGludCBhZHQ3MzEwX3Nw aV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIGFkdDczMTBfc3Bp X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCWFkdDd4MTBfcmVtb3ZlKCZzcGkt PmRldiwgc3BpLT5pcnEpOwotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNw aV9kZXZpY2VfaWQgYWR0NzMxMF9pZFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9t YXgxMTExLmMgYi9kcml2ZXJzL2h3bW9uL21heDExMTEuYwppbmRleCA1ZmNmZDU3ZGY2MWUuLjRj NTQ4N2FlYjNjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9tYXgxMTExLmMKKysrIGIvZHJp dmVycy9od21vbi9tYXgxMTExLmMKQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgaW50IG1heDEx MTFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gZXJyOwogfQogCi1zdGF0 aWMgaW50IG1heDExMTFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9p ZCBtYXgxMTExX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBtYXgx MTExX2RhdGEgKmRhdGEgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIApAQCAtMjY1LDcgKzI2NSw2 IEBAIHN0YXRpYyBpbnQgbWF4MTExMV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlz eXNmc19yZW1vdmVfZ3JvdXAoJnNwaS0+ZGV2LmtvYmosICZtYXgxMTEwX2F0dHJfZ3JvdXApOwog CXN5c2ZzX3JlbW92ZV9ncm91cCgmc3BpLT5kZXYua29iaiwgJm1heDExMTFfYXR0cl9ncm91cCk7 CiAJbXV0ZXhfZGVzdHJveSgmZGF0YS0+ZHJ2ZGF0YV9sb2NrKTsKLQlyZXR1cm4gMDsKIH0KIAog c3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIG1heDExMTFfaWRzW10gPSB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2h3bW9uL21heDMxNzIyLmMgYi9kcml2ZXJzL2h3bW9uL21heDMxNzIy LmMKaW5kZXggNGNmNGZlNjgwOWEzLi45M2UwNDhlZTQ5NTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv aHdtb24vbWF4MzE3MjIuYworKysgYi9kcml2ZXJzL2h3bW9uL21heDMxNzIyLmMKQEAgLTEwMCw3 ICsxMDAsNyBAQCBzdGF0aWMgaW50IG1heDMxNzIyX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgbWF4MzE3MjJfcmVtb3ZlKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBtYXgzMTcyMl9yZW1vdmUoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgbWF4MzE3MjJfZGF0YSAqZGF0YSA9IHNwaV9nZXRfZHJ2 ZGF0YShzcGkpOwogCWludCByZXQ7CkBAIC0xMTEsOCArMTExLDYgQEAgc3RhdGljIGludCBtYXgz MTcyMl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlpZiAocmV0KQogCQkvKiBUaGVy ZSBpcyBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCB0aGlzIC4uLiAqLwogCQlkZXZfd2Fybigmc3Bp LT5kZXYsICJGYWlsZWQgdG8gcHV0IGRldmljZSBpbiBzdGFuZC1ieSBtb2RlXG4iKTsKLQotCXJl dHVybiAwOwogfQogCiBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIG1heDMxNzIyX3N1c3BlbmQo c3RydWN0IGRldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWNjZWwvYm1hNDAw X3NwaS5jIGIvZHJpdmVycy9paW8vYWNjZWwvYm1hNDAwX3NwaS5jCmluZGV4IDlmNjIyZTM3NDc3 Yi4uOTA0MGE3MTdiMjQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9hY2NlbC9ibWE0MDBfc3Bp LmMKKysrIGIvZHJpdmVycy9paW8vYWNjZWwvYm1hNDAwX3NwaS5jCkBAIC04NywxMSArODcsOSBA QCBzdGF0aWMgaW50IGJtYTQwMF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAly ZXR1cm4gYm1hNDAwX3Byb2JlKCZzcGktPmRldiwgcmVnbWFwLCBpZC0+bmFtZSk7CiB9CiAKLXN0 YXRpYyBpbnQgYm1hNDAwX3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRp YyB2b2lkIGJtYTQwMF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJYm1h NDAwX3JlbW92ZSgmc3BpLT5kZXYpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBz dHJ1Y3Qgc3BpX2RldmljZV9pZCBibWE0MDBfc3BpX2lkc1tdID0gewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9paW8vYWNjZWwvYm1jMTUwLWFjY2VsLXNwaS5jIGIvZHJpdmVycy9paW8vYWNjZWwvYm1j MTUwLWFjY2VsLXNwaS5jCmluZGV4IDExNTU5NTY3Y2IzOS4uODAwMDdjYzJkMDQ0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2lpby9hY2NlbC9ibWMxNTAtYWNjZWwtc3BpLmMKKysrIGIvZHJpdmVycy9p aW8vYWNjZWwvYm1jMTUwLWFjY2VsLXNwaS5jCkBAIC0zNSwxMSArMzUsOSBAQCBzdGF0aWMgaW50 IGJtYzE1MF9hY2NlbF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCQkJCSAgICAgICB0 cnVlKTsKIH0KIAotc3RhdGljIGludCBibWMxNTBfYWNjZWxfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpCitzdGF0aWMgdm9pZCBibWMxNTBfYWNjZWxfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpCiB7CiAJYm1jMTUwX2FjY2VsX2NvcmVfcmVtb3ZlKCZzcGktPmRldik7Ci0KLQly ZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBibWMxNTBf YWNjZWxfYWNwaV9tYXRjaFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWNjZWwvYm1p MDg4LWFjY2VsLXNwaS5jIGIvZHJpdmVycy9paW8vYWNjZWwvYm1pMDg4LWFjY2VsLXNwaS5jCmlu ZGV4IDc1OGFkMmYxMjg5Ni4uMDZkOTlkOTk0OWYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9h Y2NlbC9ibWkwODgtYWNjZWwtc3BpLmMKKysrIGIvZHJpdmVycy9paW8vYWNjZWwvYm1pMDg4LWFj Y2VsLXNwaS5jCkBAIC01NiwxMSArNTYsOSBAQCBzdGF0aWMgaW50IGJtaTA4OF9hY2NlbF9wcm9i ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCQkJCSAgICAgICB0cnVlKTsKIH0KIAotc3RhdGlj IGludCBibWkwODhfYWNjZWxfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMg dm9pZCBibWkwODhfYWNjZWxfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJYm1p MDg4X2FjY2VsX2NvcmVfcmVtb3ZlKCZzcGktPmRldik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3Rh dGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIGJtaTA4OF9hY2NlbF9pZFtdID0gewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9paW8vYWNjZWwva3hzZDktc3BpLmMgYi9kcml2ZXJzL2lpby9hY2Nl bC9reHNkOS1zcGkuYwppbmRleCA0NDFlNmI3NjQyODEuLjU3YzQ1MWNmYjllNSAxMDA2NDQKLS0t IGEvZHJpdmVycy9paW8vYWNjZWwva3hzZDktc3BpLmMKKysrIGIvZHJpdmVycy9paW8vYWNjZWwv a3hzZDktc3BpLmMKQEAgLTMyLDExICszMiw5IEBAIHN0YXRpYyBpbnQga3hzZDlfc3BpX3Byb2Jl KHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJCQkJICBzcGlfZ2V0X2RldmljZV9pZChzcGkpLT5u YW1lKTsKIH0KIAotc3RhdGljIGludCBreHNkOV9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNl ICpzcGkpCitzdGF0aWMgdm9pZCBreHNkOV9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCiB7CiAJa3hzZDlfY29tbW9uX3JlbW92ZSgmc3BpLT5kZXYpOwotCi0JcmV0dXJuIDA7CiB9 CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBreHNkOV9zcGlfaWRbXSA9IHsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FjY2VsL21tYTc0NTVfc3BpLmMgYi9kcml2ZXJzL2lp by9hY2NlbC9tbWE3NDU1X3NwaS5jCmluZGV4IGVjZjY5MDY5MmRjYy4uYjc0NjAzMTU1MWEzIDEw MDY0NAotLS0gYS9kcml2ZXJzL2lpby9hY2NlbC9tbWE3NDU1X3NwaS5jCisrKyBiL2RyaXZlcnMv aWlvL2FjY2VsL21tYTc0NTVfc3BpLmMKQEAgLTIyLDExICsyMiw5IEBAIHN0YXRpYyBpbnQgbW1h NzQ1NV9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gbW1hNzQ1NV9j b3JlX3Byb2JlKCZzcGktPmRldiwgcmVnbWFwLCBpZC0+bmFtZSk7CiB9CiAKLXN0YXRpYyBpbnQg bW1hNzQ1NV9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBt bWE3NDU1X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAltbWE3NDU1X2Nv cmVfcmVtb3ZlKCZzcGktPmRldik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0 cnVjdCBzcGlfZGV2aWNlX2lkIG1tYTc0NTVfc3BpX2lkc1tdID0gewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9paW8vYWNjZWwvc2NhMzAwMC5jIGIvZHJpdmVycy9paW8vYWNjZWwvc2NhMzAwMC5jCmlu ZGV4IDQzZWNhY2JkYzk1YS4uODNjODEwNzI1MTFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9h Y2NlbC9zY2EzMDAwLmMKKysrIGIvZHJpdmVycy9paW8vYWNjZWwvc2NhMzAwMC5jCkBAIC0xNTI0 LDcgKzE1MjQsNyBAQCBzdGF0aWMgaW50IHNjYTMwMDBfc3RvcF9hbGxfaW50ZXJydXB0cyhzdHJ1 Y3Qgc2NhMzAwMF9zdGF0ZSAqc3QpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBzY2Ez MDAwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgc2NhMzAwMF9y ZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9f ZGV2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAJc3RydWN0IHNjYTMwMDBfc3RhdGUgKnN0ID0g aWlvX3ByaXYoaW5kaW9fZGV2KTsKQEAgLTE1MzUsOCArMTUzNSw2IEBAIHN0YXRpYyBpbnQgc2Nh MzAwMF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlzY2EzMDAwX3N0b3BfYWxsX2lu dGVycnVwdHMoc3QpOwogCWlmIChzcGktPmlycSkKIAkJZnJlZV9pcnEoc3BpLT5pcnEsIGluZGlv X2Rldik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNl X2lkIHNjYTMwMDBfaWRbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FkYy9hZDcyNjYu YyBiL2RyaXZlcnMvaWlvL2FkYy9hZDcyNjYuYwppbmRleCAxZDM0NWQ2Njc0MmQuLmMxN2Q5YjVm YmFmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9paW8vYWRjL2FkNzI2Ni5jCisrKyBiL2RyaXZlcnMv aWlvL2FkYy9hZDcyNjYuYwpAQCAtNDc5LDcgKzQ3OSw3IEBAIHN0YXRpYyBpbnQgYWQ3MjY2X3By b2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGlu dCBhZDcyNjZfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBhZDcy NjZfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IGlpb19kZXYgKmlu ZGlvX2RldiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCXN0cnVjdCBhZDcyNjZfc3RhdGUgKnN0 ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKQEAgLTQ4OCw4ICs0ODgsNiBAQCBzdGF0aWMgaW50IGFk NzI2Nl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlpaW9fdHJpZ2dlcmVkX2J1ZmZl cl9jbGVhbnVwKGluZGlvX2Rldik7CiAJaWYgKCFJU19FUlIoc3QtPnJlZykpCiAJCXJlZ3VsYXRv cl9kaXNhYmxlKHN0LT5yZWcpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgc3BpX2RldmljZV9pZCBhZDcyNjZfaWRbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlv L2FkYy9sdGMyNDk2LmMgYi9kcml2ZXJzL2lpby9hZGMvbHRjMjQ5Ni5jCmluZGV4IGRkOTU2YTdj MjE2ZS4uNWE1NWY3OWYyNTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9hZGMvbHRjMjQ5Ni5j CisrKyBiL2RyaXZlcnMvaWlvL2FkYy9sdGMyNDk2LmMKQEAgLTc4LDEzICs3OCwxMSBAQCBzdGF0 aWMgaW50IGx0YzI0OTZfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gbHRj MjQ5N2NvcmVfcHJvYmUoZGV2LCBpbmRpb19kZXYpOwogfQogCi1zdGF0aWMgaW50IGx0YzI0OTZf cmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBsdGMyNDk2X3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYg PSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCWx0YzI0OTdjb3JlX3JlbW92ZShpbmRpb19kZXYp OwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGx0 YzI0OTZfb2ZfbWF0Y2hbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FkYy9tY3AzMjB4 LmMgYi9kcml2ZXJzL2lpby9hZGMvbWNwMzIweC5jCmluZGV4IDhkMWNmZjI4Y2FlMC4uYjRjNjlh Y2IzM2UzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9hZGMvbWNwMzIweC5jCisrKyBiL2RyaXZl cnMvaWlvL2FkYy9tY3AzMjB4LmMKQEAgLTQ1OSwxNSArNDU5LDEzIEBAIHN0YXRpYyBpbnQgbWNw MzIweF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAKLXN0 YXRpYyBpbnQgbWNwMzIweF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2 b2lkIG1jcDMyMHhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IGlp b19kZXYgKmluZGlvX2RldiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCXN0cnVjdCBtY3AzMjB4 ICphZGMgPSBpaW9fcHJpdihpbmRpb19kZXYpOwogCiAJaWlvX2RldmljZV91bnJlZ2lzdGVyKGlu ZGlvX2Rldik7CiAJcmVndWxhdG9yX2Rpc2FibGUoYWRjLT5yZWcpOwotCi0JcmV0dXJuIDA7CiB9 CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1jcDMyMHhfZHRfaWRzW10gPSB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9hZGMvbWNwMzkxMS5jIGIvZHJpdmVycy9paW8vYWRj L21jcDM5MTEuYwppbmRleCAxMzUzNWYxNDhjNGMuLjFjYjQ1OTBmZTQxMiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9paW8vYWRjL21jcDM5MTEuYworKysgYi9kcml2ZXJzL2lpby9hZGMvbWNwMzkxMS5j CkBAIC0zMjEsNyArMzIxLDcgQEAgc3RhdGljIGludCBtY3AzOTExX3Byb2JlKHN0cnVjdCBzcGlf ZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBtY3AzOTExX3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgbWNwMzkxMV9yZW1vdmUoc3Ry dWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gc3Bp X2dldF9kcnZkYXRhKHNwaSk7CiAJc3RydWN0IG1jcDM5MTEgKmFkYyA9IGlpb19wcml2KGluZGlv X2Rldik7CkBAIC0zMzEsOCArMzMxLDYgQEAgc3RhdGljIGludCBtY3AzOTExX3JlbW92ZShzdHJ1 Y3Qgc3BpX2RldmljZSAqc3BpKQogCWNsa19kaXNhYmxlX3VucHJlcGFyZShhZGMtPmNsa2kpOwog CWlmIChhZGMtPnZyZWYpCiAJCXJlZ3VsYXRvcl9kaXNhYmxlKGFkYy0+dnJlZik7Ci0KLQlyZXR1 cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWNwMzkxMV9kdF9p ZHNbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FkYy90aS1hZGMxMjEzOC5jIGIvZHJp dmVycy9paW8vYWRjL3RpLWFkYzEyMTM4LmMKaW5kZXggNmViNjJiNTY0ZGFlLi41OWQ3NWQwOTYw NGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2FkYy90aS1hZGMxMjEzOC5jCisrKyBiL2RyaXZl cnMvaWlvL2FkYy90aS1hZGMxMjEzOC5jCkBAIC01MDMsNyArNTAzLDcgQEAgc3RhdGljIGludCBh ZGMxMjEzOF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAK LXN0YXRpYyBpbnQgYWRjMTIxMzhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0 aWMgdm9pZCBhZGMxMjEzOF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1 Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAJc3RydWN0IGFk YzEyMTM4ICphZGMgPSBpaW9fcHJpdihpbmRpb19kZXYpOwpAQCAtNTE0LDggKzUxNCw2IEBAIHN0 YXRpYyBpbnQgYWRjMTIxMzhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJCXJlZ3Vs YXRvcl9kaXNhYmxlKGFkYy0+dnJlZl9uKTsKIAlyZWd1bGF0b3JfZGlzYWJsZShhZGMtPnZyZWZf cCk7CiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGFkYy0+Y2Nsayk7Ci0KLQlyZXR1cm4gMDsKIH0K IAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYWRjMTIxMzhfZHRfaWRzW10gPSB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9hZGMvdGktYWRzNzk1MC5jIGIvZHJpdmVycy9paW8v YWRjL3RpLWFkczc5NTAuYwppbmRleCBhN2VmYTNlYWRhMmMuLmUzNjU4Yjk2OWM1YiAxMDA2NDQK LS0tIGEvZHJpdmVycy9paW8vYWRjL3RpLWFkczc5NTAuYworKysgYi9kcml2ZXJzL2lpby9hZGMv dGktYWRzNzk1MC5jCkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGljIGludCB0aV9hZHM3OTUwX3By b2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGlu dCB0aV9hZHM3OTUwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQg dGlfYWRzNzk1MF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgaWlv X2RldiAqaW5kaW9fZGV2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAJc3RydWN0IHRpX2Fkczc5 NTBfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKQEAgLTY3Miw4ICs2NzIsNiBAQCBz dGF0aWMgaW50IHRpX2Fkczc5NTBfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJaWlv X3RyaWdnZXJlZF9idWZmZXJfY2xlYW51cChpbmRpb19kZXYpOwogCXJlZ3VsYXRvcl9kaXNhYmxl KHN0LT5yZWcpOwogCW11dGV4X2Rlc3Ryb3koJnN0LT5zbG9jayk7Ci0KLQlyZXR1cm4gMDsKIH0K IAogc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIHRpX2Fkczc5NTBfaWRbXSA9IHsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FkYy90aS1hZHM4Njg4LmMgYi9kcml2ZXJzL2lpby9h ZGMvdGktYWRzODY4OC5jCmluZGV4IDJlMjQ3MTdkN2Y1NS4uMjJjMjU4M2VlZGQwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2lpby9hZGMvdGktYWRzODY4OC5jCisrKyBiL2RyaXZlcnMvaWlvL2FkYy90 aS1hZHM4Njg4LmMKQEAgLTQ3OSw3ICs0NzksNyBAQCBzdGF0aWMgaW50IGFkczg2ODhfcHJvYmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IGFk czg2ODhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBhZHM4Njg4 X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBpaW9fZGV2ICppbmRp b19kZXYgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAlzdHJ1Y3QgYWRzODY4OF9zdGF0ZSAqc3Qg PSBpaW9fcHJpdihpbmRpb19kZXYpOwpAQCAtNDg5LDggKzQ4OSw2IEBAIHN0YXRpYyBpbnQgYWRz ODY4OF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAogCWlmICghSVNfRVJSKHN0LT5y ZWcpKQogCQlyZWd1bGF0b3JfZGlzYWJsZShzdC0+cmVnKTsKLQotCXJldHVybiAwOwogfQogCiBz dGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgYWRzODY4OF9pZFtdID0gewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9paW8vYWRjL3RpLXRsYzQ1NDEuYyBiL2RyaXZlcnMvaWlvL2FkYy90aS10 bGM0NTQxLmMKaW5kZXggNDAzYjc4N2Y5ZjdlLi4yNDA2ZWRhOWRmYzYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvaWlvL2FkYy90aS10bGM0NTQxLmMKKysrIGIvZHJpdmVycy9paW8vYWRjL3RpLXRsYzQ1 NDEuYwpAQCAtMjI0LDcgKzIyNCw3IEBAIHN0YXRpYyBpbnQgdGxjNDU0MV9wcm9iZShzdHJ1Y3Qg c3BpX2RldmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgdGxjNDU0MV9y ZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIHRsYzQ1NDFfcmVtb3Zl KHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9 IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCXN0cnVjdCB0bGM0NTQxX3N0YXRlICpzdCA9IGlpb19w cml2KGluZGlvX2Rldik7CkBAIC0yMzIsOCArMjMyLDYgQEAgc3RhdGljIGludCB0bGM0NTQxX3Jl bW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCWlpb19kZXZpY2VfdW5yZWdpc3RlcihpbmRp b19kZXYpOwogCWlpb190cmlnZ2VyZWRfYnVmZmVyX2NsZWFudXAoaW5kaW9fZGV2KTsKIAlyZWd1 bGF0b3JfZGlzYWJsZShzdC0+cmVnKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qg c3RydWN0IG9mX2RldmljZV9pZCB0bGM0NTQxX2R0X2lkc1tdID0gewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9paW8vYW1wbGlmaWVycy9hZDgzNjYuYyBiL2RyaXZlcnMvaWlvL2FtcGxpZmllcnMvYWQ4 MzY2LmMKaW5kZXggY2ZjZjE4YTBiY2U4Li4xMTM0YWUxMmU1MzEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaWlvL2FtcGxpZmllcnMvYWQ4MzY2LmMKKysrIGIvZHJpdmVycy9paW8vYW1wbGlmaWVycy9h ZDgzNjYuYwpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0YXRpYyBpbnQgYWQ4MzY2X3Byb2JlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBhZDgzNjZf cmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBhZDgzNjZfcmVtb3Zl KHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9 IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCXN0cnVjdCBhZDgzNjZfc3RhdGUgKnN0ID0gaWlvX3By aXYoaW5kaW9fZGV2KTsKQEAgLTMwOCw4ICszMDgsNiBAQCBzdGF0aWMgaW50IGFkODM2Nl9yZW1v dmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAogCWlmICghSVNfRVJSKHJlZykpCiAJCXJlZ3Vs YXRvcl9kaXNhYmxlKHJlZyk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVj dCBzcGlfZGV2aWNlX2lkIGFkODM2Nl9pZFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8v Y29tbW9uL3NzcF9zZW5zb3JzL3NzcF9kZXYuYyBiL2RyaXZlcnMvaWlvL2NvbW1vbi9zc3Bfc2Vu c29ycy9zc3BfZGV2LmMKaW5kZXggMWFlZTg3MTAwMDM4Li5lYWZhZjQ1MjlkZjUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvaWlvL2NvbW1vbi9zc3Bfc2Vuc29ycy9zc3BfZGV2LmMKKysrIGIvZHJpdmVy cy9paW8vY29tbW9uL3NzcF9zZW5zb3JzL3NzcF9kZXYuYwpAQCAtNTg2LDcgKzU4Niw3IEBAIHN0 YXRpYyBpbnQgc3NwX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsK IH0KIAotc3RhdGljIGludCBzc3BfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0 aWMgdm9pZCBzc3BfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IHNz cF9kYXRhICpkYXRhID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKQEAgLTYwOCw4ICs2MDgsNiBA QCBzdGF0aWMgaW50IHNzcF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAltdXRleF9k ZXN0cm95KCZkYXRhLT5wZW5kaW5nX2xvY2spOwogCiAJbWZkX3JlbW92ZV9kZXZpY2VzKCZzcGkt PmRldik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogI2lmZGVmIENPTkZJR19QTV9TTEVFUApkaWZmIC0t Z2l0IGEvZHJpdmVycy9paW8vZGFjL2FkNTM2MC5jIGIvZHJpdmVycy9paW8vZGFjL2FkNTM2MC5j CmluZGV4IDJkM2IxNGM0MDdkOC4uZWNiYzZhNTFkNjBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lp by9kYWMvYWQ1MzYwLmMKKysrIGIvZHJpdmVycy9paW8vZGFjL2FkNTM2MC5jCkBAIC01MjEsNyAr NTIxLDcgQEAgc3RhdGljIGludCBhZDUzNjBfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK IAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IGFkNTM2MF9yZW1vdmUoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIGFkNTM2MF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKIHsKIAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gc3BpX2dldF9kcnZkYXRhKHNw aSk7CiAJc3RydWN0IGFkNTM2MF9zdGF0ZSAqc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOwpAQCAt NTMxLDggKzUzMSw2IEBAIHN0YXRpYyBpbnQgYWQ1MzYwX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rldmlj ZSAqc3BpKQogCWtmcmVlKGluZGlvX2Rldi0+Y2hhbm5lbHMpOwogCiAJcmVndWxhdG9yX2J1bGtf ZGlzYWJsZShzdC0+Y2hpcF9pbmZvLT5udW1fdnJlZnMsIHN0LT52cmVmX3JlZyk7Ci0KLQlyZXR1 cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIGFkNTM2MF9pZHNb XSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2RhYy9hZDUzODAuYyBiL2RyaXZlcnMvaWlv L2RhYy9hZDUzODAuYwppbmRleCBlMzg4NjBhNmE5ZjMuLjgyZTFkOWJkNzczZSAxMDA2NDQKLS0t IGEvZHJpdmVycy9paW8vZGFjL2FkNTM4MC5jCisrKyBiL2RyaXZlcnMvaWlvL2RhYy9hZDUzODAu YwpAQCAtNDg4LDExICs0ODgsOSBAQCBzdGF0aWMgaW50IGFkNTM4MF9zcGlfcHJvYmUoc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gYWQ1MzgwX3Byb2JlKCZzcGktPmRldiwgcmVnbWFw LCBpZC0+ZHJpdmVyX2RhdGEsIGlkLT5uYW1lKTsKIH0KIAotc3RhdGljIGludCBhZDUzODBfc3Bp X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgYWQ1MzgwX3NwaV9y ZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlhZDUzODBfcmVtb3ZlKCZzcGktPmRl dik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lk IGFkNTM4MF9zcGlfaWRzW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9kYWMvYWQ1NDQ2 LmMgYi9kcml2ZXJzL2lpby9kYWMvYWQ1NDQ2LmMKaW5kZXggMWM5YjU0YzAxMmE3Li4xNGNmYWJh Y2JlYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2RhYy9hZDU0NDYuYworKysgYi9kcml2ZXJz L2lpby9kYWMvYWQ1NDQ2LmMKQEAgLTQ5MSwxMSArNDkxLDkgQEAgc3RhdGljIGludCBhZDU0NDZf c3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJCSZhZDU0NDZfc3BpX2NoaXBfaW5m b1tpZC0+ZHJpdmVyX2RhdGFdKTsKIH0KIAotc3RhdGljIGludCBhZDU0NDZfc3BpX3JlbW92ZShz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgYWQ1NDQ2X3NwaV9yZW1vdmUoc3Ry dWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlhZDU0NDZfcmVtb3ZlKCZzcGktPmRldik7Ci0KLQly ZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIGFkNTQ0Nl9zcGlfZHJpdmVy ID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vZGFjL2FkNTQ0OS5jIGIvZHJpdmVycy9paW8v ZGFjL2FkNTQ0OS5jCmluZGV4IGY1ZTkzYzZhY2M5ZC4uYmFkOWJkYWFmYTk0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2lpby9kYWMvYWQ1NDQ5LmMKKysrIGIvZHJpdmVycy9paW8vZGFjL2FkNTQ0OS5j CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIGludCBhZDU0NDlfc3BpX3Byb2JlKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBhZDU0NDlfc3Bp X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgYWQ1NDQ5X3NwaV9y ZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9f ZGV2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAJc3RydWN0IGFkNTQ0OSAqc3QgPSBpaW9fcHJp dihpbmRpb19kZXYpOwpAQCAtMzM4LDggKzMzOCw2IEBAIHN0YXRpYyBpbnQgYWQ1NDQ5X3NwaV9y ZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlpaW9fZGV2aWNlX3VucmVnaXN0ZXIoaW5k aW9fZGV2KTsKIAogCXJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoc3QtPmNoaXBfaW5mby0+bnVtX2No YW5uZWxzLCBzdC0+dnJlZl9yZWcpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBz dHJ1Y3Qgc3BpX2RldmljZV9pZCBhZDU0NDlfc3BpX2lkc1tdID0gewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9paW8vZGFjL2FkNTUwNC5jIGIvZHJpdmVycy9paW8vZGFjL2FkNTUwNC5jCmluZGV4IGI2 MzEyNjFlZmE5Ny4uODUwNzU3M2FhMTNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9kYWMvYWQ1 NTA0LmMKKysrIGIvZHJpdmVycy9paW8vZGFjL2FkNTUwNC5jCkBAIC0zMzYsNyArMzM2LDcgQEAg c3RhdGljIGludCBhZDU1MDRfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4g cmV0OwogfQogCi1zdGF0aWMgaW50IGFkNTUwNF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKK3N0YXRpYyB2b2lkIGFkNTUwNF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsK IAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAJc3Ry dWN0IGFkNTUwNF9zdGF0ZSAqc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOwpAQCAtMzQ1LDggKzM0 NSw2IEBAIHN0YXRpYyBpbnQgYWQ1NTA0X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog CiAJaWYgKCFJU19FUlIoc3QtPnJlZykpCiAJCXJlZ3VsYXRvcl9kaXNhYmxlKHN0LT5yZWcpOwot Ci0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBhZDU1 MDRfaWRbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2RhYy9hZDU1OTJyLmMgYi9kcml2 ZXJzL2lpby9kYWMvYWQ1NTkyci5jCmluZGV4IDZiZmQ3OTUxZTE4Yy4uMGY3YWJmYTc1YmVjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2lpby9kYWMvYWQ1NTkyci5jCisrKyBiL2RyaXZlcnMvaWlvL2Rh Yy9hZDU1OTJyLmMKQEAgLTEzMCwxMSArMTMwLDkgQEAgc3RhdGljIGludCBhZDU1OTJyX3NwaV9w cm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiBhZDU1OTJyX3Byb2JlKCZzcGkt PmRldiwgaWQtPm5hbWUsICZhZDU1OTJyX3J3X29wcyk7CiB9CiAKLXN0YXRpYyBpbnQgYWQ1NTky cl9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBhZDU1OTJy X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlhZDU1OTJyX3JlbW92ZSgm c3BpLT5kZXYpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2Rl dmljZV9pZCBhZDU1OTJyX3NwaV9pZHNbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2Rh Yy9hZDU2MjRyX3NwaS5jIGIvZHJpdmVycy9paW8vZGFjL2FkNTYyNHJfc3BpLmMKaW5kZXggM2M5 ODk0MWI5Zjk5Li4zNzFlODEyODUwZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2RhYy9hZDU2 MjRyX3NwaS5jCisrKyBiL2RyaXZlcnMvaWlvL2RhYy9hZDU2MjRyX3NwaS5jCkBAIC0yOTMsNyAr MjkzLDcgQEAgc3RhdGljIGludCBhZDU2MjRyX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkp CiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBhZDU2MjRyX3JlbW92ZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgYWQ1NjI0cl9yZW1vdmUoc3RydWN0IHNwaV9kZXZp Y2UgKnNwaSkKIHsKIAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gc3BpX2dldF9kcnZkYXRh KHNwaSk7CiAJc3RydWN0IGFkNTYyNHJfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsK QEAgLTMwMSw4ICszMDEsNiBAQCBzdGF0aWMgaW50IGFkNTYyNHJfcmVtb3ZlKHN0cnVjdCBzcGlf ZGV2aWNlICpzcGkpCiAJaWlvX2RldmljZV91bnJlZ2lzdGVyKGluZGlvX2Rldik7CiAJaWYgKCFJ U19FUlIoc3QtPnJlZykpCiAJCXJlZ3VsYXRvcl9kaXNhYmxlKHN0LT5yZWcpOwotCi0JcmV0dXJu IDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBhZDU2MjRyX2lkW10g PSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9kYWMvYWQ1Njg2LXNwaS5jIGIvZHJpdmVycy9p aW8vZGFjL2FkNTY4Ni1zcGkuYwppbmRleCAyNjI4ODEwZmRiYjEuLmQyNmZiMjliNmIwNCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9paW8vZGFjL2FkNTY4Ni1zcGkuYworKysgYi9kcml2ZXJzL2lpby9k YWMvYWQ1Njg2LXNwaS5jCkBAIC05NSwxMSArOTUsOSBAQCBzdGF0aWMgaW50IGFkNTY4Nl9zcGlf cHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAkJCSAgICBhZDU2ODZfc3BpX3dyaXRlLCBh ZDU2ODZfc3BpX3JlYWQpOwogfQogCi1zdGF0aWMgaW50IGFkNTY4Nl9zcGlfcmVtb3ZlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBhZDU2ODZfc3BpX3JlbW92ZShzdHJ1Y3Qg c3BpX2RldmljZSAqc3BpKQogewogCWFkNTY4Nl9yZW1vdmUoJnNwaS0+ZGV2KTsKLQotCXJldHVy biAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgYWQ1Njg2X3NwaV9p ZFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vZGFjL2FkNTc2MS5jIGIvZHJpdmVycy9p aW8vZGFjL2FkNTc2MS5jCmluZGV4IGUzN2UwOTVlOTRmYy4uNGNiODQ3MWRiODFlIDEwMDY0NAot LS0gYS9kcml2ZXJzL2lpby9kYWMvYWQ1NzYxLmMKKysrIGIvZHJpdmVycy9paW8vZGFjL2FkNTc2 MS5jCkBAIC0zOTQsNyArMzk0LDcgQEAgc3RhdGljIGludCBhZDU3NjFfcHJvYmUoc3RydWN0IHNw aV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IGFkNTc2MV9yZW1v dmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIGFkNTc2MV9yZW1vdmUoc3Ry dWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgaWlvX2RldiAqaWlvX2RldiA9IHNwaV9n ZXRfZHJ2ZGF0YShzcGkpOwogCXN0cnVjdCBhZDU3NjFfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaWlv X2Rldik7CkBAIC00MDMsOCArNDAzLDYgQEAgc3RhdGljIGludCBhZDU3NjFfcmVtb3ZlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCiAKIAlpZiAoIUlTX0VSUl9PUl9OVUxMKHN0LT52cmVmX3JlZykp CiAJCXJlZ3VsYXRvcl9kaXNhYmxlKHN0LT52cmVmX3JlZyk7Ci0KLQlyZXR1cm4gMDsKIH0KIAog c3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIGFkNTc2MV9pZFtdID0gewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9paW8vZGFjL2FkNTc2NC5jIGIvZHJpdmVycy9paW8vZGFjL2FkNTc2NC5j CmluZGV4IGFlMDg5YjkxNDVjYi4uZDIzNWE4MDQ3YmEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lp by9kYWMvYWQ1NzY0LmMKKysrIGIvZHJpdmVycy9paW8vZGFjL2FkNTc2NC5jCkBAIC0zMzIsNyAr MzMyLDcgQEAgc3RhdGljIGludCBhZDU3NjRfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK IAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IGFkNTc2NF9yZW1vdmUoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIGFkNTc2NF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKIHsKIAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gc3BpX2dldF9kcnZkYXRhKHNw aSk7CiAJc3RydWN0IGFkNTc2NF9zdGF0ZSAqc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOwpAQCAt MzQxLDggKzM0MSw2IEBAIHN0YXRpYyBpbnQgYWQ1NzY0X3JlbW92ZShzdHJ1Y3Qgc3BpX2Rldmlj ZSAqc3BpKQogCiAJaWYgKHN0LT5jaGlwX2luZm8tPmludF92cmVmID09IDApCiAJCXJlZ3VsYXRv cl9idWxrX2Rpc2FibGUoQVJSQVlfU0laRShzdC0+dnJlZl9yZWcpLCBzdC0+dnJlZl9yZWcpOwot Ci0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBhZDU3 NjRfaWRzW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9kYWMvYWQ1NzkxLmMgYi9kcml2 ZXJzL2lpby9kYWMvYWQ1NzkxLmMKaW5kZXggN2I0NTc5ZDczZDE4Li4yYjE0OTE0YjQwNTAgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2RhYy9hZDU3OTEuYworKysgYi9kcml2ZXJzL2lpby9kYWMv YWQ1NzkxLmMKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0aWMgaW50IGFkNTc5MV9wcm9iZShzdHJ1 Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgYWQ1Nzkx X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgYWQ1NzkxX3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYg PSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAlzdHJ1Y3QgYWQ1NzkxX3N0YXRlICpzdCA9IGlpb19w cml2KGluZGlvX2Rldik7CkBAIC00MzksOCArNDM5LDYgQEAgc3RhdGljIGludCBhZDU3OTFfcmVt b3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAKIAlpZiAoIUlTX0VSUihzdC0+cmVnX3Zzcykp CiAJCXJlZ3VsYXRvcl9kaXNhYmxlKHN0LT5yZWdfdnNzKTsKLQotCXJldHVybiAwOwogfQogCiBz dGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgYWQ1NzkxX2lkW10gPSB7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2lpby9kYWMvYWQ4ODAxLmMgYi9kcml2ZXJzL2lpby9kYWMvYWQ4ODAxLmMK aW5kZXggNWVjZmRhZDU0ZGVjLi42YmUzNWM5MmQ0MzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlv L2RhYy9hZDg4MDEuYworKysgYi9kcml2ZXJzL2lpby9kYWMvYWQ4ODAxLmMKQEAgLTE5Myw3ICsx OTMsNyBAQCBzdGF0aWMgaW50IGFkODgwMV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog CXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgYWQ4ODAxX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rl dmljZSAqc3BpKQorc3RhdGljIHZvaWQgYWQ4ODAxX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQogewogCXN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBzcGlfZ2V0X2RydmRhdGEoc3Bp KTsKIAlzdHJ1Y3QgYWQ4ODAxX3N0YXRlICpzdGF0ZSA9IGlpb19wcml2KGluZGlvX2Rldik7CkBA IC0yMDIsOCArMjAyLDYgQEAgc3RhdGljIGludCBhZDg4MDFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpCiAJaWYgKHN0YXRlLT52cmVmbF9yZWcpCiAJCXJlZ3VsYXRvcl9kaXNhYmxlKHN0 YXRlLT52cmVmbF9yZWcpOwogCXJlZ3VsYXRvcl9kaXNhYmxlKHN0YXRlLT52cmVmaF9yZWcpOwot Ci0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBhZDg4 MDFfaWRzW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9kYWMvbHRjMTY2MC5jIGIvZHJp dmVycy9paW8vZGFjL2x0YzE2NjAuYwppbmRleCBmNmVjOWJmNTgxNWUuLmM3NjIzM2M5YmI3MiAx MDA2NDQKLS0tIGEvZHJpdmVycy9paW8vZGFjL2x0YzE2NjAuYworKysgYi9kcml2ZXJzL2lpby9k YWMvbHRjMTY2MC5jCkBAIC0yMDYsMTUgKzIwNiwxMyBAQCBzdGF0aWMgaW50IGx0YzE2NjBfcHJv YmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50 IGx0YzE2NjBfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBsdGMx NjYwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBpaW9fZGV2ICpp bmRpb19kZXYgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAlzdHJ1Y3QgbHRjMTY2MF9wcml2ICpw cml2ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKIAogCWlpb19kZXZpY2VfdW5yZWdpc3RlcihpbmRp b19kZXYpOwogCXJlZ3VsYXRvcl9kaXNhYmxlKHByaXYtPnZyZWZfcmVnKTsKLQotCXJldHVybiAw OwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBsdGMxNjYwX2R0X2lkc1td ID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vZGFjL2x0YzI2MzIuYyBiL2RyaXZlcnMvaWlv L2RhYy9sdGMyNjMyLmMKaW5kZXggNTNlNGI4ODdkMzcyLi5hZWQ0NmM4MDc1N2UgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvaWlvL2RhYy9sdGMyNjMyLmMKKysrIGIvZHJpdmVycy9paW8vZGFjL2x0YzI2 MzIuYwpAQCAtMzcyLDcgKzM3Miw3IEBAIHN0YXRpYyBpbnQgbHRjMjYzMl9wcm9iZShzdHJ1Y3Qg c3BpX2RldmljZSAqc3BpKQogCXJldHVybiBpaW9fZGV2aWNlX3JlZ2lzdGVyKGluZGlvX2Rldik7 CiB9CiAKLXN0YXRpYyBpbnQgbHRjMjYzMl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK K3N0YXRpYyB2b2lkIGx0YzI2MzJfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJ c3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCXN0cnVj dCBsdGMyNjMyX3N0YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7CkBAIC0zODEsOCArMzgx LDYgQEAgc3RhdGljIGludCBsdGMyNjMyX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog CiAJaWYgKHN0LT52cmVmX3JlZykKIAkJcmVndWxhdG9yX2Rpc2FibGUoc3QtPnZyZWZfcmVnKTsK LQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgbHRj MjYzMl9pZFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vZGFjL21jcDQ5MjIuYyBiL2Ry aXZlcnMvaWlvL2RhYy9tY3A0OTIyLmMKaW5kZXggMGFlNDE0ZWUxNzE2Li5jYjllNjBlNzFiOTEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2RhYy9tY3A0OTIyLmMKKysrIGIvZHJpdmVycy9paW8v ZGFjL21jcDQ5MjIuYwpAQCAtMTcyLDcgKzE3Miw3IEBAIHN0YXRpYyBpbnQgbWNwNDkyMl9wcm9i ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQg bWNwNDkyMl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIG1jcDQ5 MjJfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IGlpb19kZXYgKmlu ZGlvX2RldiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCXN0cnVjdCBtY3A0OTIyX3N0YXRlICpz dGF0ZTsKQEAgLTE4MCw4ICsxODAsNiBAQCBzdGF0aWMgaW50IG1jcDQ5MjJfcmVtb3ZlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCiAJaWlvX2RldmljZV91bnJlZ2lzdGVyKGluZGlvX2Rldik7CiAJ c3RhdGUgPSBpaW9fcHJpdihpbmRpb19kZXYpOwogCXJlZ3VsYXRvcl9kaXNhYmxlKHN0YXRlLT52 cmVmX3JlZyk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2 aWNlX2lkIG1jcDQ5MjJfaWRbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2RhYy90aS1k YWMwODJzMDg1LmMgYi9kcml2ZXJzL2lpby9kYWMvdGktZGFjMDgyczA4NS5jCmluZGV4IDZiZWRh MjE5MzY4My4uNGUxMTU2ZTZkZWIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lpby9kYWMvdGktZGFj MDgyczA4NS5jCisrKyBiL2RyaXZlcnMvaWlvL2RhYy90aS1kYWMwODJzMDg1LmMKQEAgLTMxMyw3 ICszMTMsNyBAQCBzdGF0aWMgaW50IHRpX2RhY19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3Bp KQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgdGlfZGFjX3JlbW92ZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgdGlfZGFjX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rldmlj ZSAqc3BpKQogewogCXN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBzcGlfZ2V0X2RydmRhdGEo c3BpKTsKIAlzdHJ1Y3QgdGlfZGFjX2NoaXAgKnRpX2RhYyA9IGlpb19wcml2KGluZGlvX2Rldik7 CkBAIC0zMjEsOCArMzIxLDYgQEAgc3RhdGljIGludCB0aV9kYWNfcmVtb3ZlKHN0cnVjdCBzcGlf ZGV2aWNlICpzcGkpCiAJaWlvX2RldmljZV91bnJlZ2lzdGVyKGluZGlvX2Rldik7CiAJbXV0ZXhf ZGVzdHJveSgmdGlfZGFjLT5sb2NrKTsKIAlyZWd1bGF0b3JfZGlzYWJsZSh0aV9kYWMtPnZyZWYp OwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRp X2RhY19vZl9pZFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vZGFjL3RpLWRhYzczMTEu YyBiL2RyaXZlcnMvaWlvL2RhYy90aS1kYWM3MzExLmMKaW5kZXggOTlmMjc1ODI5ZWMyLi5lMTBk MTdlNjBlZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2RhYy90aS1kYWM3MzExLmMKKysrIGIv ZHJpdmVycy9paW8vZGFjL3RpLWRhYzczMTEuYwpAQCAtMjkyLDcgKzI5Miw3IEBAIHN0YXRpYyBp bnQgdGlfZGFjX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsKIH0K IAotc3RhdGljIGludCB0aV9kYWNfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0 aWMgdm9pZCB0aV9kYWNfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0 IGlpb19kZXYgKmluZGlvX2RldiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCXN0cnVjdCB0aV9k YWNfY2hpcCAqdGlfZGFjID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKQEAgLTMwMCw3ICszMDAsNiBA QCBzdGF0aWMgaW50IHRpX2RhY19yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlpaW9f ZGV2aWNlX3VucmVnaXN0ZXIoaW5kaW9fZGV2KTsKIAltdXRleF9kZXN0cm95KCZ0aV9kYWMtPmxv Y2spOwogCXJlZ3VsYXRvcl9kaXNhYmxlKHRpX2RhYy0+dnJlZik7Ci0JcmV0dXJuIDA7CiB9CiAK IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRpX2RhY19vZl9pZFtdID0gewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9paW8vZnJlcXVlbmN5L2FkZjQzNTAuYyBiL2RyaXZlcnMvaWlvL2Zy ZXF1ZW5jeS9hZGY0MzUwLmMKaW5kZXggM2Q5ZWJhNzE2YjY5Li5mMzUyMTMzMGY2ZmIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvaWlvL2ZyZXF1ZW5jeS9hZGY0MzUwLmMKKysrIGIvZHJpdmVycy9paW8v ZnJlcXVlbmN5L2FkZjQzNTAuYwpAQCAtNTg5LDcgKzU4OSw3IEBAIHN0YXRpYyBpbnQgYWRmNDM1 MF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRp YyBpbnQgYWRmNDM1MF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lk IGFkZjQzNTBfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IGlpb19k ZXYgKmluZGlvX2RldiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCXN0cnVjdCBhZGY0MzUwX3N0 YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7CkBAIC02MDQsOCArNjA0LDYgQEAgc3RhdGlj IGludCBhZGY0MzUwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCiAJaWYgKCFJU19F UlIocmVnKSkKIAkJcmVndWxhdG9yX2Rpc2FibGUocmVnKTsKLQotCXJldHVybiAwOwogfQogCiBz dGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhZGY0MzUwX29mX21hdGNoW10gPSB7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2lpby9neXJvL2JtZzE2MF9zcGkuYyBiL2RyaXZlcnMvaWlvL2d5 cm8vYm1nMTYwX3NwaS5jCmluZGV4IDc0NTk2MmUxZTQyMy4uZmMyZTQ1MzUyN2I5IDEwMDY0NAot LS0gYS9kcml2ZXJzL2lpby9neXJvL2JtZzE2MF9zcGkuYworKysgYi9kcml2ZXJzL2lpby9neXJv L2JtZzE2MF9zcGkuYwpAQCAtMjcsMTEgKzI3LDkgQEAgc3RhdGljIGludCBibWcxNjBfc3BpX3By b2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIGJtZzE2MF9jb3JlX3Byb2JlKCZz cGktPmRldiwgcmVnbWFwLCBzcGktPmlycSwgaWQtPm5hbWUpOwogfQogCi1zdGF0aWMgaW50IGJt ZzE2MF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBibWcx NjBfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCWJtZzE2MF9jb3JlX3Jl bW92ZSgmc3BpLT5kZXYpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg c3BpX2RldmljZV9pZCBibWcxNjBfc3BpX2lkW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lp by9neXJvL2Z4YXMyMTAwMmNfc3BpLmMgYi9kcml2ZXJzL2lpby9neXJvL2Z4YXMyMTAwMmNfc3Bp LmMKaW5kZXggNzdjZWViZWY0ZTM0Li5jM2FjMTY5ZmFjZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv aWlvL2d5cm8vZnhhczIxMDAyY19zcGkuYworKysgYi9kcml2ZXJzL2lpby9neXJvL2Z4YXMyMTAw MmNfc3BpLmMKQEAgLTM0LDExICszNCw5IEBAIHN0YXRpYyBpbnQgZnhhczIxMDAyY19zcGlfcHJv YmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gZnhhczIxMDAyY19jb3JlX3Byb2Jl KCZzcGktPmRldiwgcmVnbWFwLCBzcGktPmlycSwgaWQtPm5hbWUpOwogfQogCi1zdGF0aWMgaW50 IGZ4YXMyMTAwMmNfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZv aWQgZnhhczIxMDAyY19zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJZnhh czIxMDAyY19jb3JlX3JlbW92ZSgmc3BpLT5kZXYpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBmeGFzMjEwMDJjX3NwaV9pZFtdID0gewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9paW8vaGVhbHRoL2FmZTQ0MDMuYyBiL2RyaXZlcnMvaWlvL2hlYWx0 aC9hZmU0NDAzLmMKaW5kZXggMjczZjE2ZGNhZmY4Li44NTZlYzkwMWIwOTEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvaWlvL2hlYWx0aC9hZmU0NDAzLmMKKysrIGIvZHJpdmVycy9paW8vaGVhbHRoL2Fm ZTQ0MDMuYwpAQCAtNTcwLDcgKzU3MCw3IEBAIHN0YXRpYyBpbnQgYWZlNDQwM19wcm9iZShzdHJ1 Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgYWZlNDQw M19yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIGFmZTQ0MDNfcmVt b3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IGlpb19kZXYgKmluZGlvX2Rl diA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCXN0cnVjdCBhZmU0NDAzX2RhdGEgKmFmZSA9IGlp b19wcml2KGluZGlvX2Rldik7CkBAIC01ODYsOCArNTg2LDYgQEAgc3RhdGljIGludCBhZmU0NDAz X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldCA9IHJlZ3VsYXRvcl9kaXNhYmxl KGFmZS0+cmVndWxhdG9yKTsKIAlpZiAocmV0KQogCQlkZXZfd2FybihhZmUtPmRldiwgIlVuYWJs ZSB0byBkaXNhYmxlIHJlZ3VsYXRvclxuIik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNv bnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIGFmZTQ0MDNfaWRzW10gPSB7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvYm1jMTUwX21hZ25fc3BpLmMgYi9kcml2ZXJzL2lpby9t YWduZXRvbWV0ZXIvYm1jMTUwX21hZ25fc3BpLmMKaW5kZXggYzZlZDNlYTg0NjBhLi40YzU3MDQx MmQ2NWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL21hZ25ldG9tZXRlci9ibWMxNTBfbWFnbl9z cGkuYworKysgYi9kcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvYm1jMTUwX21hZ25fc3BpLmMKQEAg LTI5LDExICsyOSw5IEBAIHN0YXRpYyBpbnQgYm1jMTUwX21hZ25fc3BpX3Byb2JlKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIGJtYzE1MF9tYWduX3Byb2JlKCZzcGktPmRldiwgcmVn bWFwLCBzcGktPmlycSwgaWQtPm5hbWUpOwogfQogCi1zdGF0aWMgaW50IGJtYzE1MF9tYWduX3Nw aV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIGJtYzE1MF9tYWdu X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlibWMxNTBfbWFnbl9yZW1v dmUoJnNwaS0+ZGV2KTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNw aV9kZXZpY2VfaWQgYm1jMTUwX21hZ25fc3BpX2lkW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2lpby9tYWduZXRvbWV0ZXIvaG1jNTg0M19zcGkuYyBiL2RyaXZlcnMvaWlvL21hZ25ldG9tZXRl ci9obWM1ODQzX3NwaS5jCmluZGV4IDg5Y2Y1OWE2MmMyOC4uYTk5ZGQ5YjMzZTk1IDEwMDY0NAot LS0gYS9kcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvaG1jNTg0M19zcGkuYworKysgYi9kcml2ZXJz L2lpby9tYWduZXRvbWV0ZXIvaG1jNTg0M19zcGkuYwpAQCAtNzQsMTEgKzc0LDkgQEAgc3RhdGlj IGludCBobWM1ODQzX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCQkJaWQtPmRy aXZlcl9kYXRhLCBpZC0+bmFtZSk7CiB9CiAKLXN0YXRpYyBpbnQgaG1jNTg0M19zcGlfcmVtb3Zl KHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBobWM1ODQzX3NwaV9yZW1vdmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlobWM1ODQzX2NvbW1vbl9yZW1vdmUoJnNwaS0+ ZGV2KTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2Vf aWQgaG1jNTg0M19pZFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vcG90ZW50aW9tZXRl ci9tYXg1NDg3LmMgYi9kcml2ZXJzL2lpby9wb3RlbnRpb21ldGVyL21heDU0ODcuYwppbmRleCAw MDdjMmJkMzI0Y2IuLjQyNzIzYzk5NmM5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9paW8vcG90ZW50 aW9tZXRlci9tYXg1NDg3LmMKKysrIGIvZHJpdmVycy9paW8vcG90ZW50aW9tZXRlci9tYXg1NDg3 LmMKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgaW50IG1heDU0ODdfc3BpX3Byb2JlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIGlpb19kZXZpY2VfcmVnaXN0ZXIoaW5kaW9fZGV2 KTsKIH0KIAotc3RhdGljIGludCBtYXg1NDg3X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKK3N0YXRpYyB2b2lkIG1heDU0ODdfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQogewogCXN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBzcGlfZ2V0X2RydmRhdGEoc3Bp KTsKIAlpbnQgcmV0OwpAQCAtMTIzLDggKzEyMyw2IEBAIHN0YXRpYyBpbnQgbWF4NTQ4N19zcGlf cmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0ID0gbWF4NTQ4N193cml0ZV9jbWQo c3BpLCBNQVg1NDg3X0NPUFlfQUJfVE9fTlYpOwogCWlmIChyZXQpCiAJCWRldl93YXJuKCZzcGkt PmRldiwgIkZhaWxlZCB0byBzYXZlIHdpcGVyIHJlZ3MgdG8gTlYgcmVnc1xuIik7Ci0KLQlyZXR1 cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIG1heDU0ODdfaWRb XSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL3ByZXNzdXJlL21zNTYxMV9zcGkuYyBiL2Ry aXZlcnMvaWlvL3ByZXNzdXJlL21zNTYxMV9zcGkuYwppbmRleCA5ZmEyZGNkNzE3NjAuLjdjY2Q5 NjBjZWQ1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9paW8vcHJlc3N1cmUvbXM1NjExX3NwaS5jCisr KyBiL2RyaXZlcnMvaWlvL3ByZXNzdXJlL21zNTYxMV9zcGkuYwpAQCAtMTA3LDExICsxMDcsOSBA QCBzdGF0aWMgaW50IG1zNTYxMV9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAkJ CSAgICBzcGlfZ2V0X2RldmljZV9pZChzcGkpLT5kcml2ZXJfZGF0YSk7CiB9CiAKLXN0YXRpYyBp bnQgbXM1NjExX3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lk IG1zNTYxMV9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJbXM1NjExX3Jl bW92ZShzcGlfZ2V0X2RydmRhdGEoc3BpKSk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXM1NjExX3NwaV9tYXRjaGVzW10gPSB7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2lpby9wcmVzc3VyZS96cGEyMzI2X3NwaS5jIGIvZHJpdmVycy9paW8vcHJl c3N1cmUvenBhMjMyNl9zcGkuYwppbmRleCA4NTIwMWE0YmFlNDQuLmVlOGVkNzc1MzZjYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9paW8vcHJlc3N1cmUvenBhMjMyNl9zcGkuYworKysgYi9kcml2ZXJz L2lpby9wcmVzc3VyZS96cGEyMzI2X3NwaS5jCkBAIC01NywxMSArNTcsOSBAQCBzdGF0aWMgaW50 IHpwYTIzMjZfcHJvYmVfc3BpKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJCQkgICAgIHNwaS0+ aXJxLCBaUEEyMzI2X0RFVklDRV9JRCwgcmVnbWFwKTsKIH0KIAotc3RhdGljIGludCB6cGEyMzI2 X3JlbW92ZV9zcGkoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIHpwYTIzMjZf cmVtb3ZlX3NwaShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXpwYTIzMjZfcmVtb3ZlKCZz cGktPmRldik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2 aWNlX2lkIHpwYTIzMjZfc3BpX2lkc1tdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9r ZXlib2FyZC9hcHBsZXNwaS5jIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9hcHBsZXNwaS5jCmlu ZGV4IGVkYTFiMjMwMDJiNS4uZDFmNTM1NGQ1ZWEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0 L2tleWJvYXJkL2FwcGxlc3BpLmMKKysrIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9hcHBsZXNw aS5jCkBAIC0xODU4LDcgKzE4NTgsNyBAQCBzdGF0aWMgdm9pZCBhcHBsZXNwaV9kcmFpbl9yZWFk cyhzdHJ1Y3QgYXBwbGVzcGlfZGF0YSAqYXBwbGVzcGkpCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmYXBwbGVzcGktPmNtZF9tc2dfbG9jaywgZmxhZ3MpOwogfQogCi1zdGF0aWMgaW50IGFwcGxl c3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgYXBwbGVzcGlf cmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IGFwcGxlc3BpX2RhdGEg KmFwcGxlc3BpID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKQEAgLTE4NzEsOCArMTg3MSw2IEBA IHN0YXRpYyBpbnQgYXBwbGVzcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJYXBw bGVzcGlfZHJhaW5fcmVhZHMoYXBwbGVzcGkpOwogCiAJZGVidWdmc19yZW1vdmVfcmVjdXJzaXZl KGFwcGxlc3BpLT5kZWJ1Z2ZzX3Jvb3QpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lk IGFwcGxlc3BpX3NodXRkb3duKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCmRpZmYgLS1naXQgYS9k cml2ZXJzL2lucHV0L21pc2MvYWR4bDM0eC1zcGkuYyBiL2RyaXZlcnMvaW5wdXQvbWlzYy9hZHhs MzR4LXNwaS5jCmluZGV4IDZlNTFjOWJjNjE5Zi4uOTFlNDRkNGM2NmY3IDEwMDY0NAotLS0gYS9k cml2ZXJzL2lucHV0L21pc2MvYWR4bDM0eC1zcGkuYworKysgYi9kcml2ZXJzL2lucHV0L21pc2Mv YWR4bDM0eC1zcGkuYwpAQCAtODcsMTMgKzg3LDExIEBAIHN0YXRpYyBpbnQgYWR4bDM0eF9zcGlf cHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu dCBhZHhsMzR4X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lk IGFkeGwzNHhfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBh ZHhsMzR4ICphYyA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCiAJYWR4bDM0eF9yZW1vdmUoYWMp OwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYWR4bDM0eF9z cGlfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0 L3RvdWNoc2NyZWVuL2Fkczc4NDYuYyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vYWRzNzg0 Ni5jCmluZGV4IGEyNWE3N2RkOWEzMi4uYmVkNjhhNjhmMzMwIDEwMDY0NAotLS0gYS9kcml2ZXJz L2lucHV0L3RvdWNoc2NyZWVuL2Fkczc4NDYuYworKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2Ny ZWVuL2Fkczc4NDYuYwpAQCAtMTQxMSwxMyArMTQxMSwxMSBAQCBzdGF0aWMgaW50IGFkczc4NDZf cHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu dCBhZHM3ODQ2X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgYWRz Nzg0Nl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgYWRzNzg0NiAq dHMgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCWFkczc4NDZfc3RvcCh0cyk7Ci0KLQlyZXR1 cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIGFkczc4NDZfZHJpdmVyID0gewpk aWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9jeXR0c3A0X3NwaS5jIGIvZHJp dmVycy9pbnB1dC90b3VjaHNjcmVlbi9jeXR0c3A0X3NwaS5jCmluZGV4IDJhZWM0MWViNzZiNy4u NWQ3ZGI4NGYyNzQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2N5dHRz cDRfc3BpLmMKKysrIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9jeXR0c3A0X3NwaS5jCkBA IC0xNjQsMTIgKzE2NCwxMCBAQCBzdGF0aWMgaW50IGN5dHRzcDRfc3BpX3Byb2JlKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyh0cyk7CiB9CiAKLXN0YXRp YyBpbnQgY3l0dHNwNF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMg dm9pZCBjeXR0c3A0X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1 Y3QgY3l0dHNwNCAqdHMgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAljeXR0c3A0X3JlbW92ZSh0 cyk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIGN5dHRzcDRf c3BpX2RyaXZlciA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vdHNj MjAwNS5jIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi90c2MyMDA1LmMKaW5kZXggYTJmNTU5 MjBiOWIyLi41NTVkZmU5OGIzYzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3Jl ZW4vdHNjMjAwNS5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vdHNjMjAwNS5jCkBA IC02NCwxMSArNjQsOSBAQCBzdGF0aWMgaW50IHRzYzIwMDVfcHJvYmUoc3RydWN0IHNwaV9kZXZp Y2UgKnNwaSkKIAkJCSAgICAgdHNjMjAwNV9jbWQpOwogfQogCi1zdGF0aWMgaW50IHRzYzIwMDVf cmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCB0c2MyMDA1X3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXRzYzIwMHhfcmVtb3ZlKCZzcGktPmRldik7 Ci0KLQlyZXR1cm4gMDsKIH0KIAogI2lmZGVmIENPTkZJR19PRgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9sZWRzL2xlZHMtY3IwMDE0MTE0LmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1jcjAwMTQxMTQuYwpp bmRleCBkMDNjZmQzYzBiZmIuLmM4NzY4NmJkN2MxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRz L2xlZHMtY3IwMDE0MTE0LmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtY3IwMDE0MTE0LmMKQEAg LTI2NiwxNCArMjY2LDEyIEBAIHN0YXRpYyBpbnQgY3IwMDE0MTE0X3Byb2JlKHN0cnVjdCBzcGlf ZGV2aWNlICpzcGkpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY3IwMDE0MTE0X3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgY3IwMDE0MTE0X3JlbW92ZShz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBjcjAwMTQxMTQgKnByaXYgPSBzcGlf Z2V0X2RydmRhdGEoc3BpKTsKIAogCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmcHJpdi0+d29y ayk7CiAJbXV0ZXhfZGVzdHJveSgmcHJpdi0+bG9jayk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3Rh dGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgY3IwMDE0MTE0X2R0X2lkc1tdID0gewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtZGFjMTI0czA4NS5jIGIvZHJpdmVycy9sZWRzL2xl ZHMtZGFjMTI0czA4NS5jCmluZGV4IDIwZGM5YjlkN2RlYS4uY2Y1ZmIxMTk1Zjg3IDEwMDY0NAot LS0gYS9kcml2ZXJzL2xlZHMvbGVkcy1kYWMxMjRzMDg1LmMKKysrIGIvZHJpdmVycy9sZWRzL2xl ZHMtZGFjMTI0czA4NS5jCkBAIC04NSwxNSArODUsMTMgQEAgc3RhdGljIGludCBkYWMxMjRzMDg1 X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGlj IGludCBkYWMxMjRzMDg1X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZv aWQgZGFjMTI0czA4NV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3Qg ZGFjMTI0czA4NQkqZGFjID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAJaW50IGk7CiAKIAlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShkYWMtPmxlZHMpOyBpKyspCiAJCWxlZF9jbGFzc2Rldl91 bnJlZ2lzdGVyKCZkYWMtPmxlZHNbaV0ubGRldik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGlj IHN0cnVjdCBzcGlfZHJpdmVyIGRhYzEyNHMwODVfZHJpdmVyID0gewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9sZWRzL2xlZHMtZWwxNTIwMzAwMC5jIGIvZHJpdmVycy9sZWRzL2xlZHMtZWwxNTIwMzAw MC5jCmluZGV4IGY5ZWI1OWEyNTU3MC4uN2U3YjYxN2JjZDU2IDEwMDY0NAotLS0gYS9kcml2ZXJz L2xlZHMvbGVkcy1lbDE1MjAzMDAwLmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtZWwxNTIwMzAw MC5jCkBAIC0zMTUsMTMgKzMxNSwxMSBAQCBzdGF0aWMgaW50IGVsMTUyMDMwMDBfcHJvYmUoc3Ry dWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gZWwxNTIwMzAwMF9wcm9iZV9kdChwcml2KTsK IH0KIAotc3RhdGljIGludCBlbDE1MjAzMDAwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3Bp KQorc3RhdGljIHZvaWQgZWwxNTIwMzAwMF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK IHsKIAlzdHJ1Y3QgZWwxNTIwMzAwMCAqcHJpdiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCiAJ bXV0ZXhfZGVzdHJveSgmcHJpdi0+bG9jayk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZWwxNTIwMzAwMF9kdF9pZHNbXSA9IHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvbGVkcy9sZWRzLXNwaS1ieXRlLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1zcGkt Ynl0ZS5jCmluZGV4IGYxOTY0Yzk2ZmIxNS4uMmJjNWM5OWRhZjUxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2xlZHMvbGVkcy1zcGktYnl0ZS5jCisrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLXNwaS1ieXRl LmMKQEAgLTEzMCwxMyArMTMwLDExIEBAIHN0YXRpYyBpbnQgc3BpX2J5dGVfcHJvYmUoc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBzcGlfYnl0ZV9y ZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIHNwaV9ieXRlX3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBzcGlfYnl0ZV9sZWQJKmxlZCA9 IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCiAJbXV0ZXhfZGVzdHJveSgmbGVkLT5tdXRleCk7Ci0K LQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHNwaV9ieXRlX2RyaXZl ciA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvc3BpL2N4ZDI4ODAtc3BpLmMgYi9kcml2 ZXJzL21lZGlhL3NwaS9jeGQyODgwLXNwaS5jCmluZGV4IDZmMmE2NmJjODdmYi4uNmJlNGU1NTI4 ODc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3NwaS9jeGQyODgwLXNwaS5jCisrKyBiL2Ry aXZlcnMvbWVkaWEvc3BpL2N4ZDI4ODAtc3BpLmMKQEAgLTYyNSw3ICs2MjUsNyBAQCBjeGQyODgw X3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAKLXN0 YXRpYyBpbnQKK3N0YXRpYyB2b2lkCiBjeGQyODgwX3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZp Y2UgKnNwaSkKIHsKIAlzdHJ1Y3QgY3hkMjg4MF9kdmJfc3BpICpkdmJfc3BpID0gc3BpX2dldF9k cnZkYXRhKHNwaSk7CkBAIC02NDMsOCArNjQzLDYgQEAgY3hkMjg4MF9zcGlfcmVtb3ZlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCiAKIAlrZnJlZShkdmJfc3BpKTsKIAlwcl9pbmZvKCJjeGQyODgw X3NwaSByZW1vdmUgb2suXG4iKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IHNwaV9kZXZpY2VfaWQgY3hkMjg4MF9zcGlfaWRbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWVkaWEvc3BpL2dzMTY2Mi5jIGIvZHJpdmVycy9tZWRpYS9zcGkvZ3MxNjYyLmMKaW5kZXgg Zjg2ZWYxY2ExMjg4Li43NWMyMWE5M2U2ZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvc3Bp L2dzMTY2Mi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvc3BpL2dzMTY2Mi5jCkBAIC00NTgsMTMgKzQ1 OCwxMSBAQCBzdGF0aWMgaW50IGdzX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0 dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBnc19yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKK3N0YXRpYyB2b2lkIGdzX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0 cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCXY0bDJfZGV2 aWNlX3VucmVnaXN0ZXJfc3ViZGV2KHNkKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgc3Ry dWN0IHNwaV9kcml2ZXIgZ3NfZHJpdmVyID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90 dW5lcnMvbXNpMDAxLmMgYi9kcml2ZXJzL21lZGlhL3R1bmVycy9tc2kwMDEuYwppbmRleCA0NDI0 NzA0OWEzMTkuLmFkNmM3MmMxZWQwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS90dW5lcnMv bXNpMDAxLmMKKysrIGIvZHJpdmVycy9tZWRpYS90dW5lcnMvbXNpMDAxLmMKQEAgLTQ3Miw3ICs0 NzIsNyBAQCBzdGF0aWMgaW50IG1zaTAwMV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog CXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgbXNpMDAxX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rl dmljZSAqc3BpKQorc3RhdGljIHZvaWQgbXNpMDAxX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQogewogCXN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsK IAlzdHJ1Y3QgbXNpMDAxX2RldiAqZGV2ID0gc2RfdG9fbXNpMDAxX2RldihzZCk7CkBAIC00ODYs NyArNDg2LDYgQEAgc3RhdGljIGludCBtc2kwMDFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCiAJdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoJmRldi0+c2QpOwogCXY0bDJfY3Ry bF9oYW5kbGVyX2ZyZWUoJmRldi0+aGRsKTsKIAlrZnJlZShkZXYpOwotCXJldHVybiAwOwogfQog CiBzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgbXNpMDAxX2lkX3RhYmxlW10gPSB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9hcml6b25hLXNwaS5jIGIvZHJpdmVycy9tZmQvYXJp em9uYS1zcGkuYwppbmRleCA5ZmUwNmRkYTM3ODIuLjAzNjIwYzhlZmUzNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9tZmQvYXJpem9uYS1zcGkuYworKysgYi9kcml2ZXJzL21mZC9hcml6b25hLXNwaS5j CkBAIC0yMDYsMTMgKzIwNiwxMSBAQCBzdGF0aWMgaW50IGFyaXpvbmFfc3BpX3Byb2JlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIGFyaXpvbmFfZGV2X2luaXQoYXJpem9uYSk7CiB9 CiAKLXN0YXRpYyBpbnQgYXJpem9uYV9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkp CitzdGF0aWMgdm9pZCBhcml6b25hX3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK IHsKIAlzdHJ1Y3QgYXJpem9uYSAqYXJpem9uYSA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCiAJ YXJpem9uYV9kZXZfZXhpdChhcml6b25hKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29u c3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgYXJpem9uYV9zcGlfaWRzW10gPSB7CmRpZmYgLS1naXQg YS9kcml2ZXJzL21mZC9kYTkwNTItc3BpLmMgYi9kcml2ZXJzL21mZC9kYTkwNTItc3BpLmMKaW5k ZXggNWZhZjM3NjZhNWUyLi5iNzlhNTdiNDVjMWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWZkL2Rh OTA1Mi1zcGkuYworKysgYi9kcml2ZXJzL21mZC9kYTkwNTItc3BpLmMKQEAgLTU1LDEyICs1NSwx MSBAQCBzdGF0aWMgaW50IGRhOTA1Ml9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK IAlyZXR1cm4gZGE5MDUyX2RldmljZV9pbml0KGRhOTA1MiwgaWQtPmRyaXZlcl9kYXRhKTsKIH0K IAotc3RhdGljIGludCBkYTkwNTJfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQor c3RhdGljIHZvaWQgZGE5MDUyX3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsK IAlzdHJ1Y3QgZGE5MDUyICpkYTkwNTIgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCWRhOTA1 Ml9kZXZpY2VfZXhpdChkYTkwNTIpOwotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IHNwaV9kZXZpY2VfaWQgZGE5MDUyX3NwaV9pZFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZmQvZXp4LXBjYXAuYyBiL2RyaXZlcnMvbWZkL2V6eC1wY2FwLmMKaW5kZXggNzBmYTE4YjA0 YWQyLi4yMjgwZjc1NmY0MjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWZkL2V6eC1wY2FwLmMKKysr IGIvZHJpdmVycy9tZmQvZXp4LXBjYXAuYwpAQCAtMzkyLDcgKzM5Miw3IEBAIHN0YXRpYyBpbnQg cGNhcF9hZGRfc3ViZGV2KHN0cnVjdCBwY2FwX2NoaXAgKnBjYXAsCiAJcmV0dXJuIHJldDsKIH0K IAotc3RhdGljIGludCBlenhfcGNhcF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0 YXRpYyB2b2lkIGV6eF9wY2FwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0 cnVjdCBwY2FwX2NoaXAgKnBjYXAgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAl1bnNpZ25lZCBs b25nIGZsYWdzOwpAQCAtNDEyLDggKzQxMiw2IEBAIHN0YXRpYyBpbnQgZXp4X3BjYXBfcmVtb3Zl KHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJCWlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpLCBO VUxMLCBOVUxMKTsKIAogCWRlc3Ryb3lfd29ya3F1ZXVlKHBjYXAtPndvcmtxdWV1ZSk7Ci0KLQly ZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBlenhfcGNhcF9wcm9iZShzdHJ1Y3Qgc3BpX2Rldmlj ZSAqc3BpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvbWFkZXJhLXNwaS5jIGIvZHJpdmVycy9t ZmQvbWFkZXJhLXNwaS5jCmluZGV4IGU4NjBmNWZmMDkzMy4uZGE4NGViNTBlNTNhIDEwMDY0NAot LS0gYS9kcml2ZXJzL21mZC9tYWRlcmEtc3BpLmMKKysrIGIvZHJpdmVycy9tZmQvbWFkZXJhLXNw aS5jCkBAIC0xMTIsMTMgKzExMiwxMSBAQCBzdGF0aWMgaW50IG1hZGVyYV9zcGlfcHJvYmUoc3Ry dWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gbWFkZXJhX2Rldl9pbml0KG1hZGVyYSk7CiB9 CiAKLXN0YXRpYyBpbnQgbWFkZXJhX3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK K3N0YXRpYyB2b2lkIG1hZGVyYV9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7 CiAJc3RydWN0IG1hZGVyYSAqbWFkZXJhID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAltYWRl cmFfZGV2X2V4aXQobWFkZXJhKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IHNwaV9kZXZpY2VfaWQgbWFkZXJhX3NwaV9pZHNbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWZkL21jMTN4eHgtc3BpLmMgYi9kcml2ZXJzL21mZC9tYzEzeHh4LXNwaS5jCmluZGV4IDRk ODkxM2Q2NDdlNi4uZjgwMzUyN2U1ODE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21mZC9tYzEzeHh4 LXNwaS5jCisrKyBiL2RyaXZlcnMvbWZkL21jMTN4eHgtc3BpLmMKQEAgLTE2NiwxMCArMTY2LDkg QEAgc3RhdGljIGludCBtYzEzeHh4X3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog CXJldHVybiBtYzEzeHh4X2NvbW1vbl9pbml0KCZzcGktPmRldik7CiB9CiAKLXN0YXRpYyBpbnQg bWMxM3h4eF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBt YzEzeHh4X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAltYzEzeHh4X2Nv bW1vbl9leGl0KCZzcGktPmRldik7Ci0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBzdHJ1Y3Qgc3Bp X2RyaXZlciBtYzEzeHh4X3NwaV9kcml2ZXIgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9y c211X3NwaS5jIGIvZHJpdmVycy9tZmQvcnNtdV9zcGkuYwppbmRleCBmZWMyYjRlYzQ3N2MuLmQy ZjNkOGYxZTA1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvcnNtdV9zcGkuYworKysgYi9kcml2 ZXJzL21mZC9yc211X3NwaS5jCkBAIC0yMjAsMTMgKzIyMCwxMSBAQCBzdGF0aWMgaW50IHJzbXVf c3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpjbGllbnQpCiAJcmV0dXJuIHJzbXVfY29yZV9p bml0KHJzbXUpOwogfQogCi1zdGF0aWMgaW50IHJzbXVfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rl dmljZSAqY2xpZW50KQorc3RhdGljIHZvaWQgcnNtdV9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2 aWNlICpjbGllbnQpCiB7CiAJc3RydWN0IHJzbXVfZGRhdGEgKnJzbXUgPSBzcGlfZ2V0X2RydmRh dGEoY2xpZW50KTsKIAogCXJzbXVfY29yZV9leGl0KHJzbXUpOwotCi0JcmV0dXJuIDA7CiB9CiAK IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCByc211X3NwaV9pZFtdID0gewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZmQvc3RtcGUtc3BpLmMgYi9kcml2ZXJzL21mZC9zdG1wZS1zcGku YwppbmRleCA2YzU5MTUwMTZiZTUuLmFkODA1NWEwZTI4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZmQvc3RtcGUtc3BpLmMKKysrIGIvZHJpdmVycy9tZmQvc3RtcGUtc3BpLmMKQEAgLTEwMiwxMyAr MTAyLDExIEBAIHN0bXBlX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVy biBzdG1wZV9wcm9iZSgmc3BpX2NpLCBpZC0+ZHJpdmVyX2RhdGEpOwogfQogCi1zdGF0aWMgaW50 IHN0bXBlX3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIHN0 bXBlX3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3Qgc3RtcGUg KnN0bXBlID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAlzdG1wZV9yZW1vdmUoc3RtcGUpOwot Ci0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0bXBl X3NwaV9vZl9tYXRjaFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvdHBzNjU5MTItc3Bp LmMgYi9kcml2ZXJzL21mZC90cHM2NTkxMi1zcGkuYwppbmRleCBkNzAxOTI2YWE0NmUuLmJiYTM4 ZmJjNzgxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvdHBzNjU5MTItc3BpLmMKKysrIGIvZHJp dmVycy9tZmQvdHBzNjU5MTItc3BpLmMKQEAgLTUwLDEzICs1MCwxMSBAQCBzdGF0aWMgaW50IHRw czY1OTEyX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiB0cHM2NTkx Ml9kZXZpY2VfaW5pdCh0cHMpOwogfQogCi1zdGF0aWMgaW50IHRwczY1OTEyX3NwaV9yZW1vdmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIHRwczY1OTEyX3NwaV9yZW1vdmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgdHBzNjU5MTIgKnRwcyA9IHNwaV9n ZXRfZHJ2ZGF0YShzcGkpOwogCiAJdHBzNjU5MTJfZGV2aWNlX2V4aXQodHBzKTsKLQotCXJldHVy biAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgdHBzNjU5MTJfc3Bp X2lkX3RhYmxlW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvYWQ1MjV4X2Rwb3Qtc3Bp LmMgYi9kcml2ZXJzL21pc2MvYWQ1MjV4X2Rwb3Qtc3BpLmMKaW5kZXggYTllNzVkODBhZDM2Li4y NjMwNTViZGE0OGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9hZDUyNXhfZHBvdC1zcGkuYwor KysgYi9kcml2ZXJzL21pc2MvYWQ1MjV4X2Rwb3Qtc3BpLmMKQEAgLTkwLDEwICs5MCw5IEBAIHN0 YXRpYyBpbnQgYWRfZHBvdF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAkJCSAg ICAgc3BpX2dldF9kZXZpY2VfaWQoc3BpKS0+bmFtZSk7CiB9CiAKLXN0YXRpYyBpbnQgYWRfZHBv dF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBhZF9kcG90 X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlhZF9kcG90X3JlbW92ZSgm c3BpLT5kZXYpOwotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZp Y2VfaWQgYWRfZHBvdF9zcGlfaWRbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9lZXBy b20vZWVwcm9tXzkzeHg0Ni5jIGIvZHJpdmVycy9taXNjL2VlcHJvbS9lZXByb21fOTN4eDQ2LmMK aW5kZXggMWYxNTM5OWU1Y2I0Li5iNjMwNjI1YjMwMjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlz Yy9lZXByb20vZWVwcm9tXzkzeHg0Ni5jCisrKyBiL2RyaXZlcnMvbWlzYy9lZXByb20vZWVwcm9t XzkzeHg0Ni5jCkBAIC01NTUsMTQgKzU1NSwxMiBAQCBzdGF0aWMgaW50IGVlcHJvbV85M3h4NDZf cHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu dCBlZXByb21fOTN4eDQ2X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZv aWQgZWVwcm9tXzkzeHg0Nl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1 Y3QgZWVwcm9tXzkzeHg0Nl9kZXYgKmVkZXYgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCWlm ICghKGVkZXYtPnBkYXRhLT5mbGFncyAmIEVFX1JFQURPTkxZKSkKIAkJZGV2aWNlX3JlbW92ZV9m aWxlKCZzcGktPmRldiwgJmRldl9hdHRyX2VyYXNlKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0 aWMgc3RydWN0IHNwaV9kcml2ZXIgZWVwcm9tXzkzeHg0Nl9kcml2ZXIgPSB7CmRpZmYgLS1naXQg YS9kcml2ZXJzL21pc2MvbGF0dGljZS1lY3AzLWNvbmZpZy5jIGIvZHJpdmVycy9taXNjL2xhdHRp Y2UtZWNwMy1jb25maWcuYwppbmRleCA5ODgyODAzMGI1YTQuLmJhYzRkZjJlNTIzMSAxMDA2NDQK LS0tIGEvZHJpdmVycy9taXNjL2xhdHRpY2UtZWNwMy1jb25maWcuYworKysgYi9kcml2ZXJzL21p c2MvbGF0dGljZS1lY3AzLWNvbmZpZy5jCkBAIC0yMTEsMTMgKzIxMSwxMSBAQCBzdGF0aWMgaW50 IGxhdHRpY2VfZWNwM19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiAwOwog fQogCi1zdGF0aWMgaW50IGxhdHRpY2VfZWNwM19yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKK3N0YXRpYyB2b2lkIGxhdHRpY2VfZWNwM19yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKIHsKIAlzdHJ1Y3QgZnBnYV9kYXRhICpkYXRhID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAK IAl3YWl0X2Zvcl9jb21wbGV0aW9uKCZkYXRhLT5md19sb2FkZWQpOwotCi0JcmV0dXJuIDA7CiB9 CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBsYXR0aWNlX2VjcDNfaWRbXSA9 IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9saXMzbHYwMmQvbGlzM2x2MDJkX3NwaS5jIGIv ZHJpdmVycy9taXNjL2xpczNsdjAyZC9saXMzbHYwMmRfc3BpLmMKaW5kZXggOWU0MGRmYjYwNzQy Li4yMDNhMTA4Yjg4ODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9saXMzbHYwMmQvbGlzM2x2 MDJkX3NwaS5jCisrKyBiL2RyaXZlcnMvbWlzYy9saXMzbHYwMmQvbGlzM2x2MDJkX3NwaS5jCkBA IC05NiwxNSArOTYsMTMgQEAgc3RhdGljIGludCBsaXMzMDJkbF9zcGlfcHJvYmUoc3RydWN0IHNw aV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gbGlzM2x2MDJkX2luaXRfZGV2aWNlKCZsaXMzX2Rldik7 CiB9CiAKLXN0YXRpYyBpbnQgbGlzMzAyZGxfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQorc3RhdGljIHZvaWQgbGlzMzAyZGxfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQogewogCXN0cnVjdCBsaXMzbHYwMmQgKmxpczMgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsK IAlsaXMzbHYwMmRfam95c3RpY2tfZGlzYWJsZShsaXMzKTsKIAlsaXMzbHYwMmRfcG93ZXJvZmYo bGlzMyk7CiAKIAlsaXMzbHYwMmRfcmVtb3ZlX2ZzKCZsaXMzX2Rldik7Ci0KLQlyZXR1cm4gMDsK IH0KIAogI2lmZGVmIENPTkZJR19QTV9TTEVFUApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9z dC9tbWNfc3BpLmMgYi9kcml2ZXJzL21tYy9ob3N0L21tY19zcGkuYwppbmRleCBhNTc2MTgxZTlk YjAuLjEwNmRkMjA0YjFhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9tbWNfc3BpLmMK KysrIGIvZHJpdmVycy9tbWMvaG9zdC9tbWNfc3BpLmMKQEAgLTE0ODksNyArMTQ4OSw3IEBAIHN0 YXRpYyBpbnQgbW1jX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogfQogCiAKLXN0 YXRpYyBpbnQgbW1jX3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2 b2lkIG1tY19zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IG1t Y19ob3N0CQkqbW1jID0gZGV2X2dldF9kcnZkYXRhKCZzcGktPmRldik7CiAJc3RydWN0IG1tY19z cGlfaG9zdAkqaG9zdCA9IG1tY19wcml2KG1tYyk7CkBAIC0xNTA3LDcgKzE1MDcsNiBAQCBzdGF0 aWMgaW50IG1tY19zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJc3BpLT5tYXhf c3BlZWRfaHogPSBtbWMtPmZfbWF4OwogCW1tY19zcGlfcHV0X3BkYXRhKHNwaSk7CiAJbW1jX2Zy ZWVfaG9zdChtbWMpOwotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9k ZXZpY2VfaWQgbW1jX3NwaV9kZXZfaWRzW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9k ZXZpY2VzL21jaHAyM2syNTYuYyBiL2RyaXZlcnMvbXRkL2RldmljZXMvbWNocDIzazI1Ni5jCmlu ZGV4IGE4YjMxYmRkZjE0Yi4uMDA4ZGY5ZDg4OThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9k ZXZpY2VzL21jaHAyM2syNTYuYworKysgYi9kcml2ZXJzL210ZC9kZXZpY2VzL21jaHAyM2syNTYu YwpAQCAtMjA5LDEzICsyMDksMTEgQEAgc3RhdGljIGludCBtY2hwMjNrMjU2X3Byb2JlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgbWNocDIzazI1 Nl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIG1jaHAyM2syNTZf cmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IG1jaHAyM2syNTZfZmxh c2ggKmZsYXNoID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAlXQVJOX09OKG10ZF9kZXZpY2Vf dW5yZWdpc3RlcigmZmxhc2gtPm10ZCkpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1jaHAyM2syNTZfb2ZfdGFibGVbXSA9IHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvbXRkL2RldmljZXMvbWNocDQ4bDY0MC5jIGIvZHJpdmVycy9tdGQvZGV2aWNl cy9tY2hwNDhsNjQwLmMKaW5kZXggMjMxYTEwNzkwMTk2Li5hM2ZkNDI2ZGY3NGIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbXRkL2RldmljZXMvbWNocDQ4bDY0MC5jCisrKyBiL2RyaXZlcnMvbXRkL2Rl dmljZXMvbWNocDQ4bDY0MC5jCkBAIC0zNDEsMTMgKzM0MSwxMSBAQCBzdGF0aWMgaW50IG1jaHA0 OGw2NDBfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3Rh dGljIGludCBtY2hwNDhsNjQwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGlj IHZvaWQgbWNocDQ4bDY0MF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1 Y3QgbWNocDQ4bDY0MF9mbGFzaCAqZmxhc2ggPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCVdB Uk5fT04obXRkX2RldmljZV91bnJlZ2lzdGVyKCZmbGFzaC0+bXRkKSk7Ci0KLQlyZXR1cm4gMDsK IH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWNocDQ4bDY0MF9vZl90YWJs ZVtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvZGV2aWNlcy9tdGRfZGF0YWZsYXNoLmMg Yi9kcml2ZXJzL210ZC9kZXZpY2VzL210ZF9kYXRhZmxhc2guYwppbmRleCA3MzQ4NzhhYmFhMjMu LjEzNGUyNzMyODU5NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvZGV2aWNlcy9tdGRfZGF0YWZs YXNoLmMKKysrIGIvZHJpdmVycy9tdGQvZGV2aWNlcy9tdGRfZGF0YWZsYXNoLmMKQEAgLTkxNiw3 ICs5MTYsNyBAQCBzdGF0aWMgaW50IGRhdGFmbGFzaF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQogCXJldHVybiBzdGF0dXM7CiB9CiAKLXN0YXRpYyBpbnQgZGF0YWZsYXNoX3JlbW92ZShz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgZGF0YWZsYXNoX3JlbW92ZShzdHJ1 Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBkYXRhZmxhc2gJKmZsYXNoID0gc3BpX2dl dF9kcnZkYXRhKHNwaSk7CiAKQEAgLTkyNSw4ICs5MjUsNiBAQCBzdGF0aWMgaW50IGRhdGFmbGFz aF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlXQVJOX09OKG10ZF9kZXZpY2VfdW5y ZWdpc3RlcigmZmxhc2gtPm10ZCkpOwogCiAJa2ZyZWUoZmxhc2gpOwotCi0JcmV0dXJuIDA7CiB9 CiAKIHN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBkYXRhZmxhc2hfZHJpdmVyID0gewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tdGQvZGV2aWNlcy9zc3QyNWwuYyBiL2RyaXZlcnMvbXRkL2RldmljZXMv c3N0MjVsLmMKaW5kZXggN2YxMjRjMWJmYTQwLi44ODEzOTk0Y2U5ZjQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbXRkL2RldmljZXMvc3N0MjVsLmMKKysrIGIvZHJpdmVycy9tdGQvZGV2aWNlcy9zc3Qy NWwuYwpAQCAtMzk4LDEzICszOTgsMTEgQEAgc3RhdGljIGludCBzc3QyNWxfcHJvYmUoc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBzc3QyNWxfcmVt b3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBzc3QyNWxfcmVtb3ZlKHN0 cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IHNzdDI1bF9mbGFzaCAqZmxhc2ggPSBz cGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCVdBUk5fT04obXRkX2RldmljZV91bnJlZ2lzdGVyKCZm bGFzaC0+bXRkKSk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBzcGlfZHJpdmVy IHNzdDI1bF9kcml2ZXIgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNh bjR4NXgtY29yZS5jIGIvZHJpdmVycy9uZXQvY2FuL21fY2FuL3RjYW40eDV4LWNvcmUuYwppbmRl eCAwNDY4N2IxNWIyNTAuLjQxNjQ1YTI0Mzg0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2Fu L21fY2FuL3RjYW40eDV4LWNvcmUuYworKysgYi9kcml2ZXJzL25ldC9jYW4vbV9jYW4vdGNhbjR4 NXgtY29yZS5jCkBAIC0zODgsNyArMzg4LDcgQEAgc3RhdGljIGludCB0Y2FuNHg1eF9jYW5fcHJv YmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50 IHRjYW40eDV4X2Nhbl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lk IHRjYW40eDV4X2Nhbl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3Qg dGNhbjR4NXhfcHJpdiAqcHJpdiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCkBAIC0zOTcsOCAr Mzk3LDYgQEAgc3RhdGljIGludCB0Y2FuNHg1eF9jYW5fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNl ICpzcGkpCiAJdGNhbjR4NXhfcG93ZXJfZW5hYmxlKHByaXYtPnBvd2VyLCAwKTsKIAogCW1fY2Fu X2NsYXNzX2ZyZWVfZGV2KHByaXYtPmNkZXYubmV0KTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0Y2FuNHg1eF9vZl9tYXRjaFtdID0gewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYyBiL2RyaXZlcnMvbmV0L2Nhbi9z cGkvaGkzMTF4LmMKaW5kZXggY2ZjYzE0ZmUzZTQyLi42NjRiOGYxNGQ3YjAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbmV0L2Nhbi9zcGkvaGkzMTF4LmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL3NwaS9o aTMxMXguYwpAQCAtOTQ4LDcgKzk0OCw3IEBAIHN0YXRpYyBpbnQgaGkzMTEwX2Nhbl9wcm9iZShz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAi UHJvYmUgZmFpbGVkXG4iKTsKIH0KIAotc3RhdGljIGludCBoaTMxMTBfY2FuX3JlbW92ZShzdHJ1 Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgaGkzMTEwX2Nhbl9yZW1vdmUoc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgaGkzMTEwX3ByaXYgKnByaXYgPSBzcGlfZ2V0 X2RydmRhdGEoc3BpKTsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ID0gcHJpdi0+bmV0OwpAQCAt OTYwLDggKzk2MCw2IEBAIHN0YXRpYyBpbnQgaGkzMTEwX2Nhbl9yZW1vdmUoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSkKIAljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+Y2xrKTsKIAogCWZyZWVf Y2FuZGV2KG5ldCk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBfX21heWJlX3VudXNl ZCBoaTMxMTBfY2FuX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmMgYi9kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXgu YwppbmRleCAwMjVlMDdjYjc0MzkuLmQyM2VkYWYyMjQyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9u ZXQvY2FuL3NwaS9tY3AyNTF4LmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmMK QEAgLTE0MjcsNyArMTQyNyw3IEBAIHN0YXRpYyBpbnQgbWNwMjUxeF9jYW5fcHJvYmUoc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IG1jcDI1MXhf Y2FuX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgbWNwMjUxeF9j YW5fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IG1jcDI1MXhfcHJp diAqcHJpdiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXQg PSBwcml2LT5uZXQ7CkBAIC0xNDQyLDggKzE0NDIsNiBAQCBzdGF0aWMgaW50IG1jcDI1MXhfY2Fu X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCWNsa19kaXNhYmxlX3VucHJlcGFyZShw cml2LT5jbGspOwogCiAJZnJlZV9jYW5kZXYobmV0KTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0 aWMgaW50IF9fbWF5YmVfdW51c2VkIG1jcDI1MXhfY2FuX3N1c3BlbmQoc3RydWN0IGRldmljZSAq ZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZk LWNvcmUuYyBiL2RyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMK aW5kZXggYjU5ODZkZjZlY2EwLi42NWM5YjMxNjY2YTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMKKysrIGIvZHJpdmVycy9uZXQvY2Fu L3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYwpAQCAtMTk2Niw3ICsxOTY2LDcgQEAgc3Rh dGljIGludCBtY3AyNTF4ZmRfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4g ZXJyOwogfQogCi1zdGF0aWMgaW50IG1jcDI1MXhmZF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKK3N0YXRpYyB2b2lkIG1jcDI1MXhmZF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKIHsKIAlzdHJ1Y3QgbWNwMjUxeGZkX3ByaXYgKnByaXYgPSBzcGlfZ2V0X2RydmRhdGEoc3Bp KTsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHByaXYtPm5kZXY7CkBAIC0xOTc1LDggKzE5 NzUsNiBAQCBzdGF0aWMgaW50IG1jcDI1MXhmZF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKIAltY3AyNTF4ZmRfdW5yZWdpc3Rlcihwcml2KTsKIAlzcGktPm1heF9zcGVlZF9oeiA9IHBy aXYtPnNwaV9tYXhfc3BlZWRfaHpfb3JpZzsKIAlmcmVlX2NhbmRldihuZGV2KTsKLQotCXJldHVy biAwOwogfQogCiBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIG1jcDI1MXhmZF9ydW50aW1lX3N1 c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNh L2I1My9iNTNfc3BpLmMgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYwppbmRleCAyYjg4 ZjAzZTUyNTIuLjBlNTRiMmEwYzIxMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL2I1My9i NTNfc3BpLmMKKysrIGIvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmMKQEAgLTMxNCw3ICsz MTQsNyBAQCBzdGF0aWMgaW50IGI1M19zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK IAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBiNTNfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rl dmljZSAqc3BpKQorc3RhdGljIHZvaWQgYjUzX3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKIHsKIAlzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7 CiAKQEAgLTMyMiw4ICszMjIsNiBAQCBzdGF0aWMgaW50IGI1M19zcGlfcmVtb3ZlKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCiAJCWI1M19zd2l0Y2hfcmVtb3ZlKGRldik7CiAKIAlzcGlfc2V0X2Ry dmRhdGEoc3BpLCBOVUxMKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBiNTNfc3Bp X3NodXRkb3duKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9kc2EvbWljcm9jaGlwL2tzejg3OTVfc3BpLmMgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlw L2tzejg3OTVfc3BpLmMKaW5kZXggODY2NzY3YjcwZDY1Li42NzM1ODlkYzg4YWIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODc5NV9zcGkuYworKysgYi9kcml2ZXJz L25ldC9kc2EvbWljcm9jaGlwL2tzejg3OTVfc3BpLmMKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGlj IGludCBrc3o4Nzk1X3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiAw OwogfQogCi1zdGF0aWMgaW50IGtzejg3OTVfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQorc3RhdGljIHZvaWQga3N6ODc5NV9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCiB7CiAJc3RydWN0IGtzel9kZXZpY2UgKmRldiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwog CkBAIC05NSw4ICs5NSw2IEBAIHN0YXRpYyBpbnQga3N6ODc5NV9zcGlfcmVtb3ZlKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCiAJCWtzel9zd2l0Y2hfcmVtb3ZlKGRldik7CiAKIAlzcGlfc2V0X2Ry dmRhdGEoc3BpLCBOVUxMKTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBrc3o4Nzk1 X3NwaV9zaHV0ZG93bihzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X3NwaS5jIGIvZHJpdmVycy9uZXQvZHNhL21pY3Jv Y2hpcC9rc3o5NDc3X3NwaS5jCmluZGV4IGUzY2IwZTZjOWY2Zi4uOTQwYmI5NjY1ZjE1IDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0Nzdfc3BpLmMKKysrIGIvZHJp dmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X3NwaS5jCkBAIC02NSw3ICs2NSw3IEBAIHN0 YXRpYyBpbnQga3N6OTQ3N19zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1 cm4gMDsKIH0KIAotc3RhdGljIGludCBrc3o5NDc3X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZp Y2UgKnNwaSkKK3N0YXRpYyB2b2lkIGtzejk0Nzdfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rldmlj ZSAqc3BpKQogewogCXN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBzcGlfZ2V0X2RydmRhdGEoc3Bp KTsKIApAQCAtNzMsOCArNzMsNiBAQCBzdGF0aWMgaW50IGtzejk0Nzdfc3BpX3JlbW92ZShzdHJ1 Y3Qgc3BpX2RldmljZSAqc3BpKQogCQlrc3pfc3dpdGNoX3JlbW92ZShkZXYpOwogCiAJc3BpX3Nl dF9kcnZkYXRhKHNwaSwgTlVMTCk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQga3N6 OTQ3N19zcGlfc2h1dGRvd24oc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3Nq YTExMDUvc2phMTEwNV9tYWluLmMKaW5kZXggYjUxMzcxM2JlNjEwLi5jMmE0N2M2NjkzYjggMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jCisrKyBiL2Ry aXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jCkBAIC0zMzQ2LDE4ICszMzQ2LDE2 IEBAIHN0YXRpYyBpbnQgc2phMTEwNV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJl dHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKHByaXYtPmRzKTsKIH0KIAotc3RhdGljIGludCBzamEx MTA1X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgc2phMTEwNV9y ZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3Qgc2phMTEwNV9wcml2YXRl ICpwcml2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAlpZiAoIXByaXYpCi0JCXJldHVybiAw OworCQlyZXR1cm47CiAKIAlkc2FfdW5yZWdpc3Rlcl9zd2l0Y2gocHJpdi0+ZHMpOwogCiAJc3Bp X3NldF9kcnZkYXRhKHNwaSwgTlVMTCk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQg c2phMTEwNV9zaHV0ZG93bihzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1zcGkuYyBiL2RyaXZlcnMvbmV0L2RzYS92aXRl c3NlLXZzYzczeHgtc3BpLmMKaW5kZXggNjQ1Mzk4OTAxZTA1Li4zMTEwODk1MzU4ZDggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS92aXRlc3NlLXZzYzczeHgtc3BpLmMKKysrIGIvZHJpdmVy cy9uZXQvZHNhL3ZpdGVzc2UtdnNjNzN4eC1zcGkuYwpAQCAtMTU5LDE4ICsxNTksMTYgQEAgc3Rh dGljIGludCB2c2M3M3h4X3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVy biB2c2M3M3h4X3Byb2JlKCZ2c2Nfc3BpLT52c2MpOwogfQogCi1zdGF0aWMgaW50IHZzYzczeHhf c3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgdnNjNzN4eF9z cGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IHZzYzczeHhfc3Bp ICp2c2Nfc3BpID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAlpZiAoIXZzY19zcGkpCi0JCXJl dHVybiAwOworCQlyZXR1cm47CiAKIAl2c2M3M3h4X3JlbW92ZSgmdnNjX3NwaS0+dnNjKTsKIAog CXNwaV9zZXRfZHJ2ZGF0YShzcGksIE5VTEwpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2 b2lkIHZzYzczeHhfc3BpX3NodXRkb3duKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYyBiL2RyaXZlcnMv bmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jCmluZGV4IGU3YTlmOTg2MzI1OC4uYmY3 MDQ4MWJiMWNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZj X21haW4uYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYwpA QCAtMTEwMiw3ICsxMTAyLDcgQEAgc3RhdGljIGludCBheDg4Nzk2Y19wcm9iZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgYXg4ODc5NmNfcmVt b3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBheDg4Nzk2Y19yZW1vdmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9s b2NhbCA9IGRldl9nZXRfZHJ2ZGF0YSgmc3BpLT5kZXYpOwogCXN0cnVjdCBuZXRfZGV2aWNlICpu ZGV2ID0gYXhfbG9jYWwtPm5kZXY7CkBAIC0xMTEyLDggKzExMTIsNiBAQCBzdGF0aWMgaW50IGF4 ODg3OTZjX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCW5ldGlmX2luZm8oYXhfbG9j YWwsIHByb2JlLCBuZGV2LCAicmVtb3ZpbmcgbmV0d29yayBkZXZpY2UgJXMgJXNcbiIsCiAJCSAg IGRldl9kcml2ZXJfc3RyaW5nKCZzcGktPmRldiksCiAJCSAgIGRldl9uYW1lKCZzcGktPmRldikp OwotCi0JcmV0dXJuIDA7CiB9CiAKICNpZmRlZiBDT05GSUdfT0YKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L2V0aGVybmV0L21pY3JlbC9rczg4NTFfc3BpLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9taWNyZWwva3M4ODUxX3NwaS5jCmluZGV4IDAzMDNlNzI3ZTk5Zi4uZDE2N2Q5M2U0YzEyIDEw MDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX3NwaS5jCisrKyBi L2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JlbC9rczg4NTFfc3BpLmMKQEAgLTQ1MiwxMSArNDUy LDkgQEAgc3RhdGljIGludCBrczg4NTFfcHJvYmVfc3BpKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkp CiAJcmV0dXJuIGtzODg1MV9wcm9iZV9jb21tb24obmV0ZGV2LCBkZXYsIG1zZ19lbmFibGUpOwog fQogCi1zdGF0aWMgaW50IGtzODg1MV9yZW1vdmVfc3BpKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkp CitzdGF0aWMgdm9pZCBrczg4NTFfcmVtb3ZlX3NwaShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog ewogCWtzODg1MV9yZW1vdmVfY29tbW9uKCZzcGktPmRldik7Ci0KLQlyZXR1cm4gMDsKIH0KIAog c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQga3M4ODUxX21hdGNoX3RhYmxlW10gPSB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvZW5jMjhqNjAuYyBi L2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9lbmMyOGo2MC5jCmluZGV4IDYzNGFjNzY0 OWM0My4uZGI1YTNlZGI0YzNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNy b2NoaXAvZW5jMjhqNjAuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvZW5j MjhqNjAuYwpAQCAtMTYxMiwxNSArMTYxMiwxMyBAQCBzdGF0aWMgaW50IGVuYzI4ajYwX3Byb2Jl KHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBl bmMyOGo2MF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIGVuYzI4 ajYwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBlbmMyOGo2MF9u ZXQgKnByaXYgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCXVucmVnaXN0ZXJfbmV0ZGV2KHBy aXYtPm5ldGRldik7CiAJZnJlZV9pcnEoc3BpLT5pcnEsIHByaXYpOwogCWZyZWVfbmV0ZGV2KHBy aXYtPm5ldGRldik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgZW5jMjhqNjBfZHRfaWRzW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9l dGhlcm5ldC9taWNyb2NoaXAvZW5jeDI0ajYwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWlj cm9jaGlwL2VuY3gyNGo2MDAuYwppbmRleCBiOTBlZmM4MGZiNTkuLmRjMTg0MGNiNWIxMCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2VuY3gyNGo2MDAuYworKysg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvZW5jeDI0ajYwMC5jCkBAIC0xMDkzLDcg KzEwOTMsNyBAQCBzdGF0aWMgaW50IGVuY3gyNGo2MDBfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBlbmN4MjRqNjAwX3NwaV9y ZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIGVuY3gyNGo2MDBfc3Bp X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBlbmN4MjRqNjAwX3By aXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoJnNwaS0+ZGV2KTsKIApAQCAtMTEwMSw4ICsxMTAx LDYgQEAgc3RhdGljIGludCBlbmN4MjRqNjAwX3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKIAlrdGhyZWFkX3N0b3AocHJpdi0+a3dvcmtlcl90YXNrKTsKIAogCWZyZWVfbmV0ZGV2 KHByaXYtPm5kZXYpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3Bp X2RldmljZV9pZCBlbmN4MjRqNjAwX3NwaV9pZF90YWJsZVtdID0gewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcWNhX3NwaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJu ZXQvcXVhbGNvbW0vcWNhX3NwaS5jCmluZGV4IDk1NWNjZTY0NDM5Mi4uM2M1NDk0YWZkM2MwIDEw MDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9xY2Ffc3BpLmMKKysrIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcWNhX3NwaS5jCkBAIC0xMDAxLDcgKzEwMDEs NyBAQCBxY2Ffc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIDA7CiB9 CiAKLXN0YXRpYyBpbnQKK3N0YXRpYyB2b2lkCiBxY2Ffc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rl dmljZSAqc3BpKQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpxY2FzcGlfZGV2cyA9IHNwaV9nZXRf ZHJ2ZGF0YShzcGkpOwpAQCAtMTAxMSw4ICsxMDExLDYgQEAgcWNhX3NwaV9yZW1vdmUoc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkKIAogCXVucmVnaXN0ZXJfbmV0ZGV2KHFjYXNwaV9kZXZzKTsKIAlm cmVlX25ldGRldihxY2FzcGlfZGV2cyk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0 IHN0cnVjdCBzcGlfZGV2aWNlX2lkIHFjYV9zcGlfaWRbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L2V0aGVybmV0L3ZlcnRleGNvbS9tc2UxMDJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC92ZXJ0ZXhjb20vbXNlMTAyeC5jCmluZGV4IDg5YTMxNzgzZmJiNC4uMjU3MzliMTgyYWM3IDEw MDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC92ZXJ0ZXhjb20vbXNlMTAyeC5jCisrKyBi L2RyaXZlcnMvbmV0L2V0aGVybmV0L3ZlcnRleGNvbS9tc2UxMDJ4LmMKQEAgLTczMSw3ICs3MzEs NyBAQCBzdGF0aWMgaW50IG1zZTEwMnhfcHJvYmVfc3BpKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkp CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgbXNlMTAyeF9yZW1vdmVfc3BpKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBtc2UxMDJ4X3JlbW92ZV9zcGkoc3RydWN0IHNw aV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgbXNlMTAyeF9uZXQgKm1zZSA9IGRldl9nZXRfZHJ2 ZGF0YSgmc3BpLT5kZXYpOwogCXN0cnVjdCBtc2UxMDJ4X25ldF9zcGkgKm1zZXMgPSB0b19tc2Ux MDJ4X3NwaShtc2UpOwpAQCAtNzQxLDggKzc0MSw2IEBAIHN0YXRpYyBpbnQgbXNlMTAyeF9yZW1v dmVfc3BpKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAKIAltc2UxMDJ4X3JlbW92ZV9kZXZpY2Vf ZGVidWdmcyhtc2VzKTsKIAl1bnJlZ2lzdGVyX25ldGRldihtc2UtPm5kZXYpOwotCi0JcmV0dXJu IDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1zZTEwMnhfbWF0Y2hf dGFibGVbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEw MC1zcGkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYwppbmRleCA3 Nzc5YTM2ZGEzYzguLjdjNTI3OTYyNzNhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvd2l6bmV0L3c1MTAwLXNwaS5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93 NTEwMC1zcGkuYwpAQCAtNDYxLDExICs0NjEsOSBAQCBzdGF0aWMgaW50IHc1MTAwX3NwaV9wcm9i ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiB3NTEwMF9wcm9iZSgmc3BpLT5kZXYs IG9wcywgcHJpdl9zaXplLCBtYWMsIHNwaS0+aXJxLCAtRUlOVkFMKTsKIH0KIAotc3RhdGljIGlu dCB3NTEwMF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCB3 NTEwMF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJdzUxMDBfcmVtb3Zl KCZzcGktPmRldik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlf ZGV2aWNlX2lkIHc1MTAwX3NwaV9pZHNbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ll ZWU4MDIxNTQvYWRmNzI0Mi5jIGIvZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9hZGY3MjQyLmMKaW5k ZXggN2RiOWNiZDBmNWRlLi42YWZkZjE2MjI5NDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2ll ZWU4MDIxNTQvYWRmNzI0Mi5jCisrKyBiL2RyaXZlcnMvbmV0L2llZWU4MDIxNTQvYWRmNzI0Mi5j CkBAIC0xMzA0LDcgKzEzMDQsNyBAQCBzdGF0aWMgaW50IGFkZjcyNDJfcHJvYmUoc3RydWN0IHNw aV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IGFkZjcyNDJfcmVt b3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBhZGY3MjQyX3JlbW92ZShz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBhZGY3MjQyX2xvY2FsICpscCA9IHNw aV9nZXRfZHJ2ZGF0YShzcGkpOwogCkBAIC0xMzE2LDggKzEzMTYsNiBAQCBzdGF0aWMgaW50IGFk ZjcyNDJfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJaWVlZTgwMjE1NF91bnJlZ2lz dGVyX2h3KGxwLT5odyk7CiAJbXV0ZXhfZGVzdHJveSgmbHAtPmJtdXgpOwogCWllZWU4MDIxNTRf ZnJlZV9odyhscC0+aHcpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkIGFkZjcyNDJfb2ZfbWF0Y2hbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L2llZWU4MDIxNTQvYXQ4NnJmMjMwLmMgYi9kcml2ZXJzL25ldC9pZWVlODAyMTU0L2F0ODZy ZjIzMC5jCmluZGV4IDdkNjdmNDEzODdmNS4uYTQ3MzQzMjNkYzI5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL25ldC9pZWVlODAyMTU0L2F0ODZyZjIzMC5jCisrKyBiL2RyaXZlcnMvbmV0L2llZWU4MDIx NTQvYXQ4NnJmMjMwLmMKQEAgLTE3NTksNyArMTc1OSw3IEBAIHN0YXRpYyBpbnQgYXQ4NnJmMjMw X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJjOwogfQogCi1zdGF0aWMg aW50IGF0ODZyZjIzMF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lk IGF0ODZyZjIzMF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgYXQ4 NnJmMjMwX2xvY2FsICpscCA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCkBAIC0xNzY5LDggKzE3 NjksNiBAQCBzdGF0aWMgaW50IGF0ODZyZjIzMF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKIAlpZWVlODAyMTU0X2ZyZWVfaHcobHAtPmh3KTsKIAlhdDg2cmYyMzBfZGVidWdmc19yZW1v dmUoKTsKIAlkZXZfZGJnKCZzcGktPmRldiwgInVucmVnaXN0ZXJlZCBhdDg2cmYyMzBcbiIpOwot Ci0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGF0ODZy ZjIzMF9vZl9tYXRjaFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9j YTgyMTAuYyBiL2RyaXZlcnMvbmV0L2llZWU4MDIxNTQvY2E4MjEwLmMKaW5kZXggZWNlNmZmNjA0 OWY2Li5iNDk5YmJlNGQ0OGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2llZWU4MDIxNTQvY2E4 MjEwLmMKKysrIGIvZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9jYTgyMTAuYwpAQCAtODMxLDcgKzgz MSw3IEBAIHN0YXRpYyB2b2lkIGNhODIxMF9yeF9kb25lKHN0cnVjdCBjYXNfY29udHJvbCAqY2Fz X2N0bCkKIGZpbmlzaDo7CiB9CiAKLXN0YXRpYyBpbnQgY2E4MjEwX3JlbW92ZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpX2RldmljZSk7CitzdGF0aWMgdm9pZCBjYTgyMTBfcmVtb3ZlKHN0cnVjdCBz cGlfZGV2aWNlICpzcGlfZGV2aWNlKTsKIAogLyoqCiAgKiBjYTgyMTBfc3BpX3RyYW5zZmVyX2Nv bXBsZXRlKCkgLSBDYWxsZWQgd2hlbiBhIHNpbmdsZSBzcGkgdHJhbnNmZXIgaGFzCkBAIC0zMDQ4 LDcgKzMwNDgsNyBAQCBzdGF0aWMgdm9pZCBjYTgyMTBfdGVzdF9pbnRlcmZhY2VfY2xlYXIoc3Ry dWN0IGNhODIxMF9wcml2ICpwcml2KQogICoKICAqIFJldHVybjogMCBvciBsaW51eCBlcnJvciBj b2RlCiAgKi8KLXN0YXRpYyBpbnQgY2E4MjEwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3Bp X2RldmljZSkKK3N0YXRpYyB2b2lkIGNhODIxMF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aV9kZXZpY2UpCiB7CiAJc3RydWN0IGNhODIxMF9wcml2ICpwcml2OwogCXN0cnVjdCBjYTgyMTBf cGxhdGZvcm1fZGF0YSAqcGRhdGE7CkBAIC0zMDg4LDggKzMwODgsNiBAQCBzdGF0aWMgaW50IGNh ODIxMF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaV9kZXZpY2UpCiAJCWlmIChJU19FTkFC TEVEKENPTkZJR19JRUVFODAyMTU0X0NBODIxMF9ERUJVR0ZTKSkKIAkJCWNhODIxMF90ZXN0X2lu dGVyZmFjZV9jbGVhcihwcml2KTsKIAl9Ci0KLQlyZXR1cm4gMDsKIH0KIAogLyoqCmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC9pZWVlODAyMTU0L2NjMjUyMC5jIGIvZHJpdmVycy9uZXQvaWVlZTgw MjE1NC9jYzI1MjAuYwppbmRleCA4OWMwNDZiMjA0ZTAuLjFlMWY0MGY2MjhhMCAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9jYzI1MjAuYworKysgYi9kcml2ZXJzL25ldC9pZWVl ODAyMTU0L2NjMjUyMC5jCkBAIC0xMjEzLDcgKzEyMTMsNyBAQCBzdGF0aWMgaW50IGNjMjUyMF9w cm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBp bnQgY2MyNTIwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgY2My NTIwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBjYzI1MjBfcHJp dmF0ZSAqcHJpdiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCkBAIC0xMjIyLDggKzEyMjIsNiBA QCBzdGF0aWMgaW50IGNjMjUyMF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAogCWll ZWU4MDIxNTRfdW5yZWdpc3Rlcl9odyhwcml2LT5odyk7CiAJaWVlZTgwMjE1NF9mcmVlX2h3KHBy aXYtPmh3KTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZp Y2VfaWQgY2MyNTIwX2lkc1tdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaWVlZTgwMjE1 NC9tY3IyMGEuYyBiL2RyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWNyMjBhLmMKaW5kZXggOGRjMDRl MjU5MGIxLi5hM2FmNTJhOGU2ZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2llZWU4MDIxNTQv bWNyMjBhLmMKKysrIGIvZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tY3IyMGEuYwpAQCAtMTMzNSw3 ICsxMzM1LDcgQEAgbWNyMjBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJu IHJldDsKIH0KIAotc3RhdGljIGludCBtY3IyMGFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCitzdGF0aWMgdm9pZCBtY3IyMGFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7 CiAJc3RydWN0IG1jcjIwYV9sb2NhbCAqbHAgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIApAQCAt MTM0Myw4ICsxMzQzLDYgQEAgc3RhdGljIGludCBtY3IyMGFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpCiAKIAlpZWVlODAyMTU0X3VucmVnaXN0ZXJfaHcobHAtPmh3KTsKIAlpZWVlODAy MTU0X2ZyZWVfaHcobHAtPmh3KTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IG9mX2RldmljZV9pZCBtY3IyMGFfb2ZfbWF0Y2hbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L2llZWU4MDIxNTQvbXJmMjRqNDAuYyBiL2RyaXZlcnMvbmV0L2llZWU4MDIxNTQvbXJm MjRqNDAuYwppbmRleCBmZjgzZTAwYjc3YWYuLmVlNGNmYmYyYzVjYyAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvaWVlZTgwMjE1NC9tcmYyNGo0MC5jCisrKyBiL2RyaXZlcnMvbmV0L2llZWU4MDIx NTQvbXJmMjRqNDAuYwpAQCAtMTM1Niw3ICsxMzU2LDcgQEAgc3RhdGljIGludCBtcmYyNGo0MF9w cm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBp bnQgbXJmMjRqNDBfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBt cmYyNGo0MF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgbXJmMjRq NDAgKmRldnJlYyA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCkBAIC0xMzY2LDggKzEzNjYsNiBA QCBzdGF0aWMgaW50IG1yZjI0ajQwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCWll ZWU4MDIxNTRfZnJlZV9odyhkZXZyZWMtPmh3KTsKIAkvKiBUT0RPOiBXaWxsIGllZWU4MDIxNTRf ZnJlZV9kZXZpY2UoKSB3YWl0IHVudGlsIC0+eG1pdCgpIGlzCiAJICogY29tcGxldGU/ICovCi0K LQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXJmMjRq NDBfb2ZfbWF0Y2hbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9zcGlfa3M4OTk1 LmMgYi9kcml2ZXJzL25ldC9waHkvc3BpX2tzODk5NS5jCmluZGV4IDhiNTQ0NWE3MjRjZS4uZmYz N2Y4YmE2NzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvc3BpX2tzODk5NS5jCisrKyBi L2RyaXZlcnMvbmV0L3BoeS9zcGlfa3M4OTk1LmMKQEAgLTUxNyw3ICs1MTcsNyBAQCBzdGF0aWMg aW50IGtzODk5NV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiAwOwogfQog Ci1zdGF0aWMgaW50IGtzODk5NV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRp YyB2b2lkIGtzODk5NV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3Qg a3M4OTk1X3N3aXRjaCAqa3MgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIApAQCAtNTI2LDggKzUy Niw2IEBAIHN0YXRpYyBpbnQga3M4OTk1X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog CS8qIGFzc2VydCByZXNldCAqLwogCWlmIChrcy0+cGRhdGEgJiYgZ3Bpb19pc192YWxpZChrcy0+ cGRhdGEtPnJlc2V0X2dwaW8pKQogCQlncGlvZF9zZXRfdmFsdWUoZ3Bpb190b19kZXNjKGtzLT5w ZGF0YS0+cmVzZXRfZ3BpbyksIDEpOwotCi0JcmV0dXJuIDA7CiB9CiAKIC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL3NsaWNfZHMyNjUyMi5jIGIvZHJp dmVycy9uZXQvd2FuL3NsaWNfZHMyNjUyMi5jCmluZGV4IDhlM2IxYzcxN2MxMC4uNjA2MzU1MmNl YTliIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vc2xpY19kczI2NTIyLmMKKysrIGIvZHJp dmVycy9uZXQvd2FuL3NsaWNfZHMyNjUyMi5jCkBAIC0xOTQsMTAgKzE5NCw5IEBAIHN0YXRpYyBp bnQgc2xpY19kczI2NTIyX2luaXRfY29uZmlndXJlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJ cmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgc2xpY19kczI2NTIyX3JlbW92ZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgc2xpY19kczI2NTIyX3JlbW92ZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQogewogCXByX2luZm8oIkRTMjY1MjIgbW9kdWxlIHVuaW5zdGFsbGVkXG4i KTsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBzbGljX2RzMjY1MjJfcHJvYmUoc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVy c2lsL3A1NC9wNTRzcGkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRz cGkuYwppbmRleCBhYjBmZTg1NjU4NTEuLmY5OWI3YmE2OWZjMyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHNwaS5jCisrKyBiL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYwpAQCAtNjY5LDcgKzY2OSw3IEBAIHN0YXRpYyBp bnQgcDU0c3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsKIH0K IAotc3RhdGljIGludCBwNTRzcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0 aWMgdm9pZCBwNTRzcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0 IHA1NHNfcHJpdiAqcHJpdiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCkBAIC02ODQsOCArNjg0 LDYgQEAgc3RhdGljIGludCBwNTRzcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJ bXV0ZXhfZGVzdHJveSgmcHJpdi0+bXV0ZXgpOwogCiAJcDU0X2ZyZWVfY29tbW9uKHByaXYtPmh3 KTsKLQotCXJldHVybiAwOwogfQogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNz L21hcnZlbGwvbGliZXJ0YXMvaWZfc3BpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxs L2xpYmVydGFzL2lmX3NwaS5jCmluZGV4IGNkOWY4ZWNmMTcxZi4uZmYxYzdlYzhjNDUwIDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NwaS5jCisr KyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvaWZfc3BpLmMKQEAgLTEx OTUsNyArMTE5NSw3IEBAIHN0YXRpYyBpbnQgaWZfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNl ICpzcGkpCiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGludCBsaWJlcnRhc19zcGlfcmVtb3Zl KHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBsaWJlcnRhc19zcGlfcmVtb3Zl KHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IGlmX3NwaV9jYXJkICpjYXJkID0g c3BpX2dldF9kcnZkYXRhKHNwaSk7CiAJc3RydWN0IGxic19wcml2YXRlICpwcml2ID0gY2FyZC0+ cHJpdjsKQEAgLTEyMTIsOCArMTIxMiw2IEBAIHN0YXRpYyBpbnQgbGliZXJ0YXNfc3BpX3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCWlmIChjYXJkLT5wZGF0YS0+dGVhcmRvd24pCiAJ CWNhcmQtPnBkYXRhLT50ZWFyZG93bihzcGkpOwogCWZyZWVfaWZfc3BpX2NhcmQoY2FyZCk7Ci0K LQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBpZl9zcGlfc3VzcGVuZChzdHJ1Y3QgZGV2aWNl ICpkZXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEw MDAvc3BpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMK aW5kZXggMmMyZWQ0YjA5ZWZkLi5kMmRiNTIyODkzOTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYworKysgYi9kcml2ZXJzL25ldC93aXJl bGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMg aW50IHdpbGNfYnVzX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsK IH0KIAotc3RhdGljIGludCB3aWxjX2J1c19yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK K3N0YXRpYyB2b2lkIHdpbGNfYnVzX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewog CXN0cnVjdCB3aWxjICp3aWxjID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAJc3RydWN0IHdpbGNf c3BpICpzcGlfcHJpdiA9IHdpbGMtPmJ1c19kYXRhOwpAQCAtMjQ4LDggKzI0OCw2IEBAIHN0YXRp YyBpbnQgd2lsY19idXNfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJY2xrX2Rpc2Fi bGVfdW5wcmVwYXJlKHdpbGMtPnJ0Y19jbGspOwogCXdpbGNfbmV0ZGV2X2NsZWFudXAod2lsYyk7 CiAJa2ZyZWUoc3BpX3ByaXYpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIHdpbGNfb2ZfbWF0Y2hbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9jdzEyMDBfc3BpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVz cy9zdC9jdzEyMDAvY3cxMjAwX3NwaS5jCmluZGV4IDI3MWVkMmNlMmQ3Zi4uZmUwZDIyMGRhNDRk IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9zdC9jdzEyMDAvY3cxMjAwX3NwaS5j CisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9jdzEyMDBfc3BpLmMKQEAgLTQy Myw3ICs0MjMsNyBAQCBzdGF0aWMgaW50IGN3MTIwMF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZp Y2UgKmZ1bmMpCiB9CiAKIC8qIERpc2Nvbm5lY3QgRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IFNQ SSBzdGFjayB3aGVuIGRldmljZSBpcyBkaXNjb25uZWN0ZWQgKi8KLXN0YXRpYyBpbnQgY3cxMjAw X3NwaV9kaXNjb25uZWN0KHN0cnVjdCBzcGlfZGV2aWNlICpmdW5jKQorc3RhdGljIHZvaWQgY3cx MjAwX3NwaV9kaXNjb25uZWN0KHN0cnVjdCBzcGlfZGV2aWNlICpmdW5jKQogewogCXN0cnVjdCBo d2J1c19wcml2ICpzZWxmID0gc3BpX2dldF9kcnZkYXRhKGZ1bmMpOwogCkBAIC00MzUsOCArNDM1 LDYgQEAgc3RhdGljIGludCBjdzEyMDBfc3BpX2Rpc2Nvbm5lY3Qoc3RydWN0IHNwaV9kZXZpY2Ug KmZ1bmMpCiAJCX0KIAl9CiAJY3cxMjAwX3NwaV9vZmYoZGV2X2dldF9wbGF0ZGF0YSgmZnVuYy0+ ZGV2KSk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBfX21heWJlX3VudXNlZCBjdzEy MDBfc3BpX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvdGkvd2wxMjUxL3NwaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2wx MjUxL3NwaS5jCmluZGV4IDViODk0YmQ2MjM3ZS4uOWRmMzg3MjZlOGIwIDEwMDY0NAotLS0gYS9k cml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvc3BpLmMKKysrIGIvZHJpdmVycy9uZXQvd2ly ZWxlc3MvdGkvd2wxMjUxL3NwaS5jCkBAIC0zMjcsMTQgKzMyNywxMiBAQCBzdGF0aWMgaW50IHds MTI1MV9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gcmV0OwogfQog Ci1zdGF0aWMgaW50IHdsMTI1MV9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitz dGF0aWMgdm9pZCB3bDEyNTFfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewog CXN0cnVjdCB3bDEyNTEgKndsID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAl3bDEyNTFfZnJl ZV9odyh3bCk7CiAJcmVndWxhdG9yX2Rpc2FibGUod2wtPnZpbyk7Ci0KLQlyZXR1cm4gMDsKIH0K IAogc3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHdsMTI1MV9zcGlfZHJpdmVyID0gewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3NwaS5jIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvdGkvd2xjb3JlL3NwaS5jCmluZGV4IDM1NGE3ZTFjMzMxNS4uN2VhZTFlYzJlYjJi IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvc3BpLmMKKysrIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3NwaS5jCkBAIC01NDYsMTMgKzU0NiwxMSBA QCBzdGF0aWMgaW50IHdsMTI3MV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVy biByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgd2wxMjcxX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQorc3RhdGljIHZvaWQgd2wxMjcxX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog ewogCXN0cnVjdCB3bDEyeHhfc3BpX2dsdWUgKmdsdWUgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsK IAogCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGdsdWUtPmNvcmUpOwotCi0JcmV0dXJuIDA7 CiB9CiAKIHN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciB3bDEyNzFfc3BpX2RyaXZlciA9IHsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmZjL25mY21ydmwvc3BpLmMgYi9kcml2ZXJzL25mYy9uZmNtcnZs L3NwaS5jCmluZGV4IDViODMzYTlhODNmOC4uYTM4ZTJmY2RmZDM5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL25mYy9uZmNtcnZsL3NwaS5jCisrKyBiL2RyaXZlcnMvbmZjL25mY21ydmwvc3BpLmMKQEAg LTE3NCwxMiArMTc0LDExIEBAIHN0YXRpYyBpbnQgbmZjbXJ2bF9zcGlfcHJvYmUoc3RydWN0IHNw aV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBuZmNtcnZsX3NwaV9y ZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIG5mY21ydmxfc3BpX3Jl bW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBuZmNtcnZsX3NwaV9kcnZf ZGF0YSAqZHJ2X2RhdGEgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCW5mY21ydmxfbmNpX3Vu cmVnaXN0ZXJfZGV2KGRydl9kYXRhLT5wcml2KTsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2ZfbmZjbXJ2bF9zcGlfbWF0Y2hbXSBfX21heWJlX3Vu dXNlZCA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zcGkuYyBiL2RyaXZlcnMv bmZjL3N0LW5jaS9zcGkuYwppbmRleCA0ZTcyMzk5MmU3NGMuLjE2OWVhY2MwYTMyYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL3NwaS5jCisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9z cGkuYwpAQCAtMjYzLDEzICsyNjMsMTEgQEAgc3RhdGljIGludCBzdF9uY2lfc3BpX3Byb2JlKHN0 cnVjdCBzcGlfZGV2aWNlICpkZXYpCiAJcmV0dXJuIHI7CiB9CiAKLXN0YXRpYyBpbnQgc3RfbmNp X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIHN0X25jaV9z cGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IHN0X25jaV9zcGlf cGh5ICpwaHkgPSBzcGlfZ2V0X2RydmRhdGEoZGV2KTsKIAogCW5kbGNfcmVtb3ZlKHBoeS0+bmRs Yyk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBzcGlfZGV2aWNlX2lkIHN0X25j aV9zcGlfaWRfdGFibGVbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0OTVoZi9jb3Jl LmMgYi9kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jCmluZGV4IGIyM2Y0NzkzNjQ3My4uZWQ3MDRi Yjc3MjI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jCisrKyBiL2RyaXZl cnMvbmZjL3N0OTVoZi9jb3JlLmMKQEAgLTExOTgsNyArMTE5OCw3IEBAIHN0YXRpYyBpbnQgc3Q5 NWhmX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpuZmNfc3BpX2RldikKIAlyZXR1cm4gcmV0Owog fQogCi1zdGF0aWMgaW50IHN0OTVoZl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKm5mY19zcGlf ZGV2KQorc3RhdGljIHZvaWQgc3Q5NWhmX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqbmZjX3Nw aV9kZXYpCiB7CiAJaW50IHJlc3VsdCA9IDA7CiAJdW5zaWduZWQgY2hhciByZXNldF9jbWQgPSBT VDk1SEZfQ09NTUFORF9SRVNFVDsKQEAgLTEyMzYsOCArMTIzNiw2IEBAIHN0YXRpYyBpbnQgc3Q5 NWhmX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqbmZjX3NwaV9kZXYpCiAJLyogZGlzYWJsZSBy ZWd1bGF0b3IgKi8KIAlpZiAoc3Rjb250ZXh0LT5zdDk1aGZfc3VwcGx5KQogCQlyZWd1bGF0b3Jf ZGlzYWJsZShzdGNvbnRleHQtPnN0OTVoZl9zdXBwbHkpOwotCi0JcmV0dXJuIDA7CiB9CiAKIC8q IFJlZ2lzdGVyIGFzIFNQSSBwcm90b2NvbCBkcml2ZXIgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmZjL3RyZjc5NzBhLmMgYi9kcml2ZXJzL25mYy90cmY3OTcwYS5jCmluZGV4IDI5Y2E5YzMyOGRm Mi4uMjFkNjg2NjRmZTA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jCisrKyBi L2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMKQEAgLTIxNDQsNyArMjE0NCw3IEBAIHN0YXRpYyBpbnQg dHJmNzk3MGFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gcmV0OwogfQog Ci1zdGF0aWMgaW50IHRyZjc5NzBhX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3Rh dGljIHZvaWQgdHJmNzk3MGFfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3Ry dWN0IHRyZjc5NzBhICp0cmYgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIApAQCAtMjE2MCw4ICsy MTYwLDYgQEAgc3RhdGljIGludCB0cmY3OTcwYV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKIAlyZWd1bGF0b3JfZGlzYWJsZSh0cmYtPnJlZ3VsYXRvcik7CiAKIAltdXRleF9kZXN0cm95 KCZ0cmYtPmxvY2spOwotCi0JcmV0dXJuIDA7CiB9CiAKICNpZmRlZiBDT05GSUdfUE1fU0xFRVAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGxhdGZvcm0vY2hyb21lL2Nyb3NfZWNfc3BpLmMgYi9kcml2 ZXJzL3BsYXRmb3JtL2Nocm9tZS9jcm9zX2VjX3NwaS5jCmluZGV4IDcxM2M1ODY4NzcyMS4uODQ5 M2FmMGY2ODBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BsYXRmb3JtL2Nocm9tZS9jcm9zX2VjX3Nw aS5jCisrKyBiL2RyaXZlcnMvcGxhdGZvcm0vY2hyb21lL2Nyb3NfZWNfc3BpLmMKQEAgLTc4Niwx MyArNzg2LDExIEBAIHN0YXRpYyBpbnQgY3Jvc19lY19zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZp Y2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjcm9zX2VjX3NwaV9yZW1vdmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIGNyb3NfZWNfc3BpX3JlbW92ZShz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBjcm9zX2VjX2RldmljZSAqZWNfZGV2 ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAljcm9zX2VjX3VucmVnaXN0ZXIoZWNfZGV2KTsK LQotCXJldHVybiAwOwogfQogCiAjaWZkZWYgQ09ORklHX1BNX1NMRUVQCmRpZmYgLS1naXQgYS9k cml2ZXJzL3BsYXRmb3JtL29scGMvb2xwYy14bzE3NS1lYy5jIGIvZHJpdmVycy9wbGF0Zm9ybS9v bHBjL29scGMteG8xNzUtZWMuYwppbmRleCAwZDQ2NzA2YWZkMmQuLjQ4MjNiZDI4MTlmNiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9wbGF0Zm9ybS9vbHBjL29scGMteG8xNzUtZWMuYworKysgYi9kcml2 ZXJzL3BsYXRmb3JtL29scGMvb2xwYy14bzE3NS1lYy5jCkBAIC02NDgsNyArNjQ4LDcgQEAgc3Rh dGljIHN0cnVjdCBvbHBjX2VjX2RyaXZlciBvbHBjX3hvMTc1X2VjX2RyaXZlciA9IHsKIAkuZWNf Y21kID0gb2xwY194bzE3NV9lY19jbWQsCiB9OwogCi1zdGF0aWMgaW50IG9scGNfeG8xNzVfZWNf cmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBvbHBjX3hvMTc1X2Vj X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCWlmIChwbV9wb3dlcl9vZmYgPT0g b2xwY194bzE3NV9lY19wb3dlcl9vZmYpCiAJCXBtX3Bvd2VyX29mZiA9IE5VTEw7CkBAIC02NTcs OCArNjU3LDYgQEAgc3RhdGljIGludCBvbHBjX3hvMTc1X2VjX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rl dmljZSAqc3BpKQogCiAJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIob2xwY19lYyk7CiAJb2xw Y19lYyA9IE5VTEw7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBvbHBjX3hvMTc1X2Vj X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9y dGMtZHMxMzAyLmMgYi9kcml2ZXJzL3J0Yy9ydGMtZHMxMzAyLmMKaW5kZXggMmY4M2FkZWY5NjZl Li42ZDY2YWI1YThiMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnRjL3J0Yy1kczEzMDIuYworKysg Yi9kcml2ZXJzL3J0Yy9ydGMtZHMxMzAyLmMKQEAgLTE4NSwxMCArMTg1LDkgQEAgc3RhdGljIGlu dCBkczEzMDJfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAot c3RhdGljIGludCBkczEzMDJfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMg dm9pZCBkczEzMDJfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3BpX3NldF9k cnZkYXRhKHNwaSwgTlVMTCk7Ci0JcmV0dXJuIDA7CiB9CiAKICNpZmRlZiBDT05GSUdfT0YKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1kczEzMDUuYyBiL2RyaXZlcnMvcnRjL3J0Yy1kczEz MDUuYwppbmRleCA5ZWYxMDdiOTliNjUuLmVkOTM2MDQ4Njk1MyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ydGMvcnRjLWRzMTMwNS5jCisrKyBiL2RyaXZlcnMvcnRjL3J0Yy1kczEzMDUuYwpAQCAtNzIw LDcgKzcyMCw3IEBAIHN0YXRpYyBpbnQgZHMxMzA1X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgZHMxMzA1X3JlbW92ZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgZHMxMzA1X3JlbW92ZShzdHJ1Y3Qgc3BpX2Rldmlj ZSAqc3BpKQogewogCXN0cnVjdCBkczEzMDUgKmRzMTMwNSA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkp OwogCkBAIC03MzAsOCArNzMwLDYgQEAgc3RhdGljIGludCBkczEzMDVfcmVtb3ZlKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCiAJCWRldm1fZnJlZV9pcnEoJnNwaS0+ZGV2LCBzcGktPmlycSwgZHMx MzA1KTsKIAkJY2FuY2VsX3dvcmtfc3luYygmZHMxMzA1LT53b3JrKTsKIAl9Ci0KLQlyZXR1cm4g MDsKIH0KIAogc3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIGRzMTMwNV9kcml2ZXIgPSB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMtZHMxMzQzLmMgYi9kcml2ZXJzL3J0Yy9ydGMtZHMxMzQz LmMKaW5kZXggZjE0ZWQ2Yzk2NDM3Li5lZDVhNmJhODlhM2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv cnRjL3J0Yy1kczEzNDMuYworKysgYi9kcml2ZXJzL3J0Yy9ydGMtZHMxMzQzLmMKQEAgLTQzNCwx MSArNDM0LDkgQEAgc3RhdGljIGludCBkczEzNDNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBkczEzNDNfcmVtb3ZlKHN0cnVjdCBzcGlf ZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBkczEzNDNfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNl ICpzcGkpCiB7CiAJZGV2X3BtX2NsZWFyX3dha2VfaXJxKCZzcGktPmRldik7Ci0KLQlyZXR1cm4g MDsKIH0KIAogI2lmZGVmIENPTkZJR19QTV9TTEVFUApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkv c3BpLW1lbS5jIGIvZHJpdmVycy9zcGkvc3BpLW1lbS5jCmluZGV4IDM3ZjQ0NDNjZTlhMC4uZTlk ODNkNjU4NzNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9zcGktbWVtLmMKKysrIGIvZHJpdmVy cy9zcGkvc3BpLW1lbS5jCkBAIC04NTQsMTUgKzg1NCwxMyBAQCBzdGF0aWMgaW50IHNwaV9tZW1f cHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gbWVtZHJ2LT5wcm9iZShtZW0p OwogfQogCi1zdGF0aWMgaW50IHNwaV9tZW1fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkp CitzdGF0aWMgdm9pZCBzcGlfbWVtX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewog CXN0cnVjdCBzcGlfbWVtX2RyaXZlciAqbWVtZHJ2ID0gdG9fc3BpX21lbV9kcnYoc3BpLT5kZXYu ZHJpdmVyKTsKIAlzdHJ1Y3Qgc3BpX21lbSAqbWVtID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAK IAlpZiAobWVtZHJ2LT5yZW1vdmUpCi0JCXJldHVybiBtZW1kcnYtPnJlbW92ZShtZW0pOwotCi0J cmV0dXJuIDA7CisJCW1lbWRydi0+cmVtb3ZlKG1lbSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNwaV9t ZW1fc2h1dGRvd24oc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMv c3BpL3NwaS1zbGF2ZS1zeXN0ZW0tY29udHJvbC5jIGIvZHJpdmVycy9zcGkvc3BpLXNsYXZlLXN5 c3RlbS1jb250cm9sLmMKaW5kZXggMTY5ZjNkNTk1ZjYwLi5kMzdjZmU5OTVhNjMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvc3BpL3NwaS1zbGF2ZS1zeXN0ZW0tY29udHJvbC5jCisrKyBiL2RyaXZlcnMv c3BpL3NwaS1zbGF2ZS1zeXN0ZW0tY29udHJvbC5jCkBAIC0xMzIsMTMgKzEzMiwxMiBAQCBzdGF0 aWMgaW50IHNwaV9zbGF2ZV9zeXN0ZW1fY29udHJvbF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHNwaV9zbGF2ZV9zeXN0ZW1fY29udHJv bF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIHNwaV9zbGF2ZV9z eXN0ZW1fY29udHJvbF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3Qg c3BpX3NsYXZlX3N5c3RlbV9jb250cm9sX3ByaXYgKnByaXYgPSBzcGlfZ2V0X2RydmRhdGEoc3Bp KTsKIAogCXNwaV9zbGF2ZV9hYm9ydChzcGkpOwogCXdhaXRfZm9yX2NvbXBsZXRpb24oJnByaXYt PmZpbmlzaGVkKTsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHNw aV9zbGF2ZV9zeXN0ZW1fY29udHJvbF9kcml2ZXIgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Nw aS9zcGktc2xhdmUtdGltZS5jIGIvZHJpdmVycy9zcGkvc3BpLXNsYXZlLXRpbWUuYwppbmRleCBm MmUwN2EzOTJkNjguLmY1NmMxYWZiODUzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvc3BpLXNs YXZlLXRpbWUuYworKysgYi9kcml2ZXJzL3NwaS9zcGktc2xhdmUtdGltZS5jCkBAIC0xMDYsMTMg KzEwNiwxMiBAQCBzdGF0aWMgaW50IHNwaV9zbGF2ZV90aW1lX3Byb2JlKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgc3BpX3NsYXZlX3RpbWVfcmVt b3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBzcGlfc2xhdmVfdGltZV9y ZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3Qgc3BpX3NsYXZlX3RpbWVf cHJpdiAqcHJpdiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCiAJc3BpX3NsYXZlX2Fib3J0KHNw aSk7CiAJd2FpdF9mb3JfY29tcGxldGlvbigmcHJpdi0+ZmluaXNoZWQpOwotCXJldHVybiAwOwog fQogCiBzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgc3BpX3NsYXZlX3RpbWVfZHJpdmVyID0gewpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpLXRsZTYyeDAuYyBiL2RyaXZlcnMvc3BpL3NwaS10 bGU2MngwLmMKaW5kZXggZjhhZDA3MDlkMDE1Li5hNTY1MzUyZjYzODEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvc3BpL3NwaS10bGU2MngwLmMKKysrIGIvZHJpdmVycy9zcGkvc3BpLXRsZTYyeDAuYwpA QCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyBpbnQgdGxlNjJ4MF9wcm9iZShzdHJ1Y3Qgc3BpX2Rl dmljZSAqc3BpKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgdGxlNjJ4MF9yZW1vdmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIHRsZTYyeDBfcmVtb3ZlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IHRsZTYyeDBfc3RhdGUgKnN0ID0gc3BpX2dl dF9kcnZkYXRhKHNwaSk7CiAJaW50IHB0cjsKQEAgLTI5OCw3ICsyOTgsNiBAQCBzdGF0aWMgaW50 IHRsZTYyeDBfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAKIAlkZXZpY2VfcmVtb3Zl X2ZpbGUoJnNwaS0+ZGV2LCAmZGV2X2F0dHJfc3RhdHVzX3Nob3cpOwogCWtmcmVlKHN0KTsKLQly ZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHRsZTYyeDBfZHJpdmVyID0g ewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpLmMgYi9kcml2ZXJzL3NwaS9zcGkuYwppbmRl eCA0NTk5YjEyMWQ3NDQuLmVhZDlhMTMyZGNiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvc3Bp LmMKKysrIGIvZHJpdmVycy9zcGkvc3BpLmMKQEAgLTQwNCwxNSArNDA0LDggQEAgc3RhdGljIHZv aWQgc3BpX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJY29uc3Qgc3RydWN0IHNwaV9k cml2ZXIJCSpzZHJ2ID0gdG9fc3BpX2RyaXZlcihkZXYtPmRyaXZlcik7CiAKLQlpZiAoc2Rydi0+ cmVtb3ZlKSB7Ci0JCWludCByZXQ7Ci0KLQkJcmV0ID0gc2Rydi0+cmVtb3ZlKHRvX3NwaV9kZXZp Y2UoZGV2KSk7Ci0JCWlmIChyZXQpCi0JCQlkZXZfd2FybihkZXYsCi0JCQkJICJGYWlsZWQgdG8g dW5iaW5kIGRyaXZlciAoJXBlKSwgaWdub3JpbmdcbiIsCi0JCQkJIEVSUl9QVFIocmV0KSk7Ci0J fQorCWlmIChzZHJ2LT5yZW1vdmUpCisJCXNkcnYtPnJlbW92ZSh0b19zcGlfZGV2aWNlKGRldikp OwogCiAJZGV2X3BtX2RvbWFpbl9kZXRhY2goZGV2LCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvc3BpL3NwaWRldi5jIGIvZHJpdmVycy9zcGkvc3BpZGV2LmMKaW5kZXggYTVjY2VjYThi ODJiLi45NDY4Zjc0MzA4YmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL3NwaWRldi5jCisrKyBi L2RyaXZlcnMvc3BpL3NwaWRldi5jCkBAIC04MDMsNyArODAzLDcgQEAgc3RhdGljIGludCBzcGlk ZXZfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gc3RhdHVzOwogfQogCi1z dGF0aWMgaW50IHNwaWRldl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2 b2lkIHNwaWRldl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3Qgc3Bp ZGV2X2RhdGEJKnNwaWRldiA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCkBAIC04MjAsOCArODIw LDYgQEAgc3RhdGljIGludCBzcGlkZXZfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJ aWYgKHNwaWRldi0+dXNlcnMgPT0gMCkKIAkJa2ZyZWUoc3BpZGV2KTsKIAltdXRleF91bmxvY2so JmRldmljZV9saXN0X2xvY2spOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBzdHJ1Y3Qgc3Bp X2RyaXZlciBzcGlkZXZfc3BpX2RyaXZlciA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2lu Zy9mYnRmdC9mYnRmdC5oIGIvZHJpdmVycy9zdGFnaW5nL2ZidGZ0L2ZidGZ0LmgKaW5kZXggNmE3 NTQ1YjViY2QyLi5iNjhmNWY5YjdjNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9mYnRm dC9mYnRmdC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9mYnRmdC9mYnRmdC5oCkBAIC0yODYsMTIg KzI4NiwxMSBAQCBzdGF0aWMgaW50IGZidGZ0X2RyaXZlcl9wcm9iZV9zcGkoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSkJCQlcCiAJcmV0dXJuIGZidGZ0X3Byb2JlX2NvbW1vbihfZGlzcGxheSwgc3Bp LCBOVUxMKTsJCQkJXAogfQkJCQkJCQkJCQlcCiAJCQkJCQkJCQkJXAotc3RhdGljIGludCBmYnRm dF9kcml2ZXJfcmVtb3ZlX3NwaShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQkJCVwKK3N0YXRpYyB2 b2lkIGZidGZ0X2RyaXZlcl9yZW1vdmVfc3BpKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCQkJXAog ewkJCQkJCQkJCQlcCiAJc3RydWN0IGZiX2luZm8gKmluZm8gPSBzcGlfZ2V0X2RydmRhdGEoc3Bp KTsJCQkJXAogCQkJCQkJCQkJCVwKIAlmYnRmdF9yZW1vdmVfY29tbW9uKCZzcGktPmRldiwgaW5m byk7CQkJCQlcCi0JcmV0dXJuIDA7CQkJCQkJCQlcCiB9CQkJCQkJCQkJCVwKIAkJCQkJCQkJCQlc CiBzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgZmJ0ZnRfZHJpdmVyX3NwaV9kcml2ZXIgPSB7CQkJ CVwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9waTQzMy9waTQzM19pZi5jIGIvZHJpdmVy cy9zdGFnaW5nL3BpNDMzL3BpNDMzX2lmLmMKaW5kZXggNjhjMDlmYTAxNmVkLi4xZDMxYzM1ODc1 ZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9waTQzMy9waTQzM19pZi5jCisrKyBiL2Ry aXZlcnMvc3RhZ2luZy9waTQzMy9waTQzM19pZi5jCkBAIC0xMjY0LDcgKzEyNjQsNyBAQCBzdGF0 aWMgaW50IHBpNDMzX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldHZh bDsKIH0KIAotc3RhdGljIGludCBwaTQzM19yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK K3N0YXRpYyB2b2lkIHBpNDMzX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0 cnVjdCBwaTQzM19kZXZpY2UJKmRldmljZSA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCkBAIC0x Mjg0LDggKzEyODQsNiBAQCBzdGF0aWMgaW50IHBpNDMzX3JlbW92ZShzdHJ1Y3Qgc3BpX2Rldmlj ZSAqc3BpKQogCiAJa2ZyZWUoZGV2aWNlLT5yeF9idWZmZXIpOwogCWtmcmVlKGRldmljZSk7Ci0K LQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcGk0MzNf ZHRfaWRzW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2J1c19zcGkuYyBi L2RyaXZlcnMvc3RhZ2luZy93ZngvYnVzX3NwaS5jCmluZGV4IDU1ZmZjZDdjNDJlMi4uZmEwZmY2 NmE0NTdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2J1c19zcGkuYworKysgYi9k cml2ZXJzL3N0YWdpbmcvd2Z4L2J1c19zcGkuYwpAQCAtMjMyLDEyICsyMzIsMTEgQEAgc3RhdGlj IGludCB3Znhfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpmdW5jKQogCXJldHVybiB3Znhf cHJvYmUoYnVzLT5jb3JlKTsKIH0KIAotc3RhdGljIGludCB3Znhfc3BpX3JlbW92ZShzdHJ1Y3Qg c3BpX2RldmljZSAqZnVuYykKK3N0YXRpYyB2b2lkIHdmeF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlf ZGV2aWNlICpmdW5jKQogewogCXN0cnVjdCB3Znhfc3BpX3ByaXYgKmJ1cyA9IHNwaV9nZXRfZHJ2 ZGF0YShmdW5jKTsKIAogCXdmeF9yZWxlYXNlKGJ1cy0+Y29yZSk7Ci0JcmV0dXJuIDA7CiB9CiAK IC8qIEZvciBkeW5hbWljIGRyaXZlciBiaW5kaW5nLCBrZXJuZWwgZG9lcyBub3QgdXNlIE9GIHRv IG1hdGNoIGRyaXZlci4gSXQgb25seQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL21h eDMxMDAuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9tYXgzMTAwLmMKaW5kZXggM2M5MmQ0ZTAxNDg4 Li41MTZjZmYzNjI0MzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9tYXgzMTAwLmMK KysrIGIvZHJpdmVycy90dHkvc2VyaWFsL21heDMxMDAuYwpAQCAtODA1LDcgKzgwNSw3IEBAIHN0 YXRpYyBpbnQgbWF4MzEwMF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiAw OwogfQogCi1zdGF0aWMgaW50IG1heDMxMDBfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkp CitzdGF0aWMgdm9pZCBtYXgzMTAwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewog CXN0cnVjdCBtYXgzMTAwX3BvcnQgKnMgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAlpbnQgaTsK QEAgLTgyOCwxMyArODI4LDEyIEBAIHN0YXRpYyBpbnQgbWF4MzEwMF9yZW1vdmUoc3RydWN0IHNw aV9kZXZpY2UgKnNwaSkKIAlmb3IgKGkgPSAwOyBpIDwgTUFYX01BWDMxMDA7IGkrKykKIAkJaWYg KG1heDMxMDBzW2ldKSB7CiAJCQltdXRleF91bmxvY2soJm1heDMxMDBzX2xvY2spOwotCQkJcmV0 dXJuIDA7CisJCQlyZXR1cm47CiAJCX0KIAlwcl9kZWJ1ZygicmVtb3ZpbmcgbWF4MzEwMCBkcml2 ZXJcbiIpOwogCXVhcnRfdW5yZWdpc3Rlcl9kcml2ZXIoJm1heDMxMDBfdWFydF9kcml2ZXIpOwog CiAJbXV0ZXhfdW5sb2NrKCZtYXgzMTAwc19sb2NrKTsKLQlyZXR1cm4gMDsKIH0KIAogI2lmZGVm IENPTkZJR19QTV9TTEVFUApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL21heDMxMHgu YyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9tYXgzMTB4LmMKaW5kZXggZGRlMDgyNGIyZmE1Li4zMTEy YjRhMDU0NDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9tYXgzMTB4LmMKKysrIGIv ZHJpdmVycy90dHkvc2VyaWFsL21heDMxMHguYwpAQCAtMTQ4NywxMCArMTQ4Nyw5IEBAIHN0YXRp YyBpbnQgbWF4MzEweF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4g bWF4MzEweF9wcm9iZSgmc3BpLT5kZXYsIGRldnR5cGUsIHJlZ21hcCwgc3BpLT5pcnEpOwogfQog Ci1zdGF0aWMgaW50IG1heDMxMHhfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQor c3RhdGljIHZvaWQgbWF4MzEweF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7 CiAJbWF4MzEweF9yZW1vdmUoJnNwaS0+ZGV2KTsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNv bnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIG1heDMxMHhfaWRfdGFibGVbXSA9IHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9zYzE2aXM3eHguYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9z YzE2aXM3eHguYwppbmRleCA2NGU3ZTZjODE0NWYuLjI1ZDY3YjhjNGRiNyAxMDA2NDQKLS0tIGEv ZHJpdmVycy90dHkvc2VyaWFsL3NjMTZpczd4eC5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9z YzE2aXM3eHguYwpAQCAtMTQ0MCwxMSArMTQ0MCw5IEBAIHN0YXRpYyBpbnQgc2MxNmlzN3h4X3Nw aV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiBzYzE2aXM3eHhfcHJvYmUo JnNwaS0+ZGV2LCBkZXZ0eXBlLCByZWdtYXAsIHNwaS0+aXJxKTsKIH0KIAotc3RhdGljIGludCBz YzE2aXM3eHhfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQg c2MxNmlzN3h4X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzYzE2aXM3 eHhfcmVtb3ZlKCZzcGktPmRldik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0 cnVjdCBzcGlfZGV2aWNlX2lkIHNjMTZpczd4eF9zcGlfaWRfdGFibGVbXSA9IHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvbWF4MzQyMF91ZGMuYyBiL2RyaXZlcnMvdXNiL2dh ZGdldC91ZGMvbWF4MzQyMF91ZGMuYwppbmRleCBkMmEyYjIwY2MxYWQuLjdkOWJkMTYxOTBjMCAx MDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9tYXgzNDIwX3VkYy5jCisrKyBiL2Ry aXZlcnMvdXNiL2dhZGdldC91ZGMvbWF4MzQyMF91ZGMuYwpAQCAtMTI5Miw3ICsxMjkyLDcgQEAg c3RhdGljIGludCBtYXgzNDIwX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJu IGVycjsKIH0KIAotc3RhdGljIGludCBtYXgzNDIwX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQorc3RhdGljIHZvaWQgbWF4MzQyMF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkK IHsKIAlzdHJ1Y3QgbWF4MzQyMF91ZGMgKnVkYyA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0xMzA0LDggKzEzMDQsNiBAQCBzdGF0aWMgaW50IG1heDM0 MjBfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJa3RocmVhZF9zdG9wKHVkYy0+dGhy ZWFkX3Rhc2spOwogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdWRjLT5sb2NrLCBmbGFncyk7 Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWF4 MzQyMF91ZGNfb2ZfbWF0Y2hbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvbWF4 MzQyMS1oY2QuYyBiL2RyaXZlcnMvdXNiL2hvc3QvbWF4MzQyMS1oY2QuYwppbmRleCAzMGRlODVh NzA3ZmUuLjk5YTU1MjNhNzlmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9tYXgzNDIx LWhjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvbWF4MzQyMS1oY2QuYwpAQCAtMTkyNiw3ICsx OTI2LDcgQEAgbWF4MzQyMV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiBy ZXR2YWw7CiB9CiAKLXN0YXRpYyBpbnQKK3N0YXRpYyB2b2lkCiBtYXgzNDIxX3JlbW92ZShzdHJ1 Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBtYXgzNDIxX2hjZCAqbWF4MzQyMV9oY2Q7 CkBAIC0xOTQ3LDcgKzE5NDcsNiBAQCBtYXgzNDIxX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQogCWZyZWVfaXJxKHNwaS0+aXJxLCBoY2QpOwogCiAJdXNiX3B1dF9oY2QoaGNkKTsKLQly ZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWF4MzQyMV9v Zl9tYXRjaF90YWJsZVtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQv YW1zMzY5ZmcwNi5jIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYW1zMzY5ZmcwNi5jCmluZGV4 IDhhNDM2MWU5NWExMS4uNTIyZGQ4MTExMGI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2Jh Y2tsaWdodC9hbXMzNjlmZzA2LmMKKysrIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYW1zMzY5 ZmcwNi5jCkBAIC01MDYsMTIgKzUwNiwxMSBAQCBzdGF0aWMgaW50IGFtczM2OWZnMDZfcHJvYmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBhbXMz NjlmZzA2X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgYW1zMzY5 ZmcwNl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgYW1zMzY5Zmcw NiAqbGNkID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAlhbXMzNjlmZzA2X3Bvd2VyKGxjZCwg RkJfQkxBTktfUE9XRVJET1dOKTsKLQlyZXR1cm4gMDsKIH0KIAogI2lmZGVmIENPTkZJR19QTV9T TEVFUApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvY29yZ2lfbGNkLmMgYi9k cml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9jb3JnaV9sY2QuYwppbmRleCAzM2Y1ZDgwNDk1ZTYuLjBh NTcwMzNhZTMxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvY29yZ2lfbGNk LmMKKysrIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvY29yZ2lfbGNkLmMKQEAgLTU0Miw3ICs1 NDIsNyBAQCBzdGF0aWMgaW50IGNvcmdpX2xjZF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3Bp KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNvcmdpX2xjZF9yZW1vdmUoc3RydWN0IHNw aV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIGNvcmdpX2xjZF9yZW1vdmUoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgY29yZ2lfbGNkICpsY2QgPSBzcGlfZ2V0X2RydmRhdGEo c3BpKTsKIApAQCAtNTUwLDcgKzU1MCw2IEBAIHN0YXRpYyBpbnQgY29yZ2lfbGNkX3JlbW92ZShz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCWxjZC0+YmxfZGV2LT5wcm9wcy5icmlnaHRuZXNzID0g MDsKIAliYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhsY2QtPmJsX2Rldik7CiAJY29yZ2lfbGNkX3Nl dF9wb3dlcihsY2QtPmxjZF9kZXYsIEZCX0JMQU5LX1BPV0VSRE9XTik7Ci0JcmV0dXJuIDA7CiB9 CiAKIHN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBjb3JnaV9sY2RfZHJpdmVyID0gewpkaWZmIC0t Z2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvaWxpOTIyeC5jIGIvZHJpdmVycy92aWRlby9i YWNrbGlnaHQvaWxpOTIyeC5jCmluZGV4IDMyOGFiYTljZGRhZC4uZTdiNmJkODI3OTg2IDEwMDY0 NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9pbGk5MjJ4LmMKKysrIGIvZHJpdmVycy92 aWRlby9iYWNrbGlnaHQvaWxpOTIyeC5jCkBAIC01MjYsMTAgKzUyNiw5IEBAIHN0YXRpYyBpbnQg aWxpOTIyeF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiAwOwogfQogCi1z dGF0aWMgaW50IGlsaTkyMnhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMg dm9pZCBpbGk5MjJ4X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCWlsaTkyMnhf cG93ZXJvZmYoc3BpKTsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBzcGlfZHJpdmVy IGlsaTkyMnhfZHJpdmVyID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQv bDRmMDAyNDJ0MDMuYyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2w0ZjAwMjQydDAzLmMKaW5k ZXggNDZmOTdkMWMzZDIxLi5jYzc2M2NmMTVmNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8v YmFja2xpZ2h0L2w0ZjAwMjQydDAzLmMKKysrIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbDRm MDAyNDJ0MDMuYwpAQCAtMjIzLDEyICsyMjMsMTEgQEAgc3RhdGljIGludCBsNGYwMDI0MnQwM19w cm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50 IGw0ZjAwMjQydDAzX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQg bDRmMDAyNDJ0MDNfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IGw0 ZjAwMjQydDAzX3ByaXYgKnByaXYgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCWw0ZjAwMjQy dDAzX2xjZF9wb3dlcl9zZXQocHJpdi0+bGQsIEZCX0JMQU5LX1BPV0VSRE9XTik7Ci0JcmV0dXJu IDA7CiB9CiAKIHN0YXRpYyB2b2lkIGw0ZjAwMjQydDAzX3NodXRkb3duKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sbXM1MDFrZjAz LmMgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sbXM1MDFrZjAzLmMKaW5kZXggZjk0OWI2NmRj ZTFiLi41YzQ2ZGY4MDIyYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xt czUwMWtmMDMuYworKysgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sbXM1MDFrZjAzLmMKQEAg LTM2NCwxMiArMzY0LDExIEBAIHN0YXRpYyBpbnQgbG1zNTAxa2YwM19wcm9iZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGxtczUwMWtmMDNfcmVt b3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBsbXM1MDFrZjAzX3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBsbXM1MDFrZjAzICpsY2QgPSBz cGlfZ2V0X2RydmRhdGEoc3BpKTsKIAogCWxtczUwMWtmMDNfcG93ZXIobGNkLCBGQl9CTEFOS19Q T1dFUkRPV04pOwotCXJldHVybiAwOwogfQogCiAjaWZkZWYgQ09ORklHX1BNX1NMRUVQCmRpZmYg LS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sdHYzNTBxdi5jIGIvZHJpdmVycy92aWRl by9iYWNrbGlnaHQvbHR2MzUwcXYuYwppbmRleCA1Y2JmNjIxZTQ4YmQuLmI2ZDM3M2FmNmUzZiAx MDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbHR2MzUwcXYuYworKysgYi9kcml2 ZXJzL3ZpZGVvL2JhY2tsaWdodC9sdHYzNTBxdi5jCkBAIC0yNTUsMTIgKzI1NSwxMSBAQCBzdGF0 aWMgaW50IGx0djM1MHF2X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIDA7 CiB9CiAKLXN0YXRpYyBpbnQgbHR2MzUwcXZfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkp CitzdGF0aWMgdm9pZCBsdHYzNTBxdl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsK IAlzdHJ1Y3QgbHR2MzUwcXYgKmxjZCA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCiAJbHR2MzUw cXZfcG93ZXIobGNkLCBGQl9CTEFOS19QT1dFUkRPV04pOwotCXJldHVybiAwOwogfQogCiAjaWZk ZWYgQ09ORklHX1BNX1NMRUVQCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC90 ZG8yNG0uYyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3RkbzI0bS5jCmluZGV4IDBkZTA0NGRj YWZkNS4uZmM2ZmJhZjg1NTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC90 ZG8yNG0uYworKysgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC90ZG8yNG0uYwpAQCAtMzk3LDEy ICszOTcsMTEgQEAgc3RhdGljIGludCB0ZG8yNG1fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCB0ZG8yNG1fcmVtb3ZlKHN0cnVjdCBzcGlf ZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCB0ZG8yNG1fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNl ICpzcGkpCiB7CiAJc3RydWN0IHRkbzI0bSAqbGNkID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAK IAl0ZG8yNG1fcG93ZXIobGNkLCBGQl9CTEFOS19QT1dFUkRPV04pOwotCXJldHVybiAwOwogfQog CiAjaWZkZWYgQ09ORklHX1BNX1NMRUVQCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2ts aWdodC90b3NhX2xjZC5jIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvdG9zYV9sY2QuYwppbmRl eCAzODc2NTU0NDM0NWIuLjIzZDZjNmJmMGY1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9i YWNrbGlnaHQvdG9zYV9sY2QuYworKysgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC90b3NhX2xj ZC5jCkBAIC0yMzIsMTUgKzIzMiwxMyBAQCBzdGF0aWMgaW50IHRvc2FfbGNkX3Byb2JlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCB0b3NhX2xj ZF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIHRvc2FfbGNkX3Jl bW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCB0b3NhX2xjZF9kYXRhICpk YXRhID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAlpMmNfdW5yZWdpc3Rlcl9kZXZpY2UoZGF0 YS0+aTJjKTsKIAogCXRvc2FfbGNkX3RnX29mZihkYXRhKTsKLQotCXJldHVybiAwOwogfQogCiAj aWZkZWYgQ09ORklHX1BNX1NMRUVQCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdo dC92Z2cyNDMyYTQuYyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3ZnZzI0MzJhNC5jCmluZGV4 IDM1NjdiNDVmOWJhOS4uYmZjMTkxM2U4YjU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2Jh Y2tsaWdodC92Z2cyNDMyYTQuYworKysgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC92Z2cyNDMy YTQuYwpAQCAtMjMzLDExICsyMzMsOSBAQCBzdGF0aWMgaW50IHZnZzI0MzJhNF9wcm9iZShzdHJ1 Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHZnZzI0MzJh NF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIHZnZzI0MzJhNF9y ZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlpbGk5MzIwX3JlbW92ZShzcGlfZ2V0 X2RydmRhdGEoc3BpKSk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgdmdnMjQzMmE0 X3NodXRkb3duKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zp ZGVvL2ZiZGV2L29tYXAvbGNkX21pcGlkLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAvbGNk X21pcGlkLmMKaW5kZXggYTc1YWUwYzliMTRjLi4wM2NmZjM5ZDM5MmQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvdmlkZW8vZmJkZXYvb21hcC9sY2RfbWlwaWQuYworKysgYi9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L29tYXAvbGNkX21pcGlkLmMKQEAgLTU3MCwxNCArNTcwLDEyIEBAIHN0YXRpYyBpbnQgbWlw aWRfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyBpbnQgbWlwaWRfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGlj IHZvaWQgbWlwaWRfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVj dCBtaXBpZF9kZXZpY2UgKm1kID0gZGV2X2dldF9kcnZkYXRhKCZzcGktPmRldik7CiAKIAltaXBp ZF9kaXNhYmxlKCZtZC0+cGFuZWwpOwogCWtmcmVlKG1kKTsKLQotCXJldHVybiAwOwogfQogCiBz dGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgbWlwaWRfc3BpX2RyaXZlciA9IHsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rpc3BsYXlzL3BhbmVsLWxncGhpbGlw cy1sYjAzNXEwMi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZGlzcGxheXMv cGFuZWwtbGdwaGlsaXBzLWxiMDM1cTAyLmMKaW5kZXggMWJlYzdhNDQyMmU4Li5hYWI2NzcyMTI2 M2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rpc3BsYXlz L3BhbmVsLWxncGhpbGlwcy1sYjAzNXEwMi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvb21h cDIvb21hcGZiL2Rpc3BsYXlzL3BhbmVsLWxncGhpbGlwcy1sYjAzNXEwMi5jCkBAIC0zMTYsNyAr MzE2LDcgQEAgc3RhdGljIGludCBsYjAzNXEwMl9wYW5lbF9zcGlfcHJvYmUoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSkKIAlyZXR1cm4gcjsKIH0KIAotc3RhdGljIGludCBsYjAzNXEwMl9wYW5lbF9z cGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBsYjAzNXEwMl9w YW5lbF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IHBhbmVs X2Rydl9kYXRhICpkZGF0YSA9IHNwaV9nZXRfZHJ2ZGF0YShzcGkpOwogCXN0cnVjdCBvbWFwX2Rz c19kZXZpY2UgKmRzc2RldiA9ICZkZGF0YS0+ZHNzZGV2OwpAQCAtMzI4LDggKzMyOCw2IEBAIHN0 YXRpYyBpbnQgbGIwMzVxMDJfcGFuZWxfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3Bp KQogCWxiMDM1cTAyX2Rpc2Nvbm5lY3QoZHNzZGV2KTsKIAogCW9tYXBfZHNzX3B1dF9kZXZpY2Uo aW4pOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IGxiMDM1cTAyX29mX21hdGNoW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2 L29tYXAyL29tYXBmYi9kaXNwbGF5cy9wYW5lbC1uZWMtbmw4MDQ4aGwxMS5jIGIvZHJpdmVycy92 aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvcGFuZWwtbmVjLW5sODA0OGhsMTEuYwpp bmRleCBkZmY5ZWJiYWRmYzAuLmJlOTkxMGZmNmU2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRl by9mYmRldi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvcGFuZWwtbmVjLW5sODA0OGhsMTEuYworKysg Yi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kaXNwbGF5cy9wYW5lbC1uZWMtbmw4 MDQ4aGwxMS5jCkBAIC0zMjcsNyArMzI3LDcgQEAgc3RhdGljIGludCBuZWNfODA0OF9wcm9iZShz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiByOwogfQogCi1zdGF0aWMgaW50IG5lY184 MDQ4X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZvaWQgbmVjXzgwNDhf cmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJc3RydWN0IHBhbmVsX2Rydl9kYXRh ICpkZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YSgmc3BpLT5kZXYpOwogCXN0cnVjdCBvbWFwX2Rzc19k ZXZpY2UgKmRzc2RldiA9ICZkZGF0YS0+ZHNzZGV2OwpAQCAtMzQxLDggKzM0MSw2IEBAIHN0YXRp YyBpbnQgbmVjXzgwNDhfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJbmVjXzgwNDhf ZGlzY29ubmVjdChkc3NkZXYpOwogCiAJb21hcF9kc3NfcHV0X2RldmljZShpbik7Ci0KLQlyZXR1 cm4gMDsKIH0KIAogI2lmZGVmIENPTkZJR19QTV9TTEVFUApkaWZmIC0tZ2l0IGEvZHJpdmVycy92 aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvcGFuZWwtc29ueS1hY3g1NjVha20uYyBi L2RyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rpc3BsYXlzL3BhbmVsLXNvbnktYWN4 NTY1YWttLmMKaW5kZXggOGQ4YjVmZjdkNDNjLi5hOTA5YjUzODVjYTUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rpc3BsYXlzL3BhbmVsLXNvbnktYWN4NTY1 YWttLmMKKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvcGFu ZWwtc29ueS1hY3g1NjVha20uYwpAQCAtODU3LDcgKzg1Nyw3IEBAIHN0YXRpYyBpbnQgYWN4NTY1 YWttX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHI7CiB9CiAKLXN0YXRp YyBpbnQgYWN4NTY1YWttX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3RhdGljIHZv aWQgYWN4NTY1YWttX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXN0cnVjdCBw YW5lbF9kcnZfZGF0YSAqZGRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoJnNwaS0+ZGV2KTsKIAlzdHJ1 Y3Qgb21hcF9kc3NfZGV2aWNlICpkc3NkZXYgPSAmZGRhdGEtPmRzc2RldjsKQEAgLTg3NCw4ICs4 NzQsNiBAQCBzdGF0aWMgaW50IGFjeDU2NWFrbV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKIAlhY3g1NjVha21fZGlzY29ubmVjdChkc3NkZXYpOwogCiAJb21hcF9kc3NfcHV0X2Rldmlj ZShpbik7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2Vf aWQgYWN4NTY1YWttX29mX21hdGNoW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L29tYXAyL29tYXBmYi9kaXNwbGF5cy9wYW5lbC10cG8tdGQwMjh0dGVjMS5jIGIvZHJpdmVy cy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvcGFuZWwtdHBvLXRkMDI4dHRlYzEu YwppbmRleCA1OTVlYmQ4YmQ1ZGMuLjNjMGY4ODdkMzA5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy92 aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvcGFuZWwtdHBvLXRkMDI4dHRlYzEuYwor KysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kaXNwbGF5cy9wYW5lbC10cG8t dGQwMjh0dGVjMS5jCkBAIC00MjUsNyArNDI1LDcgQEAgc3RhdGljIGludCB0ZDAyOHR0ZWMxX3Bh bmVsX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIHI7CiB9CiAKLXN0YXRp YyBpbnQgdGQwMjh0dGVjMV9wYW5lbF9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0 YXRpYyB2b2lkIHRkMDI4dHRlYzFfcGFuZWxfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkp CiB7CiAJc3RydWN0IHBhbmVsX2Rydl9kYXRhICpkZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YSgmc3Bp LT5kZXYpOwogCXN0cnVjdCBvbWFwX2Rzc19kZXZpY2UgKmRzc2RldiA9ICZkZGF0YS0+ZHNzZGV2 OwpAQCAtNDM5LDggKzQzOSw2IEBAIHN0YXRpYyBpbnQgdGQwMjh0dGVjMV9wYW5lbF9yZW1vdmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAl0ZDAyOHR0ZWMxX3BhbmVsX2Rpc2Nvbm5lY3QoZHNz ZGV2KTsKIAogCW9tYXBfZHNzX3B1dF9kZXZpY2UoaW4pOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRkMDI4dHRlYzFfb2ZfbWF0Y2hbXSA9IHsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rpc3BsYXlzL3Bh bmVsLXRwby10ZDA0M210ZWExLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9k aXNwbGF5cy9wYW5lbC10cG8tdGQwNDNtdGVhMS5jCmluZGV4IGFmYWMxZDk0NDVhYS4uNThiYmJh N2MwMzdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kaXNw bGF5cy9wYW5lbC10cG8tdGQwNDNtdGVhMS5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvb21h cDIvb21hcGZiL2Rpc3BsYXlzL3BhbmVsLXRwby10ZDA0M210ZWExLmMKQEAgLTU2NCw3ICs1NjQs NyBAQCBzdGF0aWMgaW50IHRwb190ZDA0M19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog CXJldHVybiByOwogfQogCi1zdGF0aWMgaW50IHRwb190ZDA0M19yZW1vdmUoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIHRwb190ZDA0M19yZW1vdmUoc3RydWN0IHNwaV9kZXZp Y2UgKnNwaSkKIHsKIAlzdHJ1Y3QgcGFuZWxfZHJ2X2RhdGEgKmRkYXRhID0gZGV2X2dldF9kcnZk YXRhKCZzcGktPmRldik7CiAJc3RydWN0IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2ID0gJmRkYXRh LT5kc3NkZXY7CkBAIC01ODAsOCArNTgwLDYgQEAgc3RhdGljIGludCB0cG9fdGQwNDNfcmVtb3Zl KHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJb21hcF9kc3NfcHV0X2RldmljZShpbik7CiAKIAlz eXNmc19yZW1vdmVfZ3JvdXAoJnNwaS0+ZGV2LmtvYmosICZ0cG9fdGQwNDNfYXR0cl9ncm91cCk7 Ci0KLQlyZXR1cm4gMDsKIH0KIAogI2lmZGVmIENPTkZJR19QTV9TTEVFUApkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9zcGkvc3BpLmggYi9pbmNsdWRlL2xpbnV4L3NwaS9zcGkuaAppbmRleCA3 YWIzZmVkN2I4MDQuLmM4NGU2MWI5OWM3YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zcGkv c3BpLmgKKysrIGIvaW5jbHVkZS9saW51eC9zcGkvc3BpLmgKQEAgLTI4MCw3ICsyODAsNyBAQCBz dHJ1Y3Qgc3BpX21lc3NhZ2U7CiBzdHJ1Y3Qgc3BpX2RyaXZlciB7CiAJY29uc3Qgc3RydWN0IHNw aV9kZXZpY2VfaWQgKmlkX3RhYmxlOwogCWludAkJCSgqcHJvYmUpKHN0cnVjdCBzcGlfZGV2aWNl ICpzcGkpOwotCWludAkJCSgqcmVtb3ZlKShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKTsKKwl2b2lk CQkJKCpyZW1vdmUpKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpOwogCXZvaWQJCQkoKnNodXRkb3du KShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKTsKIAlzdHJ1Y3QgZGV2aWNlX2RyaXZlcglkcml2ZXI7 CiB9OwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9jczM1bDQxX2hkYV9zcGkuYyBiL3NvdW5k L3BjaS9oZGEvY3MzNWw0MV9oZGFfc3BpLmMKaW5kZXggOWY4MTIzODkzY2M4Li41MGViNmMwZTY2 NTggMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvY3MzNWw0MV9oZGFfc3BpLmMKKysrIGIvc291 bmQvcGNpL2hkYS9jczM1bDQxX2hkYV9zcGkuYwpAQCAtMjgsMTEgKzI4LDkgQEAgc3RhdGljIGlu dCBjczM1bDQxX2hkYV9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAkJCQkgZGV2 bV9yZWdtYXBfaW5pdF9zcGkoc3BpLCAmY3MzNWw0MV9yZWdtYXBfc3BpKSk7CiB9CiAKLXN0YXRp YyBpbnQgY3MzNWw0MV9oZGFfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQorc3Rh dGljIHZvaWQgY3MzNWw0MV9oZGFfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQog ewogCWNzMzVsNDFfaGRhX3JlbW92ZSgmc3BpLT5kZXYpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBjczM1bDQxX2hkYV9zcGlfaWRbXSA9IHsK ZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvYWRhdTE3NjEtc3BpLmMgYi9zb3VuZC9zb2Mv Y29kZWNzL2FkYXUxNzYxLXNwaS5jCmluZGV4IDY1NTY4OWM5Nzc4YS4uN2M5MjQyYzJmZjk0IDEw MDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL2FkYXUxNzYxLXNwaS5jCisrKyBiL3NvdW5kL3Nv Yy9jb2RlY3MvYWRhdTE3NjEtc3BpLmMKQEAgLTQ1LDEwICs0NSw5IEBAIHN0YXRpYyBpbnQgYWRh dTE3NjFfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJCWlkLT5kcml2ZXJfZGF0 YSwgYWRhdTE3NjFfc3BpX3N3aXRjaF9tb2RlKTsKIH0KIAotc3RhdGljIGludCBhZGF1MTc2MV9z cGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBhZGF1MTc2MV9z cGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiB7CiAJYWRhdTE3eDFfcmVtb3ZlKCZz cGktPmRldik7Ci0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2Rldmlj ZV9pZCBhZGF1MTc2MV9zcGlfaWRbXSA9IHsKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mv YWRhdTE3ODEtc3BpLmMgYi9zb3VuZC9zb2MvY29kZWNzL2FkYXUxNzgxLXNwaS5jCmluZGV4IGJi NTYxMzU3NDc4Ni4uMWEwOTYzM2Q1YTg4IDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL2Fk YXUxNzgxLXNwaS5jCisrKyBiL3NvdW5kL3NvYy9jb2RlY3MvYWRhdTE3ODEtc3BpLmMKQEAgLTQ1 LDEwICs0NSw5IEBAIHN0YXRpYyBpbnQgYWRhdTE3ODFfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpCiAJCWlkLT5kcml2ZXJfZGF0YSwgYWRhdTE3ODFfc3BpX3N3aXRjaF9tb2RlKTsK IH0KIAotc3RhdGljIGludCBhZGF1MTc4MV9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCitzdGF0aWMgdm9pZCBhZGF1MTc4MV9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCiB7CiAJYWRhdTE3eDFfcmVtb3ZlKCZzcGktPmRldik7Ci0JcmV0dXJuIDA7CiB9CiAKIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBhZGF1MTc4MV9zcGlfaWRbXSA9IHsKZGlm ZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvY3MzNWw0MS1zcGkuYyBiL3NvdW5kL3NvYy9jb2Rl Y3MvY3MzNWw0MS1zcGkuYwppbmRleCA2ZGZkNTQ1OWFhMjAuLjE2OTIyMWE1YjA5ZiAxMDA2NDQK LS0tIGEvc291bmQvc29jL2NvZGVjcy9jczM1bDQxLXNwaS5jCisrKyBiL3NvdW5kL3NvYy9jb2Rl Y3MvY3MzNWw0MS1zcGkuYwpAQCAtNTUsMTMgKzU1LDExIEBAIHN0YXRpYyBpbnQgY3MzNWw0MV9z cGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gY3MzNWw0MV9wcm9iZShj czM1bDQxLCBwZGF0YSk7CiB9CiAKLXN0YXRpYyBpbnQgY3MzNWw0MV9zcGlfcmVtb3ZlKHN0cnVj dCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9pZCBjczM1bDQxX3NwaV9yZW1vdmUoc3RydWN0 IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlzdHJ1Y3QgY3MzNWw0MV9wcml2YXRlICpjczM1bDQxID0g c3BpX2dldF9kcnZkYXRhKHNwaSk7CiAKIAljczM1bDQxX3JlbW92ZShjczM1bDQxKTsKLQotCXJl dHVybiAwOwogfQogCiAjaWZkZWYgQ09ORklHX09GCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29k ZWNzL3BjbTMxNjhhLXNwaS5jIGIvc291bmQvc29jL2NvZGVjcy9wY20zMTY4YS1zcGkuYwppbmRl eCBlY2QzNzlmMzA4ZTYuLmI1YjA4MDQ2ZjU0NSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVj cy9wY20zMTY4YS1zcGkuYworKysgYi9zb3VuZC9zb2MvY29kZWNzL3BjbTMxNjhhLXNwaS5jCkBA IC0yNiwxMSArMjYsOSBAQCBzdGF0aWMgaW50IHBjbTMxNjhhX3NwaV9wcm9iZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQogCXJldHVybiBwY20zMTY4YV9wcm9iZSgmc3BpLT5kZXYsIHJlZ21hcCk7 CiB9CiAKLXN0YXRpYyBpbnQgcGNtMzE2OGFfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQorc3RhdGljIHZvaWQgcGNtMzE2OGFfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQogewogCXBjbTMxNjhhX3JlbW92ZSgmc3BpLT5kZXYpOwotCi0JcmV0dXJuIDA7CiB9CiAK IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBwY20zMTY4YV9zcGlfaWRbXSA9IHsK ZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvcGNtNTEyeC1zcGkuYyBiL3NvdW5kL3NvYy9j b2RlY3MvcGNtNTEyeC1zcGkuYwppbmRleCA3Y2Y1NTliNDdlMWMuLjRkMjllNzE5NjM4MCAxMDA2 NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy9wY201MTJ4LXNwaS5jCisrKyBiL3NvdW5kL3NvYy9j b2RlY3MvcGNtNTEyeC1zcGkuYwpAQCAtMjYsMTAgKzI2LDkgQEAgc3RhdGljIGludCBwY201MTJ4 X3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogCXJldHVybiBwY201MTJ4X3Byb2Jl KCZzcGktPmRldiwgcmVnbWFwKTsKIH0KIAotc3RhdGljIGludCBwY201MTJ4X3NwaV9yZW1vdmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2b2lkIHBjbTUxMnhfc3BpX3JlbW92ZShz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXBjbTUxMnhfcmVtb3ZlKCZzcGktPmRldik7Ci0J cmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBwY201MTJ4 X3NwaV9pZFtdID0gewpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzMng0 LXNwaS5jIGIvc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzMng0LXNwaS5jCmluZGV4IGE4OTU4 Y2QxYzY5Mi4uMDNjY2U4ZDY0MDRmIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL3RsdjMy MGFpYzMyeDQtc3BpLmMKKysrIGIvc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzMng0LXNwaS5j CkBAIC00NiwxMSArNDYsOSBAQCBzdGF0aWMgaW50IGFpYzMyeDRfc3BpX3Byb2JlKHN0cnVjdCBz cGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIGFpYzMyeDRfcHJvYmUoJnNwaS0+ZGV2LCByZWdtYXAp OwogfQogCi1zdGF0aWMgaW50IGFpYzMyeDRfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpKQorc3RhdGljIHZvaWQgYWljMzJ4NF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCiB7CiAJYWljMzJ4NF9yZW1vdmUoJnNwaS0+ZGV2KTsKLQotCXJldHVybiAwOwogfQogCiBz dGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgYWljMzJ4NF9zcGlfaWRbXSA9IHsKZGlm ZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljM3gtc3BpLmMgYi9zb3VuZC9zb2Mv Y29kZWNzL3RsdjMyMGFpYzN4LXNwaS5jCmluZGV4IDQ5NGU4NDQwMjIzMi4uZGVlZDZlYzdlMDgx IDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzN4LXNwaS5jCisrKyBiL3Nv dW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljM3gtc3BpLmMKQEAgLTM1LDExICszNSw5IEBAIHN0YXRp YyBpbnQgYWljM3hfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJuIGFp YzN4X3Byb2JlKCZzcGktPmRldiwgcmVnbWFwLCBpZC0+ZHJpdmVyX2RhdGEpOwogfQogCi1zdGF0 aWMgaW50IGFpYzN4X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0YXRpYyB2 b2lkIGFpYzN4X3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsKIAlhaWMzeF9y ZW1vdmUoJnNwaS0+ZGV2KTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0 IHNwaV9kZXZpY2VfaWQgYWljM3hfc3BpX2lkW10gPSB7CmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mv Y29kZWNzL3dtMDAxMC5jIGIvc291bmQvc29jL2NvZGVjcy93bTAwMTAuYwppbmRleCAyOGI0NjU2 YzRlMTQuLjFiZWYxYzUwMGM4ZSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTAwMTAu YworKysgYi9zb3VuZC9zb2MvY29kZWNzL3dtMDAxMC5jCkBAIC05NjksNyArOTY5LDcgQEAgc3Rh dGljIGludCB3bTAwMTBfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCiAJcmV0dXJu IDA7CiB9CiAKLXN0YXRpYyBpbnQgd20wMDEwX3NwaV9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKK3N0YXRpYyB2b2lkIHdtMDAxMF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpz cGkpCiB7CiAJc3RydWN0IHdtMDAxMF9wcml2ICp3bTAwMTAgPSBzcGlfZ2V0X2RydmRhdGEoc3Bp KTsKIApAQCAtOTgwLDggKzk4MCw2IEBAIHN0YXRpYyBpbnQgd20wMDEwX3NwaV9yZW1vdmUoc3Ry dWN0IHNwaV9kZXZpY2UgKnNwaSkKIAogCWlmICh3bTAwMTAtPmlycSkKIAkJZnJlZV9pcnEod20w MDEwLT5pcnEsIHdtMDAxMCk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBzcGlf ZHJpdmVyIHdtMDAxMF9zcGlfZHJpdmVyID0gewpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVj cy93bTg4MDQtc3BpLmMgYi9zb3VuZC9zb2MvY29kZWNzL3dtODgwNC1zcGkuYwppbmRleCA5YThk YTE1MTFjMzQuLjYyODU2ODcyNGMyMCAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTg4 MDQtc3BpLmMKKysrIGIvc291bmQvc29jL2NvZGVjcy93bTg4MDQtc3BpLmMKQEAgLTI0LDEwICsy NCw5IEBAIHN0YXRpYyBpbnQgd204ODA0X3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3Bp KQogCXJldHVybiB3bTg4MDRfcHJvYmUoJnNwaS0+ZGV2LCByZWdtYXApOwogfQogCi1zdGF0aWMg aW50IHdtODgwNF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCitzdGF0aWMgdm9p ZCB3bTg4MDRfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQogewogCXdtODgwNF9y ZW1vdmUoJnNwaS0+ZGV2KTsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBv Zl9kZXZpY2VfaWQgd204ODA0X29mX21hdGNoW10gPSB7CmRpZmYgLS1naXQgYS9zb3VuZC9zcGkv YXQ3M2MyMTMuYyBiL3NvdW5kL3NwaS9hdDczYzIxMy5jCmluZGV4IDc2YzBlMzdhODM4Yy4uNTZk MmM3MTJlMjU3IDEwMDY0NAotLS0gYS9zb3VuZC9zcGkvYXQ3M2MyMTMuYworKysgYi9zb3VuZC9z cGkvYXQ3M2MyMTMuYwpAQCAtMTAwMSw3ICsxMDAxLDcgQEAgc3RhdGljIGludCBzbmRfYXQ3M2My MTNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIAlyZXR1cm4gcmV0dmFsOwogfQogCi1z dGF0aWMgaW50IHNuZF9hdDczYzIxM19yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3N0 YXRpYyB2b2lkIHNuZF9hdDczYzIxM19yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKIHsK IAlzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQgPSBkZXZfZ2V0X2RydmRhdGEoJnNwaS0+ZGV2KTsKIAlz dHJ1Y3Qgc25kX2F0NzNjMjEzICpjaGlwID0gY2FyZC0+cHJpdmF0ZV9kYXRhOwpAQCAtMTA2Niw4 ICsxMDY2LDYgQEAgc3RhdGljIGludCBzbmRfYXQ3M2MyMTNfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpCiAKIAlzc2NfZnJlZShjaGlwLT5zc2MpOwogCXNuZF9jYXJkX2ZyZWUoY2FyZCk7 Ci0KLQlyZXR1cm4gMDsKIH0KIAogI2lmZGVmIENPTkZJR19QTV9TTEVFUAotLSAKMi4zNC4xCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxp bnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 11C24C433F5 for ; Mon, 24 Jan 2022 10:24:35 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A4D1B10E8AF; Mon, 24 Jan 2022 10:24:19 +0000 (UTC) Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0978010E2AC for ; Sun, 23 Jan 2022 17:53:41 +0000 (UTC) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nBh2H-0007aK-MJ; Sun, 23 Jan 2022 18:52:17 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1nBh29-00BycU-QC; Sun, 23 Jan 2022 18:52:09 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1nBh27-000tzn-QZ; Sun, 23 Jan 2022 18:52:08 +0100 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: Mark Brown Subject: [PATCH 5/5] spi: make remove callback a void function Date: Sun, 23 Jan 2022 18:52:01 +0100 Message-Id: <20220123175201.34839-6-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220123175201.34839-1-u.kleine-koenig@pengutronix.de> References: <20220123175201.34839-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Developer-Signature: v=1; a=openpgp-sha256; l=136955; h=from:subject; bh=mTgAH3ErkqXVYUcCOca3lK9yPv7m+NI0k2rkz3mv030=; b=owGbwMvMwMV48I9IxdpTbzgZT6slMSS+nbozdZKy7F6VnNITCcfFvwis8j2omxhsx/JEV/lKrnB7 0+qjnYzGLAyMXAyyYoosdUVaYhMk1vy3K1nCDTOIlQlkCgMXpwBMxH0pB0Onv4znwXnH3z9xvOdbFh Dcwvbro0GTnaTVSc2CxgbXu9cfVlVY5Z9Lmy2cPt9pzo+w0odRpi+kE3TfifRnVLIt5bvQIld8+ZFw ytsJxS+09Zxt1Z/lKHLHLfwlucCI+dgS7uRXZnM4HCT/ijZppJwRYHU0miE+aW2Ev27DMUPLEx4aIY YfstJ0gpcwlXDoGEacyzm4INJ0mZd+mPdMkfzF7XdW64eyeks9vy8237G5o7Q7OHXxhoKdwbWzvjH5 nlSo2lMS5XSZ57ytwRqGzq4nbLc7/GoENrde/LhndR+XYUHU8q2bH3V0BZbuWi7Sbd/eFiLopO4+a6 u7zhP/eNeHM4un+f8UlZwiuwYA X-Developer-Key: i=u.kleine-koenig@pengutronix.de; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: dri-devel@lists.freedesktop.org X-Mailman-Approved-At: Mon, 24 Jan 2022 10:24:17 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew Lunn , Gwendal Grignou , Yasunari Takiguchi , Claudius Heine , Geert Uytterhoeven , Nanyong Sun , dri-devel@lists.freedesktop.org, Jaroslav Kysela , Frieder Schrempf , Pavel Machek , Miquel Raynal , Christian Lamparter , Ajay Singh , linux-clk@vger.kernel.org, Stefan Schmidt , Sidong Yang , libertas-dev@lists.infradead.org, linux-omap@vger.kernel.org, Guenter Roeck , Jean Delvare , linux-serial@vger.kernel.org, =?utf-8?q?=C5=81ukasz_Stelmach?= , Mark Tomlinson , James Schulman , Kamlesh Gurudasani , Jingoo Han , Zhang Qilong , Randy Dunlap , linux-stm32@st-md-mailman.stormreply.com, linux-kernel@vger.kernel.org, linux-spi@vger.kernel.org, Michael Walle , =?utf-8?q?Noralf_Tr=C3=B8nnes?= , kernel@pengutronix.de, Greg Kroah-Hartman , linux-mtd@lists.infradead.org, Andrew Morton , Vladimir Oltean , linux-wpan@vger.kernel.org, Claudiu Beznea , Alexandre Belloni , Dan Robertson , Markuss Broks , Lucas Tanure , David Airlie , linux-wireless@vger.kernel.org, Marco Felsch , David Rhodes , Thierry Reding , Solomon Peachy , =?utf-8?q?Marek_Beh=C3=BAn?= , Krzysztof Kozlowski , Emmanuel Gil Peyrot , Jiri Slaby , Bartosz Golaszewski , Tudor Ambarus , Minghao Chi , Jon Hunter , dingsenjie , Heiko Schocher , Wolfgang Grandegger , Matt Kline , Woojung Huh , Charles Keepax , Michael Hennerich , Mike Looijmans , =?utf-8?q?Ronald_Tschal=C3=A4r?= , Daniel Thompson , linux-can@vger.kernel.org, linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Hans de Goede , Stephen Boyd , Davidlohr Bueso , UNGLinuxDriver@microchip.com, Jarkko Sakkinen , linux-usb@vger.kernel.org, Maxime Coquelin , linux-integrity@vger.kernel.org, Jonathan Cameron , Heiner Kallweit , Ulf Hansson , linux-staging@lists.linux.dev, linux-iio@vger.kernel.org, Michael Turquette , alsa-devel@alsa-project.org, =?utf-8?q?Nuno_S=C3=A1?= , netdev@vger.kernel.org, Wei Yongjun , Sam Ravnborg , =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= , linux-rtc@vger.kernel.org, Marcus Folkesson , Florian Fainelli , Aditya Srivastava , Varka Bhadram , wengjianfeng , linux-input@vger.kernel.org, linux-media@vger.kernel.org, Arnd Bergmann , =?utf-8?q?Jonathan_Neusch=C3=A4fer?= , Mark Greer , Mark Gross , Richard Fitzgerald , linux-fbdev@vger.kernel.org, Mauro Carvalho Chehab , =?utf-8?q?Stefan_M=C3=A4tje?= , linux-hwmon@vger.kernel.org, Felipe Balbi , Paulo Miguel Almeida , Support Opensource , Dmitry Torokhov , linux-mmc@vger.kernel.org, Liam Girdwood , Julia Lawall , Yang Li , Dan Carpenter , patches@opensource.cirrus.com, Kent Gustavsson , "David S. Miller" , Charles-Antoine Couret , Alexander Aring , Jiri Prchal , Vignesh Raghavendra , Emma Anholt , Peter Zijlstra , Alexandre Torgue , Alexandru Ardelean , Antoniu Miclaus , Peter Huewe , Torin Cooper-Bennun , Lee Jones , linux-leds@vger.kernel.org, Eric Piel , Stephan Gerhold , Richard Weinberger , Russell King , Jason Gunthorpe , Thomas Kopp , Jakub Kicinski , Vivien Didelot , platform-driver-x86@vger.kernel.org, Stefan Wahren , Xue Liu , David Lechner , Will Deacon , Manivannan Sadhasivam , Kalle Valo , Rui Miguel Silva , Marc Kleine-Budde , Harry Morris , Andy Shevchenko , Vincent Mailhol , Alessandro Zummo , Yang Shen , Thomas Zimmermann , Takashi Iwai , Cai Huoqing , Daniel Mack , Colin Ian King , Helge Deller , Alan Ott Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The value returned by an spi driver's remove function is mostly ignored. (Only an error message is printed if the value is non-zero that the error is ignored.) So change the prototype of the remove function to return no value. This way driver authors are not tempted to assume that passing an error to the upper layer is a good idea. All drivers are adapted accordingly. There is no intended change of behaviour, all callbacks were prepared to return 0 before. Signed-off-by: Uwe Kleine-König --- drivers/bus/moxtet.c | 4 +--- drivers/char/tpm/st33zp24/spi.c | 4 +--- drivers/char/tpm/tpm_tis_spi_main.c | 3 +-- drivers/clk/clk-lmk04832.c | 4 +--- drivers/gpio/gpio-74x164.c | 4 +--- drivers/gpio/gpio-max3191x.c | 4 +--- drivers/gpio/gpio-max7301.c | 4 +--- drivers/gpio/gpio-mc33880.c | 4 +--- drivers/gpio/gpio-pisosr.c | 4 +--- drivers/gpu/drm/panel/panel-abt-y030xx067a.c | 4 +--- drivers/gpu/drm/panel/panel-ilitek-ili9322.c | 4 +--- drivers/gpu/drm/panel/panel-ilitek-ili9341.c | 3 +-- drivers/gpu/drm/panel/panel-innolux-ej030na.c | 4 +--- drivers/gpu/drm/panel/panel-lg-lb035q02.c | 4 +--- drivers/gpu/drm/panel/panel-lg-lg4573.c | 4 +--- drivers/gpu/drm/panel/panel-nec-nl8048hl11.c | 4 +--- drivers/gpu/drm/panel/panel-novatek-nt39016.c | 4 +--- drivers/gpu/drm/panel/panel-samsung-db7430.c | 3 +-- drivers/gpu/drm/panel/panel-samsung-ld9040.c | 4 +--- drivers/gpu/drm/panel/panel-samsung-s6d27a1.c | 3 +-- drivers/gpu/drm/panel/panel-samsung-s6e63m0-spi.c | 3 +-- drivers/gpu/drm/panel/panel-sitronix-st7789v.c | 4 +--- drivers/gpu/drm/panel/panel-sony-acx565akm.c | 4 +--- drivers/gpu/drm/panel/panel-tpo-td028ttec1.c | 4 +--- drivers/gpu/drm/panel/panel-tpo-td043mtea1.c | 4 +--- drivers/gpu/drm/panel/panel-tpo-tpg110.c | 3 +-- drivers/gpu/drm/panel/panel-widechips-ws2401.c | 3 +-- drivers/gpu/drm/tiny/hx8357d.c | 4 +--- drivers/gpu/drm/tiny/ili9163.c | 4 +--- drivers/gpu/drm/tiny/ili9225.c | 4 +--- drivers/gpu/drm/tiny/ili9341.c | 4 +--- drivers/gpu/drm/tiny/ili9486.c | 4 +--- drivers/gpu/drm/tiny/mi0283qt.c | 4 +--- drivers/gpu/drm/tiny/repaper.c | 4 +--- drivers/gpu/drm/tiny/st7586.c | 4 +--- drivers/gpu/drm/tiny/st7735r.c | 4 +--- drivers/hwmon/adcxx.c | 4 +--- drivers/hwmon/adt7310.c | 3 +-- drivers/hwmon/max1111.c | 3 +-- drivers/hwmon/max31722.c | 4 +--- drivers/iio/accel/bma400_spi.c | 4 +--- drivers/iio/accel/bmc150-accel-spi.c | 4 +--- drivers/iio/accel/bmi088-accel-spi.c | 4 +--- drivers/iio/accel/kxsd9-spi.c | 4 +--- drivers/iio/accel/mma7455_spi.c | 4 +--- drivers/iio/accel/sca3000.c | 4 +--- drivers/iio/adc/ad7266.c | 4 +--- drivers/iio/adc/ltc2496.c | 4 +--- drivers/iio/adc/mcp320x.c | 4 +--- drivers/iio/adc/mcp3911.c | 4 +--- drivers/iio/adc/ti-adc12138.c | 4 +--- drivers/iio/adc/ti-ads7950.c | 4 +--- drivers/iio/adc/ti-ads8688.c | 4 +--- drivers/iio/adc/ti-tlc4541.c | 4 +--- drivers/iio/amplifiers/ad8366.c | 4 +--- drivers/iio/common/ssp_sensors/ssp_dev.c | 4 +--- drivers/iio/dac/ad5360.c | 4 +--- drivers/iio/dac/ad5380.c | 4 +--- drivers/iio/dac/ad5446.c | 4 +--- drivers/iio/dac/ad5449.c | 4 +--- drivers/iio/dac/ad5504.c | 4 +--- drivers/iio/dac/ad5592r.c | 4 +--- drivers/iio/dac/ad5624r_spi.c | 4 +--- drivers/iio/dac/ad5686-spi.c | 4 +--- drivers/iio/dac/ad5761.c | 4 +--- drivers/iio/dac/ad5764.c | 4 +--- drivers/iio/dac/ad5791.c | 4 +--- drivers/iio/dac/ad8801.c | 4 +--- drivers/iio/dac/ltc1660.c | 4 +--- drivers/iio/dac/ltc2632.c | 4 +--- drivers/iio/dac/mcp4922.c | 4 +--- drivers/iio/dac/ti-dac082s085.c | 4 +--- drivers/iio/dac/ti-dac7311.c | 3 +-- drivers/iio/frequency/adf4350.c | 4 +--- drivers/iio/gyro/bmg160_spi.c | 4 +--- drivers/iio/gyro/fxas21002c_spi.c | 4 +--- drivers/iio/health/afe4403.c | 4 +--- drivers/iio/magnetometer/bmc150_magn_spi.c | 4 +--- drivers/iio/magnetometer/hmc5843_spi.c | 4 +--- drivers/iio/potentiometer/max5487.c | 4 +--- drivers/iio/pressure/ms5611_spi.c | 4 +--- drivers/iio/pressure/zpa2326_spi.c | 4 +--- drivers/input/keyboard/applespi.c | 4 +--- drivers/input/misc/adxl34x-spi.c | 4 +--- drivers/input/touchscreen/ads7846.c | 4 +--- drivers/input/touchscreen/cyttsp4_spi.c | 4 +--- drivers/input/touchscreen/tsc2005.c | 4 +--- drivers/leds/leds-cr0014114.c | 4 +--- drivers/leds/leds-dac124s085.c | 4 +--- drivers/leds/leds-el15203000.c | 4 +--- drivers/leds/leds-spi-byte.c | 4 +--- drivers/media/spi/cxd2880-spi.c | 4 +--- drivers/media/spi/gs1662.c | 4 +--- drivers/media/tuners/msi001.c | 3 +-- drivers/mfd/arizona-spi.c | 4 +--- drivers/mfd/da9052-spi.c | 3 +-- drivers/mfd/ezx-pcap.c | 4 +--- drivers/mfd/madera-spi.c | 4 +--- drivers/mfd/mc13xxx-spi.c | 3 +-- drivers/mfd/rsmu_spi.c | 4 +--- drivers/mfd/stmpe-spi.c | 4 +--- drivers/mfd/tps65912-spi.c | 4 +--- drivers/misc/ad525x_dpot-spi.c | 3 +-- drivers/misc/eeprom/eeprom_93xx46.c | 4 +--- drivers/misc/lattice-ecp3-config.c | 4 +--- drivers/misc/lis3lv02d/lis3lv02d_spi.c | 4 +--- drivers/mmc/host/mmc_spi.c | 3 +-- drivers/mtd/devices/mchp23k256.c | 4 +--- drivers/mtd/devices/mchp48l640.c | 4 +--- drivers/mtd/devices/mtd_dataflash.c | 4 +--- drivers/mtd/devices/sst25l.c | 4 +--- drivers/net/can/m_can/tcan4x5x-core.c | 4 +--- drivers/net/can/spi/hi311x.c | 4 +--- drivers/net/can/spi/mcp251x.c | 4 +--- drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 4 +--- drivers/net/dsa/b53/b53_spi.c | 4 +--- drivers/net/dsa/microchip/ksz8795_spi.c | 4 +--- drivers/net/dsa/microchip/ksz9477_spi.c | 4 +--- drivers/net/dsa/sja1105/sja1105_main.c | 6 ++---- drivers/net/dsa/vitesse-vsc73xx-spi.c | 6 ++---- drivers/net/ethernet/asix/ax88796c_main.c | 4 +--- drivers/net/ethernet/micrel/ks8851_spi.c | 4 +--- drivers/net/ethernet/microchip/enc28j60.c | 4 +--- drivers/net/ethernet/microchip/encx24j600.c | 4 +--- drivers/net/ethernet/qualcomm/qca_spi.c | 4 +--- drivers/net/ethernet/vertexcom/mse102x.c | 4 +--- drivers/net/ethernet/wiznet/w5100-spi.c | 4 +--- drivers/net/ieee802154/adf7242.c | 4 +--- drivers/net/ieee802154/at86rf230.c | 4 +--- drivers/net/ieee802154/ca8210.c | 6 ++---- drivers/net/ieee802154/cc2520.c | 4 +--- drivers/net/ieee802154/mcr20a.c | 4 +--- drivers/net/ieee802154/mrf24j40.c | 4 +--- drivers/net/phy/spi_ks8995.c | 4 +--- drivers/net/wan/slic_ds26522.c | 3 +-- drivers/net/wireless/intersil/p54/p54spi.c | 4 +--- drivers/net/wireless/marvell/libertas/if_spi.c | 4 +--- drivers/net/wireless/microchip/wilc1000/spi.c | 4 +--- drivers/net/wireless/st/cw1200/cw1200_spi.c | 4 +--- drivers/net/wireless/ti/wl1251/spi.c | 4 +--- drivers/net/wireless/ti/wlcore/spi.c | 4 +--- drivers/nfc/nfcmrvl/spi.c | 3 +-- drivers/nfc/st-nci/spi.c | 4 +--- drivers/nfc/st95hf/core.c | 4 +--- drivers/nfc/trf7970a.c | 4 +--- drivers/platform/chrome/cros_ec_spi.c | 4 +--- drivers/platform/olpc/olpc-xo175-ec.c | 4 +--- drivers/rtc/rtc-ds1302.c | 3 +-- drivers/rtc/rtc-ds1305.c | 4 +--- drivers/rtc/rtc-ds1343.c | 4 +--- drivers/spi/spi-mem.c | 6 ++---- drivers/spi/spi-slave-system-control.c | 3 +-- drivers/spi/spi-slave-time.c | 3 +-- drivers/spi/spi-tle62x0.c | 3 +-- drivers/spi/spi.c | 11 ++--------- drivers/spi/spidev.c | 4 +--- drivers/staging/fbtft/fbtft.h | 3 +-- drivers/staging/pi433/pi433_if.c | 4 +--- drivers/staging/wfx/bus_spi.c | 3 +-- drivers/tty/serial/max3100.c | 5 ++--- drivers/tty/serial/max310x.c | 3 +-- drivers/tty/serial/sc16is7xx.c | 4 +--- drivers/usb/gadget/udc/max3420_udc.c | 4 +--- drivers/usb/host/max3421-hcd.c | 3 +-- drivers/video/backlight/ams369fg06.c | 3 +-- drivers/video/backlight/corgi_lcd.c | 3 +-- drivers/video/backlight/ili922x.c | 3 +-- drivers/video/backlight/l4f00242t03.c | 3 +-- drivers/video/backlight/lms501kf03.c | 3 +-- drivers/video/backlight/ltv350qv.c | 3 +-- drivers/video/backlight/tdo24m.c | 3 +-- drivers/video/backlight/tosa_lcd.c | 4 +--- drivers/video/backlight/vgg2432a4.c | 4 +--- drivers/video/fbdev/omap/lcd_mipid.c | 4 +--- .../omap2/omapfb/displays/panel-lgphilips-lb035q02.c | 4 +--- .../omap2/omapfb/displays/panel-nec-nl8048hl11.c | 4 +--- .../omap2/omapfb/displays/panel-sony-acx565akm.c | 4 +--- .../omap2/omapfb/displays/panel-tpo-td028ttec1.c | 4 +--- .../omap2/omapfb/displays/panel-tpo-td043mtea1.c | 4 +--- include/linux/spi/spi.h | 2 +- sound/pci/hda/cs35l41_hda_spi.c | 4 +--- sound/soc/codecs/adau1761-spi.c | 3 +-- sound/soc/codecs/adau1781-spi.c | 3 +-- sound/soc/codecs/cs35l41-spi.c | 4 +--- sound/soc/codecs/pcm3168a-spi.c | 4 +--- sound/soc/codecs/pcm512x-spi.c | 3 +-- sound/soc/codecs/tlv320aic32x4-spi.c | 4 +--- sound/soc/codecs/tlv320aic3x-spi.c | 4 +--- sound/soc/codecs/wm0010.c | 4 +--- sound/soc/codecs/wm8804-spi.c | 3 +-- sound/spi/at73c213.c | 4 +--- 191 files changed, 197 insertions(+), 545 deletions(-) diff --git a/drivers/bus/moxtet.c b/drivers/bus/moxtet.c index fd87a59837fa..5eb0fe73ddc4 100644 --- a/drivers/bus/moxtet.c +++ b/drivers/bus/moxtet.c @@ -815,7 +815,7 @@ static int moxtet_probe(struct spi_device *spi) return 0; } -static int moxtet_remove(struct spi_device *spi) +static void moxtet_remove(struct spi_device *spi) { struct moxtet *moxtet = spi_get_drvdata(spi); @@ -828,8 +828,6 @@ static int moxtet_remove(struct spi_device *spi) device_for_each_child(moxtet->dev, NULL, __unregister); mutex_destroy(&moxtet->lock); - - return 0; } static const struct of_device_id moxtet_dt_ids[] = { diff --git a/drivers/char/tpm/st33zp24/spi.c b/drivers/char/tpm/st33zp24/spi.c index ccd9e42b8eab..22d184884694 100644 --- a/drivers/char/tpm/st33zp24/spi.c +++ b/drivers/char/tpm/st33zp24/spi.c @@ -381,13 +381,11 @@ static int st33zp24_spi_probe(struct spi_device *dev) * @param: client, the spi_device description (TPM SPI description). * @return: 0 in case of success. */ -static int st33zp24_spi_remove(struct spi_device *dev) +static void st33zp24_spi_remove(struct spi_device *dev) { struct tpm_chip *chip = spi_get_drvdata(dev); st33zp24_remove(chip); - - return 0; } static const struct spi_device_id st33zp24_spi_id[] = { diff --git a/drivers/char/tpm/tpm_tis_spi_main.c b/drivers/char/tpm/tpm_tis_spi_main.c index aaa59a00eeae..184396b3af50 100644 --- a/drivers/char/tpm/tpm_tis_spi_main.c +++ b/drivers/char/tpm/tpm_tis_spi_main.c @@ -254,13 +254,12 @@ static int tpm_tis_spi_driver_probe(struct spi_device *spi) static SIMPLE_DEV_PM_OPS(tpm_tis_pm, tpm_pm_suspend, tpm_tis_spi_resume); -static int tpm_tis_spi_remove(struct spi_device *dev) +static void tpm_tis_spi_remove(struct spi_device *dev) { struct tpm_chip *chip = spi_get_drvdata(dev); tpm_chip_unregister(chip); tpm_tis_remove(chip); - return 0; } static const struct spi_device_id tpm_tis_spi_id[] = { diff --git a/drivers/clk/clk-lmk04832.c b/drivers/clk/clk-lmk04832.c index 8f02c0b88000..f416f8bc2898 100644 --- a/drivers/clk/clk-lmk04832.c +++ b/drivers/clk/clk-lmk04832.c @@ -1544,14 +1544,12 @@ static int lmk04832_probe(struct spi_device *spi) return ret; } -static int lmk04832_remove(struct spi_device *spi) +static void lmk04832_remove(struct spi_device *spi) { struct lmk04832 *lmk = spi_get_drvdata(spi); clk_disable_unprepare(lmk->oscin); of_clk_del_provider(spi->dev.of_node); - - return 0; } static const struct spi_device_id lmk04832_id[] = { { "lmk04832", LMK04832 }, diff --git a/drivers/gpio/gpio-74x164.c b/drivers/gpio/gpio-74x164.c index 4a55cdf089d6..e00c33310517 100644 --- a/drivers/gpio/gpio-74x164.c +++ b/drivers/gpio/gpio-74x164.c @@ -163,15 +163,13 @@ static int gen_74x164_probe(struct spi_device *spi) return ret; } -static int gen_74x164_remove(struct spi_device *spi) +static void gen_74x164_remove(struct spi_device *spi) { struct gen_74x164_chip *chip = spi_get_drvdata(spi); gpiod_set_value_cansleep(chip->gpiod_oe, 0); gpiochip_remove(&chip->gpio_chip); mutex_destroy(&chip->lock); - - return 0; } static const struct spi_device_id gen_74x164_spi_ids[] = { diff --git a/drivers/gpio/gpio-max3191x.c b/drivers/gpio/gpio-max3191x.c index 51cd6f98d1c7..161c4751c5f7 100644 --- a/drivers/gpio/gpio-max3191x.c +++ b/drivers/gpio/gpio-max3191x.c @@ -443,14 +443,12 @@ static int max3191x_probe(struct spi_device *spi) return 0; } -static int max3191x_remove(struct spi_device *spi) +static void max3191x_remove(struct spi_device *spi) { struct max3191x_chip *max3191x = spi_get_drvdata(spi); gpiochip_remove(&max3191x->gpio); mutex_destroy(&max3191x->lock); - - return 0; } static int __init max3191x_register_driver(struct spi_driver *sdrv) diff --git a/drivers/gpio/gpio-max7301.c b/drivers/gpio/gpio-max7301.c index 5862d73bf325..11813f41d460 100644 --- a/drivers/gpio/gpio-max7301.c +++ b/drivers/gpio/gpio-max7301.c @@ -64,11 +64,9 @@ static int max7301_probe(struct spi_device *spi) return ret; } -static int max7301_remove(struct spi_device *spi) +static void max7301_remove(struct spi_device *spi) { __max730x_remove(&spi->dev); - - return 0; } static const struct spi_device_id max7301_id[] = { diff --git a/drivers/gpio/gpio-mc33880.c b/drivers/gpio/gpio-mc33880.c index 31d2be1bebc8..cd9b16dbe1a9 100644 --- a/drivers/gpio/gpio-mc33880.c +++ b/drivers/gpio/gpio-mc33880.c @@ -134,7 +134,7 @@ static int mc33880_probe(struct spi_device *spi) return ret; } -static int mc33880_remove(struct spi_device *spi) +static void mc33880_remove(struct spi_device *spi) { struct mc33880 *mc; @@ -142,8 +142,6 @@ static int mc33880_remove(struct spi_device *spi) gpiochip_remove(&mc->chip); mutex_destroy(&mc->lock); - - return 0; } static struct spi_driver mc33880_driver = { diff --git a/drivers/gpio/gpio-pisosr.c b/drivers/gpio/gpio-pisosr.c index 8e04054cf07e..81a47ae09ff8 100644 --- a/drivers/gpio/gpio-pisosr.c +++ b/drivers/gpio/gpio-pisosr.c @@ -163,15 +163,13 @@ static int pisosr_gpio_probe(struct spi_device *spi) return 0; } -static int pisosr_gpio_remove(struct spi_device *spi) +static void pisosr_gpio_remove(struct spi_device *spi) { struct pisosr_gpio *gpio = spi_get_drvdata(spi); gpiochip_remove(&gpio->chip); mutex_destroy(&gpio->lock); - - return 0; } static const struct spi_device_id pisosr_gpio_id_table[] = { diff --git a/drivers/gpu/drm/panel/panel-abt-y030xx067a.c b/drivers/gpu/drm/panel/panel-abt-y030xx067a.c index f043b484055b..ed626fdc08e8 100644 --- a/drivers/gpu/drm/panel/panel-abt-y030xx067a.c +++ b/drivers/gpu/drm/panel/panel-abt-y030xx067a.c @@ -293,15 +293,13 @@ static int y030xx067a_probe(struct spi_device *spi) return 0; } -static int y030xx067a_remove(struct spi_device *spi) +static void y030xx067a_remove(struct spi_device *spi) { struct y030xx067a *priv = spi_get_drvdata(spi); drm_panel_remove(&priv->panel); drm_panel_disable(&priv->panel); drm_panel_unprepare(&priv->panel); - - return 0; } static const struct drm_display_mode y030xx067a_modes[] = { diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9322.c b/drivers/gpu/drm/panel/panel-ilitek-ili9322.c index 8e84df9a0033..3dfafa585127 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9322.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9322.c @@ -896,14 +896,12 @@ static int ili9322_probe(struct spi_device *spi) return 0; } -static int ili9322_remove(struct spi_device *spi) +static void ili9322_remove(struct spi_device *spi) { struct ili9322 *ili = spi_get_drvdata(spi); ili9322_power_off(ili); drm_panel_remove(&ili->panel); - - return 0; } /* diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9341.c b/drivers/gpu/drm/panel/panel-ilitek-ili9341.c index 2c3378a259b1..a07ef26234e5 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9341.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9341.c @@ -728,7 +728,7 @@ static int ili9341_probe(struct spi_device *spi) return -1; } -static int ili9341_remove(struct spi_device *spi) +static void ili9341_remove(struct spi_device *spi) { const struct spi_device_id *id = spi_get_device_id(spi); struct ili9341 *ili = spi_get_drvdata(spi); @@ -741,7 +741,6 @@ static int ili9341_remove(struct spi_device *spi) drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); } - return 0; } static void ili9341_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/panel/panel-innolux-ej030na.c b/drivers/gpu/drm/panel/panel-innolux-ej030na.c index c558de3f99be..e3b1daa0cb72 100644 --- a/drivers/gpu/drm/panel/panel-innolux-ej030na.c +++ b/drivers/gpu/drm/panel/panel-innolux-ej030na.c @@ -219,15 +219,13 @@ static int ej030na_probe(struct spi_device *spi) return 0; } -static int ej030na_remove(struct spi_device *spi) +static void ej030na_remove(struct spi_device *spi) { struct ej030na *priv = spi_get_drvdata(spi); drm_panel_remove(&priv->panel); drm_panel_disable(&priv->panel); drm_panel_unprepare(&priv->panel); - - return 0; } static const struct drm_display_mode ej030na_modes[] = { diff --git a/drivers/gpu/drm/panel/panel-lg-lb035q02.c b/drivers/gpu/drm/panel/panel-lg-lb035q02.c index f3183b68704f..9d0d4faa3f58 100644 --- a/drivers/gpu/drm/panel/panel-lg-lb035q02.c +++ b/drivers/gpu/drm/panel/panel-lg-lb035q02.c @@ -203,14 +203,12 @@ static int lb035q02_probe(struct spi_device *spi) return 0; } -static int lb035q02_remove(struct spi_device *spi) +static void lb035q02_remove(struct spi_device *spi) { struct lb035q02_device *lcd = spi_get_drvdata(spi); drm_panel_remove(&lcd->panel); drm_panel_disable(&lcd->panel); - - return 0; } static const struct of_device_id lb035q02_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-lg-lg4573.c b/drivers/gpu/drm/panel/panel-lg-lg4573.c index 8e5160af1de5..cf246d15b7b6 100644 --- a/drivers/gpu/drm/panel/panel-lg-lg4573.c +++ b/drivers/gpu/drm/panel/panel-lg-lg4573.c @@ -266,14 +266,12 @@ static int lg4573_probe(struct spi_device *spi) return 0; } -static int lg4573_remove(struct spi_device *spi) +static void lg4573_remove(struct spi_device *spi) { struct lg4573 *ctx = spi_get_drvdata(spi); lg4573_display_off(ctx); drm_panel_remove(&ctx->panel); - - return 0; } static const struct of_device_id lg4573_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-nec-nl8048hl11.c b/drivers/gpu/drm/panel/panel-nec-nl8048hl11.c index 6e5ab1debc8b..81c5c541a351 100644 --- a/drivers/gpu/drm/panel/panel-nec-nl8048hl11.c +++ b/drivers/gpu/drm/panel/panel-nec-nl8048hl11.c @@ -212,15 +212,13 @@ static int nl8048_probe(struct spi_device *spi) return 0; } -static int nl8048_remove(struct spi_device *spi) +static void nl8048_remove(struct spi_device *spi) { struct nl8048_panel *lcd = spi_get_drvdata(spi); drm_panel_remove(&lcd->panel); drm_panel_disable(&lcd->panel); drm_panel_unprepare(&lcd->panel); - - return 0; } static const struct of_device_id nl8048_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-novatek-nt39016.c b/drivers/gpu/drm/panel/panel-novatek-nt39016.c index d036853db865..f58cfb10b58a 100644 --- a/drivers/gpu/drm/panel/panel-novatek-nt39016.c +++ b/drivers/gpu/drm/panel/panel-novatek-nt39016.c @@ -292,7 +292,7 @@ static int nt39016_probe(struct spi_device *spi) return 0; } -static int nt39016_remove(struct spi_device *spi) +static void nt39016_remove(struct spi_device *spi) { struct nt39016 *panel = spi_get_drvdata(spi); @@ -300,8 +300,6 @@ static int nt39016_remove(struct spi_device *spi) nt39016_disable(&panel->drm_panel); nt39016_unprepare(&panel->drm_panel); - - return 0; } static const struct drm_display_mode kd035g6_display_modes[] = { diff --git a/drivers/gpu/drm/panel/panel-samsung-db7430.c b/drivers/gpu/drm/panel/panel-samsung-db7430.c index ead479719f00..04640c5256a8 100644 --- a/drivers/gpu/drm/panel/panel-samsung-db7430.c +++ b/drivers/gpu/drm/panel/panel-samsung-db7430.c @@ -314,12 +314,11 @@ static int db7430_probe(struct spi_device *spi) return 0; } -static int db7430_remove(struct spi_device *spi) +static void db7430_remove(struct spi_device *spi) { struct db7430 *db = spi_get_drvdata(spi); drm_panel_remove(&db->panel); - return 0; } /* diff --git a/drivers/gpu/drm/panel/panel-samsung-ld9040.c b/drivers/gpu/drm/panel/panel-samsung-ld9040.c index c4b388850a13..01eb211f32f7 100644 --- a/drivers/gpu/drm/panel/panel-samsung-ld9040.c +++ b/drivers/gpu/drm/panel/panel-samsung-ld9040.c @@ -358,14 +358,12 @@ static int ld9040_probe(struct spi_device *spi) return 0; } -static int ld9040_remove(struct spi_device *spi) +static void ld9040_remove(struct spi_device *spi) { struct ld9040 *ctx = spi_get_drvdata(spi); ld9040_power_off(ctx); drm_panel_remove(&ctx->panel); - - return 0; } static const struct of_device_id ld9040_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-samsung-s6d27a1.c b/drivers/gpu/drm/panel/panel-samsung-s6d27a1.c index 1696ceb36aa0..2adb223a895c 100644 --- a/drivers/gpu/drm/panel/panel-samsung-s6d27a1.c +++ b/drivers/gpu/drm/panel/panel-samsung-s6d27a1.c @@ -291,12 +291,11 @@ static int s6d27a1_probe(struct spi_device *spi) return 0; } -static int s6d27a1_remove(struct spi_device *spi) +static void s6d27a1_remove(struct spi_device *spi) { struct s6d27a1 *ctx = spi_get_drvdata(spi); drm_panel_remove(&ctx->panel); - return 0; } static const struct of_device_id s6d27a1_match[] = { diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e63m0-spi.c b/drivers/gpu/drm/panel/panel-samsung-s6e63m0-spi.c index c178d962b0d5..d99afcc672ca 100644 --- a/drivers/gpu/drm/panel/panel-samsung-s6e63m0-spi.c +++ b/drivers/gpu/drm/panel/panel-samsung-s6e63m0-spi.c @@ -62,10 +62,9 @@ static int s6e63m0_spi_probe(struct spi_device *spi) s6e63m0_spi_dcs_write, false); } -static int s6e63m0_spi_remove(struct spi_device *spi) +static void s6e63m0_spi_remove(struct spi_device *spi) { s6e63m0_remove(&spi->dev); - return 0; } static const struct of_device_id s6e63m0_spi_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c index 61e565524542..bbc4569cbcdc 100644 --- a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c +++ b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c @@ -387,13 +387,11 @@ static int st7789v_probe(struct spi_device *spi) return 0; } -static int st7789v_remove(struct spi_device *spi) +static void st7789v_remove(struct spi_device *spi) { struct st7789v *ctx = spi_get_drvdata(spi); drm_panel_remove(&ctx->panel); - - return 0; } static const struct of_device_id st7789v_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-sony-acx565akm.c b/drivers/gpu/drm/panel/panel-sony-acx565akm.c index ba0b3ead150f..0d7541a33f87 100644 --- a/drivers/gpu/drm/panel/panel-sony-acx565akm.c +++ b/drivers/gpu/drm/panel/panel-sony-acx565akm.c @@ -655,7 +655,7 @@ static int acx565akm_probe(struct spi_device *spi) return 0; } -static int acx565akm_remove(struct spi_device *spi) +static void acx565akm_remove(struct spi_device *spi) { struct acx565akm_panel *lcd = spi_get_drvdata(spi); @@ -666,8 +666,6 @@ static int acx565akm_remove(struct spi_device *spi) drm_panel_disable(&lcd->panel); drm_panel_unprepare(&lcd->panel); - - return 0; } static const struct of_device_id acx565akm_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-tpo-td028ttec1.c b/drivers/gpu/drm/panel/panel-tpo-td028ttec1.c index ba0c00d1a001..4dbf8b88f264 100644 --- a/drivers/gpu/drm/panel/panel-tpo-td028ttec1.c +++ b/drivers/gpu/drm/panel/panel-tpo-td028ttec1.c @@ -350,15 +350,13 @@ static int td028ttec1_probe(struct spi_device *spi) return 0; } -static int td028ttec1_remove(struct spi_device *spi) +static void td028ttec1_remove(struct spi_device *spi) { struct td028ttec1_panel *lcd = spi_get_drvdata(spi); drm_panel_remove(&lcd->panel); drm_panel_disable(&lcd->panel); drm_panel_unprepare(&lcd->panel); - - return 0; } static const struct of_device_id td028ttec1_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-tpo-td043mtea1.c b/drivers/gpu/drm/panel/panel-tpo-td043mtea1.c index 1866cdb8f9c1..cf4609bb9b1d 100644 --- a/drivers/gpu/drm/panel/panel-tpo-td043mtea1.c +++ b/drivers/gpu/drm/panel/panel-tpo-td043mtea1.c @@ -463,7 +463,7 @@ static int td043mtea1_probe(struct spi_device *spi) return 0; } -static int td043mtea1_remove(struct spi_device *spi) +static void td043mtea1_remove(struct spi_device *spi) { struct td043mtea1_panel *lcd = spi_get_drvdata(spi); @@ -472,8 +472,6 @@ static int td043mtea1_remove(struct spi_device *spi) drm_panel_unprepare(&lcd->panel); sysfs_remove_group(&spi->dev.kobj, &td043mtea1_attr_group); - - return 0; } static const struct of_device_id td043mtea1_of_match[] = { diff --git a/drivers/gpu/drm/panel/panel-tpo-tpg110.c b/drivers/gpu/drm/panel/panel-tpo-tpg110.c index e3791dad6830..0b1f5a11a055 100644 --- a/drivers/gpu/drm/panel/panel-tpo-tpg110.c +++ b/drivers/gpu/drm/panel/panel-tpo-tpg110.c @@ -450,12 +450,11 @@ static int tpg110_probe(struct spi_device *spi) return 0; } -static int tpg110_remove(struct spi_device *spi) +static void tpg110_remove(struct spi_device *spi) { struct tpg110 *tpg = spi_get_drvdata(spi); drm_panel_remove(&tpg->panel); - return 0; } static const struct of_device_id tpg110_match[] = { diff --git a/drivers/gpu/drm/panel/panel-widechips-ws2401.c b/drivers/gpu/drm/panel/panel-widechips-ws2401.c index 8bc976f54b80..236f3cb2b594 100644 --- a/drivers/gpu/drm/panel/panel-widechips-ws2401.c +++ b/drivers/gpu/drm/panel/panel-widechips-ws2401.c @@ -407,12 +407,11 @@ static int ws2401_probe(struct spi_device *spi) return 0; } -static int ws2401_remove(struct spi_device *spi) +static void ws2401_remove(struct spi_device *spi) { struct ws2401 *ws = spi_get_drvdata(spi); drm_panel_remove(&ws->panel); - return 0; } /* diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c index 9b33c05732aa..ebb025543f8d 100644 --- a/drivers/gpu/drm/tiny/hx8357d.c +++ b/drivers/gpu/drm/tiny/hx8357d.c @@ -263,14 +263,12 @@ static int hx8357d_probe(struct spi_device *spi) return 0; } -static int hx8357d_remove(struct spi_device *spi) +static void hx8357d_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void hx8357d_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/ili9163.c b/drivers/gpu/drm/tiny/ili9163.c index bcc181351236..fc8ed245b0bc 100644 --- a/drivers/gpu/drm/tiny/ili9163.c +++ b/drivers/gpu/drm/tiny/ili9163.c @@ -193,14 +193,12 @@ static int ili9163_probe(struct spi_device *spi) return 0; } -static int ili9163_remove(struct spi_device *spi) +static void ili9163_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void ili9163_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c index 976d3209f164..cc92eb9f2a07 100644 --- a/drivers/gpu/drm/tiny/ili9225.c +++ b/drivers/gpu/drm/tiny/ili9225.c @@ -411,14 +411,12 @@ static int ili9225_probe(struct spi_device *spi) return 0; } -static int ili9225_remove(struct spi_device *spi) +static void ili9225_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void ili9225_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c index 37e0c33399c8..5b8cc770ee7b 100644 --- a/drivers/gpu/drm/tiny/ili9341.c +++ b/drivers/gpu/drm/tiny/ili9341.c @@ -225,14 +225,12 @@ static int ili9341_probe(struct spi_device *spi) return 0; } -static int ili9341_remove(struct spi_device *spi) +static void ili9341_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void ili9341_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c index e9a63f4b2993..6d655e18e0aa 100644 --- a/drivers/gpu/drm/tiny/ili9486.c +++ b/drivers/gpu/drm/tiny/ili9486.c @@ -243,14 +243,12 @@ static int ili9486_probe(struct spi_device *spi) return 0; } -static int ili9486_remove(struct spi_device *spi) +static void ili9486_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void ili9486_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c index 023de49e7a8e..5e060f6910bb 100644 --- a/drivers/gpu/drm/tiny/mi0283qt.c +++ b/drivers/gpu/drm/tiny/mi0283qt.c @@ -233,14 +233,12 @@ static int mi0283qt_probe(struct spi_device *spi) return 0; } -static int mi0283qt_remove(struct spi_device *spi) +static void mi0283qt_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void mi0283qt_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c index 97a775c48cea..beeeb170d0b1 100644 --- a/drivers/gpu/drm/tiny/repaper.c +++ b/drivers/gpu/drm/tiny/repaper.c @@ -1140,14 +1140,12 @@ static int repaper_probe(struct spi_device *spi) return 0; } -static int repaper_remove(struct spi_device *spi) +static void repaper_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void repaper_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c index 51b9b9fb3ead..3f38faa1cd8c 100644 --- a/drivers/gpu/drm/tiny/st7586.c +++ b/drivers/gpu/drm/tiny/st7586.c @@ -360,14 +360,12 @@ static int st7586_probe(struct spi_device *spi) return 0; } -static int st7586_remove(struct spi_device *spi) +static void st7586_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void st7586_shutdown(struct spi_device *spi) diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c index fc40dd10efa8..29d618093e94 100644 --- a/drivers/gpu/drm/tiny/st7735r.c +++ b/drivers/gpu/drm/tiny/st7735r.c @@ -247,14 +247,12 @@ static int st7735r_probe(struct spi_device *spi) return 0; } -static int st7735r_remove(struct spi_device *spi) +static void st7735r_remove(struct spi_device *spi) { struct drm_device *drm = spi_get_drvdata(spi); drm_dev_unplug(drm); drm_atomic_helper_shutdown(drm); - - return 0; } static void st7735r_shutdown(struct spi_device *spi) diff --git a/drivers/hwmon/adcxx.c b/drivers/hwmon/adcxx.c index e5bc5ce09f4e..de37bce24fa6 100644 --- a/drivers/hwmon/adcxx.c +++ b/drivers/hwmon/adcxx.c @@ -194,7 +194,7 @@ static int adcxx_probe(struct spi_device *spi) return status; } -static int adcxx_remove(struct spi_device *spi) +static void adcxx_remove(struct spi_device *spi) { struct adcxx *adc = spi_get_drvdata(spi); int i; @@ -205,8 +205,6 @@ static int adcxx_remove(struct spi_device *spi) device_remove_file(&spi->dev, &ad_input[i].dev_attr); mutex_unlock(&adc->lock); - - return 0; } static const struct spi_device_id adcxx_ids[] = { diff --git a/drivers/hwmon/adt7310.c b/drivers/hwmon/adt7310.c index c40cac16af68..832d9ec64934 100644 --- a/drivers/hwmon/adt7310.c +++ b/drivers/hwmon/adt7310.c @@ -88,10 +88,9 @@ static int adt7310_spi_probe(struct spi_device *spi) &adt7310_spi_ops); } -static int adt7310_spi_remove(struct spi_device *spi) +static void adt7310_spi_remove(struct spi_device *spi) { adt7x10_remove(&spi->dev, spi->irq); - return 0; } static const struct spi_device_id adt7310_id[] = { diff --git a/drivers/hwmon/max1111.c b/drivers/hwmon/max1111.c index 5fcfd57df61e..4c5487aeb3cf 100644 --- a/drivers/hwmon/max1111.c +++ b/drivers/hwmon/max1111.c @@ -254,7 +254,7 @@ static int max1111_probe(struct spi_device *spi) return err; } -static int max1111_remove(struct spi_device *spi) +static void max1111_remove(struct spi_device *spi) { struct max1111_data *data = spi_get_drvdata(spi); @@ -265,7 +265,6 @@ static int max1111_remove(struct spi_device *spi) sysfs_remove_group(&spi->dev.kobj, &max1110_attr_group); sysfs_remove_group(&spi->dev.kobj, &max1111_attr_group); mutex_destroy(&data->drvdata_lock); - return 0; } static const struct spi_device_id max1111_ids[] = { diff --git a/drivers/hwmon/max31722.c b/drivers/hwmon/max31722.c index 4cf4fe6809a3..93e048ee4955 100644 --- a/drivers/hwmon/max31722.c +++ b/drivers/hwmon/max31722.c @@ -100,7 +100,7 @@ static int max31722_probe(struct spi_device *spi) return 0; } -static int max31722_remove(struct spi_device *spi) +static void max31722_remove(struct spi_device *spi) { struct max31722_data *data = spi_get_drvdata(spi); int ret; @@ -111,8 +111,6 @@ static int max31722_remove(struct spi_device *spi) if (ret) /* There is nothing we can do about this ... */ dev_warn(&spi->dev, "Failed to put device in stand-by mode\n"); - - return 0; } static int __maybe_unused max31722_suspend(struct device *dev) diff --git a/drivers/iio/accel/bma400_spi.c b/drivers/iio/accel/bma400_spi.c index 9f622e37477b..9040a717b247 100644 --- a/drivers/iio/accel/bma400_spi.c +++ b/drivers/iio/accel/bma400_spi.c @@ -87,11 +87,9 @@ static int bma400_spi_probe(struct spi_device *spi) return bma400_probe(&spi->dev, regmap, id->name); } -static int bma400_spi_remove(struct spi_device *spi) +static void bma400_spi_remove(struct spi_device *spi) { bma400_remove(&spi->dev); - - return 0; } static const struct spi_device_id bma400_spi_ids[] = { diff --git a/drivers/iio/accel/bmc150-accel-spi.c b/drivers/iio/accel/bmc150-accel-spi.c index 11559567cb39..80007cc2d044 100644 --- a/drivers/iio/accel/bmc150-accel-spi.c +++ b/drivers/iio/accel/bmc150-accel-spi.c @@ -35,11 +35,9 @@ static int bmc150_accel_probe(struct spi_device *spi) true); } -static int bmc150_accel_remove(struct spi_device *spi) +static void bmc150_accel_remove(struct spi_device *spi) { bmc150_accel_core_remove(&spi->dev); - - return 0; } static const struct acpi_device_id bmc150_accel_acpi_match[] = { diff --git a/drivers/iio/accel/bmi088-accel-spi.c b/drivers/iio/accel/bmi088-accel-spi.c index 758ad2f12896..06d99d9949f3 100644 --- a/drivers/iio/accel/bmi088-accel-spi.c +++ b/drivers/iio/accel/bmi088-accel-spi.c @@ -56,11 +56,9 @@ static int bmi088_accel_probe(struct spi_device *spi) true); } -static int bmi088_accel_remove(struct spi_device *spi) +static void bmi088_accel_remove(struct spi_device *spi) { bmi088_accel_core_remove(&spi->dev); - - return 0; } static const struct spi_device_id bmi088_accel_id[] = { diff --git a/drivers/iio/accel/kxsd9-spi.c b/drivers/iio/accel/kxsd9-spi.c index 441e6b764281..57c451cfb9e5 100644 --- a/drivers/iio/accel/kxsd9-spi.c +++ b/drivers/iio/accel/kxsd9-spi.c @@ -32,11 +32,9 @@ static int kxsd9_spi_probe(struct spi_device *spi) spi_get_device_id(spi)->name); } -static int kxsd9_spi_remove(struct spi_device *spi) +static void kxsd9_spi_remove(struct spi_device *spi) { kxsd9_common_remove(&spi->dev); - - return 0; } static const struct spi_device_id kxsd9_spi_id[] = { diff --git a/drivers/iio/accel/mma7455_spi.c b/drivers/iio/accel/mma7455_spi.c index ecf690692dcc..b746031551a3 100644 --- a/drivers/iio/accel/mma7455_spi.c +++ b/drivers/iio/accel/mma7455_spi.c @@ -22,11 +22,9 @@ static int mma7455_spi_probe(struct spi_device *spi) return mma7455_core_probe(&spi->dev, regmap, id->name); } -static int mma7455_spi_remove(struct spi_device *spi) +static void mma7455_spi_remove(struct spi_device *spi) { mma7455_core_remove(&spi->dev); - - return 0; } static const struct spi_device_id mma7455_spi_ids[] = { diff --git a/drivers/iio/accel/sca3000.c b/drivers/iio/accel/sca3000.c index 43ecacbdc95a..83c81072511e 100644 --- a/drivers/iio/accel/sca3000.c +++ b/drivers/iio/accel/sca3000.c @@ -1524,7 +1524,7 @@ static int sca3000_stop_all_interrupts(struct sca3000_state *st) return ret; } -static int sca3000_remove(struct spi_device *spi) +static void sca3000_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct sca3000_state *st = iio_priv(indio_dev); @@ -1535,8 +1535,6 @@ static int sca3000_remove(struct spi_device *spi) sca3000_stop_all_interrupts(st); if (spi->irq) free_irq(spi->irq, indio_dev); - - return 0; } static const struct spi_device_id sca3000_id[] = { diff --git a/drivers/iio/adc/ad7266.c b/drivers/iio/adc/ad7266.c index 1d345d66742d..c17d9b5fbaf6 100644 --- a/drivers/iio/adc/ad7266.c +++ b/drivers/iio/adc/ad7266.c @@ -479,7 +479,7 @@ static int ad7266_probe(struct spi_device *spi) return ret; } -static int ad7266_remove(struct spi_device *spi) +static void ad7266_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad7266_state *st = iio_priv(indio_dev); @@ -488,8 +488,6 @@ static int ad7266_remove(struct spi_device *spi) iio_triggered_buffer_cleanup(indio_dev); if (!IS_ERR(st->reg)) regulator_disable(st->reg); - - return 0; } static const struct spi_device_id ad7266_id[] = { diff --git a/drivers/iio/adc/ltc2496.c b/drivers/iio/adc/ltc2496.c index dd956a7c216e..5a55f79f2574 100644 --- a/drivers/iio/adc/ltc2496.c +++ b/drivers/iio/adc/ltc2496.c @@ -78,13 +78,11 @@ static int ltc2496_probe(struct spi_device *spi) return ltc2497core_probe(dev, indio_dev); } -static int ltc2496_remove(struct spi_device *spi) +static void ltc2496_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); ltc2497core_remove(indio_dev); - - return 0; } static const struct of_device_id ltc2496_of_match[] = { diff --git a/drivers/iio/adc/mcp320x.c b/drivers/iio/adc/mcp320x.c index 8d1cff28cae0..b4c69acb33e3 100644 --- a/drivers/iio/adc/mcp320x.c +++ b/drivers/iio/adc/mcp320x.c @@ -459,15 +459,13 @@ static int mcp320x_probe(struct spi_device *spi) return ret; } -static int mcp320x_remove(struct spi_device *spi) +static void mcp320x_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct mcp320x *adc = iio_priv(indio_dev); iio_device_unregister(indio_dev); regulator_disable(adc->reg); - - return 0; } static const struct of_device_id mcp320x_dt_ids[] = { diff --git a/drivers/iio/adc/mcp3911.c b/drivers/iio/adc/mcp3911.c index 13535f148c4c..1cb4590fe412 100644 --- a/drivers/iio/adc/mcp3911.c +++ b/drivers/iio/adc/mcp3911.c @@ -321,7 +321,7 @@ static int mcp3911_probe(struct spi_device *spi) return ret; } -static int mcp3911_remove(struct spi_device *spi) +static void mcp3911_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct mcp3911 *adc = iio_priv(indio_dev); @@ -331,8 +331,6 @@ static int mcp3911_remove(struct spi_device *spi) clk_disable_unprepare(adc->clki); if (adc->vref) regulator_disable(adc->vref); - - return 0; } static const struct of_device_id mcp3911_dt_ids[] = { diff --git a/drivers/iio/adc/ti-adc12138.c b/drivers/iio/adc/ti-adc12138.c index 6eb62b564dae..59d75d09604f 100644 --- a/drivers/iio/adc/ti-adc12138.c +++ b/drivers/iio/adc/ti-adc12138.c @@ -503,7 +503,7 @@ static int adc12138_probe(struct spi_device *spi) return ret; } -static int adc12138_remove(struct spi_device *spi) +static void adc12138_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct adc12138 *adc = iio_priv(indio_dev); @@ -514,8 +514,6 @@ static int adc12138_remove(struct spi_device *spi) regulator_disable(adc->vref_n); regulator_disable(adc->vref_p); clk_disable_unprepare(adc->cclk); - - return 0; } static const struct of_device_id adc12138_dt_ids[] = { diff --git a/drivers/iio/adc/ti-ads7950.c b/drivers/iio/adc/ti-ads7950.c index a7efa3eada2c..e3658b969c5b 100644 --- a/drivers/iio/adc/ti-ads7950.c +++ b/drivers/iio/adc/ti-ads7950.c @@ -662,7 +662,7 @@ static int ti_ads7950_probe(struct spi_device *spi) return ret; } -static int ti_ads7950_remove(struct spi_device *spi) +static void ti_ads7950_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ti_ads7950_state *st = iio_priv(indio_dev); @@ -672,8 +672,6 @@ static int ti_ads7950_remove(struct spi_device *spi) iio_triggered_buffer_cleanup(indio_dev); regulator_disable(st->reg); mutex_destroy(&st->slock); - - return 0; } static const struct spi_device_id ti_ads7950_id[] = { diff --git a/drivers/iio/adc/ti-ads8688.c b/drivers/iio/adc/ti-ads8688.c index 2e24717d7f55..22c2583eedd0 100644 --- a/drivers/iio/adc/ti-ads8688.c +++ b/drivers/iio/adc/ti-ads8688.c @@ -479,7 +479,7 @@ static int ads8688_probe(struct spi_device *spi) return ret; } -static int ads8688_remove(struct spi_device *spi) +static void ads8688_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ads8688_state *st = iio_priv(indio_dev); @@ -489,8 +489,6 @@ static int ads8688_remove(struct spi_device *spi) if (!IS_ERR(st->reg)) regulator_disable(st->reg); - - return 0; } static const struct spi_device_id ads8688_id[] = { diff --git a/drivers/iio/adc/ti-tlc4541.c b/drivers/iio/adc/ti-tlc4541.c index 403b787f9f7e..2406eda9dfc6 100644 --- a/drivers/iio/adc/ti-tlc4541.c +++ b/drivers/iio/adc/ti-tlc4541.c @@ -224,7 +224,7 @@ static int tlc4541_probe(struct spi_device *spi) return ret; } -static int tlc4541_remove(struct spi_device *spi) +static void tlc4541_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct tlc4541_state *st = iio_priv(indio_dev); @@ -232,8 +232,6 @@ static int tlc4541_remove(struct spi_device *spi) iio_device_unregister(indio_dev); iio_triggered_buffer_cleanup(indio_dev); regulator_disable(st->reg); - - return 0; } static const struct of_device_id tlc4541_dt_ids[] = { diff --git a/drivers/iio/amplifiers/ad8366.c b/drivers/iio/amplifiers/ad8366.c index cfcf18a0bce8..1134ae12e531 100644 --- a/drivers/iio/amplifiers/ad8366.c +++ b/drivers/iio/amplifiers/ad8366.c @@ -298,7 +298,7 @@ static int ad8366_probe(struct spi_device *spi) return ret; } -static int ad8366_remove(struct spi_device *spi) +static void ad8366_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad8366_state *st = iio_priv(indio_dev); @@ -308,8 +308,6 @@ static int ad8366_remove(struct spi_device *spi) if (!IS_ERR(reg)) regulator_disable(reg); - - return 0; } static const struct spi_device_id ad8366_id[] = { diff --git a/drivers/iio/common/ssp_sensors/ssp_dev.c b/drivers/iio/common/ssp_sensors/ssp_dev.c index 1aee87100038..eafaf4529df5 100644 --- a/drivers/iio/common/ssp_sensors/ssp_dev.c +++ b/drivers/iio/common/ssp_sensors/ssp_dev.c @@ -586,7 +586,7 @@ static int ssp_probe(struct spi_device *spi) return ret; } -static int ssp_remove(struct spi_device *spi) +static void ssp_remove(struct spi_device *spi) { struct ssp_data *data = spi_get_drvdata(spi); @@ -608,8 +608,6 @@ static int ssp_remove(struct spi_device *spi) mutex_destroy(&data->pending_lock); mfd_remove_devices(&spi->dev); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/iio/dac/ad5360.c b/drivers/iio/dac/ad5360.c index 2d3b14c407d8..ecbc6a51d60f 100644 --- a/drivers/iio/dac/ad5360.c +++ b/drivers/iio/dac/ad5360.c @@ -521,7 +521,7 @@ static int ad5360_probe(struct spi_device *spi) return ret; } -static int ad5360_remove(struct spi_device *spi) +static void ad5360_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad5360_state *st = iio_priv(indio_dev); @@ -531,8 +531,6 @@ static int ad5360_remove(struct spi_device *spi) kfree(indio_dev->channels); regulator_bulk_disable(st->chip_info->num_vrefs, st->vref_reg); - - return 0; } static const struct spi_device_id ad5360_ids[] = { diff --git a/drivers/iio/dac/ad5380.c b/drivers/iio/dac/ad5380.c index e38860a6a9f3..82e1d9bd773e 100644 --- a/drivers/iio/dac/ad5380.c +++ b/drivers/iio/dac/ad5380.c @@ -488,11 +488,9 @@ static int ad5380_spi_probe(struct spi_device *spi) return ad5380_probe(&spi->dev, regmap, id->driver_data, id->name); } -static int ad5380_spi_remove(struct spi_device *spi) +static void ad5380_spi_remove(struct spi_device *spi) { ad5380_remove(&spi->dev); - - return 0; } static const struct spi_device_id ad5380_spi_ids[] = { diff --git a/drivers/iio/dac/ad5446.c b/drivers/iio/dac/ad5446.c index 1c9b54c012a7..14cfabacbea5 100644 --- a/drivers/iio/dac/ad5446.c +++ b/drivers/iio/dac/ad5446.c @@ -491,11 +491,9 @@ static int ad5446_spi_probe(struct spi_device *spi) &ad5446_spi_chip_info[id->driver_data]); } -static int ad5446_spi_remove(struct spi_device *spi) +static void ad5446_spi_remove(struct spi_device *spi) { ad5446_remove(&spi->dev); - - return 0; } static struct spi_driver ad5446_spi_driver = { diff --git a/drivers/iio/dac/ad5449.c b/drivers/iio/dac/ad5449.c index f5e93c6acc9d..bad9bdaafa94 100644 --- a/drivers/iio/dac/ad5449.c +++ b/drivers/iio/dac/ad5449.c @@ -330,7 +330,7 @@ static int ad5449_spi_probe(struct spi_device *spi) return ret; } -static int ad5449_spi_remove(struct spi_device *spi) +static void ad5449_spi_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad5449 *st = iio_priv(indio_dev); @@ -338,8 +338,6 @@ static int ad5449_spi_remove(struct spi_device *spi) iio_device_unregister(indio_dev); regulator_bulk_disable(st->chip_info->num_channels, st->vref_reg); - - return 0; } static const struct spi_device_id ad5449_spi_ids[] = { diff --git a/drivers/iio/dac/ad5504.c b/drivers/iio/dac/ad5504.c index b631261efa97..8507573aa13e 100644 --- a/drivers/iio/dac/ad5504.c +++ b/drivers/iio/dac/ad5504.c @@ -336,7 +336,7 @@ static int ad5504_probe(struct spi_device *spi) return ret; } -static int ad5504_remove(struct spi_device *spi) +static void ad5504_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad5504_state *st = iio_priv(indio_dev); @@ -345,8 +345,6 @@ static int ad5504_remove(struct spi_device *spi) if (!IS_ERR(st->reg)) regulator_disable(st->reg); - - return 0; } static const struct spi_device_id ad5504_id[] = { diff --git a/drivers/iio/dac/ad5592r.c b/drivers/iio/dac/ad5592r.c index 6bfd7951e18c..0f7abfa75bec 100644 --- a/drivers/iio/dac/ad5592r.c +++ b/drivers/iio/dac/ad5592r.c @@ -130,11 +130,9 @@ static int ad5592r_spi_probe(struct spi_device *spi) return ad5592r_probe(&spi->dev, id->name, &ad5592r_rw_ops); } -static int ad5592r_spi_remove(struct spi_device *spi) +static void ad5592r_spi_remove(struct spi_device *spi) { ad5592r_remove(&spi->dev); - - return 0; } static const struct spi_device_id ad5592r_spi_ids[] = { diff --git a/drivers/iio/dac/ad5624r_spi.c b/drivers/iio/dac/ad5624r_spi.c index 3c98941b9f99..371e812850eb 100644 --- a/drivers/iio/dac/ad5624r_spi.c +++ b/drivers/iio/dac/ad5624r_spi.c @@ -293,7 +293,7 @@ static int ad5624r_probe(struct spi_device *spi) return ret; } -static int ad5624r_remove(struct spi_device *spi) +static void ad5624r_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad5624r_state *st = iio_priv(indio_dev); @@ -301,8 +301,6 @@ static int ad5624r_remove(struct spi_device *spi) iio_device_unregister(indio_dev); if (!IS_ERR(st->reg)) regulator_disable(st->reg); - - return 0; } static const struct spi_device_id ad5624r_id[] = { diff --git a/drivers/iio/dac/ad5686-spi.c b/drivers/iio/dac/ad5686-spi.c index 2628810fdbb1..d26fb29b6b04 100644 --- a/drivers/iio/dac/ad5686-spi.c +++ b/drivers/iio/dac/ad5686-spi.c @@ -95,11 +95,9 @@ static int ad5686_spi_probe(struct spi_device *spi) ad5686_spi_write, ad5686_spi_read); } -static int ad5686_spi_remove(struct spi_device *spi) +static void ad5686_spi_remove(struct spi_device *spi) { ad5686_remove(&spi->dev); - - return 0; } static const struct spi_device_id ad5686_spi_id[] = { diff --git a/drivers/iio/dac/ad5761.c b/drivers/iio/dac/ad5761.c index e37e095e94fc..4cb8471db81e 100644 --- a/drivers/iio/dac/ad5761.c +++ b/drivers/iio/dac/ad5761.c @@ -394,7 +394,7 @@ static int ad5761_probe(struct spi_device *spi) return ret; } -static int ad5761_remove(struct spi_device *spi) +static void ad5761_remove(struct spi_device *spi) { struct iio_dev *iio_dev = spi_get_drvdata(spi); struct ad5761_state *st = iio_priv(iio_dev); @@ -403,8 +403,6 @@ static int ad5761_remove(struct spi_device *spi) if (!IS_ERR_OR_NULL(st->vref_reg)) regulator_disable(st->vref_reg); - - return 0; } static const struct spi_device_id ad5761_id[] = { diff --git a/drivers/iio/dac/ad5764.c b/drivers/iio/dac/ad5764.c index ae089b9145cb..d235a8047ba0 100644 --- a/drivers/iio/dac/ad5764.c +++ b/drivers/iio/dac/ad5764.c @@ -332,7 +332,7 @@ static int ad5764_probe(struct spi_device *spi) return ret; } -static int ad5764_remove(struct spi_device *spi) +static void ad5764_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad5764_state *st = iio_priv(indio_dev); @@ -341,8 +341,6 @@ static int ad5764_remove(struct spi_device *spi) if (st->chip_info->int_vref == 0) regulator_bulk_disable(ARRAY_SIZE(st->vref_reg), st->vref_reg); - - return 0; } static const struct spi_device_id ad5764_ids[] = { diff --git a/drivers/iio/dac/ad5791.c b/drivers/iio/dac/ad5791.c index 7b4579d73d18..2b14914b4050 100644 --- a/drivers/iio/dac/ad5791.c +++ b/drivers/iio/dac/ad5791.c @@ -428,7 +428,7 @@ static int ad5791_probe(struct spi_device *spi) return ret; } -static int ad5791_remove(struct spi_device *spi) +static void ad5791_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad5791_state *st = iio_priv(indio_dev); @@ -439,8 +439,6 @@ static int ad5791_remove(struct spi_device *spi) if (!IS_ERR(st->reg_vss)) regulator_disable(st->reg_vss); - - return 0; } static const struct spi_device_id ad5791_id[] = { diff --git a/drivers/iio/dac/ad8801.c b/drivers/iio/dac/ad8801.c index 5ecfdad54dec..6be35c92d435 100644 --- a/drivers/iio/dac/ad8801.c +++ b/drivers/iio/dac/ad8801.c @@ -193,7 +193,7 @@ static int ad8801_probe(struct spi_device *spi) return ret; } -static int ad8801_remove(struct spi_device *spi) +static void ad8801_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ad8801_state *state = iio_priv(indio_dev); @@ -202,8 +202,6 @@ static int ad8801_remove(struct spi_device *spi) if (state->vrefl_reg) regulator_disable(state->vrefl_reg); regulator_disable(state->vrefh_reg); - - return 0; } static const struct spi_device_id ad8801_ids[] = { diff --git a/drivers/iio/dac/ltc1660.c b/drivers/iio/dac/ltc1660.c index f6ec9bf5815e..c76233c9bb72 100644 --- a/drivers/iio/dac/ltc1660.c +++ b/drivers/iio/dac/ltc1660.c @@ -206,15 +206,13 @@ static int ltc1660_probe(struct spi_device *spi) return ret; } -static int ltc1660_remove(struct spi_device *spi) +static void ltc1660_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ltc1660_priv *priv = iio_priv(indio_dev); iio_device_unregister(indio_dev); regulator_disable(priv->vref_reg); - - return 0; } static const struct of_device_id ltc1660_dt_ids[] = { diff --git a/drivers/iio/dac/ltc2632.c b/drivers/iio/dac/ltc2632.c index 53e4b887d372..aed46c80757e 100644 --- a/drivers/iio/dac/ltc2632.c +++ b/drivers/iio/dac/ltc2632.c @@ -372,7 +372,7 @@ static int ltc2632_probe(struct spi_device *spi) return iio_device_register(indio_dev); } -static int ltc2632_remove(struct spi_device *spi) +static void ltc2632_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ltc2632_state *st = iio_priv(indio_dev); @@ -381,8 +381,6 @@ static int ltc2632_remove(struct spi_device *spi) if (st->vref_reg) regulator_disable(st->vref_reg); - - return 0; } static const struct spi_device_id ltc2632_id[] = { diff --git a/drivers/iio/dac/mcp4922.c b/drivers/iio/dac/mcp4922.c index 0ae414ee1716..cb9e60e71b91 100644 --- a/drivers/iio/dac/mcp4922.c +++ b/drivers/iio/dac/mcp4922.c @@ -172,7 +172,7 @@ static int mcp4922_probe(struct spi_device *spi) return ret; } -static int mcp4922_remove(struct spi_device *spi) +static void mcp4922_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct mcp4922_state *state; @@ -180,8 +180,6 @@ static int mcp4922_remove(struct spi_device *spi) iio_device_unregister(indio_dev); state = iio_priv(indio_dev); regulator_disable(state->vref_reg); - - return 0; } static const struct spi_device_id mcp4922_id[] = { diff --git a/drivers/iio/dac/ti-dac082s085.c b/drivers/iio/dac/ti-dac082s085.c index 6beda2193683..4e1156e6deb2 100644 --- a/drivers/iio/dac/ti-dac082s085.c +++ b/drivers/iio/dac/ti-dac082s085.c @@ -313,7 +313,7 @@ static int ti_dac_probe(struct spi_device *spi) return ret; } -static int ti_dac_remove(struct spi_device *spi) +static void ti_dac_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ti_dac_chip *ti_dac = iio_priv(indio_dev); @@ -321,8 +321,6 @@ static int ti_dac_remove(struct spi_device *spi) iio_device_unregister(indio_dev); mutex_destroy(&ti_dac->lock); regulator_disable(ti_dac->vref); - - return 0; } static const struct of_device_id ti_dac_of_id[] = { diff --git a/drivers/iio/dac/ti-dac7311.c b/drivers/iio/dac/ti-dac7311.c index 99f275829ec2..e10d17e60ed3 100644 --- a/drivers/iio/dac/ti-dac7311.c +++ b/drivers/iio/dac/ti-dac7311.c @@ -292,7 +292,7 @@ static int ti_dac_probe(struct spi_device *spi) return ret; } -static int ti_dac_remove(struct spi_device *spi) +static void ti_dac_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct ti_dac_chip *ti_dac = iio_priv(indio_dev); @@ -300,7 +300,6 @@ static int ti_dac_remove(struct spi_device *spi) iio_device_unregister(indio_dev); mutex_destroy(&ti_dac->lock); regulator_disable(ti_dac->vref); - return 0; } static const struct of_device_id ti_dac_of_id[] = { diff --git a/drivers/iio/frequency/adf4350.c b/drivers/iio/frequency/adf4350.c index 3d9eba716b69..f3521330f6fb 100644 --- a/drivers/iio/frequency/adf4350.c +++ b/drivers/iio/frequency/adf4350.c @@ -589,7 +589,7 @@ static int adf4350_probe(struct spi_device *spi) return ret; } -static int adf4350_remove(struct spi_device *spi) +static void adf4350_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct adf4350_state *st = iio_priv(indio_dev); @@ -604,8 +604,6 @@ static int adf4350_remove(struct spi_device *spi) if (!IS_ERR(reg)) regulator_disable(reg); - - return 0; } static const struct of_device_id adf4350_of_match[] = { diff --git a/drivers/iio/gyro/bmg160_spi.c b/drivers/iio/gyro/bmg160_spi.c index 745962e1e423..fc2e453527b9 100644 --- a/drivers/iio/gyro/bmg160_spi.c +++ b/drivers/iio/gyro/bmg160_spi.c @@ -27,11 +27,9 @@ static int bmg160_spi_probe(struct spi_device *spi) return bmg160_core_probe(&spi->dev, regmap, spi->irq, id->name); } -static int bmg160_spi_remove(struct spi_device *spi) +static void bmg160_spi_remove(struct spi_device *spi) { bmg160_core_remove(&spi->dev); - - return 0; } static const struct spi_device_id bmg160_spi_id[] = { diff --git a/drivers/iio/gyro/fxas21002c_spi.c b/drivers/iio/gyro/fxas21002c_spi.c index 77ceebef4e34..c3ac169facf9 100644 --- a/drivers/iio/gyro/fxas21002c_spi.c +++ b/drivers/iio/gyro/fxas21002c_spi.c @@ -34,11 +34,9 @@ static int fxas21002c_spi_probe(struct spi_device *spi) return fxas21002c_core_probe(&spi->dev, regmap, spi->irq, id->name); } -static int fxas21002c_spi_remove(struct spi_device *spi) +static void fxas21002c_spi_remove(struct spi_device *spi) { fxas21002c_core_remove(&spi->dev); - - return 0; } static const struct spi_device_id fxas21002c_spi_id[] = { diff --git a/drivers/iio/health/afe4403.c b/drivers/iio/health/afe4403.c index 273f16dcaff8..856ec901b091 100644 --- a/drivers/iio/health/afe4403.c +++ b/drivers/iio/health/afe4403.c @@ -570,7 +570,7 @@ static int afe4403_probe(struct spi_device *spi) return ret; } -static int afe4403_remove(struct spi_device *spi) +static void afe4403_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct afe4403_data *afe = iio_priv(indio_dev); @@ -586,8 +586,6 @@ static int afe4403_remove(struct spi_device *spi) ret = regulator_disable(afe->regulator); if (ret) dev_warn(afe->dev, "Unable to disable regulator\n"); - - return 0; } static const struct spi_device_id afe4403_ids[] = { diff --git a/drivers/iio/magnetometer/bmc150_magn_spi.c b/drivers/iio/magnetometer/bmc150_magn_spi.c index c6ed3ea8460a..4c570412d65c 100644 --- a/drivers/iio/magnetometer/bmc150_magn_spi.c +++ b/drivers/iio/magnetometer/bmc150_magn_spi.c @@ -29,11 +29,9 @@ static int bmc150_magn_spi_probe(struct spi_device *spi) return bmc150_magn_probe(&spi->dev, regmap, spi->irq, id->name); } -static int bmc150_magn_spi_remove(struct spi_device *spi) +static void bmc150_magn_spi_remove(struct spi_device *spi) { bmc150_magn_remove(&spi->dev); - - return 0; } static const struct spi_device_id bmc150_magn_spi_id[] = { diff --git a/drivers/iio/magnetometer/hmc5843_spi.c b/drivers/iio/magnetometer/hmc5843_spi.c index 89cf59a62c28..a99dd9b33e95 100644 --- a/drivers/iio/magnetometer/hmc5843_spi.c +++ b/drivers/iio/magnetometer/hmc5843_spi.c @@ -74,11 +74,9 @@ static int hmc5843_spi_probe(struct spi_device *spi) id->driver_data, id->name); } -static int hmc5843_spi_remove(struct spi_device *spi) +static void hmc5843_spi_remove(struct spi_device *spi) { hmc5843_common_remove(&spi->dev); - - return 0; } static const struct spi_device_id hmc5843_id[] = { diff --git a/drivers/iio/potentiometer/max5487.c b/drivers/iio/potentiometer/max5487.c index 007c2bd324cb..42723c996c9f 100644 --- a/drivers/iio/potentiometer/max5487.c +++ b/drivers/iio/potentiometer/max5487.c @@ -112,7 +112,7 @@ static int max5487_spi_probe(struct spi_device *spi) return iio_device_register(indio_dev); } -static int max5487_spi_remove(struct spi_device *spi) +static void max5487_spi_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); int ret; @@ -123,8 +123,6 @@ static int max5487_spi_remove(struct spi_device *spi) ret = max5487_write_cmd(spi, MAX5487_COPY_AB_TO_NV); if (ret) dev_warn(&spi->dev, "Failed to save wiper regs to NV regs\n"); - - return 0; } static const struct spi_device_id max5487_id[] = { diff --git a/drivers/iio/pressure/ms5611_spi.c b/drivers/iio/pressure/ms5611_spi.c index 9fa2dcd71760..7ccd960ced5d 100644 --- a/drivers/iio/pressure/ms5611_spi.c +++ b/drivers/iio/pressure/ms5611_spi.c @@ -107,11 +107,9 @@ static int ms5611_spi_probe(struct spi_device *spi) spi_get_device_id(spi)->driver_data); } -static int ms5611_spi_remove(struct spi_device *spi) +static void ms5611_spi_remove(struct spi_device *spi) { ms5611_remove(spi_get_drvdata(spi)); - - return 0; } static const struct of_device_id ms5611_spi_matches[] = { diff --git a/drivers/iio/pressure/zpa2326_spi.c b/drivers/iio/pressure/zpa2326_spi.c index 85201a4bae44..ee8ed77536ca 100644 --- a/drivers/iio/pressure/zpa2326_spi.c +++ b/drivers/iio/pressure/zpa2326_spi.c @@ -57,11 +57,9 @@ static int zpa2326_probe_spi(struct spi_device *spi) spi->irq, ZPA2326_DEVICE_ID, regmap); } -static int zpa2326_remove_spi(struct spi_device *spi) +static void zpa2326_remove_spi(struct spi_device *spi) { zpa2326_remove(&spi->dev); - - return 0; } static const struct spi_device_id zpa2326_spi_ids[] = { diff --git a/drivers/input/keyboard/applespi.c b/drivers/input/keyboard/applespi.c index eda1b23002b5..d1f5354d5ea2 100644 --- a/drivers/input/keyboard/applespi.c +++ b/drivers/input/keyboard/applespi.c @@ -1858,7 +1858,7 @@ static void applespi_drain_reads(struct applespi_data *applespi) spin_unlock_irqrestore(&applespi->cmd_msg_lock, flags); } -static int applespi_remove(struct spi_device *spi) +static void applespi_remove(struct spi_device *spi) { struct applespi_data *applespi = spi_get_drvdata(spi); @@ -1871,8 +1871,6 @@ static int applespi_remove(struct spi_device *spi) applespi_drain_reads(applespi); debugfs_remove_recursive(applespi->debugfs_root); - - return 0; } static void applespi_shutdown(struct spi_device *spi) diff --git a/drivers/input/misc/adxl34x-spi.c b/drivers/input/misc/adxl34x-spi.c index 6e51c9bc619f..91e44d4c66f7 100644 --- a/drivers/input/misc/adxl34x-spi.c +++ b/drivers/input/misc/adxl34x-spi.c @@ -87,13 +87,11 @@ static int adxl34x_spi_probe(struct spi_device *spi) return 0; } -static int adxl34x_spi_remove(struct spi_device *spi) +static void adxl34x_spi_remove(struct spi_device *spi) { struct adxl34x *ac = spi_get_drvdata(spi); adxl34x_remove(ac); - - return 0; } static int __maybe_unused adxl34x_spi_suspend(struct device *dev) diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c index a25a77dd9a32..bed68a68f330 100644 --- a/drivers/input/touchscreen/ads7846.c +++ b/drivers/input/touchscreen/ads7846.c @@ -1411,13 +1411,11 @@ static int ads7846_probe(struct spi_device *spi) return 0; } -static int ads7846_remove(struct spi_device *spi) +static void ads7846_remove(struct spi_device *spi) { struct ads7846 *ts = spi_get_drvdata(spi); ads7846_stop(ts); - - return 0; } static struct spi_driver ads7846_driver = { diff --git a/drivers/input/touchscreen/cyttsp4_spi.c b/drivers/input/touchscreen/cyttsp4_spi.c index 2aec41eb76b7..5d7db84f2749 100644 --- a/drivers/input/touchscreen/cyttsp4_spi.c +++ b/drivers/input/touchscreen/cyttsp4_spi.c @@ -164,12 +164,10 @@ static int cyttsp4_spi_probe(struct spi_device *spi) return PTR_ERR_OR_ZERO(ts); } -static int cyttsp4_spi_remove(struct spi_device *spi) +static void cyttsp4_spi_remove(struct spi_device *spi) { struct cyttsp4 *ts = spi_get_drvdata(spi); cyttsp4_remove(ts); - - return 0; } static struct spi_driver cyttsp4_spi_driver = { diff --git a/drivers/input/touchscreen/tsc2005.c b/drivers/input/touchscreen/tsc2005.c index a2f55920b9b2..555dfe98b3c4 100644 --- a/drivers/input/touchscreen/tsc2005.c +++ b/drivers/input/touchscreen/tsc2005.c @@ -64,11 +64,9 @@ static int tsc2005_probe(struct spi_device *spi) tsc2005_cmd); } -static int tsc2005_remove(struct spi_device *spi) +static void tsc2005_remove(struct spi_device *spi) { tsc200x_remove(&spi->dev); - - return 0; } #ifdef CONFIG_OF diff --git a/drivers/leds/leds-cr0014114.c b/drivers/leds/leds-cr0014114.c index d03cfd3c0bfb..c87686bd7c18 100644 --- a/drivers/leds/leds-cr0014114.c +++ b/drivers/leds/leds-cr0014114.c @@ -266,14 +266,12 @@ static int cr0014114_probe(struct spi_device *spi) return 0; } -static int cr0014114_remove(struct spi_device *spi) +static void cr0014114_remove(struct spi_device *spi) { struct cr0014114 *priv = spi_get_drvdata(spi); cancel_delayed_work_sync(&priv->work); mutex_destroy(&priv->lock); - - return 0; } static const struct of_device_id cr0014114_dt_ids[] = { diff --git a/drivers/leds/leds-dac124s085.c b/drivers/leds/leds-dac124s085.c index 20dc9b9d7dea..cf5fb1195f87 100644 --- a/drivers/leds/leds-dac124s085.c +++ b/drivers/leds/leds-dac124s085.c @@ -85,15 +85,13 @@ static int dac124s085_probe(struct spi_device *spi) return ret; } -static int dac124s085_remove(struct spi_device *spi) +static void dac124s085_remove(struct spi_device *spi) { struct dac124s085 *dac = spi_get_drvdata(spi); int i; for (i = 0; i < ARRAY_SIZE(dac->leds); i++) led_classdev_unregister(&dac->leds[i].ldev); - - return 0; } static struct spi_driver dac124s085_driver = { diff --git a/drivers/leds/leds-el15203000.c b/drivers/leds/leds-el15203000.c index f9eb59a25570..7e7b617bcd56 100644 --- a/drivers/leds/leds-el15203000.c +++ b/drivers/leds/leds-el15203000.c @@ -315,13 +315,11 @@ static int el15203000_probe(struct spi_device *spi) return el15203000_probe_dt(priv); } -static int el15203000_remove(struct spi_device *spi) +static void el15203000_remove(struct spi_device *spi) { struct el15203000 *priv = spi_get_drvdata(spi); mutex_destroy(&priv->lock); - - return 0; } static const struct of_device_id el15203000_dt_ids[] = { diff --git a/drivers/leds/leds-spi-byte.c b/drivers/leds/leds-spi-byte.c index f1964c96fb15..2bc5c99daf51 100644 --- a/drivers/leds/leds-spi-byte.c +++ b/drivers/leds/leds-spi-byte.c @@ -130,13 +130,11 @@ static int spi_byte_probe(struct spi_device *spi) return 0; } -static int spi_byte_remove(struct spi_device *spi) +static void spi_byte_remove(struct spi_device *spi) { struct spi_byte_led *led = spi_get_drvdata(spi); mutex_destroy(&led->mutex); - - return 0; } static struct spi_driver spi_byte_driver = { diff --git a/drivers/media/spi/cxd2880-spi.c b/drivers/media/spi/cxd2880-spi.c index 6f2a66bc87fb..6be4e5528879 100644 --- a/drivers/media/spi/cxd2880-spi.c +++ b/drivers/media/spi/cxd2880-spi.c @@ -625,7 +625,7 @@ cxd2880_spi_probe(struct spi_device *spi) return ret; } -static int +static void cxd2880_spi_remove(struct spi_device *spi) { struct cxd2880_dvb_spi *dvb_spi = spi_get_drvdata(spi); @@ -643,8 +643,6 @@ cxd2880_spi_remove(struct spi_device *spi) kfree(dvb_spi); pr_info("cxd2880_spi remove ok.\n"); - - return 0; } static const struct spi_device_id cxd2880_spi_id[] = { diff --git a/drivers/media/spi/gs1662.c b/drivers/media/spi/gs1662.c index f86ef1ca1288..75c21a93e6d0 100644 --- a/drivers/media/spi/gs1662.c +++ b/drivers/media/spi/gs1662.c @@ -458,13 +458,11 @@ static int gs_probe(struct spi_device *spi) return ret; } -static int gs_remove(struct spi_device *spi) +static void gs_remove(struct spi_device *spi) { struct v4l2_subdev *sd = spi_get_drvdata(spi); v4l2_device_unregister_subdev(sd); - - return 0; } static struct spi_driver gs_driver = { diff --git a/drivers/media/tuners/msi001.c b/drivers/media/tuners/msi001.c index 44247049a319..ad6c72c1ed04 100644 --- a/drivers/media/tuners/msi001.c +++ b/drivers/media/tuners/msi001.c @@ -472,7 +472,7 @@ static int msi001_probe(struct spi_device *spi) return ret; } -static int msi001_remove(struct spi_device *spi) +static void msi001_remove(struct spi_device *spi) { struct v4l2_subdev *sd = spi_get_drvdata(spi); struct msi001_dev *dev = sd_to_msi001_dev(sd); @@ -486,7 +486,6 @@ static int msi001_remove(struct spi_device *spi) v4l2_device_unregister_subdev(&dev->sd); v4l2_ctrl_handler_free(&dev->hdl); kfree(dev); - return 0; } static const struct spi_device_id msi001_id_table[] = { diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c index 9fe06dda3782..03620c8efe34 100644 --- a/drivers/mfd/arizona-spi.c +++ b/drivers/mfd/arizona-spi.c @@ -206,13 +206,11 @@ static int arizona_spi_probe(struct spi_device *spi) return arizona_dev_init(arizona); } -static int arizona_spi_remove(struct spi_device *spi) +static void arizona_spi_remove(struct spi_device *spi) { struct arizona *arizona = spi_get_drvdata(spi); arizona_dev_exit(arizona); - - return 0; } static const struct spi_device_id arizona_spi_ids[] = { diff --git a/drivers/mfd/da9052-spi.c b/drivers/mfd/da9052-spi.c index 5faf3766a5e2..b79a57b45c1e 100644 --- a/drivers/mfd/da9052-spi.c +++ b/drivers/mfd/da9052-spi.c @@ -55,12 +55,11 @@ static int da9052_spi_probe(struct spi_device *spi) return da9052_device_init(da9052, id->driver_data); } -static int da9052_spi_remove(struct spi_device *spi) +static void da9052_spi_remove(struct spi_device *spi) { struct da9052 *da9052 = spi_get_drvdata(spi); da9052_device_exit(da9052); - return 0; } static const struct spi_device_id da9052_spi_id[] = { diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c index 70fa18b04ad2..2280f756f422 100644 --- a/drivers/mfd/ezx-pcap.c +++ b/drivers/mfd/ezx-pcap.c @@ -392,7 +392,7 @@ static int pcap_add_subdev(struct pcap_chip *pcap, return ret; } -static int ezx_pcap_remove(struct spi_device *spi) +static void ezx_pcap_remove(struct spi_device *spi) { struct pcap_chip *pcap = spi_get_drvdata(spi); unsigned long flags; @@ -412,8 +412,6 @@ static int ezx_pcap_remove(struct spi_device *spi) irq_set_chip_and_handler(i, NULL, NULL); destroy_workqueue(pcap->workqueue); - - return 0; } static int ezx_pcap_probe(struct spi_device *spi) diff --git a/drivers/mfd/madera-spi.c b/drivers/mfd/madera-spi.c index e860f5ff0933..da84eb50e53a 100644 --- a/drivers/mfd/madera-spi.c +++ b/drivers/mfd/madera-spi.c @@ -112,13 +112,11 @@ static int madera_spi_probe(struct spi_device *spi) return madera_dev_init(madera); } -static int madera_spi_remove(struct spi_device *spi) +static void madera_spi_remove(struct spi_device *spi) { struct madera *madera = spi_get_drvdata(spi); madera_dev_exit(madera); - - return 0; } static const struct spi_device_id madera_spi_ids[] = { diff --git a/drivers/mfd/mc13xxx-spi.c b/drivers/mfd/mc13xxx-spi.c index 4d8913d647e6..f803527e5819 100644 --- a/drivers/mfd/mc13xxx-spi.c +++ b/drivers/mfd/mc13xxx-spi.c @@ -166,10 +166,9 @@ static int mc13xxx_spi_probe(struct spi_device *spi) return mc13xxx_common_init(&spi->dev); } -static int mc13xxx_spi_remove(struct spi_device *spi) +static void mc13xxx_spi_remove(struct spi_device *spi) { mc13xxx_common_exit(&spi->dev); - return 0; } static struct spi_driver mc13xxx_spi_driver = { diff --git a/drivers/mfd/rsmu_spi.c b/drivers/mfd/rsmu_spi.c index fec2b4ec477c..d2f3d8f1e05a 100644 --- a/drivers/mfd/rsmu_spi.c +++ b/drivers/mfd/rsmu_spi.c @@ -220,13 +220,11 @@ static int rsmu_spi_probe(struct spi_device *client) return rsmu_core_init(rsmu); } -static int rsmu_spi_remove(struct spi_device *client) +static void rsmu_spi_remove(struct spi_device *client) { struct rsmu_ddata *rsmu = spi_get_drvdata(client); rsmu_core_exit(rsmu); - - return 0; } static const struct spi_device_id rsmu_spi_id[] = { diff --git a/drivers/mfd/stmpe-spi.c b/drivers/mfd/stmpe-spi.c index 6c5915016be5..ad8055a0e286 100644 --- a/drivers/mfd/stmpe-spi.c +++ b/drivers/mfd/stmpe-spi.c @@ -102,13 +102,11 @@ stmpe_spi_probe(struct spi_device *spi) return stmpe_probe(&spi_ci, id->driver_data); } -static int stmpe_spi_remove(struct spi_device *spi) +static void stmpe_spi_remove(struct spi_device *spi) { struct stmpe *stmpe = spi_get_drvdata(spi); stmpe_remove(stmpe); - - return 0; } static const struct of_device_id stmpe_spi_of_match[] = { diff --git a/drivers/mfd/tps65912-spi.c b/drivers/mfd/tps65912-spi.c index d701926aa46e..bba38fbc781d 100644 --- a/drivers/mfd/tps65912-spi.c +++ b/drivers/mfd/tps65912-spi.c @@ -50,13 +50,11 @@ static int tps65912_spi_probe(struct spi_device *spi) return tps65912_device_init(tps); } -static int tps65912_spi_remove(struct spi_device *spi) +static void tps65912_spi_remove(struct spi_device *spi) { struct tps65912 *tps = spi_get_drvdata(spi); tps65912_device_exit(tps); - - return 0; } static const struct spi_device_id tps65912_spi_id_table[] = { diff --git a/drivers/misc/ad525x_dpot-spi.c b/drivers/misc/ad525x_dpot-spi.c index a9e75d80ad36..263055bda48b 100644 --- a/drivers/misc/ad525x_dpot-spi.c +++ b/drivers/misc/ad525x_dpot-spi.c @@ -90,10 +90,9 @@ static int ad_dpot_spi_probe(struct spi_device *spi) spi_get_device_id(spi)->name); } -static int ad_dpot_spi_remove(struct spi_device *spi) +static void ad_dpot_spi_remove(struct spi_device *spi) { ad_dpot_remove(&spi->dev); - return 0; } static const struct spi_device_id ad_dpot_spi_id[] = { diff --git a/drivers/misc/eeprom/eeprom_93xx46.c b/drivers/misc/eeprom/eeprom_93xx46.c index 1f15399e5cb4..b630625b3024 100644 --- a/drivers/misc/eeprom/eeprom_93xx46.c +++ b/drivers/misc/eeprom/eeprom_93xx46.c @@ -555,14 +555,12 @@ static int eeprom_93xx46_probe(struct spi_device *spi) return 0; } -static int eeprom_93xx46_remove(struct spi_device *spi) +static void eeprom_93xx46_remove(struct spi_device *spi) { struct eeprom_93xx46_dev *edev = spi_get_drvdata(spi); if (!(edev->pdata->flags & EE_READONLY)) device_remove_file(&spi->dev, &dev_attr_erase); - - return 0; } static struct spi_driver eeprom_93xx46_driver = { diff --git a/drivers/misc/lattice-ecp3-config.c b/drivers/misc/lattice-ecp3-config.c index 98828030b5a4..bac4df2e5231 100644 --- a/drivers/misc/lattice-ecp3-config.c +++ b/drivers/misc/lattice-ecp3-config.c @@ -211,13 +211,11 @@ static int lattice_ecp3_probe(struct spi_device *spi) return 0; } -static int lattice_ecp3_remove(struct spi_device *spi) +static void lattice_ecp3_remove(struct spi_device *spi) { struct fpga_data *data = spi_get_drvdata(spi); wait_for_completion(&data->fw_loaded); - - return 0; } static const struct spi_device_id lattice_ecp3_id[] = { diff --git a/drivers/misc/lis3lv02d/lis3lv02d_spi.c b/drivers/misc/lis3lv02d/lis3lv02d_spi.c index 9e40dfb60742..203a108b8883 100644 --- a/drivers/misc/lis3lv02d/lis3lv02d_spi.c +++ b/drivers/misc/lis3lv02d/lis3lv02d_spi.c @@ -96,15 +96,13 @@ static int lis302dl_spi_probe(struct spi_device *spi) return lis3lv02d_init_device(&lis3_dev); } -static int lis302dl_spi_remove(struct spi_device *spi) +static void lis302dl_spi_remove(struct spi_device *spi) { struct lis3lv02d *lis3 = spi_get_drvdata(spi); lis3lv02d_joystick_disable(lis3); lis3lv02d_poweroff(lis3); lis3lv02d_remove_fs(&lis3_dev); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c index a576181e9db0..106dd204b1a7 100644 --- a/drivers/mmc/host/mmc_spi.c +++ b/drivers/mmc/host/mmc_spi.c @@ -1489,7 +1489,7 @@ static int mmc_spi_probe(struct spi_device *spi) } -static int mmc_spi_remove(struct spi_device *spi) +static void mmc_spi_remove(struct spi_device *spi) { struct mmc_host *mmc = dev_get_drvdata(&spi->dev); struct mmc_spi_host *host = mmc_priv(mmc); @@ -1507,7 +1507,6 @@ static int mmc_spi_remove(struct spi_device *spi) spi->max_speed_hz = mmc->f_max; mmc_spi_put_pdata(spi); mmc_free_host(mmc); - return 0; } static const struct spi_device_id mmc_spi_dev_ids[] = { diff --git a/drivers/mtd/devices/mchp23k256.c b/drivers/mtd/devices/mchp23k256.c index a8b31bddf14b..008df9d8898d 100644 --- a/drivers/mtd/devices/mchp23k256.c +++ b/drivers/mtd/devices/mchp23k256.c @@ -209,13 +209,11 @@ static int mchp23k256_probe(struct spi_device *spi) return 0; } -static int mchp23k256_remove(struct spi_device *spi) +static void mchp23k256_remove(struct spi_device *spi) { struct mchp23k256_flash *flash = spi_get_drvdata(spi); WARN_ON(mtd_device_unregister(&flash->mtd)); - - return 0; } static const struct of_device_id mchp23k256_of_table[] = { diff --git a/drivers/mtd/devices/mchp48l640.c b/drivers/mtd/devices/mchp48l640.c index 231a10790196..a3fd426df74b 100644 --- a/drivers/mtd/devices/mchp48l640.c +++ b/drivers/mtd/devices/mchp48l640.c @@ -341,13 +341,11 @@ static int mchp48l640_probe(struct spi_device *spi) return 0; } -static int mchp48l640_remove(struct spi_device *spi) +static void mchp48l640_remove(struct spi_device *spi) { struct mchp48l640_flash *flash = spi_get_drvdata(spi); WARN_ON(mtd_device_unregister(&flash->mtd)); - - return 0; } static const struct of_device_id mchp48l640_of_table[] = { diff --git a/drivers/mtd/devices/mtd_dataflash.c b/drivers/mtd/devices/mtd_dataflash.c index 734878abaa23..134e27328597 100644 --- a/drivers/mtd/devices/mtd_dataflash.c +++ b/drivers/mtd/devices/mtd_dataflash.c @@ -916,7 +916,7 @@ static int dataflash_probe(struct spi_device *spi) return status; } -static int dataflash_remove(struct spi_device *spi) +static void dataflash_remove(struct spi_device *spi) { struct dataflash *flash = spi_get_drvdata(spi); @@ -925,8 +925,6 @@ static int dataflash_remove(struct spi_device *spi) WARN_ON(mtd_device_unregister(&flash->mtd)); kfree(flash); - - return 0; } static struct spi_driver dataflash_driver = { diff --git a/drivers/mtd/devices/sst25l.c b/drivers/mtd/devices/sst25l.c index 7f124c1bfa40..8813994ce9f4 100644 --- a/drivers/mtd/devices/sst25l.c +++ b/drivers/mtd/devices/sst25l.c @@ -398,13 +398,11 @@ static int sst25l_probe(struct spi_device *spi) return 0; } -static int sst25l_remove(struct spi_device *spi) +static void sst25l_remove(struct spi_device *spi) { struct sst25l_flash *flash = spi_get_drvdata(spi); WARN_ON(mtd_device_unregister(&flash->mtd)); - - return 0; } static struct spi_driver sst25l_driver = { diff --git a/drivers/net/can/m_can/tcan4x5x-core.c b/drivers/net/can/m_can/tcan4x5x-core.c index 04687b15b250..41645a24384c 100644 --- a/drivers/net/can/m_can/tcan4x5x-core.c +++ b/drivers/net/can/m_can/tcan4x5x-core.c @@ -388,7 +388,7 @@ static int tcan4x5x_can_probe(struct spi_device *spi) return ret; } -static int tcan4x5x_can_remove(struct spi_device *spi) +static void tcan4x5x_can_remove(struct spi_device *spi) { struct tcan4x5x_priv *priv = spi_get_drvdata(spi); @@ -397,8 +397,6 @@ static int tcan4x5x_can_remove(struct spi_device *spi) tcan4x5x_power_enable(priv->power, 0); m_can_class_free_dev(priv->cdev.net); - - return 0; } static const struct of_device_id tcan4x5x_of_match[] = { diff --git a/drivers/net/can/spi/hi311x.c b/drivers/net/can/spi/hi311x.c index cfcc14fe3e42..664b8f14d7b0 100644 --- a/drivers/net/can/spi/hi311x.c +++ b/drivers/net/can/spi/hi311x.c @@ -948,7 +948,7 @@ static int hi3110_can_probe(struct spi_device *spi) return dev_err_probe(dev, ret, "Probe failed\n"); } -static int hi3110_can_remove(struct spi_device *spi) +static void hi3110_can_remove(struct spi_device *spi) { struct hi3110_priv *priv = spi_get_drvdata(spi); struct net_device *net = priv->net; @@ -960,8 +960,6 @@ static int hi3110_can_remove(struct spi_device *spi) clk_disable_unprepare(priv->clk); free_candev(net); - - return 0; } static int __maybe_unused hi3110_can_suspend(struct device *dev) diff --git a/drivers/net/can/spi/mcp251x.c b/drivers/net/can/spi/mcp251x.c index 025e07cb7439..d23edaf22420 100644 --- a/drivers/net/can/spi/mcp251x.c +++ b/drivers/net/can/spi/mcp251x.c @@ -1427,7 +1427,7 @@ static int mcp251x_can_probe(struct spi_device *spi) return ret; } -static int mcp251x_can_remove(struct spi_device *spi) +static void mcp251x_can_remove(struct spi_device *spi) { struct mcp251x_priv *priv = spi_get_drvdata(spi); struct net_device *net = priv->net; @@ -1442,8 +1442,6 @@ static int mcp251x_can_remove(struct spi_device *spi) clk_disable_unprepare(priv->clk); free_candev(net); - - return 0; } static int __maybe_unused mcp251x_can_suspend(struct device *dev) diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c index b5986df6eca0..65c9b31666a6 100644 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c @@ -1966,7 +1966,7 @@ static int mcp251xfd_probe(struct spi_device *spi) return err; } -static int mcp251xfd_remove(struct spi_device *spi) +static void mcp251xfd_remove(struct spi_device *spi) { struct mcp251xfd_priv *priv = spi_get_drvdata(spi); struct net_device *ndev = priv->ndev; @@ -1975,8 +1975,6 @@ static int mcp251xfd_remove(struct spi_device *spi) mcp251xfd_unregister(priv); spi->max_speed_hz = priv->spi_max_speed_hz_orig; free_candev(ndev); - - return 0; } static int __maybe_unused mcp251xfd_runtime_suspend(struct device *device) diff --git a/drivers/net/dsa/b53/b53_spi.c b/drivers/net/dsa/b53/b53_spi.c index 2b88f03e5252..0e54b2a0c211 100644 --- a/drivers/net/dsa/b53/b53_spi.c +++ b/drivers/net/dsa/b53/b53_spi.c @@ -314,7 +314,7 @@ static int b53_spi_probe(struct spi_device *spi) return 0; } -static int b53_spi_remove(struct spi_device *spi) +static void b53_spi_remove(struct spi_device *spi) { struct b53_device *dev = spi_get_drvdata(spi); @@ -322,8 +322,6 @@ static int b53_spi_remove(struct spi_device *spi) b53_switch_remove(dev); spi_set_drvdata(spi, NULL); - - return 0; } static void b53_spi_shutdown(struct spi_device *spi) diff --git a/drivers/net/dsa/microchip/ksz8795_spi.c b/drivers/net/dsa/microchip/ksz8795_spi.c index 866767b70d65..673589dc88ab 100644 --- a/drivers/net/dsa/microchip/ksz8795_spi.c +++ b/drivers/net/dsa/microchip/ksz8795_spi.c @@ -87,7 +87,7 @@ static int ksz8795_spi_probe(struct spi_device *spi) return 0; } -static int ksz8795_spi_remove(struct spi_device *spi) +static void ksz8795_spi_remove(struct spi_device *spi) { struct ksz_device *dev = spi_get_drvdata(spi); @@ -95,8 +95,6 @@ static int ksz8795_spi_remove(struct spi_device *spi) ksz_switch_remove(dev); spi_set_drvdata(spi, NULL); - - return 0; } static void ksz8795_spi_shutdown(struct spi_device *spi) diff --git a/drivers/net/dsa/microchip/ksz9477_spi.c b/drivers/net/dsa/microchip/ksz9477_spi.c index e3cb0e6c9f6f..940bb9665f15 100644 --- a/drivers/net/dsa/microchip/ksz9477_spi.c +++ b/drivers/net/dsa/microchip/ksz9477_spi.c @@ -65,7 +65,7 @@ static int ksz9477_spi_probe(struct spi_device *spi) return 0; } -static int ksz9477_spi_remove(struct spi_device *spi) +static void ksz9477_spi_remove(struct spi_device *spi) { struct ksz_device *dev = spi_get_drvdata(spi); @@ -73,8 +73,6 @@ static int ksz9477_spi_remove(struct spi_device *spi) ksz_switch_remove(dev); spi_set_drvdata(spi, NULL); - - return 0; } static void ksz9477_spi_shutdown(struct spi_device *spi) diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c index b513713be610..c2a47c6693b8 100644 --- a/drivers/net/dsa/sja1105/sja1105_main.c +++ b/drivers/net/dsa/sja1105/sja1105_main.c @@ -3346,18 +3346,16 @@ static int sja1105_probe(struct spi_device *spi) return dsa_register_switch(priv->ds); } -static int sja1105_remove(struct spi_device *spi) +static void sja1105_remove(struct spi_device *spi) { struct sja1105_private *priv = spi_get_drvdata(spi); if (!priv) - return 0; + return; dsa_unregister_switch(priv->ds); spi_set_drvdata(spi, NULL); - - return 0; } static void sja1105_shutdown(struct spi_device *spi) diff --git a/drivers/net/dsa/vitesse-vsc73xx-spi.c b/drivers/net/dsa/vitesse-vsc73xx-spi.c index 645398901e05..3110895358d8 100644 --- a/drivers/net/dsa/vitesse-vsc73xx-spi.c +++ b/drivers/net/dsa/vitesse-vsc73xx-spi.c @@ -159,18 +159,16 @@ static int vsc73xx_spi_probe(struct spi_device *spi) return vsc73xx_probe(&vsc_spi->vsc); } -static int vsc73xx_spi_remove(struct spi_device *spi) +static void vsc73xx_spi_remove(struct spi_device *spi) { struct vsc73xx_spi *vsc_spi = spi_get_drvdata(spi); if (!vsc_spi) - return 0; + return; vsc73xx_remove(&vsc_spi->vsc); spi_set_drvdata(spi, NULL); - - return 0; } static void vsc73xx_spi_shutdown(struct spi_device *spi) diff --git a/drivers/net/ethernet/asix/ax88796c_main.c b/drivers/net/ethernet/asix/ax88796c_main.c index e7a9f9863258..bf70481bb1ca 100644 --- a/drivers/net/ethernet/asix/ax88796c_main.c +++ b/drivers/net/ethernet/asix/ax88796c_main.c @@ -1102,7 +1102,7 @@ static int ax88796c_probe(struct spi_device *spi) return ret; } -static int ax88796c_remove(struct spi_device *spi) +static void ax88796c_remove(struct spi_device *spi) { struct ax88796c_device *ax_local = dev_get_drvdata(&spi->dev); struct net_device *ndev = ax_local->ndev; @@ -1112,8 +1112,6 @@ static int ax88796c_remove(struct spi_device *spi) netif_info(ax_local, probe, ndev, "removing network device %s %s\n", dev_driver_string(&spi->dev), dev_name(&spi->dev)); - - return 0; } #ifdef CONFIG_OF diff --git a/drivers/net/ethernet/micrel/ks8851_spi.c b/drivers/net/ethernet/micrel/ks8851_spi.c index 0303e727e99f..d167d93e4c12 100644 --- a/drivers/net/ethernet/micrel/ks8851_spi.c +++ b/drivers/net/ethernet/micrel/ks8851_spi.c @@ -452,11 +452,9 @@ static int ks8851_probe_spi(struct spi_device *spi) return ks8851_probe_common(netdev, dev, msg_enable); } -static int ks8851_remove_spi(struct spi_device *spi) +static void ks8851_remove_spi(struct spi_device *spi) { ks8851_remove_common(&spi->dev); - - return 0; } static const struct of_device_id ks8851_match_table[] = { diff --git a/drivers/net/ethernet/microchip/enc28j60.c b/drivers/net/ethernet/microchip/enc28j60.c index 634ac7649c43..db5a3edb4c3c 100644 --- a/drivers/net/ethernet/microchip/enc28j60.c +++ b/drivers/net/ethernet/microchip/enc28j60.c @@ -1612,15 +1612,13 @@ static int enc28j60_probe(struct spi_device *spi) return ret; } -static int enc28j60_remove(struct spi_device *spi) +static void enc28j60_remove(struct spi_device *spi) { struct enc28j60_net *priv = spi_get_drvdata(spi); unregister_netdev(priv->netdev); free_irq(spi->irq, priv); free_netdev(priv->netdev); - - return 0; } static const struct of_device_id enc28j60_dt_ids[] = { diff --git a/drivers/net/ethernet/microchip/encx24j600.c b/drivers/net/ethernet/microchip/encx24j600.c index b90efc80fb59..dc1840cb5b10 100644 --- a/drivers/net/ethernet/microchip/encx24j600.c +++ b/drivers/net/ethernet/microchip/encx24j600.c @@ -1093,7 +1093,7 @@ static int encx24j600_spi_probe(struct spi_device *spi) return ret; } -static int encx24j600_spi_remove(struct spi_device *spi) +static void encx24j600_spi_remove(struct spi_device *spi) { struct encx24j600_priv *priv = dev_get_drvdata(&spi->dev); @@ -1101,8 +1101,6 @@ static int encx24j600_spi_remove(struct spi_device *spi) kthread_stop(priv->kworker_task); free_netdev(priv->ndev); - - return 0; } static const struct spi_device_id encx24j600_spi_id_table[] = { diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c index 955cce644392..3c5494afd3c0 100644 --- a/drivers/net/ethernet/qualcomm/qca_spi.c +++ b/drivers/net/ethernet/qualcomm/qca_spi.c @@ -1001,7 +1001,7 @@ qca_spi_probe(struct spi_device *spi) return 0; } -static int +static void qca_spi_remove(struct spi_device *spi) { struct net_device *qcaspi_devs = spi_get_drvdata(spi); @@ -1011,8 +1011,6 @@ qca_spi_remove(struct spi_device *spi) unregister_netdev(qcaspi_devs); free_netdev(qcaspi_devs); - - return 0; } static const struct spi_device_id qca_spi_id[] = { diff --git a/drivers/net/ethernet/vertexcom/mse102x.c b/drivers/net/ethernet/vertexcom/mse102x.c index 89a31783fbb4..25739b182ac7 100644 --- a/drivers/net/ethernet/vertexcom/mse102x.c +++ b/drivers/net/ethernet/vertexcom/mse102x.c @@ -731,7 +731,7 @@ static int mse102x_probe_spi(struct spi_device *spi) return 0; } -static int mse102x_remove_spi(struct spi_device *spi) +static void mse102x_remove_spi(struct spi_device *spi) { struct mse102x_net *mse = dev_get_drvdata(&spi->dev); struct mse102x_net_spi *mses = to_mse102x_spi(mse); @@ -741,8 +741,6 @@ static int mse102x_remove_spi(struct spi_device *spi) mse102x_remove_device_debugfs(mses); unregister_netdev(mse->ndev); - - return 0; } static const struct of_device_id mse102x_match_table[] = { diff --git a/drivers/net/ethernet/wiznet/w5100-spi.c b/drivers/net/ethernet/wiznet/w5100-spi.c index 7779a36da3c8..7c52796273a4 100644 --- a/drivers/net/ethernet/wiznet/w5100-spi.c +++ b/drivers/net/ethernet/wiznet/w5100-spi.c @@ -461,11 +461,9 @@ static int w5100_spi_probe(struct spi_device *spi) return w5100_probe(&spi->dev, ops, priv_size, mac, spi->irq, -EINVAL); } -static int w5100_spi_remove(struct spi_device *spi) +static void w5100_spi_remove(struct spi_device *spi) { w5100_remove(&spi->dev); - - return 0; } static const struct spi_device_id w5100_spi_ids[] = { diff --git a/drivers/net/ieee802154/adf7242.c b/drivers/net/ieee802154/adf7242.c index 7db9cbd0f5de..6afdf1622944 100644 --- a/drivers/net/ieee802154/adf7242.c +++ b/drivers/net/ieee802154/adf7242.c @@ -1304,7 +1304,7 @@ static int adf7242_probe(struct spi_device *spi) return ret; } -static int adf7242_remove(struct spi_device *spi) +static void adf7242_remove(struct spi_device *spi) { struct adf7242_local *lp = spi_get_drvdata(spi); @@ -1316,8 +1316,6 @@ static int adf7242_remove(struct spi_device *spi) ieee802154_unregister_hw(lp->hw); mutex_destroy(&lp->bmux); ieee802154_free_hw(lp->hw); - - return 0; } static const struct of_device_id adf7242_of_match[] = { diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c index 7d67f41387f5..a4734323dc29 100644 --- a/drivers/net/ieee802154/at86rf230.c +++ b/drivers/net/ieee802154/at86rf230.c @@ -1759,7 +1759,7 @@ static int at86rf230_probe(struct spi_device *spi) return rc; } -static int at86rf230_remove(struct spi_device *spi) +static void at86rf230_remove(struct spi_device *spi) { struct at86rf230_local *lp = spi_get_drvdata(spi); @@ -1769,8 +1769,6 @@ static int at86rf230_remove(struct spi_device *spi) ieee802154_free_hw(lp->hw); at86rf230_debugfs_remove(); dev_dbg(&spi->dev, "unregistered at86rf230\n"); - - return 0; } static const struct of_device_id at86rf230_of_match[] = { diff --git a/drivers/net/ieee802154/ca8210.c b/drivers/net/ieee802154/ca8210.c index ece6ff6049f6..b499bbe4d48f 100644 --- a/drivers/net/ieee802154/ca8210.c +++ b/drivers/net/ieee802154/ca8210.c @@ -831,7 +831,7 @@ static void ca8210_rx_done(struct cas_control *cas_ctl) finish:; } -static int ca8210_remove(struct spi_device *spi_device); +static void ca8210_remove(struct spi_device *spi_device); /** * ca8210_spi_transfer_complete() - Called when a single spi transfer has @@ -3048,7 +3048,7 @@ static void ca8210_test_interface_clear(struct ca8210_priv *priv) * * Return: 0 or linux error code */ -static int ca8210_remove(struct spi_device *spi_device) +static void ca8210_remove(struct spi_device *spi_device) { struct ca8210_priv *priv; struct ca8210_platform_data *pdata; @@ -3088,8 +3088,6 @@ static int ca8210_remove(struct spi_device *spi_device) if (IS_ENABLED(CONFIG_IEEE802154_CA8210_DEBUGFS)) ca8210_test_interface_clear(priv); } - - return 0; } /** diff --git a/drivers/net/ieee802154/cc2520.c b/drivers/net/ieee802154/cc2520.c index 89c046b204e0..1e1f40f628a0 100644 --- a/drivers/net/ieee802154/cc2520.c +++ b/drivers/net/ieee802154/cc2520.c @@ -1213,7 +1213,7 @@ static int cc2520_probe(struct spi_device *spi) return ret; } -static int cc2520_remove(struct spi_device *spi) +static void cc2520_remove(struct spi_device *spi) { struct cc2520_private *priv = spi_get_drvdata(spi); @@ -1222,8 +1222,6 @@ static int cc2520_remove(struct spi_device *spi) ieee802154_unregister_hw(priv->hw); ieee802154_free_hw(priv->hw); - - return 0; } static const struct spi_device_id cc2520_ids[] = { diff --git a/drivers/net/ieee802154/mcr20a.c b/drivers/net/ieee802154/mcr20a.c index 8dc04e2590b1..a3af52a8e6dd 100644 --- a/drivers/net/ieee802154/mcr20a.c +++ b/drivers/net/ieee802154/mcr20a.c @@ -1335,7 +1335,7 @@ mcr20a_probe(struct spi_device *spi) return ret; } -static int mcr20a_remove(struct spi_device *spi) +static void mcr20a_remove(struct spi_device *spi) { struct mcr20a_local *lp = spi_get_drvdata(spi); @@ -1343,8 +1343,6 @@ static int mcr20a_remove(struct spi_device *spi) ieee802154_unregister_hw(lp->hw); ieee802154_free_hw(lp->hw); - - return 0; } static const struct of_device_id mcr20a_of_match[] = { diff --git a/drivers/net/ieee802154/mrf24j40.c b/drivers/net/ieee802154/mrf24j40.c index ff83e00b77af..ee4cfbf2c5cc 100644 --- a/drivers/net/ieee802154/mrf24j40.c +++ b/drivers/net/ieee802154/mrf24j40.c @@ -1356,7 +1356,7 @@ static int mrf24j40_probe(struct spi_device *spi) return ret; } -static int mrf24j40_remove(struct spi_device *spi) +static void mrf24j40_remove(struct spi_device *spi) { struct mrf24j40 *devrec = spi_get_drvdata(spi); @@ -1366,8 +1366,6 @@ static int mrf24j40_remove(struct spi_device *spi) ieee802154_free_hw(devrec->hw); /* TODO: Will ieee802154_free_device() wait until ->xmit() is * complete? */ - - return 0; } static const struct of_device_id mrf24j40_of_match[] = { diff --git a/drivers/net/phy/spi_ks8995.c b/drivers/net/phy/spi_ks8995.c index 8b5445a724ce..ff37f8ba6758 100644 --- a/drivers/net/phy/spi_ks8995.c +++ b/drivers/net/phy/spi_ks8995.c @@ -517,7 +517,7 @@ static int ks8995_probe(struct spi_device *spi) return 0; } -static int ks8995_remove(struct spi_device *spi) +static void ks8995_remove(struct spi_device *spi) { struct ks8995_switch *ks = spi_get_drvdata(spi); @@ -526,8 +526,6 @@ static int ks8995_remove(struct spi_device *spi) /* assert reset */ if (ks->pdata && gpio_is_valid(ks->pdata->reset_gpio)) gpiod_set_value(gpio_to_desc(ks->pdata->reset_gpio), 1); - - return 0; } /* ------------------------------------------------------------------------ */ diff --git a/drivers/net/wan/slic_ds26522.c b/drivers/net/wan/slic_ds26522.c index 8e3b1c717c10..6063552cea9b 100644 --- a/drivers/net/wan/slic_ds26522.c +++ b/drivers/net/wan/slic_ds26522.c @@ -194,10 +194,9 @@ static int slic_ds26522_init_configure(struct spi_device *spi) return 0; } -static int slic_ds26522_remove(struct spi_device *spi) +static void slic_ds26522_remove(struct spi_device *spi) { pr_info("DS26522 module uninstalled\n"); - return 0; } static int slic_ds26522_probe(struct spi_device *spi) diff --git a/drivers/net/wireless/intersil/p54/p54spi.c b/drivers/net/wireless/intersil/p54/p54spi.c index ab0fe8565851..f99b7ba69fc3 100644 --- a/drivers/net/wireless/intersil/p54/p54spi.c +++ b/drivers/net/wireless/intersil/p54/p54spi.c @@ -669,7 +669,7 @@ static int p54spi_probe(struct spi_device *spi) return ret; } -static int p54spi_remove(struct spi_device *spi) +static void p54spi_remove(struct spi_device *spi) { struct p54s_priv *priv = spi_get_drvdata(spi); @@ -684,8 +684,6 @@ static int p54spi_remove(struct spi_device *spi) mutex_destroy(&priv->mutex); p54_free_common(priv->hw); - - return 0; } diff --git a/drivers/net/wireless/marvell/libertas/if_spi.c b/drivers/net/wireless/marvell/libertas/if_spi.c index cd9f8ecf171f..ff1c7ec8c450 100644 --- a/drivers/net/wireless/marvell/libertas/if_spi.c +++ b/drivers/net/wireless/marvell/libertas/if_spi.c @@ -1195,7 +1195,7 @@ static int if_spi_probe(struct spi_device *spi) return err; } -static int libertas_spi_remove(struct spi_device *spi) +static void libertas_spi_remove(struct spi_device *spi) { struct if_spi_card *card = spi_get_drvdata(spi); struct lbs_private *priv = card->priv; @@ -1212,8 +1212,6 @@ static int libertas_spi_remove(struct spi_device *spi) if (card->pdata->teardown) card->pdata->teardown(spi); free_if_spi_card(card); - - return 0; } static int if_spi_suspend(struct device *dev) diff --git a/drivers/net/wireless/microchip/wilc1000/spi.c b/drivers/net/wireless/microchip/wilc1000/spi.c index 2c2ed4b09efd..d2db52289399 100644 --- a/drivers/net/wireless/microchip/wilc1000/spi.c +++ b/drivers/net/wireless/microchip/wilc1000/spi.c @@ -240,7 +240,7 @@ static int wilc_bus_probe(struct spi_device *spi) return ret; } -static int wilc_bus_remove(struct spi_device *spi) +static void wilc_bus_remove(struct spi_device *spi) { struct wilc *wilc = spi_get_drvdata(spi); struct wilc_spi *spi_priv = wilc->bus_data; @@ -248,8 +248,6 @@ static int wilc_bus_remove(struct spi_device *spi) clk_disable_unprepare(wilc->rtc_clk); wilc_netdev_cleanup(wilc); kfree(spi_priv); - - return 0; } static const struct of_device_id wilc_of_match[] = { diff --git a/drivers/net/wireless/st/cw1200/cw1200_spi.c b/drivers/net/wireless/st/cw1200/cw1200_spi.c index 271ed2ce2d7f..fe0d220da44d 100644 --- a/drivers/net/wireless/st/cw1200/cw1200_spi.c +++ b/drivers/net/wireless/st/cw1200/cw1200_spi.c @@ -423,7 +423,7 @@ static int cw1200_spi_probe(struct spi_device *func) } /* Disconnect Function to be called by SPI stack when device is disconnected */ -static int cw1200_spi_disconnect(struct spi_device *func) +static void cw1200_spi_disconnect(struct spi_device *func) { struct hwbus_priv *self = spi_get_drvdata(func); @@ -435,8 +435,6 @@ static int cw1200_spi_disconnect(struct spi_device *func) } } cw1200_spi_off(dev_get_platdata(&func->dev)); - - return 0; } static int __maybe_unused cw1200_spi_suspend(struct device *dev) diff --git a/drivers/net/wireless/ti/wl1251/spi.c b/drivers/net/wireless/ti/wl1251/spi.c index 5b894bd6237e..9df38726e8b0 100644 --- a/drivers/net/wireless/ti/wl1251/spi.c +++ b/drivers/net/wireless/ti/wl1251/spi.c @@ -327,14 +327,12 @@ static int wl1251_spi_probe(struct spi_device *spi) return ret; } -static int wl1251_spi_remove(struct spi_device *spi) +static void wl1251_spi_remove(struct spi_device *spi) { struct wl1251 *wl = spi_get_drvdata(spi); wl1251_free_hw(wl); regulator_disable(wl->vio); - - return 0; } static struct spi_driver wl1251_spi_driver = { diff --git a/drivers/net/wireless/ti/wlcore/spi.c b/drivers/net/wireless/ti/wlcore/spi.c index 354a7e1c3315..7eae1ec2eb2b 100644 --- a/drivers/net/wireless/ti/wlcore/spi.c +++ b/drivers/net/wireless/ti/wlcore/spi.c @@ -546,13 +546,11 @@ static int wl1271_probe(struct spi_device *spi) return ret; } -static int wl1271_remove(struct spi_device *spi) +static void wl1271_remove(struct spi_device *spi) { struct wl12xx_spi_glue *glue = spi_get_drvdata(spi); platform_device_unregister(glue->core); - - return 0; } static struct spi_driver wl1271_spi_driver = { diff --git a/drivers/nfc/nfcmrvl/spi.c b/drivers/nfc/nfcmrvl/spi.c index 5b833a9a83f8..a38e2fcdfd39 100644 --- a/drivers/nfc/nfcmrvl/spi.c +++ b/drivers/nfc/nfcmrvl/spi.c @@ -174,12 +174,11 @@ static int nfcmrvl_spi_probe(struct spi_device *spi) return 0; } -static int nfcmrvl_spi_remove(struct spi_device *spi) +static void nfcmrvl_spi_remove(struct spi_device *spi) { struct nfcmrvl_spi_drv_data *drv_data = spi_get_drvdata(spi); nfcmrvl_nci_unregister_dev(drv_data->priv); - return 0; } static const struct of_device_id of_nfcmrvl_spi_match[] __maybe_unused = { diff --git a/drivers/nfc/st-nci/spi.c b/drivers/nfc/st-nci/spi.c index 4e723992e74c..169eacc0a32a 100644 --- a/drivers/nfc/st-nci/spi.c +++ b/drivers/nfc/st-nci/spi.c @@ -263,13 +263,11 @@ static int st_nci_spi_probe(struct spi_device *dev) return r; } -static int st_nci_spi_remove(struct spi_device *dev) +static void st_nci_spi_remove(struct spi_device *dev) { struct st_nci_spi_phy *phy = spi_get_drvdata(dev); ndlc_remove(phy->ndlc); - - return 0; } static struct spi_device_id st_nci_spi_id_table[] = { diff --git a/drivers/nfc/st95hf/core.c b/drivers/nfc/st95hf/core.c index b23f47936473..ed704bb77226 100644 --- a/drivers/nfc/st95hf/core.c +++ b/drivers/nfc/st95hf/core.c @@ -1198,7 +1198,7 @@ static int st95hf_probe(struct spi_device *nfc_spi_dev) return ret; } -static int st95hf_remove(struct spi_device *nfc_spi_dev) +static void st95hf_remove(struct spi_device *nfc_spi_dev) { int result = 0; unsigned char reset_cmd = ST95HF_COMMAND_RESET; @@ -1236,8 +1236,6 @@ static int st95hf_remove(struct spi_device *nfc_spi_dev) /* disable regulator */ if (stcontext->st95hf_supply) regulator_disable(stcontext->st95hf_supply); - - return 0; } /* Register as SPI protocol driver */ diff --git a/drivers/nfc/trf7970a.c b/drivers/nfc/trf7970a.c index 29ca9c328df2..21d68664fe08 100644 --- a/drivers/nfc/trf7970a.c +++ b/drivers/nfc/trf7970a.c @@ -2144,7 +2144,7 @@ static int trf7970a_probe(struct spi_device *spi) return ret; } -static int trf7970a_remove(struct spi_device *spi) +static void trf7970a_remove(struct spi_device *spi) { struct trf7970a *trf = spi_get_drvdata(spi); @@ -2160,8 +2160,6 @@ static int trf7970a_remove(struct spi_device *spi) regulator_disable(trf->regulator); mutex_destroy(&trf->lock); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/platform/chrome/cros_ec_spi.c b/drivers/platform/chrome/cros_ec_spi.c index 713c58687721..8493af0f680e 100644 --- a/drivers/platform/chrome/cros_ec_spi.c +++ b/drivers/platform/chrome/cros_ec_spi.c @@ -786,13 +786,11 @@ static int cros_ec_spi_probe(struct spi_device *spi) return 0; } -static int cros_ec_spi_remove(struct spi_device *spi) +static void cros_ec_spi_remove(struct spi_device *spi) { struct cros_ec_device *ec_dev = spi_get_drvdata(spi); cros_ec_unregister(ec_dev); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/platform/olpc/olpc-xo175-ec.c b/drivers/platform/olpc/olpc-xo175-ec.c index 0d46706afd2d..4823bd2819f6 100644 --- a/drivers/platform/olpc/olpc-xo175-ec.c +++ b/drivers/platform/olpc/olpc-xo175-ec.c @@ -648,7 +648,7 @@ static struct olpc_ec_driver olpc_xo175_ec_driver = { .ec_cmd = olpc_xo175_ec_cmd, }; -static int olpc_xo175_ec_remove(struct spi_device *spi) +static void olpc_xo175_ec_remove(struct spi_device *spi) { if (pm_power_off == olpc_xo175_ec_power_off) pm_power_off = NULL; @@ -657,8 +657,6 @@ static int olpc_xo175_ec_remove(struct spi_device *spi) platform_device_unregister(olpc_ec); olpc_ec = NULL; - - return 0; } static int olpc_xo175_ec_probe(struct spi_device *spi) diff --git a/drivers/rtc/rtc-ds1302.c b/drivers/rtc/rtc-ds1302.c index 2f83adef966e..6d66ab5a8b17 100644 --- a/drivers/rtc/rtc-ds1302.c +++ b/drivers/rtc/rtc-ds1302.c @@ -185,10 +185,9 @@ static int ds1302_probe(struct spi_device *spi) return 0; } -static int ds1302_remove(struct spi_device *spi) +static void ds1302_remove(struct spi_device *spi) { spi_set_drvdata(spi, NULL); - return 0; } #ifdef CONFIG_OF diff --git a/drivers/rtc/rtc-ds1305.c b/drivers/rtc/rtc-ds1305.c index 9ef107b99b65..ed9360486953 100644 --- a/drivers/rtc/rtc-ds1305.c +++ b/drivers/rtc/rtc-ds1305.c @@ -720,7 +720,7 @@ static int ds1305_probe(struct spi_device *spi) return 0; } -static int ds1305_remove(struct spi_device *spi) +static void ds1305_remove(struct spi_device *spi) { struct ds1305 *ds1305 = spi_get_drvdata(spi); @@ -730,8 +730,6 @@ static int ds1305_remove(struct spi_device *spi) devm_free_irq(&spi->dev, spi->irq, ds1305); cancel_work_sync(&ds1305->work); } - - return 0; } static struct spi_driver ds1305_driver = { diff --git a/drivers/rtc/rtc-ds1343.c b/drivers/rtc/rtc-ds1343.c index f14ed6c96437..ed5a6ba89a3e 100644 --- a/drivers/rtc/rtc-ds1343.c +++ b/drivers/rtc/rtc-ds1343.c @@ -434,11 +434,9 @@ static int ds1343_probe(struct spi_device *spi) return 0; } -static int ds1343_remove(struct spi_device *spi) +static void ds1343_remove(struct spi_device *spi) { dev_pm_clear_wake_irq(&spi->dev); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/spi/spi-mem.c b/drivers/spi/spi-mem.c index 37f4443ce9a0..e9d83d65873b 100644 --- a/drivers/spi/spi-mem.c +++ b/drivers/spi/spi-mem.c @@ -854,15 +854,13 @@ static int spi_mem_probe(struct spi_device *spi) return memdrv->probe(mem); } -static int spi_mem_remove(struct spi_device *spi) +static void spi_mem_remove(struct spi_device *spi) { struct spi_mem_driver *memdrv = to_spi_mem_drv(spi->dev.driver); struct spi_mem *mem = spi_get_drvdata(spi); if (memdrv->remove) - return memdrv->remove(mem); - - return 0; + memdrv->remove(mem); } static void spi_mem_shutdown(struct spi_device *spi) diff --git a/drivers/spi/spi-slave-system-control.c b/drivers/spi/spi-slave-system-control.c index 169f3d595f60..d37cfe995a63 100644 --- a/drivers/spi/spi-slave-system-control.c +++ b/drivers/spi/spi-slave-system-control.c @@ -132,13 +132,12 @@ static int spi_slave_system_control_probe(struct spi_device *spi) return 0; } -static int spi_slave_system_control_remove(struct spi_device *spi) +static void spi_slave_system_control_remove(struct spi_device *spi) { struct spi_slave_system_control_priv *priv = spi_get_drvdata(spi); spi_slave_abort(spi); wait_for_completion(&priv->finished); - return 0; } static struct spi_driver spi_slave_system_control_driver = { diff --git a/drivers/spi/spi-slave-time.c b/drivers/spi/spi-slave-time.c index f2e07a392d68..f56c1afb8534 100644 --- a/drivers/spi/spi-slave-time.c +++ b/drivers/spi/spi-slave-time.c @@ -106,13 +106,12 @@ static int spi_slave_time_probe(struct spi_device *spi) return 0; } -static int spi_slave_time_remove(struct spi_device *spi) +static void spi_slave_time_remove(struct spi_device *spi) { struct spi_slave_time_priv *priv = spi_get_drvdata(spi); spi_slave_abort(spi); wait_for_completion(&priv->finished); - return 0; } static struct spi_driver spi_slave_time_driver = { diff --git a/drivers/spi/spi-tle62x0.c b/drivers/spi/spi-tle62x0.c index f8ad0709d015..a565352f6381 100644 --- a/drivers/spi/spi-tle62x0.c +++ b/drivers/spi/spi-tle62x0.c @@ -288,7 +288,7 @@ static int tle62x0_probe(struct spi_device *spi) return ret; } -static int tle62x0_remove(struct spi_device *spi) +static void tle62x0_remove(struct spi_device *spi) { struct tle62x0_state *st = spi_get_drvdata(spi); int ptr; @@ -298,7 +298,6 @@ static int tle62x0_remove(struct spi_device *spi) device_remove_file(&spi->dev, &dev_attr_status_show); kfree(st); - return 0; } static struct spi_driver tle62x0_driver = { diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 4599b121d744..ead9a132dcb9 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -404,15 +404,8 @@ static void spi_remove(struct device *dev) { const struct spi_driver *sdrv = to_spi_driver(dev->driver); - if (sdrv->remove) { - int ret; - - ret = sdrv->remove(to_spi_device(dev)); - if (ret) - dev_warn(dev, - "Failed to unbind driver (%pe), ignoring\n", - ERR_PTR(ret)); - } + if (sdrv->remove) + sdrv->remove(to_spi_device(dev)); dev_pm_domain_detach(dev, true); } diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c index a5cceca8b82b..9468f74308bd 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c @@ -803,7 +803,7 @@ static int spidev_probe(struct spi_device *spi) return status; } -static int spidev_remove(struct spi_device *spi) +static void spidev_remove(struct spi_device *spi) { struct spidev_data *spidev = spi_get_drvdata(spi); @@ -820,8 +820,6 @@ static int spidev_remove(struct spi_device *spi) if (spidev->users == 0) kfree(spidev); mutex_unlock(&device_list_lock); - - return 0; } static struct spi_driver spidev_spi_driver = { diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h index 6a7545b5bcd2..b68f5f9b7c78 100644 --- a/drivers/staging/fbtft/fbtft.h +++ b/drivers/staging/fbtft/fbtft.h @@ -286,12 +286,11 @@ static int fbtft_driver_probe_spi(struct spi_device *spi) \ return fbtft_probe_common(_display, spi, NULL); \ } \ \ -static int fbtft_driver_remove_spi(struct spi_device *spi) \ +static void fbtft_driver_remove_spi(struct spi_device *spi) \ { \ struct fb_info *info = spi_get_drvdata(spi); \ \ fbtft_remove_common(&spi->dev, info); \ - return 0; \ } \ \ static struct spi_driver fbtft_driver_spi_driver = { \ diff --git a/drivers/staging/pi433/pi433_if.c b/drivers/staging/pi433/pi433_if.c index 68c09fa016ed..1d31c35875e3 100644 --- a/drivers/staging/pi433/pi433_if.c +++ b/drivers/staging/pi433/pi433_if.c @@ -1264,7 +1264,7 @@ static int pi433_probe(struct spi_device *spi) return retval; } -static int pi433_remove(struct spi_device *spi) +static void pi433_remove(struct spi_device *spi) { struct pi433_device *device = spi_get_drvdata(spi); @@ -1284,8 +1284,6 @@ static int pi433_remove(struct spi_device *spi) kfree(device->rx_buffer); kfree(device); - - return 0; } static const struct of_device_id pi433_dt_ids[] = { diff --git a/drivers/staging/wfx/bus_spi.c b/drivers/staging/wfx/bus_spi.c index 55ffcd7c42e2..fa0ff66a457d 100644 --- a/drivers/staging/wfx/bus_spi.c +++ b/drivers/staging/wfx/bus_spi.c @@ -232,12 +232,11 @@ static int wfx_spi_probe(struct spi_device *func) return wfx_probe(bus->core); } -static int wfx_spi_remove(struct spi_device *func) +static void wfx_spi_remove(struct spi_device *func) { struct wfx_spi_priv *bus = spi_get_drvdata(func); wfx_release(bus->core); - return 0; } /* For dynamic driver binding, kernel does not use OF to match driver. It only diff --git a/drivers/tty/serial/max3100.c b/drivers/tty/serial/max3100.c index 3c92d4e01488..516cff362434 100644 --- a/drivers/tty/serial/max3100.c +++ b/drivers/tty/serial/max3100.c @@ -805,7 +805,7 @@ static int max3100_probe(struct spi_device *spi) return 0; } -static int max3100_remove(struct spi_device *spi) +static void max3100_remove(struct spi_device *spi) { struct max3100_port *s = spi_get_drvdata(spi); int i; @@ -828,13 +828,12 @@ static int max3100_remove(struct spi_device *spi) for (i = 0; i < MAX_MAX3100; i++) if (max3100s[i]) { mutex_unlock(&max3100s_lock); - return 0; + return; } pr_debug("removing max3100 driver\n"); uart_unregister_driver(&max3100_uart_driver); mutex_unlock(&max3100s_lock); - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c index dde0824b2fa5..3112b4a05448 100644 --- a/drivers/tty/serial/max310x.c +++ b/drivers/tty/serial/max310x.c @@ -1487,10 +1487,9 @@ static int max310x_spi_probe(struct spi_device *spi) return max310x_probe(&spi->dev, devtype, regmap, spi->irq); } -static int max310x_spi_remove(struct spi_device *spi) +static void max310x_spi_remove(struct spi_device *spi) { max310x_remove(&spi->dev); - return 0; } static const struct spi_device_id max310x_id_table[] = { diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c index 64e7e6c8145f..25d67b8c4db7 100644 --- a/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c @@ -1440,11 +1440,9 @@ static int sc16is7xx_spi_probe(struct spi_device *spi) return sc16is7xx_probe(&spi->dev, devtype, regmap, spi->irq); } -static int sc16is7xx_spi_remove(struct spi_device *spi) +static void sc16is7xx_spi_remove(struct spi_device *spi) { sc16is7xx_remove(&spi->dev); - - return 0; } static const struct spi_device_id sc16is7xx_spi_id_table[] = { diff --git a/drivers/usb/gadget/udc/max3420_udc.c b/drivers/usb/gadget/udc/max3420_udc.c index d2a2b20cc1ad..7d9bd16190c0 100644 --- a/drivers/usb/gadget/udc/max3420_udc.c +++ b/drivers/usb/gadget/udc/max3420_udc.c @@ -1292,7 +1292,7 @@ static int max3420_probe(struct spi_device *spi) return err; } -static int max3420_remove(struct spi_device *spi) +static void max3420_remove(struct spi_device *spi) { struct max3420_udc *udc = spi_get_drvdata(spi); unsigned long flags; @@ -1304,8 +1304,6 @@ static int max3420_remove(struct spi_device *spi) kthread_stop(udc->thread_task); spin_unlock_irqrestore(&udc->lock, flags); - - return 0; } static const struct of_device_id max3420_udc_of_match[] = { diff --git a/drivers/usb/host/max3421-hcd.c b/drivers/usb/host/max3421-hcd.c index 30de85a707fe..99a5523a79fb 100644 --- a/drivers/usb/host/max3421-hcd.c +++ b/drivers/usb/host/max3421-hcd.c @@ -1926,7 +1926,7 @@ max3421_probe(struct spi_device *spi) return retval; } -static int +static void max3421_remove(struct spi_device *spi) { struct max3421_hcd *max3421_hcd; @@ -1947,7 +1947,6 @@ max3421_remove(struct spi_device *spi) free_irq(spi->irq, hcd); usb_put_hcd(hcd); - return 0; } static const struct of_device_id max3421_of_match_table[] = { diff --git a/drivers/video/backlight/ams369fg06.c b/drivers/video/backlight/ams369fg06.c index 8a4361e95a11..522dd81110b8 100644 --- a/drivers/video/backlight/ams369fg06.c +++ b/drivers/video/backlight/ams369fg06.c @@ -506,12 +506,11 @@ static int ams369fg06_probe(struct spi_device *spi) return 0; } -static int ams369fg06_remove(struct spi_device *spi) +static void ams369fg06_remove(struct spi_device *spi) { struct ams369fg06 *lcd = spi_get_drvdata(spi); ams369fg06_power(lcd, FB_BLANK_POWERDOWN); - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/video/backlight/corgi_lcd.c b/drivers/video/backlight/corgi_lcd.c index 33f5d80495e6..0a57033ae31d 100644 --- a/drivers/video/backlight/corgi_lcd.c +++ b/drivers/video/backlight/corgi_lcd.c @@ -542,7 +542,7 @@ static int corgi_lcd_probe(struct spi_device *spi) return 0; } -static int corgi_lcd_remove(struct spi_device *spi) +static void corgi_lcd_remove(struct spi_device *spi) { struct corgi_lcd *lcd = spi_get_drvdata(spi); @@ -550,7 +550,6 @@ static int corgi_lcd_remove(struct spi_device *spi) lcd->bl_dev->props.brightness = 0; backlight_update_status(lcd->bl_dev); corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_POWERDOWN); - return 0; } static struct spi_driver corgi_lcd_driver = { diff --git a/drivers/video/backlight/ili922x.c b/drivers/video/backlight/ili922x.c index 328aba9cddad..e7b6bd827986 100644 --- a/drivers/video/backlight/ili922x.c +++ b/drivers/video/backlight/ili922x.c @@ -526,10 +526,9 @@ static int ili922x_probe(struct spi_device *spi) return 0; } -static int ili922x_remove(struct spi_device *spi) +static void ili922x_remove(struct spi_device *spi) { ili922x_poweroff(spi); - return 0; } static struct spi_driver ili922x_driver = { diff --git a/drivers/video/backlight/l4f00242t03.c b/drivers/video/backlight/l4f00242t03.c index 46f97d1c3d21..cc763cf15f53 100644 --- a/drivers/video/backlight/l4f00242t03.c +++ b/drivers/video/backlight/l4f00242t03.c @@ -223,12 +223,11 @@ static int l4f00242t03_probe(struct spi_device *spi) return 0; } -static int l4f00242t03_remove(struct spi_device *spi) +static void l4f00242t03_remove(struct spi_device *spi) { struct l4f00242t03_priv *priv = spi_get_drvdata(spi); l4f00242t03_lcd_power_set(priv->ld, FB_BLANK_POWERDOWN); - return 0; } static void l4f00242t03_shutdown(struct spi_device *spi) diff --git a/drivers/video/backlight/lms501kf03.c b/drivers/video/backlight/lms501kf03.c index f949b66dce1b..5c46df8022bf 100644 --- a/drivers/video/backlight/lms501kf03.c +++ b/drivers/video/backlight/lms501kf03.c @@ -364,12 +364,11 @@ static int lms501kf03_probe(struct spi_device *spi) return 0; } -static int lms501kf03_remove(struct spi_device *spi) +static void lms501kf03_remove(struct spi_device *spi) { struct lms501kf03 *lcd = spi_get_drvdata(spi); lms501kf03_power(lcd, FB_BLANK_POWERDOWN); - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/video/backlight/ltv350qv.c b/drivers/video/backlight/ltv350qv.c index 5cbf621e48bd..b6d373af6e3f 100644 --- a/drivers/video/backlight/ltv350qv.c +++ b/drivers/video/backlight/ltv350qv.c @@ -255,12 +255,11 @@ static int ltv350qv_probe(struct spi_device *spi) return 0; } -static int ltv350qv_remove(struct spi_device *spi) +static void ltv350qv_remove(struct spi_device *spi) { struct ltv350qv *lcd = spi_get_drvdata(spi); ltv350qv_power(lcd, FB_BLANK_POWERDOWN); - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/video/backlight/tdo24m.c b/drivers/video/backlight/tdo24m.c index 0de044dcafd5..fc6fbaf85594 100644 --- a/drivers/video/backlight/tdo24m.c +++ b/drivers/video/backlight/tdo24m.c @@ -397,12 +397,11 @@ static int tdo24m_probe(struct spi_device *spi) return 0; } -static int tdo24m_remove(struct spi_device *spi) +static void tdo24m_remove(struct spi_device *spi) { struct tdo24m *lcd = spi_get_drvdata(spi); tdo24m_power(lcd, FB_BLANK_POWERDOWN); - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/video/backlight/tosa_lcd.c b/drivers/video/backlight/tosa_lcd.c index 38765544345b..23d6c6bf0f54 100644 --- a/drivers/video/backlight/tosa_lcd.c +++ b/drivers/video/backlight/tosa_lcd.c @@ -232,15 +232,13 @@ static int tosa_lcd_probe(struct spi_device *spi) return ret; } -static int tosa_lcd_remove(struct spi_device *spi) +static void tosa_lcd_remove(struct spi_device *spi) { struct tosa_lcd_data *data = spi_get_drvdata(spi); i2c_unregister_device(data->i2c); tosa_lcd_tg_off(data); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/video/backlight/vgg2432a4.c b/drivers/video/backlight/vgg2432a4.c index 3567b45f9ba9..bfc1913e8b55 100644 --- a/drivers/video/backlight/vgg2432a4.c +++ b/drivers/video/backlight/vgg2432a4.c @@ -233,11 +233,9 @@ static int vgg2432a4_probe(struct spi_device *spi) return 0; } -static int vgg2432a4_remove(struct spi_device *spi) +static void vgg2432a4_remove(struct spi_device *spi) { ili9320_remove(spi_get_drvdata(spi)); - - return 0; } static void vgg2432a4_shutdown(struct spi_device *spi) diff --git a/drivers/video/fbdev/omap/lcd_mipid.c b/drivers/video/fbdev/omap/lcd_mipid.c index a75ae0c9b14c..03cff39d392d 100644 --- a/drivers/video/fbdev/omap/lcd_mipid.c +++ b/drivers/video/fbdev/omap/lcd_mipid.c @@ -570,14 +570,12 @@ static int mipid_spi_probe(struct spi_device *spi) return 0; } -static int mipid_spi_remove(struct spi_device *spi) +static void mipid_spi_remove(struct spi_device *spi) { struct mipid_device *md = dev_get_drvdata(&spi->dev); mipid_disable(&md->panel); kfree(md); - - return 0; } static struct spi_driver mipid_spi_driver = { diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c index 1bec7a4422e8..aab67721263d 100644 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c @@ -316,7 +316,7 @@ static int lb035q02_panel_spi_probe(struct spi_device *spi) return r; } -static int lb035q02_panel_spi_remove(struct spi_device *spi) +static void lb035q02_panel_spi_remove(struct spi_device *spi) { struct panel_drv_data *ddata = spi_get_drvdata(spi); struct omap_dss_device *dssdev = &ddata->dssdev; @@ -328,8 +328,6 @@ static int lb035q02_panel_spi_remove(struct spi_device *spi) lb035q02_disconnect(dssdev); omap_dss_put_device(in); - - return 0; } static const struct of_device_id lb035q02_of_match[] = { diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-nec-nl8048hl11.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-nec-nl8048hl11.c index dff9ebbadfc0..be9910ff6e62 100644 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-nec-nl8048hl11.c +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-nec-nl8048hl11.c @@ -327,7 +327,7 @@ static int nec_8048_probe(struct spi_device *spi) return r; } -static int nec_8048_remove(struct spi_device *spi) +static void nec_8048_remove(struct spi_device *spi) { struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); struct omap_dss_device *dssdev = &ddata->dssdev; @@ -341,8 +341,6 @@ static int nec_8048_remove(struct spi_device *spi) nec_8048_disconnect(dssdev); omap_dss_put_device(in); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c index 8d8b5ff7d43c..a909b5385ca5 100644 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c @@ -857,7 +857,7 @@ static int acx565akm_probe(struct spi_device *spi) return r; } -static int acx565akm_remove(struct spi_device *spi) +static void acx565akm_remove(struct spi_device *spi) { struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); struct omap_dss_device *dssdev = &ddata->dssdev; @@ -874,8 +874,6 @@ static int acx565akm_remove(struct spi_device *spi) acx565akm_disconnect(dssdev); omap_dss_put_device(in); - - return 0; } static const struct of_device_id acx565akm_of_match[] = { diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c index 595ebd8bd5dc..3c0f887d3092 100644 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c @@ -425,7 +425,7 @@ static int td028ttec1_panel_probe(struct spi_device *spi) return r; } -static int td028ttec1_panel_remove(struct spi_device *spi) +static void td028ttec1_panel_remove(struct spi_device *spi) { struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); struct omap_dss_device *dssdev = &ddata->dssdev; @@ -439,8 +439,6 @@ static int td028ttec1_panel_remove(struct spi_device *spi) td028ttec1_panel_disconnect(dssdev); omap_dss_put_device(in); - - return 0; } static const struct of_device_id td028ttec1_of_match[] = { diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c index afac1d9445aa..58bbba7c037f 100644 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c @@ -564,7 +564,7 @@ static int tpo_td043_probe(struct spi_device *spi) return r; } -static int tpo_td043_remove(struct spi_device *spi) +static void tpo_td043_remove(struct spi_device *spi) { struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); struct omap_dss_device *dssdev = &ddata->dssdev; @@ -580,8 +580,6 @@ static int tpo_td043_remove(struct spi_device *spi) omap_dss_put_device(in); sysfs_remove_group(&spi->dev.kobj, &tpo_td043_attr_group); - - return 0; } #ifdef CONFIG_PM_SLEEP diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index 7ab3fed7b804..c84e61b99c7b 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h @@ -280,7 +280,7 @@ struct spi_message; struct spi_driver { const struct spi_device_id *id_table; int (*probe)(struct spi_device *spi); - int (*remove)(struct spi_device *spi); + void (*remove)(struct spi_device *spi); void (*shutdown)(struct spi_device *spi); struct device_driver driver; }; diff --git a/sound/pci/hda/cs35l41_hda_spi.c b/sound/pci/hda/cs35l41_hda_spi.c index 9f8123893cc8..50eb6c0e6658 100644 --- a/sound/pci/hda/cs35l41_hda_spi.c +++ b/sound/pci/hda/cs35l41_hda_spi.c @@ -28,11 +28,9 @@ static int cs35l41_hda_spi_probe(struct spi_device *spi) devm_regmap_init_spi(spi, &cs35l41_regmap_spi)); } -static int cs35l41_hda_spi_remove(struct spi_device *spi) +static void cs35l41_hda_spi_remove(struct spi_device *spi) { cs35l41_hda_remove(&spi->dev); - - return 0; } static const struct spi_device_id cs35l41_hda_spi_id[] = { diff --git a/sound/soc/codecs/adau1761-spi.c b/sound/soc/codecs/adau1761-spi.c index 655689c9778a..7c9242c2ff94 100644 --- a/sound/soc/codecs/adau1761-spi.c +++ b/sound/soc/codecs/adau1761-spi.c @@ -45,10 +45,9 @@ static int adau1761_spi_probe(struct spi_device *spi) id->driver_data, adau1761_spi_switch_mode); } -static int adau1761_spi_remove(struct spi_device *spi) +static void adau1761_spi_remove(struct spi_device *spi) { adau17x1_remove(&spi->dev); - return 0; } static const struct spi_device_id adau1761_spi_id[] = { diff --git a/sound/soc/codecs/adau1781-spi.c b/sound/soc/codecs/adau1781-spi.c index bb5613574786..1a09633d5a88 100644 --- a/sound/soc/codecs/adau1781-spi.c +++ b/sound/soc/codecs/adau1781-spi.c @@ -45,10 +45,9 @@ static int adau1781_spi_probe(struct spi_device *spi) id->driver_data, adau1781_spi_switch_mode); } -static int adau1781_spi_remove(struct spi_device *spi) +static void adau1781_spi_remove(struct spi_device *spi) { adau17x1_remove(&spi->dev); - return 0; } static const struct spi_device_id adau1781_spi_id[] = { diff --git a/sound/soc/codecs/cs35l41-spi.c b/sound/soc/codecs/cs35l41-spi.c index 6dfd5459aa20..169221a5b09f 100644 --- a/sound/soc/codecs/cs35l41-spi.c +++ b/sound/soc/codecs/cs35l41-spi.c @@ -55,13 +55,11 @@ static int cs35l41_spi_probe(struct spi_device *spi) return cs35l41_probe(cs35l41, pdata); } -static int cs35l41_spi_remove(struct spi_device *spi) +static void cs35l41_spi_remove(struct spi_device *spi) { struct cs35l41_private *cs35l41 = spi_get_drvdata(spi); cs35l41_remove(cs35l41); - - return 0; } #ifdef CONFIG_OF diff --git a/sound/soc/codecs/pcm3168a-spi.c b/sound/soc/codecs/pcm3168a-spi.c index ecd379f308e6..b5b08046f545 100644 --- a/sound/soc/codecs/pcm3168a-spi.c +++ b/sound/soc/codecs/pcm3168a-spi.c @@ -26,11 +26,9 @@ static int pcm3168a_spi_probe(struct spi_device *spi) return pcm3168a_probe(&spi->dev, regmap); } -static int pcm3168a_spi_remove(struct spi_device *spi) +static void pcm3168a_spi_remove(struct spi_device *spi) { pcm3168a_remove(&spi->dev); - - return 0; } static const struct spi_device_id pcm3168a_spi_id[] = { diff --git a/sound/soc/codecs/pcm512x-spi.c b/sound/soc/codecs/pcm512x-spi.c index 7cf559b47e1c..4d29e7196380 100644 --- a/sound/soc/codecs/pcm512x-spi.c +++ b/sound/soc/codecs/pcm512x-spi.c @@ -26,10 +26,9 @@ static int pcm512x_spi_probe(struct spi_device *spi) return pcm512x_probe(&spi->dev, regmap); } -static int pcm512x_spi_remove(struct spi_device *spi) +static void pcm512x_spi_remove(struct spi_device *spi) { pcm512x_remove(&spi->dev); - return 0; } static const struct spi_device_id pcm512x_spi_id[] = { diff --git a/sound/soc/codecs/tlv320aic32x4-spi.c b/sound/soc/codecs/tlv320aic32x4-spi.c index a8958cd1c692..03cce8d6404f 100644 --- a/sound/soc/codecs/tlv320aic32x4-spi.c +++ b/sound/soc/codecs/tlv320aic32x4-spi.c @@ -46,11 +46,9 @@ static int aic32x4_spi_probe(struct spi_device *spi) return aic32x4_probe(&spi->dev, regmap); } -static int aic32x4_spi_remove(struct spi_device *spi) +static void aic32x4_spi_remove(struct spi_device *spi) { aic32x4_remove(&spi->dev); - - return 0; } static const struct spi_device_id aic32x4_spi_id[] = { diff --git a/sound/soc/codecs/tlv320aic3x-spi.c b/sound/soc/codecs/tlv320aic3x-spi.c index 494e84402232..deed6ec7e081 100644 --- a/sound/soc/codecs/tlv320aic3x-spi.c +++ b/sound/soc/codecs/tlv320aic3x-spi.c @@ -35,11 +35,9 @@ static int aic3x_spi_probe(struct spi_device *spi) return aic3x_probe(&spi->dev, regmap, id->driver_data); } -static int aic3x_spi_remove(struct spi_device *spi) +static void aic3x_spi_remove(struct spi_device *spi) { aic3x_remove(&spi->dev); - - return 0; } static const struct spi_device_id aic3x_spi_id[] = { diff --git a/sound/soc/codecs/wm0010.c b/sound/soc/codecs/wm0010.c index 28b4656c4e14..1bef1c500c8e 100644 --- a/sound/soc/codecs/wm0010.c +++ b/sound/soc/codecs/wm0010.c @@ -969,7 +969,7 @@ static int wm0010_spi_probe(struct spi_device *spi) return 0; } -static int wm0010_spi_remove(struct spi_device *spi) +static void wm0010_spi_remove(struct spi_device *spi) { struct wm0010_priv *wm0010 = spi_get_drvdata(spi); @@ -980,8 +980,6 @@ static int wm0010_spi_remove(struct spi_device *spi) if (wm0010->irq) free_irq(wm0010->irq, wm0010); - - return 0; } static struct spi_driver wm0010_spi_driver = { diff --git a/sound/soc/codecs/wm8804-spi.c b/sound/soc/codecs/wm8804-spi.c index 9a8da1511c34..628568724c20 100644 --- a/sound/soc/codecs/wm8804-spi.c +++ b/sound/soc/codecs/wm8804-spi.c @@ -24,10 +24,9 @@ static int wm8804_spi_probe(struct spi_device *spi) return wm8804_probe(&spi->dev, regmap); } -static int wm8804_spi_remove(struct spi_device *spi) +static void wm8804_spi_remove(struct spi_device *spi) { wm8804_remove(&spi->dev); - return 0; } static const struct of_device_id wm8804_of_match[] = { diff --git a/sound/spi/at73c213.c b/sound/spi/at73c213.c index 76c0e37a838c..56d2c712e257 100644 --- a/sound/spi/at73c213.c +++ b/sound/spi/at73c213.c @@ -1001,7 +1001,7 @@ static int snd_at73c213_probe(struct spi_device *spi) return retval; } -static int snd_at73c213_remove(struct spi_device *spi) +static void snd_at73c213_remove(struct spi_device *spi) { struct snd_card *card = dev_get_drvdata(&spi->dev); struct snd_at73c213 *chip = card->private_data; @@ -1066,8 +1066,6 @@ static int snd_at73c213_remove(struct spi_device *spi) ssc_free(chip->ssc); snd_card_free(card); - - return 0; } #ifdef CONFIG_PM_SLEEP -- 2.34.1