Re: [PATCH 2/6] iommu/arm-smmu: add support for specifying regulators

2014-08-19 Thread Will Deacon
On Wed, Aug 13, 2014 at 01:51:35AM +0100, Mitchel Humpherys wrote:
 On some power-constrained platforms it's useful to disable power when a
 device is not in use. Add support for specifying regulators for SMMUs
 and only leave power on as long as the SMMU is in use (attached).

... and for bypass mode? My comments for clks largely apply here too -- I'd
much rather see this in domain_init/domain_destroy with appropriate
refcounting. It's just too much of a mess having these calls littered around
the driver.

Will
___
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu


Re: [PATCH 2/6] iommu/arm-smmu: add support for specifying regulators

2014-08-13 Thread Mitchel Humpherys
On Tue, Aug 12 2014 at 05:51:35 PM, Mitchel Humpherys mitch...@codeaurora.org 
wrote:
 On some power-constrained platforms it's useful to disable power when a
 device is not in use. Add support for specifying regulators for SMMUs
 and only leave power on as long as the SMMU is in use (attached).

 Signed-off-by: Mitchel Humpherys mitch...@codeaurora.org
 ---
  .../devicetree/bindings/iommu/arm,smmu.txt |   3 +
  drivers/iommu/arm-smmu.c   | 102 
 ++---
  2 files changed, 93 insertions(+), 12 deletions(-)

[...]

 @@ -2124,13 +2192,19 @@ static int arm_smmu_device_dt_probe(struct 
 platform_device *pdev)
   }
   dev_notice(dev, registered %d master devices\n, i);
  
 + err = arm_smmu_init_regulators(smmu);
 + if (err)
 + goto out_put_masters;
 +
   err = arm_smmu_init_clocks(smmu);
   if (err)
   goto out_put_masters;
  
 + arm_smmu_enable_regulators(smmu);
   arm_smmu_enable_clocks(smmu);
 -
   err = arm_smmu_device_cfg_probe(smmu);
 + arm_smmu_disable_clocks(smmu);
 + arm_smmu_disable_regulators(smmu);
   if (err)
   goto out_disable_clocks;

The out_disable_clocks label can go away now that arm_smmu_device_reset
is done in arm_smmu_attach_dev.


  
 @@ -2163,8 +2237,6 @@ static int arm_smmu_device_dt_probe(struct 
 platform_device *pdev)
   list_add(smmu-list, arm_smmu_devices);
   spin_unlock(arm_smmu_devices_lock);
  
 - arm_smmu_device_reset(smmu);
 - arm_smmu_disable_clocks(smmu);
   return 0;
  
  out_free_irqs:
 @@ -2173,6 +2245,7 @@ out_free_irqs:
  
  out_disable_clocks:
   arm_smmu_disable_clocks(smmu);
 + arm_smmu_disable_regulators(smmu);
  
  out_put_masters:
   for (node = rb_first(smmu-masters); node; node = rb_next(node)) {



-Mitch

-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
___
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu