From patchwork Thu Jul 4 14:57:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Josua Mayer X-Patchwork-Id: 13723865 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 A2FC3C30653 for ; Thu, 4 Jul 2024 14:58:01 +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:Cc:To:Message-Id:Subject: Date:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=QstUe26L4fisq2i7EXUPkWqZ6pUwcEktm1/zST9zCXo=; b=e/20wkr3O6NRZ2 k6t9QoGnHLpuyUAFVP8bLYvSp1DHMzQ2exsW3TR2mGnFbQ+ocHjU2FQvK4T+YoFV48aFdFzt7UkTb lzwQB+3LIMHlOyj+WTxs2y3jeMDukBhL7e+zvv5+DnrBIQAzNZK+qqNDZpilf+DDWOvH26cIsMaY7 l3SvjaHweKLO3HNrDAifPsXFysEQ/bLIR5fS5AST2cpOoNZ2/Dm/Wp7Ua2+rc5zB+AiXP+Tnf5voY AiCDDKVIKqbWAdaXGmgAIySyQTiG3YOJSkH9S9pIpykwE++XU/4x+JezJcILIiofwhvQ0nkhlRTK2 5It19ZEwvelBAhEyjItQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sPNuL-0000000DaoC-0yjJ; Thu, 04 Jul 2024 14:58:01 +0000 Received: from mail-am7eur03on20701.outbound.protection.outlook.com ([2a01:111:f403:260e::701] helo=EUR03-AM7-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sPNuI-0000000Dam9-317a for linux-phy@lists.infradead.org; Thu, 04 Jul 2024 14:58:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A0qiY8b+BYthVDQiOBrrWb2KBuYQAvaj4DmTF2Wgr7l3bMmyT/YiiOf8qZs6+NufDwa97iA8wXU+agazYUhD+1i9ikBOPD1fw5VG6mII3GkHyUf1D24MBtry//EXc0G8NF57+nHFAEUzdHqtKF0XM+GigQhq52vpU/kvNE+DPr13NXUCrCv33MWS6ankeBFT9GUSqyjvLrhnxGwUoEaKLwhqXAgofPA/dNiaFfNWTXyJWLqzxW7TmboTIM6A+o09vHFhNzRC0RcIxZPoJxqXi7pcr6Vm6NZ1R5OUgRLiF8vTsjGUGnVKgpIOFpD63K5m3nIackPiTj14tFRUKvau7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=/eoQ6fFJX5T1MlhiMlHhbt5EfH/BBq0Tmb7ZRgfJ6oo=; b=Yir6l4NM63f74io0FY8PwQ0LPXOLnEsqz04aXyweBTLv27heRGX0YkAi50dbs+SJ3j0ov7w35PiRVkD+RyuIw1MxxorrCAUvK5K93E4Gwo8e0Y3rYx5I3IezJjCZA6Jjzb/8dkdfoZD/b2CNr64gaR+jTl+c0R6Rzjqs14+ApPNJw4Ll3iVXKFw3ZJUnsr8UBd5ln+orktS/wmibQZzSWkcNNrHWxRu3+qr1fR73fTlj/6CdVFLQj1v61qCwUFAbP9I+JAMHI3Xpwb5MgXQKg4/rxMLLeHJn7KZIl7GOzUvHKBJdq80368oO6uDpYqTgWJfg4aYSv32hAKtDyX6REw== 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=/eoQ6fFJX5T1MlhiMlHhbt5EfH/BBq0Tmb7ZRgfJ6oo=; b=YxXork5xCu925OUlkiDVRIa2IiJH9fPKj2ihB7QPxE32INMqATLjxXs7gXFTZnhw1cCU+cpa1QSQI/N5+8DJm2SPAOI3B0yD8wMFOlZa1rjWNWl2yPVW4lVdnYuI3wSzO+5Zv2UnugLWkYzmWjyqOj8bFTA5PjPQt7VIl3sy5ls= 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 PA4PR04MB9486.eurprd04.prod.outlook.com (2603:10a6:102:2a3::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Thu, 4 Jul 2024 14:57:49 +0000 Received: from AM9PR04MB7586.eurprd04.prod.outlook.com ([fe80::c04e:8a97:516c:5529]) by AM9PR04MB7586.eurprd04.prod.outlook.com ([fe80::c04e:8a97:516c:5529%5]) with mapi id 15.20.7741.017; Thu, 4 Jul 2024 14:57:49 +0000 From: Josua Mayer Date: Thu, 04 Jul 2024 16:57:43 +0200 Subject: [PATCH] phy: mvebu-cp110-utmi: support swapping d+/d- lanes by dts property Message-Id: <20240704-mvebu-utmi-phy-v1-1-9d3c8eea46e5@solid-run.com> X-B4-Tracking: v=1; b=H4sIAGa4hmYC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIxMDcwMT3dyy1KRS3dKS3EzdgoxKXQuTxETjpDRjS1PzFCWgpoKi1LTMCrC B0bG1tQCttIacYAAAAA== To: Vinod Koul , Kishon Vijay Abraham I Cc: linux-phy@lists.infradead.org, linux-kernel@vger.kernel.org, Josua Mayer X-Mailer: b4 0.12.4 X-ClientProxiedBy: FR3P281CA0079.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::7) To AM9PR04MB7586.eurprd04.prod.outlook.com (2603:10a6:20b:2d5::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB7586:EE_|PA4PR04MB9486:EE_ X-MS-Office365-Filtering-Correlation-Id: e278e2fd-d622-45b6-027d-08dc9c39ac2a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|52116014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?3qdAw69Lpj6p6WXxjKiuoYkSqVw7Xqq?= =?utf-8?q?4nk+j9UHUFSDsZQwX1fofvdA3l3mHsS1Q+xBqPlCb1kUNFoqZbsmnQNnnGqTZkaMu?= =?utf-8?q?hSzE9Tha42RiLoljoTR3mapSHXUtkYLmAtYvTVWeSk7QAM5B4WnIAHGBKzaNnx0qq?= =?utf-8?q?q3tMkraFD4Nb+6nIWOXvodkyfyuyfiu3im1JXRbuhjLL3hFxVj+Gs45rLG9VRbwV0?= =?utf-8?q?NWHYQveoegctwu4hjkBrW6l8qm00nV8Bn+MJlD6tznQYX7EbNAXLHZLSxRtpvx0eI?= =?utf-8?q?qmqmRajTWub8XhJEOxA5WRY1xv2n4IB5bmt+xcYQ34IPJELKNQkDKjskkB2FCyYfN?= =?utf-8?q?azlInlknh5zbNjfjJ2R7rzrxEKv5SJ0Ga4TOt67vLG7DtJq+3DtIYkA1/NE4/KEPi?= =?utf-8?q?EL6UAcTr+Kj6CtPViR+6OtXNEbzGyi2u0nbAnoCT2UzARe5r3ptpH4n9YUtOsK6f/?= =?utf-8?q?/iJ2WvqqeH9w8Jdmh63s08RRSpXZN2FL6H9rGwiZJ0GRMhv/SIRUrk/BuTXkn7fyS?= =?utf-8?q?f+u/6ZN3fgA77DXxI+etUHEQD+GLBjxJ3r9C5CiQzGsoQdaOK541qor5bPmDcaWqb?= =?utf-8?q?eha8Mx8LzyZbMOHmynbDS5zMlwsy3pBOBfXGErvSMVWE6MII1IwrzlM/SpFmuWrnz?= =?utf-8?q?8e/wuYrQmORcF1YFlhHnhkutlLQIo3jTRNU/qkTzTQyz6Mryn9CAfGfGPUtaz4HD5?= =?utf-8?q?iuUXMcXzmF0L3UGNHPgIKLroEaweDbYnzRRKm7MSxGAYif9xzxwXGlu5sxLmmdE+5?= =?utf-8?q?rwWhdndhuZ/CP4XjGXnj9wGW2oRMqBmtHV9YT1jxTIul80UM7rnvmaCAXKliFVY+O?= =?utf-8?q?hlcQ2TXH7oGhtO6oASE+pHrvcB7QeQI2eAr3/wtZGIzuqabLgWuzxUAKWcLfUAjr4?= =?utf-8?q?4Schio69t1atB7ZSSjmAuSBEVUS6kuewz+1WwrYCj0DfqGmxgnX9C4iuJZiqOTC+S?= =?utf-8?q?+wncnUNLLVdywJfYiqThjXPIZPNnutnO/RwjFMstJlJZe1labldip4Be8AaMNOOA3?= =?utf-8?q?IU+zSWJYT6g8dx9hdB9FfXBOelhCkNTvJEfdwxmk2z3zBCVsKJ3oJ4ws9cZUMBddN?= =?utf-8?q?FbRdRvDjhrYIDU6upuibXl81NLsDF4CDzqBr/iAjAivlVc2I0rxiz4uMUw9Pxd92S?= =?utf-8?q?cEHIe9MVuXMM4q/ZRo8cPyJBSSJRZGrX+laC5Jn93z8Fre6XQO0fVkidMIyCtIJl5?= =?utf-8?q?Xv0Tsz3vTupyoaQnJaUr5hI9NlodnsOcBZpRInzbLK0gJwh0drrwX8YKnvcOlkpzs?= =?utf-8?q?a2jpqgqs+tiZEFSDz0BOuJCTJ7FKFbntOfWH3ujlOzWBLKSy7nYNVEIsREoLm8ST3?= =?utf-8?q?rg8r85XW2j2b+GmgXphHr6ZvdcMVSz/9PQ=3D=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)(366016)(376014)(1800799024)(52116014)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?UT32aNh/ebGoP0phfjVbu0IJdua3?= =?utf-8?q?39n7L/5IiAnwN2YuAQfCS13p5w6aox3wXkOMjkW42bUvhefBOqJlvPWcjTzztVKis?= =?utf-8?q?FQsEVFsN6h47lMlYaknEegjHtrBM9oRpe+5XcTW9zGrL06kcib3Jb5x+jThOvKYLY?= =?utf-8?q?z55tHG8eLfJ0IKSbJCLDW3BljPGR7Zxe+Q4WtlQEFxORDwweLV5KzdYsgmG1dyTER?= =?utf-8?q?qYbtkDIBsgE37hnxcChgqk3Dgh3L0tnQeqjG8DO31Jz3pUi2ihhxWKRA+GG8aGpBo?= =?utf-8?q?IKD6veHAC9c2du2Oz0Jr8pacMQF0xvMar+R9RrgZMQZ2O1j98r0dLxRl4A+YX2Iit?= =?utf-8?q?YeewFVsFoeNgf//62X/OZlyOpSEchTtoJw1b0l/lS+9bzMFJgArQkt9XZTFh9pTAe?= =?utf-8?q?V8CYcgOjrTNSyC3WiUs90d73b9MWPFiZlZZRoEbYyEHRxg6PDiuygKL1PzruSxZG8?= =?utf-8?q?q4YVM9Lcc+/GZCVBnwvb6+eFd0Ek6AvSWKn4vB07SNdyRDzkhhc1a+60wfBxmYGr1?= =?utf-8?q?BLzbFfyKstaatsJ06aXGAYGAcGuyBgI3K2z8EWLS9rgFlKd8WmNLgfcaCRlg5Mw0W?= =?utf-8?q?0TvR5TAf8dz7BWv2OPvFf3GGWwuCIk48RQJ1QO1rv0CfQuqlhHwijmnEr9d4ZhK15?= =?utf-8?q?K4LenzDLwDGwvy0PXmPZzUI0KhultIO8oVIcYgj+YXTn9cVGbI7IuRucJ7NWWIt5h?= =?utf-8?q?52GwMr1G04Wl+nW/TJICIRKDB1HBxHloqYe0+5XO4biict6Al1QuKRPFijBUnWcrF?= =?utf-8?q?YJ1DYe4LMSC8YMDLx+GwR1N0DPztqHFoB+42G9ocl2ibed6ZkhAqtFCc8q7+vt+0M?= =?utf-8?q?BFNA1zN8Bw+CiX1mnP/wcdmP/rXTIpfpfI/7vaNFWURNW9RzLbmdepOki7juMaihR?= =?utf-8?q?SP9Kui4vtUEeuDO3i/YiCSS+kgDAaeEMskA7ixGXsV+uAB0EwazvFg2xvSCg00PI4?= =?utf-8?q?7xJLQmU2aqDaxLxchsXwtKpTL2NinS4wtCH5RiIq2ovOMddV093erSOuRD8YQSkop?= =?utf-8?q?ykW5Oz4qYUdV2ktpoersv83rmxv7oC+km0d7P7Y0DYGWadg0xPBEy3dETE5Zhgj2Q?= =?utf-8?q?wlvxyW6bq1zZPlkoD7yqzpChWJa7IuznJrcA2oufIcDI3e6aORzPowfaVG21YQYm/?= =?utf-8?q?3lefaNjXTO+P7rJwG2ryr0MqEM6HhKcCS82IuESLjrXEwAO57/qfR9Okw2uxwYar/?= =?utf-8?q?HlxKwOn+ZQ5GN59l1ANXFnnetU0rY2jyOoKpdsDECuaa6PXKr3x4utzH+vEa4axaN?= =?utf-8?q?uN9bDjydWni9bdPHOqBDUzM3+ze2nrIT9CzqGDPXvgIXLF25BsvjaURzlcbosXZPm?= =?utf-8?q?k3HXJXm5tU2o9piJk4n0x0pVpHNG1jp1YV2hXPhGFSxVdWbgDRivEhKm8SL5Yla7b?= =?utf-8?q?gTB8betcAJO0/k1p/yO5PasRIfUkyl8Q2nz5GUe620488f8FBgbY07Rxkd4yja50f?= =?utf-8?q?QWHv0qT/NV/NZtlO3AuNe5zWGGrf6vlzjxoGfMrmbsmfggftBqSY0Sb2qJDIFiEXU?= =?utf-8?q?2//6o9l8htjj?= X-OriginatorOrg: solid-run.com X-MS-Exchange-CrossTenant-Network-Message-Id: e278e2fd-d622-45b6-027d-08dc9c39ac2a X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB7586.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2024 14:57:49.6355 (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: 53jcazfU9vtbgp+Z+RLkZX6LbP3VVhrIT3hRueckOVdwuQ/eMO6WXVcTUZWh/1W+u79EfuxVUZEGO6R8tLKjOQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB9486 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240704_075758_804048_2F01BB24 X-CRM114-Status: GOOD ( 11.86 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org CP11x UTMI PHY supports swapping D+/D- signals via digital control register 1. Add support for the "swap-dx-lanes" device-tree property, which lists the port-ids that should swap D+ and D-. The property is evaluated in probe and applied before power-on during mvebu_cp110_utmi_port_setup. Signed-off-by: Josua Mayer --- drivers/phy/marvell/phy-mvebu-cp110-utmi.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) --- base-commit: 4de480264948cbf2b08a72c39ee122a9f9761e03 change-id: 20240704-mvebu-utmi-phy-84aa3bf3957d Sincerely, diff --git a/drivers/phy/marvell/phy-mvebu-cp110-utmi.c b/drivers/phy/marvell/phy-mvebu-cp110-utmi.c index 4922a5f3327d..5e403f842e9a 100644 --- a/drivers/phy/marvell/phy-mvebu-cp110-utmi.c +++ b/drivers/phy/marvell/phy-mvebu-cp110-utmi.c @@ -62,6 +62,8 @@ #define SQ_AMP_CAL_MASK GENMASK(2, 0) #define SQ_AMP_CAL_VAL 1 #define SQ_AMP_CAL_EN BIT(3) +#define UTMI_DIG_CTRL1_REG 0x20 +#define SWAP_DPDM BIT(15) #define UTMI_CTRL_STATUS0_REG 0x24 #define SUSPENDM BIT(22) #define TEST_SEL BIT(25) @@ -104,6 +106,7 @@ struct mvebu_cp110_utmi_port { struct mvebu_cp110_utmi *priv; u32 id; enum usb_dr_mode dr_mode; + bool swap_dx; }; static void mvebu_cp110_utmi_port_setup(struct mvebu_cp110_utmi_port *port) @@ -159,6 +162,13 @@ static void mvebu_cp110_utmi_port_setup(struct mvebu_cp110_utmi_port *port) reg &= ~(VDAT_MASK | VSRC_MASK); reg |= (VDAT_VAL << VDAT_OFFSET) | (VSRC_VAL << VSRC_OFFSET); writel(reg, PORT_REGS(port) + UTMI_CHGDTC_CTRL_REG); + + /* Swap D+/D- */ + reg = readl(PORT_REGS(port) + UTMI_DIG_CTRL1_REG); + reg &= ~(SWAP_DPDM); + if (port->swap_dx) + reg |= SWAP_DPDM; + writel(reg, PORT_REGS(port) + UTMI_DIG_CTRL1_REG); } static int mvebu_cp110_utmi_phy_power_off(struct phy *phy) @@ -285,7 +295,10 @@ static int mvebu_cp110_utmi_phy_probe(struct platform_device *pdev) struct mvebu_cp110_utmi *utmi; struct phy_provider *provider; struct device_node *child; + struct property *prop; + const __be32 *p; u32 usb_devices = 0; + u32 swap_dx = 0; utmi = devm_kzalloc(dev, sizeof(*utmi), GFP_KERNEL); if (!utmi) @@ -345,6 +358,10 @@ static int mvebu_cp110_utmi_phy_probe(struct platform_device *pdev) } } + of_property_for_each_u32(dev->of_node, "swap-dx-lanes", prop, p, swap_dx) + if (swap_dx == port_id) + port->swap_dx = 1; + /* Retrieve PHY capabilities */ utmi->ops = &mvebu_cp110_utmi_phy_ops;