summaryrefslogtreecommitdiffstats
path: root/drivers/input/misc
diff options
context:
space:
mode:
authorBenjamin Tissoires2016-11-25 20:36:01 +0100
committerDmitry Torokhov2016-11-25 20:39:50 +0100
commit3d5a9437a68a184fbbd0dcf09bf4daf40250505e (patch)
tree62881e1940d7d44f453f649fb7ee38dd0f4360ab /drivers/input/misc
parentInput: soc_button_array - use gpio_is_valid() (diff)
downloadkernel-qcow2-linux-3d5a9437a68a184fbbd0dcf09bf4daf40250505e.tar.gz
kernel-qcow2-linux-3d5a9437a68a184fbbd0dcf09bf4daf40250505e.tar.xz
kernel-qcow2-linux-3d5a9437a68a184fbbd0dcf09bf4daf40250505e.zip
Input: soc_button_array - bail out earlier if gpiod_count is zero
The PNP0C40 device of the Surface 3 doesn't have any GPIO attached to it. Instead of trying to access the GPIO, request the count beforehand and bail out if it is null or if an error is returned. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/misc')
-rw-r--r--drivers/input/misc/soc_button_array.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/soc_button_array.c
index bbd433c4a5aa..908b51089dee 100644
--- a/drivers/input/misc/soc_button_array.c
+++ b/drivers/input/misc/soc_button_array.c
@@ -167,6 +167,11 @@ static int soc_button_probe(struct platform_device *pdev)
button_info = (struct soc_button_info *)id->driver_data;
+ if (gpiod_count(&pdev->dev, KBUILD_MODNAME) <= 0) {
+ dev_dbg(&pdev->dev, "no GPIO attached, ignoring...\n");
+ return -ENODEV;
+ }
+
priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;