1299928Sandrew#- 2299928Sandrew# Copyright (c) 2016 The FreeBSD Foundation 3299928Sandrew# All rights reserved. 4299928Sandrew# 5299928Sandrew# This software was developed by Andrew Turner under 6299928Sandrew# sponsorship from the FreeBSD Foundation. 7299928Sandrew# 8299928Sandrew# Redistribution and use in source and binary forms, with or without 9299928Sandrew# modification, are permitted provided that the following conditions 10299928Sandrew# are met: 11299928Sandrew# 1. Redistributions of source code must retain the above copyright 12299928Sandrew# notice, this list of conditions and the following disclaimer. 13299928Sandrew# 2. Redistributions in binary form must reproduce the above copyright 14299928Sandrew# notice, this list of conditions and the following disclaimer in the 15299928Sandrew# documentation and/or other materials provided with the distribution. 16299928Sandrew# 17299928Sandrew# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18299928Sandrew# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19299928Sandrew# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20299928Sandrew# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21299928Sandrew# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22299928Sandrew# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23299928Sandrew# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24299928Sandrew# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25299928Sandrew# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26299928Sandrew# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27299928Sandrew# SUCH DAMAGE. 28299928Sandrew# 29299928Sandrew# $FreeBSD: releng/11.0/sys/kern/msi_if.m 299928 2016-05-16 09:11:40Z andrew $ 30299928Sandrew# 31299928Sandrew 32299928SandrewINTERFACE msi; 33299928Sandrew 34299928SandrewHEADER { 35299928Sandrew struct intr_irqsrc; 36299928Sandrew}; 37299928Sandrew 38299928SandrewMETHOD int alloc_msi { 39299928Sandrew device_t dev; 40299928Sandrew device_t child; 41299928Sandrew int count; 42299928Sandrew int maxcount; 43299928Sandrew device_t *pic; 44299928Sandrew struct intr_irqsrc **srcs; 45299928Sandrew}; 46299928Sandrew 47299928SandrewMETHOD int release_msi { 48299928Sandrew device_t dev; 49299928Sandrew device_t child; 50299928Sandrew int count; 51299928Sandrew struct intr_irqsrc **srcs; 52299928Sandrew}; 53299928Sandrew 54299928SandrewMETHOD int alloc_msix { 55299928Sandrew device_t dev; 56299928Sandrew device_t child; 57299928Sandrew device_t *pic; 58299928Sandrew struct intr_irqsrc **src; 59299928Sandrew}; 60299928Sandrew 61299928SandrewMETHOD int release_msix { 62299928Sandrew device_t dev; 63299928Sandrew device_t child; 64299928Sandrew struct intr_irqsrc *src; 65299928Sandrew}; 66299928Sandrew 67299928SandrewMETHOD int map_msi { 68299928Sandrew device_t dev; 69299928Sandrew device_t child; 70299928Sandrew struct intr_irqsrc *src; 71299928Sandrew uint64_t *addr; 72299928Sandrew uint32_t *data; 73299928Sandrew}; 74299928Sandrew 75