ofw_pci_if.m revision 139825
1#- 2# Copyright (c) 2001, 2003 by Thomas Moestl <tmm@FreeBSD.org> 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions 7# are met: 8# 1. Redistributions of source code must retain the above copyright 9# notice, this list of conditions and the following disclaimer. 10# 2. Redistributions in binary form must reproduce the above copyright 11# notice, this list of conditions and the following disclaimer in the 12# documentation and/or other materials provided with the distribution. 13# 14# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17# IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 18# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 20# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 21# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 22# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 23# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24# 25# $FreeBSD: head/sys/sparc64/pci/ofw_pci_if.m 139825 2005-01-07 02:29:27Z imp $ 26 27#include <sys/bus.h> 28#include <machine/bus.h> 29 30#include <dev/ofw/openfirm.h> 31 32#include <sparc64/pci/ofw_pci.h> 33 34INTERFACE ofw_pci; 35 36CODE { 37 static ofw_pci_intr_pending_t ofw_pci_default_intr_pending; 38 static ofw_pci_get_bus_handle_t ofw_pci_default_get_bus_handle; 39 static ofw_pci_adjust_busrange_t ofw_pci_default_adjust_busrange; 40 41 static int 42 ofw_pci_default_intr_pending(device_t dev, ofw_pci_intr_t intr) 43 { 44 45 return (OFW_PCI_INTR_PENDING(device_get_parent(dev), intr)); 46 } 47 48 static bus_space_handle_t 49 ofw_pci_default_get_bus_handle(device_t dev, int type, 50 bus_space_handle_t childhdl, bus_space_tag_t *tag) 51 { 52 53 return (OFW_PCI_GET_BUS_HANDLE(device_get_parent(dev), type, 54 childhdl, tag)); 55 } 56 57 static void 58 ofw_pci_default_adjust_busrange(device_t dev, u_int busno) 59 { 60 61 return (OFW_PCI_ADJUST_BUSRANGE(device_get_parent(dev), busno)); 62 } 63}; 64 65# Return whether an interrupt request is pending for the INO intr. 66METHOD int intr_pending { 67 device_t dev; 68 ofw_pci_intr_t intr; 69} DEFAULT ofw_pci_default_intr_pending; 70 71# Get the bustag for the root bus. This is needed for ISA old-stlye 72# in[bwl]()/out[bwl]() support, where no tag retrieved from a resource is 73# passed. The returned tag is used to construct a tag for the whole ISA bus. 74METHOD bus_space_handle_t get_bus_handle { 75 device_t dev; 76 int type; 77 bus_space_handle_t childhdl; 78 bus_space_tag_t *tag; 79} DEFAULT ofw_pci_default_get_bus_handle; 80 81# Make sure that all PCI bridges up in the hierarchy contain this bus in their 82# subordinate bus range. This is required because we reenumerate all PCI 83# buses. 84METHOD void adjust_busrange { 85 device_t dev; 86 u_int subbus; 87} DEFAULT ofw_pci_default_adjust_busrange; 88