Received: by 10.223.185.116 with SMTP id b49csp3402564wrg; Tue, 13 Feb 2018 01:52:59 -0800 (PST) X-Google-Smtp-Source: AH8x225wEoLgmyp8BjptralPGnQYTZkxvBbJLvOM4y4TYNmv8cdtV4GpIvBff+aI58hrbWHK41CO X-Received: by 2002:a17:902:e2:: with SMTP id a89-v6mr606179pla.98.1518515579609; Tue, 13 Feb 2018 01:52:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518515579; cv=none; d=google.com; s=arc-20160816; b=dWpw6866py2bARSCP4WNDuGlDUpRFP9vMz5ApubLjiYLEKsP0TbutRWW+Q4GkzZWkE n8mzEUeyH53V2VIzT+C89ToV9sooOlpayaoIUtw4cs6qGezbJeejP9yIZSVBYURy3joL alpTqz2GW3X3F0iv0LkQYLgBJ9n8v/DaZNFPaDuoY8l+PWbRX80JAfQeIek37L4+eZJO h3fBKknsQGfhnPpjrvxe/OLUmBb5B9iUwvNX2VDMLf/4w70Z6SFLADDTQ94Hot8/iGpZ cDEGYhrVspL8Iz49JZTaBYbW4PFCx0ZJDrPeqRR4bhYbsv0dyteTW7aLPSSxpGEj9vz4 SFWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:to:from :arc-authentication-results; bh=52XFtUgPM5MLJjP37CJUWE+p2U4OTe/HqwaDi9wQ28Q=; b=y5aQzfpbQLlVfxERuHQGNy0dydcRbbIb74MoMKZELMxf7HUoJdbLXzSmDbCHH22aan TLIwi4/r0/8RGe13X+qqybPf4o3XeKNLI2bY5fCleicPuxm13jgdkLWMlMfqeiy3EPhH EJ21/kb/YfaJVuDwoIxwSxhaB9e+s3P4Niy7kQt9K4YKiFmnanKc0WwbnitNXjo7+nH/ ThePJKXqCvWv3fU/IYm2Q6iHFz7gZogVpxf+9RoxMwBkflOwRX6GaGgMZLdratLtkems ReLuGsDWM6jhVsKONp0udCqOUVwhOKFtD4/fGUlLvO6FQkTUf6Vu4GoDjU+1ArePEfw7 YrOQ== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v1si2258535pfg.288.2018.02.13.01.52.44; Tue, 13 Feb 2018 01:52:59 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934972AbeBMJvM (ORCPT + 99 others); Tue, 13 Feb 2018 04:51:12 -0500 Received: from mail.phycard.co.uk ([217.6.246.34]:44481 "EHLO root.phytec.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934337AbeBMJvJ (ORCPT ); Tue, 13 Feb 2018 04:51:09 -0500 Received: from idefix.phytec.de (idefix.phytec.de [172.16.0.10]) by root.phytec.de (Postfix) with ESMTP id AEFA4A002FF; Tue, 13 Feb 2018 10:42:55 +0100 (CET) Received: from augenblix.phytec.de ([172.16.0.56]) by idefix.phytec.de (IBM Domino Release 9.0.1FP7) with ESMTP id 2018021310423696-171536 ; Tue, 13 Feb 2018 10:42:36 +0100 From: Daniel Schultz To: robh+dt@kernel.org, mark.rutland@arm.com, andrew@lunn.ch, f.fainelli@gmail.com, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] net: phy: dp83867: Add binding for the CLK_OUT pin muxing option Date: Tue, 13 Feb 2018 10:42:31 +0100 Message-Id: <1518514952-22392-1-git-send-email-d.schultz@phytec.de> X-Mailer: git-send-email 2.7.4 X-MIMETrack: Itemize by SMTP Server on Idefix/Phytec(Release 9.0.1FP7|August 17, 2016) at 13.02.2018 10:42:37, Serialize by Router on Idefix/Phytec(Release 9.0.1FP7|August 17, 2016) at 13.02.2018 10:42:37, Serialize complete at 13.02.2018 10:42:37 X-TNEFEvaluated: 1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wadim Egorov The DP83867 has a muxing option for the CLK_OUT pin. It is possible to set CLK_OUT for different channels. Create a binding to select a specific clock for CLK_OUT pin. Signed-off-by: Wadim Egorov Signed-off-by: Daniel Schultz --- drivers/net/phy/dp83867.c | 14 ++++++++++++++ include/dt-bindings/net/ti-dp83867.h | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c index c1ab976..ffb97c2 100644 --- a/drivers/net/phy/dp83867.c +++ b/drivers/net/phy/dp83867.c @@ -75,6 +75,8 @@ #define DP83867_IO_MUX_CFG_IO_IMPEDANCE_MAX 0x0 #define DP83867_IO_MUX_CFG_IO_IMPEDANCE_MIN 0x1f +#define DP83867_IO_MUX_CFG_CLK_O_SEL_MASK (0x1f << 8) +#define DP83867_IO_MUX_CFG_CLK_O_SEL_SHIFT 8 /* CFG4 bits */ #define DP83867_CFG4_PORT_MIRROR_EN BIT(0) @@ -92,6 +94,7 @@ struct dp83867_private { int io_impedance; int port_mirroring; bool rxctrl_strap_quirk; + int clk_output_sel; }; static int dp83867_ack_interrupt(struct phy_device *phydev) @@ -160,6 +163,11 @@ static int dp83867_of_init(struct phy_device *phydev) dp83867->io_impedance = -EINVAL; /* Optional configuration */ + if (of_property_read_u32(of_node, "ti,clk-output-sel", + &dp83867->clk_output_sel)) + /* Keep the default value if ti,clk-output-sel is not set */ + dp83867->clk_output_sel = DP83867_CLK_O_SEL_REF_CLK; + if (of_property_read_bool(of_node, "ti,max-output-impedance")) dp83867->io_impedance = DP83867_IO_MUX_CFG_IO_IMPEDANCE_MAX; else if (of_property_read_bool(of_node, "ti,min-output-impedance")) @@ -295,6 +303,12 @@ static int dp83867_config_init(struct phy_device *phydev) if (dp83867->port_mirroring != DP83867_PORT_MIRROING_KEEP) dp83867_config_port_mirroring(phydev); + /* Clock output selection */ + val = phy_read_mmd(phydev, DP83867_DEVADDR, DP83867_IO_MUX_CFG); + val &= ~DP83867_IO_MUX_CFG_CLK_O_SEL_MASK; + val |= (dp83867->clk_output_sel << DP83867_IO_MUX_CFG_CLK_O_SEL_SHIFT); + phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_IO_MUX_CFG, val); + return 0; } diff --git a/include/dt-bindings/net/ti-dp83867.h b/include/dt-bindings/net/ti-dp83867.h index 172744a..7b16564 100644 --- a/include/dt-bindings/net/ti-dp83867.h +++ b/include/dt-bindings/net/ti-dp83867.h @@ -42,4 +42,18 @@ #define DP83867_RGMIIDCTL_3_75_NS 0xe #define DP83867_RGMIIDCTL_4_00_NS 0xf +/* IO_MUX_CFG - Clock output selection */ +#define DP83867_CLK_O_SEL_CHN_A_RCLK 0x0 +#define DP83867_CLK_O_SEL_CHN_B_RCLK 0x1 +#define DP83867_CLK_O_SEL_CHN_C_RCLK 0x2 +#define DP83867_CLK_O_SEL_CHN_D_RCLK 0x3 +#define DP83867_CLK_O_SEL_CHN_A_RCLK_DIV5 0x4 +#define DP83867_CLK_O_SEL_CHN_B_RCLK_DIV5 0x5 +#define DP83867_CLK_O_SEL_CHN_C_RCLK_DIV5 0x6 +#define DP83867_CLK_O_SEL_CHN_D_RCLK_DIV5 0x7 +#define DP83867_CLK_O_SEL_CHN_A_TCLK 0x8 +#define DP83867_CLK_O_SEL_CHN_B_TCLK 0x9 +#define DP83867_CLK_O_SEL_CHN_C_TCLK 0xA +#define DP83867_CLK_O_SEL_CHN_D_TCLK 0xB +#define DP83867_CLK_O_SEL_REF_CLK 0xC #endif -- 2.7.4