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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 43D55C4345F for ; Sat, 27 Apr 2024 11:04:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=zqWdBVhFNH7T5ypqL0Z7Uzxl6HHcnus5E645GC6uiRI=; b=VLOMVfFGujLHae 2mf5tITepLpD8Kk15sf03Lt86oitZAww7tczFYc7MoK9tLuRZi3VdzALThKehkeH4wNFEnYcTJoKQ Nh/y7LHdlfaw6JZJchPMGd6n+mVyD5JNEPDf9UjAASUyVzfi1vsExE8Ay7A0sZAjHR7zQb5o7q2bw oZK9rBHY4O0ed4XZuDpus2e91jcahF/JkEsJDv1+K6LV7V8VGs8enUBRAF+qvxtqRoslhJIOrzotv GqBPkwvAx20Gm9KAM0jKWTvi9m/h7T+4MMsOxRfFelAFE/LDwUjs4oam0bEYIPyHXirqZ035PaqMr Y1vNeoKB4Bka+U5y+ZjA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s0fr9-0000000FMwP-1L41; Sat, 27 Apr 2024 11:04:35 +0000 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s0fr7-0000000FMvd-0XcV for linux-arm-kernel@lists.infradead.org; Sat, 27 Apr 2024 11:04:34 +0000 Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-a5878caeb9eso387535966b.1 for ; Sat, 27 Apr 2024 04:04:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1714215868; x=1714820668; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:mail-followup-to:message-id:subject:cc:to :date:from:from:to:cc:subject:date:message-id:reply-to; bh=MTsPailerB8pKnIYxWgtzR9tzqjxagTf04yI5tlmVsQ=; b=CN3lLQDrDZ7aNTygknHnrcueXNEMNBH/oLPeqVn3G7MhnshknnaCAJ7jBmuw8SDU46 seWupLZ1ikR/wjjNPRgr/c5UwfaAVLi8mHUHUjt/AuyOsTqEE4oyswa6InCcZ6gL3TvE nl01iIIIqrtB5gCs5FuLaX0E2BsLoRDSGmWEYwh5yPtlNVnQBADB0zq1KcRsVrVVKav0 fK2L7ktCkNkv+8K8y6Lk8/F+R3vHfaadDKL0Z2l8Rwz60x7jwk/yvdTTtygyoDaHbvpM nJr2y3BFV8mWbPrormWEhUAgzQLZ9MmxtM3fDZqOGiiRf37S4XO5wIN5/pHwWUzrJT5c UncA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714215868; x=1714820668; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:mail-followup-to:message-id:subject:cc:to :date:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=MTsPailerB8pKnIYxWgtzR9tzqjxagTf04yI5tlmVsQ=; b=tPRxhrfAtmdO5PNPUxP54mTGLPhFdEh8cnAjj1UC9JMoXRHmjg/pitDibjg9sR3sad b3P9lzGvSvbQvGlQ2cbJuGDl9YiyqWiSZcp2/cr31UVbfg0hIMaCnNs9e6XTp64qn5d4 h3kO4qkVyon0bukrHXq+Cj0/x3mVWOeUMwjpGQnsAxVNRweR+Q6ZpU33WqXYqz/WcIAz K70AzN8G5gXgNazhp/0/L7lHhr2WQldaqcpZnxLNmFjHnML38w2foywWRJG3NFGQqvYI wu16bDs2Cxly7VBwWzUo7FhCmup2npEw2X5Zm08aUXJOS+mI+IrlVuf+h6v+CrBa4O/w V/Xw== X-Forwarded-Encrypted: i=1; AJvYcCUYMrvT/OuCeAkjoOlq0Yy726yqmc44jXqqMrR7MB/YGlcZZaZttsVQYauPniMF0CEwFqgHApn6/BY4orCYoMQkoMWtfHDTf/QvsOZ0EgSY2a29bss= X-Gm-Message-State: AOJu0YyE1GvDAHeOcGv3lQbdgwZXcP+s+Hg077fFqueb19Bdqk9pyRo3 Grt7R3Ros5Pg5fiiyEt4mmJWinWPjgQgF0FBQTtLXklF8kwb2ziNzt0aCLsr0qM= X-Google-Smtp-Source: AGHT+IFqdQo3aUply0IawVy1XS0TvzAAXhp9V7pYLaZp+QjlIW9AtHR3RC5xslW5BHzpCiw9MRj8TQ== X-Received: by 2002:a17:906:b80c:b0:a52:3efe:88d3 with SMTP id dv12-20020a170906b80c00b00a523efe88d3mr3206345ejb.67.1714215868564; Sat, 27 Apr 2024 04:04:28 -0700 (PDT) Received: from localhost (host-87-1-234-99.retail.telecomitalia.it. [87.1.234.99]) by smtp.gmail.com with ESMTPSA id qq22-20020a17090720d600b00a554f6fbb25sm11463605ejb.138.2024.04.27.04.04.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Apr 2024 04:04:28 -0700 (PDT) From: Andrea della Porta X-Google-Original-From: Andrea della Porta Date: Sat, 27 Apr 2024 13:04:29 +0200 To: Christophe JAILLET Cc: Andrea della Porta , Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Broadcom internal kernel review list , Linus Walleij , Adrian Hunter , Kamal Dasu , Al Cooper , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Jonathan Bell , Phil Elwell Subject: Re: [PATCH 4/6] pinctrl: bcm: Add pinconf/pinmux controller driver for BCM2712 Message-ID: Mail-Followup-To: Christophe JAILLET , Andrea della Porta , Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Broadcom internal kernel review list , Linus Walleij , Adrian Hunter , Kamal Dasu , Al Cooper , linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Jonathan Bell , Phil Elwell References: <8fb5dde9404875777587c867e7bdb4f691ab83f2.1713036964.git.andrea.porta@suse.com> <66b11910-c6e2-401c-a293-441f6d85bb90@wanadoo.fr> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <66b11910-c6e2-401c-a293-441f6d85bb90@wanadoo.fr> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240427_040433_212413_38D5DC51 X-CRM114-Status: GOOD ( 22.93 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 09:19 Sun 14 Apr , Christophe JAILLET wrote: > Le 14/04/2024 =E0 00:14, Andrea della Porta a =E9crit=A0: > > Add a pincontrol driver for BCM2712. BCM2712 allows muxing GPIOs > > and setting configuration on pads. > > = > > Originally-by: Jonathan Bell > > Originally-by: Phil Elwell > > Signed-off-by: Andrea della Porta > > --- > > drivers/pinctrl/bcm/Kconfig | 9 + > > drivers/pinctrl/bcm/Makefile | 1 + > > drivers/pinctrl/bcm/pinctrl-bcm2712.c | 1247 +++++++++++++++++++++++++ > > 3 files changed, 1257 insertions(+) > > create mode 100644 drivers/pinctrl/bcm/pinctrl-bcm2712.c > = > ... > = > > +static int bcm2712_pmx_get_function_groups(struct pinctrl_dev *pctldev, > > + unsigned selector, > > + const char * const **groups, > > + unsigned * const num_groups) > > +{ > > + struct bcm2712_pinctrl *pc =3D pinctrl_dev_get_drvdata(pctldev); > = > Missing empty new line. > = > > + /* every pin can do every function */ > > + *groups =3D pc->gpio_groups; > > + *num_groups =3D pc->pctl_desc.npins; > > + > > + return 0; > > +} > = > ... > = > > +static int bcm2712_pinconf_get(struct pinctrl_dev *pctldev, > > + unsigned pin, unsigned long *config) > > +{ > > + struct bcm2712_pinctrl *pc =3D pinctrl_dev_get_drvdata(pctldev); > > + enum pin_config_param param =3D pinconf_to_config_param(*config); > > + u32 arg; > > + > > + switch (param) { > > + case PIN_CONFIG_BIAS_DISABLE: > > + arg =3D (bcm2712_pull_config_get(pc, pin) =3D=3D BCM2712_PULL_NONE); > > + break; > > + case PIN_CONFIG_BIAS_PULL_DOWN: > > + arg =3D (bcm2712_pull_config_get(pc, pin) =3D=3D BCM2712_PULL_DOWN); > > + break; > > + case PIN_CONFIG_BIAS_PULL_UP: > > + arg =3D (bcm2712_pull_config_get(pc, pin) =3D=3D BCM2712_PULL_UP); > > + break; > > + default: > > + return -ENOTSUPP; > > + } > > + > > + *config =3D pinconf_to_config_packed(param, arg); > > + > > + return -ENOTSUPP; > = > Strange. > = > return 0; > ? > = > > +} > > + > > +static int bcm2712_pinconf_set(struct pinctrl_dev *pctldev, > > + unsigned int pin, unsigned long *configs, > > + unsigned int num_configs) > > +{ > > + struct bcm2712_pinctrl *pc =3D pinctrl_dev_get_drvdata(pctldev); > > + u32 param, arg; > > + int i; > > + > > + for (i =3D 0; i < num_configs; i++) { > > + param =3D pinconf_to_config_param(configs[i]); > > + arg =3D pinconf_to_config_argument(configs[i]); > > + > > + switch (param) { > > + case PIN_CONFIG_BIAS_DISABLE: > > + bcm2712_pull_config_set(pc, pin, BCM2712_PULL_NONE); > > + break; > > + case PIN_CONFIG_BIAS_PULL_DOWN: > > + bcm2712_pull_config_set(pc, pin, BCM2712_PULL_DOWN); > > + break; > > + case PIN_CONFIG_BIAS_PULL_UP: > > + bcm2712_pull_config_set(pc, pin, BCM2712_PULL_UP); > > + break; > > + default: > > + return -ENOTSUPP; > > + } > > + } /* for each config */ > = > This comment is not really usefull, IMHO. Agreed. Dropped in V2. > = > > + > > + return 0; > > +} > = > ... > = > > +static int bcm2712_pinctrl_probe(struct platform_device *pdev) > > +{ > > + struct device *dev =3D &pdev->dev; > > + //struct device_node *np =3D dev->of_node; > > + const struct bcm_plat_data *pdata; > > + //const struct of_device_id *match; > > + struct bcm2712_pinctrl *pc; > > + const char **names; > > + int num_pins, i; > > + > > + pdata =3D device_get_match_data(&pdev->dev); > > + if (!pdata) > > + return -EINVAL; > > + > > + pc =3D devm_kzalloc(dev, sizeof(*pc), GFP_KERNEL); > > + if (!pc) > > + return -ENOMEM; > > + > > + platform_set_drvdata(pdev, pc); > > + pc->dev =3D dev; > > + spin_lock_init(&pc->lock); > > + > > + //pc->base =3D devm_of_iomap(dev, np, 0, NULL); > = > Any use for this commented code? (and variable declarations above) No, I just forgot to drop the comment. Removed in V2. Many thanks, Andrea > = > CJ > = > > + pc->base =3D devm_platform_ioremap_resource(pdev, 0); > > + if (WARN_ON(IS_ERR(pc->base))) { > > + //dev_err(dev, "could not get IO memory\n"); > > + return PTR_ERR(pc->base); > > + } > > + > > + pc->pctl_desc =3D *pdata->pctl_desc; > > + num_pins =3D pc->pctl_desc.npins; > > + names =3D devm_kmalloc_array(dev, num_pins, sizeof(const char *), > > + GFP_KERNEL); > > + if (!names) > > + return -ENOMEM; > > + for (i =3D 0; i < num_pins; i++) > > + names[i] =3D pc->pctl_desc.pins[i].name; > > + pc->gpio_groups =3D names; > > + pc->pin_regs =3D pdata->pin_regs; > > + pc->pin_funcs =3D pdata->pin_funcs; > > + pc->pctl_dev =3D devm_pinctrl_register(dev, &pc->pctl_desc, pc); > > + if (IS_ERR(pc->pctl_dev)) > > + return PTR_ERR(pc->pctl_dev); > > + > > + pc->gpio_range =3D *pdata->gpio_range; > > + pinctrl_add_gpio_range(pc->pctl_dev, &pc->gpio_range); > > + > > + return 0; > > +} > = > ... > = _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel