From patchwork Mon Feb 27 18:07:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ryan Wanner X-Patchwork-Id: 13154075 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 146A3C64ED6 for ; Mon, 27 Feb 2023 18:08:38 +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:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=0jdB1+EKGtkvBnshvgb5pSZbfXoj9hBf/eQt1X3kcyc=; b=CFskY4eEWqA5lY 5wYurduFnGluE+/+ctaGu4uJxdjJlRbLDp/XrW12MqImQZNt+UImW641uJK0RLAB/NYQrj1wGxi75 ofMFJaeT4uo2i5cQmsM2KxCOvXKegezkXuZ8+IsYpOfKFZlkrDNjGx6Us/CxC2RIcijdP2mLPGYHB lPDiwz6RlSyzpW+NmDoT2OkEgS4KsfDVNS5bGb7BusbN4T5UduNDoka9+QpFxeD7v07XheuQEFpTF jt1CLMrJ3Qg6ihVHbqR0KqXPbGmocqi0/RwM8LECI3v+FUnVacxAsnKMt4n6rdk0w/fFBOcvhPqri 3J+9dKUo8gqihfgSrK1g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pWhuh-00AeDB-9g; Mon, 27 Feb 2023 18:07:51 +0000 Received: from esa.microchip.iphmx.com ([68.232.153.233]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pWhuQ-00Ae7M-9C for linux-arm-kernel@lists.infradead.org; Mon, 27 Feb 2023 18:07:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1677521254; x=1709057254; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZohFvfWo263Ee4SU+7SItzPED/qSzAp2y0OSDCQoags=; b=QyMCVE1hHpB6ocQksCQAqzJuJIc/m6vlTPxulTTjx/Xk9sfHDkLWSUWL uIRKMCuJm25LRWaJn31qg6mzxeAKDSyWrGjOTa+QI8B2ccPcvtHPad4Cz vTaGpJLmQC0rkru05gomaKX0+hC4TXqesMhcM4k/Evou8jixbeTAIX/TZ LgOF0plAL3CZVH5aNLGwREuyi3+TAL/xAMSLR5eAgpntHeREc45TnXtUr CSai6Q5AsHKQHaPVVpJoHIPesgakbpvyHRurLqSAoctY9gOfRtsXUUBJ9 P5aAc70F7r1RNJaQIT2KhwQPkPs7P5941payPfQ5lqGy60pqfBfX4sqzy g==; X-IronPort-AV: E=Sophos;i="5.98,219,1673938800"; d="scan'208";a="202436818" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa3.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 27 Feb 2023 11:07:26 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 27 Feb 2023 11:07:20 -0700 Received: from ryan-Precision-3630-Tower.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Mon, 27 Feb 2023 11:07:20 -0700 From: To: , , , , , , CC: , , , , Ryan Wanner Subject: [PATCH v3 1/2] pinctrl: at91-pio4: Implement the correct drive values for sama7g5 Date: Mon, 27 Feb 2023 11:07:27 -0700 Message-ID: <43fbb5306ccb8852e43d730a88be7bbd3973535d.1677520830.git.Ryan.Wanner@microchip.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230227_100734_359185_B018CA92 X-CRM114-Status: GOOD ( 15.65 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ryan Wanner Sama7g5 drive strength options have been updated from previous pio4 products. Now values will correctly align with sama7g5 drive strength options highlighted in the sama7g5 data sheet. Add xlate to separate the sama7g5 drive values and the sama5d27 drive values. Signed-off-by: Ryan Wanner --- changes since v2: -Add sama7g5 differences to dbg_show. -Remove array length for xlate. drivers/pinctrl/pinctrl-at91-pio4.c | 54 ++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/drivers/pinctrl/pinctrl-at91-pio4.c b/drivers/pinctrl/pinctrl-at91-pio4.c index 82b921fd630d..76af50d62404 100644 --- a/drivers/pinctrl/pinctrl-at91-pio4.c +++ b/drivers/pinctrl/pinctrl-at91-pio4.c @@ -72,17 +72,33 @@ /* Custom pinconf parameters */ #define ATMEL_PIN_CONFIG_DRIVE_STRENGTH (PIN_CONFIG_END + 1) +static const unsigned int drive_strength_xlate_sama7g5[] = { + ATMEL_PIO_DRVSTR_LO_D, + ATMEL_PIO_DRVSTR_HI_A, + ATMEL_PIO_DRVSTR_LO_C, + ATMEL_PIO_DRVSTR_LO_B +}; + +static const unsigned int drive_strength_xlate_sama5d2[] = { + ATMEL_PIO_DRVSTR_LO, + ATMEL_PIO_DRVSTR_LO_1, + ATMEL_PIO_DRVSTR_ME, + ATMEL_PIO_DRVSTR_HI +}; + /** * struct atmel_pioctrl_data - Atmel PIO controller (pinmux + gpio) data struct * @nbanks: number of PIO banks * @last_bank_count: number of lines in the last bank (can be less than * the rest of the banks). * @slew_rate_support: slew rate support + * @drv_stre_xlate: xlate for different drive values */ struct atmel_pioctrl_data { unsigned int nbanks; unsigned int last_bank_count; unsigned int slew_rate_support; + const unsigned int *drv_stre_xlate; }; struct atmel_group { @@ -121,6 +137,7 @@ struct atmel_pin { * @dev: device entry for the Atmel PIO controller. * @node: node of the Atmel PIO controller. * @slew_rate_support: slew rate support + * @drv_stre_xlate: xlate for different drive values */ struct atmel_pioctrl { void __iomem *reg_base; @@ -143,6 +160,7 @@ struct atmel_pioctrl { struct device *dev; struct device_node *node; unsigned int slew_rate_support; + const unsigned int *drv_stre_xlate; }; static const char * const atmel_functions[] = { @@ -872,12 +890,17 @@ static int atmel_conf_pin_config_group_set(struct pinctrl_dev *pctldev, conf &= ~ATMEL_PIO_SR_MASK; break; case ATMEL_PIN_CONFIG_DRIVE_STRENGTH: + if (arg > ATMEL_PIO_DRVSTR_HI || arg < ATMEL_PIO_DRVSTR_LO) { + dev_warn(pctldev->dev, "drive strength not updated (incorrect value)\n"); + break; + } switch (arg) { case ATMEL_PIO_DRVSTR_LO: + case ATMEL_PIO_DRVSTR_LO_1: case ATMEL_PIO_DRVSTR_ME: case ATMEL_PIO_DRVSTR_HI: conf &= (~ATMEL_PIO_DRVSTR_MASK); - conf |= arg << ATMEL_PIO_DRVSTR_OFFSET; + conf |= atmel_pioctrl->drv_stre_xlate[arg] << ATMEL_PIO_DRVSTR_OFFSET; break; default: dev_warn(pctldev->dev, "drive strength not updated (incorrect value)\n"); @@ -903,6 +926,8 @@ static void atmel_conf_pin_config_dbg_show(struct pinctrl_dev *pctldev, { struct atmel_pioctrl *atmel_pioctrl = pinctrl_dev_get_drvdata(pctldev); u32 conf; + unsigned int arg; + u8 is_sama7 = atmel_pioctrl->drv_stre_xlate == drive_strength_xlate_sama7g5; if (!atmel_pioctrl->pins[pin_id]->device) return; @@ -926,16 +951,32 @@ static void atmel_conf_pin_config_dbg_show(struct pinctrl_dev *pctldev, if (atmel_pioctrl->slew_rate_support && (conf & ATMEL_PIO_SR_MASK)) seq_printf(s, "%s ", "slew-rate"); if (conf & ATMEL_PIO_DRVSTR_MASK) { - switch ((conf & ATMEL_PIO_DRVSTR_MASK) >> ATMEL_PIO_DRVSTR_OFFSET) { + arg = (conf & ATMEL_PIO_DRVSTR_MASK) >> ATMEL_PIO_DRVSTR_OFFSET; + switch (atmel_pioctrl->drv_stre_xlate[arg]) { case ATMEL_PIO_DRVSTR_ME: - seq_printf(s, "%s ", "medium-drive"); + if (is_sama7) + seq_printf(s, "%s ", "low-drive-typeD"); + else + seq_printf(s, "%s ", "medium-drive"); break; case ATMEL_PIO_DRVSTR_HI: - seq_printf(s, "%s ", "high-drive"); + if (is_sama7) + seq_printf(s, "%s ", "low-drive-typeB"); + else + seq_printf(s, "%s ", "high-drive"); + break; + case ATMEL_PIO_DRVSTR_HI_A: + if (is_sama7) + seq_printf(s, "%s ", "high-drive-typeA"); + else + seq_printf(s, "%s ", "low-drive"); break; /* ATMEL_PIO_DRVSTR_LO and 0 which is the default value at reset */ default: - seq_printf(s, "%s ", "low-drive"); + if (is_sama7) + seq_printf(s, "%s ", "low-drive-typeD"); + else + seq_printf(s, "%s ", "low-drive"); } } } @@ -1013,12 +1054,14 @@ static const struct dev_pm_ops atmel_pctrl_pm_ops = { static const struct atmel_pioctrl_data atmel_sama5d2_pioctrl_data = { .nbanks = 4, .last_bank_count = ATMEL_PIO_NPINS_PER_BANK, + .drv_stre_xlate = drive_strength_xlate_sama5d2, }; static const struct atmel_pioctrl_data microchip_sama7g5_pioctrl_data = { .nbanks = 5, .last_bank_count = 8, /* sama7g5 has only PE0 to PE7 */ .slew_rate_support = 1, + .drv_stre_xlate = drive_strength_xlate_sama7g5, }; static const struct of_device_id atmel_pctrl_of_match[] = { @@ -1064,6 +1107,7 @@ static int atmel_pinctrl_probe(struct platform_device *pdev) atmel_pioctrl->npins += atmel_pioctrl_data->last_bank_count; } atmel_pioctrl->slew_rate_support = atmel_pioctrl_data->slew_rate_support; + atmel_pioctrl->drv_stre_xlate = atmel_pioctrl_data->drv_stre_xlate; atmel_pioctrl->reg_base = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(atmel_pioctrl->reg_base)) From patchwork Mon Feb 27 18:07:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ryan Wanner X-Patchwork-Id: 13154076 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 E615DC7EE23 for ; Mon, 27 Feb 2023 18:08:39 +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:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=GKrr2ROf6FN/he1XJHWziEKudXmNrfDNhhuUS69/8Fo=; b=WaUUnO4YtPO2N2 4dYG2ukLzB2Q1B1HQwTv0xhf6jbve0uTRDs3DOcBlDUv8IjwMOQT6WRcg8fMCfxlFl826L5LKiAnF E62Cmi46Dfz3rZg9t62Z9w0mBtmXhAsoa9V6J8l3tLJiaf/qaqhPaU3xYyaK/cQALujVjPdFbakmk DlP0TyqKDB6MvUcx8+M262FpSs+70+1ucjGVSI6us+cs9e+FtoC5gM98nKVUxwb9Y6AJ8pv0IjnRC v8Fp0wzcYpzioZ6iUlNL+C2TbuNxJINv6fA0VODKlB0rZvlhKEVITh0Z/CoRyq4fkcd2DVe1vtIU4 EivlwwGCIeTdKa5HSjCQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pWhuZ-00AeAu-CM; Mon, 27 Feb 2023 18:07:43 +0000 Received: from esa.microchip.iphmx.com ([68.232.153.233]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pWhuQ-00Ae8o-AK for linux-arm-kernel@lists.infradead.org; Mon, 27 Feb 2023 18:07:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1677521254; x=1709057254; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uGfudpPPBewHcSdcBwT5jvm880EuRGAkt0xWNtVELqo=; b=yt9M81rNtTC072/RcgkjHF7XsxEvAi2+pKYVt5XTCXgyJAuk97/mCTdR 9r2lHQhT1knpXUdcnMXvOd2j9DCO8iRxVajJo+BvBSsoWn20iircBUPWx ZShSM8iCzVjvp8AfP2abv+05wjjHfruBJW0Y/BBt+hlPerEVtQYeP/0xk bxl8fEZVz8umnwsWMsKCDTraSWciTM8mPN0X+pAced1brrvx2Ioo51rxr UjHNFLB+Qgvnl6xWC7mR4f8DW1aeeZAyc8sXN9aNehvFp48e9CO684cjE POtkN+kV9/2rSRf601omankHkQZu/0aSu9ta/TOSs+lv6X/kVHupJ7uGZ A==; X-IronPort-AV: E=Sophos;i="5.98,219,1673938800"; d="scan'208";a="202436835" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa3.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 27 Feb 2023 11:07:27 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 27 Feb 2023 11:07:20 -0700 Received: from ryan-Precision-3630-Tower.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Mon, 27 Feb 2023 11:07:20 -0700 From: To: , , , , , , CC: , , , , Ryan Wanner Subject: [PATCH v3 2/2] dt-bindings:pinctrl:at91:Adding macros for sama7g5 Date: Mon, 27 Feb 2023 11:07:28 -0700 Message-ID: <936fd3060662becd5485e32d5947286fcf0a3502.1677520830.git.Ryan.Wanner@microchip.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230227_100734_386876_77032562 X-CRM114-Status: UNSURE ( 8.60 ) X-CRM114-Notice: Please train this message. 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ryan Wanner Adding macros for sama7g drive strength. Signed-off-by: Ryan Wanner --- changes since v1: - Fix ABI break. - Add explanation for drive strength macros. changes since v2: -Fix subject prefix to match subsystem. -Add more in-depth discription of sama7g5 define values. -Fix formatting issues. include/dt-bindings/pinctrl/at91.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/include/dt-bindings/pinctrl/at91.h b/include/dt-bindings/pinctrl/at91.h index e8e117306b1b..a02bee76b1fb 100644 --- a/include/dt-bindings/pinctrl/at91.h +++ b/include/dt-bindings/pinctrl/at91.h @@ -42,8 +42,21 @@ #define AT91_PERIPH_C 3 #define AT91_PERIPH_D 4 -#define ATMEL_PIO_DRVSTR_LO 1 +/*These macros are for all other at91 pinctrl drivers*/ +#define ATMEL_PIO_DRVSTR_LO 0 +#define ATMEL_PIO_DRVSTR_LO_1 1 #define ATMEL_PIO_DRVSTR_ME 2 #define ATMEL_PIO_DRVSTR_HI 3 +/* These macros are for the sama7g5 pinctrl driver + * Low D is low drive for GPIO mode or any non high-speed peripheral else Type D output impedance + * Hi A is high drive for GPIO mode or any non high-speed peripheral else Type A output impedance + * Low C is low drive for GPIO mode or any non high-speed peripheral else Type C output impedance + * Low B is low drive for GPIO mode or any non high-speed peripheral else Type B output impedance +*/ +#define ATMEL_PIO_DRVSTR_LO_D 0 +#define ATMEL_PIO_DRVSTR_HI_A 1 +#define ATMEL_PIO_DRVSTR_LO_C 2 +#define ATMEL_PIO_DRVSTR_LO_B 3 + #endif /* __DT_BINDINGS_AT91_PINCTRL_H__ */