From patchwork Fri Jul 14 08:19:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naresh Solanki X-Patchwork-Id: 703412 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 F2A3DEB64DA for ; Fri, 14 Jul 2023 08:19:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234714AbjGNITJ (ORCPT ); Fri, 14 Jul 2023 04:19:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39688 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233269AbjGNITI (ORCPT ); Fri, 14 Jul 2023 04:19:08 -0400 Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BB4BC5 for ; Fri, 14 Jul 2023 01:19:06 -0700 (PDT) Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-3143b88faebso1819739f8f.3 for ; Fri, 14 Jul 2023 01:19:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=9elements.com; s=google; t=1689322744; x=1691914744; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=e6rkw/d3NUtBafblKczwAEcy96n0x+1MYdeOk8yK+6k=; b=MHJoUKOhwKAQ7wFX1MRaWJ9nMOhZRndFHlfeUyd0oWsPlxA+jT9EYx8k/6Y9P3idRk z7B4yvCTNfzRuwwHG6AmfvCFUe+a66634dwX8yQt3ofAkF4Q8s3jmeT54r7+I3zq6HlN 90oJ+SunUU97ACXJFilGucB/UvablPM3Z1p5f40P3ohfUOp6J3NartY5L11gnzJ+Wt+7 nHs+ImIdScLYVwZkXqfHsuBGUdJUVYFEvKERdrrIAt3YC3x12A3VmyFGzg5RGLN5SpPB dWkhr7QDmqxXRw/wAsr+cvn0JC9FheQwsMokAwGxTkxPDWh+T57kGYHugmu94hzDz6ZE FEVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689322744; x=1691914744; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=e6rkw/d3NUtBafblKczwAEcy96n0x+1MYdeOk8yK+6k=; b=lE49WPKrqXskgVEfmqA8uj8JQ/xlWaVm+bwq/RhanYcNQCXpAaSsSRJRLRDRJJCr5Q MkP352b+Y8tcbzca4fAeEsbu7HOeh+vWuvATO9KrR4WlCRb7UKtKJ04Y+NE3QQiDYLBB L1AdcscOPKZj2ta4XbmUl2LQrwOiUkMrnGVMLbv7ZNKXAvtTlz4f/LCnste9a/ki5CTM CASpvDLeKu27fHmS7WbKZz+kxncxdb5i5fKtqt73vJMoSaMNrF9rfOPzC6ak4QcKbRcU fST6aJUjL0v1T5XaVjx1Wzp6ZFWgmtkb/3LHLMkUlKPQAzyz9+CDag8DGX4yZHFLPyUB w+ZQ== X-Gm-Message-State: ABy/qLaF5Svfp9veHc/RNvMnXbRJ+CzLBlc0r9lMKvpHf3Gzrh/IxAJ6 daSRLyK2ZslZ29vqKR2XwpVKrA== X-Google-Smtp-Source: APBJJlEKqU1J2yGOt6XwTChfB3zLqIdH9NO4jSnyb9Tgl7SxnTOCCaF5J/DtMjOpYX3xWK41+zbhGQ== X-Received: by 2002:a5d:4e85:0:b0:313:ef24:6feb with SMTP id e5-20020a5d4e85000000b00313ef246febmr3679680wru.3.1689322744461; Fri, 14 Jul 2023 01:19:04 -0700 (PDT) Received: from stroh80.sec.9e.network (ip-078-094-000-051.um19.pools.vodafone-ip.de. [78.94.0.51]) by smtp.gmail.com with ESMTPSA id w16-20020a5d6810000000b003144b50034esm10143635wru.110.2023.07.14.01.19.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jul 2023 01:19:04 -0700 (PDT) From: Naresh Solanki X-Google-Original-From: Naresh Solanki To: Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Patrick Rudolph Cc: Naresh Solanki , linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 1/2] dt-bindings: pinctrl: cypress,cy8c95x0: Add reset pin Date: Fri, 14 Jul 2023 10:19:00 +0200 Message-ID: <20230714081902.2621771-1-Naresh.Solanki@9elements.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Patrick Rudolph This patch adds support for an optional reset pin. The reset pin is used to bring the chip into a known state and has an internal pull-down, allowing it to be left floating if not needed. Signed-off-by: Patrick Rudolph Signed-off-by: Naresh Solanki --- Changes in V3: - Update reset-gpios description. Changes in V2: - Update subject - Update reset-gpios description. --- .../devicetree/bindings/pinctrl/cypress,cy8c95x0.yaml | 4 ++++ 1 file changed, 4 insertions(+) base-commit: 3bc551a3007a751a53bfba5b37fa16157f4fb861 diff --git a/Documentation/devicetree/bindings/pinctrl/cypress,cy8c95x0.yaml b/Documentation/devicetree/bindings/pinctrl/cypress,cy8c95x0.yaml index 222d57541b65..7f30ec2f1e54 100644 --- a/Documentation/devicetree/bindings/pinctrl/cypress,cy8c95x0.yaml +++ b/Documentation/devicetree/bindings/pinctrl/cypress,cy8c95x0.yaml @@ -51,6 +51,10 @@ properties: description: Optional power supply. + reset-gpios: + description: GPIO connected to the XRES pin + maxItems: 1 + patternProperties: '-pins$': type: object From patchwork Fri Jul 14 08:19:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naresh Solanki X-Patchwork-Id: 703020 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 AD778C001DE for ; Fri, 14 Jul 2023 08:19:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234555AbjGNITJ (ORCPT ); Fri, 14 Jul 2023 04:19:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39700 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233738AbjGNITI (ORCPT ); Fri, 14 Jul 2023 04:19:08 -0400 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3D8D09B for ; Fri, 14 Jul 2023 01:19:07 -0700 (PDT) Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-3fbab0d0b88so17721195e9.0 for ; Fri, 14 Jul 2023 01:19:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=9elements.com; s=google; t=1689322746; x=1691914746; 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=3v4UNOf4OnfSq8XVP7LewFMWvi4W/OrdiQXVKL6e3Lc=; b=Wxn72Byc9QfURzZq95Ooxfv/YMIBLXkxLZ8O1nFDt3poO3870MkNRpNv6Is8RA+0OR jyPdscPq8sC5ljqulPCax59eAaqVi8LO8denCt29u2Z1zdi7Seif5G6D2xml8dpSgoFU rVq7UcYqgErh8KHW4fbNTcX+b5TJMXzF8m/GwwJ3WyyEAMLSm95ckfq7pYDKBEHytpMe 1rrXyqqbQ+lfW6PrWoENgHeEgm8705AWNvLDO/JYQpkAua1OwSmnIrYgRItpAdrJ+1Pc TCjYGUzM31WcaUUYXBPMz3aP6nguWzlGSat2U2j8U+wdLA9XpvViPP9oNrgsjIWX31vZ sxBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689322746; x=1691914746; 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=3v4UNOf4OnfSq8XVP7LewFMWvi4W/OrdiQXVKL6e3Lc=; b=dHirlfHV4qXqt6/eYbgPeEefWGBg+ZWzMbS4DB9PLA8YnDvinq9DPdOva3SCfOurwW MTrFhjlooqBLM8xXeVgJ0dYx57lhnusAnnm3MLrwCvkpQASsDCSY5rVQTn+DFDkeJIyU OmYzqR2JMFabwPyglIKPTnD/agmX7c0OqHsl2EH8qG+vYR661fKHtyychyntI0IKs1B4 dTeog9gdoaYMKHylkh91nHuu9OdpzuwAZRi6VYXz7ujsrJSb88bwCJWTpPms8HbhdZZW W+dyTgt4N6KjrUStKkKoDeiaXA9KmacjEAAfByY1Np3/BnZvD5sOa39eVmtvUb4cHcCm lpbw== X-Gm-Message-State: ABy/qLYL+FNULr5QbLeO+5UCQoaDqmwF2iO/vpL0PYrBAv15hinmmNfm nA6n+PZaTLPRQ66Ttf40t6H9BA== X-Google-Smtp-Source: APBJJlEOg8b0p6/5Svcp/0n++cBjdUKbjqgkz0F7zjtfECT1PiuGNFhDNSGHQyv3PHklPZdDkLtjiQ== X-Received: by 2002:a5d:6a51:0:b0:313:f38d:555f with SMTP id t17-20020a5d6a51000000b00313f38d555fmr1450399wrw.24.1689322745775; Fri, 14 Jul 2023 01:19:05 -0700 (PDT) Received: from stroh80.sec.9e.network (ip-078-094-000-051.um19.pools.vodafone-ip.de. [78.94.0.51]) by smtp.gmail.com with ESMTPSA id w16-20020a5d6810000000b003144b50034esm10143635wru.110.2023.07.14.01.19.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jul 2023 01:19:05 -0700 (PDT) From: Naresh Solanki X-Google-Original-From: Naresh Solanki To: Patrick Rudolph , Linus Walleij Cc: Naresh Solanki , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 2/2] pinctrl: cy8c95x0: Add reset support Date: Fri, 14 Jul 2023 10:19:01 +0200 Message-ID: <20230714081902.2621771-2-Naresh.Solanki@9elements.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230714081902.2621771-1-Naresh.Solanki@9elements.com> References: <20230714081902.2621771-1-Naresh.Solanki@9elements.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Patrick Rudolph This patch adds support for an optional "reset" GPIO pin in the cy8c95x0 pinctrl driver. On probe, the reset pin is pulled low to bring chip out of reset. The reset pin has an internal pull-down and can be left floating if not required. The datasheet doesn't mention any timing related to the reset pin. Based on empirical tests, it was found that the chip requires a delay of 250 milliseconds before accepting I2C transfers after driving the reset pin low. Therefore, a delay of 250ms is added before proceeding with I2C transfers. Signed-off-by: Patrick Rudolph Signed-off-by: Naresh Solanki --- Changes in V2: - None --- drivers/pinctrl/pinctrl-cy8c95x0.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/pinctrl/pinctrl-cy8c95x0.c b/drivers/pinctrl/pinctrl-cy8c95x0.c index 2ecc96691c55..58ca6fac7849 100644 --- a/drivers/pinctrl/pinctrl-cy8c95x0.c +++ b/drivers/pinctrl/pinctrl-cy8c95x0.c @@ -164,6 +164,7 @@ struct cy8c95x0_pinctrl { struct pinctrl_desc pinctrl_desc; char name[32]; unsigned int tpin; + struct gpio_desc *gpio_reset; }; static const struct pinctrl_pin_desc cy8c9560_pins[] = { @@ -1383,6 +1384,20 @@ static int cy8c95x0_probe(struct i2c_client *client) chip->regulator = reg; } + /* bring the chip out of reset if reset pin is provided */ + chip->gpio_reset = devm_gpiod_get_optional(&client->dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(chip->gpio_reset)) { + ret = dev_err_probe(chip->dev, PTR_ERR(chip->gpio_reset), + "Failed to get GPIO 'reset'\n"); + goto err_exit; + } else if (chip->gpio_reset) { + usleep_range(1000, 2000); + gpiod_set_value_cansleep(chip->gpio_reset, 0); + usleep_range(250000, 300000); + + gpiod_set_consumer_name(chip->gpio_reset, "CY8C95X0 RESET"); + } + chip->regmap = devm_regmap_init_i2c(client, &cy8c95x0_i2c_regmap); if (IS_ERR(chip->regmap)) { ret = PTR_ERR(chip->regmap);