diff --git a/userspace/vendor-reset b/userspace/vendor-reset index b6f57c7..a90b65f 100755 Binary files a/userspace/vendor-reset and b/userspace/vendor-reset differ diff --git a/userspace/vendor-reset.c b/userspace/vendor-reset.c index ec9ef50..0ea500e 100644 --- a/userspace/vendor-reset.c +++ b/userspace/vendor-reset.c @@ -16,7 +16,53 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "../include/vendor-reset.h" +#include +#include +#include +#include +#include + int main(int argc, char * argv[]) { + int ret; + + if (argc < 4) + { + fprintf(stderr, + "Usage:\n" + " %s \n", + argv[0] + ); + return -1; + } + + int domain = atoi(argv[1]); + int bus = atoi(argv[2]); + int devfn = atoi(argv[3]); + + int fd = open("/dev/vendor_reset", O_RDWR); + if (fd < 0) + { + perror("open"); + return fd; + } + + struct vendor_reset_ioctl dev = + { + .domain = domain, + .bus = bus, + .devfn = devfn + }; + + ret = ioctl(fd, VENDOR_RESET_RESET, &dev); + if (ret < 0) + { + perror("ioctl"); + goto err; + } + +err: + close(fd); return 0; }