From patchwork Fri Nov 1 11:42:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Josua Mayer X-Patchwork-Id: 13859259 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2131.outbound.protection.outlook.com [40.107.22.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7490919CC28; Fri, 1 Nov 2024 11:42:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.22.131 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730461355; cv=fail; b=qpVyTk5fJ/lEmapJYoy1ywvfaQM8MOk2lWcKEeBv4t/G9Dy6/eHApCJD827xqvTfZ4rtZAZiV42uAPLuN1lXFHIamJEL94c3zKSbTqQSzPYVhu0WxCkSvhRSZGpy1gI8PVbeRmRnJ4hxUznLsLnJtjt0MbZ8k/AR5O79yl+sPfI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730461355; c=relaxed/simple; bh=zO9QyWg1HxuSZS9GnPm683YlvKYH/nq9G0g9teQTtrM=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=rMYxdkDkmfrIzAk61kZWhWp6a/Id5uo9dy6mHonD5AI81S10TXS3qVZfqoZ5iyMZT/a7VtPIScbHfjKtPZUupnz+T7A122HMsMH1GI7/5pvV/fKl+FePINc+prEDZbfOrPCPlWwjOMaC9/bJBzExTnEe7qjb3aeEDhkxe4LcGBU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=solid-run.com; spf=pass smtp.mailfrom=solid-run.com; dkim=pass (1024-bit key) header.d=solidrn.onmicrosoft.com header.i=@solidrn.onmicrosoft.com header.b=VfAr6WXS; arc=fail smtp.client-ip=40.107.22.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=solid-run.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=solid-run.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=solidrn.onmicrosoft.com header.i=@solidrn.onmicrosoft.com header.b="VfAr6WXS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lrZfXUXvIJEwvkf0iQiGKqkXmWBHKnOjFx2AwQhAUIzlvKKR9wvh1raMhuRfvSkhnYvC1MqYLM24OkS26N54/NjYQeRcRLIn/mfIxJ0/5dlTtP9bLpXQhK6UTBss/ikaWN0PNtXbZmVUfQcWnEWEwzenyHW9kWnL/7NeAMSyeZkOL+YbGhjFnB/fQ8MyNJUs02yPb9KrqypbzNyDZ56ZAwQ5bxr00vyBVq7zEtyb6wlBQ3smx8ZzYjbZ/uooxuP1d9uKP5oU84ML4okraFBu9A5vnAkB0/wAMqi2whR+2dwB0n9ZQ1ky1H5Bgjs73M909Xd6gLQDxbwBap2qPD8CtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Ssu+82ASPw6IayQqExCdYLnky9EubC2EVJ6pOZJqtFw=; b=jEKXHsNeq1dMMwkUrDT6zTFTb+IvFOK1e6x1CoDLXge+q19PPjZEuUkPjPiCM37KnFCnyDeECK8ZDzsXyP8odexkToJzENeAWYBhd08dLnApmZ6Pk8QcAzOPO10LczP1jmIoP12yLxqZY+85uNrTOJHr1xrQXqmkOIW1zBTbF9KDV7ZNwt66c0IgIAQeT0Hkt6GXRRXDY8/tgRZqOTPWaXSteQG1pxHhIEuVbIRds6TG5xUTfXkiCWeOUYlnF+oF9S/p58nQD0PeU/IxFC/CUlW3pMypsBLLbKHUqIGC5i4zuueRcS12LsYSBAH0OigmL2nthNM3klC+DN56YzRI4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=solid-run.com; dmarc=pass action=none header.from=solid-run.com; dkim=pass header.d=solid-run.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=solidrn.onmicrosoft.com; s=selector1-solidrn-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ssu+82ASPw6IayQqExCdYLnky9EubC2EVJ6pOZJqtFw=; b=VfAr6WXSms+wanyp12OEN3qUDRrjKOTKZGrVU3w8+dCyc3xubvxt60wk6NMctwdTi/PpNDzVUhSo7cyBQZb4eAPhU6webfJxkroyAkxQdddhA+dkJPemuD5Nm1ChkiRXoIjVqE/YVaSawegcj9hMbEV/A2FBYpm1Scz09CcFPko= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=solid-run.com; Received: from AM9PR04MB7586.eurprd04.prod.outlook.com (2603:10a6:20b:2d5::17) by GVXPR04MB10519.eurprd04.prod.outlook.com (2603:10a6:150:1dc::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.32; Fri, 1 Nov 2024 11:42:29 +0000 Received: from AM9PR04MB7586.eurprd04.prod.outlook.com ([fe80::c04e:8a97:516c:5529]) by AM9PR04MB7586.eurprd04.prod.outlook.com ([fe80::c04e:8a97:516c:5529%4]) with mapi id 15.20.8093.027; Fri, 1 Nov 2024 11:42:29 +0000 From: Josua Mayer Date: Fri, 01 Nov 2024 12:42:25 +0100 Subject: [PATCH v3 1/2] mmc: host: sdhci-esdhc-imx: implement emmc hardware reset Message-Id: <20241101-imx-emmc-reset-v3-1-184965eed476@solid-run.com> References: <20241101-imx-emmc-reset-v3-0-184965eed476@solid-run.com> In-Reply-To: <20241101-imx-emmc-reset-v3-0-184965eed476@solid-run.com> To: Adrian Hunter , Haibo Chen , Ulf Hansson , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: Mikhail Anikin , Jon Nettleton , Yazan Shhady , Rabeeh Khoury , imx@lists.linux.dev, linux-mmc@vger.kernel.org, s32@nxp.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Josua Mayer X-Mailer: b4 0.14.2 X-ClientProxiedBy: FR0P281CA0198.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:ad::8) To AM9PR04MB7586.eurprd04.prod.outlook.com (2603:10a6:20b:2d5::17) Precedence: bulk X-Mailing-List: linux-mmc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB7586:EE_|GVXPR04MB10519:EE_ X-MS-Office365-Filtering-Correlation-Id: 7771ca19-1c55-4594-60a6-08dcfa6a43bd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?urqZ/ntBFTZykIhNN0QkqKm1prFW6oc?= =?utf-8?q?GlTz3Z/D9lLlxq23xKm1J1isjlzCCYNA+YqbzfIt6MPitu52hKCQfamqIkkxwf7Ia?= =?utf-8?q?yxXZZqNtobzHL5ip4d2lmUlQOUzoPHlRm1h8HmNOTRarHYfuc4y+ne9x8SlCuubFb?= =?utf-8?q?9lN2Qvnpi8/A21MG9Ig6NE0M9KUSGUhcbkWlWzt+LgSNSj59NgAoQwJzu+nmXY4CW?= =?utf-8?q?f9wmuLe5NeXwQ18kuKGODKdKtMc6Ejs298GiwyB9dhlpOCdSZEUoiJRDhdzSLdxtU?= =?utf-8?q?VODCzBz4E4JOt1IfGlisfJ4dslCh/ks7tZlpu6xhFOrKp/YKEwv9mQsJBTcm7wRxm?= =?utf-8?q?aeIEZV4fiAVsdAYvImbXfTgmq7ZvyP0sgQZqaq8v1XgifgSDzJKp4adqCqaJgJ6Ul?= =?utf-8?q?WNO8V2Sw24uaFZWY+KDh2piuZ7W4MfySZLh7GrD3Zf27jCiep29lYmp3bnz9n56uq?= =?utf-8?q?h+7myJu6Wla9O5GG0lgdLGMVOLhqtHsZtKitGZhh/zL5YW9CGz1b4CM37UjnooD2v?= =?utf-8?q?FdD4SV0TR/DhkasZJkb93YushNQJ281MjYieF7BJ69EoC0BPy6SzYQZZGu5VGyxsz?= =?utf-8?q?EFlAXlk0EpQ5eMoh7QNfOwOXaPiasHvBcwTziEYJ58GxOOHVvmoojA3g5Wt4fWcR8?= =?utf-8?q?1GwLNcaWVL+Ed01YfOyWjW34HFVSJuXv1tFnRq+oXEqOmEig5+GFrz1rvqhhMlF6a?= =?utf-8?q?QTwxE3qGNzY5Vgq6EDrGjS0e1W7Ahi9Bx/IFrXES2hQrBLHuF3yJ8Uua90bPYBPPb?= =?utf-8?q?7cwUVG84PlnNHlY8jtWleOgA0q+U3zQaFAkArSe8rEIxZrjsNaHzHRXRrBlXKRTks?= =?utf-8?q?f1fB4jbKu9IppW+kJuy2EXN6/rCYZgikfYclWW6tDytqpBYnvBgfY2RUgVPSDkU+U?= =?utf-8?q?spUG7I1mVrHsWuqs7ulwhzCWqCSkl5zYvkOnPB6BLdZnsK6dnPscJK0cQo8Jo6Lrc?= =?utf-8?q?C8PF7iLN356nl1ianHCWIlngeo2jpoIbebydwnPwpT+Lmok0xftZBMvAo9FidkQL/?= =?utf-8?q?QlP2Pl0Y5yyvCKbFPg9d3ClkqOr0FadXCDWON0GeWIUr9H21r/LHx3SeMFOwYdvg6?= =?utf-8?q?2ntbF4V+rmYivxLnHrH2jEkdEQqBzBXdqFu0Tc8pybXYlc5chpvDio9Z3aZMQaVM6?= =?utf-8?q?2HOBk4LXXwYfYNuC/vY0zaj9PtSKRq5Qk21rboPu2ehjmHbTB+acXJkAFOtwCjtSn?= =?utf-8?q?eeMPWdjw4C7jcD1YcUZ8s0GIuBS3eGqDDiv3ZuTZnvCucPst6gdy9hPb9ZPA1bHee?= =?utf-8?q?FGxLeCgIkfcHpg8/NteD80txqtts6ngCs7J7TQOq6NWObz5ilSRy0hNI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB7586.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?02XzAezHSQ3hLCJW0Akp4ZWSYJ12?= =?utf-8?q?AVpMalwWz33TBouUKSIROphsPhHctVVW0Kl2tRYiaTreM7LJZD8XBvACCQZTmmv/p?= =?utf-8?q?pc3E7PwDOHKXCbgg1+NVkzyJpcOJ8zLsH2Piw/qe7DO09Jl0F0WZie+N4zVeZ0qAu?= =?utf-8?q?lp1uxnXnk/PPaAGM96PhlQMl6fMUUusVyTNjKMdgDHvUFTBg5wyOM6UqkJLrMM6O9?= =?utf-8?q?wu9TD8lTtDdjCbfkMdzaYsfw+TNheRzLJAwkcOpCcZumea0ul3QpHVCqHLYqb6roU?= =?utf-8?q?vxz6SoRneceKDe4ucXgmwlRrlD/3eqz9vqf7esfTtDjmlm/79NCq7kTI15Pmm8BJJ?= =?utf-8?q?bJWvlSD7BexziArakk/E8QeC1Vbpr8ZzxbL43RhmXEdHhkxJL1ai2rD7/dWb1ulId?= =?utf-8?q?wQ+ruTLjNRgRXqbYF3YKJPqI5Ml/OEHp2VC6/qovv7amjBlxUMTDB/v69kUzFsUqJ?= =?utf-8?q?LgfJPddk9fIcW7ifTI9h/UoKtAwEk9QI3yqQi6nKzj4ft0YjbqBrS9veNbP6rpxoA?= =?utf-8?q?ZlmFo6rascCMetByNZVWTLlfAw3yqDD809q58nnWLx+OIvYyZDpZ+V06rAKYLJYVd?= =?utf-8?q?Hz0yr1YsdrFzqBXK3/B4ESXo0LQmP990guVcvaoB3DqeMnHejOwbmLwmItGDMIaXp?= =?utf-8?q?m2xj4OxUWuH5H/K1G3mWzc2PaocDusSaVOzISKCZQeh+RW4Nl/IFSEM4qqdGMvwap?= =?utf-8?q?2vXm42Xe3QSFRbbxe8pQ7vNF0GI+Us96R9I/IziKNCDjh6YjcraQn73GlKPJbSyxc?= =?utf-8?q?SbjNSozmetuesZm85T2CBS3TSyd8HAXjibsoMhkrmUqLXHq7RtNgHChGITPFiz88k?= =?utf-8?q?bP2Cb3f01JUE7U3QvSaR+HdISvpHNveSiwGRAcyKJO/LLaNHswBOwQhKSAsRw4A5P?= =?utf-8?q?lca+PmY3aQhwIrIbAafCVUu35qWcgukSClcamOpC+r+oV5CswOPtNu43okb78NJJZ?= =?utf-8?q?+U3n1UxXnTwGlom4bZmakFdJyRlYT490JgYxTsbS7tC04vIhStLMLs2LV2mgLJi2t?= =?utf-8?q?MugqKQ+MtTj2a+3KF8T3PoD7Y6bdP0pNCqQl3WOuXltF44ND/FqPSS+8U5MRjAo71?= =?utf-8?q?n7hGrvig4Z3SuTZoLHC3uIXiQQeXhTvI7pPZTfgdBFDVbBG+C5L9j/Y42nGZDPp5s?= =?utf-8?q?Itp8PBKpcSJq4aW9ctm1WlIVB2fFUoBfLPueFb3Qx+gLDlwBHzPtTOuncwZBnJZ5s?= =?utf-8?q?xq7vTHhOYoJ+CBuvrLLRmkqL70UcUG//nf1Ks5ptoqObhGVU959C7srSvkOKfjUqL?= =?utf-8?q?arvgYgOVng7E9DSebpV1Sr6TVBQU5zz3ojTch5MadDQjA8+9uo3sHL2Ee1WbNzpHH?= =?utf-8?q?qcAy+zB+kSUqdbELhVi8AzpsBsiAVx3nHIcHv+49c0JuMALNCpbNTFcotBPuOku0v?= =?utf-8?q?+bHiMpOlhZzr5qV6IW1ppy0gFeUs8Iwy2jhHMgMmBxFRkp1EqD4quWPA8yAszI580?= =?utf-8?q?bu/yj9WZmFEX7F2uk7UEKqli+svS3Wz4sfzb+yydQNEtQxXS2A206KL0Jd+weaCtl?= =?utf-8?q?ziymRanb5Eqo?= X-OriginatorOrg: solid-run.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7771ca19-1c55-4594-60a6-08dcfa6a43bd X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB7586.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Nov 2024 11:42:29.0868 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a4a8aaf3-fd27-4e27-add2-604707ce5b82 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: h/iSfmaj0yCVt3JDmODgswWZipX98QWa/lrXkDsJNgXDj3F3MANTaW57nL1OxENNNm+wDUCWuuLyd7Kca1Jzmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR04MB10519 NXP ESDHC supports control of native emmc reset signal when pinmux is set accordingly, using uSDHCx_SYS_CTRL register IPP_RST_N bit. Documentation is available in NXP i.MX6Q Reference Manual. Implement the hw_reset function in sdhci_ops asserting reset for at least 1us and waiting at least 200us after deassertion. Lower bounds are based on: JEDEC Standard No. 84-B51, 6.15.10 H/W Reset Operation, page 159. Upper bounds are chosen allowing flexibility to the scheduler. Tested on SolidRun i.MX8DXL SoM with a scope, and confirmed that eMMC is still accessible after boot: - eMMC extcsd has RST_N_FUNCTION=0x01 - sdhc node has cap-mmc-hw-reset - pinmux set for EMMC0_RESET_B - Linux v5.15 Signed-off-by: Josua Mayer Reviewed-by: Haibo Chen --- drivers/mmc/host/sdhci-esdhc-imx.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index 8f0bc6dca2b0402fd2a0695903cf261a5b4e19dc..f106e291c276d0c8063e9ac59a126acf5e9e239e 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -31,6 +31,7 @@ #include "cqhci.h" #define ESDHC_SYS_CTRL_DTOCV_MASK 0x0f +#define ESDHC_SYS_CTRL_IPP_RST_N BIT(23) #define ESDHC_CTRL_D3CD 0x08 #define ESDHC_BURST_LEN_EN_INCR (1 << 27) /* VENDOR SPEC register */ @@ -1402,6 +1403,17 @@ static u32 esdhc_cqhci_irq(struct sdhci_host *host, u32 intmask) return 0; } +static void esdhc_hw_reset(struct sdhci_host *host) +{ + esdhc_clrset_le(host, ESDHC_SYS_CTRL_IPP_RST_N, 0, ESDHC_SYSTEM_CONTROL); + /* eMMC spec requires minimum 1us, here delay between 1-10us */ + usleep_range(1, 10); + esdhc_clrset_le(host, ESDHC_SYS_CTRL_IPP_RST_N, + ESDHC_SYS_CTRL_IPP_RST_N, ESDHC_SYSTEM_CONTROL); + /* eMMC spec requires minimum 200us, here delay between 200-300us */ + usleep_range(200, 300); +} + static struct sdhci_ops sdhci_esdhc_ops = { .read_l = esdhc_readl_le, .read_w = esdhc_readw_le, @@ -1420,6 +1432,7 @@ static struct sdhci_ops sdhci_esdhc_ops = { .reset = esdhc_reset, .irq = esdhc_cqhci_irq, .dump_vendor_regs = esdhc_dump_debug_regs, + .hw_reset = esdhc_hw_reset, }; static const struct sdhci_pltfm_data sdhci_esdhc_imx_pdata = {