From: Scott Wood <scottwood@freescale.com>
To: Zhao Chenhui <chenhui.zhao@freescale.com>
Cc: netdev@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 6/7] fsl_pmc: Add API to enable device as wakeup event source
Date: Fri, 4 Nov 2011 16:14:25 -0500 [thread overview]
Message-ID: <4EB455B1.8030009@freescale.com> (raw)
In-Reply-To: <1320410349-14600-1-git-send-email-chenhui.zhao@freescale.com>
On 11/04/2011 07:39 AM, Zhao Chenhui wrote:
> @@ -45,6 +46,72 @@ static int has_lossless;
> * code can be compatible with both 32-bit & 36-bit */
> extern void mpc85xx_enter_deep_sleep(u64 ccsrbar, u32 powmgtreq);
>
> +#ifdef CONFIG_FSL_PMC
> +/**
> + * pmc_enable_wake - enable OF device as wakeup event source
> + * @pdev: platform device affected
> + * @state: PM state from which device will issue wakeup events
> + * @enable: True to enable event generation; false to disable
> + *
> + * This enables the device as a wakeup event source, or disables it.
> + *
> + * RETURN VALUE:
> + * 0 is returned on success
> + * -EINVAL is returned if device is not supposed to wake up the system
> + * Error code depending on the platform is returned if both the platform and
> + * the native mechanism fail to enable the generation of wake-up events
> + */
> +int pmc_enable_wake(struct platform_device *pdev,
> + suspend_state_t state, bool enable)
"pmc" is too generic for a global function. If this can be either
enable or disable, perhaps it should be something like
mpc85xx_pmc_set_wake().
> +{
> + int ret = 0;
> + struct device_node *clk_np;
> + u32 *pmcdr_mask;
> +
> + if (!pmc_regs) {
> + printk(KERN_WARNING "PMC is unavailable\n");
> + return -ENOMEM;
> + }
-ENOMEM is not appropriate here, maybe -ENODEV?
Should print __func__ so the user knows what's complaining.
> + if (enable && !device_may_wakeup(&pdev->dev))
> + return -EINVAL;
> +
> + clk_np = of_parse_phandle(pdev->dev.of_node, "clk-handle", 0);
> + if (!clk_np)
> + return -EINVAL;
> +
> + pmcdr_mask = (u32 *)of_get_property(clk_np, "fsl,pmcdr-mask", NULL);
> + if (!pmcdr_mask) {
> + ret = -EINVAL;
> + goto out;
> + }
> +
> + /* clear to enable clock in low power mode */
> + if (enable)
> + clrbits32(&pmc_regs->pmcdr, *pmcdr_mask);
> + else
> + setbits32(&pmc_regs->pmcdr, *pmcdr_mask);
We should probably initialize PMCDR to all bits set (or at least all
ones we know are valid) -- the default should be "not a wakeup source".
> +/**
> + * pmc_enable_lossless - enable lossless ethernet in low power mode
> + * @enable: True to enable event generation; false to disable
> + */
> +void pmc_enable_lossless(int enable)
> +{
> + if (enable && has_lossless)
> + setbits32(&pmc_regs->pmcsr, PMCSR_LOSSLESS);
> + else
> + clrbits32(&pmc_regs->pmcsr, PMCSR_LOSSLESS);
> +}
> +EXPORT_SYMBOL_GPL(pmc_enable_lossless);
> +#endif
Won't we overwrite this later?
-Scott
WARNING: multiple messages have this Message-ID (diff)
From: Scott Wood <scottwood@freescale.com>
To: Zhao Chenhui <chenhui.zhao@freescale.com>
Cc: <linuxppc-dev@lists.ozlabs.org>, <netdev@vger.kernel.org>
Subject: Re: [PATCH 6/7] fsl_pmc: Add API to enable device as wakeup event source
Date: Fri, 4 Nov 2011 16:14:25 -0500 [thread overview]
Message-ID: <4EB455B1.8030009@freescale.com> (raw)
In-Reply-To: <1320410349-14600-1-git-send-email-chenhui.zhao@freescale.com>
On 11/04/2011 07:39 AM, Zhao Chenhui wrote:
> @@ -45,6 +46,72 @@ static int has_lossless;
> * code can be compatible with both 32-bit & 36-bit */
> extern void mpc85xx_enter_deep_sleep(u64 ccsrbar, u32 powmgtreq);
>
> +#ifdef CONFIG_FSL_PMC
> +/**
> + * pmc_enable_wake - enable OF device as wakeup event source
> + * @pdev: platform device affected
> + * @state: PM state from which device will issue wakeup events
> + * @enable: True to enable event generation; false to disable
> + *
> + * This enables the device as a wakeup event source, or disables it.
> + *
> + * RETURN VALUE:
> + * 0 is returned on success
> + * -EINVAL is returned if device is not supposed to wake up the system
> + * Error code depending on the platform is returned if both the platform and
> + * the native mechanism fail to enable the generation of wake-up events
> + */
> +int pmc_enable_wake(struct platform_device *pdev,
> + suspend_state_t state, bool enable)
"pmc" is too generic for a global function. If this can be either
enable or disable, perhaps it should be something like
mpc85xx_pmc_set_wake().
> +{
> + int ret = 0;
> + struct device_node *clk_np;
> + u32 *pmcdr_mask;
> +
> + if (!pmc_regs) {
> + printk(KERN_WARNING "PMC is unavailable\n");
> + return -ENOMEM;
> + }
-ENOMEM is not appropriate here, maybe -ENODEV?
Should print __func__ so the user knows what's complaining.
> + if (enable && !device_may_wakeup(&pdev->dev))
> + return -EINVAL;
> +
> + clk_np = of_parse_phandle(pdev->dev.of_node, "clk-handle", 0);
> + if (!clk_np)
> + return -EINVAL;
> +
> + pmcdr_mask = (u32 *)of_get_property(clk_np, "fsl,pmcdr-mask", NULL);
> + if (!pmcdr_mask) {
> + ret = -EINVAL;
> + goto out;
> + }
> +
> + /* clear to enable clock in low power mode */
> + if (enable)
> + clrbits32(&pmc_regs->pmcdr, *pmcdr_mask);
> + else
> + setbits32(&pmc_regs->pmcdr, *pmcdr_mask);
We should probably initialize PMCDR to all bits set (or at least all
ones we know are valid) -- the default should be "not a wakeup source".
> +/**
> + * pmc_enable_lossless - enable lossless ethernet in low power mode
> + * @enable: True to enable event generation; false to disable
> + */
> +void pmc_enable_lossless(int enable)
> +{
> + if (enable && has_lossless)
> + setbits32(&pmc_regs->pmcsr, PMCSR_LOSSLESS);
> + else
> + clrbits32(&pmc_regs->pmcsr, PMCSR_LOSSLESS);
> +}
> +EXPORT_SYMBOL_GPL(pmc_enable_lossless);
> +#endif
Won't we overwrite this later?
-Scott
next prev parent reply other threads:[~2011-11-04 21:14 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-04 12:39 [PATCH 6/7] fsl_pmc: Add API to enable device as wakeup event source Zhao Chenhui
2011-11-04 12:39 ` Zhao Chenhui
2011-11-04 21:14 ` Scott Wood [this message]
2011-11-04 21:14 ` Scott Wood
2011-11-07 11:22 ` Zhao Chenhui
2011-11-07 11:22 ` Zhao Chenhui
2011-11-07 15:49 ` Scott Wood
2011-11-07 15:49 ` Scott Wood
2011-11-08 11:12 ` Li Yang-R58472
2011-11-08 11:12 ` Li Yang-R58472
2011-11-05 0:08 ` Tabi Timur-B04825
2011-11-05 0:08 ` Tabi Timur-B04825
2011-11-07 11:24 ` Zhao Chenhui
2011-11-07 11:24 ` Zhao Chenhui
2011-11-07 18:41 ` Scott Wood
2011-11-07 18:41 ` Scott Wood
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=4EB455B1.8030009@freescale.com \
--to=scottwood@freescale.com \
--cc=chenhui.zhao@freescale.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=netdev@vger.kernel.org \
/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.