Linux Input/HID development
 help / color / mirror / Atom feed
* [PATCH] Input: Remove usage of the deprecated ida_simple_xx() API
From: Christophe JAILLET @ 2024-01-15 20:19 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: linux-kernel, kernel-janitors, Christophe JAILLET, linux-input

ida_alloc() and ida_free() should be preferred to the deprecated
ida_simple_get() and ida_simple_remove().

Note that the upper limit of ida_simple_get() is exclusive, but the one of
ida_alloc_range() is inclusive. So a -1 has been added when needed.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/input/input.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/input/input.c b/drivers/input/input.c
index f71ea4fb173f..de7884a5be39 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -2629,17 +2629,15 @@ int input_get_new_minor(int legacy_base, unsigned int legacy_num,
 	 * locking is needed here.
 	 */
 	if (legacy_base >= 0) {
-		int minor = ida_simple_get(&input_ida,
-					   legacy_base,
-					   legacy_base + legacy_num,
-					   GFP_KERNEL);
+		int minor = ida_alloc_range(&input_ida, legacy_base,
+					    legacy_base + legacy_num - 1,
+					    GFP_KERNEL);
 		if (minor >= 0 || !allow_dynamic)
 			return minor;
 	}
 
-	return ida_simple_get(&input_ida,
-			      INPUT_FIRST_DYNAMIC_DEV, INPUT_MAX_CHAR_DEVICES,
-			      GFP_KERNEL);
+	return ida_alloc_range(&input_ida, INPUT_FIRST_DYNAMIC_DEV,
+			       INPUT_MAX_CHAR_DEVICES - 1, GFP_KERNEL);
 }
 EXPORT_SYMBOL(input_get_new_minor);
 
@@ -2652,7 +2650,7 @@ EXPORT_SYMBOL(input_get_new_minor);
  */
 void input_free_minor(unsigned int minor)
 {
-	ida_simple_remove(&input_ida, minor);
+	ida_free(&input_ida, minor);
 }
 EXPORT_SYMBOL(input_free_minor);
 
-- 
2.43.0


^ permalink raw reply related

* [PATCH 04/33] Input: pxspad - follow renaming of SPI "master" to "controller"
From: Uwe Kleine-König @ 2024-01-15 20:12 UTC (permalink / raw)
  To: Mark Brown, Geert Uytterhoeven
  Cc: linux-spi, kernel, Dmitry Torokhov, linux-input
In-Reply-To: <cover.1705348269.git.u.kleine-koenig@pengutronix.de>

In commit 8caab75fd2c2 ("spi: Generalize SPI "master" to "controller"")
some functions and struct members were renamed. To not break all drivers
compatibility macros were provided.

To be able to remove these compatibility macros push the renaming into
this driver.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/input/joystick/psxpad-spi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/input/joystick/psxpad-spi.c b/drivers/input/joystick/psxpad-spi.c
index de734a927b4d..c47fc5f34bd0 100644
--- a/drivers/input/joystick/psxpad-spi.c
+++ b/drivers/input/joystick/psxpad-spi.c
@@ -342,8 +342,8 @@ static int psxpad_spi_probe(struct spi_device *spi)
 	spi->mode = SPI_MODE_3;
 	spi->bits_per_word = 8;
 	/* (PlayStation 1/2 joypad might be possible works 250kHz/500kHz) */
-	spi->master->min_speed_hz = 125000;
-	spi->master->max_speed_hz = 125000;
+	spi->controller->min_speed_hz = 125000;
+	spi->controller->max_speed_hz = 125000;
 	spi_setup(spi);
 
 	/* pad settings */
-- 
2.43.0


^ permalink raw reply related

* [PATCH 05/33] Input: synaptics-rmi4 - follow renaming of SPI "master" to "controller"
From: Uwe Kleine-König @ 2024-01-15 20:12 UTC (permalink / raw)
  To: Mark Brown, Geert Uytterhoeven
  Cc: linux-spi, kernel, Dmitry Torokhov, Ulf Hansson,
	Greg Kroah-Hartman, Rayyan Ansari, Andy Shevchenko,
	Jonathan Cameron, linux-input
In-Reply-To: <cover.1705348269.git.u.kleine-koenig@pengutronix.de>

In commit 8caab75fd2c2 ("spi: Generalize SPI "master" to "controller"")
some functions and struct members were renamed. To not break all drivers
compatibility macros were provided.

To be able to remove these compatibility macros push the renaming into
this driver.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/input/rmi4/rmi_spi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/input/rmi4/rmi_spi.c b/drivers/input/rmi4/rmi_spi.c
index 07c866f42296..9d92129aa432 100644
--- a/drivers/input/rmi4/rmi_spi.c
+++ b/drivers/input/rmi4/rmi_spi.c
@@ -375,7 +375,7 @@ static int rmi_spi_probe(struct spi_device *spi)
 	struct rmi_device_platform_data *spi_pdata = spi->dev.platform_data;
 	int error;
 
-	if (spi->master->flags & SPI_CONTROLLER_HALF_DUPLEX)
+	if (spi->controller->flags & SPI_CONTROLLER_HALF_DUPLEX)
 		return -EINVAL;
 
 	rmi_spi = devm_kzalloc(&spi->dev, sizeof(struct rmi_spi_xport),
-- 
2.43.0


^ permalink raw reply related

* [PATCH 00/33] spi: get rid of some legacy macros
From: Uwe Kleine-König @ 2024-01-15 20:12 UTC (permalink / raw)
  To: Mark Brown, Geert Uytterhoeven
  Cc: linux-spi, kernel, Moritz Fischer, Wu Hao, Xu Yilun, Tom Rix,
	linux-fpga, Alexander Aring, Stefan Schmidt, Miquel Raynal,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	linux-wpan, netdev, Lars-Peter Clausen, Michael Hennerich,
	Jonathan Cameron, linux-iio, Dmitry Torokhov, linux-input,
	Ulf Hansson, Greg Kroah-Hartman, Rayyan Ansari, Andy Shevchenko,
	Jonathan Cameron, Martin Tuma, Mauro Carvalho Chehab, linux-media,
	Sergey Kozlov, Arnd Bergmann, Yang Yingliang, linux-mmc,
	Richard Weinberger, Vignesh Raghavendra, Heiko Stuebner,
	Linus Walleij, Amit Kumar Mahapatra via Alsa-devel, Rob Herring,
	linux-mtd, Martin Blumenstingl, Jernej Skrabec, Nicolas Ferre,
	Pali Rohár, Ronald Wahl, Benson Leung, Tzung-Bi Shih,
	Guenter Roeck, chrome-platform, Michal Simek, Max Filippov,
	linux-arm-kernel, Bjorn Andersson, Konrad Dybcio, linux-arm-msm,
	Matthias Brugger, AngeloGioacchino Del Regno, linux-mediatek,
	Thomas Zimmermann, Javier Martinez Canillas, Sam Ravnborg,
	Amit Kumar Mahapatra, dri-devel, linux-fbdev, linux-staging,
	Rui Miguel Silva, Viresh Kumar, Johan Hovold, Alex Elder,
	greybus-dev, Peter Huewe, Jarkko Sakkinen, Jason Gunthorpe,
	linux-integrity, Herve Codina, Aaro Koskinen, Krzysztof Kozlowski,
	linux-usb, Helge Deller, Dario Binacchi, Kalle Valo,
	Dmitry Antipov, libertas-dev, linux-wireless, Jonathan Corbet,
	James Clark, Bjorn Helgaas, linux-doc

Hello,

In commit 8caab75fd2c2 ("spi: Generalize SPI "master" to "controller"")
some functions were renamed. Further some compat defines were introduced
to map the old names to the new ones.

In this series all drivers still using the old names are changed to use
the new ones and then in patch #32 the compat defines are dropped.
Variables and struct members of type pointer to struct spi_controller that were
named "master" (matching the old name of spi_controller) were renamed to
"ctlr", which slightly increased the count of touched lines, but is nice
for consistency.

Patch #18 and #19 touch the same driver, otherwise the patches #1 - #31
are pairwise independent and could be applied by their respective
maintainers. The alternative is to let all patches go via the spi tree.
Mark, what's your preference here?

Patch #33 updates the documentation. (This one is a bit fuzzy, because
it also does some s/master/host/ which doesn't match the remainder of
the series). Also patch #18 is an improvement I noticed while touching
this driver that doesn't match the series' topic. I still kept it
included here. If you should not like it, it can just be dropped.

Best regards
Uwe

Uwe Kleine-König (33):
  fpga: ice40-spi: Follow renaming of SPI "master" to "controller"
  ieee802154: ca8210: Follow renaming of SPI "master" to "controller"
  iio: adc: ad_sigma_delta: Follow renaming of SPI "master" to "controller"
  Input: pxspad - follow renaming of SPI "master" to "controller"
  Input: synaptics-rmi4 - follow renaming of SPI "master" to "controller"
  media: mgb4: Follow renaming of SPI "master" to "controller"
  media: netup_unidvb: Follow renaming of SPI "master" to "controller"
  media: usb/msi2500: Follow renaming of SPI "master" to "controller"
  media: v4l2-subdev: Follow renaming of SPI "master" to "controller"
  misc: gehc-achc: Follow renaming of SPI "master" to "controller"
  mmc: mmc_spi: Follow renaming of SPI "master" to "controller"
  mtd: dataflash: Follow renaming of SPI "master" to "controller"
  mtd: rawnand: fsl_elbc: Let .probe retry if local bus is missing
  net: ks8851: Follow renaming of SPI "master" to "controller"
  net: vertexcom: mse102x: Follow renaming of SPI "master" to "controller"
  platform/chrome: cros_ec_spi: Follow renaming of SPI "master" to "controller"
  spi: bitbang: Follow renaming of SPI "master" to "controller"
  spi: cadence-quadspi: Don't emit error message on allocation error
  spi: cadence-quadspi: Follow renaming of SPI "master" to "controller"
  spi: cavium: Follow renaming of SPI "master" to "controller"
  spi: geni-qcom: Follow renaming of SPI "master" to "controller"
  spi: loopback-test: Follow renaming of SPI "master" to "controller"
  spi: slave-mt27xx: Follow renaming of SPI "master" to "controller"
  spi: spidev: Follow renaming of SPI "master" to "controller"
  staging: fbtft: Follow renaming of SPI "master" to "controller"
  staging: greybus: spi: Follow renaming of SPI "master" to "controller"
  tpm_tis_spi: Follow renaming of SPI "master" to "controller"
  usb: gadget: max3420_udc: Follow renaming of SPI "master" to "controller"
  video: fbdev: mmp: Follow renaming of SPI "master" to "controller"
  wifi: libertas: Follow renaming of SPI "master" to "controller"
  spi: fsl-lib: Follow renaming of SPI "master" to "controller"
  spi: Drop compat layer from renaming "master" to "controller"
  Documentation: spi: Update documentation for renaming "master" to "controller"

 .../driver-api/driver-model/devres.rst        |  2 +-
 Documentation/spi/spi-summary.rst             | 74 +++++++++----------
 drivers/char/tpm/tpm_tis_spi_main.c           |  4 +-
 drivers/fpga/ice40-spi.c                      |  4 +-
 drivers/iio/adc/ad_sigma_delta.c              | 14 ++--
 drivers/input/joystick/psxpad-spi.c           |  4 +-
 drivers/input/rmi4/rmi_spi.c                  |  2 +-
 drivers/media/pci/mgb4/mgb4_core.c            | 14 ++--
 .../media/pci/netup_unidvb/netup_unidvb_spi.c | 48 ++++++------
 drivers/media/usb/msi2500/msi2500.c           | 38 +++++-----
 drivers/media/v4l2-core/v4l2-spi.c            |  4 +-
 drivers/misc/gehc-achc.c                      |  8 +-
 drivers/mmc/host/mmc_spi.c                    |  6 +-
 drivers/mtd/devices/mtd_dataflash.c           |  2 +-
 drivers/mtd/nand/raw/fsl_elbc_nand.c          |  3 +-
 drivers/net/ethernet/micrel/ks8851_spi.c      |  4 +-
 drivers/net/ethernet/vertexcom/mse102x.c      |  2 +-
 drivers/net/ieee802154/ca8210.c               |  2 +-
 .../net/wireless/marvell/libertas/if_spi.c    |  2 +-
 drivers/platform/chrome/cros_ec_spi.c         |  8 +-
 drivers/spi/spi-ath79.c                       |  4 +-
 drivers/spi/spi-bitbang.c                     | 64 ++++++++--------
 drivers/spi/spi-butterfly.c                   |  6 +-
 drivers/spi/spi-cadence-quadspi.c             |  7 +-
 drivers/spi/spi-cavium.c                      |  6 +-
 drivers/spi/spi-cavium.h                      |  2 +-
 drivers/spi/spi-davinci.c                     |  6 +-
 drivers/spi/spi-fsl-lib.c                     | 14 ++--
 drivers/spi/spi-geni-qcom.c                   |  2 +-
 drivers/spi/spi-gpio.c                        |  2 +-
 drivers/spi/spi-lm70llp.c                     |  6 +-
 drivers/spi/spi-loopback-test.c               |  4 +-
 drivers/spi/spi-oc-tiny.c                     |  6 +-
 drivers/spi/spi-omap-uwire.c                  |  4 +-
 drivers/spi/spi-slave-mt27xx.c                |  2 +-
 drivers/spi/spi-xilinx.c                      |  4 +-
 drivers/spi/spi-xtensa-xtfpga.c               |  2 +-
 drivers/spi/spi.c                             |  2 +-
 drivers/spi/spidev.c                          |  2 +-
 drivers/staging/fbtft/fbtft-core.c            |  4 +-
 drivers/staging/greybus/spilib.c              | 66 ++++++++---------
 drivers/usb/gadget/udc/max3420_udc.c          |  2 +-
 drivers/video/fbdev/mmp/hw/mmp_spi.c          | 26 +++----
 include/linux/spi/spi.h                       | 20 +----
 include/linux/spi/spi_bitbang.h               |  2 +-
 include/media/v4l2-common.h                   |  6 +-
 46 files changed, 249 insertions(+), 267 deletions(-)


base-commit: 8d04a7e2ee3fd6aabb8096b00c64db0d735bc874
-- 
2.43.0


^ permalink raw reply

* Re: [PATCH v2] Input: atkbd - Skip ATKBD_CMD_GETID in translated mode
From: Barnabás Pőcze @ 2024-01-16  0:21 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Dmitry Torokhov, linux-input, Shang Ye, gurevitch, Egor Ignatov,
	Anton Zhilyaev
In-Reply-To: <20231115174625.7462-1-hdegoede@redhat.com>

Hi


2023. november 15., szerda 18:46 keltezéssel, Hans de Goede írta:

