[arm-platforms:irq/irqchip-next 15/16] drivers/irqchip/irq-wpcm450-aic.c:64:35: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'wpcm450_aic_handle_irq'
kernel test robot
lkp at intel.com
Wed Apr 7 23:03:45 BST 2021
tree: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git irq/irqchip-next
head: ea4aeaa5c88906eb3ca3d7d3d17a45605d2dd0de
commit: fead4dd496631707549f414b4059afb86ea8fb80 [15/16] irqchip: Add driver for WPCM450 interrupt controller
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/commit/?id=fead4dd496631707549f414b4059afb86ea8fb80
git remote add arm-platforms https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
git fetch --no-tags arm-platforms irq/irqchip-next
git checkout fead4dd496631707549f414b4059afb86ea8fb80
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>
All errors (new ones prefixed by >>):
>> drivers/irqchip/irq-wpcm450-aic.c:64:35: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'wpcm450_aic_handle_irq'
64 | static void __exception_irq_entry wpcm450_aic_handle_irq(struct pt_regs *regs)
| ^~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/of_irq.h:7,
from drivers/irqchip/irq-wpcm450-aic.c:6:
drivers/irqchip/irq-wpcm450-aic.c: In function 'wpcm450_aic_of_init':
>> drivers/irqchip/irq-wpcm450-aic.c:154:17: error: 'wpcm450_aic_handle_irq' undeclared (first use in this function); did you mean 'wpcm450_aic_eoi'?
154 | set_handle_irq(wpcm450_aic_handle_irq);
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/irq.h:1263:9: note: in definition of macro 'set_handle_irq'
1263 | (void)handle_irq; \
| ^~~~~~~~~~
drivers/irqchip/irq-wpcm450-aic.c:154:17: note: each undeclared identifier is reported only once for each function it appears in
154 | set_handle_irq(wpcm450_aic_handle_irq);
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/irq.h:1263:9: note: in definition of macro 'set_handle_irq'
1263 | (void)handle_irq; \
| ^~~~~~~~~~
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for FRAME_POINTER
Depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
Selected by
- FAULT_INJECTION_STACKTRACE_FILTER && FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT && !X86_64 && !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
vim +64 drivers/irqchip/irq-wpcm450-aic.c
63
> 64 static void __exception_irq_entry wpcm450_aic_handle_irq(struct pt_regs *regs)
65 {
66 int hwirq;
67
68 /* Determine the interrupt source */
69 /* Read IPER to signal that nIRQ can be de-asserted */
70 hwirq = readl(aic->regs + AIC_IPER) / 4;
71
72 handle_domain_irq(aic->domain, hwirq, regs);
73 }
74
75 static void wpcm450_aic_eoi(struct irq_data *d)
76 {
77 /* Signal end-of-service */
78 writel(0, aic->regs + AIC_EOSCR);
79 }
80
81 static void wpcm450_aic_mask(struct irq_data *d)
82 {
83 unsigned int mask = BIT(d->hwirq);
84
85 /* Disable (mask) the interrupt */
86 writel(mask, aic->regs + AIC_MDCR);
87 }
88
89 static void wpcm450_aic_unmask(struct irq_data *d)
90 {
91 unsigned int mask = BIT(d->hwirq);
92
93 /* Enable (unmask) the interrupt */
94 writel(mask, aic->regs + AIC_MECR);
95 }
96
97 static int wpcm450_aic_set_type(struct irq_data *d, unsigned int flow_type)
98 {
99 /*
100 * The hardware supports high/low level, as well as rising/falling edge
101 * modes, and the DT binding accommodates for that, but as long as
102 * other modes than high level mode are not used and can't be tested,
103 * they are rejected in this driver.
104 */
105 if ((flow_type & IRQ_TYPE_SENSE_MASK) != IRQ_TYPE_LEVEL_HIGH)
106 return -EINVAL;
107
108 return 0;
109 }
110
111 static struct irq_chip wpcm450_aic_chip = {
112 .name = "wpcm450-aic",
113 .irq_eoi = wpcm450_aic_eoi,
114 .irq_mask = wpcm450_aic_mask,
115 .irq_unmask = wpcm450_aic_unmask,
116 .irq_set_type = wpcm450_aic_set_type,
117 };
118
119 static int wpcm450_aic_map(struct irq_domain *d, unsigned int irq, irq_hw_number_t hwirq)
120 {
121 if (hwirq >= AIC_NUM_IRQS)
122 return -EPERM;
123
124 irq_set_chip_and_handler(irq, &wpcm450_aic_chip, handle_fasteoi_irq);
125 irq_set_chip_data(irq, aic);
126 irq_set_probe(irq);
127
128 return 0;
129 }
130
131 static const struct irq_domain_ops wpcm450_aic_ops = {
132 .map = wpcm450_aic_map,
133 .xlate = irq_domain_xlate_twocell,
134 };
135
136 static int __init wpcm450_aic_of_init(struct device_node *node,
137 struct device_node *parent)
138 {
139 if (parent)
140 return -EINVAL;
141
142 aic = kzalloc(sizeof(*aic), GFP_KERNEL);
143 if (!aic)
144 return -ENOMEM;
145
146 aic->regs = of_iomap(node, 0);
147 if (!aic->regs) {
148 pr_err("Failed to map WPCM450 AIC registers\n");
149 return -ENOMEM;
150 }
151
152 wpcm450_aic_init_hw();
153
> 154 set_handle_irq(wpcm450_aic_handle_irq);
155
156 aic->domain = irq_domain_add_linear(node, AIC_NUM_IRQS, &wpcm450_aic_ops, aic);
157
158 return 0;
159 }
160
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 63863 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20210408/ef9ee608/attachment-0001.gz>
More information about the linux-arm-kernel
mailing list