All of lore.kernel.org
 help / color / mirror / Atom feed
From: Knud Poulsen <knpo@ieee.org>
To: Guenter Roeck <linux@roeck-us.net>
Cc: Wim Van Sebroeck <wim@iguana.be>,
	Linux Watchdog <linux-watchdog@vger.kernel.org>
Subject: Re: [PATCH] watchdog: f71808e_wdt: Add F81865 support
Date: Thu, 21 Apr 2016 21:18:09 +0200	[thread overview]
Message-ID: <57192771.9090408@ieee.org> (raw)
In-Reply-To: <5718DA30.3080003@roeck-us.net>



On 2016-04-21 15:48, Guenter Roeck wrote:
> On 04/20/2016 10:56 AM, Knud Poulsen wrote:
>> Adds watchdog support for Fintek F81865 Super-IO chip to
>> Fintek wdt driver (f71808e_wdt)
>>
>> Tested and verified on Lanner LEC-3030 Industrial PC
>>
>> Datasheet references:
>> http://www.hardwaresecrets.com/datasheets/F81865_V028P.pdf
>> http://www.alldatasheet.com/datasheet-pdf/pdf/406317/FINTEK/F81865.html
>>
>> Signed-off-by: Knud Poulsen <knpo@ieee.org>
>> ---
>>   drivers/watchdog/f71808e_wdt.c | 36 ++++++++++++++++++++++++++++++------
>>   1 file changed, 30 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/watchdog/f71808e_wdt.c b/drivers/watchdog/f71808e_wdt.c
>> index 016bd93..956f8eb 100644
>> --- a/drivers/watchdog/f71808e_wdt.c
>> +++ b/drivers/watchdog/f71808e_wdt.c
>> @@ -2,6 +2,7 @@
>>    *   Copyright (C) 2006 by Hans Edgington <hans@edgington.nl>              *
>>    *   Copyright (C) 2007-2009 Hans de Goede <hdegoede@redhat.com>           *
>>    *   Copyright (C) 2010 Giel van Schijndel <me@mortis.eu>                  *
>> + *   Copyright (C) 2016 Knud Poulsen <knpo@ieee.org>                       *
> 
> For minor improvements like this really a stretch. Please reconsider.

No problem, will strip.

> 
>>    *                                                                         *
>>    *   This program is free software; you can redistribute it and/or modify  *
>>    *   it under the terms of the GNU General Public License as published by  *
>> @@ -38,7 +39,7 @@
>>
>>   #define SIO_F71808FG_LD_WDT	0x07	/* Watchdog timer logical device */
>>   #define SIO_UNLOCK_KEY		0x87	/* Key to enable Super-I/O */
>> -#define SIO_LOCK_KEY		0xAA	/* Key to diasble Super-I/O */
>> +#define SIO_LOCK_KEY		0xAA	/* Key to disable Super-I/O */
> 
> Unrelated change - separate patch, please.

No problem, will submit separately.

