From: Guenter Roeck <linux@roeck-us.net>
To: Matt Fleming <matt@codeblueprint.co.uk>,
Wim Van Sebroeck <wim@iguana.be>
Cc: linux-kernel@vger.kernel.org, linux-watchdog@vger.kernel.org,
Mika Westerberg <mika.westerberg@linux.intel.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Jean Delvare <jdelvare@suse.com>,
Wolfram Sang <wsa@the-dreams.de>,
Matt Fleming <matt.fleming@intel.com>
Subject: Re: [PATCH 3/5] iTCO_wdt: Add support for TCO on Intel Sunrisepoint
Date: Mon, 27 Jul 2015 07:22:51 -0700 [thread overview]
Message-ID: <55B63EBB.7030306@roeck-us.net> (raw)
In-Reply-To: <1438004292-16382-4-git-send-email-matt@codeblueprint.co.uk>
On 07/27/2015 06:38 AM, Matt Fleming wrote:
> From: Matt Fleming <matt.fleming@intel.com>
>
> The revision of the watchdog hardware in Sunrisepoint necessitates a new
> "version" inside the TCO watchdog driver because some of the register
> layouts have changed.
>
> Cc: Wim Van Sebroeck <wim@iguana.be>
> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
> ---
> drivers/watchdog/iTCO_wdt.c | 58 ++++++++++++++++++++++++++-------------------
> 1 file changed, 34 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c
> index 9a6e70976f64..17dfbc51b85a 100644
> --- a/drivers/watchdog/iTCO_wdt.c
> +++ b/drivers/watchdog/iTCO_wdt.c
> @@ -145,58 +145,65 @@ static inline unsigned int ticks_to_seconds(int ticks)
> return iTCO_wdt_private.iTCO_version == 3 ? ticks : (ticks * 6) / 10;
> }
>
> +static inline u32 no_reboot_bit(void)
> +{
> + u32 enable_bit;
> +
> + switch (iTCO_wdt_private.iTCO_version) {
> + case 3:
> + enable_bit = 0x00000010;
> + break;
> + case 2:
> + enable_bit = 0x00000020;
> + break;
> + default:
> + enable_bit = 0x00000002;
I think it would be better to explicitly list versions 1 and 4 here,
for clarification. We don't know what Intel will come up with for version 5,
and by then no one will remember that bit 2 applies for version 1 and 4 only.
Thanks,
Guenter
> + break;
> + }
> +
> + return enable_bit;
> +}
> +
> static void iTCO_wdt_set_NO_REBOOT_bit(void)
> {
> u32 val32;
>
> /* Set the NO_REBOOT bit: this disables reboots */
> - if (iTCO_wdt_private.iTCO_version == 3) {
> - val32 = readl(iTCO_wdt_private.gcs_pmc);
> - val32 |= 0x00000010;
> - writel(val32, iTCO_wdt_private.gcs_pmc);
> - } else if (iTCO_wdt_private.iTCO_version == 2) {
> + if (iTCO_wdt_private.iTCO_version >= 2) {
> val32 = readl(iTCO_wdt_private.gcs_pmc);
> - val32 |= 0x00000020;
> + val32 |= no_reboot_bit();
> writel(val32, iTCO_wdt_private.gcs_pmc);
> } else if (iTCO_wdt_private.iTCO_version == 1) {
> pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32);
> - val32 |= 0x00000002;
> + val32 |= no_reboot_bit();
> pci_write_config_dword(iTCO_wdt_private.pdev, 0xd4, val32);
> }
> }
>
> static int iTCO_wdt_unset_NO_REBOOT_bit(void)
> {
> + u32 enable_bit = no_reboot_bit();
> int ret = 0;
> - u32 val32;
> + u32 val32 = 0;
>
> /* Unset the NO_REBOOT bit: this enables reboots */
> - if (iTCO_wdt_private.iTCO_version == 3) {
> - val32 = readl(iTCO_wdt_private.gcs_pmc);
> - val32 &= 0xffffffef;
> - writel(val32, iTCO_wdt_private.gcs_pmc);
> -
> - val32 = readl(iTCO_wdt_private.gcs_pmc);
> - if (val32 & 0x00000010)
> - ret = -EIO;
> - } else if (iTCO_wdt_private.iTCO_version == 2) {
> + if (iTCO_wdt_private.iTCO_version >= 2) {
> val32 = readl(iTCO_wdt_private.gcs_pmc);
> - val32 &= 0xffffffdf;
> + val32 &= ~enable_bit;
> writel(val32, iTCO_wdt_private.gcs_pmc);
>
> val32 = readl(iTCO_wdt_private.gcs_pmc);
> - if (val32 & 0x00000020)
> - ret = -EIO;
> } else if (iTCO_wdt_private.iTCO_version == 1) {
> pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32);
> - val32 &= 0xfffffffd;
> + val32 &= ~enable_bit;
> pci_write_config_dword(iTCO_wdt_private.pdev, 0xd4, val32);
>
> pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32);
> - if (val32 & 0x00000002)
> - ret = -EIO;
> }
>
> + if (val32 & enable_bit)
> + ret = -EIO;
> +
> return ret; /* returns: 0 = OK, -EIO = Error */
> }
>
> @@ -503,7 +510,10 @@ static int iTCO_wdt_probe(struct platform_device *dev)
> pdata->name, pdata->iTCO_version, (u64)TCOBASE);
>
> /* Clear out the (probably old) status */
> - if (iTCO_wdt_private.iTCO_version == 3) {
> + if (iTCO_wdt_private.iTCO_version == 4) {
> + outw(0x0008, TCO1_STS); /* Clear the Time Out Status bit */
> + outw(0x0002, TCO2_STS); /* Clear SECOND_TO_STS bit */
> + } else if (iTCO_wdt_private.iTCO_version == 3) {
> outl(0x20008, TCO1_STS);
> } else {
> outw(0x0008, TCO1_STS); /* Clear the Time Out Status bit */
>
next prev parent reply other threads:[~2015-07-27 14:22 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-27 13:38 [PATCH 0/5] iTCO_wdt: Add support for Intel Sunrisepoint Matt Fleming
2015-07-27 13:38 ` [PATCH 1/5] iTCO_wdt: Expose watchdog properties using platform data Matt Fleming
2015-07-27 13:49 ` Guenter Roeck
2015-07-27 14:19 ` Matt Fleming
2015-07-27 14:24 ` Guenter Roeck
2015-07-28 9:52 ` Matt Fleming
2015-07-27 15:33 ` Lee Jones
2015-07-27 15:33 ` Lee Jones
2015-07-27 15:45 ` Andy Shevchenko
2015-07-27 20:32 ` Matt Fleming
2015-07-27 21:32 ` Lee Jones
2015-07-28 9:16 ` Matt Fleming
2015-07-28 9:46 ` Lee Jones
2015-07-28 9:46 ` Lee Jones
2015-07-28 11:07 ` Matt Fleming
2015-07-28 11:37 ` Lee Jones
2015-07-28 11:37 ` Lee Jones
2015-07-28 12:43 ` Matt Fleming
2015-07-28 15:00 ` Lee Jones
2015-07-28 15:18 ` Guenter Roeck
2015-07-28 15:28 ` Lee Jones
2015-07-28 15:28 ` Lee Jones
2015-07-28 15:45 ` Matt Fleming
2015-07-28 15:56 ` Lee Jones
2015-07-28 17:08 ` Guenter Roeck
2015-07-28 17:32 ` Lee Jones
2015-07-28 17:32 ` Lee Jones
2015-07-28 18:51 ` Guenter Roeck
2015-07-29 7:30 ` Lee Jones
2015-07-29 7:30 ` Lee Jones
2015-07-29 9:04 ` Jean Delvare
2015-07-29 10:07 ` Lee Jones
2015-07-29 10:07 ` Lee Jones
2015-07-28 18:46 ` Aaron Sierra
2015-07-29 7:38 ` Lee Jones
2015-07-29 14:52 ` Aaron Sierra
2015-07-29 15:32 ` Lee Jones
2015-07-29 15:32 ` Lee Jones
2015-07-29 15:52 ` Guenter Roeck
2015-07-30 8:51 ` Lee Jones
2015-07-29 16:20 ` Aaron Sierra
2015-07-29 16:38 ` Guenter Roeck
2015-07-29 17:00 ` Aaron Sierra
2015-07-28 16:50 ` Jean Delvare
2015-07-28 16:50 ` Jean Delvare
2015-07-29 7:27 ` Lee Jones
2015-07-29 7:27 ` Lee Jones
2015-07-29 7:29 ` Jean Delvare
2015-07-29 11:09 ` Matt Fleming
2015-07-27 13:38 ` [PATCH 2/5] i2c: i801: Create iTCO device on newer Intel PCHs Matt Fleming
2015-07-27 14:08 ` Guenter Roeck
[not found] ` <55B63B48.2040603-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2015-07-28 9:34 ` Matt Fleming
2015-07-28 9:34 ` Matt Fleming
2015-07-27 13:38 ` [PATCH 3/5] iTCO_wdt: Add support for TCO on Intel Sunrisepoint Matt Fleming
2015-07-27 14:22 ` Guenter Roeck [this message]
2015-07-28 10:13 ` Matt Fleming
2015-07-28 17:03 ` Jean Delvare
2015-07-28 17:03 ` Jean Delvare
2015-07-29 10:45 ` Matt Fleming
2015-07-29 10:45 ` Matt Fleming
2015-07-27 13:38 ` [PATCH 4/5] iTCO_wdt: fixup for the header Matt Fleming
2015-07-27 14:13 ` Guenter Roeck
2015-07-28 9:17 ` Matt Fleming
2015-07-27 13:38 ` [PATCH 5/5] i2c-i801: fixup regarding watchdog timer Matt Fleming
2015-07-27 14:14 ` Guenter Roeck
2015-07-28 9:17 ` Matt Fleming
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=55B63EBB.7030306@roeck-us.net \
--to=linux@roeck-us.net \
--cc=andriy.shevchenko@linux.intel.com \
--cc=jdelvare@suse.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=matt.fleming@intel.com \
--cc=matt@codeblueprint.co.uk \
--cc=mika.westerberg@linux.intel.com \
--cc=wim@iguana.be \
--cc=wsa@the-dreams.de \
/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.