drivers/mfd/pm8xxx-irq.c:131:4: error: implicit declaration of function 'generic_handle_irq'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Abhijeet,

FYI, kernel build failed on

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux master
head:   de55eb1d60d2ed0f1ba5e13226d91b3bfbe1c108
commit: c013f0a56c56b88ac63c4037f2dfaaf2422fa863 mfd: Add pm8xxx irq support
date:   1 year, 10 months ago
config: make ARCH=s390 allmodconfig

All error/warnings:

   drivers/mfd/pm8xxx-irq.c: In function 'pm8xxx_irq_block_handler':
>> drivers/mfd/pm8xxx-irq.c:131:4: error: implicit declaration of function 'generic_handle_irq' [-Werror=implicit-function-declaration]
   drivers/mfd/pm8xxx-irq.c: At top level:
   drivers/mfd/pm8xxx-irq.c:160:57: warning: 'struct irq_desc' declared inside parameter list [enabled by default]
   drivers/mfd/pm8xxx-irq.c:160:57: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
   drivers/mfd/pm8xxx-irq.c: In function 'pm8xxx_irq_handler':
>> drivers/mfd/pm8xxx-irq.c:162:9: error: implicit declaration of function 'irq_desc_get_handler_data' [-Werror=implicit-function-declaration]
>> drivers/mfd/pm8xxx-irq.c:162:29: warning: initialization makes pointer from integer without a cast [enabled by default]
>> drivers/mfd/pm8xxx-irq.c:163:9: error: implicit declaration of function 'irq_desc_get_chip' [-Werror=implicit-function-declaration]
>> drivers/mfd/pm8xxx-irq.c:163:30: warning: initialization makes pointer from integer without a cast [enabled by default]
   drivers/mfd/pm8xxx-irq.c:181:10: error: dereferencing pointer to incomplete type
   drivers/mfd/pm8xxx-irq.c:181:25: error: dereferencing pointer to incomplete type
   drivers/mfd/pm8xxx-irq.c: At top level:
   drivers/mfd/pm8xxx-irq.c:184:40: warning: 'struct irq_data' declared inside parameter list [enabled by default]
   drivers/mfd/pm8xxx-irq.c: In function 'pm8xxx_irq_mask_ack':
>> drivers/mfd/pm8xxx-irq.c:186:9: error: implicit declaration of function 'irq_data_get_irq_chip_data' [-Werror=implicit-function-declaration]
>> drivers/mfd/pm8xxx-irq.c:186:29: warning: initialization makes pointer from integer without a cast [enabled by default]
   drivers/mfd/pm8xxx-irq.c:187:24: error: dereferencing pointer to incomplete type
   drivers/mfd/pm8xxx-irq.c: At top level:
   drivers/mfd/pm8xxx-irq.c:199:38: warning: 'struct irq_data' declared inside parameter list [enabled by default]
   drivers/mfd/pm8xxx-irq.c: In function 'pm8xxx_irq_unmask':
>> drivers/mfd/pm8xxx-irq.c:201:29: warning: initialization makes pointer from integer without a cast [enabled by default]
   drivers/mfd/pm8xxx-irq.c:202:24: error: dereferencing pointer to incomplete type
   drivers/mfd/pm8xxx-irq.c: At top level:
   drivers/mfd/pm8xxx-irq.c:214:39: warning: 'struct irq_data' declared inside parameter list [enabled by default]
   drivers/mfd/pm8xxx-irq.c: In function 'pm8xxx_irq_set_type':
>> drivers/mfd/pm8xxx-irq.c:216:29: warning: initialization makes pointer from integer without a cast [enabled by default]
   drivers/mfd/pm8xxx-irq.c:217:24: error: dereferencing pointer to incomplete type
   drivers/mfd/pm8xxx-irq.c: At top level:
   drivers/mfd/pm8xxx-irq.c:245:39: warning: 'struct irq_data' declared inside parameter list [enabled by default]
   drivers/mfd/pm8xxx-irq.c:250:15: error: variable 'pm8xxx_irq_chip' has initializer but incomplete type
   drivers/mfd/pm8xxx-irq.c:251:2: error: unknown field 'name' specified in initializer
   drivers/mfd/pm8xxx-irq.c:251:2: warning: excess elements in struct initializer [enabled by default]
   drivers/mfd/pm8xxx-irq.c:251:2: warning: (near initialization for 'pm8xxx_irq_chip') [enabled by default]
   drivers/mfd/pm8xxx-irq.c:252:2: error: unknown field 'irq_mask_ack' specified in initializer
   drivers/mfd/pm8xxx-irq.c:252:2: warning: excess elements in struct initializer [enabled by default]
   drivers/mfd/pm8xxx-irq.c:252:2: warning: (near initialization for 'pm8xxx_irq_chip') [enabled by default]
   drivers/mfd/pm8xxx-irq.c:253:2: error: unknown field 'irq_unmask' specified in initializer
   drivers/mfd/pm8xxx-irq.c:253:2: warning: excess elements in struct initializer [enabled by default]
   drivers/mfd/pm8xxx-irq.c:253:2: warning: (near initialization for 'pm8xxx_irq_chip') [enabled by default]
   drivers/mfd/pm8xxx-irq.c:254:2: error: unknown field 'irq_set_type' specified in initializer
   drivers/mfd/pm8xxx-irq.c:254:2: warning: excess elements in struct initializer [enabled by default]
   drivers/mfd/pm8xxx-irq.c:254:2: warning: (near initialization for 'pm8xxx_irq_chip') [enabled by default]
   drivers/mfd/pm8xxx-irq.c:255:2: error: unknown field 'irq_set_wake' specified in initializer
   drivers/mfd/pm8xxx-irq.c:255:2: warning: excess elements in struct initializer [enabled by default]
   drivers/mfd/pm8xxx-irq.c:255:2: warning: (near initialization for 'pm8xxx_irq_chip') [enabled by default]
   drivers/mfd/pm8xxx-irq.c:256:2: error: unknown field 'flags' specified in initializer
   drivers/mfd/pm8xxx-irq.c:256:12: error: 'IRQCHIP_MASK_ON_SUSPEND' undeclared here (not in a function)
   drivers/mfd/pm8xxx-irq.c:256:2: warning: excess elements in struct initializer [enabled by default]
   drivers/mfd/pm8xxx-irq.c:256:2: warning: (near initialization for 'pm8xxx_irq_chip') [enabled by default]
   drivers/mfd/pm8xxx-irq.c:272:5: error: redefinition of 'pm8xxx_get_irq_stat'
   include/linux/mfd/pm8xxx/irq.h:44:19: note: previous definition of 'pm8xxx_get_irq_stat' was here
   drivers/mfd/pm8xxx-irq.c:312:33: error: conflicting types for 'pm8xxx_irq_init'
   include/linux/mfd/pm8xxx/irq.h:48:46: note: previous definition of 'pm8xxx_irq_init' was here
   drivers/mfd/pm8xxx-irq.c: In function 'pm8xxx_irq_init':
>> drivers/mfd/pm8xxx-irq.c:347:3: error: implicit declaration of function 'irq_set_chip_and_handler' [-Werror=implicit-function-declaration]
>> drivers/mfd/pm8xxx-irq.c:349:5: error: 'handle_level_irq' undeclared (first use in this function)
   drivers/mfd/pm8xxx-irq.c:349:5: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/mfd/pm8xxx-irq.c:350:3: error: implicit declaration of function 'irq_set_chip_data' [-Werror=implicit-function-declaration]
>> drivers/mfd/pm8xxx-irq.c:354:3: error: implicit declaration of function 'irq_set_noprobe' [-Werror=implicit-function-declaration]
>> drivers/mfd/pm8xxx-irq.c:358:2: error: implicit declaration of function 'irq_set_irq_type' [-Werror=implicit-function-declaration]
>> drivers/mfd/pm8xxx-irq.c:359:2: error: implicit declaration of function 'irq_set_handler_data' [-Werror=implicit-function-declaration]
>> drivers/mfd/pm8xxx-irq.c:360:2: error: implicit declaration of function 'irq_set_chained_handler' [-Werror=implicit-function-declaration]
   drivers/mfd/pm8xxx-irq.c:361:2: error: implicit declaration of function 'set_irq_wake' [-Werror=implicit-function-declaration]
   drivers/mfd/pm8xxx-irq.c: At top level:
   drivers/mfd/pm8xxx-irq.c:366:15: error: redefinition of 'pm8xxx_irq_exit'
   include/linux/mfd/pm8xxx/irq.h:54:29: note: previous definition of 'pm8xxx_irq_exit' was here
   cc1: some warnings being treated as errors

vim +/generic_handle_irq +131 drivers/mfd/pm8xxx-irq.c