> There have been multiple reports of keyboard issues on recent laptop models
> which can be worked around by setting i8042.dumbkbd, with the downside
> being this breaks the capslock LED.
> 
> It seems that these issues are caused by recent laptops getting confused by
> ATKBD_CMD_GETID. Rather then adding and endless growing list of quirks for
> this, just skip ATKBD_CMD_GETID alltogether on laptops in translated mode.
> 
> The main goal of sending ATKBD_CMD_GETID is to skip binding to ps/2
> mice/touchpads and those are never used in translated mode.
> 
> Examples of laptop models which benefit from skipping ATKBD_CMD_GETID:
> 
> * "HP Laptop 15s-fq2xxx", "HP laptop 15s-fq4xxx" and "HP Laptop 15-dy2xxx"
>   models the kbd stops working for the first 2 - 5 minutes after boot
>   (waiting for EC watchdog reset?)
> 
> * On "HP Spectre x360 13-aw2xxx" atkbd fails to probe the keyboard
> 
> * At least 9 different Lenovo models have issues with ATKBD_CMD_GETID, see:
>   https://github.com/yescallop/atkbd-nogetid
> 
> This has been tested on:
> 
> 1. A MSI B550M PRO-VDH WIFI desktop, where the i8042 controller is not
>    in translated mode when no keyboard is plugged in and with a ps/2 kbd
>    a "AT Translated Set 2 keyboard" /dev/input/event# node shows up
> 
> 2. A Lenovo ThinkPad X1 Yoga gen 8 (always has a translated set 2 keyboard)

Just wanted to briefly mention that this broke my hwdb configuration because the
version field of the device (as shown in `/proc/bus/input/devices`) has changed
and it was included in the hwdb match rule.


Regards,
Barnabás Pőcze


