All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fengguang Wu <fengguang.wu@intel.com>
To: linux-s390@vger.kernel.org
Subject: drivers/mfd/pm8xxx-irq.c:131:4: error: implicit declaration of function 'generic_handle_irq'
Date: Thu, 28 Mar 2013 04:02:41 +0000	[thread overview]
Message-ID: <20130328040241.GA22186@localhost> (raw)


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

                 reply	other threads:[~2013-03-28  4:02 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20130328040241.GA22186@localhost \
    --to=fengguang.wu@intel.com \
    --cc=linux-s390@vger.kernel.org \
    /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.