[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