Lines Matching defs:iqs62x
14 * Link to conversion tool: https://github.com/jlabundy/iqs62x-h2bin.git
27 #include <linux/mfd/iqs62x.h>
110 static int iqs62x_dev_init(struct iqs62x_core *iqs62x)
117 list_for_each_entry(fw_blk, &iqs62x->fw_blk_head, list) {
119 ret = regmap_update_bits(iqs62x->regmap, fw_blk->addr,
122 ret = regmap_raw_write(iqs62x->regmap, fw_blk->addr,
128 switch (iqs62x->dev_desc->prod_num) {
131 ret = regmap_read(iqs62x->regmap,
132 iqs62x->dev_desc->prox_settings, &val);
137 iqs62x->ui_sel = IQS62X_UI_SAR1;
142 ret = regmap_write(iqs62x->regmap, IQS620_GLBL_EVENT_MASK,
144 iqs62x->dev_desc->prox_mask |
145 iqs62x->dev_desc->sar_mask |
146 iqs62x->dev_desc->hall_mask |
147 iqs62x->dev_desc->hyst_mask |
148 iqs62x->dev_desc->temp_mask |
149 iqs62x->dev_desc->als_mask |
150 iqs62x->dev_desc->ir_mask);
156 ret = regmap_write(iqs62x->regmap, IQS624_HALL_UI,
173 ret = regmap_read(iqs62x->regmap, IQS624_INTERVAL_DIV, &val);
177 if (val >= iqs62x->dev_desc->interval_div)
180 ret = regmap_write(iqs62x->regmap, IQS624_INTERVAL_DIV,
181 iqs62x->dev_desc->interval_div);
186 ret = regmap_read(iqs62x->regmap, IQS62X_SYS_SETTINGS, &val);
191 clk_div = iqs62x->dev_desc->clk_div;
193 ret = regmap_write(iqs62x->regmap, IQS62X_SYS_SETTINGS, val |
200 ret = regmap_read_poll_timeout(iqs62x->regmap, IQS62X_SYS_FLAGS, val,
212 static int iqs62x_firmware_parse(struct iqs62x_core *iqs62x,
215 struct i2c_client *client = iqs62x->client;
243 if (fw_rec->data == iqs62x->dev_desc->prod_num)
254 ret = regmap_write(iqs62x->regmap,
260 ret = regmap_read(iqs62x->regmap,
324 list_add(&fw_blk->list, &iqs62x->fw_blk_head);
443 struct iqs62x_core *iqs62x = context;
444 struct i2c_client *client = iqs62x->client;
458 ret = regmap_raw_read(iqs62x->regmap, IQS62X_SYS_FLAGS, event_map,
467 event_reg = iqs62x->dev_desc->event_regs[iqs62x->ui_sel][i];
492 event_map[i] <<= iqs62x->dev_desc->hyst_shift;
522 ret = iqs62x_dev_init(iqs62x);
530 ret = blocking_notifier_call_chain(&iqs62x->nh, event_flags,
547 struct iqs62x_core *iqs62x = context;
548 struct i2c_client *client = iqs62x->client;
552 ret = iqs62x_firmware_parse(iqs62x, fw);
560 ret = iqs62x_dev_init(iqs62x);
568 client->name, iqs62x);
575 iqs62x->dev_desc->sub_devs,
576 iqs62x->dev_desc->num_sub_devs,
582 complete_all(&iqs62x->fw_done);
587 .name = "iqs62x-keys",
599 .name = "iqs62x-keys",
610 .name = "iqs62x-keys",
618 .name = "iqs62x-keys",
626 .name = "iqs62x-keys",
634 .name = "iqs62x-keys",
881 struct iqs62x_core *iqs62x;
888 iqs62x = devm_kzalloc(&client->dev, sizeof(*iqs62x), GFP_KERNEL);
889 if (!iqs62x)
892 i2c_set_clientdata(client, iqs62x);
893 iqs62x->client = client;
895 BLOCKING_INIT_NOTIFIER_HEAD(&iqs62x->nh);
896 INIT_LIST_HEAD(&iqs62x->fw_blk_head);
897 init_completion(&iqs62x->fw_done);
899 iqs62x->regmap = devm_regmap_init_i2c(client, &iqs62x_map_config);
900 if (IS_ERR(iqs62x->regmap)) {
901 ret = PTR_ERR(iqs62x->regmap);
907 ret = regmap_raw_read(iqs62x->regmap, IQS62X_PROD_NUM, &info,
929 iqs62x->dev_desc = &iqs62x_devs[i];
931 if (info.sw_num < iqs62x->dev_desc->sw_num)
943 for (j = 0; j < iqs62x->dev_desc->num_cal_regs; j++) {
944 ret = regmap_read(iqs62x->regmap,
945 iqs62x->dev_desc->cal_regs[j], &val);
960 if (j == iqs62x->dev_desc->num_cal_regs)
964 if (!iqs62x->dev_desc) {
984 fw_name ? : iqs62x->dev_desc->fw_name,
985 &client->dev, GFP_KERNEL, iqs62x,
995 struct iqs62x_core *iqs62x = i2c_get_clientdata(client);
997 wait_for_completion(&iqs62x->fw_done);
1004 struct iqs62x_core *iqs62x = dev_get_drvdata(dev);
1007 wait_for_completion(&iqs62x->fw_done);
1013 ret = regmap_update_bits(iqs62x->regmap, IQS62X_PWR_SETTINGS,
1018 return regmap_update_bits(iqs62x->regmap, IQS62X_PWR_SETTINGS,
1025 struct iqs62x_core *iqs62x = dev_get_drvdata(dev);
1028 ret = regmap_update_bits(iqs62x->regmap, IQS62X_PWR_SETTINGS,
1034 return regmap_update_bits(iqs62x->regmap, IQS62X_PWR_SETTINGS,
1052 .name = "iqs62x",