1098ca2bdSWarner Losh#- 26182fdbdSPeter Wemm# Copyright (c) 1998 Doug Rabson 36182fdbdSPeter Wemm# All rights reserved. 46182fdbdSPeter Wemm# 56182fdbdSPeter Wemm# Redistribution and use in source and binary forms, with or without 66182fdbdSPeter Wemm# modification, are permitted provided that the following conditions 76182fdbdSPeter Wemm# are met: 86182fdbdSPeter Wemm# 1. Redistributions of source code must retain the above copyright 96182fdbdSPeter Wemm# notice, this list of conditions and the following disclaimer. 106182fdbdSPeter Wemm# 2. Redistributions in binary form must reproduce the above copyright 116182fdbdSPeter Wemm# notice, this list of conditions and the following disclaimer in the 126182fdbdSPeter Wemm# documentation and/or other materials provided with the distribution. 136182fdbdSPeter Wemm# 146182fdbdSPeter Wemm# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 156182fdbdSPeter Wemm# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 166182fdbdSPeter Wemm# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 176182fdbdSPeter Wemm# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 186182fdbdSPeter Wemm# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 196182fdbdSPeter Wemm# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 206182fdbdSPeter Wemm# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 216182fdbdSPeter Wemm# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 226182fdbdSPeter Wemm# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 236182fdbdSPeter Wemm# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 246182fdbdSPeter Wemm# SUCH DAMAGE. 256182fdbdSPeter Wemm# 26c3aac50fSPeter Wemm# $FreeBSD$ 276182fdbdSPeter Wemm# 286182fdbdSPeter Wemm 29f7b77691SDoug Rabson#include <sys/bus.h> 30f7b77691SDoug Rabson 316182fdbdSPeter WemmINTERFACE pci; 326182fdbdSPeter Wemm 339bf4c9c1SJohn BaldwinCODE { 349bf4c9c1SJohn Baldwin static int 359bf4c9c1SJohn Baldwin null_msi_count(device_t dev, device_t child) 369bf4c9c1SJohn Baldwin { 379bf4c9c1SJohn Baldwin return (0); 389bf4c9c1SJohn Baldwin } 399bf4c9c1SJohn Baldwin}; 409bf4c9c1SJohn Baldwin 419bf4c9c1SJohn Baldwin 426182fdbdSPeter WemmMETHOD u_int32_t read_config { 436182fdbdSPeter Wemm device_t dev; 446182fdbdSPeter Wemm device_t child; 456182fdbdSPeter Wemm int reg; 466182fdbdSPeter Wemm int width; 476182fdbdSPeter Wemm}; 486182fdbdSPeter Wemm 496182fdbdSPeter WemmMETHOD void write_config { 506182fdbdSPeter Wemm device_t dev; 516182fdbdSPeter Wemm device_t child; 526182fdbdSPeter Wemm int reg; 536182fdbdSPeter Wemm u_int32_t val; 546182fdbdSPeter Wemm int width; 556182fdbdSPeter Wemm}; 569eb13b39SPeter Wemm 579eb13b39SPeter WemmMETHOD int get_powerstate { 589eb13b39SPeter Wemm device_t dev; 599eb13b39SPeter Wemm device_t child; 609eb13b39SPeter Wemm}; 619eb13b39SPeter Wemm 629eb13b39SPeter WemmMETHOD int set_powerstate { 639eb13b39SPeter Wemm device_t dev; 649eb13b39SPeter Wemm device_t child; 659eb13b39SPeter Wemm int state; 669eb13b39SPeter Wemm}; 679eb13b39SPeter Wemm 68667dc26eSJohn-Mark GurneyMETHOD int get_vpd_ident { 69667dc26eSJohn-Mark Gurney device_t dev; 70667dc26eSJohn-Mark Gurney device_t child; 71667dc26eSJohn-Mark Gurney const char **identptr; 72667dc26eSJohn-Mark Gurney}; 73667dc26eSJohn-Mark Gurney 74667dc26eSJohn-Mark GurneyMETHOD int get_vpd_readonly { 75667dc26eSJohn-Mark Gurney device_t dev; 76667dc26eSJohn-Mark Gurney device_t child; 77667dc26eSJohn-Mark Gurney const char *kw; 78667dc26eSJohn-Mark Gurney const char **vptr; 79667dc26eSJohn-Mark Gurney}; 80667dc26eSJohn-Mark Gurney 81c047e5b1SMatthew N. DoddMETHOD int enable_busmaster { 829eb13b39SPeter Wemm device_t dev; 839eb13b39SPeter Wemm device_t child; 849eb13b39SPeter Wemm}; 859eb13b39SPeter Wemm 86c047e5b1SMatthew N. DoddMETHOD int disable_busmaster { 879eb13b39SPeter Wemm device_t dev; 889eb13b39SPeter Wemm device_t child; 899eb13b39SPeter Wemm}; 909eb13b39SPeter Wemm 91c047e5b1SMatthew N. DoddMETHOD int enable_io { 929eb13b39SPeter Wemm device_t dev; 939eb13b39SPeter Wemm device_t child; 949eb13b39SPeter Wemm int space; 959eb13b39SPeter Wemm}; 969eb13b39SPeter Wemm 97c047e5b1SMatthew N. DoddMETHOD int disable_io { 989eb13b39SPeter Wemm device_t dev; 999eb13b39SPeter Wemm device_t child; 1009eb13b39SPeter Wemm int space; 1019eb13b39SPeter Wemm}; 1023920999dSThomas Moestl 1033920999dSThomas MoestlMETHOD int assign_interrupt { 1043920999dSThomas Moestl device_t dev; 1053920999dSThomas Moestl device_t child; 1063920999dSThomas Moestl}; 1074f9795b9SJohn Baldwin 108*c668000bSJohn BaldwinMETHOD int find_cap { 109*c668000bSJohn Baldwin device_t dev; 110*c668000bSJohn Baldwin device_t child; 111*c668000bSJohn Baldwin int capability; 112*c668000bSJohn Baldwin int *capreg; 113*c668000bSJohn Baldwin}; 114*c668000bSJohn Baldwin 1154f9795b9SJohn BaldwinMETHOD int find_extcap { 1164f9795b9SJohn Baldwin device_t dev; 1174f9795b9SJohn Baldwin device_t child; 1184f9795b9SJohn Baldwin int capability; 1194f9795b9SJohn Baldwin int *capreg; 1204f9795b9SJohn Baldwin}; 1219bf4c9c1SJohn Baldwin 122*c668000bSJohn BaldwinMETHOD int find_htcap { 123*c668000bSJohn Baldwin device_t dev; 124*c668000bSJohn Baldwin device_t child; 125*c668000bSJohn Baldwin int capability; 126*c668000bSJohn Baldwin int *capreg; 127*c668000bSJohn Baldwin}; 128*c668000bSJohn Baldwin 1299bf4c9c1SJohn BaldwinMETHOD int alloc_msi { 1309bf4c9c1SJohn Baldwin device_t dev; 1319bf4c9c1SJohn Baldwin device_t child; 1329bf4c9c1SJohn Baldwin int *count; 1339bf4c9c1SJohn Baldwin}; 1349bf4c9c1SJohn Baldwin 1355fe82bcaSJohn BaldwinMETHOD int alloc_msix { 1365fe82bcaSJohn Baldwin device_t dev; 1375fe82bcaSJohn Baldwin device_t child; 1385fe82bcaSJohn Baldwin int *count; 1395fe82bcaSJohn Baldwin}; 1405fe82bcaSJohn Baldwin 1415fe82bcaSJohn BaldwinMETHOD int remap_msix { 1425fe82bcaSJohn Baldwin device_t dev; 1435fe82bcaSJohn Baldwin device_t child; 144e706f7f0SJohn Baldwin int count; 145e706f7f0SJohn Baldwin const u_int *vectors; 1465fe82bcaSJohn Baldwin}; 1475fe82bcaSJohn Baldwin 1489bf4c9c1SJohn BaldwinMETHOD int release_msi { 1499bf4c9c1SJohn Baldwin device_t dev; 1509bf4c9c1SJohn Baldwin device_t child; 1519bf4c9c1SJohn Baldwin}; 1529bf4c9c1SJohn Baldwin 1539bf4c9c1SJohn BaldwinMETHOD int msi_count { 1549bf4c9c1SJohn Baldwin device_t dev; 1559bf4c9c1SJohn Baldwin device_t child; 1569bf4c9c1SJohn Baldwin} DEFAULT null_msi_count; 1575fe82bcaSJohn Baldwin 1585fe82bcaSJohn BaldwinMETHOD int msix_count { 1595fe82bcaSJohn Baldwin device_t dev; 1605fe82bcaSJohn Baldwin device_t child; 1615fe82bcaSJohn Baldwin} DEFAULT null_msi_count; 162