diff options
author | Warner Losh <imp@FreeBSD.org> | 2020-02-03 17:35:11 +0000 |
---|---|---|
committer | Warner Losh <imp@FreeBSD.org> | 2020-02-03 17:35:11 +0000 |
commit | 58aa35d42975c298ca0adba705c042596303c9f5 (patch) | |
tree | 2558d2b720cda9c2799970cabc266e2ce4e3a8d3 /sys/sparc64/fhc | |
parent | eb24e1491f9900e922c78e53af588f22a3e9535f (diff) |
Remove sparc64 kernel support
Remove all sparc64 specific files
Remove all sparc64 ifdefs
Removee indireeect sparc64 ifdefs
Notes
Notes:
svn path=/head/; revision=357455
Diffstat (limited to 'sys/sparc64/fhc')
-rw-r--r-- | sys/sparc64/fhc/clkbrd.c | 214 | ||||
-rw-r--r-- | sys/sparc64/fhc/clkbrdreg.h | 99 | ||||
-rw-r--r-- | sys/sparc64/fhc/fhc.c | 537 | ||||
-rw-r--r-- | sys/sparc64/fhc/fhcreg.h | 97 |
4 files changed, 0 insertions, 947 deletions
diff --git a/sys/sparc64/fhc/clkbrd.c b/sys/sparc64/fhc/clkbrd.c deleted file mode 100644 index 002030f42508..000000000000 --- a/sys/sparc64/fhc/clkbrd.c +++ /dev/null @@ -1,214 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2004 Jason L. Wright (jason@thought.net) - * Copyright (c) 2005 Marius Strobl <marius@FreeBSD.org> - * All rights reserved. - * - * 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 ``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 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. - * - * from: OpenBSD: clkbrd.c,v 1.5 2004/10/01 18:18:49 jason Exp - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/module.h> -#include <sys/resource.h> -#include <sys/rman.h> - -#include <dev/led/led.h> -#include <dev/ofw/ofw_bus.h> - -#include <machine/bus.h> -#include <machine/resource.h> - -#include <sparc64/fhc/clkbrdreg.h> - -#define CLKBRD_NREG 3 - -#define CLKBRD_CF 0 -#define CLKBRD_CLK 1 -#define CLKBRD_CLKVER 2 - -struct clkbrd_softc { - device_t sc_dev; - struct resource *sc_res[CLKBRD_NREG]; - int sc_rid[CLKBRD_NREG]; - bus_space_tag_t sc_bt[CLKBRD_NREG]; - bus_space_handle_t sc_bh[CLKBRD_NREG]; - uint8_t sc_clk_ctrl; - struct cdev *sc_led_dev; - int sc_flags; -#define CLKBRD_HAS_CLKVER (1 << 0) -}; - -static devclass_t clkbrd_devclass; - -static device_probe_t clkbrd_probe; -static device_attach_t clkbrd_attach; -static device_detach_t clkbrd_detach; - -static void clkbrd_free_resources(struct clkbrd_softc *); -static void clkbrd_led_func(void *, int); - -static device_method_t clkbrd_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, clkbrd_probe), - DEVMETHOD(device_attach, clkbrd_attach), - DEVMETHOD(device_detach, clkbrd_detach), - - { 0, 0 } -}; - -static driver_t clkbrd_driver = { - "clkbrd", - clkbrd_methods, - sizeof(struct clkbrd_softc), -}; - -DRIVER_MODULE(clkbrd, fhc, clkbrd_driver, clkbrd_devclass, 0, 0); - -static int -clkbrd_probe(device_t dev) -{ - - if (strcmp(ofw_bus_get_name(dev), "clock-board") == 0) { - device_set_desc(dev, "Clock Board"); - return (0); - } - return (ENXIO); -} - -static int -clkbrd_attach(device_t dev) -{ - struct clkbrd_softc *sc; - int i, slots; - uint8_t r; - - sc = device_get_softc(dev); - sc->sc_dev = dev; - - for (i = CLKBRD_CF; i <= CLKBRD_CLKVER; i++) { - sc->sc_rid[i] = i; - sc->sc_res[i] = bus_alloc_resource_any(sc->sc_dev, - SYS_RES_MEMORY, &sc->sc_rid[i], RF_ACTIVE); - if (sc->sc_res[i] == NULL) { - if (i != CLKBRD_CLKVER) { - device_printf(sc->sc_dev, - "could not allocate resource %d\n", i); - goto fail; - } - continue; - } - sc->sc_bt[i] = rman_get_bustag(sc->sc_res[i]); - sc->sc_bh[i] = rman_get_bushandle(sc->sc_res[i]); - if (i == CLKBRD_CLKVER) - sc->sc_flags |= CLKBRD_HAS_CLKVER; - } - - slots = 4; - r = bus_space_read_1(sc->sc_bt[CLKBRD_CLK], sc->sc_bh[CLKBRD_CLK], - CLK_STS1); - switch (r & CLK_STS1_SLOTS_MASK) { - case CLK_STS1_SLOTS_16: - slots = 16; - break; - case CLK_STS1_SLOTS_8: - slots = 8; - break; - case CLK_STS1_SLOTS_4: - if (sc->sc_flags & CLKBRD_HAS_CLKVER) { - r = bus_space_read_1(sc->sc_bt[CLKBRD_CLKVER], - sc->sc_bh[CLKBRD_CLKVER], CLKVER_SLOTS); - if (r != 0 && - (r & CLKVER_SLOTS_MASK) == CLKVER_SLOTS_PLUS) - slots = 5; - } - } - - device_printf(sc->sc_dev, "Sun Enterprise Exx00 machine: %d slots\n", - slots); - - sc->sc_clk_ctrl = bus_space_read_1(sc->sc_bt[CLKBRD_CLK], - sc->sc_bh[CLKBRD_CLK], CLK_CTRL); - sc->sc_led_dev = led_create(clkbrd_led_func, sc, "clockboard"); - - return (0); - - fail: - clkbrd_free_resources(sc); - - return (ENXIO); -} - -static int -clkbrd_detach(device_t dev) -{ - struct clkbrd_softc *sc; - - sc = device_get_softc(dev); - - led_destroy(sc->sc_led_dev); - bus_space_write_1(sc->sc_bt[CLKBRD_CLK], sc->sc_bh[CLKBRD_CLK], - CLK_CTRL, sc->sc_clk_ctrl); - bus_space_read_1(sc->sc_bt[CLKBRD_CLK], sc->sc_bh[CLKBRD_CLK], - CLK_CTRL); - clkbrd_free_resources(sc); - - return (0); -} - -static void -clkbrd_free_resources(struct clkbrd_softc *sc) -{ - int i; - - for (i = CLKBRD_CF; i <= CLKBRD_CLKVER; i++) - if (sc->sc_res[i] != NULL) - bus_release_resource(sc->sc_dev, SYS_RES_MEMORY, - sc->sc_rid[i], sc->sc_res[i]); -} - -static void -clkbrd_led_func(void *arg, int onoff) -{ - struct clkbrd_softc *sc; - uint8_t r; - - sc = (struct clkbrd_softc *)arg; - - r = bus_space_read_1(sc->sc_bt[CLKBRD_CLK], sc->sc_bh[CLKBRD_CLK], - CLK_CTRL); - if (onoff) - r |= CLK_CTRL_RLED; - else - r &= ~CLK_CTRL_RLED; - bus_space_write_1(sc->sc_bt[CLKBRD_CLK], sc->sc_bh[CLKBRD_CLK], - CLK_CTRL, r); - bus_space_read_1(sc->sc_bt[CLKBRD_CLK], sc->sc_bh[CLKBRD_CLK], - CLK_CTRL); -} diff --git a/sys/sparc64/fhc/clkbrdreg.h b/sys/sparc64/fhc/clkbrdreg.h deleted file mode 100644 index ec5baa79142e..000000000000 --- a/sys/sparc64/fhc/clkbrdreg.h +++ /dev/null @@ -1,99 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2004 Jason L. Wright (jason@thought.net) - * Copyright (c) 2006 Marius Strobl <marius@FreeBSD.org> - * All rights reserved. - * - * 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 ``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 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. - * - * from: OpenBSD: clkbrdreg.h,v 1.2 2004/10/01 15:36:30 jason Exp - * - * $FreeBSD$ - */ - -#ifndef _SPARC64_FHC_CLKBRDREG_H_ -#define _SPARC64_FHC_CLKBRDREG_H_ - -/* register bank 0 */ -#define CLK_CF_REG2 0x20 /* clock frequency register 2 */ -#define CLK_CF_REG2_REN_RCONS 0x80 /* reset enable: remote console */ -#define CLK_CF_REG2_REN_GEN 0x40 /* reset enable: frequency change */ -#define CLK_CF_REG2_REN_WDOG 0x20 /* reset enable: watchdog */ -#define CLK_CF_REG2_DIV1 0x10 /* CPU module divisor bit 1 */ -#define CLK_CF_REG2_RANGE 0x0c /* clock range */ -#define CLK_CF_REG2_DIV0 0x02 /* CPU module divisor bit 0 */ -#define CLK_CF_REG2_FREQ8 0x01 /* frequency bit 8 */ - -/* register bank 1 */ -#define CLK_CTRL 0x00 /* system control register */ -#define CLK_CTRL_IEN_FAN 0x80 /* intr enable: fan failure */ -#define CLK_CTRL_IEN_DC 0x40 /* intr enable: power supply DC */ -#define CLK_CTRL_IEN_AC 0x20 /* intr enable: AC power */ -#define CLK_CTRL_IEN_BRD 0x10 /* intr enable: board insert */ -#define CLK_CTRL_POFF 0x08 /* turn off system power */ -#define CLK_CTRL_LLED 0x04 /* left led (reversed) */ -#define CLK_CTRL_MLED 0x02 /* middle led */ -#define CLK_CTRL_RLED 0x01 /* right led */ -#define CLK_STS1 0x10 /* system status register 1 */ -#define CLK_STS1_SLOTS_MASK 0xc0 /* system status 1 slots mask */ -#define CLK_STS1_SLOTS_16 0x40 /* 16 slots */ -#define CLK_STS1_SLOTS_8 0xc0 /* 8 slots */ -#define CLK_STS1_SLOTS_4 0x80 /* 4 slots */ -#define CLK_STS1_SLOTS_TESTBED 0x00 /* test machine */ -#define CLK_STS1_SECURE 0x20 /* key in position secure (reversed) */ -#define CLK_STS1_FAN 0x10 /* fan tray present (reversed) */ -#define CLK_STS1_BRD 0x08 /* board inserted (reversed) */ -#define CLK_STS1_PS0 0x04 /* power supply 0 present (reversed) */ -#define CLK_STS1_RST_WDOG 0x02 /* rst by: watchdog (reversed) */ -#define CLK_STS1_RST_GEN 0x01 /* rst by: freq change (reversed) */ -#define CLK_STS2 0x20 /* system status register 2 */ -#define CLK_STS2_RST_RCONS 0x80 /* rst by: remote console (reversed) */ -#define CLK_STS2_OK_PS0 0x40 /* ok: power supply 0 */ -#define CLK_STS2_OK_33V 0x20 /* ok: 3.3V on clock board */ -#define CLK_STS2_OK_50V 0x10 /* ok: 5.0V on clock board */ -#define CLK_STS2_FAIL_AC 0x08 /* failed: AC power */ -#define CLK_STS2_FAIL_FAN 0x04 /* failed: rack fans */ -#define CLK_STS2_OK_ACFAN 0x02 /* ok: 4 AC box fans */ -#define CLK_STS2_OK_KEYFAN 0x01 /* ok: keyswitch fans */ -#define CLK_PSTS1 0x30 /* power supply 1 status register */ -#define CLK_PSTS1_PS 0x80 /* power supply 1 present (reversed) */ -#define CLK_PPRES 0x40 /* power supply presence register */ -#define CLK_PPRES_CSHARE 0x80 /* current share backplane */ -#define CLK_PPRES_OK_MASK 0x7f /* precharge and peripheral pwr mask */ -#define CLK_PPRES_OK_P_5V 0x40 /* ok: peripheral 5V */ -#define CLK_PPRES_OK_P_12V 0x20 /* ok: peripheral 12V */ -#define CLK_PPRES_OK_AUX_5V 0x10 /* ok: auxiliary 5V */ -#define CLK_PPRES_OK_PP_5V 0x08 /* ok: peripheral 5V precharge */ -#define CLK_PPRES_OK_PP_12V 0x04 /* ok: peripheral 12V precharge */ -#define CLK_PPRES_OK_SP_3V 0x02 /* ok: system 3.3V precharge */ -#define CLK_PPRES_OK_SP_5V 0x01 /* ok: system 5V precharge */ -#define CLK_TEMP 0x50 /* temperature register */ -#define CLK_IDIAG 0x60 /* interrupt diagnostic register */ -#define CLK_PSTS2 0x70 /* power supply 2 status register */ - -/* register bank 2 */ -#define CLKVER_SLOTS 0x00 /* clock version slots register */ -#define CLKVER_SLOTS_MASK 0x80 /* clock version slots mask */ -#define CLKVER_SLOTS_PLUS 0x00 /* plus system (reversed) */ - -#endif /* !_SPARC64_FHC_CLKBRDREG_H_ */ diff --git a/sys/sparc64/fhc/fhc.c b/sys/sparc64/fhc/fhc.c deleted file mode 100644 index cc858cfc9544..000000000000 --- a/sys/sparc64/fhc/fhc.c +++ /dev/null @@ -1,537 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2003 Jake Burkholder. - * Copyright (c) 2005 Marius Strobl <marius@FreeBSD.org> - * All rights reserved. - * - * 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/systm.h> -#include <sys/bus.h> -#include <sys/kernel.h> -#include <sys/malloc.h> -#include <sys/module.h> -#include <sys/pcpu.h> - -#include <dev/led/led.h> -#include <dev/ofw/ofw_bus.h> -#include <dev/ofw/ofw_bus_subr.h> -#include <dev/ofw/openfirm.h> - -#include <machine/bus.h> -#include <machine/bus_common.h> -#include <machine/resource.h> - -#include <sys/rman.h> - -#include <sparc64/fhc/fhcreg.h> -#include <sparc64/sbus/ofw_sbus.h> - -struct fhc_devinfo { - struct ofw_bus_devinfo fdi_obdinfo; - struct resource_list fdi_rl; -}; - -struct fhc_softc { - struct resource *sc_memres[FHC_NREG]; - int sc_nrange; - struct sbus_ranges *sc_ranges; - int sc_ign; - struct cdev *sc_led_dev; -}; - -static device_probe_t fhc_probe; -static device_attach_t fhc_attach; -static bus_print_child_t fhc_print_child; -static bus_probe_nomatch_t fhc_probe_nomatch; -static bus_setup_intr_t fhc_setup_intr; -static bus_alloc_resource_t fhc_alloc_resource; -static bus_adjust_resource_t fhc_adjust_resource; -static bus_get_resource_list_t fhc_get_resource_list; -static ofw_bus_get_devinfo_t fhc_get_devinfo; - -static void fhc_intr_enable(void *); -static void fhc_intr_disable(void *); -static void fhc_intr_assign(void *); -static void fhc_intr_clear(void *); -static void fhc_led_func(void *, int); -static int fhc_print_res(struct fhc_devinfo *); - -static device_method_t fhc_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, fhc_probe), - DEVMETHOD(device_attach, fhc_attach), - DEVMETHOD(device_shutdown, bus_generic_shutdown), - DEVMETHOD(device_suspend, bus_generic_suspend), - DEVMETHOD(device_resume, bus_generic_resume), - - /* Bus interface */ - DEVMETHOD(bus_print_child, fhc_print_child), - DEVMETHOD(bus_probe_nomatch, fhc_probe_nomatch), - DEVMETHOD(bus_alloc_resource, fhc_alloc_resource), - DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), - DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), - DEVMETHOD(bus_adjust_resource, fhc_adjust_resource), - DEVMETHOD(bus_release_resource, bus_generic_rl_release_resource), - DEVMETHOD(bus_setup_intr, fhc_setup_intr), - DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), - DEVMETHOD(bus_get_resource, bus_generic_rl_get_resource), - DEVMETHOD(bus_get_resource_list, fhc_get_resource_list), - DEVMETHOD(bus_child_pnpinfo_str, ofw_bus_gen_child_pnpinfo_str), - - /* ofw_bus interface */ - DEVMETHOD(ofw_bus_get_devinfo, fhc_get_devinfo), - DEVMETHOD(ofw_bus_get_compat, ofw_bus_gen_get_compat), - DEVMETHOD(ofw_bus_get_model, ofw_bus_gen_get_model), - DEVMETHOD(ofw_bus_get_name, ofw_bus_gen_get_name), - DEVMETHOD(ofw_bus_get_node, ofw_bus_gen_get_node), - DEVMETHOD(ofw_bus_get_type, ofw_bus_gen_get_type), - - DEVMETHOD_END -}; - -static driver_t fhc_driver = { - "fhc", - fhc_methods, - sizeof(struct fhc_softc), -}; - -static devclass_t fhc_devclass; - -EARLY_DRIVER_MODULE(fhc, central, fhc_driver, fhc_devclass, 0, 0, - BUS_PASS_BUS); -MODULE_DEPEND(fhc, central, 1, 1, 1); -EARLY_DRIVER_MODULE(fhc, nexus, fhc_driver, fhc_devclass, 0, 0, - BUS_PASS_BUS); -MODULE_DEPEND(fhc, nexus, 1, 1, 1); -MODULE_VERSION(fhc, 1); - -static const struct intr_controller fhc_ic = { - fhc_intr_enable, - fhc_intr_disable, - fhc_intr_assign, - fhc_intr_clear -}; - -struct fhc_icarg { - struct fhc_softc *fica_sc; - struct resource *fica_memres; -}; - -static int -fhc_probe(device_t dev) -{ - - if (strcmp(ofw_bus_get_name(dev), "fhc") == 0) { - device_set_desc(dev, "fhc"); - return (0); - } - return (ENXIO); -} - -static int -fhc_attach(device_t dev) -{ - char ledname[sizeof("boardXX")]; - struct fhc_devinfo *fdi; - struct fhc_icarg *fica; - struct fhc_softc *sc; - struct sbus_regs *reg; - phandle_t child; - phandle_t node; - device_t cdev; - uint32_t board; - uint32_t ctrl; - uint32_t *intr; - uint32_t iv; - char *name; - int central; - int error; - int i; - int j; - - sc = device_get_softc(dev); - node = ofw_bus_get_node(dev); - - central = 0; - if (strcmp(device_get_name(device_get_parent(dev)), "central") == 0) - central = 1; - - for (i = 0; i < FHC_NREG; i++) { - j = i; - sc->sc_memres[i] = bus_alloc_resource_any(dev, SYS_RES_MEMORY, - &j, RF_ACTIVE); - if (sc->sc_memres[i] == NULL) { - device_printf(dev, "cannot allocate resource %d\n", i); - error = ENXIO; - goto fail_memres; - } - } - - if (central != 0) { - board = bus_read_4(sc->sc_memres[FHC_INTERNAL], FHC_BSR); - board = ((board >> 16) & 0x1) | ((board >> 12) & 0xe); - } else { - if (OF_getprop(node, "board#", &board, sizeof(board)) == -1) { - device_printf(dev, "cannot get board number\n"); - error = ENXIO; - goto fail_memres; - } - } - - device_printf(dev, "board %d, ", board); - if (OF_getprop_alloc(node, "board-model", (void **)&name) != -1) { - printf("model %s\n", name); - OF_prop_free(name); - } else - printf("model unknown\n"); - - for (i = FHC_FANFAIL; i <= FHC_TOD; i++) { - bus_write_4(sc->sc_memres[i], FHC_ICLR, INTCLR_IDLE); - (void)bus_read_4(sc->sc_memres[i], FHC_ICLR); - } - - sc->sc_ign = board << 1; - bus_write_4(sc->sc_memres[FHC_IGN], 0x0, sc->sc_ign); - sc->sc_ign = bus_read_4(sc->sc_memres[FHC_IGN], 0x0); - - ctrl = bus_read_4(sc->sc_memres[FHC_INTERNAL], FHC_CTRL); - if (central == 0) - ctrl |= FHC_CTRL_IXIST; - ctrl &= ~(FHC_CTRL_AOFF | FHC_CTRL_BOFF | FHC_CTRL_SLINE); - bus_write_4(sc->sc_memres[FHC_INTERNAL], FHC_CTRL, ctrl); - (void)bus_read_4(sc->sc_memres[FHC_INTERNAL], FHC_CTRL); - - sc->sc_nrange = OF_getprop_alloc_multi(node, "ranges", - sizeof(*sc->sc_ranges), (void **)&sc->sc_ranges); - if (sc->sc_nrange == -1) { - device_printf(dev, "cannot get ranges\n"); - error = ENXIO; - goto fail_memres; - } - - /* - * Apparently only the interrupt controller of boards hanging off - * of central(4) is indented to be used, otherwise we would have - * conflicts registering the interrupt controllers for all FHC - * boards as the board number and thus the IGN isn't unique. - */ - if (central == 1) { - /* - * Hunt through all the interrupt mapping regs and register - * our interrupt controller for the corresponding interrupt - * vectors. We do this early in order to be able to catch - * stray interrupts. - */ - for (i = FHC_FANFAIL; i <= FHC_TOD; i++) { - fica = malloc(sizeof(*fica), M_DEVBUF, M_NOWAIT); - if (fica == NULL) - panic("%s: could not allocate interrupt " - "controller argument", __func__); - fica->fica_sc = sc; - fica->fica_memres = sc->sc_memres[i]; -#ifdef FHC_DEBUG - device_printf(dev, "intr map %d: %#lx, clr: %#lx\n", i, - (u_long)bus_read_4(fica->fica_memres, FHC_IMAP), - (u_long)bus_read_4(fica->fica_memres, FHC_ICLR)); -#endif - /* - * XXX we only pick the INO rather than the INR - * from the IMR since the firmware may not provide - * the IGN and the IGN is constant for all devices - * on that FireHose controller. - */ - j = intr_controller_register(INTMAP_VEC(sc->sc_ign, - INTINO(bus_read_4(fica->fica_memres, FHC_IMAP))), - &fhc_ic, fica); - if (j != 0) - device_printf(dev, "could not register " - "interrupt controller for map %d (%d)\n", - i, j); - } - } else { - snprintf(ledname, sizeof(ledname), "board%d", board); - sc->sc_led_dev = led_create(fhc_led_func, sc, ledname); - } - - for (child = OF_child(node); child != 0; child = OF_peer(child)) { - fdi = malloc(sizeof(*fdi), M_DEVBUF, M_WAITOK | M_ZERO); - if (ofw_bus_gen_setup_devinfo(&fdi->fdi_obdinfo, child) != 0) { - free(fdi, M_DEVBUF); - continue; - } - i = OF_getprop_alloc_multi(child, "reg", sizeof(*reg), - (void **)®); - if (i == -1) { - device_printf(dev, "<%s>: incomplete\n", - fdi->fdi_obdinfo.obd_name); - ofw_bus_gen_destroy_devinfo(&fdi->fdi_obdinfo); - free(fdi, M_DEVBUF); - continue; - } - resource_list_init(&fdi->fdi_rl); - for (j = 0; j < i; j++) - resource_list_add(&fdi->fdi_rl, SYS_RES_MEMORY, j, - reg[j].sbr_offset, reg[j].sbr_offset + - reg[j].sbr_size, reg[j].sbr_size); - OF_prop_free(reg); - if (central == 1) { - i = OF_getprop_alloc_multi(child, "interrupts", - sizeof(*intr), (void **)&intr); - if (i != -1) { - for (j = 0; j < i; j++) { - iv = INTMAP_VEC(sc->sc_ign, intr[j]); - resource_list_add(&fdi->fdi_rl, - SYS_RES_IRQ, j, iv, iv, 1); - } - OF_prop_free(intr); - } - } - cdev = device_add_child(dev, NULL, -1); - if (cdev == NULL) { - device_printf(dev, "<%s>: device_add_child failed\n", - fdi->fdi_obdinfo.obd_name); - resource_list_free(&fdi->fdi_rl); - ofw_bus_gen_destroy_devinfo(&fdi->fdi_obdinfo); - free(fdi, M_DEVBUF); - continue; - } - device_set_ivars(cdev, fdi); - } - - return (bus_generic_attach(dev)); - - fail_memres: - for (i = 0; i < FHC_NREG; i++) - if (sc->sc_memres[i] != NULL) - bus_release_resource(dev, SYS_RES_MEMORY, - rman_get_rid(sc->sc_memres[i]), sc->sc_memres[i]); - return (error); -} - -static int -fhc_print_child(device_t dev, device_t child) -{ - int rv; - - rv = bus_print_child_header(dev, child); - rv += fhc_print_res(device_get_ivars(child)); - rv += bus_print_child_footer(dev, child); - return (rv); -} - -static void -fhc_probe_nomatch(device_t dev, device_t child) -{ - const char *type; - - device_printf(dev, "<%s>", ofw_bus_get_name(child)); - fhc_print_res(device_get_ivars(child)); - type = ofw_bus_get_type(child); - printf(" type %s (no driver attached)\n", - type != NULL ? type : "unknown"); -} - -static void -fhc_intr_enable(void *arg) -{ - struct intr_vector *iv = arg; - struct fhc_icarg *fica = iv->iv_icarg; - - bus_write_4(fica->fica_memres, FHC_IMAP, - INTMAP_ENABLE(iv->iv_vec, iv->iv_mid)); - (void)bus_read_4(fica->fica_memres, FHC_IMAP); -} - -static void -fhc_intr_disable(void *arg) -{ - struct intr_vector *iv = arg; - struct fhc_icarg *fica = iv->iv_icarg; - - bus_write_4(fica->fica_memres, FHC_IMAP, iv->iv_vec); - (void)bus_read_4(fica->fica_memres, FHC_IMAP); -} - -static void -fhc_intr_assign(void *arg) -{ - struct intr_vector *iv = arg; - struct fhc_icarg *fica = iv->iv_icarg; - - bus_write_4(fica->fica_memres, FHC_IMAP, INTMAP_TID( - bus_read_4(fica->fica_memres, FHC_IMAP), iv->iv_mid)); - (void)bus_read_4(fica->fica_memres, FHC_IMAP); -} - -static void -fhc_intr_clear(void *arg) -{ - struct intr_vector *iv = arg; - struct fhc_icarg *fica = iv->iv_icarg; - - bus_write_4(fica->fica_memres, FHC_ICLR, INTCLR_IDLE); - (void)bus_read_4(fica->fica_memres, FHC_ICLR); -} - -static int -fhc_setup_intr(device_t bus, device_t child, struct resource *r, int flags, - driver_filter_t *filt, driver_intr_t *func, void *arg, void **cookiep) -{ - struct fhc_softc *sc; - u_long vec; - - sc = device_get_softc(bus); - /* - * Make sure the vector is fully specified and we registered - * our interrupt controller for it. - */ - vec = rman_get_start(r); - if (INTIGN(vec) != sc->sc_ign || intr_vectors[vec].iv_ic != &fhc_ic) { - device_printf(bus, "invalid interrupt vector 0x%lx\n", vec); - return (EINVAL); - } - return (bus_generic_setup_intr(bus, child, r, flags, filt, func, - arg, cookiep)); -} - -static struct resource * -fhc_alloc_resource(device_t bus, device_t child, int type, int *rid, - rman_res_t start, rman_res_t end, rman_res_t count, u_int flags) -{ - struct resource_list *rl; - struct resource_list_entry *rle; - struct fhc_softc *sc; - struct resource *res; - bus_addr_t coffset; - bus_addr_t cend; - bus_addr_t phys; - int isdefault; - int passthrough; - int i; - - isdefault = RMAN_IS_DEFAULT_RANGE(start, end); - passthrough = (device_get_parent(child) != bus); - res = NULL; - rle = NULL; - rl = BUS_GET_RESOURCE_LIST(bus, child); - sc = device_get_softc(bus); - switch (type) { - case SYS_RES_IRQ: - return (resource_list_alloc(rl, bus, child, type, rid, start, - end, count, flags)); - case SYS_RES_MEMORY: - if (!passthrough) { - rle = resource_list_find(rl, type, *rid); - if (rle == NULL) - return (NULL); - if (rle->res != NULL) - panic("%s: resource entry is busy", __func__); - if (isdefault) { - start = rle->start; - count = ulmax(count, rle->count); - end = ulmax(rle->end, start + count - 1); - } - } - for (i = 0; i < sc->sc_nrange; i++) { - coffset = sc->sc_ranges[i].coffset; - cend = coffset + sc->sc_ranges[i].size - 1; - if (start >= coffset && end <= cend) { - start -= coffset; - end -= coffset; - phys = sc->sc_ranges[i].poffset | - ((bus_addr_t)sc->sc_ranges[i].pspace << 32); - res = bus_generic_alloc_resource(bus, child, - type, rid, phys + start, phys + end, - count, flags); - if (!passthrough) - rle->res = res; - break; - } - } - break; - } - return (res); -} - -static int -fhc_adjust_resource(device_t bus __unused, device_t child __unused, - int type __unused, struct resource *r __unused, rman_res_t start __unused, - rman_res_t end __unused) -{ - - return (ENXIO); -} - -static struct resource_list * -fhc_get_resource_list(device_t bus, device_t child) -{ - struct fhc_devinfo *fdi; - - fdi = device_get_ivars(child); - return (&fdi->fdi_rl); -} - -static const struct ofw_bus_devinfo * -fhc_get_devinfo(device_t bus, device_t child) -{ - struct fhc_devinfo *fdi; - - fdi = device_get_ivars(child); - return (&fdi->fdi_obdinfo); -} - -static void -fhc_led_func(void *arg, int onoff) -{ - struct fhc_softc *sc; - uint32_t ctrl; - - sc = (struct fhc_softc *)arg; - - ctrl = bus_read_4(sc->sc_memres[FHC_INTERNAL], FHC_CTRL); - if (onoff) - ctrl |= FHC_CTRL_RLED; - else - ctrl &= ~FHC_CTRL_RLED; - ctrl &= ~(FHC_CTRL_AOFF | FHC_CTRL_BOFF | FHC_CTRL_SLINE); - bus_write_4(sc->sc_memres[FHC_INTERNAL], FHC_CTRL, ctrl); - (void)bus_read_4(sc->sc_memres[FHC_INTERNAL], FHC_CTRL); -} - -static int -fhc_print_res(struct fhc_devinfo *fdi) -{ - int rv; - - rv = 0; - rv += resource_list_print_type(&fdi->fdi_rl, "mem", SYS_RES_MEMORY, - "%#jx"); - rv += resource_list_print_type(&fdi->fdi_rl, "irq", SYS_RES_IRQ, "%jd"); - return (rv); -} diff --git a/sys/sparc64/fhc/fhcreg.h b/sys/sparc64/fhc/fhcreg.h deleted file mode 100644 index e01afe7a7651..000000000000 --- a/sys/sparc64/fhc/fhcreg.h +++ /dev/null @@ -1,97 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD AND BSD-2-Clause - * - * Copyright (c) 2003 Jake Burkholder. - * All rights reserved. - * - * 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. - */ -/*- - * Copyright (c) 2004 Jason L. Wright (jason@thought.net). - * All rights reserved. - * - * 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 ``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 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. - * - * from: OpenBSD: fhcreg.h,v 1.3 2004/09/28 16:26:03 jason Exp - * - * $FreeBSD$ - */ - -#ifndef _SPARC64_FHC_FHCREG_H_ -#define _SPARC64_FHC_FHCREG_H_ - -#define FHC_NREG (6) - -#define FHC_INTERNAL (0) -#define FHC_IGN (1) -#define FHC_FANFAIL (2) -#define FHC_SYSTEM (3) -#define FHC_UART (4) -#define FHC_TOD (5) - -#define FHC_IMAP 0x0 -#define FHC_ICLR 0x10 - -#define FHC_ID 0x00000000 /* ID */ -#define FHC_RCS 0x00000010 /* reset ctrl/status */ -#define FHC_CTRL 0x00000020 /* control */ -#define FHC_BSR 0x00000030 /* board status */ -#define FHC_ECC 0x00000040 /* ECC control */ -#define FHC_JCTRL 0x000000f0 /* JTAG control */ - -#define FHC_CTRL_ICS 0x00100000 /* ignore centerplane sigs */ -#define FHC_CTRL_FRST 0x00080000 /* fatal error reset enable */ -#define FHC_CTRL_LFAT 0x00040000 /* AC/DC local error */ -#define FHC_CTRL_SLINE 0x00010000 /* firmware sync line */ -#define FHC_CTRL_DCD 0x00008000 /* DC/DC converter disable */ -#define FHC_CTRL_POFF 0x00004000 /* AC/DC ctlr PLL disable */ -#define FHC_CTRL_FOFF 0x00002000 /* FHC ctlr PLL disable */ -#define FHC_CTRL_AOFF 0x00001000 /* cpu a sram low pwr mode */ -#define FHC_CTRL_BOFF 0x00000800 /* cpu b sram low pwr mode */ -#define FHC_CTRL_PSOFF 0x00000400 /* disable fhc power supply */ -#define FHC_CTRL_IXIST 0x00000200 /* fhc notifies clock-board */ -#define FHC_CTRL_XMSTR 0x00000100 /* xir master enable */ -#define FHC_CTRL_LLED 0x00000040 /* left led (reversed) */ -#define FHC_CTRL_MLED 0x00000020 /* middle led */ -#define FHC_CTRL_RLED 0x00000010 /* right led */ -#define FHC_CTRL_BPINS 0x00000003 /* spare bidir pins */ - -#endif /* !_SPARC64_FHC_FHCREG_H_ */ |