From patchwork Fri Aug 23 08:43:35 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Mack X-Patchwork-Id: 2848623 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 2EBF49F271 for ; Fri, 23 Aug 2013 08:45:19 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 5F045201DD for ; Fri, 23 Aug 2013 08:45:15 +0000 (UTC) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 30BCD201CD for ; Fri, 23 Aug 2013 08:45:11 +0000 (UTC) Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1VCmz4-0004rs-PF; Fri, 23 Aug 2013 08:44:43 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1VCmyv-0004rp-8A; Fri, 23 Aug 2013 08:44:33 +0000 Received: from svenfoo.org ([82.94.215.22] helo=mail.zonque.de) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1VCmyT-0004mt-NF for linux-arm-kernel@lists.infradead.org; Fri, 23 Aug 2013 08:44:09 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.zonque.de (Postfix) with ESMTP id 21A2FC1684; Fri, 23 Aug 2013 10:43:45 +0200 (CEST) Received: from mail.zonque.de ([127.0.0.1]) by localhost (rambrand.bugwerft.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id t-ZPXsrqwV3F; Fri, 23 Aug 2013 10:43:45 +0200 (CEST) Received: from tamtam.fritz.box (p5DDC680F.dip0.t-ipconnect.de [93.220.104.15]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.zonque.de (Postfix) with ESMTPSA id 3334CC167D; Fri, 23 Aug 2013 10:43:44 +0200 (CEST) From: Daniel Mack To: netdev@vger.kernel.org Subject: [PATCH v2 3/5] net: ethernet: cpsw: introduce ti, am3352-cpsw compatible string Date: Fri, 23 Aug 2013 10:43:35 +0200 Message-Id: <1377247417-27386-4-git-send-email-zonque@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1377247417-27386-1-git-send-email-zonque@gmail.com> References: <1377247417-27386-1-git-send-email-zonque@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130823_044406_104016_E6DA415B X-CRM114-Status: GOOD ( 16.31 ) X-Spam-Score: -0.3 (/) Cc: mugunthanvnm@ti.com, sergei.shtylyov@cogentembedded.com, d-gerlach@ti.com, nsekhar@ti.com, vaibhav.bedia@ti.com, Daniel Mack , devicetree@vger.kernel.org, ujhelyi.m@gmail.com, linux-omap@vger.kernel.org, davem@davemloft.net, linux-arm-kernel@lists.infradead.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, FREEMAIL_FROM,RCVD_IN_DNSWL_MED,RP_MATCHES_RCVD,UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP In order to support features that are specific to the AM335x IP, we have to add hardware types and another compatible string. Signed-off-by: Daniel Mack --- Documentation/devicetree/bindings/net/cpsw.txt | 3 ++- drivers/net/ethernet/ti/cpsw.c | 32 ++++++++++++++++++++------ drivers/net/ethernet/ti/cpsw.h | 1 + 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/Documentation/devicetree/bindings/net/cpsw.txt b/Documentation/devicetree/bindings/net/cpsw.txt index 4e5ca54..b717458 100644 --- a/Documentation/devicetree/bindings/net/cpsw.txt +++ b/Documentation/devicetree/bindings/net/cpsw.txt @@ -2,7 +2,8 @@ TI SoC Ethernet Switch Controller Device Tree Bindings ------------------------------------------------------ Required properties: -- compatible : Should be "ti,cpsw" +- compatible : Should be "ti,cpsw" for generic cpsw support, or + "ti,am3352-cpsw" for AM3352 SoCs - reg : physical base address and size of the cpsw registers map. An optional third memory region can be supplied if diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index bd0b664..2e19de0 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -155,6 +155,11 @@ do { \ ((priv->data.dual_emac) ? priv->emac_port : \ priv->data.active_slave) +enum { + CPSW_TYPE_GENERIC, + CPSW_TYPE_AM33XX +}; + static int debug_level; module_param(debug_level, int, 0); MODULE_PARM_DESC(debug_level, "cpsw debug level (NETIF_MSG bits)"); @@ -1692,17 +1697,36 @@ static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv, slave->port_vlan = data->dual_emac_res_vlan; } +static const struct of_device_id cpsw_of_mtable[] = { + { + .compatible = "ti,cpsw", + .data = (void *) CPSW_TYPE_GENERIC + }, { + .compatible = "ti,am3352-cpsw", + .data = (void *) CPSW_TYPE_AM33XX + }, + { /* sentinel */ }, +}; +MODULE_DEVICE_TABLE(of, cpsw_of_mtable); + static int cpsw_probe_dt(struct cpsw_platform_data *data, struct platform_device *pdev) { struct device_node *node = pdev->dev.of_node; + const struct of_device_id *match; struct device_node *slave_node; + unsigned long match_data; int i = 0, ret; u32 prop; - if (!node) + match = of_match_device(cpsw_of_mtable, &pdev->dev); + + if (!node || !match) return -EINVAL; + match_data = (unsigned long) match->data; + data->hw_type = match_data; + if (of_property_read_u32(node, "slaves", &prop)) { pr_err("Missing slaves property in the DT.\n"); return -EINVAL; @@ -2228,12 +2252,6 @@ static const struct dev_pm_ops cpsw_pm_ops = { .resume = cpsw_resume, }; -static const struct of_device_id cpsw_of_mtable[] = { - { .compatible = "ti,cpsw", }, - { /* sentinel */ }, -}; -MODULE_DEVICE_TABLE(of, cpsw_of_mtable); - static struct platform_driver cpsw_driver = { .driver = { .name = "cpsw", diff --git a/drivers/net/ethernet/ti/cpsw.h b/drivers/net/ethernet/ti/cpsw.h index eb3e101..96c374a 100644 --- a/drivers/net/ethernet/ti/cpsw.h +++ b/drivers/net/ethernet/ti/cpsw.h @@ -37,6 +37,7 @@ struct cpsw_platform_data { u32 mac_control; /* Mac control register */ u16 default_vlan; /* Def VLAN for ALE lookup in VLAN aware mode*/ bool dual_emac; /* Enable Dual EMAC mode */ + u32 hw_type; /* hardware type as specified in 'compatible' */ }; #endif /* __CPSW_H__ */