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

Commit e2229363 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "dwc3-msm: Map IPA GSI channel doorbell register for different UDC core"

parents 95973ed7 c050533c
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -1001,11 +1001,20 @@ static void gsi_store_ringbase_dbl_info(struct usb_ep *ep,
		lower_32_bits(dwc3_trb_dma_offset(dep, &dep->trb_pool[0])),
		upper_32_bits(dwc3_trb_dma_offset(dep, &dep->trb_pool[0])));

	if (request->mapped_db_reg_phs_addr_lsb &&
			dwc->sysdev != request->dev) {
		dma_unmap_resource(request->dev,
			request->mapped_db_reg_phs_addr_lsb,
			PAGE_SIZE, DMA_BIDIRECTIONAL, 0);
		request->mapped_db_reg_phs_addr_lsb = 0;
	}

	if (!request->mapped_db_reg_phs_addr_lsb) {
		request->mapped_db_reg_phs_addr_lsb =
			dma_map_resource(dwc->sysdev,
				(phys_addr_t)request->db_reg_phs_addr_lsb,
				PAGE_SIZE, DMA_BIDIRECTIONAL, 0);
		request->dev = dwc->sysdev;
		if (dma_mapping_error(dwc->sysdev,
				request->mapped_db_reg_phs_addr_lsb))
			dev_err(mdwc->dev, "mapping error for db_reg_phs_addr_lsb\n");
@@ -3974,10 +3983,10 @@ static int dwc3_msm_remove(struct platform_device *pdev)

	if (mdwc->hs_phy)
		mdwc->hs_phy->flags &= ~PHY_HOST_MODE;
	dbg_event(0xFF, "Remov put", 0);
	platform_device_put(mdwc->dwc3);
	of_platform_depopulate(&pdev->dev);

	dbg_event(0xFF, "Remov put", 0);
	pm_runtime_disable(mdwc->dev);
	pm_runtime_barrier(mdwc->dev);
	pm_runtime_put_sync(mdwc->dev);
+6 −1
Original line number Diff line number Diff line
@@ -470,7 +470,7 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned cmd,
		ret = -ETIMEDOUT;
		dev_err(dwc->dev, "%s command timeout for %s\n",
			dwc3_gadget_ep_cmd_string(cmd), dep->name);
		if (!(cmd & DWC3_DEPCMD_ENDTRANSFER)) {
		if (DWC3_DEPCMD_CMD(cmd) != DWC3_DEPCMD_ENDTRANSFER) {
			dwc->ep_cmd_timeout_cnt++;
			dwc3_notify_event(dwc,
				DWC3_CONTROLLER_RESTART_USB_SESSION, 0);
@@ -1450,6 +1450,11 @@ static int __dwc3_gadget_kick_transfer(struct dwc3_ep *dep)
	if (!dwc3_calc_trbs_left(dep))
		return 0;

	if (dep->flags & DWC3_EP_END_TRANSFER_PENDING) {
		dbg_event(dep->number, "ENDXFER Pending", dep->flags);
		return -EBUSY;
	}

	starting = !(dep->flags & DWC3_EP_TRANSFER_STARTED);

	dwc3_prepare_trbs(dep);
+6 −0
Original line number Diff line number Diff line
@@ -1034,6 +1034,12 @@ int xhci_suspend(struct xhci_hcd *xhci, bool do_wakeup)
	if (xhci_handshake(&xhci->op_regs->status,
		      STS_HALT, STS_HALT, delay)) {
		xhci_warn(xhci, "WARN: xHC CMD_RUN timeout\n");
		/* Set the HW_ACCESSIBLE so that any pending interrupts are
		 * served.
		 */
		set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
		set_bit(HCD_FLAG_HW_ACCESSIBLE, &xhci->shared_hcd->flags);
		xhci_hc_died(xhci);
		spin_unlock_irq(&xhci->lock);
		return -ETIMEDOUT;
	}
+4 −0
Original line number Diff line number Diff line
@@ -84,6 +84,9 @@ enum gsi_ep_op {
 * @db_reg_phs_addr_lsb: IPA channel doorbell register's physical address LSB
 * @mapped_db_reg_phs_addr_lsb: doorbell LSB IOVA address mapped with IOMMU
 * @db_reg_phs_addr_msb: IPA channel doorbell register's physical address MSB
 * @sgt_trb_xfer_ring: USB TRB ring related sgtable entries
 * @sgt_data_buff: Data buffer related sgtable entries
 * @dev: pointer to the DMA-capable dwc device
 */
struct usb_gsi_request {
	void *buf_base_addr;
@@ -95,6 +98,7 @@ struct usb_gsi_request {
	u32 db_reg_phs_addr_msb;
	struct sg_table sgt_trb_xfer_ring;
	struct sg_table sgt_data_buff;
	struct device *dev;
};

/*