Message ID | 1384548866-13141-11-git-send-email-swarren@wwwdotorg.org (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On Fri, Nov 15, 2013 at 1:54 PM, Stephen Warren <swarren@wwwdotorg.org> wrote: > From: Stephen Warren <swarren@nvidia.com> > > Tegra's clock driver now provides an implementation of the common > reset API (include/linux/reset.h). Use this instead of the old Tegra- > specific API; that will soon be removed. > > Cc: treding@nvidia.com > Cc: pdeschrijver@nvidia.com > Cc: linux-tegra@vger.kernel.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: Bjorn Helgaas <bhelgaas@google.com> > Cc: linux-pci@vger.kernel.org > Cc: Terje Bergström <tbergstrom@nvidia.com> > Cc: David Airlie <airlied@linux.ie> > Cc: dri-devel@lists.freedesktop.org > Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Bjorn Helgaas <bhelgaas@google.com> > --- > This patch is part of a series with strong internal depdendencies. I'm > looking for an ack so that I can take the entire series through the Tegra > and arm-soc trees. The series will be part of a stable branch that can be > merged into other subsystems if needed to avoid/resolve dependencies. > --- > arch/arm/mach-tegra/powergate.c | 8 +++++--- > drivers/gpu/drm/tegra/gr3d.c | 6 ++++-- > drivers/pci/host/pci-tegra.c | 3 ++- > include/linux/tegra-powergate.h | 4 +++- > 4 files changed, 14 insertions(+), 7 deletions(-) > > diff --git a/arch/arm/mach-tegra/powergate.c b/arch/arm/mach-tegra/powergate.c > index 85d28e756bb7..f6f5b54ff95e 100644 > --- a/arch/arm/mach-tegra/powergate.c > +++ b/arch/arm/mach-tegra/powergate.c > @@ -25,6 +25,7 @@ > #include <linux/export.h> > #include <linux/init.h> > #include <linux/io.h> > +#include <linux/reset.h> > #include <linux/seq_file.h> > #include <linux/spinlock.h> > #include <linux/clk/tegra.h> > @@ -144,11 +145,12 @@ int tegra_powergate_remove_clamping(int id) > } > > /* Must be called with clk disabled, and returns with clk enabled */ > -int tegra_powergate_sequence_power_up(int id, struct clk *clk) > +int tegra_powergate_sequence_power_up(int id, struct clk *clk, > + struct reset_control *rst) > { > int ret; > > - tegra_periph_reset_assert(clk); > + reset_control_assert(rst); > > ret = tegra_powergate_power_on(id); > if (ret) > @@ -165,7 +167,7 @@ int tegra_powergate_sequence_power_up(int id, struct clk *clk) > goto err_clamp; > > udelay(10); > - tegra_periph_reset_deassert(clk); > + reset_control_deassert(rst); > > return 0; > > diff --git a/drivers/gpu/drm/tegra/gr3d.c b/drivers/gpu/drm/tegra/gr3d.c > index f629e38b00e4..0cbb24b1ae04 100644 > --- a/drivers/gpu/drm/tegra/gr3d.c > +++ b/drivers/gpu/drm/tegra/gr3d.c > @@ -279,7 +279,8 @@ static int gr3d_probe(struct platform_device *pdev) > } > } > > - err = tegra_powergate_sequence_power_up(TEGRA_POWERGATE_3D, gr3d->clk); > + err = tegra_powergate_sequence_power_up(TEGRA_POWERGATE_3D, gr3d->clk, > + gr3d->rst); > if (err < 0) { > dev_err(&pdev->dev, "failed to power up 3D unit\n"); > return err; > @@ -287,7 +288,8 @@ static int gr3d_probe(struct platform_device *pdev) > > if (gr3d->clk_secondary) { > err = tegra_powergate_sequence_power_up(TEGRA_POWERGATE_3D1, > - gr3d->clk_secondary); > + gr3d->clk_secondary, > + gr3d->rst_secondary); > if (err < 0) { > dev_err(&pdev->dev, > "failed to power up secondary 3D unit\n"); > diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c > index 174a5bc2d993..aace19edc469 100644 > --- a/drivers/pci/host/pci-tegra.c > +++ b/drivers/pci/host/pci-tegra.c > @@ -956,7 +956,8 @@ static int tegra_pcie_power_on(struct tegra_pcie *pcie) > } > > err = tegra_powergate_sequence_power_up(TEGRA_POWERGATE_PCIE, > - pcie->pex_clk); > + pcie->pex_clk, > + pcie->pex_rst); > if (err) { > dev_err(pcie->dev, "powerup sequence failed: %d\n", err); > return err; > diff --git a/include/linux/tegra-powergate.h b/include/linux/tegra-powergate.h > index c98cfa406952..b5ad64aca071 100644 > --- a/include/linux/tegra-powergate.h > +++ b/include/linux/tegra-powergate.h > @@ -19,6 +19,7 @@ > #define _MACH_TEGRA_POWERGATE_H_ > > struct clk; > +struct reset_control; > > #define TEGRA_POWERGATE_CPU 0 > #define TEGRA_POWERGATE_3D 1 > @@ -51,6 +52,7 @@ int tegra_powergate_power_off(int id); > int tegra_powergate_remove_clamping(int id); > > /* Must be called with clk disabled, and returns with clk enabled */ > -int tegra_powergate_sequence_power_up(int id, struct clk *clk); > +int tegra_powergate_sequence_power_up(int id, struct clk *clk, > + struct reset_control *rst); > > #endif /* _MACH_TEGRA_POWERGATE_H_ */ > -- > 1.8.1.5 > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, Nov 15, 2013 at 01:54:05PM -0700, Stephen Warren wrote: > From: Stephen Warren <swarren@nvidia.com> > > Tegra's clock driver now provides an implementation of the common > reset API (include/linux/reset.h). Use this instead of the old Tegra- > specific API; that will soon be removed. Ah, there it is! Reviewed-by: Thierry Reding <treding@nvidia.com>
On Fri, Nov 29, 2013 at 02:45:33PM +0100, Thierry Reding wrote: > On Fri, Nov 15, 2013 at 01:54:05PM -0700, Stephen Warren wrote: > > From: Stephen Warren <swarren@nvidia.com> > > > > Tegra's clock driver now provides an implementation of the common > > reset API (include/linux/reset.h). Use this instead of the old Tegra- > > specific API; that will soon be removed. > > Ah, there it is! > > Reviewed-by: Thierry Reding <treding@nvidia.com> And: Acked-by: Thierry Reding <treding@nvidia.com>
diff --git a/arch/arm/mach-tegra/powergate.c b/arch/arm/mach-tegra/powergate.c index 85d28e756bb7..f6f5b54ff95e 100644 --- a/arch/arm/mach-tegra/powergate.c +++ b/arch/arm/mach-tegra/powergate.c @@ -25,6 +25,7 @@ #include <linux/export.h> #include <linux/init.h> #include <linux/io.h> +#include <linux/reset.h> #include <linux/seq_file.h> #include <linux/spinlock.h> #include <linux/clk/tegra.h> @@ -144,11 +145,12 @@ int tegra_powergate_remove_clamping(int id) } /* Must be called with clk disabled, and returns with clk enabled */ -int tegra_powergate_sequence_power_up(int id, struct clk *clk) +int tegra_powergate_sequence_power_up(int id, struct clk *clk, + struct reset_control *rst) { int ret; - tegra_periph_reset_assert(clk); + reset_control_assert(rst); ret = tegra_powergate_power_on(id); if (ret) @@ -165,7 +167,7 @@ int tegra_powergate_sequence_power_up(int id, struct clk *clk) goto err_clamp; udelay(10); - tegra_periph_reset_deassert(clk); + reset_control_deassert(rst); return 0; diff --git a/drivers/gpu/drm/tegra/gr3d.c b/drivers/gpu/drm/tegra/gr3d.c index f629e38b00e4..0cbb24b1ae04 100644 --- a/drivers/gpu/drm/tegra/gr3d.c +++ b/drivers/gpu/drm/tegra/gr3d.c @@ -279,7 +279,8 @@ static int gr3d_probe(struct platform_device *pdev) } } - err = tegra_powergate_sequence_power_up(TEGRA_POWERGATE_3D, gr3d->clk); + err = tegra_powergate_sequence_power_up(TEGRA_POWERGATE_3D, gr3d->clk, + gr3d->rst); if (err < 0) { dev_err(&pdev->dev, "failed to power up 3D unit\n"); return err; @@ -287,7 +288,8 @@ static int gr3d_probe(struct platform_device *pdev) if (gr3d->clk_secondary) { err = tegra_powergate_sequence_power_up(TEGRA_POWERGATE_3D1, - gr3d->clk_secondary); + gr3d->clk_secondary, + gr3d->rst_secondary); if (err < 0) { dev_err(&pdev->dev, "failed to power up secondary 3D unit\n"); diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c index 174a5bc2d993..aace19edc469 100644 --- a/drivers/pci/host/pci-tegra.c +++ b/drivers/pci/host/pci-tegra.c @@ -956,7 +956,8 @@ static int tegra_pcie_power_on(struct tegra_pcie *pcie) } err = tegra_powergate_sequence_power_up(TEGRA_POWERGATE_PCIE, - pcie->pex_clk); + pcie->pex_clk, + pcie->pex_rst); if (err) { dev_err(pcie->dev, "powerup sequence failed: %d\n", err); return err; diff --git a/include/linux/tegra-powergate.h b/include/linux/tegra-powergate.h index c98cfa406952..b5ad64aca071 100644 --- a/include/linux/tegra-powergate.h +++ b/include/linux/tegra-powergate.h @@ -19,6 +19,7 @@ #define _MACH_TEGRA_POWERGATE_H_ struct clk; +struct reset_control; #define TEGRA_POWERGATE_CPU 0 #define TEGRA_POWERGATE_3D 1 @@ -51,6 +52,7 @@ int tegra_powergate_power_off(int id); int tegra_powergate_remove_clamping(int id); /* Must be called with clk disabled, and returns with clk enabled */ -int tegra_powergate_sequence_power_up(int id, struct clk *clk); +int tegra_powergate_sequence_power_up(int id, struct clk *clk, + struct reset_control *rst); #endif /* _MACH_TEGRA_POWERGATE_H_ */