svn commit: r368130 - in head: share/man/man4 sys/dev/ftwd sys/modules sys/modules/ftwd

Rodney W. Grimes freebsd at gndrsh.dnsmgr.net
Sun Nov 29 08:59:57 UTC 2020


> Author: phk
> Date: Sat Nov 28 22:34:33 2020
> New Revision: 368130
> URL: https://svnweb.freebsd.org/changeset/base/368130
> 
> Log:
>   Add watchdog(9) driver for the Fintek F81803 SuperIO chip
> 
> Added:
>   head/share/man/man4/ftwd.4   (contents, props changed)
>   head/sys/dev/ftwd/
>   head/sys/dev/ftwd/ftwd.c   (contents, props changed)
>   head/sys/modules/ftwd/
>   head/sys/modules/ftwd/Makefile   (contents, props changed)
> Modified:
>   head/share/man/man4/Makefile
>   head/sys/modules/Makefile
> 
> Modified: head/share/man/man4/Makefile
> ==============================================================================
> --- head/share/man/man4/Makefile	Sat Nov 28 18:09:16 2020	(r368129)
> +++ head/share/man/man4/Makefile	Sat Nov 28 22:34:33 2020	(r368130)
> @@ -158,6 +158,7 @@ MAN=	aac.4 \
>  	ffclock.4 \
>  	filemon.4 \
>  	firewire.4 \
> +	${_ftwd.4} \
>  	full.4 \
>  	fwe.4 \
>  	fwip.4 \
> @@ -785,6 +786,7 @@ _chvgpio.4=	chvgpio.4
>  _coretemp.4=	coretemp.4
>  _cpuctl.4=	cpuctl.4
>  _dpms.4=	dpms.4
> +_ftwd.4=	ftwd.4
>  _hpt27xx.4=	hpt27xx.4
>  _hptiop.4=	hptiop.4
>  _hptmv.4=	hptmv.4
> 
> Added: head/share/man/man4/ftwd.4
> ==============================================================================
> --- /dev/null	00:00:00 1970	(empty, because file is newly added)
> +++ head/share/man/man4/ftwd.4	Sat Nov 28 22:34:33 2020	(r368130)
> @@ -0,0 +1,66 @@
> +.\"
> +.\" SPDX-License-Identifier: BSD-2-Clause-FreeBSD
> +.\"
> +.\" Copyright (c) 2012 Bjoern A. Zeeb <bz at FreeBSD.org>
> +.\" Copyright (c) 2019 Andriy Gapon <avg at FreeBSD.org>

This appears to be a new file, perhaps cloned from some place else?
And later you assert that you wrote this manual page,
so shouldn't you also be the copyright holder?


> +.\"
> +.\" Redistribution and use in source and binary forms, with or without
> +.\" modification, are permitted provided that the following conditions
> +.\" are met:
> +.\" 1. Redistributions of source code must retain the above copyright
> +.\"    notice, this list of conditions and the following disclaimer.
> +.\" 2. Redistributions in binary form must reproduce the above copyright
> +.\"    notice, this list of conditions and the following disclaimer in the
> +.\"    documentation and/or other materials provided with the distribution.
> +.\"
> +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
> +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> +.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
> +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> +.\" SUCH DAMAGE.
> +.\"
> +.\" $FreeBSD$
> +.\"
> +.Dd November 26, 2020
> +.Dt FTWD 4
> +.Os
> +.Sh NAME
> +.Nm ftwd
> +.Nd Fintek F81803 watchdog timer
> +.Sh SYNOPSIS
> +To compile this driver into the kernel, place the following lines in your
> +kernel configuration file:
> +.Bd -ragged -offset indent
> +.Cd "device superio"
> +.Cd "device ftwd"
> +.Ed
> +.Pp
> +Alternatively, to load the driver as a module at boot time, place the following
> +line in
> +.Xr loader.conf 5 :
> +.Bd -literal -offset indent
> +ftwd_load="YES"
> +.Ed
> +.Sh DESCRIPTION
> +The
> +.Nm
> +driver provides
> +.Xr watchdog 4
> +support for the watchdog timer in the Fintek F81803 chip.
> +.Sh SEE ALSO
> +.Xr superio 4 ,
> +.Xr watchdog 4 ,
> +.Xr device.hints 5 ,
> +.Xr watchdog 8 ,
> +.Xr watchdogd 8 ,
> +.Xr watchdog 9
> +.Sh AUTHORS
> +.An -nosplit
> +This manual page was written by
> +.An Poul-Henning Kamp Aq Mt phk at FreeBSD.org .

Here you claim you wrote it...