c013f0a5 Abhijeet Dharmapurikar 2011-04-05  125  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  126  	/* Check IRQ bits */
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  127  	for (i = 0; i < 8; i++) {
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  128  		if (bits & (1 << i)) {
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  129  			pmirq = block * 8 + i;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  130  			irq = pmirq + chip->irq_base;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05 @131  			generic_handle_irq(irq);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  132  		}
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  133  	}
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  134  	return 0;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  135  }
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  136  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  137  static int pm8xxx_irq_master_handler(struct pm_irq_chip *chip, int master)
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  138  {
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  139  	u8 blockbits;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  140  	int block_number, i, ret = 0;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  141  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  142  	ret = pm8xxx_read_master_irq(chip, master, &blockbits);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  143  	if (ret) {
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  144  		pr_err("Failed to read master %d ret=%d\n", master, ret);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  145  		return ret;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  146  	}
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  147  	if (!blockbits) {
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  148  		pr_err("master bit set in root but no blocks: %d", master);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  149  		return 0;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  150  	}
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  151  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  152  	for (i = 0; i < 8; i++)
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  153  		if (blockbits & (1 << i)) {
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  154  			block_number = master * 8 + i;	/* block # */
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  155  			ret |= pm8xxx_irq_block_handler(chip, block_number);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  156  		}
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  157  	return ret;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  158  }
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  159  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  160  static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc)
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  161  {
c013f0a5 Abhijeet Dharmapurikar 2011-04-05 @162  	struct pm_irq_chip *chip = irq_desc_get_handler_data(desc);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05 @163  	struct irq_chip *irq_chip = irq_desc_get_chip(desc);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  164  	u8	root;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  165  	int	i, ret, masters = 0;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  166  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  167  	ret = pm8xxx_read_root_irq(chip, &root);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  168  	if (ret) {
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  169  		pr_err("Can't read root status ret=%d\n", ret);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  170  		return;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  171  	}
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  172  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  173  	/* on pm8xxx series masters start from bit 1 of the root */
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  174  	masters = root >> 1;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  175  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  176  	/* Read allowed masters for blocks. */
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  177  	for (i = 0; i < chip->num_masters; i++)
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  178  		if (masters & (1 << i))
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  179  			pm8xxx_irq_master_handler(chip, i);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  180  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  181  	irq_chip->irq_ack(&desc->irq_data);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  182  }
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  183  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  184  static void pm8xxx_irq_mask_ack(struct irq_data *d)
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  185  {
c013f0a5 Abhijeet Dharmapurikar 2011-04-05 @186  	struct pm_irq_chip *chip = irq_data_get_irq_chip_data(d);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  187  	unsigned int pmirq = d->irq - chip->irq_base;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  188  	int	master, irq_bit;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  189  	u8	block, config;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  190  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  191  	block = pmirq / 8;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  192  	master = block / 8;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  193  	irq_bit = pmirq % 8;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  194  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  195  	config = chip->config[pmirq] | PM_IRQF_MASK_ALL | PM_IRQF_CLR;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  196  	pm8xxx_config_irq(chip, block, config);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  197  }
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  198  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  199  static void pm8xxx_irq_unmask(struct irq_data *d)
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  200  {
c013f0a5 Abhijeet Dharmapurikar 2011-04-05 @201  	struct pm_irq_chip *chip = irq_data_get_irq_chip_data(d);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  202  	unsigned int pmirq = d->irq - chip->irq_base;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  203  	int	master, irq_bit;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  204  	u8	block, config;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  205  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  206  	block = pmirq / 8;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  207  	master = block / 8;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  208  	irq_bit = pmirq % 8;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  209  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  210  	config = chip->config[pmirq];
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  211  	pm8xxx_config_irq(chip, block, config);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  212  }
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  213  
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  214  static int pm8xxx_irq_set_type(struct irq_data *d, unsigned int flow_type)
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  215  {
c013f0a5 Abhijeet Dharmapurikar 2011-04-05 @216  	struct pm_irq_chip *chip = irq_data_get_irq_chip_data(d);
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  217  	unsigned int pmirq = d->irq - chip->irq_base;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  218  	int master, irq_bit;
c013f0a5 Abhijeet Dharmapurikar 2011-04-05  219  	u8 block, config;

---
0-DAY kernel build testing backend              Open Source Technology Center
http://lists.01.org/mailman/listinfo/kbuild                 Intel Corporation
--
To unsubscribe from this list: send the line "unsubscribe linux-s390" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Kernel Development]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Info]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Linux Media]     [Device Mapper]

  Powered by Linux