1#- 2# Copyright (c) 2016 The FreeBSD Foundation 3# All rights reserved. 4# 5# This software was developed by Andrew Turner under 6# sponsorship from the FreeBSD Foundation. 7# 8# Redistribution and use in source and binary forms, with or without 9# modification, are permitted provided that the following conditions 10# are met: 11# 1. Redistributions of source code must retain the above copyright 12# notice, this list of conditions and the following disclaimer. 13# 2. Redistributions in binary form must reproduce the above copyright 14# notice, this list of conditions and the following disclaimer in the 15# documentation and/or other materials provided with the distribution. 16# 17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27# SUCH DAMAGE. 28# 29# $FreeBSD$ 30 31#include <sys/types.h> 32#include <sys/systm.h> 33#include <sys/bus.h> 34 35INTERFACE acpi_bus; 36 37CODE { 38 static acpi_bus_map_intr_t acpi_bus_default_map_intr; 39 40 int 41 acpi_bus_default_map_intr(device_t bus, device_t dev, u_int irq, 42 int trig, int pol) 43 { 44 device_t parent; 45 46 /* Pass up the hierarchy */ 47 parent = device_get_parent(bus); 48 if (parent != NULL) 49 return (ACPI_BUS_MAP_INTR(parent, dev, irq, trig, pol)); 50 51 panic("Unable to map interrupt %u", irq); 52 } 53}; 54 55# Map an interrupt from ACPI space to the FreeBSD IRQ space. Note that 56# both of these may be different than the pysical interrupt space as this 57# may be local to each interrupt controller. 58# 59# This method also associates interrupt metadata with the interrupt, 60# removing the need for a post hoc configure step. 61METHOD int map_intr { 62 device_t bus; 63 device_t dev; 64 u_int irq; 65 int trig; 66 int pol; 67} DEFAULT acpi_bus_default_map_intr; 68