[PATCH v7 1/3] MTD : add the common code for GPMI-NFC controller driver

Huang Shijie b32955 at freescale.com
Wed Jun 29 06:46:46 EDT 2011


Hi Wolfram:
>>> +static int __devinit acquire_interrupt(struct gpmi_nfc_data *this,
>>> +			const char *resource_name,
>>> +			irq_handler_t interrupt_handler, int *lno, int *hno)
>>> +{
>>> +	struct platform_device *pdev = this->pdev;
>>> +	struct resource *r;
>>> +	int err;
>>> +
>>> +	r = platform_get_resource_byname(pdev, IORESOURCE_IRQ, resource_name);
>>> +	if (!r) {
>>> +		pr_info("Can't get resource for %s\n", resource_name);
>>> +		return -ENXIO;
>>> +	}
>>> +
>>> +	BUG_ON(r->start != r->end);
>>> +	err = request_irq(r->start, interrupt_handler, 0, resource_name, this);
>>> +	if (err) {
>>> +		pr_info("Can't own %s\n", resource_name);
>>> +		return err;
>>> +	}
>>> +
>>> +	*lno = r->start;
>>> +	*hno = r->end;
>>> +	return 0;
>>> +}
>> This will not work if max_chip_count > 1, because the irq is already
>> taken. (Also, I am not convinced of the resource handling, but I need to
> Doh, I wrote that below the wrong codepath. This is another irq here.
> Still, the problem exists: When a second channel GPMI channel is
> requested, dmaengine will return -EBUSY, because the DMAIRQ is already
> taken.
>
Yes, we should change the DMA code, it is a DMA bug.
I ever submitted a patch about the issue:
http://patchwork.ozlabs.org/patch/87145/

Best Regards
Huang Shijie




> Regards,
>
>    Wolfram
>





More information about the linux-mtd mailing list