gt.c revision 265999
1178173Simp/*- 2178173Simp * Copyright (c) 2005 Olivier Houchard. All rights reserved. 3178173Simp * 4178173Simp * Redistribution and use in source and binary forms, with or without 5178173Simp * modification, are permitted provided that the following conditions 6178173Simp * are met: 7178173Simp * 1. Redistributions of source code must retain the above copyright 8178173Simp * notice, this list of conditions and the following disclaimer. 9178173Simp * 2. Redistributions in binary form must reproduce the above copyright 10178173Simp * notice, this list of conditions and the following disclaimer in the 11178173Simp * documentation and/or other materials provided with the distribution. 12178173Simp * 13178173Simp * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 14178173Simp * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 15178173Simp * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 16178173Simp * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 17178173Simp * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 18178173Simp * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 19178173Simp * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 20178173Simp * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21178173Simp * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22178173Simp * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23178173Simp */ 24178173Simp 25178173Simp#include <sys/cdefs.h> 26178173Simp__FBSDID("$FreeBSD: stable/10/sys/mips/malta/gt.c 265999 2014-05-14 01:35:43Z ian $"); 27178173Simp 28178173Simp#include <sys/param.h> 29178173Simp#include <sys/systm.h> 30178173Simp#include <sys/bus.h> 31178173Simp#include <sys/kernel.h> 32178173Simp#include <sys/malloc.h> 33178173Simp#include <sys/module.h> 34178173Simp#include <sys/rman.h> 35178173Simp#include <sys/types.h> 36178173Simp 37178173Simp#include <vm/vm.h> 38178173Simp#include <vm/vm_kern.h> 39178173Simp#include <vm/pmap.h> 40178173Simp#include <vm/vm_page.h> 41178173Simp#include <vm/vm_extern.h> 42178173Simp 43178173Simp#include <dev/ic/i8259.h> 44178173Simp 45178173Simp#include <machine/bus.h> 46178173Simp#include <machine/intr_machdep.h> 47178173Simp 48182901Sgonzo#include <mips/malta/gtvar.h> 49178173Simp 50178173Simpstatic int 51178173Simpgt_probe(device_t dev) 52178173Simp{ 53178173Simp device_set_desc(dev, "GT64120 chip"); 54265999Sian return (BUS_PROBE_NOWILDCARD); 55178173Simp} 56178173Simp 57178173Simpstatic void 58178173Simpgt_identify(driver_t *drv, device_t parent) 59178173Simp{ 60178173Simp BUS_ADD_CHILD(parent, 0, "gt", 0); 61178173Simp} 62178173Simp 63178173Simpstatic int 64178173Simpgt_attach(device_t dev) 65178173Simp{ 66178173Simp struct gt_softc *sc = device_get_softc(dev); 67178173Simp sc->dev = dev; 68178173Simp 69178173Simp device_add_child(dev, "pcib", 0); 70178173Simp bus_generic_probe(dev); 71178173Simp bus_generic_attach(dev); 72178173Simp 73178173Simp 74178173Simp return (0); 75178173Simp} 76178173Simp 77178173Simpstatic struct resource * 78178173Simpgt_alloc_resource(device_t dev, device_t child, int type, int *rid, 79178173Simp u_long start, u_long end, u_long count, u_int flags) 80178173Simp{ 81178173Simp return (BUS_ALLOC_RESOURCE(device_get_parent(dev), child, 82178173Simp type, rid, start, end, count, flags)); 83178173Simp 84178173Simp} 85178173Simp 86178173Simpstatic int 87178173Simpgt_setup_intr(device_t dev, device_t child, 88178173Simp struct resource *ires, int flags, driver_filter_t *filt, 89178173Simp driver_intr_t *intr, void *arg, void **cookiep) 90178173Simp{ 91178173Simp return BUS_SETUP_INTR(device_get_parent(dev), child, ires, flags, 92178173Simp filt, intr, arg, cookiep); 93178173Simp} 94178173Simp 95178173Simpstatic int 96178173Simpgt_teardown_intr(device_t dev, device_t child, struct resource *res, 97178173Simp void *cookie) 98178173Simp{ 99178173Simp return (BUS_TEARDOWN_INTR(device_get_parent(dev), child, res, cookie)); 100178173Simp} 101178173Simp 102178173Simpstatic int 103178173Simpgt_activate_resource(device_t dev, device_t child, int type, int rid, 104178173Simp struct resource *r) 105178173Simp{ 106178173Simp return (BUS_ACTIVATE_RESOURCE(device_get_parent(dev), child, 107178173Simp type, rid, r)); 108178173Simp} 109178173Simp 110178173Simpstatic device_method_t gt_methods[] = { 111178173Simp DEVMETHOD(device_probe, gt_probe), 112178173Simp DEVMETHOD(device_identify, gt_identify), 113178173Simp DEVMETHOD(device_attach, gt_attach), 114178173Simp 115178173Simp DEVMETHOD(bus_setup_intr, gt_setup_intr), 116178173Simp DEVMETHOD(bus_teardown_intr, gt_teardown_intr), 117178173Simp DEVMETHOD(bus_alloc_resource, gt_alloc_resource), 118178173Simp DEVMETHOD(bus_activate_resource, gt_activate_resource), 119178173Simp 120227843Smarius DEVMETHOD_END 121178173Simp}; 122178173Simp 123178173Simpstatic driver_t gt_driver = { 124178173Simp "gt", 125178173Simp gt_methods, 126178173Simp sizeof(struct gt_softc), 127178173Simp}; 128178173Simpstatic devclass_t gt_devclass; 129178173Simp 130178173SimpDRIVER_MODULE(gt, nexus, gt_driver, gt_devclass, 0, 0); 131