Messages in this thread | | | Date | Thu, 25 Oct 2012 15:34:08 +0530 | Subject | Re: [PATCH V2 5/6] Thermal: Add ST-Ericsson DB8500 thermal dirver. | From | Viresh Kumar <> |
| |
On 25 October 2012 15:26, Hongbo Zhang <hongbo.zhang@linaro.org> wrote:
> Verish, see the codes in include/linux/interrupt.h:
s/verish/viresh :)
> static inline int __must_check > devm_request_irq(struct device *dev, unsigned int irq, irq_handler_t handler, > unsigned long irqflags, const char *devname, void *dev_id) > { > return devm_request_threaded_irq(dev, irq, handler, NULL, irqflags, > devname, dev_id); > } > devm_request_irq is devm_request_threaded_irq
See carefully what's happening here.
All interrupt types have a common irq_desc type in kernel. This has few pointers for every interrupt line: - List of handlers to call from interrupt context - handlers to call from process context via a thread.
So, the internal implementation is exactly same... The only difference is which pointer should be called in.
the devm_request_threaded_irq() called from devm_request_irq() has following params handler: For irq to be called from interrupt context (param 3) NULL: For irq to be called from process context. (param 4)
So, that means normal request_irq type only.
In your case, you have passed interrupt context pointer as NULL and process context one as handler. So that's an issue.
-- viresh
| |