From: Stephen Warren <swarren@wwwdotorg.org>
To: Andrew Chew <achew@nvidia.com>,
daniel.lezcano@linaro.org, tglx@linutronix.de,
thierry.reding@gmail.com, rob@landley.net,
grant.likely@linaro.org, robh+dt@kernel.org,
abrestic@chromium.org, dgreid@chromium.org, katierh@chromium.org
Cc: linux-kernel@vger.kernel.org, linux-tegra@vger.kernel.org,
linux-watchdog@vger.kernel.org, linux-doc@vger.kernel.org
Subject: Re: [PATCH v2 3/3] watchdog: Add tegra watchdog
Date: Wed, 05 Feb 2014 13:14:21 -0700 [thread overview]
Message-ID: <52F29B9D.2090804@wwwdotorg.org> (raw)
In-Reply-To: <1391473055-3158-4-git-send-email-achew@nvidia.com>
On 02/03/2014 05:17 PM, Andrew Chew wrote:
> Add a driver for the hardware watchdogs in NVIDIA Tegra SoCs (tegra30 and
s/tegra30/Tegra30/
> later). This driver will configure one watchdog timer that will reset the
> system in the case of a watchdog timeout.
>
> This driver binds to the nvidia,tegra30-timer device node and gets its
> register base from there.
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> +config TEGRA_WATCHDOG
> + tristate "Tegra watchdog"
> + depends on ARCH_TEGRA
|| COMPILE_TEST ?
> diff --git a/drivers/watchdog/tegra_wdt.c b/drivers/watchdog/tegra_wdt.c
> +static int tegra_wdt_probe(struct platform_device *pdev)
> + /* This is the timer base. */
> + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> + if (!res) {
...
> + mem = devm_request_mem_region(&pdev->dev, res->start,
> + resource_size(res),
> + pdev->name);
> + if (!mem) {
...
> + regs = devm_ioremap(&pdev->dev, mem->start,
> + resource_size(mem));
> + if (!regs) {
...
I forget exactly which of those, but I think at least one/some of those
don't need to be error-checked, since the later functions will detect an
error input, and return an appropriate error code, so they can be
chained together while only error-checking the final result.
> +static int tegra_wdt_remove(struct platform_device *pdev)
> + platform_set_drvdata(pdev, NULL);
There's no need to do that; the value of drvdata is irrelevant when the
device isn't probed, so there's no need for it to be NULL.
> +static struct platform_driver tegra_wdt_driver = {
> + .probe = tegra_wdt_probe,
> + .remove = tegra_wdt_remove,
> +#ifdef CONFIG_PM
> + .suspend = tegra_wdt_suspend,
> + .resume = tegra_wdt_resume,
> +#endif
I think for suspend/resume, you'd usually set it up like:
static const struct dev_pm_ops tegra20_i2s_pm_ops = {
SET_RUNTIME_PM_OPS(tegra20_i2s_runtime_suspend,
tegra20_i2s_runtime_resume, NULL)
};
static struct platform_driver tegra20_i2s_driver = {
.driver = {
...
.pm = &tegra20_i2s_pm_ops,
},
...
};
> + .driver = {
> + .owner = THIS_MODULE,
> + .name = "tegra-wdt",
> + .of_match_table = tegra_wdt_of_match,
> + },
> +};
> +
> +module_platform_driver(tegra_wdt_driver);
No need for the blank line before module_platform_driver().
> +MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
> +MODULE_ALIAS("platform:tegra-wdt");
You don't need at least that second alias; everything binds to the
MODULE_DEVICE_TABLE() now with DT.
prev parent reply other threads:[~2014-02-05 20:14 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-04 0:17 [PATCH v2 0/3] tegra30 watchdog support Andrew Chew
2014-02-04 0:17 ` Andrew Chew
2014-02-04 0:17 ` [PATCH v2 1/3] clocksource: tegra: Add nvidia,tegra30-timer compat Andrew Chew
2014-02-04 0:17 ` Andrew Chew
2014-02-05 20:04 ` Stephen Warren
2014-02-05 20:06 ` Andrew Chew
2014-02-05 20:17 ` Stephen Warren
2014-02-05 21:39 ` Andrew Chew
2014-02-04 0:17 ` [PATCH v2 2/3] clocksource: tegra: Define timer bases in header file Andrew Chew
2014-02-04 0:17 ` Andrew Chew
2014-02-04 7:54 ` Daniel Lezcano
2014-02-04 7:54 ` Daniel Lezcano
2014-02-04 18:55 ` Andrew Chew
2014-02-04 18:55 ` Andrew Chew
2014-02-04 18:55 ` Andrew Chew
2014-02-05 20:03 ` Stephen Warren
2014-02-05 21:41 ` Andrew Chew
2014-02-04 0:17 ` [PATCH v2 3/3] watchdog: Add tegra watchdog Andrew Chew
2014-02-04 0:17 ` Andrew Chew
2014-02-05 20:14 ` Stephen Warren [this message]
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=52F29B9D.2090804@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--cc=abrestic@chromium.org \
--cc=achew@nvidia.com \
--cc=daniel.lezcano@linaro.org \
--cc=dgreid@chromium.org \
--cc=grant.likely@linaro.org \
--cc=katierh@chromium.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=rob@landley.net \
--cc=robh+dt@kernel.org \
--cc=tglx@linutronix.de \
--cc=thierry.reding@gmail.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.