|
@@ -116,7 +116,7 @@ acm_iad_descriptor = {
|
|
|
};
|
|
|
|
|
|
|
|
|
-static struct usb_interface_descriptor acm_control_interface_desc __initdata = {
|
|
|
+static struct usb_interface_descriptor acm_control_interface_desc = {
|
|
|
.bLength = USB_DT_INTERFACE_SIZE,
|
|
|
.bDescriptorType = USB_DT_INTERFACE,
|
|
|
/* .bInterfaceNumber = DYNAMIC */
|
|
@@ -127,7 +127,7 @@ static struct usb_interface_descriptor acm_control_interface_desc __initdata = {
|
|
|
/* .iInterface = DYNAMIC */
|
|
|
};
|
|
|
|
|
|
-static struct usb_interface_descriptor acm_data_interface_desc __initdata = {
|
|
|
+static struct usb_interface_descriptor acm_data_interface_desc = {
|
|
|
.bLength = USB_DT_INTERFACE_SIZE,
|
|
|
.bDescriptorType = USB_DT_INTERFACE,
|
|
|
/* .bInterfaceNumber = DYNAMIC */
|
|
@@ -138,7 +138,7 @@ static struct usb_interface_descriptor acm_data_interface_desc __initdata = {
|
|
|
/* .iInterface = DYNAMIC */
|
|
|
};
|
|
|
|
|
|
-static struct usb_cdc_header_desc acm_header_desc __initdata = {
|
|
|
+static struct usb_cdc_header_desc acm_header_desc = {
|
|
|
.bLength = sizeof(acm_header_desc),
|
|
|
.bDescriptorType = USB_DT_CS_INTERFACE,
|
|
|
.bDescriptorSubType = USB_CDC_HEADER_TYPE,
|
|
@@ -146,7 +146,7 @@ static struct usb_cdc_header_desc acm_header_desc __initdata = {
|
|
|
};
|
|
|
|
|
|
static struct usb_cdc_call_mgmt_descriptor
|
|
|
-acm_call_mgmt_descriptor __initdata = {
|
|
|
+acm_call_mgmt_descriptor = {
|
|
|
.bLength = sizeof(acm_call_mgmt_descriptor),
|
|
|
.bDescriptorType = USB_DT_CS_INTERFACE,
|
|
|
.bDescriptorSubType = USB_CDC_CALL_MANAGEMENT_TYPE,
|
|
@@ -154,14 +154,14 @@ acm_call_mgmt_descriptor __initdata = {
|
|
|
/* .bDataInterface = DYNAMIC */
|
|
|
};
|
|
|
|
|
|
-static struct usb_cdc_acm_descriptor acm_descriptor __initdata = {
|
|
|
+static struct usb_cdc_acm_descriptor acm_descriptor = {
|
|
|
.bLength = sizeof(acm_descriptor),
|
|
|
.bDescriptorType = USB_DT_CS_INTERFACE,
|
|
|
.bDescriptorSubType = USB_CDC_ACM_TYPE,
|
|
|
.bmCapabilities = USB_CDC_CAP_LINE,
|
|
|
};
|
|
|
|
|
|
-static struct usb_cdc_union_desc acm_union_desc __initdata = {
|
|
|
+static struct usb_cdc_union_desc acm_union_desc = {
|
|
|
.bLength = sizeof(acm_union_desc),
|
|
|
.bDescriptorType = USB_DT_CS_INTERFACE,
|
|
|
.bDescriptorSubType = USB_CDC_UNION_TYPE,
|
|
@@ -171,7 +171,7 @@ static struct usb_cdc_union_desc acm_union_desc __initdata = {
|
|
|
|
|
|
/* full speed support: */
|
|
|
|
|
|
-static struct usb_endpoint_descriptor acm_fs_notify_desc __initdata = {
|
|
|
+static struct usb_endpoint_descriptor acm_fs_notify_desc = {
|
|
|
.bLength = USB_DT_ENDPOINT_SIZE,
|
|
|
.bDescriptorType = USB_DT_ENDPOINT,
|
|
|
.bEndpointAddress = USB_DIR_IN,
|
|
@@ -180,21 +180,21 @@ static struct usb_endpoint_descriptor acm_fs_notify_desc __initdata = {
|
|
|
.bInterval = 1 << GS_LOG2_NOTIFY_INTERVAL,
|
|
|
};
|
|
|
|
|
|
-static struct usb_endpoint_descriptor acm_fs_in_desc __initdata = {
|
|
|
+static struct usb_endpoint_descriptor acm_fs_in_desc = {
|
|
|
.bLength = USB_DT_ENDPOINT_SIZE,
|
|
|
.bDescriptorType = USB_DT_ENDPOINT,
|
|
|
.bEndpointAddress = USB_DIR_IN,
|
|
|
.bmAttributes = USB_ENDPOINT_XFER_BULK,
|
|
|
};
|
|
|
|
|
|
-static struct usb_endpoint_descriptor acm_fs_out_desc __initdata = {
|
|
|
+static struct usb_endpoint_descriptor acm_fs_out_desc = {
|
|
|
.bLength = USB_DT_ENDPOINT_SIZE,
|
|
|
.bDescriptorType = USB_DT_ENDPOINT,
|
|
|
.bEndpointAddress = USB_DIR_OUT,
|
|
|
.bmAttributes = USB_ENDPOINT_XFER_BULK,
|
|
|
};
|
|
|
|
|
|
-static struct usb_descriptor_header *acm_fs_function[] __initdata = {
|
|
|
+static struct usb_descriptor_header *acm_fs_function[] = {
|
|
|
(struct usb_descriptor_header *) &acm_iad_descriptor,
|
|
|
(struct usb_descriptor_header *) &acm_control_interface_desc,
|
|
|
(struct usb_descriptor_header *) &acm_header_desc,
|
|
@@ -210,7 +210,7 @@ static struct usb_descriptor_header *acm_fs_function[] __initdata = {
|
|
|
|
|
|
/* high speed support: */
|
|
|
|
|
|
-static struct usb_endpoint_descriptor acm_hs_notify_desc __initdata = {
|
|
|
+static struct usb_endpoint_descriptor acm_hs_notify_desc = {
|
|
|
.bLength = USB_DT_ENDPOINT_SIZE,
|
|
|
.bDescriptorType = USB_DT_ENDPOINT,
|
|
|
.bEndpointAddress = USB_DIR_IN,
|
|
@@ -219,21 +219,21 @@ static struct usb_endpoint_descriptor acm_hs_notify_desc __initdata = {
|
|
|
.bInterval = GS_LOG2_NOTIFY_INTERVAL+4,
|
|
|
};
|
|
|
|
|
|
-static struct usb_endpoint_descriptor acm_hs_in_desc __initdata = {
|
|
|
+static struct usb_endpoint_descriptor acm_hs_in_desc = {
|
|
|
.bLength = USB_DT_ENDPOINT_SIZE,
|
|
|
.bDescriptorType = USB_DT_ENDPOINT,
|
|
|
.bmAttributes = USB_ENDPOINT_XFER_BULK,
|
|
|
.wMaxPacketSize = cpu_to_le16(512),
|
|
|
};
|
|
|
|
|
|
-static struct usb_endpoint_descriptor acm_hs_out_desc __initdata = {
|
|
|
+static struct usb_endpoint_descriptor acm_hs_out_desc = {
|
|
|
.bLength = USB_DT_ENDPOINT_SIZE,
|
|
|
.bDescriptorType = USB_DT_ENDPOINT,
|
|
|
.bmAttributes = USB_ENDPOINT_XFER_BULK,
|
|
|
.wMaxPacketSize = cpu_to_le16(512),
|
|
|
};
|
|
|
|
|
|
-static struct usb_descriptor_header *acm_hs_function[] __initdata = {
|
|
|
+static struct usb_descriptor_header *acm_hs_function[] = {
|
|
|
(struct usb_descriptor_header *) &acm_iad_descriptor,
|
|
|
(struct usb_descriptor_header *) &acm_control_interface_desc,
|
|
|
(struct usb_descriptor_header *) &acm_header_desc,
|
|
@@ -571,7 +571,7 @@ static int acm_send_break(struct gserial *port, int duration)
|
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
|
|
/* ACM function driver setup/binding */
|
|
|
-static int __init
|
|
|
+static int
|
|
|
acm_bind(struct usb_configuration *c, struct usb_function *f)
|
|
|
{
|
|
|
struct usb_composite_dev *cdev = c->cdev;
|
|
@@ -719,7 +719,7 @@ static inline bool can_support_cdc(struct usb_configuration *c)
|
|
|
* handle all the ones it binds. Caller is also responsible
|
|
|
* for calling @gserial_cleanup() before module unload.
|
|
|
*/
|
|
|
-int __init acm_bind_config(struct usb_configuration *c, u8 port_num)
|
|
|
+int acm_bind_config(struct usb_configuration *c, u8 port_num)
|
|
|
{
|
|
|
struct f_acm *acm;
|
|
|
int status;
|