* [PATCH 0/3] spi: omap2-mcspi: spi cleanups
@ 2012-08-21 6:17 Shubhrajyoti D
[not found] ` <1345529864-7937-1-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Shubhrajyoti D @ 2012-08-21 6:17 UTC (permalink / raw)
To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
Cc: Shubhrajyoti, linux-omap-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, D
This patch does the following
Calls the pm_runtime_* functions directly.
Remove the MOD_REG_BIT macro usage thereby removiing un-needed branch.
At remove dont use the autosuspend runtime calls.
Shubhrajyoti D (3):
spi: omap2-mcspi: Call pm_runtime_* functions directly
spi: omap2-mcspi: Remove the macro MOD_REG_BIT
spi: omap2-mcspi: At remove dont use the runtime_autosuspend calls
drivers/spi/spi-omap2-mcspi.c | 55 ++++++++++++++++++-----------------------
1 files changed, 24 insertions(+), 31 deletions(-)
--
1.7.5.4
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
^ permalink raw reply [flat|nested] 8+ messages in thread[parent not found: <1345529864-7937-1-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org>]
* [PATCH 1/3] spi: omap2-mcspi: Call pm_runtime_* functions directly [not found] ` <1345529864-7937-1-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org> @ 2012-08-21 6:17 ` Shubhrajyoti D 2012-08-21 9:04 ` Felipe Balbi 2012-08-21 6:17 ` [PATCH 2/3] spi: omap2-mcspi: Remove the macro MOD_REG_BIT Shubhrajyoti D 2012-08-21 6:17 ` [PATCH 3/3] spi: omap2-mcspi: At remove dont use the runtime_autosuspend calls Shubhrajyoti D 2 siblings, 1 reply; 8+ messages in thread From: Shubhrajyoti D @ 2012-08-21 6:17 UTC (permalink / raw) To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Cc: Shubhrajyoti, linux-omap-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, D Call the pm_runtime functions directly making room for possible pm optimisations. Also the runtime functions aren't just about enabling and disabling of clocks though it does enable clocks also. Signed-off-by: Shubhrajyoti D <shubhrajyoti-l0cyMroinI0@public.gmane.org> --- drivers/spi/spi-omap2-mcspi.c | 28 +++++++++++----------------- 1 files changed, 11 insertions(+), 17 deletions(-) diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c index 259f601..dd887eb 100644 --- a/drivers/spi/spi-omap2-mcspi.c +++ b/drivers/spi/spi-omap2-mcspi.c @@ -260,16 +260,6 @@ static void omap2_mcspi_restore_ctx(struct omap2_mcspi *mcspi) list_for_each_entry(cs, &ctx->cs, node) __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); } -static void omap2_mcspi_disable_clocks(struct omap2_mcspi *mcspi) -{ - pm_runtime_mark_last_busy(mcspi->dev); - pm_runtime_put_autosuspend(mcspi->dev); -} - -static int omap2_mcspi_enable_clocks(struct omap2_mcspi *mcspi) -{ - return pm_runtime_get_sync(mcspi->dev); -} static int omap2_prepare_transfer(struct spi_master *master) { @@ -848,12 +838,13 @@ static int omap2_mcspi_setup(struct spi_device *spi) return ret; } - ret = omap2_mcspi_enable_clocks(mcspi); + ret = pm_runtime_get_sync(mcspi->dev); if (ret < 0) return ret; ret = omap2_mcspi_setup_transfer(spi, NULL); - omap2_mcspi_disable_clocks(mcspi); + pm_runtime_mark_last_busy(mcspi->dev); + pm_runtime_put_autosuspend(mcspi->dev); return ret; } @@ -1067,7 +1058,7 @@ static int __devinit omap2_mcspi_master_setup(struct omap2_mcspi *mcspi) struct omap2_mcspi_regs *ctx = &mcspi->ctx; int ret = 0; - ret = omap2_mcspi_enable_clocks(mcspi); + ret = pm_runtime_get_sync(mcspi->dev); if (ret < 0) return ret; @@ -1076,7 +1067,8 @@ static int __devinit omap2_mcspi_master_setup(struct omap2_mcspi *mcspi) ctx->wakeupenable = OMAP2_MCSPI_WAKEUPENABLE_WKEN; omap2_mcspi_set_master_mode(master); - omap2_mcspi_disable_clocks(mcspi); + pm_runtime_mark_last_busy(mcspi->dev); + pm_runtime_put_autosuspend(mcspi->dev); return 0; } @@ -1251,7 +1243,8 @@ static int __devexit omap2_mcspi_remove(struct platform_device *pdev) mcspi = spi_master_get_devdata(master); dma_channels = mcspi->dma_channels; - omap2_mcspi_disable_clocks(mcspi); + pm_runtime_mark_last_busy(mcspi->dev); + pm_runtime_put_autosuspend(mcspi->dev); pm_runtime_disable(&pdev->dev); spi_unregister_master(master); @@ -1276,7 +1269,7 @@ static int omap2_mcspi_resume(struct device *dev) struct omap2_mcspi_regs *ctx = &mcspi->ctx; struct omap2_mcspi_cs *cs; - omap2_mcspi_enable_clocks(mcspi); + pm_runtime_get_sync(mcspi->dev); list_for_each_entry(cs, &ctx->cs, node) { if ((cs->chconf0 & OMAP2_MCSPI_CHCONF_FORCE) == 0) { /* @@ -1289,7 +1282,8 @@ static int omap2_mcspi_resume(struct device *dev) __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); } } - omap2_mcspi_disable_clocks(mcspi); + pm_runtime_mark_last_busy(mcspi->dev); + pm_runtime_put_autosuspend(mcspi->dev); return 0; } #else -- 1.7.5.4 ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] spi: omap2-mcspi: Call pm_runtime_* functions directly 2012-08-21 6:17 ` [PATCH 1/3] spi: omap2-mcspi: Call pm_runtime_* functions directly Shubhrajyoti D @ 2012-08-21 9:04 ` Felipe Balbi 0 siblings, 0 replies; 8+ messages in thread From: Felipe Balbi @ 2012-08-21 9:04 UTC (permalink / raw) To: Shubhrajyoti D; +Cc: spi-devel-general, linux-omap, linux-kernel [-- Attachment #1: Type: text/plain, Size: 3739 bytes --] On Tue, Aug 21, 2012 at 11:47:42AM +0530, Shubhrajyoti D wrote: > Call the pm_runtime functions directly making room for possible > pm optimisations. Also the runtime functions aren't just about > enabling and disabling of clocks though it does enable clocks also. > > Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com> Acked-by: Felipe Balbi <balbi@ti.com> > --- > drivers/spi/spi-omap2-mcspi.c | 28 +++++++++++----------------- > 1 files changed, 11 insertions(+), 17 deletions(-) > > diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c > index 259f601..dd887eb 100644 > --- a/drivers/spi/spi-omap2-mcspi.c > +++ b/drivers/spi/spi-omap2-mcspi.c > @@ -260,16 +260,6 @@ static void omap2_mcspi_restore_ctx(struct omap2_mcspi *mcspi) > list_for_each_entry(cs, &ctx->cs, node) > __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); > } > -static void omap2_mcspi_disable_clocks(struct omap2_mcspi *mcspi) > -{ > - pm_runtime_mark_last_busy(mcspi->dev); > - pm_runtime_put_autosuspend(mcspi->dev); > -} > - > -static int omap2_mcspi_enable_clocks(struct omap2_mcspi *mcspi) > -{ > - return pm_runtime_get_sync(mcspi->dev); > -} > > static int omap2_prepare_transfer(struct spi_master *master) > { > @@ -848,12 +838,13 @@ static int omap2_mcspi_setup(struct spi_device *spi) > return ret; > } > > - ret = omap2_mcspi_enable_clocks(mcspi); > + ret = pm_runtime_get_sync(mcspi->dev); > if (ret < 0) > return ret; > > ret = omap2_mcspi_setup_transfer(spi, NULL); > - omap2_mcspi_disable_clocks(mcspi); > + pm_runtime_mark_last_busy(mcspi->dev); > + pm_runtime_put_autosuspend(mcspi->dev); > > return ret; > } > @@ -1067,7 +1058,7 @@ static int __devinit omap2_mcspi_master_setup(struct omap2_mcspi *mcspi) > struct omap2_mcspi_regs *ctx = &mcspi->ctx; > int ret = 0; > > - ret = omap2_mcspi_enable_clocks(mcspi); > + ret = pm_runtime_get_sync(mcspi->dev); > if (ret < 0) > return ret; > > @@ -1076,7 +1067,8 @@ static int __devinit omap2_mcspi_master_setup(struct omap2_mcspi *mcspi) > ctx->wakeupenable = OMAP2_MCSPI_WAKEUPENABLE_WKEN; > > omap2_mcspi_set_master_mode(master); > - omap2_mcspi_disable_clocks(mcspi); > + pm_runtime_mark_last_busy(mcspi->dev); > + pm_runtime_put_autosuspend(mcspi->dev); > return 0; > } > > @@ -1251,7 +1243,8 @@ static int __devexit omap2_mcspi_remove(struct platform_device *pdev) > mcspi = spi_master_get_devdata(master); > dma_channels = mcspi->dma_channels; > > - omap2_mcspi_disable_clocks(mcspi); > + pm_runtime_mark_last_busy(mcspi->dev); > + pm_runtime_put_autosuspend(mcspi->dev); > pm_runtime_disable(&pdev->dev); > > spi_unregister_master(master); > @@ -1276,7 +1269,7 @@ static int omap2_mcspi_resume(struct device *dev) > struct omap2_mcspi_regs *ctx = &mcspi->ctx; > struct omap2_mcspi_cs *cs; > > - omap2_mcspi_enable_clocks(mcspi); > + pm_runtime_get_sync(mcspi->dev); > list_for_each_entry(cs, &ctx->cs, node) { > if ((cs->chconf0 & OMAP2_MCSPI_CHCONF_FORCE) == 0) { > /* > @@ -1289,7 +1282,8 @@ static int omap2_mcspi_resume(struct device *dev) > __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); > } > } > - omap2_mcspi_disable_clocks(mcspi); > + pm_runtime_mark_last_busy(mcspi->dev); > + pm_runtime_put_autosuspend(mcspi->dev); > return 0; > } > #else > -- > 1.7.5.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/3] spi: omap2-mcspi: Remove the macro MOD_REG_BIT [not found] ` <1345529864-7937-1-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org> 2012-08-21 6:17 ` [PATCH 1/3] spi: omap2-mcspi: Call pm_runtime_* functions directly Shubhrajyoti D @ 2012-08-21 6:17 ` Shubhrajyoti D 2012-08-21 9:05 ` Felipe Balbi 2012-08-21 6:17 ` [PATCH 3/3] spi: omap2-mcspi: At remove dont use the runtime_autosuspend calls Shubhrajyoti D 2 siblings, 1 reply; 8+ messages in thread From: Shubhrajyoti D @ 2012-08-21 6:17 UTC (permalink / raw) To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Cc: Shubhrajyoti, linux-omap-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, D Remove the macro MOD_REG_BIT instead make the bit field modifications directly. This deletes a branch operation in cases where the the set is predecided.While at it optimise two sequential bit clear in one step. Signed-off-by: Shubhrajyoti D <shubhrajyoti-l0cyMroinI0@public.gmane.org> --- drivers/spi/spi-omap2-mcspi.c | 28 ++++++++++++++-------------- 1 files changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c index dd887eb..5642111 100644 --- a/drivers/spi/spi-omap2-mcspi.c +++ b/drivers/spi/spi-omap2-mcspi.c @@ -140,13 +140,6 @@ struct omap2_mcspi_cs { u32 chconf0; }; -#define MOD_REG_BIT(val, mask, set) do { \ - if (set) \ - val |= mask; \ - else \ - val &= ~mask; \ -} while (0) - static inline void mcspi_write_reg(struct spi_master *master, int idx, u32 val) { @@ -205,7 +198,11 @@ static void omap2_mcspi_set_dma_req(const struct spi_device *spi, else rw = OMAP2_MCSPI_CHCONF_DMAW; - MOD_REG_BIT(l, rw, enable); + if (enable) + l |= rw; + else + l &= ~rw; + mcspi_write_chconf0(spi, l); } @@ -224,7 +221,11 @@ static void omap2_mcspi_force_cs(struct spi_device *spi, int cs_active) u32 l; l = mcspi_cached_chconf0(spi); - MOD_REG_BIT(l, OMAP2_MCSPI_CHCONF_FORCE, cs_active); + if (cs_active) + l |= OMAP2_MCSPI_CHCONF_FORCE; + else + l &= ~OMAP2_MCSPI_CHCONF_FORCE; + mcspi_write_chconf0(spi, l); } @@ -239,9 +240,8 @@ static void omap2_mcspi_set_master_mode(struct spi_master *master) * to single-channel master mode */ l = mcspi_read_reg(master, OMAP2_MCSPI_MODULCTRL); - MOD_REG_BIT(l, OMAP2_MCSPI_MODULCTRL_STEST, 0); - MOD_REG_BIT(l, OMAP2_MCSPI_MODULCTRL_MS, 0); - MOD_REG_BIT(l, OMAP2_MCSPI_MODULCTRL_SINGLE, 1); + l &= ~(OMAP2_MCSPI_MODULCTRL_STEST | OMAP2_MCSPI_MODULCTRL_MS); + l |= OMAP2_MCSPI_MODULCTRL_SINGLE; mcspi_write_reg(master, OMAP2_MCSPI_MODULCTRL, l); ctx->modulctrl = l; @@ -1276,9 +1276,9 @@ static int omap2_mcspi_resume(struct device *dev) * We need to toggle CS state for OMAP take this * change in account. */ - MOD_REG_BIT(cs->chconf0, OMAP2_MCSPI_CHCONF_FORCE, 1); + cs->chconf0 |= OMAP2_MCSPI_CHCONF_FORCE; __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); - MOD_REG_BIT(cs->chconf0, OMAP2_MCSPI_CHCONF_FORCE, 0); + cs->chconf0 &= ~OMAP2_MCSPI_CHCONF_FORCE; __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); } } -- 1.7.5.4 ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] spi: omap2-mcspi: Remove the macro MOD_REG_BIT 2012-08-21 6:17 ` [PATCH 2/3] spi: omap2-mcspi: Remove the macro MOD_REG_BIT Shubhrajyoti D @ 2012-08-21 9:05 ` Felipe Balbi 2012-08-22 5:52 ` Shubhrajyoti 0 siblings, 1 reply; 8+ messages in thread From: Felipe Balbi @ 2012-08-21 9:05 UTC (permalink / raw) To: Shubhrajyoti D; +Cc: spi-devel-general, linux-omap, linux-kernel [-- Attachment #1: Type: text/plain, Size: 3135 bytes --] On Tue, Aug 21, 2012 at 11:47:43AM +0530, Shubhrajyoti D wrote: > Remove the macro MOD_REG_BIT instead make the bit field modifications > directly. This deletes a branch operation in cases where the the set > is predecided.While at it optimise two sequential bit clear in one step. ^^ you need a space here, besides you can add the ack below > Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com> Acked-by: Felipe Balbi <balbi@ti.com> > --- > drivers/spi/spi-omap2-mcspi.c | 28 ++++++++++++++-------------- > 1 files changed, 14 insertions(+), 14 deletions(-) > > diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c > index dd887eb..5642111 100644 > --- a/drivers/spi/spi-omap2-mcspi.c > +++ b/drivers/spi/spi-omap2-mcspi.c > @@ -140,13 +140,6 @@ struct omap2_mcspi_cs { > u32 chconf0; > }; > > -#define MOD_REG_BIT(val, mask, set) do { \ > - if (set) \ > - val |= mask; \ > - else \ > - val &= ~mask; \ > -} while (0) > - > static inline void mcspi_write_reg(struct spi_master *master, > int idx, u32 val) > { > @@ -205,7 +198,11 @@ static void omap2_mcspi_set_dma_req(const struct spi_device *spi, > else > rw = OMAP2_MCSPI_CHCONF_DMAW; > > - MOD_REG_BIT(l, rw, enable); > + if (enable) > + l |= rw; > + else > + l &= ~rw; > + > mcspi_write_chconf0(spi, l); > } > > @@ -224,7 +221,11 @@ static void omap2_mcspi_force_cs(struct spi_device *spi, int cs_active) > u32 l; > > l = mcspi_cached_chconf0(spi); > - MOD_REG_BIT(l, OMAP2_MCSPI_CHCONF_FORCE, cs_active); > + if (cs_active) > + l |= OMAP2_MCSPI_CHCONF_FORCE; > + else > + l &= ~OMAP2_MCSPI_CHCONF_FORCE; > + > mcspi_write_chconf0(spi, l); > } > > @@ -239,9 +240,8 @@ static void omap2_mcspi_set_master_mode(struct spi_master *master) > * to single-channel master mode > */ > l = mcspi_read_reg(master, OMAP2_MCSPI_MODULCTRL); > - MOD_REG_BIT(l, OMAP2_MCSPI_MODULCTRL_STEST, 0); > - MOD_REG_BIT(l, OMAP2_MCSPI_MODULCTRL_MS, 0); > - MOD_REG_BIT(l, OMAP2_MCSPI_MODULCTRL_SINGLE, 1); > + l &= ~(OMAP2_MCSPI_MODULCTRL_STEST | OMAP2_MCSPI_MODULCTRL_MS); > + l |= OMAP2_MCSPI_MODULCTRL_SINGLE; > mcspi_write_reg(master, OMAP2_MCSPI_MODULCTRL, l); > > ctx->modulctrl = l; > @@ -1276,9 +1276,9 @@ static int omap2_mcspi_resume(struct device *dev) > * We need to toggle CS state for OMAP take this > * change in account. > */ > - MOD_REG_BIT(cs->chconf0, OMAP2_MCSPI_CHCONF_FORCE, 1); > + cs->chconf0 |= OMAP2_MCSPI_CHCONF_FORCE; > __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); > - MOD_REG_BIT(cs->chconf0, OMAP2_MCSPI_CHCONF_FORCE, 0); > + cs->chconf0 &= ~OMAP2_MCSPI_CHCONF_FORCE; > __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); > } > } > -- > 1.7.5.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] spi: omap2-mcspi: Remove the macro MOD_REG_BIT 2012-08-21 9:05 ` Felipe Balbi @ 2012-08-22 5:52 ` Shubhrajyoti 0 siblings, 0 replies; 8+ messages in thread From: Shubhrajyoti @ 2012-08-22 5:52 UTC (permalink / raw) To: balbi; +Cc: spi-devel-general, linux-omap, linux-kernel Hi Felipe, Thanks for the review On Tuesday 21 August 2012 02:35 PM, Felipe Balbi wrote: > On Tue, Aug 21, 2012 at 11:47:43AM +0530, Shubhrajyoti D wrote: >> Remove the macro MOD_REG_BIT instead make the bit field modifications >> directly. This deletes a branch operation in cases where the the set >> is predecided.While at it optimise two sequential bit clear in one step. > ^^ > you need a space here, besides you can add the ack below Will fix that and resend. >> Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com> > Acked-by: Felipe Balbi <balbi@ti.com> > >> --- >> drivers/spi/spi-omap2-mcspi.c | 28 ++++++++++++++-------------- >> 1 files changed, 14 insertions(+), 14 deletions(-) >> >> diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c >> index dd887eb..5642111 100644 >> --- a/drivers/spi/spi-omap2-mcspi.c >> +++ b/drivers/spi/spi-omap2-mcspi.c >> @@ -140,13 +140,6 @@ struct omap2_mcspi_cs { >> u32 chconf0; >> }; >> >> -#define MOD_REG_BIT(val, mask, set) do { \ >> - if (set) \ >> - val |= mask; \ >> - else \ >> - val &= ~mask; \ >> -} while (0) >> - >> static inline void mcspi_write_reg(struct spi_master *master, >> int idx, u32 val) >> { >> @@ -205,7 +198,11 @@ static void omap2_mcspi_set_dma_req(const struct spi_device *spi, >> else >> rw = OMAP2_MCSPI_CHCONF_DMAW; >> >> - MOD_REG_BIT(l, rw, enable); >> + if (enable) >> + l |= rw; >> + else >> + l &= ~rw; >> + >> mcspi_write_chconf0(spi, l); >> } >> >> @@ -224,7 +221,11 @@ static void omap2_mcspi_force_cs(struct spi_device *spi, int cs_active) >> u32 l; >> >> l = mcspi_cached_chconf0(spi); >> - MOD_REG_BIT(l, OMAP2_MCSPI_CHCONF_FORCE, cs_active); >> + if (cs_active) >> + l |= OMAP2_MCSPI_CHCONF_FORCE; >> + else >> + l &= ~OMAP2_MCSPI_CHCONF_FORCE; >> + >> mcspi_write_chconf0(spi, l); >> } >> >> @@ -239,9 +240,8 @@ static void omap2_mcspi_set_master_mode(struct spi_master *master) >> * to single-channel master mode >> */ >> l = mcspi_read_reg(master, OMAP2_MCSPI_MODULCTRL); >> - MOD_REG_BIT(l, OMAP2_MCSPI_MODULCTRL_STEST, 0); >> - MOD_REG_BIT(l, OMAP2_MCSPI_MODULCTRL_MS, 0); >> - MOD_REG_BIT(l, OMAP2_MCSPI_MODULCTRL_SINGLE, 1); >> + l &= ~(OMAP2_MCSPI_MODULCTRL_STEST | OMAP2_MCSPI_MODULCTRL_MS); >> + l |= OMAP2_MCSPI_MODULCTRL_SINGLE; >> mcspi_write_reg(master, OMAP2_MCSPI_MODULCTRL, l); >> >> ctx->modulctrl = l; >> @@ -1276,9 +1276,9 @@ static int omap2_mcspi_resume(struct device *dev) >> * We need to toggle CS state for OMAP take this >> * change in account. >> */ >> - MOD_REG_BIT(cs->chconf0, OMAP2_MCSPI_CHCONF_FORCE, 1); >> + cs->chconf0 |= OMAP2_MCSPI_CHCONF_FORCE; >> __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); >> - MOD_REG_BIT(cs->chconf0, OMAP2_MCSPI_CHCONF_FORCE, 0); >> + cs->chconf0 &= ~OMAP2_MCSPI_CHCONF_FORCE; >> __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); >> } >> } >> -- >> 1.7.5.4 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 3/3] spi: omap2-mcspi: At remove dont use the runtime_autosuspend calls [not found] ` <1345529864-7937-1-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org> 2012-08-21 6:17 ` [PATCH 1/3] spi: omap2-mcspi: Call pm_runtime_* functions directly Shubhrajyoti D 2012-08-21 6:17 ` [PATCH 2/3] spi: omap2-mcspi: Remove the macro MOD_REG_BIT Shubhrajyoti D @ 2012-08-21 6:17 ` Shubhrajyoti D 2012-08-21 9:06 ` Felipe Balbi 2 siblings, 1 reply; 8+ messages in thread From: Shubhrajyoti D @ 2012-08-21 6:17 UTC (permalink / raw) To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Cc: Shubhrajyoti, linux-omap-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, D At remove we shouldnt be using the autosuspend timeout as we are calling pm_runtime_disable immediately after. Signed-off-by: Shubhrajyoti D <shubhrajyoti-l0cyMroinI0@public.gmane.org> --- drivers/spi/spi-omap2-mcspi.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c index 5642111..f5bf628 100644 --- a/drivers/spi/spi-omap2-mcspi.c +++ b/drivers/spi/spi-omap2-mcspi.c @@ -1243,8 +1243,7 @@ static int __devexit omap2_mcspi_remove(struct platform_device *pdev) mcspi = spi_master_get_devdata(master); dma_channels = mcspi->dma_channels; - pm_runtime_mark_last_busy(mcspi->dev); - pm_runtime_put_autosuspend(mcspi->dev); + pm_runtime_put_sync(mcspi->dev); pm_runtime_disable(&pdev->dev); spi_unregister_master(master); -- 1.7.5.4 ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 3/3] spi: omap2-mcspi: At remove dont use the runtime_autosuspend calls 2012-08-21 6:17 ` [PATCH 3/3] spi: omap2-mcspi: At remove dont use the runtime_autosuspend calls Shubhrajyoti D @ 2012-08-21 9:06 ` Felipe Balbi 0 siblings, 0 replies; 8+ messages in thread From: Felipe Balbi @ 2012-08-21 9:06 UTC (permalink / raw) To: Shubhrajyoti D; +Cc: spi-devel-general, linux-omap, linux-kernel [-- Attachment #1: Type: text/plain, Size: 1291 bytes --] On Tue, Aug 21, 2012 at 11:47:44AM +0530, Shubhrajyoti D wrote: > At remove we shouldnt be using the autosuspend timeout as we are > calling pm_runtime_disable immediately after. > > Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com> Makes sense to me: Acked-by: Felipe Balbi <balbi@ti.com> > --- > drivers/spi/spi-omap2-mcspi.c | 3 +-- > 1 files changed, 1 insertions(+), 2 deletions(-) > > diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c > index 5642111..f5bf628 100644 > --- a/drivers/spi/spi-omap2-mcspi.c > +++ b/drivers/spi/spi-omap2-mcspi.c > @@ -1243,8 +1243,7 @@ static int __devexit omap2_mcspi_remove(struct platform_device *pdev) > mcspi = spi_master_get_devdata(master); > dma_channels = mcspi->dma_channels; > > - pm_runtime_mark_last_busy(mcspi->dev); > - pm_runtime_put_autosuspend(mcspi->dev); > + pm_runtime_put_sync(mcspi->dev); > pm_runtime_disable(&pdev->dev); > > spi_unregister_master(master); > -- > 1.7.5.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2012-08-22 5:52 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-21 6:17 [PATCH 0/3] spi: omap2-mcspi: spi cleanups Shubhrajyoti D
[not found] ` <1345529864-7937-1-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org>
2012-08-21 6:17 ` [PATCH 1/3] spi: omap2-mcspi: Call pm_runtime_* functions directly Shubhrajyoti D
2012-08-21 9:04 ` Felipe Balbi
2012-08-21 6:17 ` [PATCH 2/3] spi: omap2-mcspi: Remove the macro MOD_REG_BIT Shubhrajyoti D
2012-08-21 9:05 ` Felipe Balbi
2012-08-22 5:52 ` Shubhrajyoti
2012-08-21 6:17 ` [PATCH 3/3] spi: omap2-mcspi: At remove dont use the runtime_autosuspend calls Shubhrajyoti D
2012-08-21 9:06 ` Felipe Balbi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).