From patchwork Mon Mar 20 08:52:50 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 740848 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vmqXy6ZRLz9s73 for ; Mon, 20 Mar 2017 19:55:46 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753385AbdCTIzV (ORCPT ); Mon, 20 Mar 2017 04:55:21 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:51461 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753084AbdCTIzQ (ORCPT ); Mon, 20 Mar 2017 04:55:16 -0400 Received: from wuerfel.lan ([78.42.17.5]) by mrelayeu.kundenserver.de (mreue103 [212.227.15.145]) with ESMTPA (Nemesis) id 0LkAig-1cDnMX2Hgg-00cAww; Mon, 20 Mar 2017 09:53:47 +0100 From: Arnd Bergmann To: Grygorii Strashko , "David S. Miller" Cc: Arnd Bergmann , Thomas Gleixner , Richard Cochran , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Nicolas Pitre , WingMan Kwok , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] [v2, -net] cpsw/netcp: work around reverse cpts dependency Date: Mon, 20 Mar 2017 09:52:50 +0100 Message-Id: <20170320085339.1033988-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:KGwYJGe10YxeB7FMq9bvnowyr69ZthrAp9LmwYMXbLN4tGxUOVK uBKcp0vJ1WMYm4fo3gczQOfbqNdG8tQ7/csf+Ey5P/xOWzloLFcNMWTZUlQpDZnyQ2HYwwU f8j9wpZ5XsDdjSgnIbFsCZGVGb0ok3gzNYH4LSkkAk5xqeIfOB8Cm2RiNyJ07jyNhdTRMXy IQyR1Hhxx7P7KCYSt/jEg== X-UI-Out-Filterresults: notjunk:1; V01:K0:BCgMFadA4kM=:mXSMALlpjRMZBEvd7ssAfV iVAxnysXmdFnA5RmC7q1eltYMI4ph4Zkjx2C2ckeFrgB/JYAn9WCzm4TreT2tbJ42VZHuoZvC /NNOz9HPyNPocdSClNTtnmeWNeV9CTHZHCHRvCgeab8AL7Gf/6/Pmm4GLxJk42reGWs9uUJUM WIKN6/YD5qebscBAp3YtzmCPRu7E8mQNOCKq1nBn2pGlVM3jHIEjqiPfFTqEH2DrNsOIOqQgk mSzr/t2TQXIoXL9rJ94baCHqPn5t+1yuT03VPF7SYG19iL+sqgouYfROJWj8NjjCW5eLH6Rey jwSFwqL6LNBBs8TnAIMyOALFIJ9zSYWC8HtdeIAdoyfifg8wnWQYvpXK79Rg1j2AE7irRT25J lZO3yzg9c+bU+sLgKmNPICxyf9QnSoLPcMs0U3ulipPWUmc2lL6qX1T4nZwtMCBbbMTC3Zu+n cqjrWg7D3OfoTJjX5gMiTwIQYcV0HIVI6OAhQrcEKy7RDSzuBE7v4qErKu2aY2Uq02vltkd1C ImYCZ7N9w4AojCDV9PlV44A3Wf+DW72zmjtZ7tL68Njth+p0dHG8M7FY75aRuICew8FILKcjk zo8FhaF/OI3+cktt4ZBi75U0HqVzfKd/umUpE0Hjq3puWK0hM2qCuw9QTyU4sA2cpf2BOqVQw 9n6ir/7AgO52COiajaVJtuEjALNZKbYqPYTpEaaeRRgP+1cgboHQctuweGYuCOUwfvzc= Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The dependency is reversed: cpsw and netcp call into cpts, but cpts depends on the other two in Kconfig. This can lead to cpts being a loadable module and its callers built-in: drivers/net/ethernet/ti/cpsw.o: In function `cpsw_remove': cpsw.c:(.text.cpsw_remove+0xd0): undefined reference to `cpts_release' drivers/net/ethernet/ti/cpsw.o: In function `cpsw_rx_handler': cpsw.c:(.text.cpsw_rx_handler+0x2dc): undefined reference to `cpts_rx_timestamp' drivers/net/ethernet/ti/cpsw.o: In function `cpsw_tx_handler': cpsw.c:(.text.cpsw_tx_handler+0x7c): undefined reference to `cpts_tx_timestamp' drivers/net/ethernet/ti/cpsw.o: In function `cpsw_ndo_stop': As a workaround, I'm introducing another Kconfig symbol to control the compilation of cpts, while making the actual module controlled by a silent symbol that is =y when necessary. Fixes: 6246168b4a38 ("net: ethernet: ti: netcp: add support of cpts") Signed-off-by: Arnd Bergmann Reviewed-by: Grygorii Strashko --- v1: Originally submitted on Dec 16, still needed for v4.10 and v4.11-rc2 v2: change the symbol names to keep existing defconfigs working --- drivers/net/ethernet/ti/Kconfig | 8 +++++++- drivers/net/ethernet/ti/Makefile | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig index bd0af5974a75..9e631952b86f 100644 --- a/drivers/net/ethernet/ti/Kconfig +++ b/drivers/net/ethernet/ti/Kconfig @@ -74,7 +74,7 @@ config TI_CPSW will be called cpsw. config TI_CPTS - tristate "TI Common Platform Time Sync (CPTS) Support" + bool "TI Common Platform Time Sync (CPTS) Support" depends on TI_CPSW || TI_KEYSTONE_NETCP depends on PTP_1588_CLOCK ---help--- @@ -83,6 +83,12 @@ config TI_CPTS The unit can time stamp PTP UDP/IPv4 and Layer 2 packets, and the driver offers a PTP Hardware Clock. +config TI_CPTS_MOD + tristate + depends on TI_CPTS + default y if TI_CPSW=y || TI_KEYSTONE_NETCP=y + default m + config TI_KEYSTONE_NETCP tristate "TI Keystone NETCP Core Support" select TI_CPSW_ALE diff --git a/drivers/net/ethernet/ti/Makefile b/drivers/net/ethernet/ti/Makefile index 1e7c10bf8713..10e6b0ce51ba 100644 --- a/drivers/net/ethernet/ti/Makefile +++ b/drivers/net/ethernet/ti/Makefile @@ -12,7 +12,7 @@ obj-$(CONFIG_TI_DAVINCI_MDIO) += davinci_mdio.o obj-$(CONFIG_TI_DAVINCI_CPDMA) += davinci_cpdma.o obj-$(CONFIG_TI_CPSW_PHY_SEL) += cpsw-phy-sel.o obj-$(CONFIG_TI_CPSW_ALE) += cpsw_ale.o -obj-$(CONFIG_TI_CPTS) += cpts.o +obj-$(CONFIG_TI_CPTS_MOD) += cpts.o obj-$(CONFIG_TI_CPSW) += ti_cpsw.o ti_cpsw-y := cpsw.o