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

Commit 5fc63dfb authored by Paulius Zaleckas's avatar Paulius Zaleckas Committed by Pierre Ossman
Browse files

imxmmc: fix platform resources



Fixup platform resources handling.

Signed-off-by: default avatarPaulius Zaleckas <paulius.zaleckas@teltonika.lt>
Acked-by: default avatarPavel Pisa <pisa@cmp.felk.cvut.cz>
Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
parent 322069c9
Loading
Loading
Loading
Loading
+6 −27
Original line number Diff line number Diff line
@@ -901,26 +901,6 @@ static const struct mmc_host_ops imxmci_ops = {
	.get_ro		= imxmci_get_ro,
};

static struct resource *platform_device_resource(struct platform_device *dev, unsigned int mask, int nr)
{
	int i;

	for (i = 0; i < dev->num_resources; i++)
		if (dev->resource[i].flags == mask && nr-- == 0)
			return &dev->resource[i];
	return NULL;
}

static int platform_device_irq(struct platform_device *dev, int nr)
{
	int i;

	for (i = 0; i < dev->num_resources; i++)
		if (dev->resource[i].flags == IORESOURCE_IRQ && nr-- == 0)
			return dev->resource[i].start;
	return NO_IRQ;
}

static void imxmci_check_status(unsigned long data)
{
	struct imxmci_host *host = (struct imxmci_host *)data;
@@ -956,13 +936,12 @@ static int imxmci_probe(struct platform_device *pdev)

	printk(KERN_INFO "i.MX mmc driver\n");

	r = platform_device_resource(pdev, IORESOURCE_MEM, 0);
	irq = platform_device_irq(pdev, 0);
	if (!r || irq == NO_IRQ)
	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	irq = platform_get_irq(pdev, 0);
	if (!r || irq < 0)
		return -ENXIO;

	r = request_mem_region(r->start, 0x100, "IMXMCI");
	if (!r)
	if (!request_mem_region(r->start, 0x100, pdev->name))
		return -EBUSY;

	mmc = mmc_alloc_host(sizeof(struct imxmci_host), &pdev->dev);
@@ -1067,7 +1046,7 @@ out:
	}
	if (mmc)
		mmc_free_host(mmc);
	release_resource(r);
	release_mem_region(r->start, 0x100);
	return ret;
}

@@ -1096,7 +1075,7 @@ static int imxmci_remove(struct platform_device *pdev)
		clk_disable(host->clk);
		clk_put(host->clk);

		release_resource(host->res);
		release_mem_region(host->res->start, 0x100);

		mmc_free_host(mmc);
	}