> 
>>
>>   #define SIO_REG_LDSEL		0x07	/* Logical device select */
>>   #define SIO_REG_DEVID		0x20	/* Device ID (2 bytes) */
>> @@ -59,6 +60,7 @@
>>   #define SIO_F71869A_ID		0x1007	/* Chipset ID */
>>   #define SIO_F71882_ID		0x0541	/* Chipset ID */
>>   #define SIO_F71889_ID		0x0723	/* Chipset ID */
>> +#define SIO_F81865_ID		0x0704	/* Chipset ID */
>>
>>   #define F71808FG_REG_WDO_CONF		0xf0
>>   #define F71808FG_REG_WDT_CONF		0xf5
>> @@ -71,6 +73,10 @@
>>   #define F71808FG_FLAG_WD_PULSE		4
>>   #define F71808FG_FLAG_WD_UNIT		3
>>
>> +#define F81865_REG_WDO_CONF		0xfa
>> +#define F81865_FLAG_WDOUT_EN		0
>> +#define F81865_FLAG_WDTMOUT_STS		6
>> +
>>   /* Default values */
>>   #define WATCHDOG_TIMEOUT	60	/* 1 minute default timeout */
>>   #define WATCHDOG_MAX_TIMEOUT	(60 * 255)
>> @@ -112,7 +118,7 @@ module_param(start_withtimeout, uint, 0);
>>   MODULE_PARM_DESC(start_withtimeout, "Start watchdog timer on module load with"
>>   	" given initial timeout. Zero (default) disables this feature.");
>>
>> -enum chips { f71808fg, f71858fg, f71862fg, f71869, f71882fg, f71889fg };
>> +enum chips { f71808fg, f71858fg, f71862fg, f71869, f71882fg, f71889fg, f81865 };
>>
>>   static const char *f71808e_names[] = {
>>   	"f71808fg",
>> @@ -121,6 +127,7 @@ static const char *f71808e_names[] = {
>>   	"f71869",
>>   	"f71882fg",
>>   	"f71889fg",
>> +	"f81865",
>>   };
>>
>>   /* Super-I/O Function prototypes */
>> @@ -360,6 +367,11 @@ static int watchdog_start(void)
>>   			superio_inb(watchdog.sioaddr, SIO_REG_MFUNCT3) & 0xcf);
>>   		break;
>>
>> +	case f81865:
>> +		/* Set pin 70 to WDTRST# */
>> +		superio_clear_bit(watchdog.sioaddr, SIO_REG_MFUNCT3, 5);
>> +		break;
>> +
>>   	default:
>>   		/*
>>   		 * 'default' label to shut up the compiler and catch
>> @@ -371,9 +383,13 @@ static int watchdog_start(void)
>>
>>   	superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT);
>>   	superio_set_bit(watchdog.sioaddr, SIO_REG_ENABLE, 0);
>> -	superio_set_bit(watchdog.sioaddr, F71808FG_REG_WDO_CONF,
>> -			F71808FG_FLAG_WDOUT_EN);
>> -
>> +	if (watchdog.type == f81865) {
>> +		superio_set_bit(watchdog.sioaddr, F81865_REG_WDO_CONF,
>> +				F81865_FLAG_WDOUT_EN);
>> +	} else {
>> +		superio_set_bit(watchdog.sioaddr, F71808FG_REG_WDO_CONF,
>> +				F71808FG_FLAG_WDOUT_EN);
>> +	}
> 
> Unnecessary { }.

Ack, I will strip them out.

> 
>>   	superio_set_bit(watchdog.sioaddr, F71808FG_REG_WDT_CONF,
>>   			F71808FG_FLAG_WD_EN);
>>
>> @@ -655,7 +671,12 @@ static int __init watchdog_init(int sioaddr)
>>   	superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT);
>>
>>   	wdt_conf = superio_inb(sioaddr, F71808FG_REG_WDT_CONF);
>> -	watchdog.caused_reboot = wdt_conf & F71808FG_FLAG_WDTMOUT_STS;
>> +	if (watchdog.type == f81865) {
>> +		watchdog.caused_reboot = wdt_conf & F81865_FLAG_WDTMOUT_STS;
>> +	} else {
>> +		watchdog.caused_reboot = wdt_conf & F71808FG_FLAG_WDTMOUT_STS;
>> +	}
>> +
> 
> Unnecessary { }, and please no double empty lines.

Ack.

> 
>>
>>   	superio_exit(sioaddr);
>>
>> @@ -770,6 +791,9 @@ static int __init f71808e_find(int sioaddr)
>>   		/* Confirmed (by datasheet) not to have a watchdog. */
>>   		err = -ENODEV;
>>   		goto exit;
>> +	case SIO_F81865_ID:
>> +		watchdog.type = f81865;
>> +		break;
>>   	default:
>>   		pr_info("Unrecognized Fintek device: %04x\n",
>>   			(unsigned int)devid);
>>
> 

All comments OK, will fix and resubmit as ps2 + separate patch for typo's.

      reply	other threads:[~2016-04-21 19:18 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-20 17:56 [PATCH] watchdog: f71808e_wdt: Add F81865 support Knud Poulsen
2016-04-21 13:48 ` Guenter Roeck
2016-04-21 19:18   ` Knud Poulsen [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=57192771.9090408@ieee.org \
    --to=knpo@ieee.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=wim@iguana.be \
    /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.