> 
> Reported-by: Shang Ye <yesh25@mail2.sysu.edu.cn>
> Closes: https://lore.kernel.org/linux-input/886D6167733841AE+20231017135318.11142-1-yesh25@mail2.sysu.edu.cn/
> Closes: https://github.com/yescallop/atkbd-nogetid
> Reported-by: gurevitch <mail@gurevit.ch>
> Closes: https://lore.kernel.org/linux-input/2iAJTwqZV6lQs26cTb38RNYqxvsink6SRmrZ5h0cBUSuf9NT0tZTsf9fEAbbto2maavHJEOP8GA1evlKa6xjKOsaskDhtJWxjcnrgPigzVo=@gurevit.ch/
> Reported-by: Egor Ignatov <egori@altlinux.org>
> Closes: https://lore.kernel.org/all/20210609073333.8425-1-egori@altlinux.org/
> Reported-by: Anton Zhilyaev <anton@cpp.in>
> Closes: https://lore.kernel.org/linux-input/20210201160336.16008-1-anton@cpp.in/
> Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2086156
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
> Note this supersedes my previous atkbd series:
> https://lore.kernel.org/linux-input/20231005201544.26983-1-hdegoede@redhat.com/
> ---
> Changes in v2:
> - Add DMI check for laptop chassis types and only skip ATKBD_CMD_GETID
>   on laptops with the i8042 in translated mode
> ---
>  drivers/input/keyboard/atkbd.c | 61 +++++++++++++++++++++++++++++++---
>  1 file changed, 57 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
> index c92e544c792d..5667f1e80839 100644
> --- a/drivers/input/keyboard/atkbd.c
> +++ b/drivers/input/keyboard/atkbd.c
> @@ -765,6 +765,59 @@ static void atkbd_deactivate(struct atkbd *atkbd)
>  			ps2dev->serio->phys);
>  }
> 
> +#ifdef CONFIG_X86
> +static const struct dmi_system_id atkbd_dmi_laptop_table[] = {
> +	{
> +		.matches = {
> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */
> +		},
> +	},
> +	{
> +		.matches = {
> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "9"), /* Laptop */
> +		},
> +	},
> +	{
> +		.matches = {
> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "10"), /* Notebook */
> +		},
> +	},
> +	{
> +		.matches = {
> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "14"), /* Sub-Notebook */
> +		},
> +	},
> +	{
> +		.matches = {
> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "31"), /* Convertible */
> +		},
> +	},
> +	{
> +		.matches = {
> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "32"), /* Detachable */
> +		},
> +	},
> +	{ }
> +};
> +
> +/*
> + * On many modern laptops ATKBD_CMD_GETID may cause problems, on these laptops
> + * the controller is always in translated mode. In this mode mice/touchpads will
> + * not work. So in this case simply assume a keyboard is connected to avoid
> + * confusing some laptop keyboards.
> + *
> + * Skipping ATKBD_CMD_GETID ends up using a fake keyboard id. Using a fake id is
> + * ok in translated mode, only atkbd_select_set() checks atkbd->id and in
> + * translated mode that is a no-op.
> + */
> +static bool atkbd_skip_getid(struct atkbd *atkbd)
> +{
> +	return atkbd->translated && dmi_check_system(atkbd_dmi_laptop_table);
> +}
> +#else
> +static inline bool atkbd_skip_getid(struct atkbd *atkbd) { return false; }
> +#endif
> +
>  /*
>   * atkbd_probe() probes for an AT keyboard on a serio port.
>   */
> @@ -794,12 +847,12 @@ static int atkbd_probe(struct atkbd *atkbd)
>   */
> 
>  	param[0] = param[1] = 0xa5;	/* initialize with invalid values */
> -	if (ps2_command(ps2dev, param, ATKBD_CMD_GETID)) {
> +	if (atkbd_skip_getid(atkbd) || ps2_command(ps2dev, param, ATKBD_CMD_GETID)) {
> 
>  /*
> - * If the get ID command failed, we check if we can at least set the LEDs on
> - * the keyboard. This should work on every keyboard out there. It also turns
> - * the LEDs off, which we want anyway.
> + * If the get ID command was skipped or failed, we check if we can at least set
> + * the LEDs on the keyboard. This should work on every keyboard out there.
> + * It also turns the LEDs off, which we want anyway.
>   */
>  		param[0] = 0;
>  		if (ps2_command(ps2dev, param, ATKBD_CMD_SETLEDS))
> --
> 2.41.0
>

^ permalink raw reply

* [PATCH 00/42] Fix coccicheck warnings
From: Li Zhijian @ 2024-01-16  4:10 UTC (permalink / raw)
  To: linux-kernel
  Cc: Li Zhijian, Adaptec OEM Raid Solutions, Adrian Hunter,
	Alexander Shishkin, Alistar Popple, Aneesh Kumar K.V,
	Arnaldo Carvalho de Melo, Artur Paszkiewicz, Benjamin Tissoires,
	Borislav Petkov, Bruno Prémont, Chandrakanth patil,
	Christian Gromm, Christophe Leroy, cocci, Dave Hansen, Don Brace,
	dri-devel, Eddie James, GR-QLogic-Storage-Upstream,
	Hannes Reinecke, Hannes Reinecke, Hans de Goede, Helge Deller,
	HighPoint Linux Team, H. Peter Anvin, Ian Rogers,
	Ilpo Järvinen, Ingo Molnar, Jack Wang, James E.J. Bottomley,
	James E.J. Bottomley, James Morse, Jeremy Kerr, Jiri Kosina,
	Jiri Olsa, Joel Stanley, Jonathan Cameron, Julia Lawall,
	Karan Tilak Kumar, Kashyap Desai, Ketan Mukadam, Laurentiu Tudor,
	linux-arm-kernel, linux-edac, linux-fbdev, linux-fsi, linux-iio,
	linux-input, linux-perf-users, linuxppc-dev, linux-scsi,
	Manish Rangankar, Mark Rutland, Martin K. Petersen,
	Mauro Carvalho Chehab, megaraidlinux.pdl, Michael Cyr,
	Michael Ellerman, Michal Januszewski, MPT-FusionLinux.pdl,
	Namhyung Kim, Naveen N. Rao, netdev, Nicholas Piggin,
	Nicolas Palix, Nilesh Javali, Parthiban Veerasooran,
	Peter Zijlstra, platform-driver-x86, Richard Cochran,
	Robert Richter, Russell King, Sathya Prakash, Satish Kharat,
	Sesidhar Baddela, Shivasharan S, Sreekanth Reddy,
	Srinivas Pandruvada, Stefan Achatz, storagedev, Stuart Yoder,
	Suganath Prabu Subramani, Sumit Saxena, target-devel,
	Thomas Gleixner, Tony Luck, Tyrel Datwyler, Vadim Pasternak, x86

make coccicheck COCCI=$PWD/scripts/coccinelle/api/device_attr_show.cocci`
complians some warnnings as following[1]:

Not sure if someone had tried these fixes, feel free to ignore this
patch set if we have come to a *NOT-FIX* conclusion before :)

This patch set also fix a few snprintf() beside coccicheck reported.
For example, some thing like
xxx_show() {
	rc = snprintf();
...
	return rc;
}

TODOs:
1. Fix other abused cases that coccicheck has not detected. For
example,  ./drivers/scsi/scsi_transport_fc.c has other places using
snprint inside the macro.
2. Improve device_attr_show.cocci to detect sprintf() and fix them

[1]
$ make coccicheck COCCI=$PWD/scripts/coccinelle/api/device_attr_show.cocci
...
./arch/arm/mm/cache-l2x0-pmu.c:346:8-16: WARNING: use scnprintf or sprintf
./arch/x86/events/amd/core.c:1282:8-16: WARNING: use scnprintf or sprintf
./arch/x86/events/core.c:1895:11-19: WARNING: use scnprintf or sprintf
./arch/x86/events/core.c:2542:8-16: WARNING: use scnprintf or sprintf
./arch/x86/events/core.c:2600:8-16: WARNING: use scnprintf or sprintf
./arch/x86/events/intel/core.c:5496:8-16: WARNING: use scnprintf or sprintf
./arch/x86/events/intel/core.c:5530:8-16: WARNING: use scnprintf or sprintf
./arch/x86/events/intel/core.c:5546:8-16: WARNING: use scnprintf or sprintf
./arch/x86/events/intel/pt.c:99:8-16: WARNING: use scnprintf or sprintf
./drivers/bus/fsl-mc/fsl-mc-bus.c:205:8-16: WARNING: use scnprintf or sprintf
./drivers/edac/edac_mc_sysfs.c:210:8-16: WARNING: use scnprintf or sprintf
./drivers/edac/edac_mc_sysfs.c:518:8-16: WARNING: use scnprintf or sprintf
./drivers/fsi/fsi-master-ast-cf.c:1086:8-16: WARNING: use scnprintf or sprintf
./drivers/fsi/fsi-master-gpio.c:721:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-lenovo.c:558:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-lenovo.c:602:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-lenovo.c:792:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-lenovo.c:822:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-lenovo.c:852:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-lenovo.c:882:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-lenovo.c:912:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-lenovo.c:941:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-picolcd_core.c:259:9-17: WARNING: use scnprintf or sprintf
./drivers/hid/hid-picolcd_core.c:304:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-isku.c:64:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-kone.c:403:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-kone.c:412:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-kone.c:435:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-kone.c:444:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-kone.c:454:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-kone.c:556:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-koneplus.c:245:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-koneplus.c:312:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-kovaplus.c:275:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-kovaplus.c:328:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-kovaplus.c:337:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-kovaplus.c:347:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-kovaplus.c:368:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-pyra.c:286:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-pyra.c:303:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-roccat-pyra.c:324:8-16: WARNING: use scnprintf or sprintf
./drivers/hid/hid-sensor-custom.c:375:10-18: WARNING: use scnprintf or sprintf
./drivers/message/fusion/mptscsih.c:3100:8-16: WARNING: use scnprintf or sprintf
./drivers/message/fusion/mptscsih.c:3116:8-16: WARNING: use scnprintf or sprintf
./drivers/message/fusion/mptscsih.c:3132:8-16: WARNING: use scnprintf or sprintf
./drivers/message/fusion/mptscsih.c:3145:8-16: WARNING: use scnprintf or sprintf
./drivers/message/fusion/mptscsih.c:3159:8-16: WARNING: use scnprintf or sprintf
./drivers/message/fusion/mptscsih.c:3173:8-16: WARNING: use scnprintf or sprintf
./drivers/message/fusion/mptscsih.c:3186:8-16: WARNING: use scnprintf or sprintf
./drivers/message/fusion/mptscsih.c:3198:8-16: WARNING: use scnprintf or sprintf
./drivers/message/fusion/mptscsih.c:3211:8-16: WARNING: use scnprintf or sprintf
./drivers/message/fusion/mptscsih.c:3224:8-16: WARNING: use scnprintf or sprintf
./drivers/message/fusion/mptscsih.c:3237:8-16: WARNING: use scnprintf or sprintf
./drivers/message/fusion/mptscsih.c:3250:8-16: WARNING: use scnprintf or sprintf
./drivers/most/core.c:211:8-16: WARNING: use scnprintf or sprintf
./drivers/most/core.c:222:8-16: WARNING: use scnprintf or sprintf
./drivers/most/core.c:233:8-16: WARNING: use scnprintf or sprintf
./drivers/most/core.c:244:8-16: WARNING: use scnprintf or sprintf
./drivers/most/core.c:254:8-16: WARNING: use scnprintf or sprintf
./drivers/most/core.c:263:8-16: WARNING: use scnprintf or sprintf
./drivers/most/core.c:272:8-16: WARNING: use scnprintf or sprintf
./drivers/most/core.c:282:9-17: WARNING: use scnprintf or sprintf
./drivers/most/core.c:297:10-18: WARNING: use scnprintf or sprintf
./drivers/most/core.c:309:8-16: WARNING: use scnprintf or sprintf
./drivers/most/core.c:318:8-16: WARNING: use scnprintf or sprintf
./drivers/most/core.c:326:8-16: WARNING: use scnprintf or sprintf
./drivers/most/core.c:398:8-16: WARNING: use scnprintf or sprintf
./drivers/most/core.c:409:9-17: WARNING: use scnprintf or sprintf
./drivers/platform/mellanox/mlxbf-bootctl.c:466:8-16: WARNING: use scnprintf or sprintf
./drivers/platform/mellanox/mlxbf-bootctl.c:584:8-16: WARNING: use scnprintf or sprintf
./drivers/platform/mellanox/mlxbf-bootctl.c:635:8-16: WARNING: use scnprintf or sprintf
./drivers/platform/mellanox/mlxbf-bootctl.c:686:8-16: WARNING: use scnprintf or sprintf
./drivers/platform/mellanox/mlxbf-bootctl.c:737:8-16: WARNING: use scnprintf or sprintf
./drivers/platform/mellanox/mlxbf-bootctl.c:788:8-16: WARNING: use scnprintf or sprintf
./drivers/platform/mellanox/mlxbf-bootctl.c:839:8-16: WARNING: use scnprintf or sprintf
./drivers/ptp/ptp_sysfs.c:27:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/53c700.c:2074:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/aacraid/linit.c:1299:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/aacraid/linit.c:1325:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/aacraid/linit.c:1332:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/aacraid/linit.c:561:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/aacraid/linit.c:588:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/aic94xx/aic94xx_init.c:267:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/aic94xx/aic94xx_init.c:276:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/aic94xx/aic94xx_init.c:284:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/aic94xx/aic94xx_init.c:455:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/arcmsr/arcmsr_attr.c:261:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/arcmsr/arcmsr_attr.c:273:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/arcmsr/arcmsr_attr.c:285:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/arcmsr/arcmsr_attr.c:297:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/arcmsr/arcmsr_attr.c:309:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/arcmsr/arcmsr_attr.c:322:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/arcmsr/arcmsr_attr.c:335:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/arcmsr/arcmsr_attr.c:348:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/arcmsr/arcmsr_attr.c:361:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/arcmsr/arcmsr_attr.c:374:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/be2iscsi/be_mgmt.c:1145:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/be2iscsi/be_mgmt.c:1164:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/be2iscsi/be_mgmt.c:1251:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/be2iscsi/be_mgmt.c:1280:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/fcoe/fcoe_sysfs.c:253:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/fcoe/fcoe_sysfs.c:268:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/fcoe/fcoe_sysfs.c:376:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/fnic/fnic_attrs.c:17:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/fnic/fnic_attrs.c:23:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/fnic/fnic_attrs.c:31:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/hpsa.c:528:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/hpsa.c:538:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/hpsa.c:549:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/hpsa.c:561:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/hpsa.c:645:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/hpsa.c:724:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/hpsa.c:746:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/hpsa.c:775:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/hpsa.c:799:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/hpsa.c:898:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/hpsa.c:908:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/hptiop.c:1114:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/hptiop.c:1123:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/ibmvscsi/ibmvfc.c:3483:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/ibmvscsi/ibmvfc.c:3493:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/ibmvscsi/ibmvfc.c:3503:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/ibmvscsi/ibmvfc.c:3513:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/ibmvscsi/ibmvfc.c:3522:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/ibmvscsi/ibmvfc.c:3530:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c:3619:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c:3625:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c:3633:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/isci/init.c:140:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/megaraid/megaraid_sas_base.c:3336:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/megaraid/megaraid_sas_base.c:3382:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/megaraid/megaraid_sas_base.c:3389:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/megaraid/megaraid_sas_base.c:3399:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/megaraid/megaraid_sas_base.c:3409:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/megaraid/megaraid_sas_base.c:3419:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/megaraid/megaraid_sas_base.c:3473:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:2825:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:2850:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:2873:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:2893:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:2912:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:2932:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:2952:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:2971:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:2990:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3012:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3034:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3055:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3077:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3097:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3133:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3170:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3198:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3320:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3407:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3828:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3848:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:3996:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:4018:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/mpt3sas/mpt3sas_ctl.c:4056:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/myrb.c:1770:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/myrb.c:1889:10-18: WARNING: use scnprintf or sprintf
./drivers/scsi/myrb.c:1906:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/myrb.c:2143:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/myrb.c:2153:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/myrb.c:2163:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/myrs.c:1061:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/myrs.c:1089:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/myrs.c:1193:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/myrs.c:1306:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/myrs.c:1316:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/myrs.c:1391:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/myrs.c:1401:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/myrs.c:1411:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/myrs.c:1421:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/myrs.c:1491:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/myrs.c:942:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/ncr53c8xx.c:8034:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/pcmcia/sym53c500_cs.c:627:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/pm8001/pm8001_ctl.c:883:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/pmcraid.c:3541:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/pmcraid.c:3602:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/pmcraid.c:3635:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:159:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:173:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:181:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:190:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:200:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:210:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:223:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:235:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:247:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:256:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:264:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:273:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:281:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:303:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/qla4xxx/ql4_attr.c:312:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:1112:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:1202:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:231:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:277:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:327:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:385:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:402:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:680:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:689:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:701:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:722:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:858:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:873:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:953:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_sysfs.c:979:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_transport_fc.c:1123:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_transport_fc.c:1218:10-18: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_transport_fc.c:1286:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_transport_fc.c:1304:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_transport_fc.c:1665:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_transport_fc.c:1891:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_transport_fc.c:1915:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_transport_fc.c:1967:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_transport_fc.c:2000:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_transport_sas.c:1180:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_transport_sas.c:525:9-17: WARNING: use scnprintf or sprintf
./drivers/scsi/scsi_transport_sas.c:572:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/snic/snic_attrs.c:16:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/snic/snic_attrs.c:26:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/snic/snic_attrs.c:35:8-16: WARNING: use scnprintf or sprintf
./drivers/scsi/snic/snic_attrs.c:48:8-16: WARNING: use scnprintf or sprintf
./drivers/video/fbdev/uvesafb.c:1549:8-16: WARNING: use scnprintf or sprintf
./kernel/cpu.c:3013:8-16: WARNING: use scnprintf or sprintf
./kernel/cpu.c:3026:8-16: WARNING: use scnprintf or sprintf

CC: Adaptec OEM Raid Solutions <aacraid@microsemi.com> 
CC: Adrian Hunter <adrian.hunter@intel.com> 
CC: Alexander Shishkin <alexander.shishkin@linux.intel.com> 
CC: Alistar Popple <alistair@popple.id.au> 
CC: "Aneesh Kumar K.V" <aneesh.kumar@kernel.org> 
CC: Arnaldo Carvalho de Melo <acme@kernel.org> 
CC: Artur Paszkiewicz <artur.paszkiewicz@intel.com> 
CC: Benjamin Tissoires <benjamin.tissoires@redhat.com> 
CC: Borislav Petkov <bp@alien8.de> 
CC: "Bruno Prémont" <bonbons@linux-vserver.org> 
CC: Chandrakanth patil <chandrakanth.patil@broadcom.com> 
CC: Christian Gromm <christian.gromm@microchip.com> 
CC: Christophe Leroy <christophe.leroy@csgroup.eu> 
CC: cocci@inria.fr 
CC: Dave Hansen <dave.hansen@linux.intel.com> 
CC: Don Brace <don.brace@microchip.com> 
CC: dri-devel@lists.freedesktop.org 
CC: Eddie James <eajames@linux.ibm.com> 
CC: GR-QLogic-Storage-Upstream@marvell.com 
CC: Hannes Reinecke <hare@kernel.org> 
CC: Hannes Reinecke <hare@suse.de> 
CC: Hans de Goede <hdegoede@redhat.com> 
CC: Helge Deller <deller@gmx.de> 
CC: HighPoint Linux Team <linux@highpoint-tech.com> 
CC: "H. Peter Anvin" <hpa@zytor.com> 
CC: Ian Rogers <irogers@google.com> 
CC: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com> 
CC: Ingo Molnar <mingo@redhat.com> 
CC: Jack Wang <jinpu.wang@cloud.ionos.com> 
CC: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> 
CC: "James E.J. Bottomley" <jejb@linux.ibm.com> 
CC: James Morse <james.morse@arm.com> 
CC: Jeremy Kerr <jk@ozlabs.org> 
CC: Jiri Kosina <jikos@kernel.org> 
CC: Jiri Olsa <jolsa@kernel.org> 
CC: Joel Stanley <joel@jms.id.au> 
CC: Jonathan Cameron <jic23@kernel.org> 
CC: Julia Lawall <Julia.Lawall@inria.fr> 
CC: Karan Tilak Kumar <kartilak@cisco.com> 
CC: Kashyap Desai <kashyap.desai@broadcom.com> 
CC: Ketan Mukadam <ketan.mukadam@broadcom.com> 
CC: Laurentiu Tudor <laurentiu.tudor@nxp.com> 
CC: linux-arm-kernel@lists.infradead.org 
CC: linux-edac@vger.kernel.org 
CC: linux-fbdev@vger.kernel.org 
CC: linux-fsi@lists.ozlabs.org 
CC: linux-iio@vger.kernel.org 
CC: linux-input@vger.kernel.org 
CC: linux-kernel@vger.kernel.org 
CC: linux-perf-users@vger.kernel.org 
CC: linuxppc-dev@lists.ozlabs.org 
CC: linux-scsi@vger.kernel.org 
CC: Manish Rangankar <mrangankar@marvell.com> 
CC: Mark Rutland <mark.rutland@arm.com> 
CC: "Martin K. Petersen" <martin.petersen@oracle.com> 
CC: Mauro Carvalho Chehab <mchehab@kernel.org> 
CC: megaraidlinux.pdl@broadcom.com 
CC: Michael Cyr <mikecyr@linux.ibm.com> 
CC: Michael Ellerman <mpe@ellerman.id.au> 
CC: Michal Januszewski <spock@gentoo.org> 
CC: MPT-FusionLinux.pdl@broadcom.com 
CC: Namhyung Kim <namhyung@kernel.org> 
CC: "Naveen N. Rao" <naveen.n.rao@linux.ibm.com> 
CC: netdev@vger.kernel.org 
CC: Nicholas Piggin <npiggin@gmail.com> 
CC: Nicolas Palix <nicolas.palix@imag.fr> 
CC: Nilesh Javali <njavali@marvell.com> 
CC: Parthiban Veerasooran <parthiban.veerasooran@microchip.com> 
CC: Peter Zijlstra <peterz@infradead.org> 
CC: platform-driver-x86@vger.kernel.org 
CC: Richard Cochran <richardcochran@gmail.com> 
CC: Robert Richter <rric@kernel.org> 
CC: Russell King <linux@armlinux.org.uk> 
CC: Sathya Prakash <sathya.prakash@broadcom.com> 
CC: Satish Kharat <satishkh@cisco.com> 
CC: Sesidhar Baddela <sebaddel@cisco.com> 
CC: Shivasharan S <shivasharan.srikanteshwara@broadcom.com> 
CC: Sreekanth Reddy <sreekanth.reddy@broadcom.com> 
CC: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> 
CC: Stefan Achatz <erazor_de@users.sourceforge.net> 
CC: storagedev@microchip.com 
CC: Stuart Yoder <stuyoder@gmail.com> 
CC: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com> 
CC: Sumit Saxena <sumit.saxena@broadcom.com> 
CC: target-devel@vger.kernel.org 
CC: Thomas Gleixner <tglx@linutronix.de> 
CC: Tony Luck <tony.luck@intel.com> 
CC: Tyrel Datwyler <tyreld@linux.ibm.com> 
CC: Vadim Pasternak <vadimp@nvidia.com> 
CC: x86@kernel.org 

Li Zhijian (42):
  coccinelle: device_attr_show.cocci: update description and warning
    message
  arch/arm/mm: Convert snprintf to sysfs_emit
  arch/x86/events/amd: Convert snprintf to sysfs_emit
  arch/x86/events/core: Convert snprintf to sysfs_emit
  arch/x86/events/intel: Convert snprintf to sysfs_emit
  drivers/bus/fsl-mc: Convert snprintf to sysfs_emit
  drivers/edac: Convert snprintf to sysfs_emit
  drivers/fsi: Convert snprintf to sysfs_emit
  drivers/hid/hid-lenovo: Convert snprintf to sysfs_emit
  drivers/hid/hid-roccat-*: Convert snprintf to sysfs_emit
  drivers/hid: Convert snprintf to sysfs_emit
  drivers/message/fusion: Convert snprintf to sysfs_emit
  drivers/most: Convert snprintf to sysfs_emit
  drivers/platform/mellanox: Convert snprintf to sysfs_emit
  drivers/ptp: Convert snprintf to sysfs_emit
  drivers/scsi/53c700: Convert snprintf to sysfs_emit
  drivers/scsi/aacraid: Convert snprintf to sysfs_emit
  drivers/scsi/aic94xx: Convert snprintf to sysfs_emit
  drivers/scsi/arcmsr: Convert snprintf to sysfs_emit
  drivers/scsi/be2iscsi: Convert snprintf to sysfs_emit
  drivers/scsi/fcoe: Convert snprintf to sysfs_emit
  drivers/scsi/fnic: Convert snprintf to sysfs_emit
  drivers/scsi/hpsa: Convert snprintf to sysfs_emit
  drivers/scsi/hptiop: Convert snprintf to sysfs_emit
  drivers/scsi/ibmvscsi: Convert snprintf to sysfs_emit
  drivers/scsi/ibmvscsi_tgt: Convert snprintf to sysfs_emit
  drivers/scsi/isci: Convert snprintf to sysfs_emit
  drivers/scsi/megaraid: Convert snprintf to sysfs_emit
  drivers/scsi/mpt3sas: Convert snprintf to sysfs_emit
  drivers/scsi/myrb: Convert snprintf to sysfs_emit
  drivers/scsi/myrs: Convert snprintf to sysfs_emit
  drivers/scsi/ncr53c8xx: Convert snprintf to sysfs_emit
  drivers/scsi/pcmcia/sym53c500_cs: Convert snprintf to sysfs_emit
  drivers/scsi/pm8001: Convert snprintf to sysfs_emit
  drivers/scsi/pmcraid: Convert snprintf to sysfs_emit
  drivers/scsi/qla4xxx/ql4_attr: Convert snprintf to sysfs_emit
  drivers/scsi/scsi_sysfs: Convert snprintf to sysfs_emit
  drivers/scsi/scsi_transport_fc: Convert snprintf to sysfs_emit
  drivers/scsi/scsi_transport_sas: Convert snprintf to sysfs_emit
  drivers/scsi/snic/snic_attrs: Convert snprintf to sysfs_emit
  drivers/video/fbdev/uvesafb: Convert snprintf to sysfs_emit
  kernel/cpu: Convert snprintf to sysfs_emit

 arch/arm/mm/cache-l2x0-pmu.c                  |  2 +-
 arch/x86/events/amd/core.c                    |  2 +-
 arch/x86/events/core.c                        |  6 +-
 arch/x86/events/intel/core.c                  |  6 +-
 arch/x86/events/intel/pt.c                    |  2 +-
 drivers/bus/fsl-mc/fsl-mc-bus.c               |  2 +-
 drivers/edac/edac_mc_sysfs.c                  |  5 +-
 drivers/fsi/fsi-master-ast-cf.c               |  3 +-
 drivers/fsi/fsi-master-gpio.c                 |  3 +-
 drivers/hid/hid-lenovo.c                      | 19 +++---
 drivers/hid/hid-picolcd_core.c                |  6 +-
 drivers/hid/hid-roccat-isku.c                 |  2 +-
 drivers/hid/hid-roccat-kone.c                 | 12 ++--
 drivers/hid/hid-roccat-koneplus.c             |  4 +-
 drivers/hid/hid-roccat-kovaplus.c             | 10 +--
 drivers/hid/hid-roccat-pyra.c                 |  6 +-
 drivers/hid/hid-sensor-custom.c               |  3 +-
 drivers/message/fusion/mptscsih.c             | 25 ++++----
 drivers/most/core.c                           | 61 +++++++++----------
 drivers/platform/mellanox/mlxbf-bootctl.c     | 14 ++---
 drivers/ptp/ptp_sysfs.c                       |  3 +-
 drivers/scsi/53c700.c                         |  2 +-
 drivers/scsi/aacraid/linit.c                  | 17 +++---
 drivers/scsi/aic94xx/aic94xx_init.c           | 15 +++--
 drivers/scsi/arcmsr/arcmsr_attr.c             | 40 +++---------
 drivers/scsi/be2iscsi/be_mgmt.c               | 20 +++---
 drivers/scsi/fcoe/fcoe_sysfs.c                |  8 +--
 drivers/scsi/fnic/fnic_attrs.c                |  7 +--
 drivers/scsi/hpsa.c                           | 36 +++++------
 drivers/scsi/hptiop.c                         |  4 +-
 drivers/scsi/ibmvscsi/ibmvfc.c                | 22 +++----
 drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c      |  6 +-
 drivers/scsi/isci/init.c                      |  2 +-
 drivers/scsi/megaraid/megaraid_sas_base.c     | 15 +++--
 drivers/scsi/mpt3sas/mpt3sas_ctl.c            | 60 +++++++++---------
 drivers/scsi/myrb.c                           | 38 ++++++------
 drivers/scsi/myrs.c                           | 56 ++++++++---------
 drivers/scsi/ncr53c8xx.c                      |  2 +-
 drivers/scsi/pcmcia/sym53c500_cs.c            |  2 +-
 drivers/scsi/pm8001/pm8001_ctl.c              |  6 +-
 drivers/scsi/pmcraid.c                        | 11 ++--
 drivers/scsi/qla4xxx/ql4_attr.c               | 48 +++++++--------
 drivers/scsi/scsi_sysfs.c                     | 34 +++++------
 drivers/scsi/scsi_transport_fc.c              | 34 +++++------
 drivers/scsi/scsi_transport_sas.c             | 22 +++----
 drivers/scsi/snic/snic_attrs.c                | 10 +--
 drivers/video/fbdev/uvesafb.c                 |  2 +-
 kernel/cpu.c                                  |  4 +-
 scripts/coccinelle/api/device_attr_show.cocci | 10 ++-
 49 files changed, 343 insertions(+), 386 deletions(-)

-- 
2.29.2


^ permalink raw reply

* [PATCH 11/42] drivers/hid: Convert snprintf to sysfs_emit
From: Li Zhijian @ 2024-01-16  4:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Li Zhijian, Bruno Prémont, Jiri Kosina, Benjamin Tissoires,
	Jonathan Cameron, Srinivas Pandruvada, linux-input
In-Reply-To: <20240116045151.3940401-1-lizhijian@fujitsu.com>

Per Documentation/filesystems/sysfs.rst, show() should only use sysfs_emit()
or sysfs_emit_at() when formatting the value to be returned to user space.

coccinelle complains that there are still a couple of functions that use
snprintf(). Convert them to sysfs_emit().

> ./drivers/hid/hid-picolcd_core.c:259:9-17: WARNING: please use sysfs_emit
> ./drivers/hid/hid-picolcd_core.c:304:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-sensor-custom.c:375:10-18: WARNING: please use sysfs_emi

No functional change intended

CC: "Bruno Prémont" <bonbons@linux-vserver.org>
CC: Jiri Kosina <jikos@kernel.org>
CC: Benjamin Tissoires <benjamin.tissoires@redhat.com>
CC: Jonathan Cameron <jic23@kernel.org>
CC: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
CC: linux-input@vger.kernel.org
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
---
 drivers/hid/hid-picolcd_core.c  | 6 +++---
 drivers/hid/hid-sensor-custom.c | 3 +--
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/hid/hid-picolcd_core.c b/drivers/hid/hid-picolcd_core.c
index bbda231a7ce3..fa46fb6eab3f 100644
--- a/drivers/hid/hid-picolcd_core.c
+++ b/drivers/hid/hid-picolcd_core.c
@@ -256,9 +256,9 @@ static ssize_t picolcd_operation_mode_show(struct device *dev,
 	struct picolcd_data *data = dev_get_drvdata(dev);
 
 	if (data->status & PICOLCD_BOOTLOADER)
-		return snprintf(buf, PAGE_SIZE, "[bootloader] lcd\n");
+		return sysfs_emit(buf, "[bootloader] lcd\n");
 	else
-		return snprintf(buf, PAGE_SIZE, "bootloader [lcd]\n");
+		return sysfs_emit(buf, "bootloader [lcd]\n");
 }
 
 static ssize_t picolcd_operation_mode_store(struct device *dev,
@@ -301,7 +301,7 @@ static ssize_t picolcd_operation_mode_delay_show(struct device *dev,
 {
 	struct picolcd_data *data = dev_get_drvdata(dev);
 
-	return snprintf(buf, PAGE_SIZE, "%hu\n", data->opmode_delay);
+	return sysfs_emit(buf, "%hu\n", data->opmode_delay);
 }
 
 static ssize_t picolcd_operation_mode_delay_store(struct device *dev,
diff --git a/drivers/hid/hid-sensor-custom.c b/drivers/hid/hid-sensor-custom.c
index d85398721659..4fe8dccf671d 100644
--- a/drivers/hid/hid-sensor-custom.c
+++ b/drivers/hid/hid-sensor-custom.c
@@ -372,8 +372,7 @@ static ssize_t show_value(struct device *dev, struct device_attribute *attr,
 				     sizeof(struct hid_custom_usage_desc),
 				     usage_id_cmp);
 		if (usage_desc)
-			return snprintf(buf, PAGE_SIZE, "%s\n",
-					usage_desc->desc);
+			return sysfs_emit(buf, "%s\n", usage_desc->desc);
 		else
 			return sprintf(buf, "not-specified\n");
 	 } else
-- 
2.29.2


^ permalink raw reply related

* [PATCH 09/42] drivers/hid/hid-lenovo: Convert snprintf to sysfs_emit
From: Li Zhijian @ 2024-01-16  4:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Li Zhijian, Jiri Kosina, Benjamin Tissoires, linux-input
In-Reply-To: <20240116045151.3940401-1-lizhijian@fujitsu.com>

Per filesystems/sysfs.rst, show() should only use sysfs_emit()
or sysfs_emit_at() when formatting the value to be returned to user space.

coccinelle complains that there are still a couple of functions that use
snprintf(). Convert them to sysfs_emit().

> ./drivers/hid/hid-lenovo.c:558:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-lenovo.c:602:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-lenovo.c:792:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-lenovo.c:822:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-lenovo.c:852:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-lenovo.c:882:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-lenovo.c:912:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-lenovo.c:941:8-16: WARNING: please use sysfs_emit

No functional change intended

CC: Jiri Kosina <jikos@kernel.org>
CC: Benjamin Tissoires <benjamin.tissoires@redhat.com>
CC: linux-input@vger.kernel.org
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
---
 drivers/hid/hid-lenovo.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c
index 149a3c74346b..26768c319361 100644
--- a/drivers/hid/hid-lenovo.c
+++ b/drivers/hid/hid-lenovo.c
@@ -555,7 +555,7 @@ static ssize_t attr_fn_lock_show(struct device *dev,
 	struct hid_device *hdev = to_hid_device(dev);
 	struct lenovo_drvdata *data = hid_get_drvdata(hdev);
 
-	return snprintf(buf, PAGE_SIZE, "%u\n", data->fn_lock);
+	return sysfs_emit(buf, "%u\n", data->fn_lock);
 }
 
 static ssize_t attr_fn_lock_store(struct device *dev,
@@ -599,8 +599,7 @@ static ssize_t attr_sensitivity_show_cptkbd(struct device *dev,
 	struct hid_device *hdev = to_hid_device(dev);
 	struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev);
 
-	return snprintf(buf, PAGE_SIZE, "%u\n",
-		cptkbd_data->sensitivity);
+	return sysfs_emit(buf, "%u\n", cptkbd_data->sensitivity);
 }
 
 static ssize_t attr_sensitivity_store_cptkbd(struct device *dev,
@@ -789,7 +788,7 @@ static ssize_t attr_press_to_select_show_tpkbd(struct device *dev,
 	struct hid_device *hdev = to_hid_device(dev);
 	struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
 
-	return snprintf(buf, PAGE_SIZE, "%u\n", data_pointer->press_to_select);
+	return sysfs_emit(buf, "%u\n", data_pointer->press_to_select);
 }
 
 static ssize_t attr_press_to_select_store_tpkbd(struct device *dev,
@@ -819,7 +818,7 @@ static ssize_t attr_dragging_show_tpkbd(struct device *dev,
 	struct hid_device *hdev = to_hid_device(dev);
 	struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
 
-	return snprintf(buf, PAGE_SIZE, "%u\n", data_pointer->dragging);
+	return sysfs_emit(buf, "%u\n", data_pointer->dragging);
 }
 
 static ssize_t attr_dragging_store_tpkbd(struct device *dev,
@@ -849,7 +848,7 @@ static ssize_t attr_release_to_select_show_tpkbd(struct device *dev,
 	struct hid_device *hdev = to_hid_device(dev);
 	struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
 
-	return snprintf(buf, PAGE_SIZE, "%u\n", data_pointer->release_to_select);
+	return sysfs_emit(buf, "%u\n", data_pointer->release_to_select);
 }
 
 static ssize_t attr_release_to_select_store_tpkbd(struct device *dev,
@@ -879,7 +878,7 @@ static ssize_t attr_select_right_show_tpkbd(struct device *dev,
 	struct hid_device *hdev = to_hid_device(dev);
 	struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
 
-	return snprintf(buf, PAGE_SIZE, "%u\n", data_pointer->select_right);
+	return sysfs_emit(buf, "%u\n", data_pointer->select_right);
 }
 
 static ssize_t attr_select_right_store_tpkbd(struct device *dev,
@@ -909,8 +908,7 @@ static ssize_t attr_sensitivity_show_tpkbd(struct device *dev,
 	struct hid_device *hdev = to_hid_device(dev);
 	struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
 
-	return snprintf(buf, PAGE_SIZE, "%u\n",
-		data_pointer->sensitivity);
+	return sysfs_emit(buf, "%u\n", data_pointer->sensitivity);
 }
 
 static ssize_t attr_sensitivity_store_tpkbd(struct device *dev,
@@ -938,8 +936,7 @@ static ssize_t attr_press_speed_show_tpkbd(struct device *dev,
 	struct hid_device *hdev = to_hid_device(dev);
 	struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
 
-	return snprintf(buf, PAGE_SIZE, "%u\n",
-		data_pointer->press_speed);
+	return sysfs_emit(buf, "%u\n", data_pointer->press_speed);
 }
 
 static ssize_t attr_press_speed_store_tpkbd(struct device *dev,
-- 
2.29.2


^ permalink raw reply related

* [PATCH 10/42]  drivers/hid/hid-roccat-*: Convert snprintf to sysfs_emit
From: Li Zhijian @ 2024-01-16  4:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Li Zhijian, Stefan Achatz, Jiri Kosina, Benjamin Tissoires,
	linux-input
In-Reply-To: <20240116045151.3940401-1-lizhijian@fujitsu.com>

Per filesystems/sysfs.rst, show() should only use sysfs_emit()
or sysfs_emit_at() when formatting the value to be returned to user space.

coccinelle complains that there are still a couple of functions that use
snprintf(). Convert them to sysfs_emit().

> ./drivers/hid/hid-roccat-isku.c:64:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-kone.c:403:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-kone.c:412:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-kone.c:435:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-kone.c:444:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-kone.c:454:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-kone.c:556:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-koneplus.c:245:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-koneplus.c:312:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-kovaplus.c:275:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-kovaplus.c:328:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-kovaplus.c:337:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-kovaplus.c:347:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-kovaplus.c:368:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-pyra.c:286:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-pyra.c:303:8-16: WARNING: please use sysfs_emit
> ./drivers/hid/hid-roccat-pyra.c:324:8-16: WARNING: please use sysfs_emit

No functional change intended

CC: Stefan Achatz <erazor_de@users.sourceforge.net>
CC: Jiri Kosina <jikos@kernel.org>
CC: Benjamin Tissoires <benjamin.tissoires@redhat.com>
CC: linux-input@vger.kernel.org
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
---
 drivers/hid/hid-roccat-isku.c     |  2 +-
 drivers/hid/hid-roccat-kone.c     | 12 ++++++------
 drivers/hid/hid-roccat-koneplus.c |  4 ++--
 drivers/hid/hid-roccat-kovaplus.c | 10 +++++-----
 drivers/hid/hid-roccat-pyra.c     |  6 +++---
 5 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/drivers/hid/hid-roccat-isku.c b/drivers/hid/hid-roccat-isku.c
index 458060403397..0cd6208fb371 100644
--- a/drivers/hid/hid-roccat-isku.c
+++ b/drivers/hid/hid-roccat-isku.c
@@ -61,7 +61,7 @@ static ssize_t isku_sysfs_show_actual_profile(struct device *dev,
 {
 	struct isku_device *isku =
 			hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
-	return snprintf(buf, PAGE_SIZE, "%d\n", isku->actual_profile);
+	return sysfs_emit(buf, "%d\n", isku->actual_profile);
 }
 
 static ssize_t isku_sysfs_set_actual_profile(struct device *dev,
diff --git a/drivers/hid/hid-roccat-kone.c b/drivers/hid/hid-roccat-kone.c
index 00a1abc7e839..3f8f459edcf3 100644
--- a/drivers/hid/hid-roccat-kone.c
+++ b/drivers/hid/hid-roccat-kone.c
@@ -400,7 +400,7 @@ static ssize_t kone_sysfs_show_actual_profile(struct device *dev,
 {
 	struct kone_device *kone =
 			hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
-	return snprintf(buf, PAGE_SIZE, "%d\n", kone->actual_profile);
+	return sysfs_emit(buf, "%d\n", kone->actual_profile);
 }
 static DEVICE_ATTR(actual_profile, 0440, kone_sysfs_show_actual_profile, NULL);
 
@@ -409,7 +409,7 @@ static ssize_t kone_sysfs_show_actual_dpi(struct device *dev,
 {
 	struct kone_device *kone =
 			hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
-	return snprintf(buf, PAGE_SIZE, "%d\n", kone->actual_dpi);
+	return sysfs_emit(buf, "%d\n", kone->actual_dpi);
 }
 static DEVICE_ATTR(actual_dpi, 0440, kone_sysfs_show_actual_dpi, NULL);
 
@@ -432,7 +432,7 @@ static ssize_t kone_sysfs_show_weight(struct device *dev,
 
 	if (retval)
 		return retval;
-	return snprintf(buf, PAGE_SIZE, "%d\n", weight);
+	return sysfs_emit(buf, "%d\n", weight);
 }
 static DEVICE_ATTR(weight, 0440, kone_sysfs_show_weight, NULL);
 
@@ -441,7 +441,7 @@ static ssize_t kone_sysfs_show_firmware_version(struct device *dev,
 {
 	struct kone_device *kone =
 			hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
-	return snprintf(buf, PAGE_SIZE, "%d\n", kone->firmware_version);
+	return sysfs_emit(buf, "%d\n", kone->firmware_version);
 }
 static DEVICE_ATTR(firmware_version, 0440, kone_sysfs_show_firmware_version,
 		   NULL);
@@ -451,7 +451,7 @@ static ssize_t kone_sysfs_show_tcu(struct device *dev,
 {
 	struct kone_device *kone =
 			hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
-	return snprintf(buf, PAGE_SIZE, "%d\n", kone->settings.tcu);
+	return sysfs_emit(buf, "%d\n", kone->settings.tcu);
 }
 
 static int kone_tcu_command(struct usb_device *usb_dev, int number)
@@ -553,7 +553,7 @@ static ssize_t kone_sysfs_show_startup_profile(struct device *dev,
 {
 	struct kone_device *kone =
 			hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
-	return snprintf(buf, PAGE_SIZE, "%d\n", kone->settings.startup_profile);
+	return sysfs_emit(buf, "%d\n", kone->settings.startup_profile);
 }
 
 static ssize_t kone_sysfs_set_startup_profile(struct device *dev,
diff --git a/drivers/hid/hid-roccat-koneplus.c b/drivers/hid/hid-roccat-koneplus.c
index 22b895436a7c..8ccb3b14a1a9 100644
--- a/drivers/hid/hid-roccat-koneplus.c
+++ b/drivers/hid/hid-roccat-koneplus.c
@@ -242,7 +242,7 @@ static ssize_t koneplus_sysfs_show_actual_profile(struct device *dev,
 {
 	struct koneplus_device *koneplus =
 			hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
-	return snprintf(buf, PAGE_SIZE, "%d\n", koneplus->actual_profile);
+	return sysfs_emit(buf, "%d\n", koneplus->actual_profile);
 }
 
 static ssize_t koneplus_sysfs_set_actual_profile(struct device *dev,
@@ -309,7 +309,7 @@ static ssize_t koneplus_sysfs_show_firmware_version(struct device *dev,
 			&info, KONEPLUS_SIZE_INFO);
 	mutex_unlock(&koneplus->koneplus_lock);
 
-	return snprintf(buf, PAGE_SIZE, "%d\n", info.firmware_version);
+	return sysfs_emit(buf, "%d\n", info.firmware_version);
 }
 static DEVICE_ATTR(firmware_version, 0440,
 		   koneplus_sysfs_show_firmware_version, NULL);
diff --git a/drivers/hid/hid-roccat-kovaplus.c b/drivers/hid/hid-roccat-kovaplus.c
index 86af538c10d6..748d4d7cb2fc 100644
--- a/drivers/hid/hid-roccat-kovaplus.c
+++ b/drivers/hid/hid-roccat-kovaplus.c
@@ -272,7 +272,7 @@ static ssize_t kovaplus_sysfs_show_actual_profile(struct device *dev,
 {
 	struct kovaplus_device *kovaplus =
 			hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
-	return snprintf(buf, PAGE_SIZE, "%d\n", kovaplus->actual_profile);
+	return sysfs_emit(buf, "%d\n", kovaplus->actual_profile);
 }
 
 static ssize_t kovaplus_sysfs_set_actual_profile(struct device *dev,
@@ -325,7 +325,7 @@ static ssize_t kovaplus_sysfs_show_actual_cpi(struct device *dev,
 {
 	struct kovaplus_device *kovaplus =
 			hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
-	return snprintf(buf, PAGE_SIZE, "%d\n", kovaplus->actual_cpi);
+	return sysfs_emit(buf, "%d\n", kovaplus->actual_cpi);
 }
 static DEVICE_ATTR(actual_cpi, 0440, kovaplus_sysfs_show_actual_cpi, NULL);
 
@@ -334,7 +334,7 @@ static ssize_t kovaplus_sysfs_show_actual_sensitivity_x(struct device *dev,
 {
 	struct kovaplus_device *kovaplus =
 			hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
-	return snprintf(buf, PAGE_SIZE, "%d\n", kovaplus->actual_x_sensitivity);
+	return sysfs_emit(buf, "%d\n", kovaplus->actual_x_sensitivity);
 }
 static DEVICE_ATTR(actual_sensitivity_x, 0440,
 		   kovaplus_sysfs_show_actual_sensitivity_x, NULL);
@@ -344,7 +344,7 @@ static ssize_t kovaplus_sysfs_show_actual_sensitivity_y(struct device *dev,
 {
 	struct kovaplus_device *kovaplus =
 			hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
-	return snprintf(buf, PAGE_SIZE, "%d\n", kovaplus->actual_y_sensitivity);
+	return sysfs_emit(buf, "%d\n", kovaplus->actual_y_sensitivity);
 }
 static DEVICE_ATTR(actual_sensitivity_y, 0440,
 		   kovaplus_sysfs_show_actual_sensitivity_y, NULL);
@@ -365,7 +365,7 @@ static ssize_t kovaplus_sysfs_show_firmware_version(struct device *dev,
 			&info, KOVAPLUS_SIZE_INFO);
 	mutex_unlock(&kovaplus->kovaplus_lock);
 
-	return snprintf(buf, PAGE_SIZE, "%d\n", info.firmware_version);
+	return sysfs_emit(buf, "%d\n", info.firmware_version);
 }
 static DEVICE_ATTR(firmware_version, 0440,
 		   kovaplus_sysfs_show_firmware_version, NULL);
diff --git a/drivers/hid/hid-roccat-pyra.c b/drivers/hid/hid-roccat-pyra.c
index 5663b9cd9c69..eeb3d38cd805 100644
--- a/drivers/hid/hid-roccat-pyra.c
+++ b/drivers/hid/hid-roccat-pyra.c
@@ -283,7 +283,7 @@ static ssize_t pyra_sysfs_show_actual_cpi(struct device *dev,
 {
 	struct pyra_device *pyra =
 			hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
-	return snprintf(buf, PAGE_SIZE, "%d\n", pyra->actual_cpi);
+	return sysfs_emit(buf, "%d\n", pyra->actual_cpi);
 }
 static DEVICE_ATTR(actual_cpi, 0440, pyra_sysfs_show_actual_cpi, NULL);
 
@@ -300,7 +300,7 @@ static ssize_t pyra_sysfs_show_actual_profile(struct device *dev,
 			&settings, PYRA_SIZE_SETTINGS);
 	mutex_unlock(&pyra->pyra_lock);
 
-	return snprintf(buf, PAGE_SIZE, "%d\n", settings.startup_profile);
+	return sysfs_emit(buf, "%d\n", settings.startup_profile);
 }
 static DEVICE_ATTR(actual_profile, 0440, pyra_sysfs_show_actual_profile, NULL);
 static DEVICE_ATTR(startup_profile, 0440, pyra_sysfs_show_actual_profile, NULL);
@@ -321,7 +321,7 @@ static ssize_t pyra_sysfs_show_firmware_version(struct device *dev,
 			&info, PYRA_SIZE_INFO);
 	mutex_unlock(&pyra->pyra_lock);
 
-	return snprintf(buf, PAGE_SIZE, "%d\n", info.firmware_version);
+	return sysfs_emit(buf, "%d\n", info.firmware_version);
 }
 static DEVICE_ATTR(firmware_version, 0440, pyra_sysfs_show_firmware_version,
 		   NULL);
-- 
2.29.2


^ permalink raw reply related

* [PATCH] Input: synaptics-rmi4: Fix NULL pointer dereference in rmi_driver_probe
From: Kunwu Chan @ 2024-01-16  8:38 UTC (permalink / raw)
  To: dmitry.torokhov, aduggan, cheiny; +Cc: linux-input, linux-kernel, Kunwu Chan

devm_kasprintf() returns a pointer to dynamically allocated memory
which can be NULL upon failure. Ensure the allocation was successful
by checking the pointer validity.

Fixes: 2b6a321da9a2 ("Input: synaptics-rmi4 - add support for Synaptics RMI4 devices")
Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
---
 drivers/input/rmi4/rmi_driver.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
index 258d5fe3d395..d3a601ff51e6 100644
--- a/drivers/input/rmi4/rmi_driver.c
+++ b/drivers/input/rmi4/rmi_driver.c
@@ -1197,6 +1197,12 @@ static int rmi_driver_probe(struct device *dev)
 		rmi_driver_set_input_params(rmi_dev, data->input);
 		data->input->phys = devm_kasprintf(dev, GFP_KERNEL,
 						"%s/input0", dev_name(dev));
+		if (!data->input->phys) {
+			dev_err(dev, "%s: Failed to allocate memory.\n",
+					__func__);
+			retval = -ENOMEM;
+			goto err;
+		}
 	}
 
 	retval = rmi_init_functions(data);
-- 
2.39.2


^ permalink raw reply related

* Re: [PATCH v2] Input: atkbd - Skip ATKBD_CMD_GETID in translated mode
From: Hans de Goede @ 2024-01-16  9:34 UTC (permalink / raw)
  To: Barnabás Pőcze
  Cc: Dmitry Torokhov, linux-input, Shang Ye, gurevitch, Egor Ignatov,
	Anton Zhilyaev
In-Reply-To: <W1ydwoG2fYv85Z3C3yfDOJcVpilEvGge6UGa9kZh8zI2-qkHXp7WLnl2hSkFz63j-c7WupUWI5TLL6n7Lt8DjRuU-yJBwLYWrreb1hbnd6A=@protonmail.com>

Hi Barnabás,

On 1/16/24 01:21, Barnabás Pőcze wrote:
> Hi
> 
> 
> 2023. november 15., szerda 18:46 keltezéssel, Hans de Goede írta:
> 
>> There have been multiple reports of keyboard issues on recent laptop models
>> which can be worked around by setting i8042.dumbkbd, with the downside
>> being this breaks the capslock LED.
>>
>> It seems that these issues are caused by recent laptops getting confused by
>> ATKBD_CMD_GETID. Rather then adding and endless growing list of quirks for
>> this, just skip ATKBD_CMD_GETID alltogether on laptops in translated mode.
>>
>> The main goal of sending ATKBD_CMD_GETID is to skip binding to ps/2
>> mice/touchpads and those are never used in translated mode.
>>
>> Examples of laptop models which benefit from skipping ATKBD_CMD_GETID:
>>
>> * "HP Laptop 15s-fq2xxx", "HP laptop 15s-fq4xxx" and "HP Laptop 15-dy2xxx"
>>   models the kbd stops working for the first 2 - 5 minutes after boot
>>   (waiting for EC watchdog reset?)
>>
>> * On "HP Spectre x360 13-aw2xxx" atkbd fails to probe the keyboard
>>
>> * At least 9 different Lenovo models have issues with ATKBD_CMD_GETID, see:
>>   https://github.com/yescallop/atkbd-nogetid
>>
>> This has been tested on:
>>
>> 1. A MSI B550M PRO-VDH WIFI desktop, where the i8042 controller is not
>>    in translated mode when no keyboard is plugged in and with a ps/2 kbd
>>    a "AT Translated Set 2 keyboard" /dev/input/event# node shows up
>>
>> 2. A Lenovo ThinkPad X1 Yoga gen 8 (always has a translated set 2 keyboard)
> 
> Just wanted to briefly mention that this broke my hwdb configuration because the
> version field of the device (as shown in `/proc/bus/input/devices`) has changed
> and it was included in the hwdb match rule.

That is unfortunate. Was this a custom rule or one from
the hwdb shipped with systemd ?

Either way can you share the match pattern of the rule before and
after? I want to check if there are any similar cases in
the hwdb shipped with systemd.

Regards,

Hans



>> Reported-by: Shang Ye <yesh25@mail2.sysu.edu.cn>
>> Closes: https://lore.kernel.org/linux-input/886D6167733841AE+20231017135318.11142-1-yesh25@mail2.sysu.edu.cn/
>> Closes: https://github.com/yescallop/atkbd-nogetid
>> Reported-by: gurevitch <mail@gurevit.ch>
>> Closes: https://lore.kernel.org/linux-input/2iAJTwqZV6lQs26cTb38RNYqxvsink6SRmrZ5h0cBUSuf9NT0tZTsf9fEAbbto2maavHJEOP8GA1evlKa6xjKOsaskDhtJWxjcnrgPigzVo=@gurevit.ch/
>> Reported-by: Egor Ignatov <egori@altlinux.org>
>> Closes: https://lore.kernel.org/all/20210609073333.8425-1-egori@altlinux.org/
>> Reported-by: Anton Zhilyaev <anton@cpp.in>
>> Closes: https://lore.kernel.org/linux-input/20210201160336.16008-1-anton@cpp.in/
>> Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2086156
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>> Note this supersedes my previous atkbd series:
>> https://lore.kernel.org/linux-input/20231005201544.26983-1-hdegoede@redhat.com/
>> ---
>> Changes in v2:
>> - Add DMI check for laptop chassis types and only skip ATKBD_CMD_GETID
>>   on laptops with the i8042 in translated mode
>> ---
>>  drivers/input/keyboard/atkbd.c | 61 +++++++++++++++++++++++++++++++---
>>  1 file changed, 57 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
>> index c92e544c792d..5667f1e80839 100644
>> --- a/drivers/input/keyboard/atkbd.c
>> +++ b/drivers/input/keyboard/atkbd.c
>> @@ -765,6 +765,59 @@ static void atkbd_deactivate(struct atkbd *atkbd)
>>  			ps2dev->serio->phys);
>>  }
>>
>> +#ifdef CONFIG_X86
>> +static const struct dmi_system_id atkbd_dmi_laptop_table[] = {
>> +	{
>> +		.matches = {
>> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */
>> +		},
>> +	},
>> +	{
>> +		.matches = {
>> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "9"), /* Laptop */
>> +		},
>> +	},
>> +	{
>> +		.matches = {
>> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "10"), /* Notebook */
>> +		},
>> +	},
>> +	{
>> +		.matches = {
>> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "14"), /* Sub-Notebook */
>> +		},
>> +	},
>> +	{
>> +		.matches = {
>> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "31"), /* Convertible */
>> +		},
>> +	},
>> +	{
>> +		.matches = {
>> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "32"), /* Detachable */
>> +		},
>> +	},
>> +	{ }
>> +};
>> +
>> +/*
>> + * On many modern laptops ATKBD_CMD_GETID may cause problems, on these laptops
>> + * the controller is always in translated mode. In this mode mice/touchpads will
>> + * not work. So in this case simply assume a keyboard is connected to avoid
>> + * confusing some laptop keyboards.
>> + *
>> + * Skipping ATKBD_CMD_GETID ends up using a fake keyboard id. Using a fake id is
>> + * ok in translated mode, only atkbd_select_set() checks atkbd->id and in
>> + * translated mode that is a no-op.
>> + */
>> +static bool atkbd_skip_getid(struct atkbd *atkbd)
>> +{
>> +	return atkbd->translated && dmi_check_system(atkbd_dmi_laptop_table);
>> +}
>> +#else
>> +static inline bool atkbd_skip_getid(struct atkbd *atkbd) { return false; }
>> +#endif
>> +
>>  /*
>>   * atkbd_probe() probes for an AT keyboard on a serio port.
>>   */
>> @@ -794,12 +847,12 @@ static int atkbd_probe(struct atkbd *atkbd)
>>   */
>>
>>  	param[0] = param[1] = 0xa5;	/* initialize with invalid values */
>> -	if (ps2_command(ps2dev, param, ATKBD_CMD_GETID)) {
>> +	if (atkbd_skip_getid(atkbd) || ps2_command(ps2dev, param, ATKBD_CMD_GETID)) {
>>
>>  /*
>> - * If the get ID command failed, we check if we can at least set the LEDs on
>> - * the keyboard. This should work on every keyboard out there. It also turns
>> - * the LEDs off, which we want anyway.
>> + * If the get ID command was skipped or failed, we check if we can at least set
>> + * the LEDs on the keyboard. This should work on every keyboard out there.
>> + * It also turns the LEDs off, which we want anyway.
>>   */
>>  		param[0] = 0;
>>  		if (ps2_command(ps2dev, param, ATKBD_CMD_SETLEDS))
>> --
>> 2.41.0
>>
> 


^ permalink raw reply

* Re: [PATCH v6 2/4] Input: touch-overlay - Add touchscreen overlay handling
From: Javier Carrasco @ 2024-01-16  9:52 UTC (permalink / raw)
  To: Jeff LaBundy
  Cc: Dmitry Torokhov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Henrik Rydberg, Bastian Hecht, Michael Riesch, linux-kernel,
	linux-input, devicetree
In-Reply-To: <ZZ/zR+GybLjR8Dcb@nixie71>

On 11.01.24 14:55, Jeff LaBundy wrote:
> Hi Javier,
> 
> I agree with you. Thinking about this more, immediately introducing this
> feature to the core is a relatively high risk that would be shared by all
> users. I like your idea of introducing a preliminary version first before
> making heavy-handed changes. That's the beauty of helper functions; they
> only impact users who explicitly opt in.
> 
> I don't have an immediate use case, but I've been looking at this from
> the perspective of a future customer of it. Maybe the right path forward
> is as follows:
> 
> 1. Stick with the same general architecture of v6 and its "limitations",
>    which in practice are unlikely to be encountered. I imagine the overlay
>    layout you have been using would be the most common use case.
> 2. Make the handful of small changes that have been suggested thus far.
> 3. Consider updating patch [4/4] to combine the touchscreen and buttons
>    into the same input device as you had in v1. This sets a little simpler
>    precedent for the first user of these helpers. If later these helpers
>    do get absorbed into the core, thereby forcing a single input device,
>    the st1232 would continue to appear the same to user space.
> 
> Does this seem reasonable?
> 

It seems reasonable, so I will go for that approach in v7: single input
device and less modifications in the consumer drivers.

Best regards,
Javier Carrasco

^ permalink raw reply

* Re: [PATCH v2] Input: atkbd - Skip ATKBD_CMD_GETID in translated mode
From: Barnabás Pőcze @ 2024-01-16 13:32 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Dmitry Torokhov, linux-input, Shang Ye, gurevitch, Egor Ignatov,
	Anton Zhilyaev
In-Reply-To: <162f0847-3f72-4606-a1ab-de05bdd97339@redhat.com>

Hi


2024. január 16., kedd 10:34 keltezéssel, Hans de Goede írta:

> [...]
> > 2023. november 15., szerda 18:46 keltezéssel, Hans de Goede írta:
> >
> >> There have been multiple reports of keyboard issues on recent laptop models
> >> which can be worked around by setting i8042.dumbkbd, with the downside
> >> being this breaks the capslock LED.
> >>
> >> It seems that these issues are caused by recent laptops getting confused by
> >> ATKBD_CMD_GETID. Rather then adding and endless growing list of quirks for
> >> this, just skip ATKBD_CMD_GETID alltogether on laptops in translated mode.
> >>
> >> The main goal of sending ATKBD_CMD_GETID is to skip binding to ps/2
> >> mice/touchpads and those are never used in translated mode.
> >>
> >> Examples of laptop models which benefit from skipping ATKBD_CMD_GETID:
> >>
> >> * "HP Laptop 15s-fq2xxx", "HP laptop 15s-fq4xxx" and "HP Laptop 15-dy2xxx"
> >>   models the kbd stops working for the first 2 - 5 minutes after boot
> >>   (waiting for EC watchdog reset?)
> >>
> >> * On "HP Spectre x360 13-aw2xxx" atkbd fails to probe the keyboard
> >>
> >> * At least 9 different Lenovo models have issues with ATKBD_CMD_GETID, see:
> >>   https://github.com/yescallop/atkbd-nogetid
> >>
> >> This has been tested on:
> >>
> >> 1. A MSI B550M PRO-VDH WIFI desktop, where the i8042 controller is not
> >>    in translated mode when no keyboard is plugged in and with a ps/2 kbd
> >>    a "AT Translated Set 2 keyboard" /dev/input/event# node shows up
> >>
> >> 2. A Lenovo ThinkPad X1 Yoga gen 8 (always has a translated set 2 keyboard)
> >
> > Just wanted to briefly mention that this broke my hwdb configuration because the
> > version field of the device (as shown in `/proc/bus/input/devices`) has changed
> > and it was included in the hwdb match rule.
> 
> That is unfortunate. Was this a custom rule or one from
> the hwdb shipped with systemd ?
> 
> Either way can you share the match pattern of the rule before and
> after? I want to check if there are any similar cases in
> the hwdb shipped with systemd.
> [...]

It was a custom rule.

Before:

evdev:input:b0011v0001p0001eAB83*
 KEYBOARD_KEY_f8=fn
 KEYBOARD_KEY_76=f21

I: Bus=0011 Vendor=0001 Product=0001 Version=ab83
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input4


After:

evdev:input:b0011v0001p0001*
 KEYBOARD_KEY_f8=fn
 KEYBOARD_KEY_76=f21

I: Bus=0011 Vendor=0001 Product=0001 Version=abba
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input4


Regards,
Barnabás Pőcze


> 
> 
> >> Reported-by: Shang Ye <yesh25@mail2.sysu.edu.cn>
> >> Closes: https://lore.kernel.org/linux-input/886D6167733841AE+20231017135318.11142-1-yesh25@mail2.sysu.edu.cn/
> >> Closes: https://github.com/yescallop/atkbd-nogetid
> >> Reported-by: gurevitch <mail@gurevit.ch>
> >> Closes: https://lore.kernel.org/linux-input/2iAJTwqZV6lQs26cTb38RNYqxvsink6SRmrZ5h0cBUSuf9NT0tZTsf9fEAbbto2maavHJEOP8GA1evlKa6xjKOsaskDhtJWxjcnrgPigzVo=@gurevit.ch/
> >> Reported-by: Egor Ignatov <egori@altlinux.org>
> >> Closes: https://lore.kernel.org/all/20210609073333.8425-1-egori@altlinux.org/
> >> Reported-by: Anton Zhilyaev <anton@cpp.in>
> >> Closes: https://lore.kernel.org/linux-input/20210201160336.16008-1-anton@cpp.in/
> >> Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2086156
> >> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> >> ---
> >> Note this supersedes my previous atkbd series:
> >> https://lore.kernel.org/linux-input/20231005201544.26983-1-hdegoede@redhat.com/
> >> ---
> >> Changes in v2:
> >> - Add DMI check for laptop chassis types and only skip ATKBD_CMD_GETID
> >>   on laptops with the i8042 in translated mode
> >> ---
> >>  drivers/input/keyboard/atkbd.c | 61 +++++++++++++++++++++++++++++++---
> >>  1 file changed, 57 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
> >> index c92e544c792d..5667f1e80839 100644
> >> --- a/drivers/input/keyboard/atkbd.c
> >> +++ b/drivers/input/keyboard/atkbd.c
> >> @@ -765,6 +765,59 @@ static void atkbd_deactivate(struct atkbd *atkbd)
> >>  			ps2dev->serio->phys);
> >>  }
> >>
> >> +#ifdef CONFIG_X86
> >> +static const struct dmi_system_id atkbd_dmi_laptop_table[] = {
> >> +	{
> >> +		.matches = {
> >> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */
> >> +		},
> >> +	},
> >> +	{
> >> +		.matches = {
> >> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "9"), /* Laptop */
> >> +		},
> >> +	},
> >> +	{
> >> +		.matches = {
> >> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "10"), /* Notebook */
> >> +		},
> >> +	},
> >> +	{
> >> +		.matches = {
> >> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "14"), /* Sub-Notebook */
> >> +		},
> >> +	},
> >> +	{
> >> +		.matches = {
> >> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "31"), /* Convertible */
> >> +		},
> >> +	},
> >> +	{
> >> +		.matches = {
> >> +			DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "32"), /* Detachable */
> >> +		},
> >> +	},
> >> +	{ }
> >> +};
> >> +
> >> +/*
> >> + * On many modern laptops ATKBD_CMD_GETID may cause problems, on these laptops
> >> + * the controller is always in translated mode. In this mode mice/touchpads will
> >> + * not work. So in this case simply assume a keyboard is connected to avoid
> >> + * confusing some laptop keyboards.
> >> + *
> >> + * Skipping ATKBD_CMD_GETID ends up using a fake keyboard id. Using a fake id is
> >> + * ok in translated mode, only atkbd_select_set() checks atkbd->id and in
> >> + * translated mode that is a no-op.
> >> + */
> >> +static bool atkbd_skip_getid(struct atkbd *atkbd)
> >> +{
> >> +	return atkbd->translated && dmi_check_system(atkbd_dmi_laptop_table);
> >> +}
> >> +#else
> >> +static inline bool atkbd_skip_getid(struct atkbd *atkbd) { return false; }
> >> +#endif
> >> +
> >>  /*
> >>   * atkbd_probe() probes for an AT keyboard on a serio port.
> >>   */
> >> @@ -794,12 +847,12 @@ static int atkbd_probe(struct atkbd *atkbd)
> >>   */
> >>
> >>  	param[0] = param[1] = 0xa5;	/* initialize with invalid values */
> >> -	if (ps2_command(ps2dev, param, ATKBD_CMD_GETID)) {
> >> +	if (atkbd_skip_getid(atkbd) || ps2_command(ps2dev, param, ATKBD_CMD_GETID)) {
> >>
> >>  /*
> >> - * If the get ID command failed, we check if we can at least set the LEDs on
> >> - * the keyboard. This should work on every keyboard out there. It also turns
> >> - * the LEDs off, which we want anyway.
> >> + * If the get ID command was skipped or failed, we check if we can at least set
> >> + * the LEDs on the keyboard. This should work on every keyboard out there.
> >> + * It also turns the LEDs off, which we want anyway.
> >>   */
> >>  		param[0] = 0;
> >>  		if (ps2_command(ps2dev, param, ATKBD_CMD_SETLEDS))
> >> --
> >> 2.41.0
> >>
> >
>

^ permalink raw reply

* Re: [PATCH 00/33] spi: get rid of some legacy macros
From: Mark Brown @ 2024-01-16 14:40 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Geert Uytterhoeven, linux-spi, kernel, Moritz Fischer, Wu Hao,
	Xu Yilun, Tom Rix, linux-fpga, Alexander Aring, Stefan Schmidt,
	Miquel Raynal, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, linux-wpan, netdev, Lars-Peter Clausen,
	Michael Hennerich, Jonathan Cameron, linux-iio, Dmitry Torokhov,
	linux-input, Ulf Hansson, Greg Kroah-Hartman, Rayyan Ansari,
	Andy Shevchenko, Jonathan Cameron, Martin Tuma,
	Mauro Carvalho Chehab, linux-media, Sergey Kozlov, Arnd Bergmann,
	Yang Yingliang, linux-mmc, Richard Weinberger,
	Vignesh Raghavendra, Heiko Stuebner, Linus Walleij,
	Amit Kumar Mahapatra via Alsa-devel, Rob Herring, linux-mtd,
	Martin Blumenstingl, Jernej Skrabec, Nicolas Ferre,
	Pali Rohár, Ronald Wahl, Benson Leung, Tzung-Bi Shih,
	Guenter Roeck, chrome-platform, Michal Simek, Max Filippov,
	linux-arm-kernel, Bjorn Andersson, Konrad Dybcio, linux-arm-msm,
	Matthias Brugger, AngeloGioacchino Del Regno, linux-mediatek,
	Thomas Zimmermann, Javier Martinez Canillas, Sam Ravnborg,
	Amit Kumar Mahapatra, dri-devel, linux-fbdev, linux-staging,
	Rui Miguel Silva, Viresh Kumar, Johan Hovold, Alex Elder,
	greybus-dev, Peter Huewe, Jarkko Sakkinen, Jason Gunthorpe,
	linux-integrity, Herve Codina, Aaro Koskinen, Krzysztof Kozlowski,
	linux-usb, Helge Deller, Dario Binacchi, Kalle Valo,
	Dmitry Antipov, libertas-dev, linux-wireless, Jonathan Corbet,
	James Clark, Bjorn Helgaas, linux-doc
In-Reply-To: <cover.1705348269.git.u.kleine-koenig@pengutronix.de>

[-- Attachment #1: Type: text/plain, Size: 889 bytes --]

On Mon, Jan 15, 2024 at 09:12:46PM +0100, Uwe Kleine-König wrote:

> In commit 8caab75fd2c2 ("spi: Generalize SPI "master" to "controller"")
> some functions were renamed. Further some compat defines were introduced
> to map the old names to the new ones.

> Patch #18 and #19 touch the same driver, otherwise the patches #1 - #31
> are pairwise independent and could be applied by their respective
> maintainers. The alternative is to let all patches go via the spi tree.
> Mark, what's your preference here?

I don't have a strong preference here, I'm happy to take all the patches
if the maintainers for the other subsystem are OK with that - ideally
I'd apply things at -rc1 but the timeline is a bit tight there.  I think
my plan here unless anyone objects (or I notice something myself) will
be to queue things at -rc3, please shout if that doesn't seem
reasonable.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* Re: [PATCH v2] Input: atkbd - Skip ATKBD_CMD_GETID in translated mode
From: Hans de Goede @ 2024-01-16 14:43 UTC (permalink / raw)
  To: Barnabás Pőcze
  Cc: Dmitry Torokhov, linux-input, Shang Ye, gurevitch, Egor Ignatov,
	Anton Zhilyaev
In-Reply-To: <DZ5T0aPAth1T_tvaht8979K9VSJFt5_00JStgZUA1nApXOA6JYcEjgdEnCZ-V1o_kKNya5nhqz9NTW76_xpQXMWvnGpu497KLsmPxewtEZ0=@protonmail.com>

Hi,

On 1/16/24 14:32, Barnabás Pőcze wrote:
> Hi
> 
> 
> 2024. január 16., kedd 10:34 keltezéssel, Hans de Goede írta:
> 
>> [...]
>>> 2023. november 15., szerda 18:46 keltezéssel, Hans de Goede írta:
>>>
>>>> There have been multiple reports of keyboard issues on recent laptop models
>>>> which can be worked around by setting i8042.dumbkbd, with the downside
>>>> being this breaks the capslock LED.
>>>>
>>>> It seems that these issues are caused by recent laptops getting confused by
>>>> ATKBD_CMD_GETID. Rather then adding and endless growing list of quirks for
>>>> this, just skip ATKBD_CMD_GETID alltogether on laptops in translated mode.
>>>>
>>>> The main goal of sending ATKBD_CMD_GETID is to skip binding to ps/2
>>>> mice/touchpads and those are never used in translated mode.
>>>>
>>>> Examples of laptop models which benefit from skipping ATKBD_CMD_GETID:
>>>>
>>>> * "HP Laptop 15s-fq2xxx", "HP laptop 15s-fq4xxx" and "HP Laptop 15-dy2xxx"
>>>>   models the kbd stops working for the first 2 - 5 minutes after boot
>>>>   (waiting for EC watchdog reset?)
>>>>
>>>> * On "HP Spectre x360 13-aw2xxx" atkbd fails to probe the keyboard
>>>>
>>>> * At least 9 different Lenovo models have issues with ATKBD_CMD_GETID, see:
>>>>   https://github.com/yescallop/atkbd-nogetid
>>>>
>>>> This has been tested on:
>>>>
>>>> 1. A MSI B550M PRO-VDH WIFI desktop, where the i8042 controller is not
>>>>    in translated mode when no keyboard is plugged in and with a ps/2 kbd
>>>>    a "AT Translated Set 2 keyboard" /dev/input/event# node shows up
>>>>
>>>> 2. A Lenovo ThinkPad X1 Yoga gen 8 (always has a translated set 2 keyboard)
>>>
>>> Just wanted to briefly mention that this broke my hwdb configuration because the
>>> version field of the device (as shown in `/proc/bus/input/devices`) has changed
>>> and it was included in the hwdb match rule.
>>
>> That is unfortunate. Was this a custom rule or one from
>> the hwdb shipped with systemd ?
>>
>> Either way can you share the match pattern of the rule before and
>> after? I want to check if there are any similar cases in
>> the hwdb shipped with systemd.
>> [...]
> 
> It was a custom rule.
> 
> Before:
> 
> evdev:input:b0011v0001p0001eAB83*
>  KEYBOARD_KEY_f8=fn
>  KEYBOARD_KEY_76=f21
> 
> I: Bus=0011 Vendor=0001 Product=0001 Version=ab83
> N: Name="AT Translated Set 2 keyboard"
> P: Phys=isa0060/serio0/input0
> S: Sysfs=/devices/platform/i8042/serio0/input/input4
> 
> 
> After:
> 
> evdev:input:b0011v0001p0001*
>  KEYBOARD_KEY_f8=fn
>  KEYBOARD_KEY_76=f21
> 
> I: Bus=0011 Vendor=0001 Product=0001 Version=abba
> N: Name="AT Translated Set 2 keyboard"
> P: Phys=isa0060/serio0/input0
> S: Sysfs=/devices/platform/i8042/serio0/input/input4

I see, thank you. There are no v0001p0001 matches
in the hwdb.d/60-keyboard.hwdb shipped with systems.

Typically laptop builtin keyboards use another match-type
so that they can do DMI matching e.g.:

evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pn*:*

So luckily for almost all users the e field in the match
rule changing should not be an issue. Sorry that this
was a problem for you.

Regards,

Hans


^ permalink raw reply

* Re: [PATCH 00/33] spi: get rid of some legacy macros
From: Uwe Kleine-König @ 2024-01-16 15:18 UTC (permalink / raw)
  To: Mark Brown
  Cc: Heiko Stuebner, Geert Uytterhoeven, Linus Walleij, dri-devel,
	Miquel Raynal, Ronald Wahl, Stefan Schmidt, libertas-dev,
	Javier Martinez Canillas, Alex Elder, Greg Kroah-Hartman,
	linux-usb, linux-wireless, linux-spi, kernel, linux-media,
	linux-wpan, Amit Kumar Mahapatra via Alsa-devel, linux-doc,
	Dmitry Antipov, Max Filippov, Eric Dumazet, James Clark,
	Guenter Roeck, Dario Binacchi, chrome-platform,
	Lars-Peter Clausen, Michael Hennerich, Viresh Kumar, Helge Deller,
	Wu Hao, Amit Kumar Mahapatra, Martin Blumenstingl, linux-arm-msm,
	greybus-dev, Bjorn Helgaas, Michal Simek, linux-arm-kernel,
	Aaro Koskinen, David S. Miller, Jarkko Sakkinen, linux-integrity,
	Pali Rohár, Jonathan Cameron, Ulf Hansson, Herve Codina,
	linux-iio, Tom Rix, linux-fpga, linux-fbdev, linux-mtd,
	Sam Ravnborg, Rob Herring, Jonathan Corbet, linux-staging,
	Jernej Skrabec, linux-input, Paolo Abeni, Arnd Bergmann,
	Yang Yingliang, Moritz Fischer, Mauro Carvalho Chehab,
	Benson Leung, Rayyan Ansari, Dmitry Torokhov, linux-mmc,
	Konrad Dybcio, Martin Tuma, Xu Yilun, Alexander Aring,
	Vignesh Raghavendra, Peter Huewe, Sergey Kozlov,
	Richard Weinberger, Jason Gunthorpe, Jakub Kicinski, Kalle Valo,
	Johan Hovold, Rui Miguel Silva, linux-mediatek, Tzung-Bi Shih,
	Jonathan Cameron, Matthias Brugger, Andy Shevchenko,
	AngeloGioacchino Del Regno, netdev, Bjorn Andersson,
	Nicolas Ferre, Krzysztof Kozlowski, Thomas Zimmermann
In-Reply-To: <3404c9af-6c11-45d7-9ba4-a120e21e407e@sirena.org.uk>

[-- Attachment #1: Type: text/plain, Size: 1527 bytes --]

Hello Mark,

On Tue, Jan 16, 2024 at 02:40:39PM +0000, Mark Brown wrote:
> On Mon, Jan 15, 2024 at 09:12:46PM +0100, Uwe Kleine-König wrote:
> 
> > In commit 8caab75fd2c2 ("spi: Generalize SPI "master" to "controller"")
> > some functions were renamed. Further some compat defines were introduced
> > to map the old names to the new ones.
> 
> > Patch #18 and #19 touch the same driver, otherwise the patches #1 - #31
> > are pairwise independent and could be applied by their respective
> > maintainers. The alternative is to let all patches go via the spi tree.
> > Mark, what's your preference here?
> 
> I don't have a strong preference here, I'm happy to take all the patches
> if the maintainers for the other subsystem are OK with that - ideally
> I'd apply things at -rc1 but the timeline is a bit tight there.  I think
> my plan here unless anyone objects (or I notice something myself) will
> be to queue things at -rc3, please shout if that doesn't seem
> reasonable.

From my side there is no rush, we lived with these defines since
4.13-rc1. Applying them during the next merge window is fine for me.

Anyhow, I intend to resend the series for the feedback I received after
-rc1. Up to you when you want to apply it. Watching out for offending
patches using lore shouldn't be a big thing and I can do that.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | https://www.pengutronix.de/ |

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* Re: [PATCH] dt-bindings: input: silead,gsl1680: do not override firmware-name $ref
From: Conor Dooley @ 2024-01-16 17:27 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Dmitry Torokhov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	linux-input, devicetree, linux-kernel
In-Reply-To: <20240115182057.1610195-1-krzysztof.kozlowski@linaro.org>

[-- Attachment #1: Type: text/plain, Size: 388 bytes --]

On Mon, Jan 15, 2024 at 07:20:57PM +0100, Krzysztof Kozlowski wrote:
> dtschema package defines firmware-name as string-array, so individual
> bindings should not make it a string but instead just narrow the number
> of expected firmware file names.
> 
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Acked-by: Conor Dooley <conor.dooley@microchip.com>



[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply

* [PATCH 1/2] ARM: pxa: drop MOUSE_NAVPOINT_PXA27x from defconfig
From: Duje Mihanović @ 2024-01-16 18:17 UTC (permalink / raw)
  To: Russell King, Dmitry Torokhov
  Cc: Uwe Kleine-König, linux-arm-kernel, linux-kernel,
	linux-input, Duje Mihanović
In-Reply-To: <20240116-navpoint-removal-v1-0-593ae4954a83@skole.hr>

Drop the Synaptics NavPoint touchpad from pxa_defconfig in preparation
for removal of the driver.

Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr>
---
 arch/arm/configs/pxa_defconfig | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/arm/configs/pxa_defconfig b/arch/arm/configs/pxa_defconfig
index 9e81b1849e4c..960a7f3efc3a 100644
--- a/arch/arm/configs/pxa_defconfig
+++ b/arch/arm/configs/pxa_defconfig
@@ -244,7 +244,6 @@ CONFIG_MOUSE_PS2_ELANTECH=y
 CONFIG_MOUSE_SERIAL=m
 CONFIG_MOUSE_CYAPA=m
 CONFIG_MOUSE_ELAN_I2C=m
-CONFIG_MOUSE_NAVPOINT_PXA27x=m
 CONFIG_INPUT_TOUCHSCREEN=y
 CONFIG_TOUCHSCREEN_ADS7846=m
 CONFIG_TOUCHSCREEN_ATMEL_MXT=m

-- 
2.43.0



^ permalink raw reply related

* [PATCH 0/2] input/navpoint: remove driver
From: Duje Mihanović @ 2024-01-16 18:17 UTC (permalink / raw)
  To: Russell King, Dmitry Torokhov
  Cc: Uwe Kleine-König, linux-arm-kernel, linux-kernel,
	linux-input, Duje Mihanović

Hello,

Small series to drop the navpoint driver. The rationale is explained in
the commit message of patch 2/2.

Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr>
---
Duje Mihanović (2):
      ARM: pxa: drop MOUSE_NAVPOINT_PXA27x from defconfig
      input/navpoint: remove driver

 arch/arm/configs/pxa_defconfig |   1 -
 drivers/input/mouse/Kconfig    |  12 --
 drivers/input/mouse/Makefile   |   1 -
 drivers/input/mouse/navpoint.c | 361 -----------------------------------------
 include/linux/input/navpoint.h |   9 -
 5 files changed, 384 deletions(-)
---
base-commit: 0dd3ee31125508cd67f7e7172247f05b7fd1753a
change-id: 20240106-navpoint-removal-38225f48733a

Best regards,
-- 
Duje Mihanović <duje.mihanovic@skole.hr>



^ permalink raw reply

* [PATCH 2/2] input/navpoint: remove driver
From: Duje Mihanović @ 2024-01-16 18:17 UTC (permalink / raw)
  To: Russell King, Dmitry Torokhov
  Cc: Uwe Kleine-König, linux-arm-kernel, linux-kernel,
	linux-input, Duje Mihanović
In-Reply-To: <20240116-navpoint-removal-v1-0-593ae4954a83@skole.hr>

This driver does not use the SPI core as it should, instead tampering
with the SSP registers manually. Besides this, it relies on the global
GPIO namespace. Refactoring the driver is almost certainly not worth it
as it was seemingly only implemented in the HP iPAQ hx4700 removed more
than a year ago in d6df7df7ae5a ("ARM: pxa: remove unused board files"),
so let's remove it.

Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr>
---
 drivers/input/mouse/Kconfig    |  12 --
 drivers/input/mouse/Makefile   |   1 -
 drivers/input/mouse/navpoint.c | 361 -----------------------------------------
 include/linux/input/navpoint.h |   9 -
 4 files changed, 383 deletions(-)

diff --git a/drivers/input/mouse/Kconfig b/drivers/input/mouse/Kconfig
index 32cc4c62a716..833b643f0616 100644
--- a/drivers/input/mouse/Kconfig
+++ b/drivers/input/mouse/Kconfig
@@ -439,16 +439,4 @@ config MOUSE_SYNAPTICS_USB
 	  To compile this driver as a module, choose M here: the
 	  module will be called synaptics_usb.
 
-config MOUSE_NAVPOINT_PXA27x
-	tristate "Synaptics NavPoint (PXA27x SSP/SPI)"
-	depends on PXA27x && PXA_SSP
-	help
-	  This driver adds support for the Synaptics NavPoint touchpad connected
-	  to a PXA27x SSP port in SPI slave mode. The device emulates a mouse;
-	  a tap or tap-and-a-half drag gesture emulates the left mouse button.
-	  For example, use the xf86-input-evdev driver for an X pointing device.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called navpoint.
-
 endif
diff --git a/drivers/input/mouse/Makefile b/drivers/input/mouse/Makefile
index 92b3204ce84e..a1336d5bee6f 100644
--- a/drivers/input/mouse/Makefile
+++ b/drivers/input/mouse/Makefile
@@ -15,7 +15,6 @@ obj-$(CONFIG_MOUSE_GPIO)		+= gpio_mouse.o
 obj-$(CONFIG_MOUSE_INPORT)		+= inport.o
 obj-$(CONFIG_MOUSE_LOGIBM)		+= logibm.o
 obj-$(CONFIG_MOUSE_MAPLE)		+= maplemouse.o
-obj-$(CONFIG_MOUSE_NAVPOINT_PXA27x)	+= navpoint.o
 obj-$(CONFIG_MOUSE_PC110PAD)		+= pc110pad.o
 obj-$(CONFIG_MOUSE_PS2)			+= psmouse.o
 obj-$(CONFIG_MOUSE_RISCPC)		+= rpcmouse.o
diff --git a/drivers/input/mouse/navpoint.c b/drivers/input/mouse/navpoint.c
deleted file mode 100644
index c00dc1275da2..000000000000
--- a/drivers/input/mouse/navpoint.c
+++ /dev/null
@@ -1,361 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Synaptics NavPoint (PXA27x SSP/SPI) driver.
- *
- * Copyright (C) 2012 Paul Parsons <lost.distance@yahoo.com>
- */
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/clk.h>
-#include <linux/delay.h>
-#include <linux/gpio.h>
-#include <linux/input.h>
-#include <linux/input/navpoint.h>
-#include <linux/interrupt.h>
-#include <linux/mutex.h>
-#include <linux/pxa2xx_ssp.h>
-#include <linux/slab.h>
-
-/*
- * Synaptics Modular Embedded Protocol: Module Packet Format.
- * Module header byte 2:0 = Length (# bytes that follow)
- * Module header byte 4:3 = Control
- * Module header byte 7:5 = Module Address
- */
-#define HEADER_LENGTH(byte)	((byte) & 0x07)
-#define HEADER_CONTROL(byte)	(((byte) >> 3) & 0x03)
-#define HEADER_ADDRESS(byte)	((byte) >> 5)
-
-struct navpoint {
-	struct ssp_device	*ssp;
-	struct input_dev	*input;
-	struct device		*dev;
-	int			gpio;
-	int			index;
-	u8			data[1 + HEADER_LENGTH(0xff)];
-};
-
-/*
- * Initialization values for SSCR0_x, SSCR1_x, SSSR_x.
- */
-static const u32 sscr0 = 0
-	| SSCR0_TUM		/* TIM = 1; No TUR interrupts */
-	| SSCR0_RIM		/* RIM = 1; No ROR interrupts */
-	| SSCR0_SSE		/* SSE = 1; SSP enabled */
-	| SSCR0_Motorola	/* FRF = 0; Motorola SPI */
-	| SSCR0_DataSize(16)	/* DSS = 15; Data size = 16-bit */
-	;
-static const u32 sscr1 = 0
-	| SSCR1_SCFR		/* SCFR = 1; SSPSCLK only during transfers */
-	| SSCR1_SCLKDIR		/* SCLKDIR = 1; Slave mode */
-	| SSCR1_SFRMDIR		/* SFRMDIR = 1; Slave mode */
-	| SSCR1_RWOT		/* RWOT = 1; Receive without transmit mode */
-	| SSCR1_RxTresh(1)	/* RFT = 0; Receive FIFO threshold = 1 */
-	| SSCR1_SPH		/* SPH = 1; SSPSCLK inactive 0.5 + 1 cycles */
-	| SSCR1_RIE		/* RIE = 1; Receive FIFO interrupt enabled */
-	;
-static const u32 sssr = 0
-	| SSSR_BCE		/* BCE = 1; Clear BCE */
-	| SSSR_TUR		/* TUR = 1; Clear TUR */
-	| SSSR_EOC		/* EOC = 1; Clear EOC */
-	| SSSR_TINT		/* TINT = 1; Clear TINT */
-	| SSSR_PINT		/* PINT = 1; Clear PINT */
-	| SSSR_ROR		/* ROR = 1; Clear ROR */
-	;
-
-/*
- * MEP Query $22: Touchpad Coordinate Range Query is not supported by
- * the NavPoint module, so sampled values provide the default limits.
- */
-#define NAVPOINT_X_MIN		1278
-#define NAVPOINT_X_MAX		5340
-#define NAVPOINT_Y_MIN		1572
-#define NAVPOINT_Y_MAX		4396
-#define NAVPOINT_PRESSURE_MIN	0
-#define NAVPOINT_PRESSURE_MAX	255
-
-static void navpoint_packet(struct navpoint *navpoint)
-{
-	int finger;
-	int gesture;
-	int x, y, z;
-
-	switch (navpoint->data[0]) {
-	case 0xff:	/* Garbage (packet?) between reset and Hello packet */
-	case 0x00:	/* Module 0, NULL packet */
-		break;
-
-	case 0x0e:	/* Module 0, Absolute packet */
-		finger = (navpoint->data[1] & 0x01);
-		gesture = (navpoint->data[1] & 0x02);
-		x = ((navpoint->data[2] & 0x1f) << 8) | navpoint->data[3];
-		y = ((navpoint->data[4] & 0x1f) << 8) | navpoint->data[5];
-		z = navpoint->data[6];
-		input_report_key(navpoint->input, BTN_TOUCH, finger);
-		input_report_abs(navpoint->input, ABS_X, x);
-		input_report_abs(navpoint->input, ABS_Y, y);
-		input_report_abs(navpoint->input, ABS_PRESSURE, z);
-		input_report_key(navpoint->input, BTN_TOOL_FINGER, finger);
-		input_report_key(navpoint->input, BTN_LEFT, gesture);
-		input_sync(navpoint->input);
-		break;
-
-	case 0x19:	/* Module 0, Hello packet */
-		if ((navpoint->data[1] & 0xf0) == 0x10)
-			break;
-		fallthrough;
-	default:
-		dev_warn(navpoint->dev,
-			 "spurious packet: data=0x%02x,0x%02x,...\n",
-			 navpoint->data[0], navpoint->data[1]);
-		break;
-	}
-}
-
-static irqreturn_t navpoint_irq(int irq, void *dev_id)
-{
-	struct navpoint *navpoint = dev_id;
-	struct ssp_device *ssp = navpoint->ssp;
-	irqreturn_t ret = IRQ_NONE;
-	u32 status;
-
-	status = pxa_ssp_read_reg(ssp, SSSR);
-	if (status & sssr) {
-		dev_warn(navpoint->dev,
-			 "unexpected interrupt: status=0x%08x\n", status);
-		pxa_ssp_write_reg(ssp, SSSR, (status & sssr));
-		ret = IRQ_HANDLED;
-	}
-
-	while (status & SSSR_RNE) {
-		u32 data;
-
-		data = pxa_ssp_read_reg(ssp, SSDR);
-		navpoint->data[navpoint->index + 0] = (data >> 8);
-		navpoint->data[navpoint->index + 1] = data;
-		navpoint->index += 2;
-		if (HEADER_LENGTH(navpoint->data[0]) < navpoint->index) {
-			navpoint_packet(navpoint);
-			navpoint->index = 0;
-		}
-		status = pxa_ssp_read_reg(ssp, SSSR);
-		ret = IRQ_HANDLED;
-	}
-
-	return ret;
-}
-
-static void navpoint_up(struct navpoint *navpoint)
-{
-	struct ssp_device *ssp = navpoint->ssp;
-	int timeout;
-
-	clk_prepare_enable(ssp->clk);
-
-	pxa_ssp_write_reg(ssp, SSCR1, sscr1);
-	pxa_ssp_write_reg(ssp, SSSR, sssr);
-	pxa_ssp_write_reg(ssp, SSTO, 0);
-	pxa_ssp_write_reg(ssp, SSCR0, sscr0);	/* SSCR0_SSE written last */
-
-	/* Wait until SSP port is ready for slave clock operations */
-	for (timeout = 100; timeout != 0; --timeout) {
-		if (!(pxa_ssp_read_reg(ssp, SSSR) & SSSR_CSS))
-			break;
-		msleep(1);
-	}
-
-	if (timeout == 0)
-		dev_err(navpoint->dev,
-			"timeout waiting for SSSR[CSS] to clear\n");
-
-	if (gpio_is_valid(navpoint->gpio))
-		gpio_set_value(navpoint->gpio, 1);
-}
-
-static void navpoint_down(struct navpoint *navpoint)
-{
-	struct ssp_device *ssp = navpoint->ssp;
-
-	if (gpio_is_valid(navpoint->gpio))
-		gpio_set_value(navpoint->gpio, 0);
-
-	pxa_ssp_write_reg(ssp, SSCR0, 0);
-
-	clk_disable_unprepare(ssp->clk);
-}
-
-static int navpoint_open(struct input_dev *input)
-{
-	struct navpoint *navpoint = input_get_drvdata(input);
-
-	navpoint_up(navpoint);
-
-	return 0;
-}
-
-static void navpoint_close(struct input_dev *input)
-{
-	struct navpoint *navpoint = input_get_drvdata(input);
-
-	navpoint_down(navpoint);
-}
-
-static int navpoint_probe(struct platform_device *pdev)
-{
-	const struct navpoint_platform_data *pdata =
-					dev_get_platdata(&pdev->dev);
-	struct ssp_device *ssp;
-	struct input_dev *input;
-	struct navpoint *navpoint;
-	int error;
-
-	if (!pdata) {
-		dev_err(&pdev->dev, "no platform data\n");
-		return -EINVAL;
-	}
-
-	if (gpio_is_valid(pdata->gpio)) {
-		error = gpio_request_one(pdata->gpio, GPIOF_OUT_INIT_LOW,
-					 "SYNAPTICS_ON");
-		if (error)
-			return error;
-	}
-
-	ssp = pxa_ssp_request(pdata->port, pdev->name);
-	if (!ssp) {
-		error = -ENODEV;
-		goto err_free_gpio;
-	}
-
-	/* HaRET does not disable devices before jumping into Linux */
-	if (pxa_ssp_read_reg(ssp, SSCR0) & SSCR0_SSE) {
-		pxa_ssp_write_reg(ssp, SSCR0, 0);
-		dev_warn(&pdev->dev, "ssp%d already enabled\n", pdata->port);
-	}
-
-	navpoint = kzalloc(sizeof(*navpoint), GFP_KERNEL);
-	input = input_allocate_device();
-	if (!navpoint || !input) {
-		error = -ENOMEM;
-		goto err_free_mem;
-	}
-
-	navpoint->ssp = ssp;
-	navpoint->input = input;
-	navpoint->dev = &pdev->dev;
-	navpoint->gpio = pdata->gpio;
-
-	input->name = pdev->name;
-	input->dev.parent = &pdev->dev;
-
-	__set_bit(EV_KEY, input->evbit);
-	__set_bit(EV_ABS, input->evbit);
-	__set_bit(BTN_LEFT, input->keybit);
-	__set_bit(BTN_TOUCH, input->keybit);
-	__set_bit(BTN_TOOL_FINGER, input->keybit);
-
-	input_set_abs_params(input, ABS_X,
-			     NAVPOINT_X_MIN, NAVPOINT_X_MAX, 0, 0);
-	input_set_abs_params(input, ABS_Y,
-			     NAVPOINT_Y_MIN, NAVPOINT_Y_MAX, 0, 0);
-	input_set_abs_params(input, ABS_PRESSURE,
-			     NAVPOINT_PRESSURE_MIN, NAVPOINT_PRESSURE_MAX,
-			     0, 0);
-
-	input->open = navpoint_open;
-	input->close = navpoint_close;
-
-	input_set_drvdata(input, navpoint);
-
-	error = request_irq(ssp->irq, navpoint_irq, 0, pdev->name, navpoint);
-	if (error)
-		goto err_free_mem;
-
-	error = input_register_device(input);
-	if (error)
-		goto err_free_irq;
-
-	platform_set_drvdata(pdev, navpoint);
-	dev_dbg(&pdev->dev, "ssp%d, irq %d\n", pdata->port, ssp->irq);
-
-	return 0;
-
-err_free_irq:
-	free_irq(ssp->irq, navpoint);
-err_free_mem:
-	input_free_device(input);
-	kfree(navpoint);
-	pxa_ssp_free(ssp);
-err_free_gpio:
-	if (gpio_is_valid(pdata->gpio))
-		gpio_free(pdata->gpio);
-
-	return error;
-}
-
-static void navpoint_remove(struct platform_device *pdev)
-{
-	const struct navpoint_platform_data *pdata =
-					dev_get_platdata(&pdev->dev);
-	struct navpoint *navpoint = platform_get_drvdata(pdev);
-	struct ssp_device *ssp = navpoint->ssp;
-
-	free_irq(ssp->irq, navpoint);
-
-	input_unregister_device(navpoint->input);
-	kfree(navpoint);
-
-	pxa_ssp_free(ssp);
-
-	if (gpio_is_valid(pdata->gpio))
-		gpio_free(pdata->gpio);
-}
-
-static int navpoint_suspend(struct device *dev)
-{
-	struct platform_device *pdev = to_platform_device(dev);
-	struct navpoint *navpoint = platform_get_drvdata(pdev);
-	struct input_dev *input = navpoint->input;
-
-	mutex_lock(&input->mutex);
-	if (input_device_enabled(input))
-		navpoint_down(navpoint);
-	mutex_unlock(&input->mutex);
-
-	return 0;
-}
-
-static int navpoint_resume(struct device *dev)
-{
-	struct platform_device *pdev = to_platform_device(dev);
-	struct navpoint *navpoint = platform_get_drvdata(pdev);
-	struct input_dev *input = navpoint->input;
-
-	mutex_lock(&input->mutex);
-	if (input_device_enabled(input))
-		navpoint_up(navpoint);
-	mutex_unlock(&input->mutex);
-
-	return 0;
-}
-
-static DEFINE_SIMPLE_DEV_PM_OPS(navpoint_pm_ops,
-				navpoint_suspend, navpoint_resume);
-
-static struct platform_driver navpoint_driver = {
-	.probe		= navpoint_probe,
-	.remove_new	= navpoint_remove,
-	.driver = {
-		.name	= "navpoint",
-		.pm	= pm_sleep_ptr(&navpoint_pm_ops),
-	},
-};
-
-module_platform_driver(navpoint_driver);
-
-MODULE_AUTHOR("Paul Parsons <lost.distance@yahoo.com>");
-MODULE_DESCRIPTION("Synaptics NavPoint (PXA27x SSP/SPI) driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("platform:navpoint");
diff --git a/include/linux/input/navpoint.h b/include/linux/input/navpoint.h
deleted file mode 100644
index d464ffb4db52..000000000000
--- a/include/linux/input/navpoint.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  Copyright (C) 2012 Paul Parsons <lost.distance@yahoo.com>
- */
-
-struct navpoint_platform_data {
-	int		port;		/* PXA SSP port for pxa_ssp_request() */
-	int		gpio;		/* GPIO for power on/off */
-};

-- 
2.43.0



^ permalink raw reply related

* Re: [PATCH 2/2] input/navpoint: remove driver
From: Dmitry Torokhov @ 2024-01-16 19:03 UTC (permalink / raw)
  To: Duje Mihanović
  Cc: Russell King, Uwe Kleine-König, linux-arm-kernel,
	linux-kernel, linux-input
In-Reply-To: <20240116-navpoint-removal-v1-2-593ae4954a83@skole.hr>

Hi Duje,

On Tue, Jan 16, 2024 at 07:17:48PM +0100, Duje Mihanović wrote:
> This driver does not use the SPI core as it should, instead tampering
> with the SSP registers manually. Besides this, it relies on the global
> GPIO namespace. Refactoring the driver is almost certainly not worth it
> as it was seemingly only implemented in the HP iPAQ hx4700 removed more
> than a year ago in d6df7df7ae5a ("ARM: pxa: remove unused board files"),
> so let's remove it.

I think this clashed with some recent cleanups to the navpoint driver.
Could you please re-generate the patch against linux-next or my "next"
branch please?

Thanks.

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH v2] Input: atkbd - Skip ATKBD_CMD_GETID in translated mode
From: Dmitry Torokhov @ 2024-01-16 19:05 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Barnabás Pőcze, linux-input, Shang Ye, gurevitch,
	Egor Ignatov, Anton Zhilyaev
In-Reply-To: <20a1cc94-7f88-4b7f-879b-1835f804e8d1@redhat.com>

On Tue, Jan 16, 2024 at 03:43:10PM +0100, Hans de Goede wrote:
> Hi,
> 
> On 1/16/24 14:32, Barnabás Pőcze wrote:
> > 
> > After:
> > 
> > evdev:input:b0011v0001p0001*
> >  KEYBOARD_KEY_f8=fn
> >  KEYBOARD_KEY_76=f21
> > 
> > I: Bus=0011 Vendor=0001 Product=0001 Version=abba
> > N: Name="AT Translated Set 2 keyboard"
> > P: Phys=isa0060/serio0/input0
> > S: Sysfs=/devices/platform/i8042/serio0/input/input4
> 
> I see, thank you. There are no v0001p0001 matches
> in the hwdb.d/60-keyboard.hwdb shipped with systems.
> 
> Typically laptop builtin keyboards use another match-type
> so that they can do DMI matching e.g.:
> 
> evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pn*:*
> 
> So luckily for almost all users the e field in the match
> rule changing should not be an issue. Sorry that this
> was a problem for you.

Hans, I wonder, if we skip "GET ID" command because it is a
portable/laptop, maybe we should assume that it is the standard "0xab83"
instead of "0xabba" that we assign if GET ID fails but SET LEDS
succeeds. What do you think?

Thanks.

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH] Input: synaptics-rmi4: Fix NULL pointer dereference in rmi_driver_probe
From: Dmitry Torokhov @ 2024-01-16 19:11 UTC (permalink / raw)
  To: Kunwu Chan; +Cc: aduggan, cheiny, linux-input, linux-kernel
In-Reply-To: <20240116083847.89934-1-chentao@kylinos.cn>

On Tue, Jan 16, 2024 at 04:38:47PM +0800, Kunwu Chan wrote:
> devm_kasprintf() returns a pointer to dynamically allocated memory
> which can be NULL upon failure. Ensure the allocation was successful
> by checking the pointer validity.

It is perfectly valid to not set "input->phys" and leave it at NULL. So
while I agree that having error handling is good I do not believe
there's chance for NULL pointer dereference, so please adjust your patch
title.

> 
> Fixes: 2b6a321da9a2 ("Input: synaptics-rmi4 - add support for Synaptics RMI4 devices")
> Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
> ---
>  drivers/input/rmi4/rmi_driver.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
> index 258d5fe3d395..d3a601ff51e6 100644
> --- a/drivers/input/rmi4/rmi_driver.c
> +++ b/drivers/input/rmi4/rmi_driver.c
> @@ -1197,6 +1197,12 @@ static int rmi_driver_probe(struct device *dev)
>  		rmi_driver_set_input_params(rmi_dev, data->input);
>  		data->input->phys = devm_kasprintf(dev, GFP_KERNEL,
>  						"%s/input0", dev_name(dev));
> +		if (!data->input->phys) {
> +			dev_err(dev, "%s: Failed to allocate memory.\n",

No need to log the error here, memory allocation will already log the
failure.

Thanks.

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH 04/33] Input: pxspad - follow renaming of SPI "master" to "controller"
From: Dmitry Torokhov @ 2024-01-16 19:14 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Mark Brown, Geert Uytterhoeven, linux-spi, kernel, linux-input
In-Reply-To: <5e05e8f918ba1f026b9967b0aaff5403a35cbf13.1705348269.git.u.kleine-koenig@pengutronix.de>

On Mon, Jan 15, 2024 at 09:12:50PM +0100, Uwe Kleine-König wrote:
> In commit 8caab75fd2c2 ("spi: Generalize SPI "master" to "controller"")
> some functions and struct members were renamed. To not break all drivers
> compatibility macros were provided.
> 
> To be able to remove these compatibility macros push the renaming into
> this driver.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Please feel free to merge with the rest of the series.

Thanks.

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH 05/33] Input: synaptics-rmi4 - follow renaming of SPI "master" to "controller"
From: Dmitry Torokhov @ 2024-01-16 19:14 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Mark Brown, Geert Uytterhoeven, linux-spi, kernel, Ulf Hansson,
	Greg Kroah-Hartman, Rayyan Ansari, Andy Shevchenko,
	Jonathan Cameron, linux-input
In-Reply-To: <5257de51fe406cf8405310dd638f648a232f4a6c.1705348269.git.u.kleine-koenig@pengutronix.de>

On Mon, Jan 15, 2024 at 09:12:51PM +0100, Uwe Kleine-König wrote:
> In commit 8caab75fd2c2 ("spi: Generalize SPI "master" to "controller"")
> some functions and struct members were renamed. To not break all drivers
> compatibility macros were provided.
> 
> To be able to remove these compatibility macros push the renaming into
> this driver.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Please feel free to merge with the rest of the series.

Thanks.

-- 
Dmitry

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox