vibrator = devm_kzalloc(&pdev->dev, sizeof(*vibrator), GFP_KERNEL); if (!vibrator) return -ENOMEM;
vibrator->input = devm_input_allocate_device(&pdev->dev); if (!vibrator->input) return -ENOMEM;
vibrator->vcc = devm_regulator_get(&pdev->dev, "vcc"); if (IS_ERR(vibrator->vcc)) return dev_err_probe(&pdev->dev, PTR_ERR(vibrator->vcc), "Failed to request regulator\n");
vibrator->enable_gpio = devm_gpiod_get_optional(&pdev->dev, "enable",
GPIOD_OUT_LOW); if (IS_ERR(vibrator->enable_gpio)) return dev_err_probe(&pdev->dev, PTR_ERR(vibrator->enable_gpio), "Failed to request enable gpio\n");
vibrator->pwm = devm_pwm_get(&pdev->dev, "enable"); if (IS_ERR(vibrator->pwm)) return dev_err_probe(&pdev->dev, PTR_ERR(vibrator->pwm), "Failed to request main pwm\n");
/* Sync up PWM state and ensure it is off. */
pwm_init_state(vibrator->pwm, &state);
state.enabled = false;
err = pwm_apply_might_sleep(vibrator->pwm, &state); if (err) {
dev_err(&pdev->dev, "failed to apply initial PWM state: %d\n",
err); return err;
}
vibrator->pwm_dir = devm_pwm_get(&pdev->dev, "direction");
err = PTR_ERR_OR_ZERO(vibrator->pwm_dir); switch (err) { case 0: /* Sync up PWM state and ensure it is off. */
pwm_init_state(vibrator->pwm_dir, &state);
state.enabled = false;
err = pwm_apply_might_sleep(vibrator->pwm_dir, &state); if (err) {
dev_err(&pdev->dev, "failed to apply initial PWM state: %d\n",
err); return err;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.