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

Commit 2088ecba authored by Suman Anna's avatar Suman Anna Committed by Joerg Roedel
Browse files

iommu/omap: Remove refcount field from omap_iommu object



The refcount field in omap_iommu object is primarily used to check
if an IOMMU device has already been enabled, but this is already
implicit in the omap_iommu_attach_dev() which ensures that only
a single device can attach to an IOMMU. This field is redundant,
and so has been cleaned up.

Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent f114040e
Loading
Loading
Loading
Loading
+3 −12
Original line number Diff line number Diff line
@@ -819,8 +819,9 @@ static irqreturn_t iommu_fault_handler(int irq, void *data)
	u32 *iopgd, *iopte;
	struct omap_iommu *obj = data;
	struct iommu_domain *domain = obj->domain;
	struct omap_iommu_domain *omap_domain = domain->priv;

	if (!obj->refcount)
	if (!omap_domain->iommu_dev)
		return IRQ_NONE;

	errs = iommu_report_fault(obj, &da);
@@ -880,13 +881,6 @@ static struct omap_iommu *omap_iommu_attach(const char *name, u32 *iopgd)

	spin_lock(&obj->iommu_lock);

	/* an iommu device can only be attached once */
	if (++obj->refcount > 1) {
		dev_err(dev, "%s: already attached!\n", obj->name);
		err = -EBUSY;
		goto err_enable;
	}

	obj->iopgd = iopgd;
	err = iommu_enable(obj);
	if (err)
@@ -899,7 +893,6 @@ static struct omap_iommu *omap_iommu_attach(const char *name, u32 *iopgd)
	return obj;

err_enable:
	obj->refcount--;
	spin_unlock(&obj->iommu_lock);
	return ERR_PTR(err);
}
@@ -915,9 +908,7 @@ static void omap_iommu_detach(struct omap_iommu *obj)

	spin_lock(&obj->iommu_lock);

	if (--obj->refcount == 0)
	iommu_disable(obj);

	obj->iopgd = NULL;

	spin_unlock(&obj->iommu_lock);
+0 −1
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ struct omap_iommu {
	void		*isr_priv;
	struct iommu_domain *domain;

	unsigned int	refcount;
	spinlock_t	iommu_lock;	/* global for this whole object */

	/*