From patchwork Mon Nov 26 00:15:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Grygorii Strashko X-Patchwork-Id: 151957 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp4970665ljp; Sun, 25 Nov 2018 16:16:06 -0800 (PST) X-Google-Smtp-Source: AFSGD/Xtdw0iHd5yVOf5wOqw46YxJiSNNTJJjsb0PS8sMRFoiHduv/Cr4X5Iou5iZkTCu7c9vpCg X-Received: by 2002:a17:902:f20d:: with SMTP id gn13mr24357044plb.11.1543191366694; Sun, 25 Nov 2018 16:16:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543191366; cv=none; d=google.com; s=arc-20160816; b=cBdNuXVqfL6YR57Mo+3ub2BnpAoSp1OqoGOgKhOVVF8p87VO1sQ6gcSxUlExT/fMBz 1dwBdN+SuIetSFhBtio2Vezr7VgQV5C9Fg1Vy+WP3jObNh6CmGzg0AVf+GouOaw0tjLH 5EJHO9YICQKgl6VMeLN7ZI9lZ9c9d2nGCswnifhJoniAn6htSOkAgtNk0cF2ftINUNXD 9IBPSFoOkUG76jxwD90zTgQgKP9muyesouqFaNJMm2iDiF8cgOftiqTeliDbyRvWkb5Q PtH6pAk6zVNp7hEvUR14+Gr9AvX9uqNh+DL6VB2m24jUhHwD1n0jouWBvuMG6mLq3V53 uHow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from; bh=dTyu+eNo6y8D5hsL7r6wMSL4OeEvBDnpeBAe/xJ3KAg=; b=DjjWCRHb8BVWze50RkXVf2AqDTUayoVEfNGfB7AcvRFp99KraHIA7IJlGYwXAaq0vM VvCZLUuW+8QsRR5OT3cdY0QmC6I7rqsutg/9U7bs8pTVFah4Cu/jULmojC/o3/LlZl9F 9F+QE4Pg5tfWSwuba665/rgJrMQPB5bcMXOQX4tRU2g92h/yX4cQ0QttNRRqydYYU+8P 0Uu5/cydfMad1U2GQE8xgjAlby9hvUomrNv5AeVQe609doRpsXZBQb/9AtI8BXPv8RMa UqggBfeIwcIzku340kMlr/vrhW9+YTGevwujFZmGh10la0tfOKARzmUSlYL3xEpYGG6F WMMw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v5si58559537pgg.1.2018.11.25.16.16.06; Sun, 25 Nov 2018 16:16:06 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726210AbeKZLIW (ORCPT + 32 others); Mon, 26 Nov 2018 06:08:22 -0500 Received: from fllv0016.ext.ti.com ([198.47.19.142]:51962 "EHLO fllv0016.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726079AbeKZLIV (ORCPT ); Mon, 26 Nov 2018 06:08:21 -0500 Received: from fllv0035.itg.ti.com ([10.64.41.0]) by fllv0016.ext.ti.com (8.15.2/8.15.2) with ESMTP id wAQ0FXgh097194; Sun, 25 Nov 2018 18:15:33 -0600 Received: from DLEE113.ent.ti.com (dlee113.ent.ti.com [157.170.170.24]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTPS id wAQ0FXha126518 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Sun, 25 Nov 2018 18:15:33 -0600 Received: from DLEE108.ent.ti.com (157.170.170.38) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1591.10; Sun, 25 Nov 2018 18:15:32 -0600 Received: from dlep32.itg.ti.com (157.170.170.100) by DLEE108.ent.ti.com (157.170.170.38) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1591.10 via Frontend Transport; Sun, 25 Nov 2018 18:15:33 -0600 Received: from legion.dal.desgin.ti.com (legion.dal.design.ti.com [128.247.22.53]) by dlep32.itg.ti.com (8.14.3/8.13.8) with ESMTP id wAQ0FWna030819; Sun, 25 Nov 2018 18:15:32 -0600 Received: from localhost (uda0226610.dhcp.ti.com [128.247.59.147]) by legion.dal.desgin.ti.com (8.11.7p1+Sun/8.11.7) with ESMTP id wAQ0FWU04334; Sun, 25 Nov 2018 18:15:32 -0600 (CST) From: Grygorii Strashko To: "David S. Miller" , Tony Lindgren , Kishon Vijay Abraham I , Rob Herring CC: , Sekhar Nori , , , Andrew Lunn , , , Grygorii Strashko Subject: [PATCH linux-next 00/10] net: ethernet: ti: cpsw: replace cpsw-phy-sel with phy driver Date: Sun, 25 Nov 2018 18:15:21 -0600 Message-ID: <20181126001531.12974-1-grygorii.strashko@ti.com> X-Mailer: git-send-email 2.10.5 MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org TI am335x/am437x/dra7(am5)/dm814x CPSW3G Ethernet Subsystem supports two 10/100/1000 Ethernet ports with selectable G/MII, RMII, and RGMII interfaces. The interface mode is selected by configuring the MII mode selection register(s) (GMII_SEL) in the System Control Module chapter (SCM). +--------------+ +-------------------------------+ |SCM | | CPSW | | +---------+ | | +--------------------------------+gmii_sel | | | | | | +---------+ | | +----v---+ +--------+ | +--------------+ | |Port 1..<--+-->GMII/MII<-------> | | | | | | | | +--------+ | +--------+ | | | | | | +--------+ | | | | RMII <-------> | +--> | | | | +--------+ | | | | | | +--------+ | | | | RGMII <-------> | +--> | | | +--------+ | +-------------------------------+ GMII_SEL register(s) and bit fields placement in SCM are different between SoCs while fields meaning is the same. GMII_SEL(s) allows to select - Port GMII/MII/RMII/RGMII Mode; RGMII Internal Delay Mode (SoC dependant) and RMII Reference Clock Output mode (SoC dependant). Historically CPSW external Port's interface mode selection configuartion was introduced using custom driver and API cpsw-phy-sel.c. This leads to unnecessary driver, DT binding and custom API support effort. Moreover, even definition of cpsw-phy-sel node in DTs is logically incorrect [1] mac: ethernet@4a100000 { compatible = "ti,am4372-cpsw","ti,cpsw"; ... phy_sel: cpsw-phy-sel@44e10650 { compatible = "ti,am43xx-cpsw-phy-sel"; reg= <0x44e10650 0x4>; reg-names = "gmii-sel"; }; }; This series replaces custom CPSW Port interface selection implementation (cpsw-phy-sel.c) with well defined Linux PHY framework interface instead. It introduces CPSW Port's PHY Interface Mode selection Driver (phy-gmii-sel) which implements standard Linux PHY interface. The phy-gmii-sel PHY device should defined as child device of SCM node (scm_conf) and can be attached to each CPSW port node using standard PHY bindings (cell 1 - port number, cell 2 - RMII refclk mode). scm_conf: scm_conf@0 { compatible = "syscon", "simple-bus"; gmii_sel_phy: cpsw-sel-netif { compatible = "ti,am43xx-gmii-sel-phy"; syscon-scm = <&scm_conf>; #phy-cells = <2>; }; }; mac: ethernet@4a100000 { compatible = "ti,am4372-cpsw","ti,cpsw"; cpsw_emac0: slave@4a100200 { phy-mode = "rgmii"; phys = <&gmii_sel_phy 1 0>; }; }; The CPSW driver requests phy-gmii-sel PHY for each external port and uses recently introduced PHY API phy_set_mode_ext() [1] for port interface mode selection when netdev is opened. slave->data->gmii_sel_phy = devm_of_phy_get(&pdev->dev, port_node, NULL); slave->data->phy_if = of_get_phy_mode(port_node); cpsw_ndo_open() phy_set_mode_ext(slave->data->gmii_sel_phy, PHY_MODE_ETHERNET, slave->data->phy_if); Note. CPSW Port interface has to be reconfigured every time netdev is opened for proper System Suspend support where CPSW can lose context. [1] https://patchwork.kernel.org/cover/10689739/ Cc: Kishon Vijay Abraham I Cc: Tony Lindgren Grygorii Strashko (10): dt-bindings: phy: add cpsw port interface mode selection phy bindings phy: ti: introduce phy-gmii-sel driver dt-bindings: net: ti: cpsw: switch to use phy-gmii-sel phy net: ethernet: ti: cpsw: add support for port interface mode selection phy ARM: dts: dra7: switch to use phy-gmii-sel ARM: dts: dm814x: switch to use phy-gmii-sel ARM: dts: am4372: switch to use phy-gmii-sel ARM: dts: am335x: switch to use phy-gmii-sel dt-bindings: net: ti: deprecate cpsw-phy-sel bindings net: ethernet: ti: cpsw: deprecate cpsw-phy-sel driver .../devicetree/bindings/net/cpsw-phy-sel.txt | 2 +- Documentation/devicetree/bindings/net/cpsw.txt | 8 +- .../devicetree/bindings/phy/ti-phy-gmii-sel.txt | 68 ++++ arch/arm/boot/dts/am335x-baltos-ir2110.dts | 4 - arch/arm/boot/dts/am335x-baltos-ir3220.dts | 4 - arch/arm/boot/dts/am335x-baltos-ir5221.dts | 4 - arch/arm/boot/dts/am335x-chiliboard.dts | 4 - arch/arm/boot/dts/am335x-icev2.dts | 4 - arch/arm/boot/dts/am335x-igep0033.dtsi | 4 - arch/arm/boot/dts/am335x-lxm.dts | 4 - arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi | 5 - arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts | 5 - arch/arm/boot/dts/am335x-phycore-som.dtsi | 4 - arch/arm/boot/dts/am33xx-l4.dtsi | 15 +- arch/arm/boot/dts/am437x-l4.dtsi | 17 +- arch/arm/boot/dts/am43x-epos-evm.dts | 5 +- arch/arm/boot/dts/dm814x.dtsi | 15 +- arch/arm/boot/dts/dra7-l4.dtsi | 15 +- drivers/net/ethernet/ti/Kconfig | 6 +- drivers/net/ethernet/ti/cpsw.c | 19 +- drivers/net/ethernet/ti/cpsw.h | 6 + drivers/phy/ti/Kconfig | 10 + drivers/phy/ti/Makefile | 1 + drivers/phy/ti/phy-gmii-sel.c | 349 +++++++++++++++++++++ 24 files changed, 498 insertions(+), 80 deletions(-) create mode 100644 Documentation/devicetree/bindings/phy/ti-phy-gmii-sel.txt create mode 100644 drivers/phy/ti/phy-gmii-sel.c -- 2.10.5