From: kbuild test robot <lkp@intel.com>
To: Vijai Kumar K <vijaikumar.kanagarajan@gmail.com>
Cc: kbuild-all@01.org, linux-kernel@vger.kernel.org,
cw00.choi@samsung.com, myungjoo.ham@samsung.com,
Vijai Kumar K <vijaikumar.kanagarajan@gmail.com>
Subject: Re: [PATCH] drivers: extcon: Add support for ptn5150
Date: Tue, 22 Jan 2019 08:05:33 +0800 [thread overview]
Message-ID: <201901220830.8kqj0YjW%fengguang.wu@intel.com> (raw)
In-Reply-To: <1548061749-15950-1-git-send-email-vijaikumar.kanagarajan@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 9542 bytes --]
Hi Vijai,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on chanwoo-extcon/extcon-next]
[also build test ERROR on v5.0-rc2]
[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/Vijai-Kumar-K/drivers-extcon-Add-support-for-ptn5150/20190122-041153
base: https://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/extcon.git extcon-next
config: sh-allyesconfig (attached as .config)
compiler: sh4-linux-gnu-gcc (Debian 8.2.0-11) 8.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=8.2.0 make.cross ARCH=sh
All error/warnings (new ones prefixed by >>):
drivers//extcon/extcon-ptn5150.c: In function 'ptn5150_irq_work':
>> drivers//extcon/extcon-ptn5150.c:93:5: error: implicit declaration of function 'extcon_set_state_sync'; did you mean 'extcon_get_state'? [-Werror=implicit-function-declaration]
extcon_set_state_sync(info->edev,
^~~~~~~~~~~~~~~~~~~~~
extcon_get_state
drivers//extcon/extcon-ptn5150.c: In function 'ptn5150_i2c_probe':
>> drivers//extcon/extcon-ptn5150.c:255:15: error: implicit declaration of function 'devm_extcon_dev_allocate'; did you mean 'extcon_get_state'? [-Werror=implicit-function-declaration]
info->edev = devm_extcon_dev_allocate(info->dev, ptn5150_extcon_cable);
^~~~~~~~~~~~~~~~~~~~~~~~
extcon_get_state
>> drivers//extcon/extcon-ptn5150.c:255:13: warning: assignment to 'struct extcon_dev *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
info->edev = devm_extcon_dev_allocate(info->dev, ptn5150_extcon_cable);
^
>> drivers//extcon/extcon-ptn5150.c:262:8: error: implicit declaration of function 'devm_extcon_dev_register'; did you mean 'devm_pinctrl_register'? [-Werror=implicit-function-declaration]
ret = devm_extcon_dev_register(info->dev, info->edev);
^~~~~~~~~~~~~~~~~~~~~~~~
devm_pinctrl_register
cc1: some warnings being treated as errors
vim +93 drivers//extcon/extcon-ptn5150.c
51
52 static void ptn5150_irq_work(struct work_struct *work)
53 {
54 struct ptn5150_info *info = container_of(work,
55 struct ptn5150_info, irq_work);
56 int ret = 0;
57 unsigned int reg_data;
58 unsigned int port_status;
59 unsigned int vbus;
60 unsigned int cable_attach;
61 unsigned int int_status;
62
63 if (!info->edev)
64 return;
65
66 mutex_lock(&info->mutex);
67
68 ret = regmap_read(info->regmap, PTN5150_REG_CC_STATUS, ®_data);
69 if (ret) {
70 dev_err(info->dev,
71 "failed to read CC STATUS %d\n", ret);
72 mutex_unlock(&info->mutex);
73 return;
74 }
75 /* Clear interrupt. Read would clear the register */
76 ret = regmap_read(info->regmap, PTN5150_REG_INT_STATUS, &int_status);
77 if (ret) {
78 dev_err(info->dev,
79 "failed to read INT STATUS %d\n", ret);
80 mutex_unlock(&info->mutex);
81 return;
82 }
83
84 if (int_status) {
85 cable_attach = int_status & PTN5150_REG_INT_CABLE_ATTACH_MASK;
86 if (cable_attach) {
87 port_status = ((reg_data &
88 PTN5150_REG_CC_PORT_ATTACHMENT_MASK) >>
89 PTN5150_REG_CC_PORT_ATTACHMENT_SHIFT);
90
91 switch (port_status) {
92 case PTN5150_DFP_ATTACHED:
> 93 extcon_set_state_sync(info->edev,
94 EXTCON_USB_HOST, false);
95 gpiod_set_value(info->vbus_gpiod, 0);
96 extcon_set_state_sync(info->edev, EXTCON_USB,
97 true);
98 break;
99 case PTN5150_UFP_ATTACHED:
100 extcon_set_state_sync(info->edev, EXTCON_USB,
101 false);
102 vbus = ((reg_data &
103 PTN5150_REG_CC_VBUS_DETECTION_MASK) >>
104 PTN5150_REG_CC_VBUS_DETECTION_SHIFT);
105 if (vbus)
106 gpiod_set_value(info->vbus_gpiod, 0);
107 else
108 gpiod_set_value(info->vbus_gpiod, 1);
109
110 extcon_set_state_sync(info->edev,
111 EXTCON_USB_HOST, true);
112 break;
113 default:
114 dev_err(info->dev,
115 "Unknown Port status : %x\n",
116 port_status);
117 break;
118 }
119 } else {
120 extcon_set_state_sync(info->edev,
121 EXTCON_USB_HOST, false);
122 extcon_set_state_sync(info->edev,
123 EXTCON_USB, false);
124 gpiod_set_value(info->vbus_gpiod, 0);
125 }
126 }
127
128 /* Clear interrupt. Read would clear the register */
129 ret = regmap_read(info->regmap, PTN5150_REG_INT_REG_STATUS,
130 &int_status);
131 if (ret) {
132 dev_err(info->dev,
133 "failed to read INT REG STATUS %d\n", ret);
134 mutex_unlock(&info->mutex);
135 return;
136 }
137
138
139 mutex_unlock(&info->mutex);
140 }
141
142
143 static irqreturn_t ptn5150_irq_handler(int irq, void *data)
144 {
145 struct ptn5150_info *info = data;
146
147 schedule_work(&info->irq_work);
148
149 return IRQ_HANDLED;
150 }
151
152 static int ptn5150_init_dev_type(struct ptn5150_info *info)
153 {
154 unsigned int reg_data, vendor_id, version_id;
155 int ret;
156
157 ret = regmap_read(info->regmap, PTN5150_REG_DEVICE_ID, ®_data);
158 if (ret) {
159 dev_err(info->dev, "failed to read DEVICE_ID %d\n", ret);
160 return -EINVAL;
161 }
162
163 vendor_id = ((reg_data & PTN5150_REG_DEVICE_ID_VENDOR_MASK) >>
164 PTN5150_REG_DEVICE_ID_VENDOR_SHIFT);
165 version_id = ((reg_data & PTN5150_REG_DEVICE_ID_VERSION_MASK) >>
166 PTN5150_REG_DEVICE_ID_VERSION_SHIFT);
167
168 dev_info(info->dev, "Device type: version: 0x%x, vendor: 0x%x\n",
169 version_id, vendor_id);
170
171 /* Clear any existing interrupts */
172 ret = regmap_read(info->regmap, PTN5150_REG_INT_STATUS, ®_data);
173 if (ret) {
174 dev_err(info->dev,
175 "failed to read PTN5150_REG_INT_STATUS %d\n",
176 ret);
177 return -EINVAL;
178 }
179
180 ret = regmap_read(info->regmap, PTN5150_REG_INT_REG_STATUS, ®_data);
181 if (ret) {
182 dev_err(info->dev,
183 "failed to read PTN5150_REG_INT_REG_STATUS %d\n", ret);
184 return -EINVAL;
185 }
186
187 return 0;
188 }
189
190 static int ptn5150_i2c_probe(struct i2c_client *i2c,
191 const struct i2c_device_id *id)
192 {
193 struct device *dev = &i2c->dev;
194 struct device_node *np = i2c->dev.of_node;
195 struct ptn5150_info *info;
196 int ret;
197
198 if (!np)
199 return -EINVAL;
200
201 info = devm_kzalloc(&i2c->dev, sizeof(*info), GFP_KERNEL);
202 if (!info)
203 return -ENOMEM;
204 i2c_set_clientdata(i2c, info);
205
206 info->dev = &i2c->dev;
207 info->i2c = i2c;
208 info->int_gpiod = devm_gpiod_get(&i2c->dev, "int", GPIOD_IN);
209 if (!info->int_gpiod) {
210 dev_err(dev, "failed to get INT GPIO\n");
211 return -EINVAL;
212 }
213 info->vbus_gpiod = devm_gpiod_get(&i2c->dev, "vbus", GPIOD_IN);
214 if (!info->vbus_gpiod) {
215 dev_err(dev, "failed to get VBUS GPIO\n");
216 return -EINVAL;
217 }
218 ret = gpiod_direction_output(info->vbus_gpiod, 0);
219 if (ret) {
220 dev_err(dev, "failed to set VBUS GPIO direction\n");
221 return -EINVAL;
222 }
223
224 mutex_init(&info->mutex);
225
226 INIT_WORK(&info->irq_work, ptn5150_irq_work);
227
228 info->regmap = devm_regmap_init_i2c(i2c, &ptn5150_regmap_config);
229 if (IS_ERR(info->regmap)) {
230 ret = PTR_ERR(info->regmap);
231 dev_err(info->dev, "failed to allocate register map: %d\n",
232 ret);
233 return ret;
234 }
235
236 if (info->int_gpiod) {
237 info->irq = gpiod_to_irq(info->int_gpiod);
238 if (info->irq < 0) {
239 dev_err(dev, "failed to get INTB IRQ\n");
240 return info->irq;
241 }
242
243 ret = devm_request_threaded_irq(dev, info->irq, NULL,
244 ptn5150_irq_handler,
245 IRQF_TRIGGER_FALLING |
246 IRQF_ONESHOT,
247 i2c->name, info);
248 if (ret < 0) {
249 dev_err(dev, "failed to request handler for INTB IRQ\n");
250 return ret;
251 }
252 }
253
254 /* Allocate extcon device */
> 255 info->edev = devm_extcon_dev_allocate(info->dev, ptn5150_extcon_cable);
256 if (IS_ERR(info->edev)) {
257 dev_err(info->dev, "failed to allocate memory for extcon\n");
258 return -ENOMEM;
259 }
260
261 /* Register extcon device */
> 262 ret = devm_extcon_dev_register(info->dev, info->edev);
263 if (ret) {
264 dev_err(info->dev, "failed to register extcon device\n");
265 return ret;
266 }
267
268 /* Initialize PTN5150 device and print vendor id and version id */
269 ret = ptn5150_init_dev_type(info);
270 if (ret)
271 return -EINVAL;
272
273 return 0;
274 }
275
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 51002 bytes --]
next prev parent reply other threads:[~2019-01-22 1:06 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20190121091105epcas2p4bad949be391e855358295cf3eae8d773@epcas2p4.samsung.com>
2019-01-21 9:09 ` [PATCH] drivers: extcon: Add support for ptn5150 Vijai Kumar K
2019-01-22 0:05 ` kbuild test robot [this message]
2019-01-22 4:42 ` Vijai Kumar K
2019-01-22 5:27 ` Chanwoo Choi
2019-01-22 7:05 ` Vijai Kumar K
[not found] ` <CGME20190122044306epcas5p30f875260e568d5fb0e4909035060f8ff@epcms1p8>
2019-01-22 4:57 ` MyungJoo Ham
2019-01-22 6:57 ` Vijai Kumar K
2019-01-22 6:20 ` Chanwoo Choi
2019-01-22 7:55 ` Vijai Kumar K
2019-01-23 12:46 ` [PATCH V2] " Vijai Kumar K
2019-01-24 2:03 ` Chanwoo Choi
[not found] ` <CGME20190124060419epcas1p4aed00219fc0e0281c2d5435ce6ec2e48@epcas1p4.samsung.com>
2019-01-24 6:04 ` [PATCH v3] extcon: Add support for ptn5150 extcon driver Chanwoo Choi
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=201901220830.8kqj0YjW%fengguang.wu@intel.com \
--to=lkp@intel.com \
--cc=cw00.choi@samsung.com \
--cc=kbuild-all@01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=myungjoo.ham@samsung.com \
--cc=vijaikumar.kanagarajan@gmail.com \
/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.