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

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

Merge "mhi: core: Add checks for bhi and bhie offsets"

parents c2c6dc74 7105034e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -124,6 +124,7 @@ static int mhi_init_pci_dev(struct mhi_controller *mhi_cntrl)
		MHI_CNTRL_ERR("Error ioremap region\n");
		goto error_ioremap;
	}
	mhi_cntrl->len = len;

	ret = pci_alloc_irq_vectors(pci_dev, mhi_cntrl->msi_required,
				    mhi_cntrl->msi_required, PCI_IRQ_MSI);
+12 −0
Original line number Diff line number Diff line
@@ -947,6 +947,12 @@ int mhi_async_power_up(struct mhi_controller *mhi_cntrl)
		goto error_bhi_offset;
	}

	if (val >= mhi_cntrl->len) {
		write_unlock_irq(&mhi_cntrl->pm_lock);
		MHI_ERR("Invalid bhi offset:%x\n", val);
		goto error_bhi_offset;
	}

	mhi_cntrl->bhi = mhi_cntrl->regs + val;

	/* setup bhie offset if not set */
@@ -958,6 +964,12 @@ int mhi_async_power_up(struct mhi_controller *mhi_cntrl)
			goto error_bhi_offset;
		}

		if (val >= mhi_cntrl->len) {
			write_unlock_irq(&mhi_cntrl->pm_lock);
			MHI_ERR("Invalid bhie offset:%x\n", val);
			goto error_bhi_offset;
		}

		mhi_cntrl->bhie = mhi_cntrl->regs + val;
	}

+4 −2
Original line number Diff line number Diff line
@@ -4288,8 +4288,10 @@ static int cnss_pci_register_mhi(struct cnss_pci_data *pci_priv)
	mhi_ctrl->fw_image_fallback = plat_priv->fw_fallback_name;

	mhi_ctrl->regs = pci_priv->bar;
	cnss_pr_dbg("BAR starts at %pa\n",
		    &pci_resource_start(pci_priv->pci_dev, PCI_BAR_NUM));
	mhi_ctrl->len = pci_resource_len(pci_priv->pci_dev, PCI_BAR_NUM);
	cnss_pr_dbg("BAR starts at %pa, len-%x\n",
		    &pci_resource_start(pci_priv->pci_dev, PCI_BAR_NUM),
		    mhi_ctrl->len);

	ret = cnss_pci_get_mhi_msi(pci_priv);
	if (ret) {
+1 −0
Original line number Diff line number Diff line
@@ -260,6 +260,7 @@ struct mhi_controller {

	/* mmio base */
	phys_addr_t base_addr;
	unsigned int len;
	void __iomem *regs;
	void __iomem *bhi;
	void __iomem *bhie;