# Copyright 2019 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

include <sys/types.h>
include <sys/pciio.h>
include <fcntl.h>

resource fd_pci[fd]

openat$pci(fd const[AT_FDCWD], file ptr[in, string["/dev/pci"]], flags flags[open_flags], mode const[0]) fd_pci

ioctl$PCIOCREAD(fd fd_pci, cmd const[PCIOCREAD], arg ptr[inout, pci_io])
ioctl$PCIOCWRITE(fd fd_pci, cmd const[PCIOCWRITE], arg ptr[in, pci_io])
ioctl$PCIOCGETROM(fd fd_pci, cmd const[PCIOCGETROM], arg ptr[inout, pci_rom])

pci_io {
	pi_sel		pcisel
	pi_reg		int32
	pi_width	int32
	pi_data		int32
}

pci_rom {
	pr_sel		pcisel
	pr_romlen	len[pr_rom, int32]
	pr_rom		ptr[out, array[int32]]
}

pcisel {
	pc_bus	int8
	pc_dev	int8
	pc_func	int8
}
