From patchwork Mon Dec 19 12:42:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 34525 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp2363937wrn; Mon, 19 Dec 2022 04:44:57 -0800 (PST) X-Google-Smtp-Source: AMrXdXvEn59OsVrkSdTDWKGD6ZDpIlv5TGkb6FtY53+vuNS6y+8f+Ke40r4hcUOsucMa20ii9tic X-Received: by 2002:a05:6402:100b:b0:479:96c2:61be with SMTP id c11-20020a056402100b00b0047996c261bemr4066879edu.10.1671453897705; Mon, 19 Dec 2022 04:44:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671453897; cv=none; d=google.com; s=arc-20160816; b=zLdjjvHTRvlCQ42Y5f74PbxgnAlRQlEZqHU1WAJ/5HKYFg4ov9ppokN6jvtA9ZHdHA WXf4FCYm2DM680CTrqpaHP2S1rPcBUVyuPHSNCy+O33xRbs6MVQZ96QyCkGsi1jzfq+4 3bsqJ3jWpNRsuuqpQRNcmLFd8jmmXaxKTDrwH/lZpxRxG8AqsHoMLXMLZiYZeLFksXm2 jN1nNCYgG1Wd++S0apR+vYKrgbgYRCKCb6E0P947pDnmkH25yUR9dJyVTby0Erp0CrkC +OHkhF7+p0q+oqh6XuPYd0LTdC8NQHZ4Sk4VxrhZOCqagRR2pgPYAPvSVqYLOVdYd11I n/kw== 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s25-20020a056402037900b00461d9b46883si8147639edw.519.2022.12.19.04.44.34; Mon, 19 Dec 2022 04:44:57 -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 + 99 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 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752646442129890473?= X-GMAIL-MSGID: =?utf-8?q?1752646442129890473?= 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 Acked-by: Mika Westerberg Reviewed-by: Linus Walleij --- 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