Lines Matching defs:vib

70  * @vib: pointer to vibrator structure
73 static int pm8xxx_vib_set(struct pm8xxx_vib *vib, bool on)
76 unsigned int val = vib->reg_vib_drv;
77 const struct pm8xxx_regs *regs = vib->regs;
80 val |= (vib->level << regs->drv_shift) & regs->drv_mask;
84 rc = regmap_write(vib->regmap, regs->drv_addr, val);
88 vib->reg_vib_drv = val;
91 rc = regmap_update_bits(vib->regmap, regs->enable_addr,
103 struct pm8xxx_vib *vib = container_of(work, struct pm8xxx_vib, work);
104 const struct pm8xxx_regs *regs = vib->regs;
108 rc = regmap_read(vib->regmap, regs->drv_addr, &val);
116 if (vib->speed) {
117 vib->active = true;
118 vib->level = ((VIB_MAX_LEVELS * vib->speed) / MAX_FF_SPEED) +
120 vib->level /= 100;
122 vib->active = false;
123 vib->level = VIB_MIN_LEVEL_mV / 100;
126 pm8xxx_vib_set(vib, vib->active);
137 struct pm8xxx_vib *vib = input_get_drvdata(dev);
139 cancel_work_sync(&vib->work);
140 if (vib->active)
141 pm8xxx_vib_set(vib, false);
145 * pm8xxx_vib_play_effect - function to handle vib effects.
155 struct pm8xxx_vib *vib = input_get_drvdata(dev);
157 vib->speed = effect->u.rumble.strong_magnitude >> 8;
158 if (!vib->speed)
159 vib->speed = effect->u.rumble.weak_magnitude >> 9;
161 schedule_work(&vib->work);
168 struct pm8xxx_vib *vib;
174 vib = devm_kzalloc(&pdev->dev, sizeof(*vib), GFP_KERNEL);
175 if (!vib)
178 vib->regmap = dev_get_regmap(pdev->dev.parent, NULL);
179 if (!vib->regmap)
186 INIT_WORK(&vib->work, pm8xxx_work_handler);
187 vib->vib_input_dev = input_dev;
192 error = regmap_read(vib->regmap, regs->drv_addr, &val);
197 error = regmap_write(vib->regmap, regs->drv_addr, val);
201 vib->regs = regs;
202 vib->reg_vib_drv = val;
207 input_set_drvdata(input_dev, vib);
208 input_set_capability(vib->vib_input_dev, EV_FF, FF_RUMBLE);
224 platform_set_drvdata(pdev, vib);
230 struct pm8xxx_vib *vib = dev_get_drvdata(dev);
233 pm8xxx_vib_set(vib, false);
241 { .compatible = "qcom,pm8058-vib", .data = &pm8058_regs },
242 { .compatible = "qcom,pm8921-vib", .data = &pm8058_regs },
243 { .compatible = "qcom,pm8916-vib", .data = &pm8916_regs },
251 .name = "pm8xxx-vib",