ofw_pci_if.m revision 115417
1# Copyright (c) 2001 by Thomas Moestl <tmm@FreeBSD.org>. 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions 6# are met: 7# 1. Redistributions of source code must retain the above copyright 8# notice, this list of conditions and the following disclaimer. 9# 2. Redistributions in binary form must reproduce the above copyright 10# notice, this list of conditions and the following disclaimer in the 11# documentation and/or other materials provided with the distribution. 12# 13# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 14# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 15# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 16# IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 17# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 18# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 19# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 20# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 21# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 22# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23# 24# $FreeBSD: head/sys/sparc64/pci/ofw_pci_if.m 115417 2003-05-30 20:48:05Z tmm $ 25 26#include <sys/bus.h> 27#include <machine/bus.h> 28 29#include <dev/ofw/openfirm.h> 30 31INTERFACE sparcbus; 32 33HEADER { 34 /* Bus tag types for the get_bustag method */ 35 enum sbbt_id { 36 SBBT_IO, 37 SBBT_MEM, 38 }; 39}; 40 41CODE { 42 static int 43 sparcbus_default_intr_pending(device_t dev, int intr) 44 { 45 46 return (SPARCBUS_INTR_PENDING(device_get_parent(dev), intr)); 47 } 48 49 static u_int32_t 50 sparcbus_default_guess_ino(device_t dev, phandle_t node, u_int slot, 51 u_int pin) 52 { 53 54 return (SPARCBUS_GUESS_INO(device_get_parent(dev), node, slot, 55 pin)); 56 } 57 58 static bus_space_handle_t 59 sparcbus_default_get_bus_handle(device_t dev, enum sbbt_id id, 60 bus_space_handle_t childhdl, bus_space_tag_t *tag) 61 { 62 63 return (SPARCBUS_GET_BUS_HANDLE(device_get_parent(dev), id, 64 childhdl, tag)); 65 } 66}; 67 68# Return whether an interrupt request is pending for the INO intr. 69METHOD int intr_pending { 70 device_t dev; 71 int intr; 72} DEFAULT sparcbus_default_intr_pending; 73 74# Let the bus driver guess the INO of the device at the given slot and intpin 75# on the bus described by the node if it could not be determined from the 76# firmware properties. Returns 255 if no INO could be found (mapping will 77# continue at the parent), or the desired INO. 78METHOD u_int32_t guess_ino { 79 device_t dev; 80 phandle_t node; 81 u_int slot; 82 u_int pin; 83} DEFAULT sparcbus_default_guess_ino; 84 85# Get the bustag for the root bus. This is needed for ISA old-stlye 86# in[bwl]()/out[bwl]() support, where no tag retrieved from a resource is 87# passed. The returned tag is used to construct a tag for the whole ISA bus. 88METHOD bus_space_handle_t get_bus_handle { 89 device_t dev; 90 enum sbbt_id id; 91 bus_space_handle_t childhdl; 92 bus_space_tag_t *tag; 93} DEFAULT sparcbus_default_get_bus_handle; 94