All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: Hiroshi Doyu <hdoyu@nvidia.com>
Cc: "balbi@ti.com" <balbi@ti.com>,
	Stephen Warren <swarren@nvidia.com>,
	"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"ccross@android.com" <ccross@android.com>,
	"olof@lixom.net" <olof@lixom.net>,
	"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>,
	"tony@atomide.com" <tony@atomide.com>,
	"hsweeten@visionengravers.com" <hsweeten@visionengravers.com>,
	"jamie@jamieiles.com" <jamie@jamieiles.com>,
	"rob.herring@calxeda.com" <rob.herring@calxeda.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCHv3 2/4] ARM: tegra: Add SMMU enabler in AHB
Date: Fri, 27 Apr 2012 09:49:00 -0600	[thread overview]
Message-ID: <4F9ABFEC.3090107@wwwdotorg.org> (raw)
In-Reply-To: <20120427.094826.1181797260264746303.hdoyu@nvidia.com>

On 04/27/2012 12:48 AM, Hiroshi Doyu wrote:
...
> Then, what about something like the following?
> 
>  static int tegra_ahb_match_by_smmu(struct device *dev, void *data)
>  {
>  	struct tegra_ahb *ahb = dev_get_drvdata(dev);
>  	struct device_node *dn = data;
>  
>  	return (ahb->dev->of_node == dn) ? 1 : 0
>  }

I imagine that function and the driver_find_device() call that uses it
will be pretty common. It may make sense as a drivers/of utility
function, although perhaps we can wait until later to refactor it, once
we actually have multiple pieces of code that do this same thing.

>  int tegra_ahb_enable_smmu(struct device_node *ahb)
>  {
>  	struct device *dev;
>  	u32 val;
>  
>  	dev = driver_find_device(&tegra_ahb_driver.driver, NULL, ahb,
>  				 tegra_ahb_match_by_smmu);
>  	if (!dev)
>  		return -ENODEV;

Yes, -EPROBE_DEFER here as you mentioned in your followup email.

>  
>  	val = gizmo_readl(ahb, AHB_ARBITRATION_XBAR_CTRL);
>  	val |= AHB_ARBITRATION_XBAR_CTRL_SMMU_INIT_DONE;
>  	gizmo_writel(ahb, val, AHB_ARBITRATION_XBAR_CTRL);
>  	return 0;
>  }
>  EXPORT_SYMBOL(tegra_ahb_enable_smmu);
> 
> 	Modified arch/arm/boot/dts/tegra30.dtsi
> diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi
> index 655bc47..28f9138 100644
> --- a/arch/arm/boot/dts/tegra30.dtsi
> +++ b/arch/arm/boot/dts/tegra30.dtsi
> @@ -242,5 +242,6 @@
>  	smmu {
>  		compatible = "nvidia,tegra30-smmu";
>  		mc = <&mc>;
> +		ahb = <&ahb>;
>  	};
>  };

Yes, that's probably the best (even only) way to connect the two drivers
precisely.

WARNING: multiple messages have this Message-ID (diff)
From: swarren@wwwdotorg.org (Stephen Warren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv3 2/4] ARM: tegra: Add SMMU enabler in AHB
Date: Fri, 27 Apr 2012 09:49:00 -0600	[thread overview]
Message-ID: <4F9ABFEC.3090107@wwwdotorg.org> (raw)
In-Reply-To: <20120427.094826.1181797260264746303.hdoyu@nvidia.com>

On 04/27/2012 12:48 AM, Hiroshi Doyu wrote:
...
> Then, what about something like the following?
> 
>  static int tegra_ahb_match_by_smmu(struct device *dev, void *data)
>  {
>  	struct tegra_ahb *ahb = dev_get_drvdata(dev);
>  	struct device_node *dn = data;
>  
>  	return (ahb->dev->of_node == dn) ? 1 : 0
>  }

I imagine that function and the driver_find_device() call that uses it
will be pretty common. It may make sense as a drivers/of utility
function, although perhaps we can wait until later to refactor it, once
we actually have multiple pieces of code that do this same thing.

>  int tegra_ahb_enable_smmu(struct device_node *ahb)
>  {
>  	struct device *dev;
>  	u32 val;
>  
>  	dev = driver_find_device(&tegra_ahb_driver.driver, NULL, ahb,
>  				 tegra_ahb_match_by_smmu);
>  	if (!dev)
>  		return -ENODEV;

Yes, -EPROBE_DEFER here as you mentioned in your followup email.

>  
>  	val = gizmo_readl(ahb, AHB_ARBITRATION_XBAR_CTRL);
>  	val |= AHB_ARBITRATION_XBAR_CTRL_SMMU_INIT_DONE;
>  	gizmo_writel(ahb, val, AHB_ARBITRATION_XBAR_CTRL);
>  	return 0;
>  }
>  EXPORT_SYMBOL(tegra_ahb_enable_smmu);
> 
> 	Modified arch/arm/boot/dts/tegra30.dtsi
> diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi
> index 655bc47..28f9138 100644
> --- a/arch/arm/boot/dts/tegra30.dtsi
> +++ b/arch/arm/boot/dts/tegra30.dtsi
> @@ -242,5 +242,6 @@
>  	smmu {
>  		compatible = "nvidia,tegra30-smmu";
>  		mc = <&mc>;
> +		ahb = <&ahb>;
>  	};
>  };

