From nobody Sun Feb 8 23:26:41 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013037.outbound.protection.outlook.com [40.107.159.37]) (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 DE5F73E9594; Wed, 4 Feb 2026 11:05:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.37 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770203113; cv=fail; b=aWTPQ2SEKFLM86jF4du5YMCzD3qSw59Xv3zth8CBrAbMJ+isExwXJZ5LtQtN8Brl76VObSllwkLS8Nsid8TjSGLUCih+jQrNkgvwlZcYRFzQXa/X0mhU4mPNC8Rj7ll9I0PwZ7rNnSVZrvYrix54QpL5MBvc2Cp3ZuZ9TWHcZLk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770203113; c=relaxed/simple; bh=auV68yjMWqlMtK8HAl46mXe1Kt2D7VaAI1i9zCaMTq8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=BaT4KBeuIjrVEi5+NDJgjhbSMb4m5oxzZJPfM2uIG6iSNOmvEnHwNaL5F7cfrCkFFPdQ50L1qTpZFMpNoM9q063z/HNW0v6uP1SoD3QTf2AtP46RwLKrsBh7oXFYlTwVMx03cuRMEDKa5MYLfqjY/gtIdTsyKd1MewkdJ4/DkHM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=PlPdPIkt; arc=fail smtp.client-ip=40.107.159.37 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="PlPdPIkt" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Sim10Yx+XV3kBpdDy4xtAeTEsVVBdUKEw+nEDrh838DbKmRDhJP+aqpx0jQEhwF8D44B8xgs7w4gNKwbHDJdka6UjP804DVdgHtOovZkKUktZ2pSSley4Ifb0rEwAqWvTWO3X/ZFbTqZk9gHoluEmG/nO+xaQbRcvZOa6npJ3aqxKtdjGnR7aT/6wXCeEs1v7pwembRSEumrkveyNVAu61GAyUYpM/sO0K8/S5mixNLd0JWlUtD/BTG3k0WGtzucnSErQhVJdsyoBvtPxMs4iqwYUjftA2plzUBkM9zePBurwy6j4sNqcZ4qsEXXekycsM0QfwE/2w0uQhfWxLj4OQ== 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=dCnnvnwZHfqYzNdh1q4RwqRkoQ5P2XjqK03nEpaihlY=; b=uF7jRvfZspQR28aehdVdE4PMV1bZ+4kwMY888Rc3+bWweMU7cs3/usDHnIc6k7DpPuCpcnGdAteGLgA79J7tLfZ+51dx6Qkar9N/cTBeDke1ZISEGhenilhCehsAaD2iQLIGRgsXu91Z76cw4YOdcinYM85lxvF9KO2qofq/ztpW5XQkFlBptmRoqz5Ys61tEy48h8u0AZBweW7q6w8pUQ+45YPXe4j4qOkErdR2NrfteaFFEOHtCLSucT8r+YNXaie7cAV447mq8nyJbIw/sDGLCHuDbp6dF7VTBWmjkGxLGgqZ+XkVx8S/UwaoLciR49Wp12fJhkS83SvO0Qvfyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dCnnvnwZHfqYzNdh1q4RwqRkoQ5P2XjqK03nEpaihlY=; b=PlPdPIktlE/XQicQTMqiRntlyH/mMwnu5/fjjMFBTiBqWUZHDSp4lcBOvC7Yne8lIlQ/V4sGI2jXu+3vn2lEDRrD3YAMIHxsF4NhlHKEPQ/EMvD8VTv3bYd1k2i2ypsSeyu0kqiWYy2g4HHxMYOWFXEIGRHUBUyQdli7G/7hEHY7YyzsVBVWkqgVBhX6ptx4aIdFg5NQNdrJzLZWLWIBBocIxgZMZwgQcMQraRyfPGBff/ycFsX+FkeT5HSfp5InV5adQXkbYJbH/C/eIqC9spcRk1c+zwA5fRUL0fdNbW/0pM2YGzmDYcOVcEzyd/P6X0lnNdO95tgCF9V71PuK+Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8829.eurprd04.prod.outlook.com (2603:10a6:102:20c::17) by GV2PR04MB11303.eurprd04.prod.outlook.com (2603:10a6:150:2a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.16; Wed, 4 Feb 2026 11:05:09 +0000 Received: from PAXPR04MB8829.eurprd04.prod.outlook.com ([fe80::52de:f9c9:8c2e:7dd5]) by PAXPR04MB8829.eurprd04.prod.outlook.com ([fe80::52de:f9c9:8c2e:7dd5%5]) with mapi id 15.20.9587.010; Wed, 4 Feb 2026 11:05:09 +0000 From: Xu Yang Date: Wed, 04 Feb 2026 19:06:16 +0800 Subject: [PATCH v2 1/3] dt-bindings: usb: introduce fsl,imx-dwc3 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260204-add-flatten-dts-based-dwc3-imx-driver-v2-1-d2c9b5a58c01@nxp.com> References: <20260204-add-flatten-dts-based-dwc3-imx-driver-v2-0-d2c9b5a58c01@nxp.com> In-Reply-To: <20260204-add-flatten-dts-based-dwc3-imx-driver-v2-0-d2c9b5a58c01@nxp.com> To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Frank Li , Li Jun , Thinh Nguyen Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Xu Yang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1770203208; l=5557; i=xu.yang_2@nxp.com; s=20250815; h=from:subject:message-id; bh=auV68yjMWqlMtK8HAl46mXe1Kt2D7VaAI1i9zCaMTq8=; b=mKzvxPaEVPK8vozNp5Ti2vYpr2EmW6UiQu8Z3BOCCkG+vqdhGb4+DH1dr1fdkm5Lwr5TFnc6Z x9Yzo/TaIm8DeI9Bm1peaV/jLE/X3oIL8mugc1bOvjt3WLD+snEuqmP X-Developer-Key: i=xu.yang_2@nxp.com; a=ed25519; pk=5c2HwftfKxFlMJboUe40+xawMtfnp5F8iEiv5CiKS+4= X-ClientProxiedBy: SG2P153CA0030.APCP153.PROD.OUTLOOK.COM (2603:1096:4:c7::17) To PAXPR04MB8829.eurprd04.prod.outlook.com (2603:10a6:102:20c::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8829:EE_|GV2PR04MB11303:EE_ X-MS-Office365-Filtering-Correlation-Id: 1af6412d-cc63-4ed6-6eac-08de63dd42d5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|19092799006|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Y1pZWk40U3pYKzVjMTVPaFFIUnp6MTFXUzAzMzZlUnBzbkpndGR5TjBRZEpQ?= =?utf-8?B?ZVJtMUNncDlxQ3I0dCt4K0lRN3RtY0lTUEoxV0x0WVhzSG1menUva21EODJ6?= =?utf-8?B?STVZb3RkbURwbnhoWUJNTkN2c2dGSng2WmJEYW5MM1JGUEc5QmlHSFJHL0hl?= =?utf-8?B?ZGdHWUlnU2FVYys5TXVtN3ZXaDFOUHh3dU01TDVlalQ4ZDRSVXpLVkxjZVNs?= =?utf-8?B?aWJIZlJiOS9CdGFadGM0bTNNa21UcHp3azR5UER3SERGWFlDWXcvRnRiVTdY?= =?utf-8?B?WDZIK1dVSHd2SjVlek5BNVdmdlNjcHI2WUc5RXRFM2JWMVMyV3hjbyt2NzdY?= =?utf-8?B?cnBYTVJyM0JHWXdFT2RIeDdQbTJqNEpzdXVRV2F5QXdaNFlCVXNXallaRDA1?= =?utf-8?B?aFp1K253ZWhvSmZGZHFwL3poQU5sMXFrM29CbjY4bEZiRmI4M1VCWEhtRC9q?= =?utf-8?B?blpPc3BmTVB2U3ZlT0xKMjUwUmhHZDhKNDlvSmxRQnRRNHVWMm1jZjlrL1NQ?= =?utf-8?B?MHQ1OUFYYlF1dlBGYlZFTjNJak9JUThuTklXdDVLcXZZMWRPbm93dm5jM3Ez?= =?utf-8?B?cWYzN1Z4TFU0L1hGOURVOEdHeExBWWRjMjZTTzJQNTdpaXRLV21mODRGN240?= =?utf-8?B?b3RuRHl6Z1Z4STNXL211L1pkb3doYUhDemFPVU9sRldoOHIvZy8yYWE1Z1VC?= =?utf-8?B?Z0FKcDZHTnlVNG1TaWlpcTBTc2xCd05IVk5IRVFOWTZtVk5BRzU3NmJQbDBq?= =?utf-8?B?cFdYemo5dzJjMVg3YmFVckQ3K0NtNDRFMVhJVWhGcGVLcGxnVTlIaS9PK2Z1?= =?utf-8?B?VGthLzJxdExLaVg4Y1c2NlZqS05UR1hEajlrSUZMMnZmNklIcjQ2RGJmR3Mz?= =?utf-8?B?Y0hlSnV5Tnh5Ukd0cDNrVHo3RVFTQ3ljM2JSaXhFU2xyWGpkZnpGNml5M1d5?= =?utf-8?B?Z3lDZXJTWXlLcmo2Q0N1bHhFK1dUR1hiUlQvTFk0TE9XUDUxbXVDZHl3bEV5?= =?utf-8?B?Mkc4UWt2VXRXcks4T1ZXaGxlYXFxbEJoUW1YVWdZM1NnS0JxeW9rVG5YRVNH?= =?utf-8?B?QkQwbWdnUUtmaWdiakFkWUV1c2RRMENlU1kwb0tGcDlrZkNjalExV0VuUlFX?= =?utf-8?B?UmlBUFpHOCtZRnpYeEQyR2tETXc1RXhoQXkvMXlzUEYrQ0NDeG5BSmN0Q2xo?= =?utf-8?B?SU5GeHMrdWlPRVM5ak1xWDRJTXVZOStML0M0cm8zVkZ2bncwKy9qR0dPRXE0?= =?utf-8?B?WERqQVBNQTBUaGFRT2NlUGZjN3FEeTFrVXo0RHhmKzNrKzQ2Zm9xWFJrdVZr?= =?utf-8?B?cjk4eFAxYXZzaHBYQzRhdFN4OWZYc3JxSEtwQStOTjZHeGVaYi94WWMxN1Ni?= =?utf-8?B?UDEyQW05TTk4dFZhVy9yOWh6Ukd1R1ZxUUJZeUJHRHJpRFIvbzhsUWRhNkRO?= =?utf-8?B?L1ZzeS8zOXhTbFdaemtybDlUbkt4YjNFL3dTSWpCNndWK2NSbzFNVUJZWlNP?= =?utf-8?B?N1c3NHozZ29CR1FpamJBaTN2ZklaOXlnK0NLVUw4R1ZwdzVnaC9WeTVuUlE5?= =?utf-8?B?bTR6S0Fndi9adzVmS0Y0M1RIZlVsNnpldVFnL3lpUzdZMXZDcnpzeDlTSE9Q?= =?utf-8?B?ZlpxTGlvRit2bkQzSWllNk5wcWxKbGpWSG1VNmVVS2NKTjYwaEpVVjUrZXA5?= =?utf-8?B?N1FkZHErdTdvTVgweC9Jc1FLVG91VUIrTFB3WEdIWG00a1g1ZlVRNHc0Mlho?= =?utf-8?B?RjZabVV3a3c0NWFVWXhGWXJGL3hTZWFac2pqN0JRQUgxNXpueVJpdG1OdDVy?= =?utf-8?B?c3VxMXY2Vyt6d3hONFc1Nk8zMGVVV3M0ZnQveUxZenZ1a24xOWFUNHA3ZFVY?= =?utf-8?B?VjV6VkdoK0sxNUVHMWcycENGM2ZvRDdYWGdTdnlTdyt6NTdqS0k1d3N0NUNV?= =?utf-8?B?RVV5K3NZVkJSc3dyRE9BTnUzOXdxd0IrTUpEdkwxRjluNUpqNHhxMWdrY01h?= =?utf-8?B?RytsNGJsR1FXdlk0clcyL3N5Q0ZFcC8ydG9COS81bGV4dS93NW95WHFWVjYx?= =?utf-8?B?MjNlSXZRd2x6dHdyNHRob3BGWXczRndlY3pLcUF3cG84dkV0SmRTN3Z4MUpj?= =?utf-8?B?MDViVTd2N0hhcDJGNk5PNk54MEVDUU1CZEhwUmQyS2NpT1JoNzd1Wk5VSnc0?= =?utf-8?B?T25XSTR1UWdyWU4rU0hLZm04ZnZWY2xiV3RtcCtyMlg1c2oxMnAwU3U2clZt?= =?utf-8?B?dVQ0bzEwRFZBOXk4S2ZhS0pHYnJRPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8829.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(19092799006)(366016)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?M05LeDdCbG4yRzltYVg5RWthOEVnSWgyTUpQSmljRzRteGIrSWljQ29Nek1v?= =?utf-8?B?TElrUU1PbkRPM1ZXOGVyTkh5eGlSeHdqaktiNFRYMHMxZTFGN2ZBL1RYa1o4?= =?utf-8?B?cUpDS0J1bXA4ZThjVGVaTjRFRnl5VW5VWmliL3ovalptTVdaQ1dPc09YZnVo?= =?utf-8?B?eXBBdW1YbGhzd0phcUpHUURaNjYzWEwvc29wQWFyZEtKNEZLdE42cy8vZFZh?= =?utf-8?B?cjRPZ3VjSmlOSnFSb3B0SEJTU0prb0hraWxhd1l4RHdCZVlpSW0xbzJYZC9s?= =?utf-8?B?Tm1vaU81S2o1TzJiM3diNGl1R0Q0SXZqdkFWcHAzajl4cEtjOEZjSWl2WWEz?= =?utf-8?B?NUs5dzYxTDVSOTQ3M0pNZndFV2N0Nk1FbzJxMERVdGZYWnhpSnJpSUpiYzlH?= =?utf-8?B?STJhaFJ4REhSTFc5VlhDZnZCSURuZVRpbThGTmlnQzEvSGVUaFJUQ3liNEJm?= =?utf-8?B?MHdvRi9KS29kNkk2RGRQRFRwOFB6Rkd5T0VEeFl1bUQybGptSENaa2JkZHA0?= =?utf-8?B?U0xkeko5dmQ5YWV6UHBqNzUwMU1yS2JmMTlMTnlPdURRbC9JTXdLb0QwLzl0?= =?utf-8?B?d1RDYzRvQ1QrME9PeXY1S1BSS2o1V3JUSHhxU1pDREd3NnhTRk1VL3BCMmsz?= =?utf-8?B?YzA3dE9jZE1RVXBZQzRjWUtPcjVnc1cycDdwTVFVaEUvL3JTa3BMRTJxQm1P?= =?utf-8?B?RTNQa1RpRVVJNmdyR1JWQWpKK0JnNVBmTFg1QmRLcy9LSkJDQkh0YTFnTkY2?= =?utf-8?B?cDdaV1VQczY4OXhSaTFZOG9laUNhdVlOcE1wMXE5YzBwRVlwbElSUVdtdnZ5?= =?utf-8?B?RGdqczVCcUJhRDc2MjU0UjI5aUVyNG5Wb0o0c3VHdjJSbU91dWorR3FQdUFT?= =?utf-8?B?bGc1dXFXY0lEaW9SYVZ4RnY2eTVxUHJ4b2t0UUowc3lhUkJMNEREWXhBbXdv?= =?utf-8?B?QWhFNmtyNHBkdGEzN1Bkbmt2S0cydVQ1RWNKdmpoZm9wZE1PTU1TS2IxTjBh?= =?utf-8?B?b2FiWVpFUDJjRWhYR0hBZHJUbzB3OHNpTHpEcUluLy9panRhdlRuc3djREJX?= =?utf-8?B?QVpjYlExN2VQb2huZGtyVVRYbC94bkJZVXBEczZCeUFsbUI5R1lCb2JKSlVx?= =?utf-8?B?V1gxcnZxcXJOSGhZYnJDNGtsc2hDbW5zdHVkQm42R1VJWWhQVmxsUzF0VXVa?= =?utf-8?B?NW9qL0lhdDdveVdiWUQyN092TFp1TlM5c285NER3MFQrU21qcXRYek5HcTRh?= =?utf-8?B?V0RDd0ZzRVhOOXNMQ01rbGU1RWQ3SDBRUTRNZ2hnUzhwbFBnMnUxTmdEcVIv?= =?utf-8?B?VUdicExsTkpaQXhXdUpQTCtOL2U4Z1dORktpMy9TcWtlTzZ4aTQvNmI2R0RH?= =?utf-8?B?dlFZN3BtTXZNSERXWWdXWmthdlNIQTRYOE96VmFaUGJyOWN2WU5ybkFsamVT?= =?utf-8?B?bUdYaWFYbFFmZ3VvNFdMbXJOTm13WFZTeksyVFVZNld6K0xMQjZaSnZvbVd3?= =?utf-8?B?UzVhazg1bGhSSzAySnczL3R2NFBRVGFXQ2J5NlFsM0J6VnI5Rlh0d0FlajBW?= =?utf-8?B?dVVsbVN1VWdrMHNrVVUxdXF5R3BIOUV5Y2tGcTNleHJCSEJUWVFFekMvdGFB?= =?utf-8?B?STNkMVI2NXFPUS9QZGIrNC9iRXEwS3BHUUlTeFJ4UW5UZFlZMG95cS9zOWJ6?= =?utf-8?B?WWo2YmV0MDJqa3BZSGhQTTVhemhpR0pYZmhkRDBNSDBQcHVTTllmaCtTSTh3?= =?utf-8?B?QVN2dkhXMXNzRk43NnhadW9MbDRMZVZKSmQ3bk4rUTJGTFhDWnBpd0JuUjNB?= =?utf-8?B?QUZCQ2xPd1AycURRbDVCNnNseERyRmtpNHRWM0QwVVArendjaWtUSDlKSWtR?= =?utf-8?B?OHh2MklYS0I5STRXWFQ3aENXZkR5WFFYcldOQUZML2VYQ2pxUUxDZTJzWjBl?= =?utf-8?B?QTUyZEZZWEhNWWM3Q0cyOGxOR0V1QWVBWEtCRkdBb2Ztd1JnNUlZVnRRa0Fw?= =?utf-8?B?M1ZOd2JudG1qUlQzTkRIU1VXSG9pWngzZXRXL0hFbU12Y3oxQ3BYM0ZGRklT?= =?utf-8?B?NGI1YjkvVDViRkIwbWJZV3REelBXNUREemEwRXRvNUdLdU0zSGNndnY2Y2k1?= =?utf-8?B?VEZLU1B6RzZsUzczZEh3Uy9jVEttSjgwMkR0YnB1R3hhVjlNUmdMYWc5dHI0?= =?utf-8?B?RmlwaHNnNzBRYlRPdmtZRWJqSkVLNXRMOXR3K0ZlWUJucEhNcFJ5VThXKzF0?= =?utf-8?B?MnNCY2UzSXgxaFFXRlJRS2QrRUN1T2NzblRqaHpvZkhpZUpUdnhMdUQvY1E2?= =?utf-8?B?eGg0WThLWVJNYzJnQjRWU3RmWHJtbFJPa1UraktxNU1FdWhoN0w2Zz09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1af6412d-cc63-4ed6-6eac-08de63dd42d5 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8829.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2026 11:05:09.5485 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: wWA7x40h8uXEUFo+KSDRTPZcvAzdUsEZzFf6MZK9tbm24OvCAbBOXuIp2YDFoOUmo1iV6fVLsfwfvXoucEwN9w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR04MB11303 The i.MX USB glue and DWC3 core are closely coupled. Describe the i.MX USB block in a single block will bring more benefits than a parent- child relation. The new binding is a copy of fsl,imx8mp-dwc3.yaml with the needed modifications. Add the common compatible string "fsl,imx-dwc3" to indicate that the flattened module should be selected. This compatible is also used by "select" to inform the DeviceTree validator to apply this binding. To avoid redefining all the platform-specific compatibles, "select" is used to tell the DeviceTree validator which binding to use solely on the generic compatible. Mark fsl,imx8mp-dwc3 deprecated, to favor expressing future platforms using the new combined binding. Signed-off-by: Xu Yang --- Changes in v2: - reorder compatible property --- .../devicetree/bindings/usb/fsl,imx-dwc3.yaml | 131 +++++++++++++++++= ++++ .../devicetree/bindings/usb/fsl,imx8mp-dwc3.yaml | 13 ++ 2 files changed, 144 insertions(+) diff --git a/Documentation/devicetree/bindings/usb/fsl,imx-dwc3.yaml b/Docu= mentation/devicetree/bindings/usb/fsl,imx-dwc3.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6932804516948bc0f8457553eee= 7e5ee704237f0 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/fsl,imx-dwc3.yaml @@ -0,0 +1,131 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright 2026 NXP +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/usb/fsl,imx-dwc3.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: NXP i.MX Soc USB Controller + +maintainers: + - Xu Yang + +select: + properties: + compatible: + contains: + const: fsl,imx-dwc3 + required: + - compatible + +properties: + compatible: + items: + - enum: + - fsl,imx8mp-dwc3 + - fsl,imx94-dwc3 + - fsl,imx95-dwc3 + - const: fsl,imx-dwc3 + + reg: + items: + - description: DWC3 core registers + - description: HSIO Block Control registers + - description: Wrapper registers of dwc3 core + + reg-names: + items: + - const: core + - const: blkctl + - const: glue + + interrupts: + items: + - description: DWC3 controller interrupt + - description: Wakeup interrupt from glue logic + + interrupt-names: + items: + - const: dwc_usb3 + - const: wakeup + + iommus: + maxItems: 1 + + clocks: + items: + - description: System hsio root clock + - description: SoC Bus Clock for AHB/AXI/Native + - description: Reference clock for generating ITP when UTMI/ULPI PHY= is suspended + - description: Suspend clock used for usb wakeup logic + + clock-names: + items: + - const: hsio + - const: bus_early + - const: ref + - const: suspend + + fsl,permanently-attached: + type: boolean + description: + Indicates if the device attached to a downstream port is + permanently attached + + fsl,disable-port-power-control: + type: boolean + description: + Indicates whether the host controller implementation includes port + power control. Defines Bit 3 in capability register (HCCPARAMS) + + fsl,over-current-active-low: + type: boolean + description: + Over current signal polarity is active low + + fsl,power-active-low: + type: boolean + description: + Power pad (PWR) polarity is active low + + power-domains: + maxItems: 1 + +required: + - compatible + - reg + - clocks + - clock-names + - interrupts + - power-domains + +allOf: + - $ref: snps,dwc3-common.yaml# + +unevaluatedProperties: false + +examples: + - | + #include + + usb@4c100000 { + compatible =3D "fsl,imx943-dwc3", "fsl,imx-dwc3"; + reg =3D <0x4c100000 0x10000>, + <0x4c010010 0x04>, + <0x4c1f0000 0x20>; + reg-names =3D "core", "blkctl", "glue"; + clocks =3D <&scmi_clk 74>, //IMX94_CLK_HSIO + <&scmi_clk 74>, //IMX94_CLK_HSIO + <&scmi_clk 2>, //IMX94_CLK_24M + <&scmi_clk 1>; //IMX94_CLK_32K + clock-names =3D "hsio", "bus_early", "ref", "suspend"; + interrupts =3D , + ; + interrupt-names =3D "dwc_usb3", "wakeup"; + power-domains =3D <&scmi_devpd 13>; //IMX94_PD_HSIO_TOP + phys =3D <&usb3_phy>, <&usb3_phy>; + phy-names =3D "usb2-phy", "usb3-phy"; + snps,gfladj-refclk-lpm-sel-quirk; + snps,parkmode-disable-ss-quirk; + status =3D "disabled"; + }; diff --git a/Documentation/devicetree/bindings/usb/fsl,imx8mp-dwc3.yaml b/D= ocumentation/devicetree/bindings/usb/fsl,imx8mp-dwc3.yaml index 73e7a60a0060dee6417b9469251e121704b7a148..fd23c345149e0dba1ed3919a251= 95edf247cfc08 100644 --- a/Documentation/devicetree/bindings/usb/fsl,imx8mp-dwc3.yaml +++ b/Documentation/devicetree/bindings/usb/fsl,imx8mp-dwc3.yaml @@ -10,6 +10,19 @@ title: NXP iMX8MP Soc USB Controller maintainers: - Li Jun =20 +deprecated: true + +select: + properties: + compatible: + oneOf: + - items: + - const: fsl,imx95-dwc3 + - const: fsl,imx8mp-dwc3 + - const: fsl,imx8mp-dwc3 + required: + - compatible + properties: compatible: oneOf: --=20 2.34.1 From nobody Sun Feb 8 23:26:41 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011061.outbound.protection.outlook.com [52.101.65.61]) (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 B7CE13E9586; Wed, 4 Feb 2026 11:05:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770203118; cv=fail; b=JDFHRGQ+mfG2Wql7Nn3ztvsEkE7mLCg2v/0MrzU/07LV6zYaSrYDUbXjfQnjX6+KIwCbysbFEoawTvMWbG6mDHmX2mef+U8gCGYBPPXRxaLuENv58UaT8PyFvhYqgdrevgYTXVzgLgP6xHadYlU9ymlSMQnp3KbcEWPEbDnsjvc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770203118; c=relaxed/simple; bh=YhHN3rjFMpHvNHQVLqbfJesc9LdgbayX/o3gDbwZ54g=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Wbu7mW/nsNmTHZSl8ni69Gr/N6xPHMMiBxl+QbtQD8f80ftoWMFZLIggtQhH2F+S3bkraMRUdQiOa/s2lK+a2me54WyWrkFzfqfrjTZql1BX4Dbo9B2fB+S0zPeuuY1g4mq43O3BR/XBhQ7WIav/mE9UVXK+oy3Fhqs2k7EXo5A= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=eW9T6sJc; arc=fail smtp.client-ip=52.101.65.61 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="eW9T6sJc" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QcwGy5A4lN++TRI8kXXe7RMxuRhLpCbCKaGibIDrn1gvdAR0O1W/hRrvhthitBTyTn9Pfh9kN26NSIpxxMwN5jZi0R++5UeQftLo/VhUtc1fp0tlAETe2OxA724p70Fr6OSIU9O/lc0zDZaaYP6Z55PWv1rZLHjQ05xF/XS9Vlq0sGLWhjQa4x253eKujSevswYcwkVusr1PIs2i9Vn8lxTbcyagH+/B9TDqTsgMGosJF9kSYo1BII7DeCr/VJG8uMoBrjx2Iz/HekdUD1r8PWGLk8DM2iqSk5oIz8BROmWyfbYfKBFd+B3tgA2rMJX0zdH5bUxNo7e8kMTntdIibg== 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=eOoQLa9FDgEk6wL2LygM7leXrYfcZf6BMdzW+MJvKdA=; b=aKiZ/nRSNxwAh9b38UMeLPCaF3KapiUbwkjdYFok7wPSuuW199LQCrPk/IYXB1hdDBxkrFQyASMMHAgIOiAlUCvSl4jxjNjayPeOSqjyZRRl1apK2hwmT+ow5p4h2/OnuUIpEO6FSdJOCnWlAVI+CxY8R1o0+slx2gnKW2qPozVjzFLYHI8ZuTff+uxsnmOMkIkCGSzyAthAR83mB0T0c680DTNt8ePtvU3w6v9tnEFdN1XvLJEp0d+FrbSie5QyJ9MAgNFntPpBGJ4mRidSIWPH31Hn8n3ge+FXx4W9lZCnqzbq436AeYAdZrh/mh4gCZOOjxlT+ewW+QrenOo+Rg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eOoQLa9FDgEk6wL2LygM7leXrYfcZf6BMdzW+MJvKdA=; b=eW9T6sJc3SeMwwAyyKiWpnpwTyIK5fjSu/zHymAIlW4KNn0A+fbV4GMlJGOZrCOr6bRDmPTli0lFYcdZX4iWeh9KVFIaPnBqyAOeAWpcorzT4eh6y/eY8ikVh31lZ3qhtZ6myB3uO24pk5syWBn6mK2xBelj5ZT1jjFduPyDPs9biIP76CRXkGtWnfzkBUzcIMXM6MLreQsISlflFPvZ3qa6ZtLM9vZwkxNN28N5eB1KXcsyVe2gZQ9LovIa7WU67rPMfyRoyxNVmNjsAIuXYjewGHL6gF8ZGcksDmbwYENiEy0A0UPn2LCAbYK8QDH5mTPgC3VJFsdDrsaufmPPcw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8829.eurprd04.prod.outlook.com (2603:10a6:102:20c::17) by GV2PR04MB11303.eurprd04.prod.outlook.com (2603:10a6:150:2a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.16; Wed, 4 Feb 2026 11:05:14 +0000 Received: from PAXPR04MB8829.eurprd04.prod.outlook.com ([fe80::52de:f9c9:8c2e:7dd5]) by PAXPR04MB8829.eurprd04.prod.outlook.com ([fe80::52de:f9c9:8c2e:7dd5%5]) with mapi id 15.20.9587.010; Wed, 4 Feb 2026 11:05:14 +0000 From: Xu Yang Date: Wed, 04 Feb 2026 19:06:17 +0800 Subject: [PATCH v2 2/3] usb: dwc3: add needs_full_reinit flag Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260204-add-flatten-dts-based-dwc3-imx-driver-v2-2-d2c9b5a58c01@nxp.com> References: <20260204-add-flatten-dts-based-dwc3-imx-driver-v2-0-d2c9b5a58c01@nxp.com> In-Reply-To: <20260204-add-flatten-dts-based-dwc3-imx-driver-v2-0-d2c9b5a58c01@nxp.com> To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Frank Li , Li Jun , Thinh Nguyen Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Xu Yang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1770203208; l=3904; i=xu.yang_2@nxp.com; s=20250815; h=from:subject:message-id; bh=YhHN3rjFMpHvNHQVLqbfJesc9LdgbayX/o3gDbwZ54g=; b=y3ZBtEBU5ilEN8JhTP3u3V+i5YEGgULD5IqWEvhE1/kH49iKCm+PIZKzhEzvt3Mz/1Z3L/E/2 Ay5vpMbUsnQB7ZywavuGhulJe/VqUQibu6Y0zUKpCxPVZ2LNIO9+ZZi X-Developer-Key: i=xu.yang_2@nxp.com; a=ed25519; pk=5c2HwftfKxFlMJboUe40+xawMtfnp5F8iEiv5CiKS+4= X-ClientProxiedBy: SG2P153CA0030.APCP153.PROD.OUTLOOK.COM (2603:1096:4:c7::17) To PAXPR04MB8829.eurprd04.prod.outlook.com (2603:10a6:102:20c::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8829:EE_|GV2PR04MB11303:EE_ X-MS-Office365-Filtering-Correlation-Id: 291771cf-3cd0-428b-6e85-08de63dd45e3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|19092799006|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Z3RvSXorQmZMa0VMWFF0RW9jdGtLZ2JFMlVrNWNqMnRVNVBBQVBLb09JNlNM?= =?utf-8?B?cjdZdUpLRTlNVmQ3YU5mRlppc1loUlcxR2E0VHVDdU1tSWRRMGs0SWRhS2ZC?= =?utf-8?B?anhhajRERlRnclE5ZTRGb3pGajdBN3FQVEMrc3MwRGs4c05lbnNDaVJNMnVC?= =?utf-8?B?Rzk3cHQxdkJSWGRkbTRwbm1jc093N1o3cDNMMHBjK0NEWmpsUEFKbkU3Z1FD?= =?utf-8?B?VnZkMUxqV1hPRHZabW00aXovR2tyOGxOVE9WS0JzNXNrcTVOK0VPYXh2MVNH?= =?utf-8?B?VFVUSUgzMWR0dEd5TlB0bDZxZCtmWERZZHFpVTV0bXVsRVh1TVJETEdvS0Zh?= =?utf-8?B?S3cxRTQrclRidzAzTVZnYzAyVkRSOXdPNVV0MHAzZnRxNzZiRUNuTkZHRmxD?= =?utf-8?B?ZUNwaUpaMnV6S0NSdUx6aUM3eGJ0VzQ1NEhCbWZBS1hEajN4cFJSNVZoVHJv?= =?utf-8?B?TWQwYlJ3eE5NYnRYRUtGWUxKS2lwWXhROCszSzVZWnNmYW1xd2VQSFFNYk1T?= =?utf-8?B?ZkkrVGpVM0ptZm5aZlBxeXdmVVB6ekR5YThzK0tJdEY5d3Z3ZXlsSWh2Tm84?= =?utf-8?B?U1dyT3hSb0xGWThCeFRNWGlYUXJta3o0NDVUdW5iZUJYdEN3RHlsNEFtN3dD?= =?utf-8?B?RCtkSHFtUFdDcWZHZWpIL3k4UzhsYzJ1eDJmamJmUVRTVHJHbndhUnQveUw1?= =?utf-8?B?QmczVkpYamc5OGE5UkYzRXhlZTc3S0VMeGpZRmtranlDS1RRaE9oallZVzJx?= =?utf-8?B?bzlqR3NTVk5yRUQ3dElINlpzSXJyMDRlcFlrNzBpTHJ4cDZhdlJmbzNaRGRY?= =?utf-8?B?Y1hjVXhoNFpjV0JqNXpOK3VtSnVNaVpTbUQvRThJajdrZ2ViR0pLMDkwMlhG?= =?utf-8?B?VGd5N3NkUjR3Z1E0ZHpvTVJjNytGQ2pFaGVNYmRkd1greG51RVVsZTZVcUJq?= =?utf-8?B?djY1cEY3V29aeHhrd041UHV4QjJacjNMY2E1Z1R4ZUk0TUxIWFRCMERGaXBr?= =?utf-8?B?ekZUOEIveCtxdGZLUHp4SGJLVWkxQWdzR0wvZHk2dno0a1hlanArYmpXNGd0?= =?utf-8?B?NUdOeUF6WUFDNmVvcmdrbmJWSU1sMnA2ZUxJaTl4OU9tLzZ2TEtmTkFSckR1?= =?utf-8?B?azRPcXhGcDd5RHBQMVlZMHRXczNoMHVYTDZua1YvMmthTG1KOWhEYk1VcTFQ?= =?utf-8?B?VnBiU1o5VVRSN2R3RHQ4VW9pUy9GMi9OeVVNdmR1TmZaZ3ZGN1FhYUwvUlla?= =?utf-8?B?dGFZV0duVlAveDZGOVcvajNOS1FQWGVkVXVYL01pUHlMVVpaLzRwbzBQYVF4?= =?utf-8?B?ZlhqcTF5MStDWnRaRG9sS2Mrenp4UXJpRXByMnphUzJFNjFXVXU1TUs2NzFJ?= =?utf-8?B?eUZ6eEdPRkpxb2dRSmU3ejlGU0poYW1YN0VjMC93aHRycGZzQ0M1MklUSXpG?= =?utf-8?B?SCtXVGtFKzVhamVhY1hlV3ZUOXBkUDZjenpXM3kyNzQ1UU41d0FLS1F1c08v?= =?utf-8?B?NVA2YlY0U0d5MnA4WEhQN1BuaUxwdUJMVkxMN3BWem85NFhSSmhBRkNNenAv?= =?utf-8?B?MWY3VGo2UXhjNnRub0V1RXNOWjFYMnFrMEdOUFNGTVRBRmVPUEhTU2NsWERY?= =?utf-8?B?UTliV2ZiejZsd2ppT1gxMlBnY0VxZEpCQTRtbzhHOXgrY25JTS8zekoyeFB6?= =?utf-8?B?UE5vc2hmZkxhbnJFckhXZ2FybzIrTmw4bjd3ZldhOGtWWVdQSGphOG9LVGdo?= =?utf-8?B?MmNXc3AzWGdPZ3VqNG1NaFFkcWpydENWNENFQnQwamwvL1ppbytsKy9pZkJJ?= =?utf-8?B?ZG9aVThyV2g2UmNabHBQN2FZTklyQmVzTXk0SjRheEJGUCsycFJUUmVmM3Rl?= =?utf-8?B?Y04xd0lkZ0JsRUZEa0JMcWVPVXlYY090aUZWWFAwSy82a0J6dEV4Umloa1lm?= =?utf-8?B?aWpzS0d4UHJmZzg4SmpSQjBvVEtSNW85N1I2VHhVZTF2MGFaL1RSVkVZdW4z?= =?utf-8?B?U3RucFRhK1ExNm9rZjJsMTBJSVpPVEtORllKUmxveWsvSk5aRVRoUUlZTDBj?= =?utf-8?B?L01QU0NkcDlyS0U4bEpBSU5MK3B4WXFXRGJzeXR1SzVVQkg4cTZ6T2o3Q1hU?= =?utf-8?B?dXZIa1RnN1ZBWnBobDhkdU5IN0dybXcxYnM5L25rczBZcGllUG1ja0RsYWNh?= =?utf-8?Q?O9GNYd1azG7SrVjYxcgJdJpFyF39NcRhQswSfKwVPUcL?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8829.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(19092799006)(366016)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N1hCUGNBQytBMUl1c2gxRkNUbjhGeTBEUGM1R0xEOHNNYU5lVXJ4RWhkbStE?= =?utf-8?B?OGQyMGRBK01rTVl5SUZmY0xsd1VrQXpzZ3ZQM3pQb0U4NlpGaHBzeWt1Q3RJ?= =?utf-8?B?cWRtRDdKZFgraVU0K3dPcm9KbnBoRGR5YVROZUdFUkJpOUNodnNpREppb1Nn?= =?utf-8?B?Z1JZN1JmQkZycm5yaTcrWG9jY3VOaEc0YjE5a0dZV2JMb210V0RQMjhiMENW?= =?utf-8?B?c2NDOUFRUkV0aGhuc1lQcFU3TE9xUVpTemhibzJQT0RpYmZaWjlvKzFWb0Jk?= =?utf-8?B?azJNRkUzNGpqcXMrTCtLNW43YVI5Zm9UUy9tWUloTk04RHVNS0Jsa09OekJW?= =?utf-8?B?MjZpMVF2RHdYeGhac0pqQnQyZTNib1N1YkUrSHNkZ0poSGdNYkswMkt3R3FZ?= =?utf-8?B?c0NSclZzUjlqai9OVWZRSEVNRDdsMkFKSDJOWFpHR0NQTFhnN3dHTmZDcS9Q?= =?utf-8?B?b20vYXRKU2JPZUtlNzVVRGl3K215TnR1d1dxMDhobEQvQVl2UlBiaS8xNG82?= =?utf-8?B?dU1NQnpQa1Z1U1N4ZnJUKzV1QTdtQWs0MzZNYjVsT0JabmxUb1k4NFlhWi9W?= =?utf-8?B?cUJmWFN0SkFsUHJ2NWRsMTcrS2RYeWlhSjl1bzBDYjFCR0lteE92U3dOcWtT?= =?utf-8?B?UE5MSTdXaHNTSlFlTkRIeko4MURWMFBVOFpyaXNKd0tYUkZjMTdZN3NFQzZE?= =?utf-8?B?Q2FIY0VDSmtCZC8xYlZwUkc4VUxOQ2s4SlNLZStVakVkWll0dGQ4TW9BUzk0?= =?utf-8?B?SFJaQ2ZnbG1iS0ZOa2ZJSW8rZlBoSEhGdW5HdFM5R0FBZFdFbWtjdGxxZTB3?= =?utf-8?B?TEJWdXJENmxhWmM0K21ha2hoeXNoL3hkWlhmRHhBM29jZTFmQ0NwNjBuU3Vw?= =?utf-8?B?R1ZzM3BZZ3g3dXdIdjh6NHY5WThUcW9QeDhPSkZ3ZG03MEZhYUZjS21aUVBx?= =?utf-8?B?bkFNUm5LMUg2YTgrcU5ZVjdOck9Ic1orcThHK21zYkt1bm5oTXZYS0szbjNB?= =?utf-8?B?UFRsV2FNMG9vejBGKy9NZk5pblo2TUZWbEw5Yk91TzAwMEQvcmU2KzAyWHp3?= =?utf-8?B?SHlqVlkzTFJyMVFXamtEdWVHcUtvM2pjY0JXazBteWs3SU4rMngvdGNJSGhH?= =?utf-8?B?WlN2eFpGUG9IZUdlYWRTTVZXdjM0OGM2OHg1OUxwN2pSeVNzVlMvdGlvNmZz?= =?utf-8?B?bW9CUUhTeXlBejRMZ21lRDQ4N1R6RUwybmpibHpLbTc4aW5NK0RLK3VYSzMz?= =?utf-8?B?SGlGZHorNUdzR0w3VzRQMXBOa1prNGswWnl5b2s5ZkpQV3lxQ2FYRlFqeE1h?= =?utf-8?B?RTFkSHk0cExhQTlMVDNtekp0aGVDL1dpdXNPS0RsWXZoR0RsUC8wd0RCeCt1?= =?utf-8?B?M0VhWXhpTUY3dE9MbEJRcWFDSVBIRDF4b1NROVRhUWplN2M3TmtjaTlTMEVI?= =?utf-8?B?eVFQaFJEc1phQWFkYnNkcStMZTdjcFZZcTkraVVXeExHb09XcEZSdTlqdVZm?= =?utf-8?B?SUJRNnNqMzJhNFk4QndSNUttdzY4ZTRLNlpRUG0wUXlXT0kzTmJ6VlpNUU1v?= =?utf-8?B?TFlyWVpoQ0FDeFRGODJjS01WOStaRFlPMGFtZ0tneEhMZEJ3eVIvM2VDeExR?= =?utf-8?B?NzNIZHdNZk9TNTYvWTBkdnNVNmQzT0FZbGJ1UWtJRnA5b1YwWFpOUzVzVGEw?= =?utf-8?B?VUp5S0NjeTAxVmZFRC9LaGdOR3k3NWwreUF6RmZuWUpLL0ZtOEYzdEhFVm1E?= =?utf-8?B?ckxZWW04L0lpblhEMjQ5OXM5dlRvOEN3R3RIdlV5SkZYTFVhQS9oYXpEcGVv?= =?utf-8?B?L1hpT3JsdjdlMVRiaDBTeC9vTHlTQ0lYNU5GWis4SmgzdldqcVVJdEVGa0Y1?= =?utf-8?B?TUdnWVIvd0dhRzdiMEx0U2UzZG9jaUVCQzk1di92M1U5NmFHaDhDbGhEQ25L?= =?utf-8?B?eGQ1YnhEa1FvSnpOYjhTMndTejZpNGg0WmlkK1hZN2luWDl4RU1VNDcyVVJO?= =?utf-8?B?YUZ0VGxvU2FLeThWMnVYc0VHcE5EMlNSOG1pNmxuQ1F3dXErYlc1ODkvRkpR?= =?utf-8?B?cnQweEsrbU5CcjNYNWExVDk3Mkl3d1ZGc0RIdURXcXFxSS9wNUlkUzJVWUxz?= =?utf-8?B?SFVsaXFBTXN1dllCdWtQUXh5L3N4bzJRcFlZNDFkQXg4NDhlVGZNUzZqVkc5?= =?utf-8?B?aEk0REU4NXk4TlpONHZ2L3ZQREc5dlpJZVJhcVlzenh2WW9QMEJVbjZ3RUxv?= =?utf-8?B?MUI3NHVJK2lvSUR0QUVwMGR2aGFBYVJmVUJzZ3pETjJHZ3ZseXpkVFU5L1pV?= =?utf-8?B?WkpJOVBhZzVZWllYYlVieWpKbnA2bWM2U0o2RVludkRiRUhNNlE5UT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 291771cf-3cd0-428b-6e85-08de63dd45e3 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8829.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2026 11:05:14.6133 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: eHJDDcwJLsqE3+JFV3/Jcy3u0dX2dBMnoNcR3vifEAsx8rkA9x3Etl4VGkz8jd56umJgtO9mP3hxuxEPxruf7A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR04MB11303 The current design assumes that the controller remains powered when wakeup is enabled. However, some SoCs provide wakeup capability even when the controller itself is powered down, using separate dedicated wakeup logic. This allows additional power savings, but requires the controller to be fully re=E2=80=91initialized after system resume. To support these SoCs, introduce a flag needs_full_reinit for the purpose. And the glue layer needs to indicate if the controller needs this behavior by setting a flag core_may_lose_power in dwc3_properties. Signed-off-by: Xu Yang --- Changes in v2: - put core_may_lose_power into dwc3_properties and check it in dwc3_get_software_properties() - rename may_lose_power to needs_full_reinit --- drivers/usb/dwc3/core.c | 9 +++++++-- drivers/usb/dwc3/core.h | 3 +++ drivers/usb/dwc3/glue.h | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index c07ffe82c85049364c38c7ba152aab0ff764d95e..c5e0a1705b6f5117e1961b45d96= a42c95c5ad421 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -1675,6 +1675,9 @@ static void dwc3_get_software_properties(struct dwc3 = *dwc, u16 gsbuscfg0_reqinfo; int ret; =20 + if (properties->core_may_lose_power) + dwc->needs_full_reinit =3D true; + dwc->gsbuscfg0_reqinfo =3D DWC3_GSBUSCFG0_REQINFO_UNSPECIFIED; =20 if (properties->gsbuscfg0_reqinfo !=3D @@ -2462,7 +2465,8 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_m= essage_t msg) dwc3_core_exit(dwc); break; case DWC3_GCTL_PRTCAP_HOST: - if (!PMSG_IS_AUTO(msg) && !device_may_wakeup(dwc->dev)) { + if (!PMSG_IS_AUTO(msg) && + (!device_may_wakeup(dwc->dev) || dwc->needs_full_reinit)) { dwc3_core_exit(dwc); break; } @@ -2525,7 +2529,8 @@ static int dwc3_resume_common(struct dwc3 *dwc, pm_me= ssage_t msg) dwc3_gadget_resume(dwc); break; case DWC3_GCTL_PRTCAP_HOST: - if (!PMSG_IS_AUTO(msg) && !device_may_wakeup(dwc->dev)) { + if (!PMSG_IS_AUTO(msg) && + (!device_may_wakeup(dwc->dev) || dwc->needs_full_reinit)) { ret =3D dwc3_core_init_for_resume(dwc); if (ret) return ret; diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index 08cc6f2b5c23631a752c77fd7394e5876c929f0a..01d92d680ba4ab9c85deaef39a8= f55a6c95c3593 100644 --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h @@ -1117,6 +1117,8 @@ struct dwc3_glue_ops { * @usb3_lpm_capable: set if hadrware supports Link Power Management * @usb2_lpm_disable: set to disable usb2 lpm for host * @usb2_gadget_lpm_disable: set to disable usb2 lpm for gadget + * @needs_full_reinit: set to indicate the core may lose power and need fu= ll + initialization during system pm * @disable_scramble_quirk: set if we enable the disable scramble quirk * @u2exit_lfps_quirk: set if we enable u2exit lfps quirk * @u2ss_inp3_quirk: set if we enable P3 OK for U2/SS Inactive quirk @@ -1369,6 +1371,7 @@ struct dwc3 { unsigned usb3_lpm_capable:1; unsigned usb2_lpm_disable:1; unsigned usb2_gadget_lpm_disable:1; + unsigned needs_full_reinit:1; =20 unsigned disable_scramble_quirk:1; unsigned u2exit_lfps_quirk:1; diff --git a/drivers/usb/dwc3/glue.h b/drivers/usb/dwc3/glue.h index df86e14cb706ca509206677f644da2a7225b1b26..d4ea635c92fb6045ee1e9064db9= 53105d5b1f7a6 100644 --- a/drivers/usb/dwc3/glue.h +++ b/drivers/usb/dwc3/glue.h @@ -12,9 +12,12 @@ /** * dwc3_properties: DWC3 core properties * @gsbuscfg0_reqinfo: Value to be programmed in the GSBUSCFG0.REQINFO fie= ld + * @core_may_lose_power: indicate the controller may not remain power duri= ng + * system pm */ struct dwc3_properties { u32 gsbuscfg0_reqinfo; + bool core_may_lose_power; }; =20 #define DWC3_DEFAULT_PROPERTIES ((struct dwc3_properties){ \ --=20 2.34.1 From nobody Sun Feb 8 23:26:41 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013019.outbound.protection.outlook.com [40.107.162.19]) (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 EA8233E8C66; Wed, 4 Feb 2026 11:05:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.19 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770203129; cv=fail; b=SilbuXOBb6kaYklr+kVM1bI+3nhcz9WX1DvZk3t4b+Mz/HUkaPffCs/1PtxYQYjnVybXm1UJwIWfGySFmFHJSWzeWZCjsn7PeDLQAEgrrbUu37pjzRLuzHZELYBX0io2qxIO7U2CXdBwgsXm5pkj1jXjatWVDBHj5EjTX8EED6w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770203129; c=relaxed/simple; bh=3+PXuM6phdsbIfffq4RPjwv2H/1YnHZDeTiasz7litU=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=TtLhXLS8TeiivNsVO5fGk1p4l7ICiUIkmyWlbHdtP/JwLTWJrrWIJ5We6raql5tzGtrcvagUr9DzuatNocdcgylJMVdry3JQnSsnP35FrKApP3/F3cDX5fHUC5b0olD9OLvzciPYiDYvUqhCJeF9zy/MC1Ta3nfXRFXnRDmp9XY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=WW7SmPVx; arc=fail smtp.client-ip=40.107.162.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="WW7SmPVx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=syj7fWWZas31dwVh5BzPBrYidzVQNdd4F9rXsye1nzk65GJco0CwbRhEUlR0LTQRJMgSLMvRKwIAXX+WduFoDxuNtbNG4uFXWLWITMwumXsl14VNaeFatE3hJGy/g0tLC5L0UTVHUXCrhoUNaZr8Wtbdxw84BWSmi9jmLrZaSPYBVzluWS2TuE2+0GARSybMiIiSnJZ7e4yMPLyApZ/2UBOzWcEqw7ZOX7UC7rw3RvZ5H/F4Nf81jzLwnnA6Xc/IY7SAt+ZqPipGWCvLrXnekjSVKJuKNuNNX/3PRAVX6anYCi4FA4mhhx+DQ53+UrBXGCS/E4GmPyh8hf0YbsL6VQ== 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=lv0BSmv+3pshiotSAwMKsk8HyHM/SAVlrXKt2KNYUrQ=; b=E3IHftIlTuQ5FbEkinHQSJiEWnb7yQjHnE/eb2xYyrpVJtBheM3ZfrXD9GnLsk6x9yOKY3Xj+KTLpGQvshnnLNDDDmj7+yGmf81jIZhonHxMybHQRkf83tV10qHjWKOAnRXsMb9xM+tWfbFxMH4sdm3S9rjpkmJwdUM3CEg6781o78LGIY/2kAE4NCrF9aBczTOuXK4Mk9jfPuqR3WG5ju/fJBOjYGe1HvTKRzFj/qk03Vnk0Tn76q6hqe1jWDb5LQAojix5DX3ZD/IPno49DvpljF+ZbsB575gesruFsQ/sZ59/fUX+wPZr/dc2s8oVndUdE9qlhDO1T3IKKnAP1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lv0BSmv+3pshiotSAwMKsk8HyHM/SAVlrXKt2KNYUrQ=; b=WW7SmPVxP0wT+RBkvNrS6P+lXRrg0oGFRHop3ZwRhB1oUOUHyjWs2XzdCt3HE7r54H4AtSy4HEAurULd1i8X8viHjNhRiHB0GOVsT90NdKzaF5qvr0DeLVcYaK8JGkoEOfh+jq4M9g43AdmJ2uhB/sLLMT0f6q4A0lvCKGX9Yl+RCr14cYnKHbpC9fYZFR4HzLglgwGO37GfvvXcu8SZ+iT7/e6HvcgoEFczk+J+ovi2hdus4acwk3rRfkHfw0OAaku2r7LvhLPrzYLmeVy8E7r+q0blSC+Hqh8nHl1smXrl6KBTjYx6gQyWZSmPJAgCTENuJbqtGv0mgnJLq11hbw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8829.eurprd04.prod.outlook.com (2603:10a6:102:20c::17) by GV2PR04MB11303.eurprd04.prod.outlook.com (2603:10a6:150:2a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.16; Wed, 4 Feb 2026 11:05:19 +0000 Received: from PAXPR04MB8829.eurprd04.prod.outlook.com ([fe80::52de:f9c9:8c2e:7dd5]) by PAXPR04MB8829.eurprd04.prod.outlook.com ([fe80::52de:f9c9:8c2e:7dd5%5]) with mapi id 15.20.9587.010; Wed, 4 Feb 2026 11:05:19 +0000 From: Xu Yang Date: Wed, 04 Feb 2026 19:06:18 +0800 Subject: [PATCH v2 3/3] usb: dwc3: introduce flatten model driver of i.MX Soc Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260204-add-flatten-dts-based-dwc3-imx-driver-v2-3-d2c9b5a58c01@nxp.com> References: <20260204-add-flatten-dts-based-dwc3-imx-driver-v2-0-d2c9b5a58c01@nxp.com> In-Reply-To: <20260204-add-flatten-dts-based-dwc3-imx-driver-v2-0-d2c9b5a58c01@nxp.com> To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Frank Li , Li Jun , Thinh Nguyen Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Xu Yang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1770203208; l=14727; i=xu.yang_2@nxp.com; s=20250815; h=from:subject:message-id; bh=3+PXuM6phdsbIfffq4RPjwv2H/1YnHZDeTiasz7litU=; b=EmWt18NLPtWhQXmzg0AmvK4pOydSj2isovs7EgPVO9kmnd0SlEc0yGpy6kx5/ce8k2k7EK2J7 C4BpikN7OGQBZdvtN5f1XZnaGJ9R3sog5RivT8Jwf/KoT3lYul8sySU X-Developer-Key: i=xu.yang_2@nxp.com; a=ed25519; pk=5c2HwftfKxFlMJboUe40+xawMtfnp5F8iEiv5CiKS+4= X-ClientProxiedBy: SG2P153CA0030.APCP153.PROD.OUTLOOK.COM (2603:1096:4:c7::17) To PAXPR04MB8829.eurprd04.prod.outlook.com (2603:10a6:102:20c::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8829:EE_|GV2PR04MB11303:EE_ X-MS-Office365-Filtering-Correlation-Id: fbc1689b-5df9-427a-3e47-08de63dd48ca X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|1800799024|19092799006|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?YTFkTUVlTHNVNE9ZdFpoL09hbEJmcURjandxWTVmbk1oT0FHTnRJd0dSS3hC?= =?utf-8?B?YnA4ZEFPZmd2cjJTMGRUekJuMkY1SFMzemQwSE1La1h1NFlCVjY0VUgvM25l?= =?utf-8?B?WGR0V1Nxd2hzSlp3a2Y1OHA4TDFaZjhMVzlZRnNDVjc4YjJhMkNiSG9uazNB?= =?utf-8?B?cjlEQWszVU13OVU3d0taQmpMUnBwS2Y0TVZtSEEzWnRhS3d2SS9raGthV3JH?= =?utf-8?B?V3F4SFhhWDJnTXFkWU1xYWw1b1lQUmUyaUV6RVVYVVhmamIwalNBeW1PNFAv?= =?utf-8?B?MlFqdmUzOXcvYlRLQldIUnRjVXhEQU1YV1VnNkJiaGEwUDFKbU9RZ1FIWkU0?= =?utf-8?B?UEtZWTNrdDhvOVYwcmcwa20vMFFnZ09aaE9UZ1hLcTkvaHJlN1dPYXNOWDVL?= =?utf-8?B?V1MyNnNtZ1NFUU0rVWYxY1FCVGpvaHMrYjdxMVpWenJWd2V6S2F0OEMzTlJQ?= =?utf-8?B?RlNCU1FBaFZSZytHWERSRU5HdnllWVBzMUs2VU14OUxWTHkyaUo5OExoZnBS?= =?utf-8?B?bmJqM1NwMnIzVHpOL0pJSWVyL0M2QU51aHRBczBRZVBpYlVocEhUUTRWWnFk?= =?utf-8?B?d002bWgrNGVRVU12WWtERkhuU2xJL2dIcnFqODdXRXRRWStoSnFweUhnZE5Y?= =?utf-8?B?ZHFybUZzZWJvdjZvYUoybW92ZzlUN3hJNlArMk5mOWtWQjZvN1VubjRpZUNa?= =?utf-8?B?NUNhU2RmQ0prcG5OSkZjTEpORnlybHFpWUdtREVaZ1FUQmFEdTdmbEg3a08r?= =?utf-8?B?QW8raERZVWNuVDlTcTVmN1JtdzhoUDBtdWhJZEdhT2xoU2JrQ3RncUQ5Zm4v?= =?utf-8?B?YlFLR0tiVkxvMGMxUitJaHd0ZytKU1c2OVZxN05Zb25ZWmx4YzQ2R2FHdE1O?= =?utf-8?B?TklYSlVwT05Za3dpODdCUTlZVGloSndUbHBxSW82QTlUZmN1c1ZHNWk0ci8v?= =?utf-8?B?ZFlNVG00aFFKWmk2NjBkZDJjcXZNMjZVQklqSytLaXpvdDRIU2NraEE2S1Zj?= =?utf-8?B?Z0J0ZEEzRnVaZ0FuK05aeFIrS213SERoQ1JUTkFrelA2VmNtMEl1dVhlYjhJ?= =?utf-8?B?TElHVzc3a3B4dnpaMlVVL2E5cVVjM1FSY1A2ZUhxZEhCSDN5L2tKc05mUTJJ?= =?utf-8?B?Y25WVjdKb0wvR0VIQkVpSWRzY3lGczRvZVQyWjk4TVZjOEpUVnRldzlZRFJj?= =?utf-8?B?TThmT0xaWVJXZUZmZmh6Zk4vK3NZMjZFM2E5d09jV3hNckN0Q2dTNXArL0tv?= =?utf-8?B?Q2RnaUVidkJGVUd2a2FkYnR6NW1YUUpKeVNSditBaWx2a0drSVJDNHNzMTly?= =?utf-8?B?bmJ3V3crem1GNVhmTjVtaWdiQlZiYWhoVUJ4bitsS2ltQ05WVUhRSjkyaXMv?= =?utf-8?B?TGwzNzNscjdHTEtUcjhlUDBaMldaMjlDNnQyZ29CdUJaRHVwaG1Wcnd4eFZN?= =?utf-8?B?ODNCOXlNNFdGRTUxSW9KdjNFYWsxVWtBK01UendDcUt6Q2krRXFTb1VKUFBj?= =?utf-8?B?aXhxYVY3bXFtcHVoZGU1dEpmejA2blZOcDNrOEF2QXlmRHZHWWpzWFZLODIy?= =?utf-8?B?NEVXN2hNcXUzN3hZK0NwOXFZWEZTL1lwZW5jQkp5Z25kc1gxVlRiLzdobWhw?= =?utf-8?B?TjFPM1F2ajQ0cEx1RWFrT0JxdkVWR0NOem9kUUdkRlNsalBjTHVpUHg2QUh0?= =?utf-8?B?N29PVENCTThzaDYxcTMxbURVbUVLZ2M3RHVySFpNYjQwYU5IV1YwZ1BYdjl1?= =?utf-8?B?djRlZUhKUkdIL0c1bG11aWswVDJMQlA0Y1hqZ3BrRG93bnoybTFaVGovNU9S?= =?utf-8?B?UUtBdlRKakFzanl6V01pUU1iVjdzSTMvWFVaL3FqRm9NZ2lPWU5IVUh2VzFS?= =?utf-8?B?N0VmcnFrcTBrdXkrN29IcitUV2ptelRhTUhwbDRRZ3BiNlhTenB2ZEFEUVcx?= =?utf-8?B?ckIrYjgzZmdGU0NPajVHMWd6dFpSU21iZGxLVEZoa29KMmlwR1J0ZDU2SGxB?= =?utf-8?B?Um1FKzE3ZTY4bitpYzBuYUwvYk1ncGFsVEVDQTRFOVJGUWpOb3J5ek1qazNp?= =?utf-8?B?Yk9kNlBpTVhIUWF1cmtLTnlERFVZZ21UN1VSaXZNR0QzeStQMlFZazFxMzFt?= =?utf-8?B?VC9UN3paeE9QR1JDbHh0aDdKNlpxMEs4MjdYZDVXWVJSbkd1bWxXMlRxQUUx?= =?utf-8?Q?Tz3Y83wyQpvQ9EDxwfEULHL6MPCMX6YeeccSht1KitDm?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8829.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(7416014)(376014)(1800799024)(19092799006)(366016)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dDFncnZ2SGs0QkRMaVVyUzVrd3BHaWRhaThMem4zUmtnUEF6Sk54enBYS01n?= =?utf-8?B?bGR5ZmNJU0l5UDFLcmpNai9hck5peCt2YXFIYVdla3N5cVZyUXpnVURsaGhy?= =?utf-8?B?NUl5MEIzNEpQc2pjZTNjQTV3bC9rTVROb1luSzMvTHl4Umd1RXMxWkF2Witz?= =?utf-8?B?Zmd5ZWNNWlBMOHNpTis2YTZ4SnMwWmYwdTRTbmJJWWd6eWZKRUhoTzdpL1Nx?= =?utf-8?B?ZVhsQVVHRGJLSUtIc1prT2gzeFVTN0FySEhpRjVXNmUyaUNCVHZ1QUpsRUJ0?= =?utf-8?B?UHJzSUYxdzU2bGVTVUY2NFhFRmlORmROVm4yZGtBMnF4OFZGYWE4cWp6czJR?= =?utf-8?B?czNuLzlTRTBoSDhDelhGZmNCaEdINkVYeDU0MDUrR05pY1Npazg2S3R6dmxS?= =?utf-8?B?ZjUvQzJWc1JEWlBMV0NTRE54Tiszd1A4Qi9nVzBFcEJIYnVDdWdhMkRLaWFC?= =?utf-8?B?RDI4VStLM28vOHY3Z3dLQlRpQ1BUQ0N1VXdMK1RxWTJHVDBhY25Sc1NtSXMx?= =?utf-8?B?ZkEyOGVJYlBHWDlIbkVTemZOdlNCMXFtRTcyWUlYUEloSTczS2wrWmZqNnBG?= =?utf-8?B?S3lyMjVYb0RLN2NyYTAyckRmTVlqd0l4N2c0bHFDU3hyM21tKyt0V0dDUnFL?= =?utf-8?B?ZXlHbkFvWGx4NUdydWdxV3F3UFQ2aUo3MmNORW5qelZ2Y1VHNEFQOGJ6cGdw?= =?utf-8?B?QThZcnZXenFzM0RZK1Z5eTVFUUpvdStRdjFvaWNmN2Z6bEMxVTkveXdPTkRU?= =?utf-8?B?QXgrQ01JeVlLZ2JVcE5EVjlWSzkvUDE2VEd1eG5QVGMzYmphNllveVlLZXlR?= =?utf-8?B?ZEhENWJTZVd4OXhOS2JrQ0I4WENIcFptQlBJdEJCSUQyRVpZa0ZqR3R5VStH?= =?utf-8?B?OEVtWGplZXlGY2tpc1RWMXVXdkp3SjdXb3NnUUlnZk45a0pQTWo4OGRsOFJY?= =?utf-8?B?ZG5sUEh3aWNmTURMcU05aHQ5aTJ6UUxiUVc2S2VHRnUwY0xZdVNxVjd4OTVz?= =?utf-8?B?eW1sUFhDa2VKSGUxdzJ2VHpJdmF0OUpqSkZ2enhXYkhaNTJjdmRzL01jRkpl?= =?utf-8?B?LzNnOCtzNzZVendLOHNERm10aExRKzY5dmIwb3BPNVV4clJsbFh0Ly9tT3M4?= =?utf-8?B?dTBFbSs3LzNuUG11NjdFK2JyVUdWM0NESlg4NDdxUFdJNFZmeDAwd21QWUlI?= =?utf-8?B?YjF1MXZkWmYwbk9ma0QzbE1UZWVNb3VYTUs3bUpRMzh3WWRWSWJyWXMzNk1W?= =?utf-8?B?STQ0TGNGR1RGemhvMzJsVG9uZHhnVS9ud0VVbEFPamFmcm1IbXJPaHd3QjZR?= =?utf-8?B?eE5VZjcwTjltVDdRKzZHNkZaQVZMQ0FibFJsRkVSdmpEYkx0S05aYnljamR5?= =?utf-8?B?bTI4ZWsxVktMRytmQldMOFVzcDV5T2JGd3JmWU12OUVBTVJhcDQ1TzN0WmxJ?= =?utf-8?B?eVhXMk1ZMGlyWHBSbWlyR2JhU2FValB4MDZRSXBPRnh4OUxMYnNZNFB1QXlB?= =?utf-8?B?YXhJRzZKR01uOCtLZ3dnZ1dPVGFmYk56aXlIOUREN2xoNWx2UFFBK0xqNjVq?= =?utf-8?B?K3pwandGSE8yYWx3anV4anZObTdtM1lPNGJ4aE1TQkg0T05UYkh1N3JFZU1B?= =?utf-8?B?aVZvaXFaNTN1Um9PUlVQVDR5ZUdtL1p6L3VFcnBSMzRJUTV1ZFR3V1NiRGZW?= =?utf-8?B?NTdPZ1J1YW9YT05hcVZaWjR6VzRjeDc0UzRTZ2RaVUZBV3RkUVFxZ00rR0NV?= =?utf-8?B?Q0hNWWZwb21jN1l3VncvRzNVMU1TQVpLWnJpaGRNUlU3NHRDVWxrNjVGTWJh?= =?utf-8?B?aEpmcVRTYmxORFM1VWgveFlGVXQzMVRjM1dLSml5VUVMKzBFaU1PTU1LYytw?= =?utf-8?B?NnJheWViMmVTQkRRSldXR2FxTE02R29ZVHdpKzVGSWQrV2p5S2NqOEw4ejB0?= =?utf-8?B?MEE2RDFwMDJHUHVEWHRONXlCSFQ2c0pMYVphRytJRU9EUHBoTi8vaExnYUNt?= =?utf-8?B?RGhNZVNFUWEyemNEaVpQRlc5bXVZTGQ0OUtEeHlwT2FXUzBIaTVuZGI2WlAw?= =?utf-8?B?TWhhUXhDS2M3eWd0emVldVJBWFZ1ZHYrdmlDa09OT2p5MUJGMHJIOUNrVGtw?= =?utf-8?B?cExiZmswT24zL3huL09kN3A1VGxsalRwNFlQbnQ0WWNxQlVuZDJzV2d4bGlF?= =?utf-8?B?VFovYzlkcldGQjVKMXY3anZNeHBjaDJqSngxZUt3RFl4Y08wMnQ3ZnJ3QzFP?= =?utf-8?B?SDZBRnorMHg2cGpVUDVVNVZ4UWo1QXVuZmMxb0xXd0VBeFMxVHQ5OG84R0FG?= =?utf-8?B?YmFJM1IrT1VJcjh6V3o1VkkxZThOZjdqNTY5cFBWMitkTVpXcUNodz09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: fbc1689b-5df9-427a-3e47-08de63dd48ca X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8829.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2026 11:05:19.4610 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0+flr0oyuTR9gQzdB6Ra0ok0DN0GFnHkzJEiT3FQmBHagc+nNWrV7/MpIT54c40nveuyy7D7lLFdqfZo5BcMxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR04MB11303 The i.MX USB glue and DWC3 core are closely coupled. Describe the i.MX USB block in a single block will bring more benefits than a parent- child relation. To support the flatten model devicetree, DWC3 USB core driver already support to directly register and initialize the core in glue layer using one device. And many notification can be received in glue layer timely and proper actions can be executed accordingly. To align with mainstream, introduce a new driver to support flatten dwc3 devicetree model for i.MX Soc. Besides this driver disabling wakeup irq when system is active, no other function change in this version compared to dwc3-imx8mp.c Signed-off-by: Xu Yang --- Changes in v2: - improve commit message - fix code style - add IRQF_NO_AUTOEN - remove pm_runtime_* in dwc3_imx_remove(), dwc3_core_remove() will do that --- drivers/usb/dwc3/Kconfig | 12 ++ drivers/usb/dwc3/Makefile | 1 + drivers/usb/dwc3/dwc3-imx.c | 430 ++++++++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 443 insertions(+) diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig index 240b15bc52cbd5d5c9d08d9fddd8c63202de1a3c..18169727a413ee72405a89f477e= 4da16946e1764 100644 --- a/drivers/usb/dwc3/Kconfig +++ b/drivers/usb/dwc3/Kconfig @@ -150,6 +150,18 @@ config USB_DWC3_IMX8MP functionality. Say 'Y' or 'M' if you have one such device. =20 +config USB_DWC3_IMX + tristate "NXP iMX Platform" + depends on OF && COMMON_CLK + depends on (ARCH_MXC && ARM64) || COMPILE_TEST + default USB_DWC3 + help + NXP iMX SoC use DesignWare Core IP for USB2/3 + functionality. + This driver also handles the wakeup feature outside + of DesignWare Core. + Say 'Y' or 'M' if you have one such device. + config USB_DWC3_XILINX tristate "Xilinx Platforms" depends on (ARCH_ZYNQMP || COMPILE_TEST) && OF diff --git a/drivers/usb/dwc3/Makefile b/drivers/usb/dwc3/Makefile index 073bef5309b5b5d381c8c4690221091b4df7904a..f37971197203e1379d554da9d60= 860360ea9c3fe 100644 --- a/drivers/usb/dwc3/Makefile +++ b/drivers/usb/dwc3/Makefile @@ -55,6 +55,7 @@ obj-$(CONFIG_USB_DWC3_ST) +=3D dwc3-st.o obj-$(CONFIG_USB_DWC3_QCOM) +=3D dwc3-qcom.o obj-$(CONFIG_USB_DWC3_QCOM) +=3D dwc3-qcom-legacy.o obj-$(CONFIG_USB_DWC3_IMX8MP) +=3D dwc3-imx8mp.o +obj-$(CONFIG_USB_DWC3_IMX) +=3D dwc3-imx.o obj-$(CONFIG_USB_DWC3_XILINX) +=3D dwc3-xilinx.o obj-$(CONFIG_USB_DWC3_OCTEON) +=3D dwc3-octeon.o obj-$(CONFIG_USB_DWC3_RTK) +=3D dwc3-rtk.o diff --git a/drivers/usb/dwc3/dwc3-imx.c b/drivers/usb/dwc3/dwc3-imx.c new file mode 100644 index 0000000000000000000000000000000000000000..404ab644ff86dc103114862232c= 47e5c3f75c8ef --- /dev/null +++ b/drivers/usb/dwc3/dwc3-imx.c @@ -0,0 +1,430 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * dwc3-imx.c - NXP i.MX Soc USB3 Specific Glue layer + * + * Copyright 2026 NXP + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "core.h" +#include "glue.h" + +/* USB wakeup registers */ +#define USB_WAKEUP_CTRL 0x00 + +/* Global wakeup interrupt enable, also used to clear interrupt */ +#define USB_WAKEUP_EN BIT(31) +/* Wakeup from connect or disconnect, only for superspeed */ +#define USB_WAKEUP_SS_CONN BIT(5) +/* 0 select vbus_valid, 1 select sessvld */ +#define USB_WAKEUP_VBUS_SRC_SESS_VAL BIT(4) +/* Enable signal for wake up from u3 state */ +#define USB_WAKEUP_U3_EN BIT(3) +/* Enable signal for wake up from id change */ +#define USB_WAKEUP_ID_EN BIT(2) +/* Enable signal for wake up from vbus change */ +#define USB_WAKEUP_VBUS_EN BIT(1) +/* Enable signal for wake up from dp/dm change */ +#define USB_WAKEUP_DPDM_EN BIT(0) + +#define USB_WAKEUP_EN_MASK GENMASK(5, 0) + +/* USB glue registers */ +#define USB_CTRL0 0x00 +#define USB_CTRL1 0x04 + +#define USB_CTRL0_PORTPWR_EN BIT(12) /* 1 - PPC enabled (default) */ +#define USB_CTRL0_USB3_FIXED BIT(22) /* 1 - USB3 permanent attached */ +#define USB_CTRL0_USB2_FIXED BIT(23) /* 1 - USB2 permanent attached */ + +#define USB_CTRL1_OC_POLARITY BIT(16) /* 0 - HIGH / 1 - LOW */ +#define USB_CTRL1_PWR_POLARITY BIT(17) /* 0 - HIGH / 1 - LOW */ + +struct dwc3_imx { + struct dwc3 dwc; + struct device *dev; + void __iomem *blkctl_base; + void __iomem *glue_base; + struct clk *hsio_clk; + struct clk *suspend_clk; + int irq; + bool pm_suspended; + bool wakeup_pending; +}; + +#define to_dwc3_imx(d) container_of((d), struct dwc3_imx, dwc) + +static void dwc3_imx_configure_glue(struct dwc3_imx *dwc_imx) +{ + struct device *dev =3D dwc_imx->dev; + u32 value; + + if (!dwc_imx->glue_base) + return; + + value =3D readl(dwc_imx->glue_base + USB_CTRL0); + + if (device_property_read_bool(dev, "fsl,permanently-attached")) + value |=3D USB_CTRL0_USB2_FIXED | USB_CTRL0_USB3_FIXED; + else + value &=3D ~(USB_CTRL0_USB2_FIXED | USB_CTRL0_USB3_FIXED); + + if (device_property_read_bool(dev, "fsl,disable-port-power-control")) + value &=3D ~USB_CTRL0_PORTPWR_EN; + else + value |=3D USB_CTRL0_PORTPWR_EN; + + writel(value, dwc_imx->glue_base + USB_CTRL0); + + value =3D readl(dwc_imx->glue_base + USB_CTRL1); + if (device_property_read_bool(dev, "fsl,over-current-active-low")) + value |=3D USB_CTRL1_OC_POLARITY; + else + value &=3D ~USB_CTRL1_OC_POLARITY; + + if (device_property_read_bool(dev, "fsl,power-active-low")) + value |=3D USB_CTRL1_PWR_POLARITY; + else + value &=3D ~USB_CTRL1_PWR_POLARITY; + + writel(value, dwc_imx->glue_base + USB_CTRL1); +} + +static void dwc3_imx_wakeup_enable(struct dwc3_imx *dwc_imx, pm_message_t = msg) +{ + struct dwc3 *dwc =3D &dwc_imx->dwc; + u32 val; + + val =3D readl(dwc_imx->blkctl_base + USB_WAKEUP_CTRL); + + if (dwc->current_dr_role =3D=3D DWC3_GCTL_PRTCAP_HOST && dwc->xhci) { + val |=3D USB_WAKEUP_EN | USB_WAKEUP_DPDM_EN; + if (PMSG_IS_AUTO(msg)) + val |=3D USB_WAKEUP_SS_CONN | USB_WAKEUP_U3_EN; + } else { + val |=3D USB_WAKEUP_EN | USB_WAKEUP_VBUS_EN | + USB_WAKEUP_VBUS_SRC_SESS_VAL; + } + + writel(val, dwc_imx->blkctl_base + USB_WAKEUP_CTRL); +} + +static void dwc3_imx_wakeup_disable(struct dwc3_imx *dwc_imx) +{ + u32 val; + + val =3D readl(dwc_imx->blkctl_base + USB_WAKEUP_CTRL); + val &=3D ~(USB_WAKEUP_EN | USB_WAKEUP_EN_MASK); + writel(val, dwc_imx->blkctl_base + USB_WAKEUP_CTRL); +} + +static irqreturn_t dwc3_imx_interrupt(int irq, void *data) +{ + struct dwc3_imx *dwc_imx =3D data; + struct dwc3 *dwc =3D &dwc_imx->dwc; + + if (!dwc_imx->pm_suspended) + return IRQ_HANDLED; + + disable_irq_nosync(dwc_imx->irq); + dwc_imx->wakeup_pending =3D true; + + if (dwc->current_dr_role =3D=3D DWC3_GCTL_PRTCAP_HOST && dwc->xhci) + pm_runtime_resume(&dwc->xhci->dev); + else if (dwc->current_dr_role =3D=3D DWC3_GCTL_PRTCAP_DEVICE) + pm_runtime_get(dwc->dev); + + return IRQ_HANDLED; +} + +static void dwc3_imx_pre_set_role(struct dwc3 *dwc, enum usb_role role) +{ + if (role =3D=3D USB_ROLE_HOST) + /* + * For xhci host, we need disable dwc core auto + * suspend, because during this auto suspend delay(5s), + * xhci host RUN_STOP is cleared and wakeup is not + * enabled, if device is inserted, xhci host can't + * response the connection. + */ + pm_runtime_dont_use_autosuspend(dwc->dev); + else + pm_runtime_use_autosuspend(dwc->dev); +} + +static struct dwc3_glue_ops dwc3_imx_glue_ops =3D { + .pre_set_role =3D dwc3_imx_pre_set_role, +}; + +static const struct property_entry dwc3_imx_properties[] =3D { + PROPERTY_ENTRY_BOOL("xhci-missing-cas-quirk"), + PROPERTY_ENTRY_BOOL("xhci-skip-phy-init-quirk"), + {}, +}; + +static const struct software_node dwc3_imx_swnode =3D { + .properties =3D dwc3_imx_properties, +}; + +static int dwc3_imx_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct dwc3_imx *dwc_imx; + struct dwc3 *dwc; + struct resource *res; + const char *irq_name; + struct dwc3_probe_data probe_data =3D {}; + int ret, irq; + + dwc_imx =3D devm_kzalloc(dev, sizeof(*dwc_imx), GFP_KERNEL); + if (!dwc_imx) + return -ENOMEM; + + platform_set_drvdata(pdev, dwc_imx); + dwc_imx->dev =3D dev; + + dwc_imx->blkctl_base =3D devm_platform_ioremap_resource_byname(pdev, "blk= ctl"); + if (IS_ERR(dwc_imx->blkctl_base)) + return PTR_ERR(dwc_imx->blkctl_base); + + res =3D platform_get_resource_byname(pdev, IORESOURCE_MEM, "glue"); + if (!res) { + dev_warn(dev, "Base address for glue layer missing\n"); + } else { + dwc_imx->glue_base =3D devm_ioremap_resource(dev, res); + if (IS_ERR(dwc_imx->glue_base)) + return PTR_ERR(dwc_imx->glue_base); + } + + res =3D platform_get_resource_byname(pdev, IORESOURCE_MEM, "core"); + if (!res) + return dev_err_probe(dev, -ENODEV, "missing core memory resource\n"); + + dwc_imx->hsio_clk =3D devm_clk_get_enabled(dev, "hsio"); + if (IS_ERR(dwc_imx->hsio_clk)) + return dev_err_probe(dev, PTR_ERR(dwc_imx->hsio_clk), + "Failed to get hsio clk\n"); + + dwc_imx->suspend_clk =3D devm_clk_get_enabled(dev, "suspend"); + if (IS_ERR(dwc_imx->suspend_clk)) + return dev_err_probe(dev, PTR_ERR(dwc_imx->suspend_clk), + "Failed to get suspend clk\n"); + + irq =3D platform_get_irq_byname(pdev, "wakeup"); + if (irq < 0) + return irq; + dwc_imx->irq =3D irq; + + irq_name =3D devm_kasprintf(dev, GFP_KERNEL, "%s:wakeup", dev_name(dev)); + if (!irq_name) + return dev_err_probe(dev, -ENOMEM, "failed to create irq_name\n"); + + ret =3D devm_request_threaded_irq(dev, irq, NULL, dwc3_imx_interrupt, + IRQF_ONESHOT | IRQF_NO_AUTOEN, + irq_name, dwc_imx); + if (ret) + return dev_err_probe(dev, ret, "failed to request IRQ #%d\n", irq); + + ret =3D device_add_software_node(dev, &dwc3_imx_swnode); + if (ret) + return dev_err_probe(dev, ret, "failed to add software node\n"); + + dwc =3D &dwc_imx->dwc; + dwc->dev =3D dev; + dwc->glue_ops =3D &dwc3_imx_glue_ops; + + probe_data.res =3D res; + probe_data.dwc =3D dwc; + probe_data.properties =3D DWC3_DEFAULT_PROPERTIES; + probe_data.properties.core_may_lose_power =3D true; + + ret =3D dwc3_core_probe(&probe_data); + if (ret) { + device_remove_software_node(dev); + return ret; + } + + device_set_wakeup_capable(dev, true); + return 0; +} + +static void dwc3_imx_remove(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct dwc3 *dwc =3D dev_get_drvdata(dev); + + dwc3_core_remove(dwc); + device_remove_software_node(dev); +} + +static void dwc3_imx_suspend(struct dwc3_imx *dwc_imx, pm_message_t msg) +{ + if (PMSG_IS_AUTO(msg) || device_may_wakeup(dwc_imx->dev)) + dwc3_imx_wakeup_enable(dwc_imx, msg); + + enable_irq(dwc_imx->irq); + dwc_imx->pm_suspended =3D true; +} + +static void dwc3_imx_resume(struct dwc3_imx *dwc_imx, pm_message_t msg) +{ + struct dwc3 *dwc =3D &dwc_imx->dwc; + + dwc_imx->pm_suspended =3D false; + if (!dwc_imx->wakeup_pending) + disable_irq_nosync(dwc_imx->irq); + + dwc3_imx_wakeup_disable(dwc_imx); + + /* Upon power loss any previous configuration is lost, restore it */ + dwc3_imx_configure_glue(dwc_imx); + + if (dwc_imx->wakeup_pending) { + dwc_imx->wakeup_pending =3D false; + if (dwc->current_dr_role =3D=3D DWC3_GCTL_PRTCAP_DEVICE) + pm_runtime_put_autosuspend(dwc->dev); + else + /* + * Add wait for xhci switch from suspend + * clock to normal clock to detect connection. + */ + usleep_range(9000, 10000); + } +} + +static int dwc3_imx_runtime_suspend(struct device *dev) +{ + struct dwc3 *dwc =3D dev_get_drvdata(dev); + struct dwc3_imx *dwc_imx =3D to_dwc3_imx(dwc); + int ret; + + dev_dbg(dev, "at %s\n", __func__); + + ret =3D dwc3_runtime_suspend(dwc); + if (ret) + return ret; + + dwc3_imx_suspend(dwc_imx, PMSG_AUTO_SUSPEND); + return 0; +} + +static int dwc3_imx_runtime_resume(struct device *dev) +{ + struct dwc3 *dwc =3D dev_get_drvdata(dev); + struct dwc3_imx *dwc_imx =3D to_dwc3_imx(dwc); + + dev_dbg(dev, "at %s\n", __func__); + + dwc3_imx_resume(dwc_imx, PMSG_AUTO_RESUME); + return dwc3_runtime_resume(dwc); +} + +static int dwc3_imx_runtime_idle(struct device *dev) +{ + return dwc3_runtime_idle(dev_get_drvdata(dev)); +} + +static int dwc3_imx_pm_suspend(struct device *dev) +{ + struct dwc3 *dwc =3D dev_get_drvdata(dev); + struct dwc3_imx *dwc_imx =3D to_dwc3_imx(dwc); + int ret; + + dev_dbg(dev, "at %s\n", __func__); + + ret =3D dwc3_pm_suspend(dwc); + if (ret) + return ret; + + dwc3_imx_suspend(dwc_imx, PMSG_SUSPEND); + + if (device_may_wakeup(dev)) { + enable_irq_wake(dwc_imx->irq); + if (device_is_compatible(dev, "fsl,imx95-dwc3")) + device_set_out_band_wakeup(dev); + } else { + clk_disable_unprepare(dwc_imx->suspend_clk); + } + + clk_disable_unprepare(dwc_imx->hsio_clk); + + return 0; +} + +static int dwc3_imx_pm_resume(struct device *dev) +{ + struct dwc3 *dwc =3D dev_get_drvdata(dev); + struct dwc3_imx *dwc_imx =3D to_dwc3_imx(dwc); + int ret; + + dev_dbg(dev, "at %s\n", __func__); + + if (device_may_wakeup(dwc_imx->dev)) { + disable_irq_wake(dwc_imx->irq); + } else { + ret =3D clk_prepare_enable(dwc_imx->suspend_clk); + if (ret) + return ret; + } + + ret =3D clk_prepare_enable(dwc_imx->hsio_clk); + if (ret) { + clk_disable_unprepare(dwc_imx->suspend_clk); + return ret; + } + + dwc3_imx_resume(dwc_imx, PMSG_RESUME); + + ret =3D dwc3_pm_resume(dwc); + if (ret) + return ret; + + return 0; +} + +static void dwc3_imx_complete(struct device *dev) +{ + dwc3_pm_complete(dev_get_drvdata(dev)); +} + +static int dwc3_imx_prepare(struct device *dev) +{ + return dwc3_pm_prepare(dev_get_drvdata(dev)); +} + +static const struct dev_pm_ops dwc3_imx_dev_pm_ops =3D { + SYSTEM_SLEEP_PM_OPS(dwc3_imx_pm_suspend, dwc3_imx_pm_resume) + RUNTIME_PM_OPS(dwc3_imx_runtime_suspend, dwc3_imx_runtime_resume, + dwc3_imx_runtime_idle) + .complete =3D pm_sleep_ptr(dwc3_imx_complete), + .prepare =3D pm_sleep_ptr(dwc3_imx_prepare), +}; + +static const struct of_device_id dwc3_imx_of_match[] =3D { + { .compatible =3D "fsl,imx-dwc3", }, + {}, +}; +MODULE_DEVICE_TABLE(of, dwc3_imx_of_match); + +static struct platform_driver dwc3_imx_driver =3D { + .probe =3D dwc3_imx_probe, + .remove =3D dwc3_imx_remove, + .driver =3D { + .name =3D "imx-dwc3", + .pm =3D pm_ptr(&dwc3_imx_dev_pm_ops), + .of_match_table =3D dwc3_imx_of_match, + }, +}; + +module_platform_driver(dwc3_imx_driver); + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("DesignWare USB3 i.MX Glue Layer"); --=20 2.34.1