From patchwork Thu Apr 18 01:26:11 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nobuhiro Iwamatsu X-Patchwork-Id: 237390 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 5FF062C017F for ; Thu, 18 Apr 2013 11:26:26 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935765Ab3DRB0X (ORCPT ); Wed, 17 Apr 2013 21:26:23 -0400 Received: from mail-pd0-f171.google.com ([209.85.192.171]:54157 "EHLO mail-pd0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753634Ab3DRB0W (ORCPT ); Wed, 17 Apr 2013 21:26:22 -0400 Received: by mail-pd0-f171.google.com with SMTP id z10so1167603pdj.16 for ; Wed, 17 Apr 2013 18:26:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:sender:from:to:cc:subject:date:message-id:x-mailer :x-gm-message-state; bh=m934NSBC9m+3NBO0ISgNEohH/LLbxq3VWpDJKG1CDqs=; b=PlpBwmj4jsEMCH0slOQpnYGalVEfdRDz1J2n1mf5sBGyduaTL3onFrX7NqQhirphLB CrH0Hn1d9oNDvt8tuQErQXALkM0bGD7BQ0m/U+7IA1A9lDVgKCQQjBQUVXGkKu47OuYH +Oja6JTEF1BfFptOubAaxO+TPDK9QKHSn7Tw8D2igVG+cG8zXTSi65QhFih66ExwRyEy kOV+Q/167CE7LDGfOoQI4qJElQATsw0pvQj46u9KlC0E8VLR+cOkQxM1gL3xXfwXZgSy nz3bszPo2BTNeQNiuTJMlsFvUg5aD9BRFx3OtLg01+fLdrBnScD9drCoMYGzxm0X1Vds TUtw== X-Received: by 10.68.17.39 with SMTP id l7mr11617994pbd.18.1366248381732; Wed, 17 Apr 2013 18:26:21 -0700 (PDT) Received: from xps-iwamatsu.renesas.com (49.14.32.202.bf.2iij.net. [202.32.14.49]) by mx.google.com with ESMTPS id bs3sm7870450pbb.36.2013.04.17.18.26.19 (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 17 Apr 2013 18:26:20 -0700 (PDT) From: Nobuhiro Iwamatsu To: netdev@vger.kernel.org Cc: yoshihiro.shimoda.uh@renesas.com, Nobuhiro Iwamatsu Subject: [PATCH] net: sh-eth: Add flag to determine the type of TSU register Date: Thu, 18 Apr 2013 10:26:11 +0900 Message-Id: <1366248372-28791-1-git-send-email-nobuhiro.iwamatsu.yj@renesas.com> X-Mailer: git-send-email 1.7.10.4 X-Gm-Message-State: ALoCoQkSjtOgJbIN3QhocJNm0U5Lw/DJBuPiK94XHMa09oJbIzpvV1ARGniUcfv8UA4KByhS5T7W Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Some sh-eth devices may have two ether devices in the inside. And the function of TSU is accessed from each ether device. In this case, sh-eth need to remap address using devm_ioremap(), without using devm_ioremap_resource(). acl_multi_reg of sh_eth_cpu_data is used for this control. Signed-off-by: Nobuhiro Iwamatsu --- drivers/net/ethernet/renesas/sh_eth.c | 11 ++++++++++- drivers/net/ethernet/renesas/sh_eth.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c index a7499cb..d9458ae 100644 --- a/drivers/net/ethernet/renesas/sh_eth.c +++ b/drivers/net/ethernet/renesas/sh_eth.c @@ -610,6 +610,7 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data_giga = { .no_trimd = 1, .no_ade = 1, .tsu = 1, + .tsu_multi_reg = 1, }; static struct sh_eth_cpu_data *sh_eth_get_cpu_data(struct sh_eth_private *mdp) @@ -691,6 +692,8 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { #if defined(CONFIG_CPU_SUBTYPE_SH7734) .hw_crc = 1, .select_mii = 1, +#else + .tsu_multi_reg = 1, #endif }; @@ -844,6 +847,7 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { static struct sh_eth_cpu_data sh_eth_my_cpu_data = { .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, .tsu = 1, + .tsu_multi_reg = 1, }; #endif @@ -2743,7 +2747,12 @@ static int sh_eth_drv_probe(struct platform_device *pdev) ret = -ENODEV; goto out_release; } - mdp->tsu_addr = devm_ioremap_resource(&pdev->dev, rtsu); + + if (mdp->cd->tsu_multi_reg) + mdp->tsu_addr = devm_ioremap(&pdev->dev, rtsu->start, + resource_size(rtsu)); + else + mdp->tsu_addr = devm_ioremap_resource(&pdev->dev, rtsu); if (IS_ERR(mdp->tsu_addr)) { ret = PTR_ERR(mdp->tsu_addr); goto out_release; diff --git a/drivers/net/ethernet/renesas/sh_eth.h b/drivers/net/ethernet/renesas/sh_eth.h index 1ddc9f2..6f9a997 100644 --- a/drivers/net/ethernet/renesas/sh_eth.h +++ b/drivers/net/ethernet/renesas/sh_eth.h @@ -472,6 +472,7 @@ struct sh_eth_cpu_data { unsigned tpauser:1; /* EtherC have TPAUSER */ unsigned bculr:1; /* EtherC have BCULR */ unsigned tsu:1; /* EtherC have TSU */ + unsigned tsu_multi_reg:1; /* EtherC have TSU multi register */ unsigned hw_swap:1; /* E-DMAC have DE bit in EDMR */ unsigned rpadir:1; /* E-DMAC have RPADIR */ unsigned no_trimd:1; /* E-DMAC DO NOT have TRIMD */