#include <scsi/scsi.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
#include <linux/usb.h>
#include <linux/module.h>
#include <linux/slab.h>
#include "usb.h"
#include "transport.h"
#include "protocol.h"
#include "scsiglue.h"
#include "sierra_ms.h"
#include "debug.h"
#define SWIMS_USB_REQUEST_SetSwocMode …
#define SWIMS_USB_REQUEST_GetSwocInfo …
#define SWIMS_USB_INDEX_SetMode …
#define SWIMS_SET_MODE_Modem …
#define TRU_NORMAL …
#define TRU_FORCE_MS …
#define TRU_FORCE_MODEM …
static unsigned int swi_tru_install = …;
module_param(swi_tru_install, uint, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(…) …;
struct swoc_info { … } __attribute__((packed));
static bool containsFullLinuxPackage(struct swoc_info *swocInfo)
{ … }
static int sierra_set_ms_mode(struct usb_device *udev, __u16 eSWocMode)
{ … }
static int sierra_get_swoc_info(struct usb_device *udev,
struct swoc_info *swocInfo)
{ … }
static void debug_swoc(const struct device *dev, struct swoc_info *swocInfo)
{ … }
static ssize_t truinst_show(struct device *dev, struct device_attribute *attr,
char *buf)
{ … }
static DEVICE_ATTR_RO(truinst);
int sierra_ms_init(struct us_data *us)
{ … }