From: David Cohen <david.a.cohen@linux.intel.com>
To: Alexander Shiyan <shc_work@mail.ru>
Cc: gregkh@linuxfoundation.org, jslaby@suse.cz, ning.li@intel.com,
ivan.gorinov@intel.com, linux-kernel@vger.kernel.org,
linux-serial@vger.kernel.org
Subject: Re: [PATCH 2/2] mrst_max3110: fix SPI UART interrupt parameters
Date: Wed, 23 Oct 2013 11:10:48 -0700 [thread overview]
Message-ID: <52681128.2010404@linux.intel.com> (raw)
In-Reply-To: <1382509666.28248007@f107.i.mail.ru>
On 10/22/2013 11:27 PM, Alexander Shiyan wrote:
>> On 10/22/2013 01:30 PM, David Cohen wrote:
>>> On 10/22/2013 12:46 PM, Alexander Shiyan wrote:
>>>>> The change in the max3110 driver makes the IRQ handling threaded, now
>>>>> the handler is called only once per received character. Without that
>>>>> change, we had many (more than 100) interrupts per one received
>>>>> character.
>>>>>
>>>>> Unfortunately, SFI interface does not support IRQ polarity and
>>>>> triggering modes, so we have to keep the hacks as hard-coded device
>>>>> names and IRQ numbers until we switch to ACPI.
>>>>>
>>>>> Edge-triggered IRQ still supported to keep old platforms working.
>>>>> Use platform data to pass the irq mode argument.
>>>>>
>>>>> Signed-off-by: Ivan Gorinov <ivan.gorinov@intel.com>
>>>>> Signed-off-by: Li Ning <ning.li@intel.com>
>>>>> Signed-off-by: David Cohen <david.a.cohen@linux.intel.com>
>>>> ...
>>>>> +++ b/include/linux/serial_max3110.h
>>>>> @@ -0,0 +1,16 @@
>>>>> +#ifndef _LINUX_SERIAL_MAX3110_H
>>>>> +#define _LINUX_SERIAL_MAX3110_H
>>>>> +
>>>>> +/**
>>>>> + * struct plat_max3110 - MAX3110 SPI UART platform data
>>>>> + * @irq_edge_trigger: if IRQ is edge triggered
>>>>> + *
>>>>> + * You should use this structure in your machine description to specify
>>>>> + * how the MAX3110 is connected.
>>>>> + *
>>>>> + */
>>>>> +struct plat_max3110 {
>>>>> + int irq_edge_triggered;
>>>>> +};
>>>>> +
>>>>> +#endif
>>>>> --
>>>>
>>>> Is just resource->flags for IRQ can be reused for handle such case?
>>>
>>> I believe your suggestion makes perfect sense. I'll rework it.
>>
>> Looks like isp_device has no place for 'resource'. In this case pdata
>> seems to be the way to go here.
>> Or maybe there's a better way to recommend?
>
> What do you mean by the isp_device?
Allow me to correct my typo: I meant spi_device (this is a spi
device/driver).
>
> My idea is always use threaded irq and passing flags into request.
> Like as:
> unsigned long flags = res->flags & IORESOURCE_BITS;
> ...
> request_threaded_irq(max->irq, serial_m3110_irq, IRQF_ONESHOT | flags, "max3110", max);
Oh, maybe we were talking about different things afterall :)
The reason this struct plat_max3110 was created is to allow platform
code (located under arch/x86/platform/intel-mid/device_libs/) to define
the irq edge type.
When I saw your comment I though you were referring to struct resource
(which has IORESOURCE_IRQ_* flags). But unlike platform_device,
spi_device has no struct resource * to replace the need of struct
plat_max3110.
OTOH your suggestion can replace this piece of code:
@@ -68,6 +69,7 @@ struct uart_max3110 {
u8 clock;
u8 parity, word_7bits;
u16 irq;
+ u16 irq_edge_triggered;
unsigned long uart_flags;
I'll check again the patch and possibly make the changes.
Thanks,
David Cohen
next prev parent reply other threads:[~2013-10-23 18:06 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-22 19:42 [PATCH 1/2] mrst_max3110: fix unbalanced IRQ issue during resume David Cohen
2013-10-22 19:42 ` [PATCH 2/2] mrst_max3110: fix SPI UART interrupt parameters David Cohen
2013-10-22 19:46 ` Alexander Shiyan
2013-10-22 19:46 ` Alexander Shiyan
2013-10-22 20:30 ` David Cohen
2013-10-22 23:02 ` David Cohen
2013-10-23 6:27 ` Alexander Shiyan
2013-10-23 6:27 ` Alexander Shiyan
2013-10-23 18:10 ` David Cohen [this message]
2013-10-23 18:21 ` Felipe Balbi
2013-10-23 18:21 ` Felipe Balbi
2013-10-23 18:23 ` Felipe Balbi
2013-10-23 18:23 ` Felipe Balbi
2013-10-23 18:38 ` David Cohen
2013-10-23 18:33 ` David Cohen
2013-10-23 18:33 ` Felipe Balbi
2013-10-23 18:33 ` Felipe Balbi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52681128.2010404@linux.intel.com \
--to=david.a.cohen@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=ivan.gorinov@intel.com \
--cc=jslaby@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=ning.li@intel.com \
--cc=shc_work@mail.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.