hook: add pwm hook around init
Signed-off-by: Thomas Ingleby <thomas.c.ingleby@intel.com> Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
committed by
Brendan Le Foll
parent
62a1493bdf
commit
dd9129d411
@@ -54,5 +54,7 @@ typedef struct {
|
|||||||
mraa_result_t (*aio_init_pre) (unsigned int aio);
|
mraa_result_t (*aio_init_pre) (unsigned int aio);
|
||||||
mraa_result_t (*aio_init_post) (mraa_aio_context dev);
|
mraa_result_t (*aio_init_post) (mraa_aio_context dev);
|
||||||
|
|
||||||
|
mraa_result_t (*pwm_init_pre) (int pin);
|
||||||
|
mraa_result_t (*pwm_init_post) (mraa_pwm_context pwm);
|
||||||
mraa_result_t (*pwm_period_replace) (mraa_pwm_context dev, int period);
|
mraa_result_t (*pwm_period_replace) (mraa_pwm_context dev, int period);
|
||||||
} mraa_adv_func_t;
|
} mraa_adv_func_t;
|
||||||
|
|||||||
@@ -124,12 +124,26 @@ mraa_pwm_read_duty(mraa_pwm_context dev)
|
|||||||
|
|
||||||
mraa_pwm_context
|
mraa_pwm_context
|
||||||
mraa_pwm_init(int pin) {
|
mraa_pwm_init(int pin) {
|
||||||
|
if (advance_func->pwm_init_pre != NULL) {
|
||||||
|
if (advance_func->pwm_init_pre(pin) != MRAA_SUCCESS)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
mraa_pin_t* pinm = mraa_setup_pwm(pin);
|
mraa_pin_t* pinm = mraa_setup_pwm(pin);
|
||||||
if (pinm == NULL)
|
if (pinm == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
int chip = pinm->parent_id;
|
int chip = pinm->parent_id;
|
||||||
int pinn = pinm->pinmap;
|
int pinn = pinm->pinmap;
|
||||||
free(pinm);
|
free(pinm);
|
||||||
|
|
||||||
|
if (advance_func->gpio_init_post != NULL) {
|
||||||
|
mraa_pwm_context pret = mraa_pwm_init_raw(chip,pinn);
|
||||||
|
mraa_result_t ret = advance_func->pwm_init_post(pret);
|
||||||
|
if (ret != MRAA_SUCCESS) {
|
||||||
|
free(pret);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return pret;
|
||||||
|
}
|
||||||
return mraa_pwm_init_raw(chip,pinn);
|
return mraa_pwm_init_raw(chip,pinn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user