> 
> Added: head/sys/dev/ftwd/ftwd.c
> ==============================================================================
> --- /dev/null	00:00:00 1970	(empty, because file is newly added)
> +++ head/sys/dev/ftwd/ftwd.c	Sat Nov 28 22:34:33 2020	(r368130)
> @@ -0,0 +1,157 @@
> +/*-
> + * SPDX-License-Identifier: BSD-2-Clause
> + *
> + * Copyright (c) 2020 Poul-Henning Kamp
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + *    notice, this list of conditions and the following disclaimer in the
> + *    documentation and/or other materials provided with the distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> + * SUCH DAMAGE.
> + */
> +
> +#include <sys/cdefs.h>
> +__FBSDID("$FreeBSD$");
> +
> +#include <sys/param.h>
> +#include <sys/kernel.h>
> +#include <sys/bus.h>
> +#include <sys/eventhandler.h>
> +#include <sys/module.h>
> +#include <sys/rman.h>
> +#include <sys/systm.h>
> +#include <sys/watchdog.h>
> +
> +#include <dev/superio/superio.h>
> +
> +#include <machine/bus.h>
> +#include <machine/resource.h>
> +
> +struct ftwd_softc {
> +	eventhandler_tag	wd_ev;
> +};
> +
> +static void
> +ftwd_func(void *priv, u_int cmd, int *error)
> +{
> +	device_t dev = priv;
> +	uint64_t timeout;
> +	uint8_t val = 0;
> +	uint8_t minutes = 0;
> +
> +	if (cmd != 0) {
> +		cmd &= WD_INTERVAL;
> +
> +		/* Convert the requested timeout to seconds. */
> +		if (cmd >= WD_TO_1SEC)
> +			timeout = (uint64_t)1 << (cmd - WD_TO_1SEC);
> +		else
> +			timeout = 1;
> +
> +		if (timeout <= UINT8_MAX) {
> +			val = timeout;
> +			*error = 0;
> +		} else if ((timeout / 60) <= UINT8_MAX) {
> +			val = timeout / 60;
> +			minutes = 1;
> +			*error = 0;
> +		}
> +	}
> +	if (bootverbose) {
> +                if (val == 0) {
> +			device_printf(dev, "disabling watchdog\n");
> +		} else {
> +			device_printf(dev,
> +			    "arm watchdog to %d %s%s (Was: 0x%02x)\n",
> +			    val, minutes ? "minute" : "second",
> +                            val == 1 ? "" : "s",
> +			    superio_read(dev, 0xf6)
> +			);
> +		}
> +	}
> +	superio_write(dev, 0xf0, 0x00);		// Disable WDTRST#
> +	superio_write(dev, 0xf6, val);		// Set Counter
> +
> +	if (minutes)
> +		superio_write(dev, 0xf5, 0x7d);	// minutes, act high, 125ms
> +	else
> +		superio_write(dev, 0xf5, 0x75);	// seconds, act high, 125ms
> +
> +	if (val)
> +		superio_write(dev, 0xf7, 0x01);	// Disable PME
> +	if (val)
> +		superio_write(dev, 0xf0, 0x81);	// Enable WDTRST#
> +	else
> +		superio_write(dev, 0xf0, 0x00);	// Disable WDTRST
> +}
> +
> +static int
> +ftwd_probe(device_t dev)
> +{
> +
> +	if (superio_vendor(dev) != SUPERIO_VENDOR_FINTEK ||
> +	    superio_get_type(dev) != SUPERIO_DEV_WDT)
> +		return (ENXIO);
> +	device_set_desc(dev, "Watchdog Timer on Fintek SuperIO");
> +	return (BUS_PROBE_DEFAULT);
> +}
> +
> +static int
> +ftwd_attach(device_t dev)
> +{
> +	struct ftwd_softc *sc = device_get_softc(dev);
> +
> +	/*
> +	 * We do not touch the watchdog at this time, it might be armed
> +	 * by firmware to protect the full boot sequence.
> +	 */
> +
> +	sc->wd_ev = EVENTHANDLER_REGISTER(watchdog_list, ftwd_func, dev, 0);
> +	return (0);
> +}
> +
> +static int
> +ftwd_detach(device_t dev)
> +{
> +	struct ftwd_softc *sc = device_get_softc(dev);
> +	int dummy;
> +
> +	if (sc->wd_ev != NULL)
> +		EVENTHANDLER_DEREGISTER(watchdog_list, sc->wd_ev);
> +	ftwd_func(dev, 0, &dummy);
> +	return (0);
> +}
> +
> +static device_method_t ftwd_methods[] = {
> +	DEVMETHOD(device_probe,		ftwd_probe),
> +	DEVMETHOD(device_attach,	ftwd_attach),
> +	DEVMETHOD(device_detach,	ftwd_detach),
> +	{ 0, 0 }
> +};
> +
> +static driver_t ftwd_driver = {
> +	"ftwd",
> +	ftwd_methods,
> +	sizeof (struct ftwd_softc)
> +};
> +
> +static devclass_t ftwd_devclass;
> +
> +DRIVER_MODULE(ftwd, superio, ftwd_driver, ftwd_devclass, NULL, NULL);
> +MODULE_DEPEND(ftwd, superio, 1, 1, 1);
> +MODULE_VERSION(ftwd, 1);
> 
> Modified: head/sys/modules/Makefile
> ==============================================================================
> --- head/sys/modules/Makefile	Sat Nov 28 18:09:16 2020	(r368129)
> +++ head/sys/modules/Makefile	Sat Nov 28 22:34:33 2020	(r368130)
> @@ -121,6 +121,7 @@ SUBDIR=	\
>  	filemon \
>  	firewire \
>  	firmware \
> +	${_ftwd} \
>  	fusefs \
>  	${_fxp} \
>  	gem \
> @@ -618,6 +619,7 @@ _cpufreq=	cpufreq
>  _dpms=		dpms
>  _em=		em
>  _et=		et
> +_ftwd=		ftwd
>  _exca=		exca
>  _if_ndis=	if_ndis
>  _io=		io
> 
> Added: head/sys/modules/ftwd/Makefile
> ==============================================================================
> --- /dev/null	00:00:00 1970	(empty, because file is newly added)
> +++ head/sys/modules/ftwd/Makefile	Sat Nov 28 22:34:33 2020	(r368130)
> @@ -0,0 +1,9 @@
> +# $FreeBSD$
> +
> +.PATH: ${SRCTOP}/sys/dev/ftwd
> +
> +KMOD=	ftwd
> +SRCS=	ftwd.c
> +SRCS+=	device_if.h bus_if.h isa_if.h
> +
> +.include <bsd.kmod.mk>
> 

-- 
Rod Grimes                                                 rgrimes at freebsd.org


More information about the svn-src-all mailing list