Loading drivers/usb/dwc3/gadget.c +6 −9 Original line number Diff line number Diff line Loading @@ -100,7 +100,7 @@ int dwc3_gadget_set_link_state(struct dwc3 *dwc, enum dwc3_link_state state) * Wait until device controller is ready. Only applies to 1.94a and * later RTL. */ if (dwc->revision >= DWC3_REVISION_194A) { if (dwc3_is_usb3(dwc) && dwc->revision >= DWC3_REVISION_194A) { while (--retries) { reg = dwc3_readl(dwc->regs, DWC3_DSTS); if (reg & DWC3_DSTS_DCNRD) Loading @@ -124,7 +124,7 @@ int dwc3_gadget_set_link_state(struct dwc3 *dwc, enum dwc3_link_state state) * The following code is racy when called from dwc3_gadget_wakeup, * and is not needed, at least on newer versions */ if (dwc->revision >= DWC3_REVISION_194A) if (dwc3_is_usb3(dwc) && dwc->revision >= DWC3_REVISION_194A) return 0; /* wait for a change in DSTS */ Loading Loading @@ -2116,13 +2116,10 @@ static int dwc3_gadget_remote_wakeup(struct dwc3 *dwc) goto out; } /* Recent versions do this automatically */ if (dwc->revision < DWC3_REVISION_194A) { /* write zeroes to Link Change Request */ reg = dwc3_readl(dwc->regs, DWC3_DCTL); reg &= ~DWC3_DCTL_ULSTCHNGREQ_MASK; dwc3_writel(dwc->regs, DWC3_DCTL, reg); } spin_unlock_irqrestore(&dwc->lock, flags); enable_irq(dwc->irq); Loading drivers/usb/gadget/function/f_cdev.c +14 −1 Original line number Diff line number Diff line Loading @@ -732,13 +732,26 @@ static int usb_cser_notify(struct f_cdev *port, u8 type, u16 value, static int port_notify_serial_state(struct cserial *cser) { struct f_cdev *port = cser_to_port(cser); int status; int status, ret; unsigned long flags; struct usb_composite_dev *cdev = port->port_usb.func.config->cdev; struct usb_function *func = &cser->func; struct usb_gadget *gadget; if (port->is_suspended) { gadget = cser->func.config->cdev->gadget; port->pending_state_notify = true; pr_debug("%s: port is suspended\n", __func__); if (usb_cser_get_remote_wakeup_capable(func, gadget)) { if (gadget->speed >= USB_SPEED_SUPER && port->func_is_suspended) { ret = usb_func_wakeup(func); port->func_wakeup_pending = (ret == -EAGAIN) ? true : false; } else { ret = usb_gadget_wakeup(gadget); } } else { pr_debug("%s remote-wakeup not capable\n", __func__); } return 0; } Loading include/uapi/linux/msm_ipa.h +16 −7 Original line number Diff line number Diff line Loading @@ -1731,7 +1731,7 @@ struct IpaDscpVlanPcpMap_t { uint8_t num_vlan; /* indicate how many vlans valid vlan above */ uint8_t num_s_vlan; /* indicate how many vlans valid in s_vlan below */ uint8_t dscp_opt; /* indicates if dscp is required or optional */ uint8_t pad1; /* for alignment */ uint8_t tunnel_id; /* tunnel id */ /* * The same lookup scheme, using vlan[] above, is used for * generating the first index of mpls below; and in addition, Loading @@ -1750,8 +1750,8 @@ struct IpaDscpVlanPcpMap_t { * mpls_val_sorted is in ascending order, by mpls label values in mpls array * vlan_c and vlan_s are vlan id values that are corresponding to the mpls label */ uint16_t pad2; /* for alignment */ uint8_t pad3; /* for alignment */ uint16_t del_add_vlan_id; /* vlan id to add or del */ uint8_t is_vlan_to_del_add; /* whether to add or del vlan? */ uint8_t num_mpls_val_sorted; /* num of elements in mpls_val_sorted */ uint32_t mpls_val_sorted[IPA_EoGRE_MAX_VLAN * IPA_GRE_MAX_S_VLAN]; uint16_t vlan_c[IPA_EoGRE_MAX_VLAN * IPA_GRE_MAX_S_VLAN]; Loading Loading @@ -1825,7 +1825,7 @@ struct singletag_mux_mapping_table_t { uint8_t mux_id; /* flag if 1=>pkt_with_option_hdr 0=>pkt_without_option_hdr */ uint8_t is_v6_options_hdr_present; uint16_t pad0; /*for alignment*/ uint16_t tunnel_id;/* tunnel_id */ uint32_t *tunnel_template_addr; } __packed; Loading @@ -1850,13 +1850,22 @@ struct doubletag_mux_mapping_table_t { /* max number of tunnel to support ie: per PDN two tunnel (2*8)*/ #define MAX_TUNNEL_SUPPORT 16 /* configuration table */ /* @tunnel_protocols_config_table_t: Config tbl for uC * @untagged_mapping_table : Store the untag tunnel info. * @num_of_single_tag_configs : no of active tunnel in single tag config. * @feature_mode: which tunnel feature is enabled. * @tunnel_id: Which tunnel info receive from ipacm. * @is_tunnel_id_to_del: whether tunnel to delete. * @singletag_mux_mapping_table: Store tunnel info for active tunnels. * @num_of_double_tag_configs: no of active tunnel in double tag config. * @doubletag_mux_mapping_table: Store double tag tunnel info. */ struct tunnel_protocols_config_table_t { struct untag_pkt_config_t untagged_mapping_table; uint8_t num_of_single_tag_configs; uint8_t feature_mode; uint16_t pad1; /*for alignment*/ uint32_t pad2; /*for alignment*/ uint16_t tunnel_id; uint32_t is_tunnel_id_to_del; /* table for single tag pkt */ struct singletag_mux_mapping_table_t singletag_mux_mapping_table[MAX_TUNNEL_SUPPORT]; uint8_t num_of_double_tag_configs; Loading Loading
drivers/usb/dwc3/gadget.c +6 −9 Original line number Diff line number Diff line Loading @@ -100,7 +100,7 @@ int dwc3_gadget_set_link_state(struct dwc3 *dwc, enum dwc3_link_state state) * Wait until device controller is ready. Only applies to 1.94a and * later RTL. */ if (dwc->revision >= DWC3_REVISION_194A) { if (dwc3_is_usb3(dwc) && dwc->revision >= DWC3_REVISION_194A) { while (--retries) { reg = dwc3_readl(dwc->regs, DWC3_DSTS); if (reg & DWC3_DSTS_DCNRD) Loading @@ -124,7 +124,7 @@ int dwc3_gadget_set_link_state(struct dwc3 *dwc, enum dwc3_link_state state) * The following code is racy when called from dwc3_gadget_wakeup, * and is not needed, at least on newer versions */ if (dwc->revision >= DWC3_REVISION_194A) if (dwc3_is_usb3(dwc) && dwc->revision >= DWC3_REVISION_194A) return 0; /* wait for a change in DSTS */ Loading Loading @@ -2116,13 +2116,10 @@ static int dwc3_gadget_remote_wakeup(struct dwc3 *dwc) goto out; } /* Recent versions do this automatically */ if (dwc->revision < DWC3_REVISION_194A) { /* write zeroes to Link Change Request */ reg = dwc3_readl(dwc->regs, DWC3_DCTL); reg &= ~DWC3_DCTL_ULSTCHNGREQ_MASK; dwc3_writel(dwc->regs, DWC3_DCTL, reg); } spin_unlock_irqrestore(&dwc->lock, flags); enable_irq(dwc->irq); Loading
drivers/usb/gadget/function/f_cdev.c +14 −1 Original line number Diff line number Diff line Loading @@ -732,13 +732,26 @@ static int usb_cser_notify(struct f_cdev *port, u8 type, u16 value, static int port_notify_serial_state(struct cserial *cser) { struct f_cdev *port = cser_to_port(cser); int status; int status, ret; unsigned long flags; struct usb_composite_dev *cdev = port->port_usb.func.config->cdev; struct usb_function *func = &cser->func; struct usb_gadget *gadget; if (port->is_suspended) { gadget = cser->func.config->cdev->gadget; port->pending_state_notify = true; pr_debug("%s: port is suspended\n", __func__); if (usb_cser_get_remote_wakeup_capable(func, gadget)) { if (gadget->speed >= USB_SPEED_SUPER && port->func_is_suspended) { ret = usb_func_wakeup(func); port->func_wakeup_pending = (ret == -EAGAIN) ? true : false; } else { ret = usb_gadget_wakeup(gadget); } } else { pr_debug("%s remote-wakeup not capable\n", __func__); } return 0; } Loading
include/uapi/linux/msm_ipa.h +16 −7 Original line number Diff line number Diff line Loading @@ -1731,7 +1731,7 @@ struct IpaDscpVlanPcpMap_t { uint8_t num_vlan; /* indicate how many vlans valid vlan above */ uint8_t num_s_vlan; /* indicate how many vlans valid in s_vlan below */ uint8_t dscp_opt; /* indicates if dscp is required or optional */ uint8_t pad1; /* for alignment */ uint8_t tunnel_id; /* tunnel id */ /* * The same lookup scheme, using vlan[] above, is used for * generating the first index of mpls below; and in addition, Loading @@ -1750,8 +1750,8 @@ struct IpaDscpVlanPcpMap_t { * mpls_val_sorted is in ascending order, by mpls label values in mpls array * vlan_c and vlan_s are vlan id values that are corresponding to the mpls label */ uint16_t pad2; /* for alignment */ uint8_t pad3; /* for alignment */ uint16_t del_add_vlan_id; /* vlan id to add or del */ uint8_t is_vlan_to_del_add; /* whether to add or del vlan? */ uint8_t num_mpls_val_sorted; /* num of elements in mpls_val_sorted */ uint32_t mpls_val_sorted[IPA_EoGRE_MAX_VLAN * IPA_GRE_MAX_S_VLAN]; uint16_t vlan_c[IPA_EoGRE_MAX_VLAN * IPA_GRE_MAX_S_VLAN]; Loading Loading @@ -1825,7 +1825,7 @@ struct singletag_mux_mapping_table_t { uint8_t mux_id; /* flag if 1=>pkt_with_option_hdr 0=>pkt_without_option_hdr */ uint8_t is_v6_options_hdr_present; uint16_t pad0; /*for alignment*/ uint16_t tunnel_id;/* tunnel_id */ uint32_t *tunnel_template_addr; } __packed; Loading @@ -1850,13 +1850,22 @@ struct doubletag_mux_mapping_table_t { /* max number of tunnel to support ie: per PDN two tunnel (2*8)*/ #define MAX_TUNNEL_SUPPORT 16 /* configuration table */ /* @tunnel_protocols_config_table_t: Config tbl for uC * @untagged_mapping_table : Store the untag tunnel info. * @num_of_single_tag_configs : no of active tunnel in single tag config. * @feature_mode: which tunnel feature is enabled. * @tunnel_id: Which tunnel info receive from ipacm. * @is_tunnel_id_to_del: whether tunnel to delete. * @singletag_mux_mapping_table: Store tunnel info for active tunnels. * @num_of_double_tag_configs: no of active tunnel in double tag config. * @doubletag_mux_mapping_table: Store double tag tunnel info. */ struct tunnel_protocols_config_table_t { struct untag_pkt_config_t untagged_mapping_table; uint8_t num_of_single_tag_configs; uint8_t feature_mode; uint16_t pad1; /*for alignment*/ uint32_t pad2; /*for alignment*/ uint16_t tunnel_id; uint32_t is_tunnel_id_to_del; /* table for single tag pkt */ struct singletag_mux_mapping_table_t singletag_mux_mapping_table[MAX_TUNNEL_SUPPORT]; uint8_t num_of_double_tag_configs; Loading