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