From patchwork Sun Feb 5 14:54:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 13129055 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05A8AC636CD for ; Sun, 5 Feb 2023 14:54:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229511AbjBEOyx (ORCPT ); Sun, 5 Feb 2023 09:54:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34674 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229608AbjBEOyw (ORCPT ); Sun, 5 Feb 2023 09:54:52 -0500 Received: from mail-qv1-xf33.google.com (mail-qv1-xf33.google.com [IPv6:2607:f8b0:4864:20::f33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C6C311E1E6; Sun, 5 Feb 2023 06:54:51 -0800 (PST) Received: by mail-qv1-xf33.google.com with SMTP id d13so5738613qvj.8; Sun, 05 Feb 2023 06:54:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=j1Jbawl9+A9VS/WlcILwvsKK4Zc/TOJc/i6wLNt0AFo=; b=It0FvL4svdzCpNV5+yI5JOQQkErwIUTEtOecA+CdFeag0vUM0l6eTjDx+NniIkbE7E l4tRvMnbzubUu8F3Hr/Pyj1UmgDvTZK829MmRIbAlFLg1ikds8NbAVX++klfe8nNp+70 P/YCB5XUajaVXzT7pfnIheWRWXBLRjuz848bP3sUCLkguB4hRZJ4FDkw5MOrsb1DJdqc XKOlYhHFZCUmx4OPYhSoZL2NgvNETF0SCvKgHPeLp3xR6BG2/AVRZoJyILV6ledgYLat Km803MG2hpFo1EH6ZRrOFd+X3TjBvgBTANFyeUtKnKOeS10eXEwBrG658w3TALI4M3gx YiMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=j1Jbawl9+A9VS/WlcILwvsKK4Zc/TOJc/i6wLNt0AFo=; b=ue0doU3k3KsLAbLc34Ct+g42Wj0SvdL4TaW6vrE7ls8pltlN8BeMt16avEhvCDhBMX JaTdgV/cago+jksDtYazJjXQheqOWOWzUReLTSwSzqrnNHMA1jt/odczyonHoeyTMIr8 VohjCG8qQ8q6T85/zUn5dU3MZGvDku71NKj2ZaWJOZK9SaLUXUPLtdRQtRwdJhLK71XF wFoYZMD2UlSC4q0iv3K/DdfM8XbjK0+nplCXMRyVyZlc6vqCemU+1mY6GNE7vmjSK6JS cRtLRj8zgfmyNaliKcy/y56Rz3FSZHKEXWBjWyO9JlHum51g+QE1uh3Tc1cgmcBfRAuq wGXA== X-Gm-Message-State: AO0yUKX32R81pVoPxQ0jKXa1NlokQK0Shuyaa+LptAtyPyhf6DkaouU6 YbawXOVLh8NiA9wjZByZsRf3Pd6n2KHjOQ== X-Google-Smtp-Source: AK7set9Kjf2TlFCFGApRIQ9oiII7LNze98AE7FN13F8OO8Q/qFjLdjuxdxgBD3ruQihiUeIB30BZMw== X-Received: by 2002:ad4:5945:0:b0:56b:ebff:6850 with SMTP id eo5-20020ad45945000000b0056bebff6850mr7265826qvb.8.1675608890803; Sun, 05 Feb 2023 06:54:50 -0800 (PST) Received: from DANNY-DESKTOP.localdomain (071-013-243-092.res.spectrum.com. [71.13.243.92]) by smtp.gmail.com with ESMTPSA id b5-20020a37b205000000b00719165e9e72sm5560048qkf.91.2023.02.05.06.54.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Feb 2023 06:54:50 -0800 (PST) From: Danny Kaehn To: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, jikos@kernel.org, benjamin.tissoires@redhat.com Cc: devicetree@vger.kernel.org, linux-input@vger.kernel.org, ethan.twardy@plexus.com Subject: [PATCH v3 1/4] dt-bindings: input: Add CP2112 HID USB to SMBus Bridge Date: Sun, 5 Feb 2023 08:54:47 -0600 Message-Id: <20230205145450.3396-2-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230205145450.3396-1-kaehndan@gmail.com> References: <20230205145450.3396-1-kaehndan@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org This is a USB HID device which includes an I2C controller and 8 GPIO pins. The binding allows describing the chip's gpio and i2c controller in DT using the subnodes named "gpio" and "i2c", respectively. This is intended to be used in configurations where the CP2112 is permanently connected in hardware. Signed-off-by: Danny Kaehn --- .../bindings/input/silabs,cp2112.yaml | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 Documentation/devicetree/bindings/input/silabs,cp2112.yaml diff --git a/Documentation/devicetree/bindings/input/silabs,cp2112.yaml b/Documentation/devicetree/bindings/input/silabs,cp2112.yaml new file mode 100644 index 000000000000..eb2e89edb80a --- /dev/null +++ b/Documentation/devicetree/bindings/input/silabs,cp2112.yaml @@ -0,0 +1,112 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/input/silabs,cp2112.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: CP2112 HID USB to SMBus/I2C Bridge + +maintainers: + - Danny Kaehn + +description: + The CP2112 is a USB HID device which includes an integrated I2C controller + and 8 GPIO pins. Its GPIO pins can each be configured as inputs, open-drain + outputs, or push-pull outputs. + +properties: + compatible: + const: usb10c4,ea90 + + reg: + maxItems: 1 + description: The USB port number on the host controller + + i2c: + description: The SMBus/I2C controller node for the CP2112 + $ref: /schemas/i2c/i2c-controller.yaml# + unevaluatedProperties: false + properties: + clock-frequency: + minimum: 10000 + default: 100000 + maximum: 400000 + + gpio: + description: The GPIO controller node for the CP2112 + type: object + properties: + interrupt-controller: true + "#interrupt-cells": + const: 2 + + gpio-controller: true + "#gpio-cells": + const: 2 + + ngpios: + const: 8 + + gpio-line-names: + minItems: 1 + maxItems: 8 + + patternProperties: + "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$": + type: object + properties: + gpio-hog: true + input: true + output-high: true + output-low: true + line-name: true + gpios: + minItems: 1 + maxItems: 8 + + required: + - gpio-hog + - gpios + + additionalProperties: false + + unevaluatedProperties: false + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + #include + #include + + usb { + #address-cells = <1>; + #size-cells = <0>; + + device@1 { + compatible = "usb10c4,ea90"; + reg = <1>; + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + temp@48 { + compatible = "national,lm75"; + reg = <0x48>; + }; + }; + + gpio { + gpio-controller; + interrupt-controller; + #gpio-cells = <2>; + gpio-line-names = "TEST0", "TEST1", "TEST2", + "TEST3", "TEST4", "TEST5", "TEST6", "TEST7"; + }; + }; + }; From patchwork Sun Feb 5 14:54:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 13129056 X-Patchwork-Delegate: jikos@jikos.cz Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0DA0DC64EC3 for ; Sun, 5 Feb 2023 14:54:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229524AbjBEOyy (ORCPT ); Sun, 5 Feb 2023 09:54:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34680 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229644AbjBEOyx (ORCPT ); Sun, 5 Feb 2023 09:54:53 -0500 Received: from mail-qt1-x82e.google.com (mail-qt1-x82e.google.com [IPv6:2607:f8b0:4864:20::82e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A25661ABEC; Sun, 5 Feb 2023 06:54:52 -0800 (PST) Received: by mail-qt1-x82e.google.com with SMTP id z5so10361662qtn.8; Sun, 05 Feb 2023 06:54:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vxwJJG81TUrsdw3X7aHgdC1I62jcckROfzmxoyJojKQ=; b=qM+1Av63ZNvzje3AGryPbJBgQom/HBh7vyi4TYG/z+lKRco2eLKdeVlL9Tnij2euRh UnvQTgAAJVTQ1MWVEmooNb7vQrVNjLviYyfPuK3wBeC0vrpjCgFaeb+k+ONEH7vPkw71 JBGcDfl68qOIuU+j/XTBn54kvkemTlOMwjFKjeRMfEec7lmAYkPy7E44WGKqYRZwOpWq 0NqPknJnLDoHTXmfXCumqpiSr2bq6oXFiQPwMEvCjjzQuc+A91idL92ta7wide/bqx1v f7pMvoV+StSC8qW5+KLiG7Zv1LA0RHImdVYZkth4078kA17aTuDbAV7I6Ygf3o1+BmZQ 4t5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vxwJJG81TUrsdw3X7aHgdC1I62jcckROfzmxoyJojKQ=; b=gMgUUurXMFHliDgwcG5j6BDuHaMRMwqvmagZfPsjRc9PQhS6N76l9LFiWuCdz6Vpjp E043UXzdUJatkaR5UCj7PQMEazWptpuWPvRcuyLVhCfGRrio+mw8PrVJ1Pz6Xh7POgkG yp0728BQnJRQVCU+XSSrTgBAmKSjlX+ILPlXbFc358G2JTyKUlrEsrgKL6qE+iRSwoo8 CwTc28608ZCnA/QLwJpAcvg/90SpBQY//m7zeN6MrJDBJr+QNG8W86S5apbg0IvQJvus a/y7dR89dW9JrRZHg7HTZ8sz7Iclgh6vjDKS0tPvMqozRxIdleRwah62oFgdfnqwtZ8b FAPQ== X-Gm-Message-State: AO0yUKWkhd4hT9BLC6Sg8hQTW130AisQKpyYHRTZtWX3GwVvoWHLN3GQ V02o0Yyx2c7Yr2NhflUVxib1yXSCJJss/w== X-Google-Smtp-Source: AK7set+imUc/jAcFTVWz9wlh8gROoRPklyvLMlRlEDiu5jMGOfJ8Xsalikxws4agIPfG+bFhIdsMXg== X-Received: by 2002:ac8:7fc3:0:b0:3b8:6a5f:9918 with SMTP id b3-20020ac87fc3000000b003b86a5f9918mr31364700qtk.63.1675608891686; Sun, 05 Feb 2023 06:54:51 -0800 (PST) Received: from DANNY-DESKTOP.localdomain (071-013-243-092.res.spectrum.com. [71.13.243.92]) by smtp.gmail.com with ESMTPSA id b5-20020a37b205000000b00719165e9e72sm5560048qkf.91.2023.02.05.06.54.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Feb 2023 06:54:51 -0800 (PST) From: Danny Kaehn To: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, jikos@kernel.org, benjamin.tissoires@redhat.com Cc: devicetree@vger.kernel.org, linux-input@vger.kernel.org, ethan.twardy@plexus.com Subject: [PATCH v3 2/4] HID: usbhid: Share USB device devicetree node with child HID device Date: Sun, 5 Feb 2023 08:54:48 -0600 Message-Id: <20230205145450.3396-3-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230205145450.3396-1-kaehndan@gmail.com> References: <20230205145450.3396-1-kaehndan@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org USB HID core now shares its devicetree of_node with its child HID device. Since there can only be one HID device on a USB interface, it is redundant to specify a hid node under the USB device (and further, binding this way isn't currently possible, as hid_driver does not support of_match_table). Signed-off-by: Danny Kaehn --- drivers/hid/usbhid/hid-core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index be4c731aaa65..b6c968af258f 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "usbhid.h" /* @@ -1369,6 +1370,7 @@ static int usbhid_probe(struct usb_interface *intf, const struct usb_device_id * hid->hiddev_report_event = hiddev_report_event; #endif hid->dev.parent = &intf->dev; + device_set_of_node_from_dev(&hid->dev, &intf->dev); hid->bus = BUS_USB; hid->vendor = le16_to_cpu(dev->descriptor.idVendor); hid->product = le16_to_cpu(dev->descriptor.idProduct); From patchwork Sun Feb 5 14:54:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 13129057 X-Patchwork-Delegate: jikos@jikos.cz Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC59FC64EC4 for ; Sun, 5 Feb 2023 14:54:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229485AbjBEOyz (ORCPT ); Sun, 5 Feb 2023 09:54:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34700 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229608AbjBEOyy (ORCPT ); Sun, 5 Feb 2023 09:54:54 -0500 Received: from mail-qt1-x832.google.com (mail-qt1-x832.google.com [IPv6:2607:f8b0:4864:20::832]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8F0F81ABEC; Sun, 5 Feb 2023 06:54:53 -0800 (PST) Received: by mail-qt1-x832.google.com with SMTP id c2so10369261qtw.5; Sun, 05 Feb 2023 06:54:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oAYdJzzeTeXOhvH5ct62NBOgopLWCsTH7OnUSEt6qQ0=; b=oN3s8lEqF/jrI7uWWfNCp/oOOHpd1zMcvrWlv2YrgLr+XiQ6zNorSiNpI4RjTK1bJM KSkK4uJwxh97f4BTgE1AhX/r1ovMkhDGYISDgEbNEkcgkxidzDO0vkYW2ixoNSg6TxbJ T0gs1FbisNe93O40KZB7pCOCKaxjnUpN2lPUVqj92SPmlIMinXaTct+6CZPY+AZtwld/ 8ojaGqUCNpbtWs12b9SMNXC05riA295OvAvg9QF4Y+loa0gG7kxmQmdWLmkAAC2YI+cA szCSRXjYOBHtzGVYurhs4cp1iuZzpmkMkOMjGKN6zK+m0jSFaln+u9bHa6iLgilWbnLX u9DQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oAYdJzzeTeXOhvH5ct62NBOgopLWCsTH7OnUSEt6qQ0=; b=XOcjpnzea069iPULPUD3QVCFjLqkn4R+263RoxMbvrUlMWBN67Nt2Tp+A/F4kC3lPu evA42AheaX6TIZfRyLrQr2OhtRN0qdLtwFY86cBB6xKNKZL3XnUwLub9n0cbdXWw/qxk wCGTtaMBTDB46DJuentMA4LxnFZKcdiHQBnXiP6tc4at5G9Z/YK6uItNbYcR5Wk/evJj XYR64DksuDoqdzC6aK/b7Y/ZhrvIhjC4kkaBrXmc61z0r1j5NnMkN9Zp8dFjiNvSKNQ0 vdaKfVg2te//gOdZd5Stv1MxTx46SzI20giY0O4wRa9spRZk2g7YMJEFcsKZYBmzCV6z W+ow== X-Gm-Message-State: AO0yUKWUHutWrrA78JI7v88ryBAfDOFayCRHu2UhtcqoJ48CEiW5jYv8 ehP7fM3uhyFbNhY6YcKUYu0= X-Google-Smtp-Source: AK7set+dn/tif92slXEcOkAutHmwPOep6FbQxODDy5hgz7sttVDRnzSWwdZUW8ZR2stma3B9YHE/pw== X-Received: by 2002:a05:622a:1986:b0:3ba:38:2f5f with SMTP id u6-20020a05622a198600b003ba00382f5fmr15718539qtc.32.1675608892579; Sun, 05 Feb 2023 06:54:52 -0800 (PST) Received: from DANNY-DESKTOP.localdomain (071-013-243-092.res.spectrum.com. [71.13.243.92]) by smtp.gmail.com with ESMTPSA id b5-20020a37b205000000b00719165e9e72sm5560048qkf.91.2023.02.05.06.54.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Feb 2023 06:54:52 -0800 (PST) From: Danny Kaehn To: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, jikos@kernel.org, benjamin.tissoires@redhat.com Cc: devicetree@vger.kernel.org, linux-input@vger.kernel.org, ethan.twardy@plexus.com Subject: [PATCH v3 3/4] HID: cp2112: Fix driver not registering GPIO IRQ chip as threaded Date: Sun, 5 Feb 2023 08:54:49 -0600 Message-Id: <20230205145450.3396-4-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230205145450.3396-1-kaehndan@gmail.com> References: <20230205145450.3396-1-kaehndan@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org The CP2112 generates interrupts from a polling routine on a thread, and can only support threaded interrupts. This patch configures the gpiochip irq chip with this flag, disallowing consumers to request a hard IRQ from this driver, which resulted in a segfault previously. Signed-off-by: Danny Kaehn --- drivers/hid/hid-cp2112.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c index 1e16b0fa310d..27cadadda7c9 100644 --- a/drivers/hid/hid-cp2112.c +++ b/drivers/hid/hid-cp2112.c @@ -1354,6 +1354,7 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) girq->parents = NULL; girq->default_type = IRQ_TYPE_NONE; girq->handler = handle_simple_irq; + girq->threaded = true; ret = gpiochip_add_data(&dev->gc, dev); if (ret < 0) { From patchwork Sun Feb 5 14:54:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Kaehn X-Patchwork-Id: 13129058 X-Patchwork-Delegate: jikos@jikos.cz Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E94CDC636CC for ; Sun, 5 Feb 2023 14:54:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229759AbjBEOy6 (ORCPT ); Sun, 5 Feb 2023 09:54:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34800 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229608AbjBEOy4 (ORCPT ); Sun, 5 Feb 2023 09:54:56 -0500 Received: from mail-qt1-x82c.google.com (mail-qt1-x82c.google.com [IPv6:2607:f8b0:4864:20::82c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87CEECC14; Sun, 5 Feb 2023 06:54:54 -0800 (PST) Received: by mail-qt1-x82c.google.com with SMTP id g18so8056800qtb.6; Sun, 05 Feb 2023 06:54:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UxXKGR9ltFdKDl8mSCieW1oHKLB8nv28bH/fp3/rD9Q=; b=axPmLZFKu5zQ5MCi0CkYBG90wusDkLUaGFvG2lUgaFRwi9KBdZiL2DPg3Gs1siYg5h Lxqxw+c/E9ddSvNtmVJZrIMFQJNMncNL2F8/gBQTu8UYQbVo1Lcmn/Bg08MBrTdYgtOP aCTCi/Ks8ZpmQEFI5eMDBBptnlEzCPKt6qUES+OQmcsQfwEVF16MWf1cM1dQ7XS/u2Ur ssb90RFgB1OBoEFOkMV9KJ4NCwe2LowmvT/MpkPPb5oshOzxwo5DZuSiCmK8Xc4gRQYE LZ6TYvjR70gSFzZ4/12JE6489x1jXwuszD7BP452csvyYsY1s1AbRZNJi+rEyy+kG4g8 KmHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UxXKGR9ltFdKDl8mSCieW1oHKLB8nv28bH/fp3/rD9Q=; b=nbflvevlnQYl6alT7X+o/jD4EQ1uB8fFWJA2Ob39v/+XCopttPPMkf4YHP7cBpSiYO gvjsdG1iiu/53gepzqXVVh9nan1nFX0l6r7G3n5nDm579C5thDLIERHd7c9byoXDBZmH aCbDxbcyF+uqI05tt8lyqzdFp2zAbF4StuWGT/Wd+7H+YMGFms06RbeiH0iPwf0GcrdJ /33Xc6hD+1kzqwVGXoEfGV7dzPChbH3F2HzOQLQhwszosP8zRR16FHFr6jX4WteSf8oU faMmS9tmNxLYST0EHMU/ttaj6CDiM9ZaTIMzhSA2sNaGR6p4Ct9RbOo6FuZ40alXEALd +I7A== X-Gm-Message-State: AO0yUKV0XdLwHdntsGd1TgFDBbDPtXYxjyM8cvWYnCCrfUF6iQ0ish06 OGzMFBP1YhisfARxv8+uFYw= X-Google-Smtp-Source: AK7set9JVkSwwOLIla/B6LbZhxUvuW8a4pgkds1sw9acox/imHWOQ9r57xpOjGF57q0hPa2ukDVqbw== X-Received: by 2002:ac8:7f01:0:b0:3b8:2e48:921a with SMTP id f1-20020ac87f01000000b003b82e48921amr33953215qtk.57.1675608893472; Sun, 05 Feb 2023 06:54:53 -0800 (PST) Received: from DANNY-DESKTOP.localdomain (071-013-243-092.res.spectrum.com. [71.13.243.92]) by smtp.gmail.com with ESMTPSA id b5-20020a37b205000000b00719165e9e72sm5560048qkf.91.2023.02.05.06.54.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Feb 2023 06:54:53 -0800 (PST) From: Danny Kaehn To: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, jikos@kernel.org, benjamin.tissoires@redhat.com Cc: devicetree@vger.kernel.org, linux-input@vger.kernel.org, ethan.twardy@plexus.com Subject: [PATCH v3 4/4] HID: cp2112: Devicetree Support Date: Sun, 5 Feb 2023 08:54:50 -0600 Message-Id: <20230205145450.3396-5-kaehndan@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230205145450.3396-1-kaehndan@gmail.com> References: <20230205145450.3396-1-kaehndan@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org Bind i2c and gpio interfaces to subnodes with names "i2c" and "gpio" if they exist, respectively. This allows the gpio and i2c controllers to be described in DT as usual. Additionally, support configuring the i2c bus speed from the clock-frequency property. Signed-off-by: Danny Kaehn --- drivers/hid/hid-cp2112.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c index 27cadadda7c9..aa634accdfb0 100644 --- a/drivers/hid/hid-cp2112.c +++ b/drivers/hid/hid-cp2112.c @@ -1234,6 +1234,7 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) u8 buf[3]; struct cp2112_smbus_config_report config; struct gpio_irq_chip *girq; + struct i2c_timings timings; int ret; dev = devm_kzalloc(&hdev->dev, sizeof(*dev), GFP_KERNEL); @@ -1292,6 +1293,10 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) goto err_power_normal; } + dev->adap.dev.of_node = of_get_child_by_name(hdev->dev.of_node, "i2c"); + i2c_parse_fw_timings(&dev->adap.dev, &timings, true); + + config.clock_speed = cpu_to_be32(timings.bus_freq_hz); config.retry_time = cpu_to_be16(1); ret = cp2112_hid_output(hdev, (u8 *)&config, sizeof(config), @@ -1300,7 +1305,7 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) hid_err(hdev, "error setting SMBus config\n"); if (ret >= 0) ret = -EIO; - goto err_power_normal; + goto err_free_i2c_of; } hid_set_drvdata(hdev, (void *)dev); @@ -1322,7 +1327,7 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) if (ret) { hid_err(hdev, "error registering i2c adapter\n"); - goto err_power_normal; + goto err_free_i2c_of; } hid_dbg(hdev, "adapter registered\n"); @@ -1336,6 +1341,9 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) dev->gc.ngpio = 8; dev->gc.can_sleep = 1; dev->gc.parent = &hdev->dev; +#if IS_ENABLED(CONFIG_OF_GPIO) + dev->gc.of_node = of_get_child_by_name(hdev->dev.of_node, "gpio"); +#endif dev->irq.name = "cp2112-gpio"; dev->irq.irq_startup = cp2112_gpio_irq_startup; @@ -1376,7 +1384,12 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) err_gpiochip_remove: gpiochip_remove(&dev->gc); err_free_i2c: +#if IS_ENABLED(CONFIG_OF_GPIO) + of_node_put(dev->gc.of_node); +#endif i2c_del_adapter(&dev->adap); +err_free_i2c_of: + of_node_put(dev->adap.dev.of_node); err_power_normal: hid_hw_power(hdev, PM_HINT_NORMAL); err_hid_close: @@ -1391,6 +1404,11 @@ static void cp2112_remove(struct hid_device *hdev) struct cp2112_device *dev = hid_get_drvdata(hdev); int i; + of_node_put(dev->adap.dev.of_node); +#if IS_ENABLED(CONFIG_OF_GPIO) + of_node_put(dev->gc.of_node); +#endif + sysfs_remove_group(&hdev->dev.kobj, &cp2112_attr_group); i2c_del_adapter(&dev->adap);