From mboxrd@z Thu Jan 1 00:00:00 1970 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 A2049C4332F for ; Fri, 21 Oct 2022 09:46:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230162AbiJUJqV (ORCPT ); Fri, 21 Oct 2022 05:46:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39150 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230459AbiJUJqI (ORCPT ); Fri, 21 Oct 2022 05:46:08 -0400 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 13F989AC2B for ; Fri, 21 Oct 2022 02:46:02 -0700 (PDT) Received: by mail-ed1-x534.google.com with SMTP id t16so3728853edd.2 for ; Fri, 21 Oct 2022 02:46:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=P0AQ9jlIG0ZlvzZh3L6x6ssa+d2wthNDGpp7sZigdE0=; b=cG4KlR0WMgI8n0RL9tPbQKHpLmpWAy4o2IAPJd8z9JPATgL6wkGWn1syeb41X7r/Pv yzVQorDXy0VFPWSjH4a4bdVp027IK/n2Xc16MEYT6sLb6txOLoObjDPnirfmf9Jf+viY psyaYkhqNzPuIxnahH4HJTNrxECNzZkflw4wBM/Bwcb7qpgc2o9+hH5o1xo+ELEQ90V8 EgIrikhasfiFC/VAz7m5Ah0e8Y93ujtecy4t/MNqttY+PKhlLUF1vJfsm23h5h/4cJaM MP8vjsF9u0NLT5ZpVdvTvkwV9TyrH4zI+Q0lTzef1RuZ16RZgtsl/ROREzQILVoPRFdA MBAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=P0AQ9jlIG0ZlvzZh3L6x6ssa+d2wthNDGpp7sZigdE0=; b=ebHMxLI9xS1vHnMvU1n6GekoFKurGh9GOBjrZ29p1zD76Utuzh1Am/Mw5kHXXkPuki cLqddYINFqTeCjdhTLoeWWYK++9YoVdKqb5EWe9g4HZV1JSEO0gIPpl3ymp0AXQe7K5w LqSYaV3Unu9RsP3AVJJS+OrB26b4Qgz/Wy5kW6PRB666scchl7MrTAC7Oxbe7QE3/JFn b84Q3XlMhKQLDdW3ToqHZh3LAXcnv2nw/eo4GjqeG/hp/dX3f7EIpsu27Q7/ANxHbTEy G95JxC6HWx7KkEvBEJ260oQpaiNoFv5ykOSXYooRbxYi6cTLWQhBXZfrlfFldEBBPnIo gFEw== X-Gm-Message-State: ACrzQf3yAfBwDNM/B/3fY5kjt9NVqnJCFrxT3Vof4Z+ZctZ5TWxGEzG2 wArqC08Wiu7XnrW8Ef5/xR96ykabLwHUvJgO2teSaQ== X-Google-Smtp-Source: AMsMyM5t02ffZNLPF+/SKV0t2zSPdKi04tT1VyQMGwlcqH6o8oaHN9NJPnaobBhqe+u0XBPphswad6nycmwYjCaoaLw= X-Received: by 2002:a17:907:7606:b0:78e:61d:757e with SMTP id jx6-20020a170907760600b0078e061d757emr13887723ejc.690.1666345560588; Fri, 21 Oct 2022 02:46:00 -0700 (PDT) MIME-Version: 1.0 References: <20221021012728.22373-1-zhuyinbo@loongson.cn> In-Reply-To: <20221021012728.22373-1-zhuyinbo@loongson.cn> From: Linus Walleij Date: Fri, 21 Oct 2022 11:45:49 +0200 Message-ID: Subject: Re: [PATCH v1 1/2] pinctrl: pinctrl-loongson2: add pinctrl driver support To: Yinbo Zhu Cc: Rob Herring , Krzysztof Kozlowski , linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, zhanghongchen Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Hi Yinbo, thanks for your patch! On Fri, Oct 21, 2022 at 3:27 AM Yinbo Zhu wrote: > The loongson2 SoC has a few pins that can be used as GPIOs or take > multiple other functions. Add a driver for the pinmuxing. > > There is currently no support for GPIO pin pull-up and pull-down. > > Signed-off-by: zhanghongchen > Signed-off-by: Yinbo Zhu (...) > +static int loongson2_pmx_set_mux(struct pinctrl_dev *pcdev, unsigned int func_num, > + unsigned int group_num) > +{ > + struct loongson2_pinctrl *pctrl = pinctrl_dev_get_drvdata(pcdev); > + unsigned long reg = (unsigned long)pctrl->reg_base + > + loongson2_pmx_groups[group_num].reg; > + unsigned int mux_bit = loongson2_pmx_groups[group_num].bit; > + unsigned int val; > + unsigned long flags; > + > + raw_spin_lock_irqsave(&pctrl->lock, flags); > + val = readl((void *)reg); > + if (func_num == 0) > + val &= ~(1< + else > + val |= (1< + writel(val, (void *)reg); > + raw_spin_unlock_irqrestore(&pctrl->lock, flags); Can you explain in the commit message or with a comment in the code why you have to use a raw spinlock for this? We usually only use raw spinlocks for things like low level interrupt handlers... My guess is that you can replace this with an ordinary spinlock. Yours, Linus Walleij