Lines Matching defs:vib
71 * @vib: pointer to vibrator structure
74 static int pm8xxx_vib_set(struct pm8xxx_vib *vib, bool on)
77 unsigned int val = vib->reg_vib_drv;
78 const struct pm8xxx_regs *regs = vib->regs;
81 val |= (vib->level << regs->drv_shift) & regs->drv_mask;
85 rc = regmap_write(vib->regmap, regs->drv_addr, val);
89 vib->reg_vib_drv = val;
92 rc = regmap_update_bits(vib->regmap, regs->enable_addr,
104 struct pm8xxx_vib *vib = container_of(work, struct pm8xxx_vib, work);
105 const struct pm8xxx_regs *regs = vib->regs;
109 rc = regmap_read(vib->regmap, regs->drv_addr, &val);
117 if (vib->speed) {
118 vib->active = true;
119 vib->level = ((VIB_MAX_LEVELS * vib->speed) / MAX_FF_SPEED) +
121 vib->level /= 100;
123 vib->active = false;
124 vib->level = VIB_MIN_LEVEL_mV / 100;
127 pm8xxx_vib_set(vib, vib->active);
138 struct pm8xxx_vib *vib = input_get_drvdata(dev);
140 cancel_work_sync(&vib->work);
141 if (vib->active)
142 pm8xxx_vib_set(vib, false);
146 * pm8xxx_vib_play_effect - function to handle vib effects.
156 struct pm8xxx_vib *vib = input_get_drvdata(dev);
158 vib->speed = effect->u.rumble.strong_magnitude >> 8;
159 if (!vib->speed)
160 vib->speed = effect->u.rumble.weak_magnitude >> 9;
162 schedule_work(&vib->work);
169 struct pm8xxx_vib *vib;
175 vib = devm_kzalloc(&pdev->dev, sizeof(*vib), GFP_KERNEL);
176 if (!vib)
179 vib->regmap = dev_get_regmap(pdev->dev.parent, NULL);
180 if (!vib->regmap)
187 INIT_WORK(&vib->work, pm8xxx_work_handler);
188 vib->vib_input_dev = input_dev;
193 error = regmap_read(vib->regmap, regs->drv_addr, &val);
198 error = regmap_write(vib->regmap, regs->drv_addr, val);
202 vib->regs = regs;
203 vib->reg_vib_drv = val;
208 input_set_drvdata(input_dev, vib);
209 input_set_capability(vib->vib_input_dev, EV_FF, FF_RUMBLE);
225 platform_set_drvdata(pdev, vib);
231 struct pm8xxx_vib *vib = dev_get_drvdata(dev);
234 pm8xxx_vib_set(vib, false);
242 { .compatible = "qcom,pm8058-vib", .data = &pm8058_regs },
243 { .compatible = "qcom,pm8921-vib", .data = &pm8058_regs },
244 { .compatible = "qcom,pm8916-vib", .data = &pm8916_regs },
252 .name = "pm8xxx-vib",