From patchwork Mon Aug 26 21:43:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tristram.Ha@microchip.com X-Patchwork-Id: 13778521 X-Patchwork-Delegate: kuba@kernel.org Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2041.outbound.protection.outlook.com [40.107.220.41]) (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 F26BF19B3D8; Mon, 26 Aug 2024 21:43:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724708592; cv=fail; b=j/N0meXjClMK/3ZV805kn5Kl2mKCsgvdhNzT7Jkdvaap84v0ytGSjfIbOm6BfF/unRoAmdf9KIVf7FkjsDW6buU76sg/HR3Y+04mZKigDjp6TDUHzn3DrXnGfxRLGYeposGQqDQlfobVdHGk3yUhp9JSLPj/LbemAfxCgvk0Y2I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724708592; c=relaxed/simple; bh=m7xKRVubYi3X0rCZlCVgA/SQtO/wPD4KHhcHkc+uKKI=; h=From:To:CC:Subject:Date:Message-ID:Content-Type:MIME-Version; b=VDM0GB5h85p1lJdNWexaS+Vc/PT2rCuxDSC/YMnDIcvIdLt09ArMnyt62LvW1JE/oqoAnoAOqNG4J/FPD400JALKmvGaJ20mTDD14a0msIxtZ8gq2ghHZLzuMr1NGJ/EFUT5Gi1fyvpx4bYZXlDZ1/pyBjxdrI8ss0ouuy7g45I= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=microchip.com; spf=pass smtp.mailfrom=microchip.com; dkim=pass (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b=zsUY1Rg7; arc=fail smtp.client-ip=40.107.220.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=microchip.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=microchip.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="zsUY1Rg7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Yj4pSKD7xqBaUbfAcXTUWkt0zm4CCuXj6+pbIMb8c0wUpYNUB5oltOub4f/i3PJELvdNh3kj0GuALcZRR6EzgVlcC9BrrDpzZW6ZlK5lQgtS5/VQzY0T237GNvDu1lVzjrn+FZWbenQEWfhuNm9UU/xwM0h955h0Tc+dSyfzGJyj287OzxDB/GOSdAem64XoDFRA7MWhM8GfbFbuxp7Tgh0/uwPC81q9m9j0tmdFtzxYmb4A0YdgIxZV8TUWMgS3hyhe3K+gFYFti44vBj0fJOl6BXJYs0mplx3SlrKsfeUylFQ0Zg6FHwQIVw9cwseW5fazELfXO0lwAj5NawTzQg== 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=U2v0s4PYV/scD0utpSuRGPH2fklr8+M/GjamCsNmrD8=; b=KhKzF1iBCFbJQ/F6jHjKPzWSunosh5blxKFEPbo76YB8Su9tJ18N7X0irV9/WevaAsYSmopLAZo9x6rkqAG3GTbNWT80HvfgSwp+Cfa57D3i1vdkkb9GHM6QXtsgqOuZqBiUlQmdDFwqToilgGhlvWr7DlpyJWuOQJHiURyw+3TgsWNi4v1uD6MTceUeRBICwhISMb5ZAxhBeRpBnbmh8D10YVkDwoiJlBSu27/5L8UBXssFO9OwVYh9N7EXe26e8jzDMJ7+7CN0cqZcLB6wTasya1TJNzNIvmbOcE+SRMFHROCZ7KB30Q53laRP1JPpeVEcBy8jXTDS3qPzPHA5XA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchip.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U2v0s4PYV/scD0utpSuRGPH2fklr8+M/GjamCsNmrD8=; b=zsUY1Rg7dz74xVhRFTtRIVLzoga19bVtyMcm87VPZMN6bxDiyJzu/wW8NWuxtFvzcRDEpCs5JxDCwnYpAY69lXnNBL2m+0LUtqJ06MRK8hZ8kbOoVq4LOg8v603HUTaDNOdZ7stD9pkeM5OJhggas8kwW2rrzCR7lK/mT6Xb7iwxo3Uu1YVBQXD/ki8mfPRzS4NcyKmQPAzDaXZ+3icSpxvd6MwhURd1DanSr8SrnHg/QSBSxgJhq11+82Cn0B4/RZdPcc28NWiKMADNo86uxhd3nmpFiFqsEjPbIFNcjQkTBwWHBJQ4CKwOaw2UpR8TKEd1CNFUuMJTfjUBhISNeg== Received: from BYAPR11MB3558.namprd11.prod.outlook.com (2603:10b6:a03:b3::11) by PH7PR11MB7449.namprd11.prod.outlook.com (2603:10b6:510:27a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7897.19; Mon, 26 Aug 2024 21:43:05 +0000 Received: from BYAPR11MB3558.namprd11.prod.outlook.com ([fe80::c03a:b12:f801:d3f6]) by BYAPR11MB3558.namprd11.prod.outlook.com ([fe80::c03a:b12:f801:d3f6%7]) with mapi id 15.20.7897.021; Mon, 26 Aug 2024 21:43:05 +0000 From: To: , , , , , CC: , , , , , , , , , , , Subject: [PATCH net-next v6 1/2] dt-bindings: net: dsa: microchip: Add KSZ8895/KSZ8864 switch support Thread-Topic: [PATCH net-next v6 1/2] dt-bindings: net: dsa: microchip: Add KSZ8895/KSZ8864 switch support Thread-Index: AQHa+ABnUbdskkVThEahFpyOQq+QaQ== Date: Mon, 26 Aug 2024 21:43:05 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BYAPR11MB3558:EE_|PH7PR11MB7449:EE_ x-ms-office365-filtering-correlation-id: 823974e4-2be8-49bb-2fd7-08dcc61811b2 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB3558.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?1Q4kIFuyT2SnVdGdPNYXFDTRDK?= =?iso-8859-1?q?9VfR6H9aAZb0BeLcimcthXi+PKL+C7Lw83PSo8r5mnoc5g1NLvnEdQDRM+sx?= =?iso-8859-1?q?cTszdnImjtkdFedd7FWNsZE4hNZEwQg+Dloq9c0Y9iuVqEsNjrJAYn8La52K?= =?iso-8859-1?q?1wNzIVzpJSnsDnEMn6EAA0d0YVS7gL8gT/NKbnOopU9qte/K9EKmBN5x+1Zl?= =?iso-8859-1?q?0TEcZ+yo+Xkq7dAQp0uXgXehjMb5c0toc77I6epTypTdXrInpsr8lFsAgssM?= =?iso-8859-1?q?z2gVrBQvxVvFKtQEp6tam9anqEbYdOApVBkj9YNFzdd7SDGfplb0QT00sryT?= =?iso-8859-1?q?WSCF3adbbYFfDi3/G02OnDKeH7rvTShl33AfLRLAxReTqbg2vLuTP1PhPy3F?= =?iso-8859-1?q?8fTR8imfmBrhZvFIIDCe1XLpb6woNpv6drbjmfnu63jUC5/yQZSa79vkU4vf?= =?iso-8859-1?q?GW/Aj8BdH67UCK+MhTRX+OW+emU8V7hx4PQHTOlnmlwLMurILGCbroyDaY05?= =?iso-8859-1?q?rP4xTQgi/D8jFIHlyzWpdWxDdbIYZ2TaZug0WzuUtj94lgFHfPPrBsPVAf25?= =?iso-8859-1?q?XD7KqEyN98PaOwtuj1I8ToSVrUm53QsVThEJ3xHV58dreyJQp4IrwOxU1pLi?= =?iso-8859-1?q?kz//9qCId1IMC1kUQyoxAvwHF5dtHMNrZ1QkdB13th114krWQBEilXkolzWl?= =?iso-8859-1?q?JQbni3NBym4rHJuH5hcD0D8M/6srShUZ5w+zHaDRaNRL7fReeBCuOybQOgH+?= =?iso-8859-1?q?QgBTLpbpvrnC84Ei9+W4hmmi3OyaN0e6dAuIlo1TMSkvaZhbbvd2f7AZW17R?= =?iso-8859-1?q?W+nes5EmBSNy/J64UW9h6h9M9XxmG8+rwWflhqPhlVdt/9hc1f3X12nfdlDx?= =?iso-8859-1?q?3uJ+uW6f0qJfy/4VBtv3tcijl2Nf8QnMC22VjAhqEt48+oGz21XrDjJfvlZ/?= =?iso-8859-1?q?p6tTvR1VKoSrXuckMFbOIUKKdRC4f1ZL7rtJhOjFPiURbd3R5AJ5CtagvJ/K?= =?iso-8859-1?q?XLUx2rAmJNauXjh1Zqgkk3HxzObABdJ9PV2AhI0GstQDe7vI7ZibY1bfLWHg?= =?iso-8859-1?q?i0qB8SJRR9HhhrSWViOD5K0Bi7ZCTKmADOD7PIeXlKvFnzirSMfKThHhDvav?= =?iso-8859-1?q?hDzvrpGqDWuMKNdT9orV66GDRW/NoxGCz8chOGsHdMVXifmehhEXofLOUWpZ?= =?iso-8859-1?q?Z3/GoBadwMLydQbp4KF5go7oHmG/PPuf0K15KkihcWcfIPm55902egJhnoNg?= =?iso-8859-1?q?lpZVBDJQUANtliO2mmyhv6shKjNi5yROFEiJytrm09MFaKm7ZpIe8dMBCaP5?= =?iso-8859-1?q?M4iUmn68S4+eS6Lhc+spO5TRYVxAs20x+DgATEefOkpC38JY01o3G03OiS8a?= =?iso-8859-1?q?3BgUWM5mgrEHxxuBubcbS2LbNr/7DbmuEClCnRmaQH+lvKj/nu12eDO3HlKV?= =?iso-8859-1?q?7ZMZG+sK+8WmLbY6Z0KzS/Bg=3D=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?tgruA5hdQP54VCzkAaU1jYW?= =?iso-8859-1?q?nvh+jNni5gqLHQu3FM0GpDMYMsMFOyHjNhtJTyV9PLlJuo0PgHcHfNA/9JN3?= =?iso-8859-1?q?odIDA0WdyqWt/tzmxgxiNRzpNESF9hdgqo3wWl5x2irp4teRzi6ZKqAvBPl7?= =?iso-8859-1?q?1O8UDSzDRGyX/BXvdenxx1e/21WQRLy938I0gM9KTS3080+MUZj2Qjf4kk0M?= =?iso-8859-1?q?t6XqhiWQsmCBjFO+XX8iOAYTjn2kuD4Gho7tbFtXhwpSEVq8zwbTP5oHU2y5?= =?iso-8859-1?q?7vaM5Tfjf0b49n5OVoT3LxNLEG0HPALYBtdjr6GcDIuep0xPbDXFWqxFJKMT?= =?iso-8859-1?q?dGk2MIVCEiQKscKKd6HZT+y2QObg6/u5vwQuFmGjWpypCdX5/0f4bbYC34XS?= =?iso-8859-1?q?i92rlKYtehbbH/uVszleW56YokcvjC+hp8QWzqhm5/5lhHlOUUC6GOASFNRk?= =?iso-8859-1?q?j9j4jze8z/qu4lQdT8wNM7UJHbZh1JeBhNSNl4p6Ybn6WpkHj7SrSJZvNpbN?= =?iso-8859-1?q?c+9C4H6umL4RqNvkJCUa6V249j2tNqoc7e03+3ixuYoidk71F6JdLSZo6BI5?= =?iso-8859-1?q?14yyW282a1JeG2L4XysOEKfDHQNQScduB1BNX3TzkBqZ6bbJc1zyxgKbU9Nh?= =?iso-8859-1?q?1Eg/434uGZfvi28HueS6J6uuaLnFFIb+sVGbVC2B4DX2ZP3r/LWBUCLKL4x1?= =?iso-8859-1?q?BtXc/3dLLUtsEs+OEeBqjpC6PEAnFzvG7t+2wksE+gRoNheYJwVZGkHtI+Su?= =?iso-8859-1?q?8bLwzT3ONR6rZ2xCoSguA6gsZXRHfQBCjL5MB/e9Hi36JtOLii54oCJr77wz?= =?iso-8859-1?q?Pf2Gpx589QyRhTrY4Gm6V8iSQGKPfxGuJ72nIbzFl0Nz34OSwdJxd+q6zgZz?= =?iso-8859-1?q?ofSR+J+ppVdZVVBhMbpYUerA2ob/NlQsV7cu92U887AkSbHfKOBtCyOHgAY2?= =?iso-8859-1?q?KwM84PnVS/ZiIyaqS7nz4SRAXwmm6cMAeLxArkQkGJVDniUcGrjc0mNaloai?= =?iso-8859-1?q?91os4jr8OEzvaSGzW94qU98xJzlXXAcGGSz3orS3Lk6s9/rkX0i0bLGF3fU+?= =?iso-8859-1?q?SsR/R053t/NUOx8Ql3hbA7JpuG8LCMlMPhJWF6mYeNkTijXGrz+F4KQ6Lg44?= =?iso-8859-1?q?RF2FiQS+q5ElpCL6MCJcY6gW9qIQDMiFjRPh/0lX7bEqQI7hWECD+/Mv7E/P?= =?iso-8859-1?q?FZOAFuU0ppUBEjPGN/CQPhN/U6hhKZ6uOCkw8xcM3TAMYgodnBzpGH3+zIqo?= =?iso-8859-1?q?u1suPhh/7MF8OrXSe1Lcn5l8CK+Df6GJyKgJH/P9uLteEiYLaweF9BTIfFik?= =?iso-8859-1?q?YAuR1eWKFZxwMg9nLPuU4W6J8mCXS0admxteEWuB4Mt9RcPT+DoyIf1mdBAe?= =?iso-8859-1?q?URE8YZAUp2QxGO3OGYBXMsH03SAqVcF8R8hh9hUS2447qVdTd4PvcBXJW9P0?= =?iso-8859-1?q?GSRKU/iKtR1F+yLbPyqJQ0vtAVJjitCpmUzt/ueXHLjnapip4ecaJEd9YZFs?= =?iso-8859-1?q?LiuIkCIcQrDg77OreDcbsB3dHpppXG2SgCp5pcAxED3BVpJG2oyiQW/0D6r0?= =?iso-8859-1?q?HEASCpq2W7Fmyp6VOEDSL7Cxi9mkVwGZHi/IvGGW6yW/ZItKRC8lWj+NDBjD?= =?iso-8859-1?q?d1JHJ54vifIo/XKAG2qvSGrpVINFvdcybsYHMzd1L5Ow5arUNIH6e4ORPaCF?= =?iso-8859-1?q?Z8DleAeN5+lB6voU+/nkK?= Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: microchip.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3558.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 823974e4-2be8-49bb-2fd7-08dcc61811b2 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Aug 2024 21:43:05.8024 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Ia76M4p5afU4KqCeoBNETmF8EPkazMq3FaRx+Q8TKznl4BXXnQIYgNMvHdJpaU7R95+HW0S1rmAuwEgAkO3+xBX678eO9z3OULR7TLJ2r/s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB7449 X-Patchwork-Delegate: kuba@kernel.org From: Tristram Ha KSZ8895/KSZ8864 is a switch family developed before KSZ8795 and after KSZ8863, so it shares some registers and functions in those switches. KSZ8895 has 5 ports and so is more similar to KSZ8795. KSZ8864 is a 4-port version of KSZ8895. The first port is removed while port 5 remains as a host port. Signed-off-by: Tristram Ha Acked-by: Krzysztof Kozlowski --- Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml b/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml index c589ebc2c7be..30c0c3e6f37a 100644 --- a/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml +++ b/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml @@ -22,7 +22,9 @@ properties: - microchip,ksz8794 - microchip,ksz8795 - microchip,ksz8863 + - microchip,ksz8864 # 4-port version of KSZ8895 family switch - microchip,ksz8873 + - microchip,ksz8895 # 5-port version of KSZ8895 family switch - microchip,ksz9477 - microchip,ksz9897 - microchip,ksz9896 From patchwork Mon Aug 26 21:43:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tristram.Ha@microchip.com X-Patchwork-Id: 13778522 X-Patchwork-Delegate: kuba@kernel.org Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2041.outbound.protection.outlook.com [40.107.220.41]) (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 2D80919CD0E; Mon, 26 Aug 2024 21:43:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724708594; cv=fail; b=tw7sP3BUsTURRKgTHJeS0f04Vc/Wx59BH09bX9AUNwRtmiL/aoSKD6Xe9MIdFOY7Xui0ERVym8j3VFhWsjvAp7UT6WdkSzkYsRPR8dT0qml1ISC1eMsxg7iTV1O3oqrdjCYl+l8k5DB8GKE1gNTczoEx6ExRUGzHSv2A0LgSC8k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724708594; c=relaxed/simple; bh=bLdcWg8dAnEqQGUoPxhvyer43ZpempWjwe5yfq6JldU=; h=From:To:CC:Subject:Date:Message-ID:Content-Type:MIME-Version; b=NdXa4jvprz8NIdnA6JrMjn0NhXDPqanS7RxRXJX1d1pWKmc8+ofSXNqUhPpU/zCp20x+47DidoJi25mIQdoxnhsizXi/cJW1qpZmNiUrUipYBGsduch9j/mCHiZfU0CvrITCtIMPF54TWHljJYU3ww+4Asx6mVy4I5zRfiXIVyc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=microchip.com; spf=pass smtp.mailfrom=microchip.com; dkim=pass (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b=Sz6yE3ik; arc=fail smtp.client-ip=40.107.220.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=microchip.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=microchip.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="Sz6yE3ik" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RNJ8AK1YW104WSUM3ZeMyFJHXPQ3PRabUZM3N48JNV/spULw6PNPSPCvKjxl+QR92JwqdR4XfiKS5l0fi7BBT0uz+PuLw7hWJ2k+KHaHcIKIezupcQBEz1cnVOlO7oNoWiBG91JCyZoZKGLB0wr7AEAl7upOvdKIsPD0IqQd//tAn7x5vB5aPJVhGNlZjDi+ylxRdMgbW8LkIElG8rIiJBcTSOoN4jijHUTKpvtWmYmvSkcQAS5fkIsdn/PZ80SxqmIkWmfCfCa7EyzQU7YY6d5ViTj0J3AYlag6AsT7HdgYsibTpdUDMzNgkmTU/1UqWKC2whitSHrrcT7qkk9OAw== 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=aeF6e7AYCuj/j5fL+fXx0cG+ULrj3dLYSUJYsouZ2FE=; b=M9G42sVVxCUcMgyTWX2TrFfSoO2BmM+KFFgTj4nSkx2iPir6Bb2AO++W25d0thPg+wsH9f+CwUAfH8AbpPDusTMceggbUtcvPWNrR08DHm7+K8X7CfJZZCuhCdh/3qtEGY/trOeFXXZ+hGOfEKQ3g5yoZoXfXuLL0kFSgahxLxD/0HLmiKmy9A+0ltlc2gW02OHK9riD4Pnk7EC+Io7da6PKtMn0i93VxwHBPmtsX4pJwhWtmXeiihabb3RlvHzHb7qDm3nmnvIE8z+qHantoF6JTbVQhi6JV7l1R4XpC9qBz2o085j4lCdP1OEg/IuAB4ZjyWf5tsuv9l+hYXLgyw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchip.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aeF6e7AYCuj/j5fL+fXx0cG+ULrj3dLYSUJYsouZ2FE=; b=Sz6yE3ikt0Qv6AQG8BlUzrdLUX61yYdtsKV54snMib3N4hDMQXU4vAkVCglY1tvFRZWB62up01exEDdJJJydvruqxjj6MlXvhBlM/5wDFxjB5S6r6ru6kwcblTmvz7CdeURz/YjmnC9j6TqZt7ILZkxmaOpUz9xnjmZ/lNlQClgge3q9w9Vl+rgK7lSXO9dK0tsIpU/cenr11vWWXnh8CV2g1gmKSPqUbfpDMRycjsq7XvGT6oZjXZey4bfGQ190ny+3ry5dXnHGRxmzI6qfW1XTg44wI+tdwCtr36AiQKs//cjO5lbgmDgnKBmPjHVJOa0oR5IKPVlzBz8TSONRBQ== Received: from BYAPR11MB3558.namprd11.prod.outlook.com (2603:10b6:a03:b3::11) by PH7PR11MB7449.namprd11.prod.outlook.com (2603:10b6:510:27a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7897.19; Mon, 26 Aug 2024 21:43:08 +0000 Received: from BYAPR11MB3558.namprd11.prod.outlook.com ([fe80::c03a:b12:f801:d3f6]) by BYAPR11MB3558.namprd11.prod.outlook.com ([fe80::c03a:b12:f801:d3f6%7]) with mapi id 15.20.7897.021; Mon, 26 Aug 2024 21:43:08 +0000 From: To: , , , , , CC: , , , , , , , , , , , Subject: [PATCH net-next v6 2/2] net: dsa: microchip: Add KSZ8895/KSZ8864 switch support Thread-Topic: [PATCH net-next v6 2/2] net: dsa: microchip: Add KSZ8895/KSZ8864 switch support Thread-Index: AQHa+AAVpv/2224lAkiuDSJrmip8AQ== Date: Mon, 26 Aug 2024 21:43:08 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BYAPR11MB3558:EE_|PH7PR11MB7449:EE_ x-ms-office365-filtering-correlation-id: 39a30fc6-3974-41d8-26d3-08dcc6181339 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB3558.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?z65K6dj5MrdnEltTCeAdM2d8rv?= =?iso-8859-1?q?xsv8NsMEddr3zuQYUb2o7uZSFXiAWrMcSQnS3QcfmGZ4Y1lGBk8KJfw/24VQ?= =?iso-8859-1?q?t4MCvY/0/ufZP9iQFcKqOtxVXuf92Sx6zo2S1i6yd0p0zp0ERUQH2vJeICDg?= =?iso-8859-1?q?QgctURIhg1VCgcU2IzVJcpcK3hfgutSP8frqDFUqrbVj7kEYJ7FpZLgp89h7?= =?iso-8859-1?q?mWzGYpHgfHi4jn9mQd+STKqM01YCBDqx9Ifk3niNj9jxExnGXv5PqFs7JgzS?= =?iso-8859-1?q?0MqanpzDfIYkpgz16DieZikXocN/640UqMyHRBWvr/gs/Eej0rzKGUNefWaZ?= =?iso-8859-1?q?2HGv12nB+Zp5q2/8B1AIrld/owYq5Cwo30ySy8dINP20YFZh86dxd8gvJWnA?= =?iso-8859-1?q?bPBswyzNFzh1E8pX8OkwIqxfa/uwSQkfw4+VvBz3UkHkUMVaf/6Ysj6qPiP9?= =?iso-8859-1?q?3tGiq0TshydJNaUMlk5ZOqFOapiMfzJVuYyB5hbzq8Cln1qSASk62Y5p6TnM?= =?iso-8859-1?q?177iPR/aOKk5UlaalEHRUeGLcodrOvu21KfcOeZ4bfJtI9m9ibex3mIx48yf?= =?iso-8859-1?q?9tyJkq8WuHGCupex1ZQLHAjSnEmMk5KblORQjFshqfgZdzsKmAzXQiIqGuGr?= =?iso-8859-1?q?mlLYOyqGlwcABGnhMrMrO4SqGC0PeVLGA+gWaW2h1D1DARJ2OrHNhoN1R6NM?= =?iso-8859-1?q?In70AAaWmklr1YbNAnX405a7/IcTV38CA/Z6W/homgGEe7R9s1oSyFQTfVCZ?= =?iso-8859-1?q?VpZbMhV+HSZKjx0axoctPNQRv1fXOQAqt4lIKbL+yehk0RtHNSZuNz3TQkcn?= =?iso-8859-1?q?MGI9VSALDE6W5QQyUttB2PvfZsaWRC7Mi+B18fImLm0InfnXHqBwT7Q9FVBI?= =?iso-8859-1?q?xLrlNGxLvMpVro65/fMYIX96sLP+++3rbUnaqS7tIXbabr/bcuSjhVXKrWSu?= =?iso-8859-1?q?sdPmGX5U5Iv+Wo5eVNVFYyPZyrvbpVVdJkO21tfElg950akMyxRelbLLSuF1?= =?iso-8859-1?q?cDUoSa50S/AVbZMC3atF3rM2C42uRtxo10TcSXbU6m3hmJb0P0sZTXxp/mXX?= =?iso-8859-1?q?QMChI5FCdVWPFO4kHHWBMurfM3RmNwL0U5al19IpCS/r/9hrk4VLT1lvTe1b?= =?iso-8859-1?q?YKyfya5XsH8VOFQnHdr2rxExKgS55vF+rW/oAgUGEEeTsB9nAv9L5+MCsIV0?= =?iso-8859-1?q?3m4qf2Umam8dGBZDij5hGrEATlNd5a3NAr1+o2c1G0VxGBsYBEVj9kocbXVs?= =?iso-8859-1?q?MMq04/EpDjU0oM2HYy0KHBVGen2tNBp6SOE4uiYsheT9v2P7j7UIF3NcufUf?= =?iso-8859-1?q?1WMeL8bUaFVzyUWnQds90WZoB6yphBdKSYtgsllKz5SMYHVASC18nYZ21O9L?= =?iso-8859-1?q?A7cyVVsvLL4zyCU8ph8l8RMyLacR8+rcCK4uzplVHsIGd3tBYwRQZfUp0WtI?= =?iso-8859-1?q?Qf5GH/4VVX/sumUcer3KiGag=3D=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?ctb1K+FjdDHhGdJr744jjIB?= =?iso-8859-1?q?a2+SUvsIXrAlEVcSLyFeTgpx/P8VJMyPYXRF6iqyw8teX8yqPPUJBFjtutYD?= =?iso-8859-1?q?Rwb1DqExIUzVTK1BAVaPeRI2NInRsDt8fNXhPFFiDVdR/wvtZM7hJiuoi+2A?= =?iso-8859-1?q?gCPF1e19ClwwxIW41NM+/uDOKkRKwGWC6vJNtP6xiwiCDmzis9HiZxH7k4fg?= =?iso-8859-1?q?g55y8Y63zbl07FckNLD3ci69SgdXYOElLpmQ8vO7A3/yTqafQP7tKcFwuf7g?= =?iso-8859-1?q?8qV4YDfVWx42t086/dq8aksUpkkhFw1lAf5F5XWmn2ARD+rJVH2ykkd0ntW8?= =?iso-8859-1?q?OaIxP+A2fxwAHJgRMFOtgGENhFYENUTodfv8/tiDU1E/GBwWMo+VHcQr7aJp?= =?iso-8859-1?q?/90/5iARNCOfh7sbBwQNd2RSm4TOGNloNK3CZAZPyD7AXcR5KwFtPrWupyhV?= =?iso-8859-1?q?dj7TC8Y21548tdlC3vF2M8eCf+JJNdI5eu0+iOZIjebRBwvOeW00nXNTAc+A?= =?iso-8859-1?q?Z+zb+hooCILSC+c+9UUyNDCiniYB3hiEiq8eDCIV0joevew/gOwk3RjJGPA2?= =?iso-8859-1?q?niM0xtNTPseQ1v1yl/s1i4U0cqww3PTlAACTl32D6O2m0ea5dM1PMToWIbfP?= =?iso-8859-1?q?mINIAnPObHD6cnfGCHId0Z7XZA7m3L3xCUsqRfCajC/T9Rf3WmXyHGCvivOy?= =?iso-8859-1?q?QBAdi3STIRLr9D3urJ2FygC2pPEduGS/gMhSC4KRJ89ovktbLmbk5C4r5Y0f?= =?iso-8859-1?q?E63sR8xCYA20s9DgSrrIBhSdeoJC9X6PCOGJGo16gf/XlItF4zTnhwreXey5?= =?iso-8859-1?q?08XdvGhfV1jatDI542n5dret/x89d/P/4+7WEiZ4dHSeze4NmQ44JPHsCurI?= =?iso-8859-1?q?+ALYtCKkVcJEFer41lbtiyyXsK51jouHeEOdzPjoF2HmUmTBaecJto9o82M2?= =?iso-8859-1?q?//V7jVE6GvMWvnU6Ja4vhPsx8SZ6MGz1odrO8xnnmS9M8FYG4xVZ7FcG6Rm/?= =?iso-8859-1?q?g4bfi6fODpuxNZRlQqG0Fxwk4a6A3EVeNwiS3RhvkI73FrQY0iM2kd0cQPRB?= =?iso-8859-1?q?wkbGnVnfdfLorMoCCA/fpBcY6aoYNfBloRZIGHKL8P8X6JTfeRM4OoLb1NLs?= =?iso-8859-1?q?RnQyFG1xp0ZK0GFm2Bfbe7rpYK6EeS+EO2vqlCXPE7redMfrhj7jMZl64Sv7?= =?iso-8859-1?q?ZsGblmaVJ1FsQEguYRvCoK8Z8uuX4kcrDCTZ8PtOi+2byYijF2Rg+DSuGK+e?= =?iso-8859-1?q?1Uq1zYMa05AaLlUjpTP8v6K8pJZ4nxq+R6k7UkhlSOfzUZVOyEui9qbNTtgZ?= =?iso-8859-1?q?79ZzLhcRCoxGbgh9+uIye9FGSX5UkdaslUDe6yLhwrCKDVe+Co01ZWnGvU6w?= =?iso-8859-1?q?lJVR3fahbY9M3nyENQ+otzaKfMqgGeusu/ANcVwsUphCLL5wZjwqnorpNvSN?= =?iso-8859-1?q?T/0qN6maJkNtBwnWPhkNZIJ0HjrZeuAuHvDnLDhMFEniIXq+fwuTRIkOa7bf?= =?iso-8859-1?q?+4oMqW5iAuTp/HvDrJnQF20GxCp3o8pnCx3vPzZyLDQmqFefEGH7wcN8aQJ1?= =?iso-8859-1?q?lIqOHfjv/uEJB/n9idsBMsvpppifpWaO8Ad7TdLPoajuDZZafdYZZ4GRns6t?= =?iso-8859-1?q?UUHtC0mAVF/aUH5iLcnkMswe3ZQ9C3ZC3dJQ6qW3ONlzlC5PfaQyx86NTAnx?= =?iso-8859-1?q?tQyNIKJh0OAcSjNIq9jGn?= Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: microchip.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3558.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 39a30fc6-3974-41d8-26d3-08dcc6181339 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Aug 2024 21:43:08.3236 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tXlcAqbPN2UDULTKhnNdjq4kpg+cEJ0R+O2JoNGOrRQMvEoNmXICif1q1wIrYTxY1R6Xd8adoYjNd8xM8cJDiPWq8NUvas4s2LiO7EUA8mY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB7449 X-Patchwork-Delegate: kuba@kernel.org From: Tristram Ha KSZ8895/KSZ8864 is a switch family between KSZ8863/73 and KSZ8795, so it shares some registers and functions in those switches already implemented in the KSZ DSA driver. Signed-off-by: Tristram Ha Tested-by: Pieter Van Trappen Reviewed-by: Oleksij Rempel --- drivers/net/dsa/microchip/ksz8795.c | 16 ++- drivers/net/dsa/microchip/ksz_common.c | 134 +++++++++++++++++++- drivers/net/dsa/microchip/ksz_common.h | 25 +++- drivers/net/dsa/microchip/ksz_dcb.c | 2 +- drivers/net/dsa/microchip/ksz_spi.c | 15 ++- include/linux/platform_data/microchip-ksz.h | 2 + 6 files changed, 178 insertions(+), 16 deletions(-) diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c index a01079297a8c..aa09d89debf0 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -188,6 +188,8 @@ int ksz8_change_mtu(struct ksz_device *dev, int port, int mtu) case KSZ8765_CHIP_ID: return ksz8795_change_mtu(dev, frame_size); case KSZ8830_CHIP_ID: + case KSZ8864_CHIP_ID: + case KSZ8895_CHIP_ID: return ksz8863_change_mtu(dev, frame_size); } @@ -384,7 +386,7 @@ static void ksz8863_r_mib_pkt(struct ksz_device *dev, int port, u16 addr, void ksz8_r_mib_pkt(struct ksz_device *dev, int port, u16 addr, u64 *dropped, u64 *cnt) { - if (ksz_is_ksz88x3(dev)) + if (is_ksz88xx(dev)) ksz8863_r_mib_pkt(dev, port, addr, dropped, cnt); else ksz8795_r_mib_pkt(dev, port, addr, dropped, cnt); @@ -392,7 +394,7 @@ void ksz8_r_mib_pkt(struct ksz_device *dev, int port, u16 addr, void ksz8_freeze_mib(struct ksz_device *dev, int port, bool freeze) { - if (ksz_is_ksz88x3(dev)) + if (is_ksz88xx(dev)) return; /* enable the port for flush/freeze function */ @@ -410,7 +412,8 @@ void ksz8_port_init_cnt(struct ksz_device *dev, int port) struct ksz_port_mib *mib = &dev->ports[port].mib; u64 *dropped; - if (!ksz_is_ksz88x3(dev)) { + /* For KSZ8795 family. */ + if (ksz_is_ksz87xx(dev)) { /* flush all enabled port MIB counters */ ksz_cfg(dev, REG_SW_CTRL_6, BIT(port), true); ksz_cfg(dev, REG_SW_CTRL_6, SW_MIB_COUNTER_FLUSH, true); @@ -609,11 +612,11 @@ static int ksz8_r_sta_mac_table(struct ksz_device *dev, u16 addr, shifts[STATIC_MAC_FWD_PORTS]; alu->is_override = (data_hi & masks[STATIC_MAC_TABLE_OVERRIDE]) ? 1 : 0; - /* KSZ8795 family switches have STATIC_MAC_TABLE_USE_FID and + /* KSZ8795/KSZ8895 family switches have STATIC_MAC_TABLE_USE_FID and * STATIC_MAC_TABLE_FID definitions off by 1 when doing read on the * static MAC table compared to doing write. */ - if (ksz_is_ksz87xx(dev)) + if (ksz_is_ksz87xx(dev) || ksz_is_8895_family(dev)) data_hi >>= 1; alu->is_static = true; alu->is_use_fid = (data_hi & masks[STATIC_MAC_TABLE_USE_FID]) ? 1 : 0; @@ -1692,7 +1695,8 @@ void ksz8_config_cpu_port(struct dsa_switch *ds) for (i = 0; i < dev->phy_port_cnt; i++) { p = &dev->ports[i]; - if (!ksz_is_ksz88x3(dev)) { + /* For KSZ8795 family. */ + if (ksz_is_ksz87xx(dev)) { ksz_pread8(dev, i, regs[P_REMOTE_STATUS], &remote); if (remote & KSZ8_PORT_FIBER_MODE) p->fiber = 1; diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index cd3991792b69..6609bf271ad0 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -2,7 +2,7 @@ /* * Microchip switch driver main logic * - * Copyright (C) 2017-2019 Microchip Technology Inc. + * Copyright (C) 2017-2024 Microchip Technology Inc. */ #include @@ -277,7 +277,7 @@ static const struct phylink_mac_ops ksz8_phylink_mac_ops = { .mac_link_up = ksz8_phylink_mac_link_up, }; -static const struct ksz_dev_ops ksz88x3_dev_ops = { +static const struct ksz_dev_ops ksz88xx_dev_ops = { .setup = ksz8_setup, .get_port_addr = ksz8_get_port_addr, .cfg_port_member = ksz8_cfg_port_member, @@ -572,6 +572,61 @@ static u8 ksz8863_shifts[] = { [DYNAMIC_MAC_SRC_PORT] = 20, }; +static const u16 ksz8895_regs[] = { + [REG_SW_MAC_ADDR] = 0x68, + [REG_IND_CTRL_0] = 0x6E, + [REG_IND_DATA_8] = 0x70, + [REG_IND_DATA_CHECK] = 0x72, + [REG_IND_DATA_HI] = 0x71, + [REG_IND_DATA_LO] = 0x75, + [REG_IND_MIB_CHECK] = 0x75, + [P_FORCE_CTRL] = 0x0C, + [P_LINK_STATUS] = 0x0E, + [P_LOCAL_CTRL] = 0x0C, + [P_NEG_RESTART_CTRL] = 0x0D, + [P_REMOTE_STATUS] = 0x0E, + [P_SPEED_STATUS] = 0x09, + [S_TAIL_TAG_CTRL] = 0x0C, + [P_STP_CTRL] = 0x02, + [S_START_CTRL] = 0x01, + [S_BROADCAST_CTRL] = 0x06, + [S_MULTICAST_CTRL] = 0x04, +}; + +static const u32 ksz8895_masks[] = { + [PORT_802_1P_REMAPPING] = BIT(7), + [SW_TAIL_TAG_ENABLE] = BIT(1), + [MIB_COUNTER_OVERFLOW] = BIT(7), + [MIB_COUNTER_VALID] = BIT(6), + [VLAN_TABLE_FID] = GENMASK(6, 0), + [VLAN_TABLE_MEMBERSHIP] = GENMASK(11, 7), + [VLAN_TABLE_VALID] = BIT(12), + [STATIC_MAC_TABLE_VALID] = BIT(21), + [STATIC_MAC_TABLE_USE_FID] = BIT(23), + [STATIC_MAC_TABLE_FID] = GENMASK(30, 24), + [STATIC_MAC_TABLE_OVERRIDE] = BIT(22), + [STATIC_MAC_TABLE_FWD_PORTS] = GENMASK(20, 16), + [DYNAMIC_MAC_TABLE_ENTRIES_H] = GENMASK(6, 0), + [DYNAMIC_MAC_TABLE_MAC_EMPTY] = BIT(7), + [DYNAMIC_MAC_TABLE_NOT_READY] = BIT(7), + [DYNAMIC_MAC_TABLE_ENTRIES] = GENMASK(31, 29), + [DYNAMIC_MAC_TABLE_FID] = GENMASK(22, 16), + [DYNAMIC_MAC_TABLE_SRC_PORT] = GENMASK(26, 24), + [DYNAMIC_MAC_TABLE_TIMESTAMP] = GENMASK(28, 27), +}; + +static const u8 ksz8895_shifts[] = { + [VLAN_TABLE_MEMBERSHIP_S] = 7, + [VLAN_TABLE] = 13, + [STATIC_MAC_FWD_PORTS] = 16, + [STATIC_MAC_FID] = 24, + [DYNAMIC_MAC_ENTRIES_H] = 3, + [DYNAMIC_MAC_ENTRIES] = 29, + [DYNAMIC_MAC_FID] = 16, + [DYNAMIC_MAC_TIMESTAMP] = 27, + [DYNAMIC_MAC_SRC_PORT] = 24, +}; + static const u16 ksz9477_regs[] = { [REG_SW_MAC_ADDR] = 0x0302, [P_STP_CTRL] = 0x0B04, @@ -1397,7 +1452,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .port_cnt = 3, .num_tx_queues = 4, .num_ipms = 4, - .ops = &ksz88x3_dev_ops, + .ops = &ksz88xx_dev_ops, .phylink_mac_ops = &ksz8830_phylink_mac_ops, .mib_names = ksz88xx_mib_names, .mib_cnt = ARRAY_SIZE(ksz88xx_mib_names), @@ -1412,6 +1467,61 @@ const struct ksz_chip_data ksz_switch_chips[] = { .rd_table = &ksz8873_register_set, }, + [KSZ8864] = { + /* WARNING + * ======= + * KSZ8864 is similar to KSZ8895, except the first port + * does not exist. + * external cpu + * KSZ8864 1,2,3 4 + * KSZ8895 0,1,2,3 4 + * port_cnt is configured as 5, even though it is 4 + */ + .chip_id = KSZ8864_CHIP_ID, + .dev_name = "KSZ8864", + .num_vlans = 4096, + .num_alus = 0, + .num_statics = 32, + .cpu_ports = 0x10, /* can be configured as cpu port */ + .port_cnt = 5, /* total cpu and user ports */ + .num_tx_queues = 4, + .num_ipms = 4, + .ops = &ksz88xx_dev_ops, + .phylink_mac_ops = &ksz8830_phylink_mac_ops, + .mib_names = ksz88xx_mib_names, + .mib_cnt = ARRAY_SIZE(ksz88xx_mib_names), + .reg_mib_cnt = MIB_COUNTER_NUM, + .regs = ksz8895_regs, + .masks = ksz8895_masks, + .shifts = ksz8895_shifts, + .supports_mii = {false, false, false, false, true}, + .supports_rmii = {false, false, false, false, true}, + .internal_phy = {false, true, true, true, false}, + }, + + [KSZ8895] = { + .chip_id = KSZ8895_CHIP_ID, + .dev_name = "KSZ8895", + .num_vlans = 4096, + .num_alus = 0, + .num_statics = 32, + .cpu_ports = 0x10, /* can be configured as cpu port */ + .port_cnt = 5, /* total cpu and user ports */ + .num_tx_queues = 4, + .num_ipms = 4, + .ops = &ksz88xx_dev_ops, + .phylink_mac_ops = &ksz8830_phylink_mac_ops, + .mib_names = ksz88xx_mib_names, + .mib_cnt = ARRAY_SIZE(ksz88xx_mib_names), + .reg_mib_cnt = MIB_COUNTER_NUM, + .regs = ksz8895_regs, + .masks = ksz8895_masks, + .shifts = ksz8895_shifts, + .supports_mii = {false, false, false, false, true}, + .supports_rmii = {false, false, false, false, true}, + .internal_phy = {true, true, true, true, false}, + }, + [KSZ9477] = { .chip_id = KSZ9477_CHIP_ID, .dev_name = "KSZ9477", @@ -2937,9 +3047,7 @@ static enum dsa_tag_protocol ksz_get_tag_protocol(struct dsa_switch *ds, struct ksz_device *dev = ds->priv; enum dsa_tag_protocol proto = DSA_TAG_PROTO_NONE; - if (dev->chip_id == KSZ8795_CHIP_ID || - dev->chip_id == KSZ8794_CHIP_ID || - dev->chip_id == KSZ8765_CHIP_ID) + if (ksz_is_ksz87xx(dev) || ksz_is_8895_family(dev)) proto = DSA_TAG_PROTO_KSZ8795; if (dev->chip_id == KSZ8830_CHIP_ID || @@ -3055,6 +3163,8 @@ static int ksz_max_mtu(struct dsa_switch *ds, int port) case KSZ8765_CHIP_ID: return KSZ8795_HUGE_PACKET_SIZE - VLAN_ETH_HLEN - ETH_FCS_LEN; case KSZ8830_CHIP_ID: + case KSZ8864_CHIP_ID: + case KSZ8895_CHIP_ID: return KSZ8863_HUGE_PACKET_SIZE - VLAN_ETH_HLEN - ETH_FCS_LEN; case KSZ8563_CHIP_ID: case KSZ8567_CHIP_ID: @@ -3412,6 +3522,18 @@ static int ksz_switch_detect(struct ksz_device *dev) else return -ENODEV; break; + case KSZ8895_FAMILY_ID: + if (id2 == KSZ8895_CHIP_ID_95 || + id2 == KSZ8895_CHIP_ID_95R) + dev->chip_id = KSZ8895_CHIP_ID; + else + return -ENODEV; + ret = ksz_read8(dev, REG_KSZ8864_CHIP_ID, &id4); + if (ret) + return ret; + if (id4 & SW_KSZ8864) + dev->chip_id = KSZ8864_CHIP_ID; + break; default: ret = ksz_read32(dev, REG_CHIP_ID0, &id32); if (ret) diff --git a/drivers/net/dsa/microchip/ksz_common.h b/drivers/net/dsa/microchip/ksz_common.h index 8094d90d6ca4..e08d5a1339f4 100644 --- a/drivers/net/dsa/microchip/ksz_common.h +++ b/drivers/net/dsa/microchip/ksz_common.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0 */ /* Microchip switch driver common header * - * Copyright (C) 2017-2019 Microchip Technology Inc. + * Copyright (C) 2017-2024 Microchip Technology Inc. */ #ifndef __KSZ_COMMON_H @@ -201,6 +201,8 @@ enum ksz_model { KSZ8794, KSZ8765, KSZ8830, + KSZ8864, + KSZ8895, KSZ9477, KSZ9896, KSZ9897, @@ -629,9 +631,21 @@ static inline bool ksz_is_ksz88x3(struct ksz_device *dev) return dev->chip_id == KSZ8830_CHIP_ID; } +static inline bool ksz_is_8895_family(struct ksz_device *dev) +{ + return dev->chip_id == KSZ8895_CHIP_ID || + dev->chip_id == KSZ8864_CHIP_ID; +} + static inline bool is_ksz8(struct ksz_device *dev) { - return ksz_is_ksz87xx(dev) || ksz_is_ksz88x3(dev); + return ksz_is_ksz87xx(dev) || ksz_is_ksz88x3(dev) || + ksz_is_8895_family(dev); +} + +static inline bool is_ksz88xx(struct ksz_device *dev) +{ + return ksz_is_ksz88x3(dev) || ksz_is_8895_family(dev); } static inline bool is_ksz9477(struct ksz_device *dev) @@ -665,6 +679,7 @@ static inline bool is_lan937x_tx_phy(struct ksz_device *dev, int port) #define SW_FAMILY_ID_M GENMASK(15, 8) #define KSZ87_FAMILY_ID 0x87 #define KSZ88_FAMILY_ID 0x88 +#define KSZ8895_FAMILY_ID 0x95 #define KSZ8_PORT_STATUS_0 0x08 #define KSZ8_PORT_FIBER_MODE BIT(7) @@ -673,6 +688,12 @@ static inline bool is_lan937x_tx_phy(struct ksz_device *dev, int port) #define KSZ87_CHIP_ID_94 0x6 #define KSZ87_CHIP_ID_95 0x9 #define KSZ88_CHIP_ID_63 0x3 +#define KSZ8895_CHIP_ID_95 0x4 +#define KSZ8895_CHIP_ID_95R 0x6 + +/* KSZ8895 specific register */ +#define REG_KSZ8864_CHIP_ID 0xFE +#define SW_KSZ8864 BIT(7) #define SW_REV_ID_M GENMASK(7, 4) diff --git a/drivers/net/dsa/microchip/ksz_dcb.c b/drivers/net/dsa/microchip/ksz_dcb.c index 086bc9b3cf53..30b4a6186e38 100644 --- a/drivers/net/dsa/microchip/ksz_dcb.c +++ b/drivers/net/dsa/microchip/ksz_dcb.c @@ -113,7 +113,7 @@ static void ksz_get_default_port_prio_reg(struct ksz_device *dev, int *reg, static void ksz_get_dscp_prio_reg(struct ksz_device *dev, int *reg, int *per_reg, u8 *mask) { - if (ksz_is_ksz87xx(dev)) { + if (ksz_is_ksz87xx(dev) || ksz_is_8895_family(dev)) { *reg = KSZ8765_REG_TOS_DSCP_CTRL; *per_reg = 4; *mask = GENMASK(1, 0); diff --git a/drivers/net/dsa/microchip/ksz_spi.c b/drivers/net/dsa/microchip/ksz_spi.c index 8e8d83213b04..f4287310e89f 100644 --- a/drivers/net/dsa/microchip/ksz_spi.c +++ b/drivers/net/dsa/microchip/ksz_spi.c @@ -2,7 +2,7 @@ /* * Microchip ksz series register access through SPI * - * Copyright (C) 2017 Microchip Technology Inc. + * Copyright (C) 2017-2024 Microchip Technology Inc. * Tristram Ha */ @@ -60,6 +60,9 @@ static int ksz_spi_probe(struct spi_device *spi) chip->chip_id == KSZ8794_CHIP_ID || chip->chip_id == KSZ8765_CHIP_ID) regmap_config = ksz8795_regmap_config; + else if (chip->chip_id == KSZ8895_CHIP_ID || + chip->chip_id == KSZ8864_CHIP_ID) + regmap_config = ksz8863_regmap_config; else regmap_config = ksz9477_regmap_config; @@ -136,10 +139,18 @@ static const struct of_device_id ksz_dt_ids[] = { .compatible = "microchip,ksz8863", .data = &ksz_switch_chips[KSZ8830] }, + { + .compatible = "microchip,ksz8864", + .data = &ksz_switch_chips[KSZ8864] + }, { .compatible = "microchip,ksz8873", .data = &ksz_switch_chips[KSZ8830] }, + { + .compatible = "microchip,ksz8895", + .data = &ksz_switch_chips[KSZ8895] + }, { .compatible = "microchip,ksz9477", .data = &ksz_switch_chips[KSZ9477] @@ -201,7 +212,9 @@ static const struct spi_device_id ksz_spi_ids[] = { { "ksz8794" }, { "ksz8795" }, { "ksz8863" }, + { "ksz8864" }, { "ksz8873" }, + { "ksz8895" }, { "ksz9477" }, { "ksz9896" }, { "ksz9897" }, diff --git a/include/linux/platform_data/microchip-ksz.h b/include/linux/platform_data/microchip-ksz.h index 8c659db4da6b..d074019474f5 100644 --- a/include/linux/platform_data/microchip-ksz.h +++ b/include/linux/platform_data/microchip-ksz.h @@ -28,6 +28,8 @@ enum ksz_chip_id { KSZ8794_CHIP_ID = 0x8794, KSZ8765_CHIP_ID = 0x8765, KSZ8830_CHIP_ID = 0x8830, + KSZ8864_CHIP_ID = 0x8864, + KSZ8895_CHIP_ID = 0x8895, KSZ9477_CHIP_ID = 0x00947700, KSZ9896_CHIP_ID = 0x00989600, KSZ9897_CHIP_ID = 0x00989700,