Yes, that's probably the best (even only) way to connect the two drivers
precisely.

  parent reply	other threads:[~2012-04-27 15:49 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-25 11:07 [PATCHv3 1/4] ARM: tegra: Add AHB driver Hiroshi DOYU
2012-04-25 11:07 ` Hiroshi DOYU
2012-04-25 11:07 ` Hiroshi DOYU
2012-04-25 11:07 ` [PATCHv3 2/4] ARM: tegra: Add SMMU enabler in AHB Hiroshi DOYU
2012-04-25 11:07   ` Hiroshi DOYU
     [not found]   ` <1335352072-4001-2-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-04-25 11:29     ` Felipe Balbi
2012-04-25 11:29       ` Felipe Balbi
2012-04-25 11:29       ` Felipe Balbi
     [not found]       ` <20120425112950.GC3564-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-04-25 15:51         ` Stephen Warren
2012-04-25 15:51           ` Stephen Warren
2012-04-25 15:51           ` Stephen Warren
2012-04-26  5:37           ` Hiroshi Doyu
2012-04-26  5:37             ` Hiroshi Doyu
2012-04-26  5:37             ` Hiroshi Doyu
2012-04-26 19:55     ` Stephen Warren
2012-04-26 19:55       ` Stephen Warren
2012-04-26 19:55       ` Stephen Warren
2012-04-26 20:26       ` Felipe Balbi
2012-04-26 20:26         ` Felipe Balbi
     [not found]         ` <20120426202610.GA30690-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-04-26 20:32           ` Stephen Warren
2012-04-26 20:32             ` Stephen Warren
2012-04-26 20:32             ` Stephen Warren
2012-04-26 20:38             ` Felipe Balbi
2012-04-26 20:38               ` Felipe Balbi
2012-04-27  6:48               ` Hiroshi Doyu
2012-04-27  6:48                 ` Hiroshi Doyu
     [not found]                 ` <20120427.094826.1181797260264746303.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-04-27  6:55                   ` Hiroshi Doyu
2012-04-27  6:55                     ` Hiroshi Doyu
2012-04-27  6:55                     ` Hiroshi Doyu
2012-04-27 15:49                 ` Stephen Warren [this message]
2012-04-27 15:49                   ` Stephen Warren
2012-04-25 11:25 ` [PATCHv3 1/4] ARM: tegra: Add AHB driver Felipe Balbi
2012-04-25 11:25   ` Felipe Balbi
2012-04-25 11:25   ` Felipe Balbi
     [not found]   ` <20120425112519.GB3564-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-04-25 13:01     ` Hiroshi Doyu
2012-04-25 13:01       ` Hiroshi Doyu
2012-04-25 13:01       ` Hiroshi Doyu
     [not found] ` <1335352072-4001-1-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-04-25 11:07   ` [PATCHv3 3/4] iommu/tegra: smmu: Refrain from accessing to AHB registers Hiroshi DOYU
2012-04-25 11:07     ` Hiroshi DOYU
2012-04-25 11:07     ` Hiroshi DOYU
2012-04-26 19:58     ` Stephen Warren
2012-04-26 19:58       ` Stephen Warren
2012-04-25 11:07   ` [PATCHv3 4/4] ARM: dt: tegra: Add device tree support for AHB Hiroshi DOYU
2012-04-25 11:07     ` Hiroshi DOYU
2012-04-25 11:07     ` Hiroshi DOYU
     [not found]     ` <1335352072-4001-4-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-04-26 20:01       ` Stephen Warren
2012-04-26 20:01         ` Stephen Warren
2012-04-26 20:01         ` Stephen Warren
2012-04-26 19:51   ` [PATCHv3 1/4] ARM: tegra: Add AHB driver Stephen Warren
2012-04-26 19:51     ` Stephen Warren
2012-04-26 19:51     ` Stephen Warren
     [not found]     ` <4F99A740.3080407-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-04-26 21:59       ` Russell King - ARM Linux
2012-04-26 21:59         ` Russell King - ARM Linux
2012-04-26 21:59         ` Russell King - ARM Linux
     [not found]         ` <20120426215903.GH24211-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2012-04-27  5:40           ` Hiroshi Doyu
2012-04-27  5:40             ` Hiroshi Doyu
2012-04-27  5:40             ` Hiroshi Doyu
     [not found]             ` <20120427084015.cb7c8e00c7d9a4cd01faa5ae-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-04-30 14:47               ` Arnd Bergmann
2012-04-30 14:47                 ` Arnd Bergmann
2012-04-30 14:47                 ` Arnd Bergmann
  -- strict thread matches above, loose matches on Subject: below --
2012-05-03 16:05 [PATCHv3 1/4] ARM: tegra: Add Tegra " Hiroshi DOYU
2012-05-03 16:05 ` [PATCHv3 2/4] ARM: tegra: Add SMMU enabler in AHB Hiroshi DOYU
2012-05-03 16:05   ` Hiroshi DOYU
     [not found]   ` <1336061147-10245-2-git-send-email-hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-05-03 17:43     ` Stephen Warren
2012-05-03 17:43       ` Stephen Warren
2012-05-03 17:43       ` Stephen Warren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F9ABFEC.3090107@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --cc=balbi@ti.com \
    --cc=ccross@android.com \
    --cc=hdoyu@nvidia.com \
    --cc=hsweeten@visionengravers.com \
    --cc=jamie@jamieiles.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=olof@lixom.net \
    --cc=rob.herring@calxeda.com \
    --cc=swarren@nvidia.com \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.