Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7798d6e3 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge 02194073 on remote branch

Change-Id: I39bd5105b6cfd91dfa812dc2ba1bd77a2a5dffd5
parents e4804c7d 02194073
Loading
Loading
Loading
Loading
+6 −9
Original line number Diff line number Diff line
@@ -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)
@@ -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 */
@@ -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);
+14 −1
Original line number Diff line number Diff line
@@ -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;
	}

+16 −7
Original line number Diff line number Diff line
@@ -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,
@@ -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];
@@ -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;

@@ -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;