summaryrefslogtreecommitdiff
path: root/goodix_brl_fwupdate.c
diff options
context:
space:
mode:
authorWendly Li <wendlyli@google.com>2022-01-06 09:01:00 +0000
committerWendly Li <wendlyli@google.com>2022-01-21 03:53:33 +0000
commita98db72b2549ace0277afd2812121e33f3728a0e (patch)
treeab6e67950714068630da586b4f3138f7095869f2 /goodix_brl_fwupdate.c
parentd89ca0d2b1e77ec679682b0d7f7bcd858b7a6d44 (diff)
downloadgoodix_touch-a98db72b2549ace0277afd2812121e33f3728a0e.tar.gz
Fix build error
Bug: 214018056 Bug: 214118475 Test: Build pass Change-Id: I1facac45138fdc70862aa597be380dae6cf4f7fe Signed-off-by: Wendly Li <wendlyli@google.com>
Diffstat (limited to 'goodix_brl_fwupdate.c')
-rw-r--r--goodix_brl_fwupdate.c62
1 files changed, 25 insertions, 37 deletions
diff --git a/goodix_brl_fwupdate.c b/goodix_brl_fwupdate.c
index b01d572..7f304ba 100644
--- a/goodix_brl_fwupdate.c
+++ b/goodix_brl_fwupdate.c
@@ -261,7 +261,7 @@ struct fw_update_ctrl {
struct goodix_ts_core *core_data;
struct update_info_t *update_info;
- struct bin_attribute attr_fwimage;
+ struct attribute_group attrs;
struct kobject *kobj;
};
static struct fw_update_ctrl goodix_fw_update_ctrl;
@@ -995,7 +995,7 @@ err_fw_prepare:
* '5'[101] update in unblocking mode with fwdata from sysfs
* '6'[110] update in unblocking mode with fwdata from request
*/
-static ssize_t goodix_sysfs_update_en_store(struct device *dev,
+static ssize_t update_en_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t count)
{
int ret = 0;
@@ -1036,9 +1036,8 @@ static ssize_t goodix_sysfs_update_en_store(struct device *dev,
return -EINVAL;
}
-static ssize_t goodix_sysfs_fwimage_store(struct file *file,
- struct kobject *kobj, struct bin_attribute *attr, char *buf, loff_t pos,
- size_t count)
+static ssize_t fwimage_write(struct file *file, struct kobject *kobj,
+ struct bin_attribute *attr, char *buf, loff_t pos, size_t count)
{
struct firmware **fw = &goodix_fw_update_ctrl.fw_data.fw_sysfs;
@@ -1063,7 +1062,7 @@ static ssize_t goodix_sysfs_fwimage_store(struct file *file,
}
/* return fw_update result */
-static ssize_t goodix_sysfs_result_show(
+static ssize_t result_show(
struct device *dev, struct device_attribute *attr, char *buf)
{
struct fw_update_ctrl *fw_ctrl = &goodix_fw_update_ctrl;
@@ -1098,16 +1097,25 @@ static ssize_t goodix_sysfs_result_show(
return r;
}
-static DEVICE_ATTR(update_en, 0220, NULL, goodix_sysfs_update_en_store);
-static DEVICE_ATTR(result, 0664, goodix_sysfs_result_show, NULL);
+static DEVICE_ATTR_WO(update_en);
+static DEVICE_ATTR_RO(result);
-static struct attribute *goodix_fwu_attrs[] = { &dev_attr_update_en.attr,
- &dev_attr_result.attr };
+static struct attribute *goodix_attrs[] = {
+ &dev_attr_update_en.attr,
+ &dev_attr_result.attr,
+ NULL,
+};
+
+static BIN_ATTR_WO(fwimage, 0);
+static struct bin_attribute *goodix_bin_attrs[] = {
+ &bin_attr_fwimage,
+ NULL,
+};
static int goodix_fw_sysfs_init(
struct goodix_ts_core *core_data, struct fw_update_ctrl *fw_ctrl)
{
- int ret = 0, i;
+ int ret = 0;
fw_ctrl->kobj =
kobject_create_and_add("fwupdate", &core_data->pdev->dev.kobj);
@@ -1116,28 +1124,13 @@ static int goodix_fw_sysfs_init(
return -EINVAL;
}
- for (i = 0; i < ARRAY_SIZE(goodix_fwu_attrs) && !ret; i++)
- ret = sysfs_create_file(fw_ctrl->kobj, goodix_fwu_attrs[i]);
-
- if (ret) {
- ts_err("failed create fwu sysfs files");
- while (--i >= 0)
- sysfs_remove_file(fw_ctrl->kobj, goodix_fwu_attrs[i]);
-
- kobject_put(fw_ctrl->kobj);
- return -EINVAL;
- }
-
- fw_ctrl->attr_fwimage.attr.name = "fwimage";
- fw_ctrl->attr_fwimage.attr.mode = 0664;
- fw_ctrl->attr_fwimage.size = 0;
- fw_ctrl->attr_fwimage.write = goodix_sysfs_fwimage_store;
- ret = sysfs_create_bin_file(fw_ctrl->kobj, &fw_ctrl->attr_fwimage);
+ fw_ctrl->attrs.attrs = goodix_attrs;
+ fw_ctrl->attrs.bin_attrs = goodix_bin_attrs;
+ ret = sysfs_create_group(fw_ctrl->kobj, &fw_ctrl->attrs);
if (ret) {
- ts_err("failed create fwimage bin node, %d", ret);
- for (i = 0; i < ARRAY_SIZE(goodix_fwu_attrs); i++)
- sysfs_remove_file(fw_ctrl->kobj, goodix_fwu_attrs[i]);
+ ts_err("Cannot create sysfs structure!\n");
kobject_put(fw_ctrl->kobj);
+ return -ENODEV;
}
return ret;
@@ -1146,13 +1139,8 @@ static int goodix_fw_sysfs_init(
static void goodix_fw_sysfs_remove(void)
{
struct fw_update_ctrl *fw_ctrl = &goodix_fw_update_ctrl;
- int i;
-
- sysfs_remove_bin_file(fw_ctrl->kobj, &fw_ctrl->attr_fwimage);
-
- for (i = 0; i < ARRAY_SIZE(goodix_fwu_attrs); i++)
- sysfs_remove_file(fw_ctrl->kobj, goodix_fwu_attrs[i]);
+ sysfs_remove_group(fw_ctrl->kobj, &fw_ctrl->attrs);
kobject_put(fw_ctrl->kobj);
}