diff --git a/hardware/chip/haas1000/csi/pwm.c b/hardware/chip/haas1000/csi/pwm.c index 40f559e101..2d52a581c7 100644 --- a/hardware/chip/haas1000/csi/pwm.c +++ b/hardware/chip/haas1000/csi/pwm.c @@ -65,6 +65,7 @@ static int pwm_csi_init(void) static aos_pwm_csi_t pwm_csi_dev[CONFIG_PWM_NUM]; int i; for (i = 0; i < CONFIG_PWM_NUM; i++) { + ret = csi_pwm_init(&(pwm_csi_dev[i].csi_pwm), idx); pwm_csi_dev[i].csi_pwm.dev.idx |= (i); if (ret != CSI_OK) { return ret; diff --git a/hardware/chip/rtl872xd/aos_adapter/pwm.c b/hardware/chip/rtl872xd/aos_adapter/pwm.c index 661bcb2920..6321bff231 100644 --- a/hardware/chip/rtl872xd/aos_adapter/pwm.c +++ b/hardware/chip/rtl872xd/aos_adapter/pwm.c @@ -207,7 +207,7 @@ static const aos_pwm_ops_t rtl872xd_pwm_ops = { static int rtl872xd_pwm_init(void) { - int ret; + int ret = 0; static rtl872xd_pwm_t pwm_dev[CONFIG_PWM_NUM]; int idx = 0, i; RTIM_TimeBaseInitTypeDef TIM_InitStruct; @@ -216,8 +216,13 @@ static int rtl872xd_pwm_init(void) RTIM_TimeBaseInit(RTL872xD_PWM_TIM[idx], &TIM_InitStruct, TIMER5_IRQ, NULL, (u32)&TIM_InitStruct); RTIM_Cmd(RTL872xD_PWM_TIM[idx], ENABLE); for (i = 0; i < CONFIG_PWM_NUM; i++) { - pwm_dev[i].priv = (TIM_CCInitTypeDef *)malloc(sizeof(TIM_CCInitTypeDef)); - pwm_dev[i].idx = idx << BIT_PWM_TIM_IDX_SHIFT; + if (!pwm_dev[i] || IDX != 0) { + ret = -1; + } + else { + pwm_dev[i].priv = (TIM_CCInitTypeDef *)malloc(sizeof(TIM_CCInitTypeDef)); + pwm_dev[i].idx = idx << BIT_PWM_TIM_IDX_SHIFT; + } pwm_dev[i].idx |= (i) & (~BIT_PWM_TIM_IDX_FLAG); if (ret != 0) { return ret;