Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp148358imd; Wed, 31 Oct 2018 16:16:58 -0700 (PDT) X-Google-Smtp-Source: AJdET5di3AsCLMylBcky2fSqjnwj1HCLzqwgB+dr6zn3ClnaQTGyWUK9ANO5M81sPyX60R2T5oiG X-Received: by 2002:a63:c642:: with SMTP id x2-v6mr4897996pgg.16.1541027818450; Wed, 31 Oct 2018 16:16:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541027818; cv=none; d=google.com; s=arc-20160816; b=mg5+DLabDy6Xc7Yo/6FDmZxusaV2/6AHayeDGpBTcuneiOXVmNPFvuNsedTKJ4RpKz KHvWSHT5nXohsSPtVANiSXbwgywAuBauHDlg1KwlpJL13Jll7yl0d2mrRkXn+K3UgkOd sf4Y/MFuYTY4yREYnF3grlI3ruwKYe7iN2NIuB1VZTlxDaEPhgYd1Az6RGeFhMX9hBD0 GVlZtA1PozSFGWS/anKmujktCj0/mm1FNWJ7Mtdl+Gtdqrxrd6cEz/S7mWQxGiEnsrL0 HR4+8f6u9p/eva3PFwuPpPvKw88hBVzlgFHntfT8CebhgIYNXMx9InliUdSo+r1xBqJ5 Fa+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=qWelwuPHyR6N9e5YKyMUBuVTYghAWCfCH9a0aphzeL0=; b=aP0N0DKFmfOR80FO/jp/7zu3WmbjrRxIFGS+xsIQHFBtgxIi8OS5iGSp2PlUoxdr0L yED/qYmq7DZMCtQo7AiL3X0JzTNVmVV5VN7Hfq/i8xEtDM0F1GmmV8SqJBX3eiRXiyVT fTLV3jA9Rn/HM9zCubsSO35fHZK8fpfSgNxVAW3H3Q3XQllB8ZfZVzRlGGpiN6ItqYxW Fl7Gx2gysmaXY1yF/3wv7/NVXxdqsNgO7ylvLm3y8ScNvzjqbVB6AlEKPCO6qZj2c7bU 0DdQSUavpxsPHA66sFvxP4Zf7B+nRM0OZSB4CVw9BhYu+sDLlZaW2fOBs+E9rwBUVERr PpiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=pzB3Rits; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d12-v6si26597278plr.92.2018.10.31.16.16.43; Wed, 31 Oct 2018 16:16:58 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=pzB3Rits; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732060AbeKAIMH (ORCPT + 99 others); Thu, 1 Nov 2018 04:12:07 -0400 Received: from mail.kernel.org ([198.145.29.99]:36616 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730796AbeKAIMG (ORCPT ); Thu, 1 Nov 2018 04:12:06 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id CC5EF204FD; Wed, 31 Oct 2018 23:11:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541027514; bh=m4BGfWAE4ELVR2m+wMqwnCU1g3CRG48NoYaSxA+VoDU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pzB3Rits+eFpFqmOLl0hvTRwfCRynk+LyU10JFFRylrVCsPOwGtH1SWBUZUW9RQIY VW6zH5WrTZzW6ogynHnQgvcavciWprd3Qmr3WcNrfd4lgiFrM+2s9ONGy0gWomkABz 3Ot0jhiDdHoJylAAVEFwGq40aZJzNey8pMa6Zr3A= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Douglas Anderson , Linus Walleij , Sasha Levin Subject: [PATCH AUTOSEL 4.4 18/32] pinctrl: ssbi-gpio: Fix pm8xxx_pin_config_get() to be compliant Date: Wed, 31 Oct 2018 19:11:23 -0400 Message-Id: <20181031231137.29429-18-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031231137.29429-1-sashal@kernel.org> References: <20181031231137.29429-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Douglas Anderson [ Upstream commit b432414b996d32a1bd9afe2bd595bd5729c1477f ] If you look at "pinconf-groups" in debugfs for ssbi-gpio you'll notice it looks like nonsense. The problem is fairly well described in commit 1cf86bc21257 ("pinctrl: qcom: spmi-gpio: Fix pmic_gpio_config_get() to be compliant") and commit 05e0c828955c ("pinctrl: msm: Fix msm_config_group_get() to be compliant"), but it was pointed out that ssbi-gpio has the same problem. Let's fix it there too. Fixes: b4c45fe974bc ("pinctrl: qcom: ssbi: Family A gpio & mpp drivers") Signed-off-by: Douglas Anderson Reviewed-by: Stephen Boyd Reviewed-by: Bjorn Andersson Signed-off-by: Linus Walleij Signed-off-by: Sasha Levin --- drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c | 28 ++++++++++++++++++------ 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c b/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c index 19a3c3bc2f1f..b1e8a2d905ff 100644 --- a/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c +++ b/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c @@ -259,22 +259,32 @@ static int pm8xxx_pin_config_get(struct pinctrl_dev *pctldev, switch (param) { case PIN_CONFIG_BIAS_DISABLE: - arg = pin->bias == PM8XXX_GPIO_BIAS_NP; + if (pin->bias != PM8XXX_GPIO_BIAS_NP) + return -EINVAL; + arg = 1; break; case PIN_CONFIG_BIAS_PULL_DOWN: - arg = pin->bias == PM8XXX_GPIO_BIAS_PD; + if (pin->bias != PM8XXX_GPIO_BIAS_PD) + return -EINVAL; + arg = 1; break; case PIN_CONFIG_BIAS_PULL_UP: - arg = pin->bias <= PM8XXX_GPIO_BIAS_PU_1P5_30; + if (pin->bias > PM8XXX_GPIO_BIAS_PU_1P5_30) + return -EINVAL; + arg = 1; break; case PM8XXX_QCOM_PULL_UP_STRENGTH: arg = pin->pull_up_strength; break; case PIN_CONFIG_BIAS_HIGH_IMPEDANCE: - arg = pin->disable; + if (!pin->disable) + return -EINVAL; + arg = 1; break; case PIN_CONFIG_INPUT_ENABLE: - arg = pin->mode == PM8XXX_GPIO_MODE_INPUT; + if (pin->mode != PM8XXX_GPIO_MODE_INPUT) + return -EINVAL; + arg = 1; break; case PIN_CONFIG_OUTPUT: if (pin->mode & PM8XXX_GPIO_MODE_OUTPUT) @@ -289,10 +299,14 @@ static int pm8xxx_pin_config_get(struct pinctrl_dev *pctldev, arg = pin->output_strength; break; case PIN_CONFIG_DRIVE_PUSH_PULL: - arg = !pin->open_drain; + if (pin->open_drain) + return -EINVAL; + arg = 1; break; case PIN_CONFIG_DRIVE_OPEN_DRAIN: - arg = pin->open_drain; + if (!pin->open_drain) + return -EINVAL; + arg = 1; break; default: return -EINVAL; -- 2.17.1