// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SRC_LIB_USB_RS_USBDEVFS_STUB_H_
#define SRC_LIB_USB_RS_USBDEVFS_STUB_H_

#include <asm-generic/ioctl.h>
#include <linux/usb/ch9.h>
#include <linux/usbdevice_fs.h>

// These unsigned longs match the declaration of ioctl itself and are therefore correct.
// NOLINTBEGIN(google-runtime-int)
const unsigned long USBDEVFS_CONTROL_ = USBDEVFS_CONTROL;
#undef USBDEVFS_CONTROL
const unsigned long USBDEVFS_CONTROL = USBDEVFS_CONTROL_;

const unsigned long USBDEVFS_BULK_ = USBDEVFS_BULK;
#undef USBDEVFS_BULK
const unsigned long USBDEVFS_BULK = USBDEVFS_BULK_;

const unsigned long USBDEVFS_RESETEP_ = USBDEVFS_RESETEP;
#undef USBDEVFS_RESETEP
const unsigned long USBDEVFS_RESETEP = USBDEVFS_RESETEP_;

const unsigned long USBDEVFS_SETINTERFACE_ = USBDEVFS_SETINTERFACE;
#undef USBDEVFS_SETINTERFACE
const unsigned long USBDEVFS_SETINTERFACE = USBDEVFS_SETINTERFACE_;

const unsigned long USBDEVFS_SETCONFIGURATION_ = USBDEVFS_SETCONFIGURATION;
#undef USBDEVFS_SETCONFIGURATION
const unsigned long USBDEVFS_SETCONFIGURATION = USBDEVFS_SETCONFIGURATION_;

const unsigned long USBDEVFS_GETDRIVER_ = USBDEVFS_GETDRIVER;
#undef USBDEVFS_GETDRIVER
const unsigned long USBDEVFS_GETDRIVER = USBDEVFS_GETDRIVER_;

const unsigned long USBDEVFS_SUBMITURB_ = USBDEVFS_SUBMITURB;
#undef USBDEVFS_SUBMITURB
const unsigned long USBDEVFS_SUBMITURB = USBDEVFS_SUBMITURB_;

const unsigned long USBDEVFS_DISCARDURB_ = USBDEVFS_DISCARDURB;
#undef USBDEVFS_DISCARDURB
const unsigned long USBDEVFS_DISCARDURB = USBDEVFS_DISCARDURB_;

const unsigned long USBDEVFS_REAPURB_ = USBDEVFS_REAPURB;
#undef USBDEVFS_REAPURB
const unsigned long USBDEVFS_REAPURB = USBDEVFS_REAPURB_;

const unsigned long USBDEVFS_REAPURBNDELAY_ = USBDEVFS_REAPURBNDELAY;
#undef USBDEVFS_REAPURBNDELAY
const unsigned long USBDEVFS_REAPURBNDELAY = USBDEVFS_REAPURBNDELAY_;

const unsigned long USBDEVFS_DISCSIGNAL_ = USBDEVFS_DISCSIGNAL;
#undef USBDEVFS_DISCSIGNAL
const unsigned long USBDEVFS_DISCSIGNAL = USBDEVFS_DISCSIGNAL_;

const unsigned long USBDEVFS_CLAIMINTERFACE_ = USBDEVFS_CLAIMINTERFACE;
#undef USBDEVFS_CLAIMINTERFACE
const unsigned long USBDEVFS_CLAIMINTERFACE = USBDEVFS_CLAIMINTERFACE_;

const unsigned long USBDEVFS_RELEASEINTERFACE_ = USBDEVFS_RELEASEINTERFACE;
#undef USBDEVFS_RELEASEINTERFACE
const unsigned long USBDEVFS_RELEASEINTERFACE = USBDEVFS_RELEASEINTERFACE_;

const unsigned long USBDEVFS_CONNECTINFO_ = USBDEVFS_CONNECTINFO;
#undef USBDEVFS_CONNECTINFO
const unsigned long USBDEVFS_CONNECTINFO = USBDEVFS_CONNECTINFO_;

const unsigned long USBDEVFS_IOCTL_ = USBDEVFS_IOCTL;
#undef USBDEVFS_IOCTL
const unsigned long USBDEVFS_IOCTL = USBDEVFS_IOCTL_;

const unsigned long USBDEVFS_HUB_PORTINFO_ = USBDEVFS_HUB_PORTINFO;
#undef USBDEVFS_HUB_PORTINFO
const unsigned long USBDEVFS_HUB_PORTINFO = USBDEVFS_HUB_PORTINFO_;

const unsigned long USBDEVFS_RESET_ = USBDEVFS_RESET;
#undef USBDEVFS_RESET
const unsigned long USBDEVFS_RESET = USBDEVFS_RESET_;

const unsigned long USBDEVFS_CLEAR_HALT_ = USBDEVFS_CLEAR_HALT;
#undef USBDEVFS_CLEAR_HALT
const unsigned long USBDEVFS_CLEAR_HALT = USBDEVFS_CLEAR_HALT_;

const unsigned long USBDEVFS_DISCONNECT_ = USBDEVFS_DISCONNECT;
#undef USBDEVFS_DISCONNECT
const unsigned long USBDEVFS_DISCONNECT = USBDEVFS_DISCONNECT_;

const unsigned long USBDEVFS_CONNECT_ = USBDEVFS_CONNECT;
#undef USBDEVFS_CONNECT
const unsigned long USBDEVFS_CONNECT = USBDEVFS_CONNECT_;

const unsigned long USBDEVFS_CLAIM_PORT_ = USBDEVFS_CLAIM_PORT;
#undef USBDEVFS_CLAIM_PORT
const unsigned long USBDEVFS_CLAIM_PORT = USBDEVFS_CLAIM_PORT_;

const unsigned long USBDEVFS_RELEASE_PORT_ = USBDEVFS_RELEASE_PORT;
#undef USBDEVFS_RELEASE_PORT
const unsigned long USBDEVFS_RELEASE_PORT = USBDEVFS_RELEASE_PORT_;

const unsigned long USBDEVFS_GET_CAPABILITIES_ = USBDEVFS_GET_CAPABILITIES;
#undef USBDEVFS_GET_CAPABILITIES
const unsigned long USBDEVFS_GET_CAPABILITIES = USBDEVFS_GET_CAPABILITIES_;

const unsigned long USBDEVFS_DISCONNECT_CLAIM_ = USBDEVFS_DISCONNECT_CLAIM;
#undef USBDEVFS_DISCONNECT_CLAIM
const unsigned long USBDEVFS_DISCONNECT_CLAIM = USBDEVFS_DISCONNECT_CLAIM_;

const unsigned long USBDEVFS_ALLOC_STREAMS_ = USBDEVFS_ALLOC_STREAMS;
#undef USBDEVFS_ALLOC_STREAMS
const unsigned long USBDEVFS_ALLOC_STREAMS = USBDEVFS_ALLOC_STREAMS_;

const unsigned long USBDEVFS_FREE_STREAMS_ = USBDEVFS_FREE_STREAMS;
#undef USBDEVFS_FREE_STREAMS
const unsigned long USBDEVFS_FREE_STREAMS = USBDEVFS_FREE_STREAMS_;
// NOLINTEND(google-runtime-int)

#endif  // SRC_LIB_USB_RS_USBDEVFS_STUB_H_
