Re: [PATCH v1] platform/chrome: wilco_ec: Platform data shan't include kernel.h

From: kbuild test robot
Date: Tue Feb 04 2020 - 23:03:52 EST


Hi Andy,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v5.5 next-20200204]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/platform-chrome-wilco_ec-Platform-data-shan-t-include-kernel-h/20200205-035444
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git d4e9056daedca3891414fe3c91de3449a5dad0f2
config: x86_64-randconfig-e003-20200204 (attached as .config)
compiler: gcc-7 (Debian 7.5.0-3) 7.5.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

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

>> drivers/platform/chrome/wilco_ec/sysfs.c:66:12: warning: 'struct device_attribute' declared inside parameter list will not be visible outside of this definition or declaration
struct device_attribute *attr,
^~~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c: In function 'boot_on_ac_store':
>> drivers/platform/chrome/wilco_ec/sysfs.c:69:31: error: implicit declaration of function 'dev_get_drvdata' [-Werror=implicit-function-declaration]
struct wilco_ec_device *ec = dev_get_drvdata(dev);
^~~~~~~~~~~~~~~
>> drivers/platform/chrome/wilco_ec/sysfs.c:69:31: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
drivers/platform/chrome/wilco_ec/sysfs.c: At top level:
>> drivers/platform/chrome/wilco_ec/sysfs.c:97:8: error: type defaults to 'int' in declaration of 'DEVICE_ATTR_WO' [-Werror=implicit-int]
static DEVICE_ATTR_WO(boot_on_ac);
^~~~~~~~~~~~~~
>> drivers/platform/chrome/wilco_ec/sysfs.c:97:1: warning: parameter names (without types) in function declaration
static DEVICE_ATTR_WO(boot_on_ac);
^~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c: In function 'get_info':
drivers/platform/chrome/wilco_ec/sysfs.c:101:31: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct wilco_ec_device *ec = dev_get_drvdata(dev);
^~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c: At top level:
drivers/platform/chrome/wilco_ec/sysfs.c:122:56: warning: 'struct device_attribute' declared inside parameter list will not be visible outside of this definition or declaration
static ssize_t version_show(struct device *dev, struct device_attribute *attr,
^~~~~~~~~~~~~~~~
>> drivers/platform/chrome/wilco_ec/sysfs.c:128:8: error: type defaults to 'int' in declaration of 'DEVICE_ATTR_RO' [-Werror=implicit-int]
static DEVICE_ATTR_RO(version);
^~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:128:1: warning: parameter names (without types) in function declaration
static DEVICE_ATTR_RO(version);
^~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:131:15: warning: 'struct device_attribute' declared inside parameter list will not be visible outside of this definition or declaration
struct device_attribute *attr, char *buf)
^~~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:136:8: error: type defaults to 'int' in declaration of 'DEVICE_ATTR_RO' [-Werror=implicit-int]
static DEVICE_ATTR_RO(build_revision);
^~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:136:1: warning: parameter names (without types) in function declaration
static DEVICE_ATTR_RO(build_revision);
^~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:139:18: warning: 'struct device_attribute' declared inside parameter list will not be visible outside of this definition or declaration
struct device_attribute *attr, char *buf)
^~~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:144:8: error: type defaults to 'int' in declaration of 'DEVICE_ATTR_RO' [-Werror=implicit-int]
static DEVICE_ATTR_RO(build_date);
^~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:144:1: warning: parameter names (without types) in function declaration
static DEVICE_ATTR_RO(build_date);
^~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:147:13: warning: 'struct device_attribute' declared inside parameter list will not be visible outside of this definition or declaration
struct device_attribute *attr, char *buf)
^~~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:152:8: error: type defaults to 'int' in declaration of 'DEVICE_ATTR_RO' [-Werror=implicit-int]
static DEVICE_ATTR_RO(model_number);
^~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:152:1: warning: parameter names (without types) in function declaration
static DEVICE_ATTR_RO(model_number);
^~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:177:16: warning: 'struct device_attribute' declared inside parameter list will not be visible outside of this definition or declaration
struct device_attribute *attr, char *buf)
^~~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c: In function 'usb_charge_show':
drivers/platform/chrome/wilco_ec/sysfs.c:179:31: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct wilco_ec_device *ec = dev_get_drvdata(dev);
^~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c: At top level:
drivers/platform/chrome/wilco_ec/sysfs.c:196:17: warning: 'struct device_attribute' declared inside parameter list will not be visible outside of this definition or declaration
struct device_attribute *attr,
^~~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c: In function 'usb_charge_store':
drivers/platform/chrome/wilco_ec/sysfs.c:199:31: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct wilco_ec_device *ec = dev_get_drvdata(dev);
^~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c: At top level:
>> drivers/platform/chrome/wilco_ec/sysfs.c:223:8: error: type defaults to 'int' in declaration of 'DEVICE_ATTR_RW' [-Werror=implicit-int]
static DEVICE_ATTR_RW(usb_charge);
^~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:223:1: warning: parameter names (without types) in function declaration
static DEVICE_ATTR_RW(usb_charge);
^~~~~~
>> drivers/platform/chrome/wilco_ec/sysfs.c:226:3: error: 'dev_attr_boot_on_ac' undeclared here (not in a function)
&dev_attr_boot_on_ac.attr,
^~~~~~~~~~~~~~~~~~~
>> drivers/platform/chrome/wilco_ec/sysfs.c:227:3: error: 'dev_attr_build_date' undeclared here (not in a function); did you mean 'dev_attr_boot_on_ac'?
&dev_attr_build_date.attr,
^~~~~~~~~~~~~~~~~~~
dev_attr_boot_on_ac
>> drivers/platform/chrome/wilco_ec/sysfs.c:228:3: error: 'dev_attr_build_revision' undeclared here (not in a function); did you mean 'dev_attr_build_date'?
&dev_attr_build_revision.attr,
^~~~~~~~~~~~~~~~~~~~~~~
dev_attr_build_date
>> drivers/platform/chrome/wilco_ec/sysfs.c:229:3: error: 'dev_attr_model_number' undeclared here (not in a function); did you mean 'dev_attr_build_date'?
&dev_attr_model_number.attr,
^~~~~~~~~~~~~~~~~~~~~
dev_attr_build_date
>> drivers/platform/chrome/wilco_ec/sysfs.c:230:3: error: 'dev_attr_usb_charge' undeclared here (not in a function); did you mean 'send_usb_charge'?
&dev_attr_usb_charge.attr,
^~~~~~~~~~~~~~~~~~~
send_usb_charge
>> drivers/platform/chrome/wilco_ec/sysfs.c:231:3: error: 'dev_attr_version' undeclared here (not in a function); did you mean 'dev_attr_boot_on_ac'?
&dev_attr_version.attr,
^~~~~~~~~~~~~~~~
dev_attr_boot_on_ac
drivers/platform/chrome/wilco_ec/sysfs.c: In function 'wilco_ec_add_sysfs':
>> drivers/platform/chrome/wilco_ec/sysfs.c:241:36: error: dereferencing pointer to incomplete type 'struct device'
return sysfs_create_group(&ec->dev->kobj, &wilco_dev_attr_group);
^~
>> drivers/platform/chrome/wilco_ec/sysfs.c:241:36: error: request for member 'kobj' in something not a structure or union
>> drivers/platform/chrome/wilco_ec/sysfs.c:241:28: error: passing argument 1 of 'sysfs_create_group' from incompatible pointer type [-Werror=incompatible-pointer-types]
return sysfs_create_group(&ec->dev->kobj, &wilco_dev_attr_group);
^
In file included from drivers/platform/chrome/wilco_ec/sysfs.c:12:0:
include/linux/sysfs.h:276:18: note: expected 'struct kobject *' but argument is of type 'struct attribute * (*)[1]'
int __must_check sysfs_create_group(struct kobject *kobj,
^~~~~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c: In function 'wilco_ec_remove_sysfs':
drivers/platform/chrome/wilco_ec/sysfs.c:246:29: error: request for member 'kobj' in something not a structure or union
sysfs_remove_group(&ec->dev->kobj, &wilco_dev_attr_group);
^~
>> drivers/platform/chrome/wilco_ec/sysfs.c:246:21: error: passing argument 1 of 'sysfs_remove_group' from incompatible pointer type [-Werror=incompatible-pointer-types]
sysfs_remove_group(&ec->dev->kobj, &wilco_dev_attr_group);
^
In file included from drivers/platform/chrome/wilco_ec/sysfs.c:12:0:
include/linux/sysfs.h:284:6: note: expected 'struct kobject *' but argument is of type 'struct attribute * (*)[1]'
void sysfs_remove_group(struct kobject *kobj,
^~~~~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c: At top level:
drivers/platform/chrome/wilco_ec/sysfs.c:97:8: warning: 'DEVICE_ATTR_WO' declared 'static' but never defined [-Wunused-function]
static DEVICE_ATTR_WO(boot_on_ac);
^~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:152:8: warning: 'DEVICE_ATTR_RO' declared 'static' but never defined [-Wunused-function]
static DEVICE_ATTR_RO(model_number);
^~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:223:8: warning: 'DEVICE_ATTR_RW' declared 'static' but never defined [-Wunused-function]
static DEVICE_ATTR_RW(usb_charge);
^~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:195:16: warning: 'usb_charge_store' defined but not used [-Wunused-function]
static ssize_t usb_charge_store(struct device *dev,
^~~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:176:16: warning: 'usb_charge_show' defined but not used [-Wunused-function]
static ssize_t usb_charge_show(struct device *dev,
^~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:146:16: warning: 'model_number_show' defined but not used [-Wunused-function]
static ssize_t model_number_show(struct device *dev,
^~~~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:138:16: warning: 'build_date_show' defined but not used [-Wunused-function]
static ssize_t build_date_show(struct device *dev,
^~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:130:16: warning: 'build_revision_show' defined but not used [-Wunused-function]
static ssize_t build_revision_show(struct device *dev,
^~~~~~~~~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:122:16: warning: 'version_show' defined but not used [-Wunused-function]
static ssize_t version_show(struct device *dev, struct device_attribute *attr,
^~~~~~~~~~~~
drivers/platform/chrome/wilco_ec/sysfs.c:65:16: warning: 'boot_on_ac_store' defined but not used [-Wunused-function]
static ssize_t boot_on_ac_store(struct device *dev,
^~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors

vim +/dev_get_drvdata +69 drivers/platform/chrome/wilco_ec/sysfs.c

79e3f1d3db3d99 Raul E Rangel 2019-06-03 64
4c1ca625c622b7 Nick Crews 2019-04-16 65 static ssize_t boot_on_ac_store(struct device *dev,
4c1ca625c622b7 Nick Crews 2019-04-16 @66 struct device_attribute *attr,
4c1ca625c622b7 Nick Crews 2019-04-16 67 const char *buf, size_t count)
4c1ca625c622b7 Nick Crews 2019-04-16 68 {
4c1ca625c622b7 Nick Crews 2019-04-16 @69 struct wilco_ec_device *ec = dev_get_drvdata(dev);
4c1ca625c622b7 Nick Crews 2019-04-16 70 struct boot_on_ac_request rq;
4c1ca625c622b7 Nick Crews 2019-04-16 71 struct wilco_ec_message msg;
4c1ca625c622b7 Nick Crews 2019-04-16 72 int ret;
4c1ca625c622b7 Nick Crews 2019-04-16 73 u8 val;
4c1ca625c622b7 Nick Crews 2019-04-16 74
4c1ca625c622b7 Nick Crews 2019-04-16 75 ret = kstrtou8(buf, 10, &val);
4c1ca625c622b7 Nick Crews 2019-04-16 76 if (ret < 0)
4c1ca625c622b7 Nick Crews 2019-04-16 77 return ret;
4c1ca625c622b7 Nick Crews 2019-04-16 78 if (val > 1)
4c1ca625c622b7 Nick Crews 2019-04-16 79 return -EINVAL;
4c1ca625c622b7 Nick Crews 2019-04-16 80
4c1ca625c622b7 Nick Crews 2019-04-16 81 memset(&rq, 0, sizeof(rq));
4c1ca625c622b7 Nick Crews 2019-04-16 82 rq.cmd = CMD_KB_CMOS;
4c1ca625c622b7 Nick Crews 2019-04-16 83 rq.sub_cmd = SUB_CMD_KB_CMOS_AUTO_ON;
4c1ca625c622b7 Nick Crews 2019-04-16 84 rq.val = val;
4c1ca625c622b7 Nick Crews 2019-04-16 85
4c1ca625c622b7 Nick Crews 2019-04-16 86 memset(&msg, 0, sizeof(msg));
4c1ca625c622b7 Nick Crews 2019-04-16 87 msg.type = WILCO_EC_MSG_LEGACY;
4c1ca625c622b7 Nick Crews 2019-04-16 88 msg.request_data = &rq;
4c1ca625c622b7 Nick Crews 2019-04-16 89 msg.request_size = sizeof(rq);
4c1ca625c622b7 Nick Crews 2019-04-16 90 ret = wilco_ec_mailbox(ec, &msg);
4c1ca625c622b7 Nick Crews 2019-04-16 91 if (ret < 0)
4c1ca625c622b7 Nick Crews 2019-04-16 92 return ret;
4c1ca625c622b7 Nick Crews 2019-04-16 93
4c1ca625c622b7 Nick Crews 2019-04-16 94 return count;
4c1ca625c622b7 Nick Crews 2019-04-16 95 }
4c1ca625c622b7 Nick Crews 2019-04-16 96
4c1ca625c622b7 Nick Crews 2019-04-16 @97 static DEVICE_ATTR_WO(boot_on_ac);
4c1ca625c622b7 Nick Crews 2019-04-16 98
79e3f1d3db3d99 Raul E Rangel 2019-06-03 99 static ssize_t get_info(struct device *dev, char *buf, enum get_ec_info_op op)
79e3f1d3db3d99 Raul E Rangel 2019-06-03 100 {
79e3f1d3db3d99 Raul E Rangel 2019-06-03 101 struct wilco_ec_device *ec = dev_get_drvdata(dev);
79e3f1d3db3d99 Raul E Rangel 2019-06-03 102 struct get_ec_info_req req = { .cmd = CMD_EC_INFO, .op = op };
79e3f1d3db3d99 Raul E Rangel 2019-06-03 103 struct get_ec_info_resp resp;
79e3f1d3db3d99 Raul E Rangel 2019-06-03 104 int ret;
79e3f1d3db3d99 Raul E Rangel 2019-06-03 105
79e3f1d3db3d99 Raul E Rangel 2019-06-03 106 struct wilco_ec_message msg = {
79e3f1d3db3d99 Raul E Rangel 2019-06-03 107 .type = WILCO_EC_MSG_LEGACY,
79e3f1d3db3d99 Raul E Rangel 2019-06-03 108 .request_data = &req,
79e3f1d3db3d99 Raul E Rangel 2019-06-03 109 .request_size = sizeof(req),
79e3f1d3db3d99 Raul E Rangel 2019-06-03 110 .response_data = &resp,
79e3f1d3db3d99 Raul E Rangel 2019-06-03 111 .response_size = sizeof(resp),
79e3f1d3db3d99 Raul E Rangel 2019-06-03 112 };
79e3f1d3db3d99 Raul E Rangel 2019-06-03 113
79e3f1d3db3d99 Raul E Rangel 2019-06-03 114 ret = wilco_ec_mailbox(ec, &msg);
79e3f1d3db3d99 Raul E Rangel 2019-06-03 115 if (ret < 0)
79e3f1d3db3d99 Raul E Rangel 2019-06-03 116 return ret;
79e3f1d3db3d99 Raul E Rangel 2019-06-03 117
79e3f1d3db3d99 Raul E Rangel 2019-06-03 118 return scnprintf(buf, PAGE_SIZE, "%.*s\n", (int)sizeof(resp.value),
79e3f1d3db3d99 Raul E Rangel 2019-06-03 119 (char *)&resp.value);
79e3f1d3db3d99 Raul E Rangel 2019-06-03 120 }
79e3f1d3db3d99 Raul E Rangel 2019-06-03 121
79e3f1d3db3d99 Raul E Rangel 2019-06-03 122 static ssize_t version_show(struct device *dev, struct device_attribute *attr,
79e3f1d3db3d99 Raul E Rangel 2019-06-03 123 char *buf)
79e3f1d3db3d99 Raul E Rangel 2019-06-03 124 {
79e3f1d3db3d99 Raul E Rangel 2019-06-03 125 return get_info(dev, buf, CMD_GET_EC_LABEL);
79e3f1d3db3d99 Raul E Rangel 2019-06-03 126 }
79e3f1d3db3d99 Raul E Rangel 2019-06-03 127
79e3f1d3db3d99 Raul E Rangel 2019-06-03 @128 static DEVICE_ATTR_RO(version);
79e3f1d3db3d99 Raul E Rangel 2019-06-03 129
79e3f1d3db3d99 Raul E Rangel 2019-06-03 130 static ssize_t build_revision_show(struct device *dev,
79e3f1d3db3d99 Raul E Rangel 2019-06-03 131 struct device_attribute *attr, char *buf)
79e3f1d3db3d99 Raul E Rangel 2019-06-03 132 {
79e3f1d3db3d99 Raul E Rangel 2019-06-03 133 return get_info(dev, buf, CMD_GET_EC_REV);
79e3f1d3db3d99 Raul E Rangel 2019-06-03 134 }
79e3f1d3db3d99 Raul E Rangel 2019-06-03 135
79e3f1d3db3d99 Raul E Rangel 2019-06-03 136 static DEVICE_ATTR_RO(build_revision);
79e3f1d3db3d99 Raul E Rangel 2019-06-03 137
79e3f1d3db3d99 Raul E Rangel 2019-06-03 138 static ssize_t build_date_show(struct device *dev,
79e3f1d3db3d99 Raul E Rangel 2019-06-03 139 struct device_attribute *attr, char *buf)
79e3f1d3db3d99 Raul E Rangel 2019-06-03 140 {
79e3f1d3db3d99 Raul E Rangel 2019-06-03 141 return get_info(dev, buf, CMD_GET_EC_BUILD_DATE);
79e3f1d3db3d99 Raul E Rangel 2019-06-03 142 }
79e3f1d3db3d99 Raul E Rangel 2019-06-03 143
79e3f1d3db3d99 Raul E Rangel 2019-06-03 144 static DEVICE_ATTR_RO(build_date);
79e3f1d3db3d99 Raul E Rangel 2019-06-03 145
79e3f1d3db3d99 Raul E Rangel 2019-06-03 146 static ssize_t model_number_show(struct device *dev,
79e3f1d3db3d99 Raul E Rangel 2019-06-03 147 struct device_attribute *attr, char *buf)
79e3f1d3db3d99 Raul E Rangel 2019-06-03 148 {
79e3f1d3db3d99 Raul E Rangel 2019-06-03 149 return get_info(dev, buf, CMD_GET_EC_MODEL);
79e3f1d3db3d99 Raul E Rangel 2019-06-03 150 }
79e3f1d3db3d99 Raul E Rangel 2019-06-03 151
79e3f1d3db3d99 Raul E Rangel 2019-06-03 152 static DEVICE_ATTR_RO(model_number);
79e3f1d3db3d99 Raul E Rangel 2019-06-03 153
fdf0fe2df3e321 Daniel Campello 2019-10-08 154 static int send_usb_charge(struct wilco_ec_device *ec,
fdf0fe2df3e321 Daniel Campello 2019-10-08 155 struct usb_charge_request *rq,
fdf0fe2df3e321 Daniel Campello 2019-10-08 156 struct usb_charge_response *rs)
fdf0fe2df3e321 Daniel Campello 2019-10-08 157 {
fdf0fe2df3e321 Daniel Campello 2019-10-08 158 struct wilco_ec_message msg;
fdf0fe2df3e321 Daniel Campello 2019-10-08 159 int ret;
fdf0fe2df3e321 Daniel Campello 2019-10-08 160
fdf0fe2df3e321 Daniel Campello 2019-10-08 161 memset(&msg, 0, sizeof(msg));
fdf0fe2df3e321 Daniel Campello 2019-10-08 162 msg.type = WILCO_EC_MSG_LEGACY;
fdf0fe2df3e321 Daniel Campello 2019-10-08 163 msg.request_data = rq;
fdf0fe2df3e321 Daniel Campello 2019-10-08 164 msg.request_size = sizeof(*rq);
fdf0fe2df3e321 Daniel Campello 2019-10-08 165 msg.response_data = rs;
fdf0fe2df3e321 Daniel Campello 2019-10-08 166 msg.response_size = sizeof(*rs);
fdf0fe2df3e321 Daniel Campello 2019-10-08 167 ret = wilco_ec_mailbox(ec, &msg);
fdf0fe2df3e321 Daniel Campello 2019-10-08 168 if (ret < 0)
fdf0fe2df3e321 Daniel Campello 2019-10-08 169 return ret;
fdf0fe2df3e321 Daniel Campello 2019-10-08 170 if (rs->status)
fdf0fe2df3e321 Daniel Campello 2019-10-08 171 return -EIO;
fdf0fe2df3e321 Daniel Campello 2019-10-08 172
fdf0fe2df3e321 Daniel Campello 2019-10-08 173 return 0;
fdf0fe2df3e321 Daniel Campello 2019-10-08 174 }
fdf0fe2df3e321 Daniel Campello 2019-10-08 175
fdf0fe2df3e321 Daniel Campello 2019-10-08 176 static ssize_t usb_charge_show(struct device *dev,
fdf0fe2df3e321 Daniel Campello 2019-10-08 177 struct device_attribute *attr, char *buf)
fdf0fe2df3e321 Daniel Campello 2019-10-08 178 {
fdf0fe2df3e321 Daniel Campello 2019-10-08 179 struct wilco_ec_device *ec = dev_get_drvdata(dev);
fdf0fe2df3e321 Daniel Campello 2019-10-08 180 struct usb_charge_request rq;
fdf0fe2df3e321 Daniel Campello 2019-10-08 181 struct usb_charge_response rs;
fdf0fe2df3e321 Daniel Campello 2019-10-08 182 int ret;
fdf0fe2df3e321 Daniel Campello 2019-10-08 183
fdf0fe2df3e321 Daniel Campello 2019-10-08 184 memset(&rq, 0, sizeof(rq));
fdf0fe2df3e321 Daniel Campello 2019-10-08 185 rq.cmd = CMD_USB_CHARGE;
fdf0fe2df3e321 Daniel Campello 2019-10-08 186 rq.op = USB_CHARGE_GET;
fdf0fe2df3e321 Daniel Campello 2019-10-08 187
fdf0fe2df3e321 Daniel Campello 2019-10-08 188 ret = send_usb_charge(ec, &rq, &rs);
fdf0fe2df3e321 Daniel Campello 2019-10-08 189 if (ret < 0)
fdf0fe2df3e321 Daniel Campello 2019-10-08 190 return ret;
fdf0fe2df3e321 Daniel Campello 2019-10-08 191
fdf0fe2df3e321 Daniel Campello 2019-10-08 192 return sprintf(buf, "%d\n", rs.val);
fdf0fe2df3e321 Daniel Campello 2019-10-08 193 }
fdf0fe2df3e321 Daniel Campello 2019-10-08 194
fdf0fe2df3e321 Daniel Campello 2019-10-08 195 static ssize_t usb_charge_store(struct device *dev,
fdf0fe2df3e321 Daniel Campello 2019-10-08 196 struct device_attribute *attr,
fdf0fe2df3e321 Daniel Campello 2019-10-08 197 const char *buf, size_t count)
fdf0fe2df3e321 Daniel Campello 2019-10-08 198 {
fdf0fe2df3e321 Daniel Campello 2019-10-08 199 struct wilco_ec_device *ec = dev_get_drvdata(dev);
fdf0fe2df3e321 Daniel Campello 2019-10-08 200 struct usb_charge_request rq;
fdf0fe2df3e321 Daniel Campello 2019-10-08 201 struct usb_charge_response rs;
fdf0fe2df3e321 Daniel Campello 2019-10-08 202 int ret;
fdf0fe2df3e321 Daniel Campello 2019-10-08 203 u8 val;
fdf0fe2df3e321 Daniel Campello 2019-10-08 204
fdf0fe2df3e321 Daniel Campello 2019-10-08 205 ret = kstrtou8(buf, 10, &val);
fdf0fe2df3e321 Daniel Campello 2019-10-08 206 if (ret < 0)
fdf0fe2df3e321 Daniel Campello 2019-10-08 207 return ret;
fdf0fe2df3e321 Daniel Campello 2019-10-08 208 if (val > 1)
fdf0fe2df3e321 Daniel Campello 2019-10-08 209 return -EINVAL;
fdf0fe2df3e321 Daniel Campello 2019-10-08 210
fdf0fe2df3e321 Daniel Campello 2019-10-08 211 memset(&rq, 0, sizeof(rq));
fdf0fe2df3e321 Daniel Campello 2019-10-08 212 rq.cmd = CMD_USB_CHARGE;
fdf0fe2df3e321 Daniel Campello 2019-10-08 213 rq.op = USB_CHARGE_SET;
fdf0fe2df3e321 Daniel Campello 2019-10-08 214 rq.val = val;
fdf0fe2df3e321 Daniel Campello 2019-10-08 215
fdf0fe2df3e321 Daniel Campello 2019-10-08 216 ret = send_usb_charge(ec, &rq, &rs);
fdf0fe2df3e321 Daniel Campello 2019-10-08 217 if (ret < 0)
fdf0fe2df3e321 Daniel Campello 2019-10-08 218 return ret;
fdf0fe2df3e321 Daniel Campello 2019-10-08 219
fdf0fe2df3e321 Daniel Campello 2019-10-08 220 return count;
fdf0fe2df3e321 Daniel Campello 2019-10-08 221 }
fdf0fe2df3e321 Daniel Campello 2019-10-08 222
fdf0fe2df3e321 Daniel Campello 2019-10-08 @223 static DEVICE_ATTR_RW(usb_charge);
79e3f1d3db3d99 Raul E Rangel 2019-06-03 224
4c1ca625c622b7 Nick Crews 2019-04-16 225 static struct attribute *wilco_dev_attrs[] = {
4c1ca625c622b7 Nick Crews 2019-04-16 @226 &dev_attr_boot_on_ac.attr,
79e3f1d3db3d99 Raul E Rangel 2019-06-03 @227 &dev_attr_build_date.attr,
79e3f1d3db3d99 Raul E Rangel 2019-06-03 @228 &dev_attr_build_revision.attr,
79e3f1d3db3d99 Raul E Rangel 2019-06-03 @229 &dev_attr_model_number.attr,
fdf0fe2df3e321 Daniel Campello 2019-10-08 @230 &dev_attr_usb_charge.attr,
79e3f1d3db3d99 Raul E Rangel 2019-06-03 @231 &dev_attr_version.attr,
4c1ca625c622b7 Nick Crews 2019-04-16 232 NULL,
4c1ca625c622b7 Nick Crews 2019-04-16 233 };
4c1ca625c622b7 Nick Crews 2019-04-16 234
4c1ca625c622b7 Nick Crews 2019-04-16 235 static struct attribute_group wilco_dev_attr_group = {
4c1ca625c622b7 Nick Crews 2019-04-16 236 .attrs = wilco_dev_attrs,
4c1ca625c622b7 Nick Crews 2019-04-16 237 };
4c1ca625c622b7 Nick Crews 2019-04-16 238
4c1ca625c622b7 Nick Crews 2019-04-16 239 int wilco_ec_add_sysfs(struct wilco_ec_device *ec)
4c1ca625c622b7 Nick Crews 2019-04-16 240 {
4c1ca625c622b7 Nick Crews 2019-04-16 @241 return sysfs_create_group(&ec->dev->kobj, &wilco_dev_attr_group);
4c1ca625c622b7 Nick Crews 2019-04-16 242 }
4c1ca625c622b7 Nick Crews 2019-04-16 243
4c1ca625c622b7 Nick Crews 2019-04-16 244 void wilco_ec_remove_sysfs(struct wilco_ec_device *ec)
4c1ca625c622b7 Nick Crews 2019-04-16 245 {
4c1ca625c622b7 Nick Crews 2019-04-16 @246 sysfs_remove_group(&ec->dev->kobj, &wilco_dev_attr_group);

:::::: The code at line 69 was first introduced by commit
:::::: 4c1ca625c622b7a9f04c2949fd1ffdc6effa86de platform/chrome: wilco_ec: Add Boot on AC support

:::::: TO: Nick Crews <ncrews@xxxxxxxxxxxx>
:::::: CC: Enric Balletbo i Serra <enric.balletbo@xxxxxxxxxxxxx>

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

Attachment: .config.gz
Description: application/gzip