From: patrick Date: Fri, 28 May 2021 11:50:18 +0000 (+0000) Subject: Move imxdog(4) to sys/dev/fdt. X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=ac62a9eb55518b7e0947685c633b0eb0f4c6385f;p=openbsd Move imxdog(4) to sys/dev/fdt. ok kettenis@ --- diff --git a/sys/arch/armv7/imx/files.imx b/sys/arch/armv7/imx/files.imx index 41945d77a6c..aafbdec91bc 100644 --- a/sys/arch/armv7/imx/files.imx +++ b/sys/arch/armv7/imx/files.imx @@ -1,8 +1,4 @@ -# $OpenBSD: files.imx,v 1.31 2020/04/23 22:14:49 patrick Exp $ - -device imxdog -attach imxdog at fdt -file arch/armv7/imx/imxdog.c imxdog +# $OpenBSD: files.imx,v 1.32 2021/05/28 11:50:18 patrick Exp $ device imxahci: scsi, atascsi attach imxahci at fdt diff --git a/sys/arch/armv7/imx/imxdog.c b/sys/arch/armv7/imx/imxdog.c deleted file mode 100644 index 8b19c55426f..00000000000 --- a/sys/arch/armv7/imx/imxdog.c +++ /dev/null @@ -1,104 +0,0 @@ -/* $OpenBSD: imxdog.c,v 1.6 2021/03/25 04:12:01 jsg Exp $ */ -/* - * Copyright (c) 2012-2013 Patrick Wildt - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include -#include -#include - -#include -#include - -#include - -#include -#include - -/* registers */ -#define WCR 0x00 -#define WSR 0x02 -#define WRSR 0x04 -#define WICR 0x06 -#define WMCR 0x08 - -struct imxdog_softc { - struct device sc_dev; - bus_space_tag_t sc_iot; - bus_space_handle_t sc_ioh; -}; - -struct imxdog_softc *imxdog_sc; - -int imxdog_match(struct device *, void *, void *); -void imxdog_attach(struct device *, struct device *, void *); -void imxdog_reset(void); - -struct cfattach imxdog_ca = { - sizeof (struct imxdog_softc), imxdog_match, imxdog_attach -}; - -struct cfdriver imxdog_cd = { - NULL, "imxdog", DV_DULL -}; - -int -imxdog_match(struct device *parent, void *match, void *aux) -{ - struct fdt_attach_args *faa = aux; - - return OF_is_compatible(faa->fa_node, "fsl,imx21-wdt"); -} - -void -imxdog_attach(struct device *parent, struct device *self, void *aux) -{ - struct fdt_attach_args *faa = aux; - struct imxdog_softc *sc = (struct imxdog_softc *) self; - - if (faa->fa_nreg < 1) - return; - - sc->sc_iot = faa->fa_iot; - if (bus_space_map(sc->sc_iot, faa->fa_reg[0].addr, - faa->fa_reg[0].size, 0, &sc->sc_ioh)) - panic("imxdog_attach: bus_space_map failed!"); - - printf("\n"); - - imxdog_sc = sc; - cpuresetfn = imxdog_reset; -} - -void -imxdog_reset(void) -{ - if (imxdog_sc == NULL) - return; - - /* disable watchdog and set timeout to 0 */ - bus_space_write_2(imxdog_sc->sc_iot, imxdog_sc->sc_ioh, WCR, 0); - - /* sequence to reset timeout counter */ - bus_space_write_2(imxdog_sc->sc_iot, imxdog_sc->sc_ioh, WSR, 0x5555); - bus_space_write_2(imxdog_sc->sc_iot, imxdog_sc->sc_ioh, WSR, 0xaaaa); - - /* enable watchdog */ - bus_space_write_2(imxdog_sc->sc_iot, imxdog_sc->sc_ioh, WCR, 1); - /* errata TKT039676 */ - bus_space_write_2(imxdog_sc->sc_iot, imxdog_sc->sc_ioh, WCR, 1); - - delay(100000); -} diff --git a/sys/dev/fdt/files.fdt b/sys/dev/fdt/files.fdt index 9e0c3a87322..f93b48c7939 100644 --- a/sys/dev/fdt/files.fdt +++ b/sys/dev/fdt/files.fdt @@ -1,4 +1,4 @@ -# $OpenBSD: files.fdt,v 1.151 2021/05/18 11:39:37 kettenis Exp $ +# $OpenBSD: files.fdt,v 1.152 2021/05/28 11:50:18 patrick Exp $ # # Config file and device description for machine-independent FDT code. # Included by ports that need it. @@ -469,6 +469,10 @@ device imxccm attach imxccm at fdt file dev/fdt/imxccm.c imxccm +device imxdog +attach imxdog at fdt +file dev/fdt/imxdog.c imxdog + device imxdwusb: fdt attach imxdwusb at fdt file dev/fdt/imxdwusb.c imxdwusb diff --git a/sys/dev/fdt/imxdog.c b/sys/dev/fdt/imxdog.c new file mode 100644 index 00000000000..69663afe217 --- /dev/null +++ b/sys/dev/fdt/imxdog.c @@ -0,0 +1,104 @@ +/* $OpenBSD: imxdog.c,v 1.1 2021/05/28 11:50:18 patrick Exp $ */ +/* + * Copyright (c) 2012-2013 Patrick Wildt + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include + +#include +#include + +#include + +#include +#include + +/* registers */ +#define WCR 0x00 +#define WSR 0x02 +#define WRSR 0x04 +#define WICR 0x06 +#define WMCR 0x08 + +struct imxdog_softc { + struct device sc_dev; + bus_space_tag_t sc_iot; + bus_space_handle_t sc_ioh; +}; + +struct imxdog_softc *imxdog_sc; + +int imxdog_match(struct device *, void *, void *); +void imxdog_attach(struct device *, struct device *, void *); +void imxdog_reset(void); + +struct cfattach imxdog_ca = { + sizeof (struct imxdog_softc), imxdog_match, imxdog_attach +}; + +struct cfdriver imxdog_cd = { + NULL, "imxdog", DV_DULL +}; + +int +imxdog_match(struct device *parent, void *match, void *aux) +{ + struct fdt_attach_args *faa = aux; + + return OF_is_compatible(faa->fa_node, "fsl,imx21-wdt"); +} + +void +imxdog_attach(struct device *parent, struct device *self, void *aux) +{ + struct fdt_attach_args *faa = aux; + struct imxdog_softc *sc = (struct imxdog_softc *) self; + + if (faa->fa_nreg < 1) + return; + + sc->sc_iot = faa->fa_iot; + if (bus_space_map(sc->sc_iot, faa->fa_reg[0].addr, + faa->fa_reg[0].size, 0, &sc->sc_ioh)) + panic("imxdog_attach: bus_space_map failed!"); + + printf("\n"); + + imxdog_sc = sc; + cpuresetfn = imxdog_reset; +} + +void +imxdog_reset(void) +{ + if (imxdog_sc == NULL) + return; + + /* disable watchdog and set timeout to 0 */ + bus_space_write_2(imxdog_sc->sc_iot, imxdog_sc->sc_ioh, WCR, 0); + + /* sequence to reset timeout counter */ + bus_space_write_2(imxdog_sc->sc_iot, imxdog_sc->sc_ioh, WSR, 0x5555); + bus_space_write_2(imxdog_sc->sc_iot, imxdog_sc->sc_ioh, WSR, 0xaaaa); + + /* enable watchdog */ + bus_space_write_2(imxdog_sc->sc_iot, imxdog_sc->sc_ioh, WCR, 1); + /* errata TKT039676 */ + bus_space_write_2(imxdog_sc->sc_iot, imxdog_sc->sc_ioh, WCR, 1); + + delay(100000); +}