Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1171766ybl; Sun, 1 Dec 2019 22:16:55 -0800 (PST) X-Google-Smtp-Source: APXvYqwNbevgLEAufdlLQy6AfS+rikwc15/fkzoz/2U6oXJZ0J30urHWjE2iWngFG01BPwDY3igW X-Received: by 2002:a17:906:7212:: with SMTP id m18mr408449ejk.98.1575267415135; Sun, 01 Dec 2019 22:16:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575267415; cv=none; d=google.com; s=arc-20160816; b=Pk2HRkaUoM5UWhwPtZzEpBaEVS6xxudmNs7kuNJB5/8nyvNmSTRjgOUiMb8fnWLtsw Cn2Z2vc3H5MPHuSXNRnS1sUw/+GGlrbOh9a3DCCyYAUysqltjB30eCpf+pWIfccyubvy Pw/2oF64ve8bTR2D6V9XiZjGGTZ4UN3QZhUQtWgCyh3qC5AZ4Uiy1Ljhf0DCgQloRBh2 E1L/E/7Jz6aSpmoJ68b4msyvAZNgWRwJ7nyNRv4EcHMxgRbM5zFyhQpI+rH6jGZWpu1F KgPJ7G5gIkJglFnrZmQrcCGbAwSbBqj/WaJnit/oh0B/UdJ0xHWskU0xJd2xVgo2Aj0z JGDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=o4SgjvFhP06qEMYFVcEyg35wWX80rlCKP3ooHrBZfDo=; b=mTB4CzAIzRYoH9yASgAzSbcHMUm+MHNEsThIIbF2S7NPTyu3MkVmCzrx1P2zjJTKgB f/fF5ZsAFfHV0XoMxY1Vsh9p6gDdo2w2U6mD1njwNZfKmYAFPiOvQjZZR8gvFfIzxlLr X1rdVFsw4Dd1pBNiWA6sdC/mKg2ZYsqol377Eie4uVfcAfaHNKL8Il6fm5/m3pY4XgGT PhY84PCQnRxkxsQogStdJVo3kuPTPZxjcciq45V715WElP9gMp70N11dLKpOW/k78Rzw c5z6gezL/Bf1YmAh+aDCJlPBcdja8RG3lwqa0Bs7r8PKZIh9bz21sJvFy3F7e55XUI4L Hr8w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@aj.id.au header.s=fm1 header.b=aJYVzend; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=xZKQrzIq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u18si2637084edq.368.2019.12.01.22.16.31; Sun, 01 Dec 2019 22:16:55 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@aj.id.au header.s=fm1 header.b=aJYVzend; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=xZKQrzIq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727416AbfLBGNM (ORCPT + 99 others); Mon, 2 Dec 2019 01:13:12 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:39597 "EHLO out3-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726474AbfLBGNK (ORCPT ); Mon, 2 Dec 2019 01:13:10 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 8395E22431; Mon, 2 Dec 2019 01:13:09 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Mon, 02 Dec 2019 01:13:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aj.id.au; h=from :to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; s=fm1; bh=o4SgjvFhP06qE MYFVcEyg35wWX80rlCKP3ooHrBZfDo=; b=aJYVzendOngQ5F2JtZ/LQe2vcDbRG e/7zLxYa5UDicNca+9lLY+dWyuI61IOxfnxHt3T+ZbXgJcNwFJV2rQplDRl2pBYK zivV8Mr5LRyxzt0j9MjA3MDQK7RhixXhoTROqJixIYi8FTyoC6T2jrJuMaCHYyID BS/SFXVHMrkGeHp93MJO5BBPDteBlibA88foy3ArgZYKqqRSlITMMf3TeKjg4Cfb rSxjHlrhCK9q7vllcDdTsI8vnusb0vx+SEnB0fHgJxkLJbOq8rcwhwTn64uOf5j3 hnlPPyjnQ4+X1J3dUj1eZFosIwTqizIpb6GwONYSqd091w9H8bk/MmZpg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; bh=o4SgjvFhP06qEMYFVcEyg35wWX80rlCKP3ooHrBZfDo=; b=xZKQrzIq k0dBFFayTBzjEhjfgqH00LhQd7UEJC+SZ7r2pIc7zDQ+pBwWbwByQQiXO28zlhn8 AZzDcRkj9hMhzv1oAFQdCIVcZDhM2rswsdRhxh5MUzhDShRNzjocBMU2UtGCpeah 3AANYGU9sFS/MFVly88JLu7aB/CBfnd6Kj/+7dG5SiGccIJPH22mQ9uO+ryPU5Qt 6EEKr5RtxQwgOO9lI8GlM29M9sXxmGBMUzTgSTb2mgVtSrhVjZykovQI3i9OZicq 3x0Zp17Y6Cq3YSSuxnA8FcZv8LV98mVXlgYlPzqq6ygsf3V7xlQMyz3zTUKJ+fZL Sp46Be8+rchT6A== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedufedrudejgedgleegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpeetnhgurhgv ficulfgvfhhfvghrhicuoegrnhgurhgvfiesrghjrdhiugdrrghuqeenucfkphepudduke drvdduuddrledvrddufeenucfrrghrrghmpehmrghilhhfrhhomheprghnughrvgifsegr jhdrihgurdgruhenucevlhhushhtvghrufhiiigvpeef X-ME-Proxy: Received: from mistburn.lan (unknown [118.211.92.13]) by mail.messagingengine.com (Postfix) with ESMTPA id C05168005A; Mon, 2 Dec 2019 01:13:05 -0500 (EST) From: Andrew Jeffery To: linux-gpio@vger.kernel.org Cc: Johnny Huang , linus.walleij@linaro.org, robh+dt@kernel.org, mark.rutland@arm.com, joel@jms.id.au, linux-aspeed@lists.ozlabs.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 5/7] pinctrl: aspeed: Move aspeed_pin_config_map to separate source file Date: Mon, 2 Dec 2019 16:44:30 +1030 Message-Id: <20191202061432.3996-6-andrew@aj.id.au> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191202061432.3996-1-andrew@aj.id.au> References: <20191202061432.3996-1-andrew@aj.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Johnny Huang The AST2600 pinconf differs from the 2400 and 2500, aspeed_pin_config_map should define separately, and add @confmaps and @nconfmaps to aspeed_pinctrl_data structure for that change. Signed-off-by: Johnny Huang Signed-off-by: Andrew Jeffery --- drivers/pinctrl/aspeed/pinctrl-aspeed-g4.c | 10 ++++++ drivers/pinctrl/aspeed/pinctrl-aspeed-g5.c | 10 ++++++ drivers/pinctrl/aspeed/pinctrl-aspeed.c | 38 +++------------------- drivers/pinctrl/aspeed/pinctrl-aspeed.h | 19 +++++++++++ 4 files changed, 44 insertions(+), 33 deletions(-) diff --git a/drivers/pinctrl/aspeed/pinctrl-aspeed-g4.c b/drivers/pinctrl/aspeed/pinctrl-aspeed-g4.c index c56ded0ac57e..62b8aa53b627 100644 --- a/drivers/pinctrl/aspeed/pinctrl-aspeed-g4.c +++ b/drivers/pinctrl/aspeed/pinctrl-aspeed-g4.c @@ -2594,6 +2594,14 @@ static int aspeed_g4_sig_expr_set(struct aspeed_pinmux_data *ctx, return 0; } +static const struct aspeed_pin_config_map aspeed_g4_pin_config_map[] = { + { PIN_CONFIG_BIAS_PULL_DOWN, 0, 1}, + { PIN_CONFIG_BIAS_PULL_DOWN, -1, 0}, + { PIN_CONFIG_BIAS_DISABLE, -1, 1}, + { PIN_CONFIG_DRIVE_STRENGTH, 8, 0}, + { PIN_CONFIG_DRIVE_STRENGTH, 16, 1}, +}; + static const struct aspeed_pinmux_ops aspeed_g4_ops = { .set = aspeed_g4_sig_expr_set, }; @@ -2610,6 +2618,8 @@ static struct aspeed_pinctrl_data aspeed_g4_pinctrl_data = { }, .configs = aspeed_g4_configs, .nconfigs = ARRAY_SIZE(aspeed_g4_configs), + .confmaps = aspeed_g4_pin_config_map, + .nconfmaps = ARRAY_SIZE(aspeed_g4_pin_config_map), }; static const struct pinmux_ops aspeed_g4_pinmux_ops = { diff --git a/drivers/pinctrl/aspeed/pinctrl-aspeed-g5.c b/drivers/pinctrl/aspeed/pinctrl-aspeed-g5.c index b2fe47b98fa0..2acbcf3d508a 100644 --- a/drivers/pinctrl/aspeed/pinctrl-aspeed-g5.c +++ b/drivers/pinctrl/aspeed/pinctrl-aspeed-g5.c @@ -2780,6 +2780,14 @@ static int aspeed_g5_sig_expr_set(struct aspeed_pinmux_data *ctx, return 0; } +static const struct aspeed_pin_config_map aspeed_g5_pin_config_map[] = { + { PIN_CONFIG_BIAS_PULL_DOWN, 0, 1}, + { PIN_CONFIG_BIAS_PULL_DOWN, -1, 0}, + { PIN_CONFIG_BIAS_DISABLE, -1, 1}, + { PIN_CONFIG_DRIVE_STRENGTH, 8, 0}, + { PIN_CONFIG_DRIVE_STRENGTH, 16, 1}, +}; + static const struct aspeed_pinmux_ops aspeed_g5_ops = { .eval = aspeed_g5_sig_expr_eval, .set = aspeed_g5_sig_expr_set, @@ -2797,6 +2805,8 @@ static struct aspeed_pinctrl_data aspeed_g5_pinctrl_data = { }, .configs = aspeed_g5_configs, .nconfigs = ARRAY_SIZE(aspeed_g5_configs), + .confmaps = aspeed_g5_pin_config_map, + .nconfmaps = ARRAY_SIZE(aspeed_g5_pin_config_map), }; static const struct pinmux_ops aspeed_g5_pinmux_ops = { diff --git a/drivers/pinctrl/aspeed/pinctrl-aspeed.c b/drivers/pinctrl/aspeed/pinctrl-aspeed.c index 54933665b5f8..fc68aca7b36c 100644 --- a/drivers/pinctrl/aspeed/pinctrl-aspeed.c +++ b/drivers/pinctrl/aspeed/pinctrl-aspeed.c @@ -411,49 +411,21 @@ static inline const struct aspeed_pin_config *find_pinconf_config( return NULL; } -/* - * Aspeed pin configuration description. - * - * @param: pinconf configuration parameter - * @arg: The supported argument for @param, or -1 if any value is supported - * @val: The register value to write to configure @arg for @param - * - * The map is to be used in conjunction with the configuration array supplied - * by the driver implementation. - */ -struct aspeed_pin_config_map { - enum pin_config_param param; - s32 arg; - u32 val; -}; - enum aspeed_pin_config_map_type { MAP_TYPE_ARG, MAP_TYPE_VAL }; -/* Aspeed consistently both: - * - * 1. Defines "disable bits" for internal pull-downs - * 2. Uses 8mA or 16mA drive strengths - */ -static const struct aspeed_pin_config_map pin_config_map[] = { - { PIN_CONFIG_BIAS_PULL_DOWN, 0, 1 }, - { PIN_CONFIG_BIAS_PULL_DOWN, -1, 0 }, - { PIN_CONFIG_BIAS_DISABLE, -1, 1 }, - { PIN_CONFIG_DRIVE_STRENGTH, 8, 0 }, - { PIN_CONFIG_DRIVE_STRENGTH, 16, 1 }, -}; - static const struct aspeed_pin_config_map *find_pinconf_map( + const struct aspeed_pinctrl_data *pdata, enum pin_config_param param, enum aspeed_pin_config_map_type type, s64 value) { int i; - for (i = 0; i < ARRAY_SIZE(pin_config_map); i++) { + for (i = 0; i < pdata->nconfmaps; i++) { const struct aspeed_pin_config_map *elem; bool match; - elem = &pin_config_map[i]; + elem = &pdata->confmaps[i]; switch (type) { case MAP_TYPE_ARG: @@ -491,7 +463,7 @@ int aspeed_pin_config_get(struct pinctrl_dev *pctldev, unsigned int offset, if (rc < 0) return rc; - pmap = find_pinconf_map(param, MAP_TYPE_VAL, + pmap = find_pinconf_map(pdata, param, MAP_TYPE_VAL, (val & BIT(pconf->bit)) >> pconf->bit); if (!pmap) @@ -535,7 +507,7 @@ int aspeed_pin_config_set(struct pinctrl_dev *pctldev, unsigned int offset, if (!pconf) return -ENOTSUPP; - pmap = find_pinconf_map(param, MAP_TYPE_ARG, arg); + pmap = find_pinconf_map(pdata, param, MAP_TYPE_ARG, arg); if (WARN_ON(!pmap)) return -EINVAL; diff --git a/drivers/pinctrl/aspeed/pinctrl-aspeed.h b/drivers/pinctrl/aspeed/pinctrl-aspeed.h index a7db31202033..27d3929b6aca 100644 --- a/drivers/pinctrl/aspeed/pinctrl-aspeed.h +++ b/drivers/pinctrl/aspeed/pinctrl-aspeed.h @@ -42,6 +42,22 @@ struct aspeed_pin_config { .bit = bit_ \ } +/* + * Aspeed pin configuration description. + * + * @param: pinconf configuration parameter + * @arg: The supported argument for @param, or -1 if any value is supported + * @val: The register value to write to configure @arg for @param + * + * The map is to be used in conjunction with the configuration array supplied + * by the driver implementation. + */ +struct aspeed_pin_config_map { + enum pin_config_param param; + s32 arg; + u32 val; +}; + struct aspeed_pinctrl_data { struct regmap *scu; @@ -52,6 +68,9 @@ struct aspeed_pinctrl_data { const unsigned int nconfigs; struct aspeed_pinmux_data pinmux; + + const struct aspeed_pin_config_map *confmaps; + const unsigned int nconfmaps; }; /* Aspeed pinctrl helpers */ -- 2.20.1