Re: [PATCH 1/3] drivers: input: powerkey for HISI 65xx SoC

From: kbuild test robot
Date: Fri Jun 10 2016 - 03:00:30 EST


Hi,

[auto build test ERROR on ljones-mfd/for-mfd-next]
[also build test ERROR on v4.7-rc2 next-20160609]
[cannot apply to input/next]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/John-Stultz/Hi655x-powerkey-support-for-HiKey-v3/20160610-133804
base: https://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git for-mfd-next
config: i386-allmodconfig (attached as .config)
compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
reproduce:
# save the attached .config to linux build tree
make ARCH=i386

All error/warnings (new ones prefixed by >>):

In file included from drivers/input/misc/hisi_powerkey.c:21:0:
>> drivers/input/misc/hisi_powerkey.c:135:25: error: 'hi65xx_powerkey_of_match' undeclared here (not in a function)
MODULE_DEVICE_TABLE(of, hi65xx_powerkey_of_match);
^
include/linux/module.h:223:21: note: in definition of macro 'MODULE_DEVICE_TABLE'
extern const typeof(name) __mod_##type##__##name##_device_table \
^~~~
>> include/linux/module.h:223:27: error: '__mod_of__hi65xx_powerkey_of_match_device_table' aliased to undefined symbol 'hi65xx_powerkey_of_match'
extern const typeof(name) __mod_##type##__##name##_device_table \
^
>> drivers/input/misc/hisi_powerkey.c:135:1: note: in expansion of macro 'MODULE_DEVICE_TABLE'
MODULE_DEVICE_TABLE(of, hi65xx_powerkey_of_match);
^~~~~~~~~~~~~~~~~~~

vim +/hi65xx_powerkey_of_match +135 drivers/input/misc/hisi_powerkey.c

15 */
16
17 #include <linux/platform_device.h>
18 #include <linux/interrupt.h>
19 #include <linux/reboot.h>
20 #include <linux/kernel.h>
> 21 #include <linux/module.h>
22 #include <linux/of_irq.h>
23 #include <linux/input.h>
24 #include <linux/slab.h>
25
26 /* the held interrupt will trigger after 4 seconds */
27 #define MAX_HELD_TIME (4 * MSEC_PER_SEC)
28
29
30 enum id_action { ID_PRESSED, ID_RELEASED, ID_HELD, ID_LAST };
31 const char *const irq_names[ID_LAST] = {"down", "up", "hold 4s"};
32
33 struct hi65xx_priv {
34 struct input_dev *input;
35 };
36
37 static irqreturn_t hi65xx_power_press_isr(int irq, void *q)
38 {
39 struct hi65xx_priv *p = q;
40
41 pm_wakeup_event(p->input->dev.parent, MAX_HELD_TIME);
42 input_report_key(p->input, KEY_POWER, 1);
43 input_sync(p->input);
44
45 return IRQ_HANDLED;
46 }
47
48 static irqreturn_t hi65xx_power_release_isr(int irq, void *q)
49 {
50 struct hi65xx_priv *p = q;
51
52 pm_wakeup_event(p->input->dev.parent, MAX_HELD_TIME);
53 input_report_key(p->input, KEY_POWER, 0);
54 input_sync(p->input);
55
56 return IRQ_HANDLED;
57 }
58
59 static irqreturn_t hi65xx_restart_toggle_isr(int irq, void *q)
60 {
61 struct hi65xx_priv *p = q;
62 int value = test_bit(KEY_RESTART, p->input->key);
63
64 pm_wakeup_event(p->input->dev.parent, MAX_HELD_TIME);
65 input_report_key(p->input, KEY_RESTART, !value);
66 input_sync(p->input);
67
68 return IRQ_HANDLED;
69 }
70
71 irqreturn_t (*irq_handlers[ID_LAST])(int irq, void *q) = {
72 hi65xx_power_press_isr,
73 hi65xx_power_release_isr,
74 hi65xx_restart_toggle_isr,
75 };
76
77 static int hi65xx_powerkey_probe(struct platform_device *pdev)
78 {
79 struct device *dev = &pdev->dev;
80 struct hi65xx_priv *priv;
81 int irq, i, ret;
82
83 priv = devm_kzalloc(dev, sizeof(struct hi65xx_priv), GFP_KERNEL);
84 if (!priv)
85 return -ENOMEM;
86
87 priv->input = devm_input_allocate_device(&pdev->dev);
88 if (!priv->input) {
89 dev_err(&pdev->dev, "failed to allocate input device\n");
90 return -ENOMEM;
91 }
92
93 priv->input->phys = "hisi_on/input0";
94 priv->input->name = "HISI 65xx PowerOn Key";
95
96 input_set_capability(priv->input, EV_KEY, KEY_POWER);
97 input_set_capability(priv->input, EV_KEY, KEY_RESTART);
98
99 for (i = 0; i < ID_LAST; i++) {
100
101 irq = platform_get_irq_byname(pdev, irq_names[i]);
102 if (irq < 0) {
103 dev_err(dev, "couldn't get irq %s\n", irq_names[i]);
104 return irq;
105 }
106
107 ret = devm_request_any_context_irq(dev, irq,
108 irq_handlers[i], IRQF_ONESHOT,
109 irq_names[i], priv);
110 if (ret < 0) {
111 dev_err(dev, "couldn't get irq %s\n", irq_names[i]);
112 return ret;
113 }
114 }
115
116 ret = input_register_device(priv->input);
117 if (ret) {
118 dev_err(&pdev->dev, "failed to register input device: %d\n",
119 ret);
120 return ret;
121 }
122
123 platform_set_drvdata(pdev, priv);
124 device_init_wakeup(&pdev->dev, 1);
125
126 return 0;
127 }
128
129 static int hi65xx_powerkey_remove(struct platform_device *pdev)
130 {
131 device_init_wakeup(&pdev->dev, 0);
132 return 0;
133 }
134
> 135 MODULE_DEVICE_TABLE(of, hi65xx_powerkey_of_match);
136
137 static struct platform_driver hi65xx_powerkey_driver = {
138 .driver = {

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: Binary data