Add the interrupt service routine for apss tgu to handle tgu interrupt. Change-Id: Ic0128e41ed7a8e837ebab12a28c744af85109bda Signed-off-by: Raghavendra Kakarla <rkakarla@codeaurora.org>tirimbino
parent
681f798f41
commit
94ebb327f5
@ -0,0 +1,58 @@ |
||||
/* Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||
* |
||||
* This program is free software; you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License version 2 and |
||||
* only version 2 as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
*/ |
||||
|
||||
#include <linux/module.h> |
||||
#include <linux/of.h> |
||||
#include <linux/platform_device.h> |
||||
#include <linux/interrupt.h> |
||||
#include <linux/kernel.h> |
||||
#include <linux/irq.h> |
||||
#include <linux/of_irq.h> |
||||
#define CREATE_TRACE_POINTS |
||||
#include "trace/events/tgu.h" |
||||
#include "apss_tgu.h" |
||||
|
||||
static irqreturn_t tgu_irq_handler(int irq, void *data) |
||||
{ |
||||
trace_tgu_interrupt(irq); |
||||
return IRQ_HANDLED; |
||||
} |
||||
|
||||
|
||||
int register_interrupt_handler(struct device_node *node) |
||||
{ |
||||
int irq, ret, i, n; |
||||
|
||||
n = of_irq_count(node); |
||||
pr_debug("number of irqs == %d\n", n); |
||||
|
||||
for (i = 0; i < n; i++) { |
||||
irq = of_irq_get(node, i); |
||||
if (irq < 0) { |
||||
pr_err("Invalid IRQ for error fatal %u\n", irq); |
||||
return irq; |
||||
} |
||||
|
||||
ret = request_irq(irq, tgu_irq_handler, |
||||
IRQF_TRIGGER_RISING, "apps-tgu", NULL); |
||||
if (ret < 0) { |
||||
pr_err("Unable to register IRQ handler %d", irq); |
||||
continue; |
||||
} |
||||
|
||||
ret = irq_set_irq_wake(irq, true); |
||||
if (ret < 0) |
||||
pr_err("Unable to set as wakeup irq %d\n", irq); |
||||
|
||||
} |
||||
return 0; |
||||
} |
@ -0,0 +1,17 @@ |
||||
/* Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||
* |
||||
* This program is free software; you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License version 2 and |
||||
* only version 2 as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
*/ |
||||
|
||||
#ifndef __QCOM_APSS_TGU_H__ |
||||
#define __QCOM_APSS_TGU_H__ |
||||
|
||||
int register_interrupt_handler(struct device_node *node); |
||||
#endif /* __QCOM_APSS_TGU_H__ */ |
@ -0,0 +1,40 @@ |
||||
/* Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||
* |
||||
* This program is free software; you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License version 2 and |
||||
* only version 2 as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
*/ |
||||
|
||||
#undef TRACE_SYSTEM |
||||
#define TRACE_SYSTEM tgu |
||||
|
||||
#if !defined(_TRACE_TGU_) || defined(TRACE_HEADER_MULTI_READ) |
||||
#define _TRACE_TGU_H_ |
||||
|
||||
#include <linux/tracepoint.h> |
||||
|
||||
TRACE_EVENT(tgu_interrupt, |
||||
|
||||
TP_PROTO(uint32_t irqs), |
||||
|
||||
TP_ARGS(irqs), |
||||
|
||||
TP_STRUCT__entry( |
||||
__field(uint32_t, irqs) |
||||
), |
||||
|
||||
TP_fast_assign( |
||||
__entry->irqs = irqs; |
||||
), |
||||
|
||||
TP_printk("irq:%u ", __entry->irqs) |
||||
); |
||||
|
||||
#endif |
||||
#define TRACE_INCLUDE_FILE tgu |
||||
#include <trace/define_trace.h> |
Loading…
Reference in new issue