Example #1
0
void pwm_release(struct pwm_device *p)
{
    mutex_lock(&device_list_mutex);

    if (!test_and_clear_bit(FLAG_REQUESTED, &p->flags)) {
        pr_debug("%s pwm device is not requested!\n",
                 dev_name(p->dev));
        goto done;
    }

    pwm_stop(p);
    pwm_unsynchronize(p, NULL);
    pwm_set_handler(p, NULL, NULL);

    p->label = NULL;
    p->pid = -1;

    if (p->ops->release)
        p->ops->release(p);
done:
    mutex_unlock(&device_list_mutex);
}
pwm_result_t pwm_unsync(pwm_handle handle, pwm_handle from_handle)
{
	struct pwm_internal *pwm, *from_pwm;

	struct pwm_channel *p, *from_p;
	pwm_result_t ret = PWM_OK;

	pwm = (pwm_internal *)handle;	
	from_pwm = (pwm_internal *)from_handle;
	
	if (!pwm || (PWM_MAGIC !=pwm->magic) || !pwm->data ||  \
		 !from_pwm || (PWM_MAGIC != from_pwm->magic) || !from_pwm->data)
	{
		return PWM_INVALID_PARAM;
	}

	p = (struct pwm_channel *)pwm->data;
	from_p = (struct pwm_channel *)from_pwm->data;
	if (pwm_unsynchronize(p, from_p)) {
		ret = PWM_NOT_IMPLEMENTED;
	}	
	return ret;
}