[{"id":3683386,"web_url":"http://patchwork.ozlabs.org/comment/3683386/","msgid":"<CAD++jLkjDozkjL-136ut4OsX5PoCe4aKrfXVyq0jtEOc4LX1dw@mail.gmail.com>","list_archive_url":null,"date":"2026-04-28T10:48:44","subject":"Re: [PATCH] pinctrl: mediatek: common-v1: Directly modify registers\n to set GPIO direction","submitter":{"id":92050,"url":"http://patchwork.ozlabs.org/api/people/92050/","name":"Linus Walleij","email":"linusw@kernel.org"},"content":"On Mon, Apr 27, 2026 at 8:17 AM Chen-Yu Tsai <wenst@chromium.org> wrote:\n\n> pinctrl_gpio_direction_input() / pinctrl_gpio_direction_output() take\n> the pinctrl mutex. This causes a gpiochip operations to need to sleep.\n> Worse yet, the .can_sleep field in the gpiochip is not set. This causes\n> the shared GPIO proxy to trip over, as it uses gpiod_cansleep() to check\n> whether it can use a spinlock or needs a mutex. In this case, it ends\n> up taking a spinlock, then calls pinctrl_gpio_direction_output(), which\n> takes a mutex. This causes a huge warning.\n>\n> Since the Mediatek hardware has separate clear/set registers, there is\n> no risk of clobbering other bits like with a read-modify-write pattern.\n> Switch to directly setting the GPIO direction register bits to avoid\n> the mutex.\n>\n> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>\n\nHere you need to at least delete the assignment of mtk_pmx_gpio_set_direction()\nfrom:\n\nstatic const struct pinmux_ops mtk_pmx_ops = {\n        .get_functions_count    = mtk_pmx_get_funcs_cnt,\n        .get_function_name      = mtk_pmx_get_func_name,\n        .get_function_groups    = mtk_pmx_get_func_groups,\n        .set_mux                = mtk_pmx_set_mux,\n        .gpio_set_direction     = mtk_pmx_gpio_set_direction,\n\n^ Here, it should no longer be used, right?\n\nYours,\nLinus Walleij","headers":{"Return-Path":"\n <linux-gpio+bounces-35691-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=JtnZOetv;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c09:e001:a7::12fc:5321; helo=sto.lore.kernel.org;\n envelope-from=linux-gpio+bounces-35691-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"JtnZOetv\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from sto.lore.kernel.org (sto.lore.kernel.org\n [IPv6:2600:3c09:e001:a7::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g4d6c5cV8z1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 21:11:36 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id DF980312B3D5\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 10:58:37 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 674643F54A4;\n\tTue, 28 Apr 2026 10:48:58 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 2AB263EBF1F\n\tfor <linux-gpio@vger.kernel.org>; Tue, 28 Apr 2026 10:48:58 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 0F74CC2BCC9\n\tfor <linux-gpio@vger.kernel.org>; Tue, 28 Apr 2026 10:48:58 +0000 (UTC)","by mail-lj1-f169.google.com with SMTP id\n 38308e7fff4ca-38df1889fb9so109101161fa.1\n        for <linux-gpio@vger.kernel.org>;\n Tue, 28 Apr 2026 03:48:57 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777373338; cv=none;\n b=ZgkJwYE5evrDxpdFppv52TWQntfaV0CAug/XsETUP9BYr0ASw3zKoBPGC6ypxhR5qOccQaUYUCh5F4HQSZ4Fa3wgMKpoqr3YweGUfyPMT+hy6hRXzWzP42+6rQR8wLShbKXYs9cxhs90qYnE5pAeWml3E0COXYK1RATlUlgWwRo=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777373338; c=relaxed/simple;\n\tbh=zRRLxCTMFdXGHczu7lhZcXF7CCENkqKUh9uDDOxrXZY=;\n\th=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:\n\t To:Cc:Content-Type;\n b=bsLzPTJuHm2nrJq4XQXnh6XQpzmrNr+LCcj8e7FTrKt8WqzXjtzsJ8n3MplcOxTWEfZnWLwmUp8Z6ZIhYBEpXZXF7rGTIIu/jrPlykU2NGpCnnu2hXNG86c0H9Nm8tLXX+iHrw4VOqlqJ1aNM8L7kvtd/1qcDiRdUT5n6+gvTqQ=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=JtnZOetv; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1777373338;\n\tbh=zRRLxCTMFdXGHczu7lhZcXF7CCENkqKUh9uDDOxrXZY=;\n\th=References:In-Reply-To:From:Date:Subject:To:Cc:From;\n\tb=JtnZOetvlFS6qtORFdprF1g2YD3cl16GGsklOWk9R6hwUoiF4mPOfGg8SjchUjDUY\n\t YE8tNvHSZSd61CPZDl9HODthjK8WGDX2463+x4w00sG//19j2ZWGaG+o8tP7rUOhUh\n\t wfSy6wJmlC4y21kO3gzQroPIrHw/Vc8Vue3wlDK6z9WQbOBDfeU4hru7Nli1C3dK1N\n\t 7BHwzRSOfNwu/QOUUX6Sz9Fy9cLbVS6QjE67dV+H8LAJcVuZs0hwgMroMaXY46eNw8\n\t GKuGREU9gjvzr9TgZC3iXJsJTHauOnYPSsOQ4XoxPNP+oeCu9JiNSPw6C40/KU1SX1\n\t 37IyBs2Ciie3w==","X-Forwarded-Encrypted":"i=1;\n AFNElJ+8nsqOLl2WCcSsJIKsFSO03lgb5KR7MZ8K4lJwIefIuDlzfEc9Z7XwosFJj16AZPCtwgpcVK7NsPRU@vger.kernel.org","X-Gm-Message-State":"AOJu0YwfV5/skOirrMT10qBNnDGTAxE2nDnrkNVQYViF8U1oRBRVCIL9\n\tzC4vGxiRvYWTLkdk1xUMtlznq5UfA3nDQfer/k7pw0oYmOZv10DqfJMTOhAHn2ohgkFdNRSc1LF\n\tjKIixLsLXQzlp/ORSzfNaz7WkHxGIk5w=","X-Received":"by 2002:a2e:a994:0:b0:38e:9277:6990 with SMTP id\n 38308e7fff4ca-39241005c6dmr8960211fa.30.1777373336622; Tue, 28 Apr 2026\n 03:48:56 -0700 (PDT)","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","References":"<20260427061720.2393355-1-wenst@chromium.org>","In-Reply-To":"<20260427061720.2393355-1-wenst@chromium.org>","From":"Linus Walleij <linusw@kernel.org>","Date":"Tue, 28 Apr 2026 12:48:44 +0200","X-Gmail-Original-Message-ID":"\n <CAD++jLkjDozkjL-136ut4OsX5PoCe4aKrfXVyq0jtEOc4LX1dw@mail.gmail.com>","X-Gm-Features":"AVHnY4IQ9pWQR3XwMVHEmg2y70n-2Cqf_AoJsV8Bvhx3LjreKPa329xly69LAug","Message-ID":"\n <CAD++jLkjDozkjL-136ut4OsX5PoCe4aKrfXVyq0jtEOc4LX1dw@mail.gmail.com>","Subject":"Re: [PATCH] pinctrl: mediatek: common-v1: Directly modify registers\n to set GPIO direction","To":"Chen-Yu Tsai <wenst@chromium.org>","Cc":"Sean Wang <sean.wang@kernel.org>,\n Matthias Brugger <matthias.bgg@gmail.com>,\n\tAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>,\n\tlinux-mediatek@lists.infradead.org, linux-gpio@vger.kernel.org,\n\tlinux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable"}}]