Received: by 2002:a05:6358:f14:b0:e5:3b68:ec04 with SMTP id b20csp2506057rwj; Mon, 19 Dec 2022 05:37:08 -0800 (PST) X-Google-Smtp-Source: AMrXdXv5zrBHr1wmuUrivURjj6pmr3gB3j4j13Sj176UyY6UmK0LHKfIIcgdpx6NB1B8cdk88/D0 X-Received: by 2002:a17:903:11c4:b0:189:6a5a:7289 with SMTP id q4-20020a17090311c400b001896a5a7289mr17407836plh.52.1671457028160; Mon, 19 Dec 2022 05:37:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671457028; cv=none; d=google.com; s=arc-20160816; b=s6HRLvtHP4Jw1oU+nLksBkPNF7NOTLG1TJFIrkTIy32kPzljA1cqB3e89SPETzWuXw 4pK0sQjDzRGd9dHxAwlEG8YEwO7ip2rIYP6hcWBwpitB7d23ivT3BbW0sbVrAQ+Nuqqd AcPI42ZFVH8KIc9raEJLSK6Ptl4V5bHKfmx6Ihu/w5RfcaH/9tiaTPrsgNeTp/MPrC0O qTwO5ysDeqny3eZZLesfp4Sa9dA3TbyIbM8iTIJk/TJxCJ94Eu9wYT39/8Ic8T+wzNhB CKjpicR90vSt/eS2arisuEvZj9CuzpGC/GBPQb4h1YsLhtj7vjm9tZAikjoTSj+TquDj zigw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=vsq3zkc8v0WSpQStEOEzJiqrUAznJRLE0UYE2Hc3UKI=; b=daUPvX0qKKddojuFD0mFfCeffeVAhUe8zOyZiDqP+yPDLj5aXcZfa6Eo9Wta0zBeQb oFZasC/ZPqT9FkkyqtHxgf0S1lI+7gYSK8f15wVgnEDD8qE2wEwxk7Apw1IxjlpyqiWO AZTPDCfrzGcftAUVDnGSWz6wI9tWVyCcAqCG53faQ6LOlsvv1OjFMmo/CGxBG5glpzYM yskLhkP5DbHiMsNg5qPIcEpi8p0MKGNJb8gzLgjf3UiYCBjXiKUuPrlaWtwLnd4RPLu6 nHuhKJfL8k8qPAmyD6CgL4MkMeH7bdTw1VA9k3IC+gv5TJG0bMBpLqrqwtBtRaOWWjDR uf3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=MTke11rj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w3-20020a170902904300b0017f5eb2cf6csi10303296plz.375.2022.12.19.05.36.59; Mon, 19 Dec 2022 05:37:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=MTke11rj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231890AbiLSMm1 (ORCPT + 70 others); Mon, 19 Dec 2022 07:42:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231857AbiLSMmX (ORCPT ); Mon, 19 Dec 2022 07:42:23 -0500 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9727E00F; Mon, 19 Dec 2022 04:42:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1671453742; x=1702989742; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=dlPPnlNjLJmioznly2ozXS6UiYy5/U2w53JSKTh6byQ=; b=MTke11rjUmg1NYxPOodI0QenntzWaH1bWsWXYNxYxytFKAVaAfatxk+5 LEw/ZipU0fqn6VdROPZCsPN4zJzzV2uwEJ40hqyh4R91NDXUiuAMkUmO/ oF2/YguZVaC1HjtuZMDWR8h/RF3/kRFdUrw4fC0CcWNaWff9AqJXGiN/F ULCPC18hJs75q439iamYugtM7yZg9P1MzvXFnkq7JYEuCe2UyWGVD11rq aIpWG9iBLv2zpzW7WTSg/kDOWawGtej2w+5HCzNTVcAYzKPlbIU+/Ov8+ rd9Wfx3chOg4cN3CaMI/cZpenssVgd3sq2Pa3L7M3zW1SGa1GzhmEvR18 w==; X-IronPort-AV: E=McAfee;i="6500,9779,10565"; a="320510332" X-IronPort-AV: E=Sophos;i="5.96,255,1665471600"; d="scan'208";a="320510332" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Dec 2022 04:42:22 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10565"; a="681210329" X-IronPort-AV: E=Sophos;i="5.96,255,1665471600"; d="scan'208";a="681210329" Received: from black.fi.intel.com ([10.237.72.28]) by orsmga008.jf.intel.com with ESMTP; 19 Dec 2022 04:42:20 -0800 Received: by black.fi.intel.com (Postfix, from userid 1003) id BBD87F7; Mon, 19 Dec 2022 14:42:49 +0200 (EET) From: Andy Shevchenko To: Andy Shevchenko , Mika Westerberg , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Andy Shevchenko , Linus Walleij Subject: [PATCH v1 1/8] pinctrl: Introduce struct pinfunction and PINCTRL_PINFUNCTION() macro Date: Mon, 19 Dec 2022 14:42:33 +0200 Message-Id: <20221219124240.62781-1-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There are many pin control drivers define their own data type for pin function representation which is the same or embed the same data as newly introduced one. Provide the data type and convenient macro for all pin control drivers. Signed-off-by: Andy Shevchenko --- include/linux/pinctrl/pinctrl.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/include/linux/pinctrl/pinctrl.h b/include/linux/pinctrl/pinctrl.h index a0d39b303431..4d252ea00ed1 100644 --- a/include/linux/pinctrl/pinctrl.h +++ b/include/linux/pinctrl/pinctrl.h @@ -206,6 +206,26 @@ extern int pinctrl_get_group_pins(struct pinctrl_dev *pctldev, const char *pin_group, const unsigned **pins, unsigned *num_pins); +/** + * struct pinfunction - Description about a function + * @name: Name of the function + * @groups: An array of groups for this function + * @ngroups: Number of groups in @groups + */ +struct pinfunction { + const char *name; + const char * const *groups; + size_t ngroups; +}; + +/* Convenience macro to define a single named pinfunction */ +#define PINCTRL_PINFUNCTION(_name, _groups, _ngroups) \ +(struct pinfunction) { \ + .name = (_name), \ + .groups = (_groups), \ + .ngroups = (_ngroups), \ + } + #if IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_PINCTRL) extern struct pinctrl_dev *of_pinctrl_get(struct device_node *np); #else -- 2.35.1