Lines Matching refs:obj

74 #define _CYHAL_CNT_NUM _CYHAL_TCPWM_CNT_NUMBER(obj->tcpwm.resource)
216 static cy_rslt_t _cyhal_quaddec_pin_init(cyhal_quaddec_t *obj, cyhal_gpio_t pin, cyhal_gpio_t *obj_… in _cyhal_quaddec_pin_init() argument
245 rslt = cyhal_gpio_enable_output(pin, signal_type, &(obj->tcpwm.inputs[idx])); in _cyhal_quaddec_pin_init()
250 rslt = cyhal_quaddec_connect_digital(obj, obj->tcpwm.inputs[idx], input); in _cyhal_quaddec_pin_init()
253 obj->tcpwm.inputs[idx] = CYHAL_TRIGGER_CPUSS_ZERO; in _cyhal_quaddec_pin_init()
258 rslt = _cyhal_quaddec_connect_pin(input, pin, obj->tcpwm.base, in _cyhal_quaddec_pin_init()
259 obj->tcpwm.resource.channel_num); in _cyhal_quaddec_pin_init()
283 cy_rslt_t _cyhal_quaddec_init_hw(cyhal_quaddec_t *obj, const cy_stc_tcpwm_quaddec_config_t *config,… in _cyhal_quaddec_init_hw() argument
286obj->last_counter_value = 1 << (_CYHAL_TCPWM_DATA[_CYHAL_TCPWM_ADJUST_BLOCK_INDEX(obj->tcpwm.resou… in _cyhal_quaddec_init_hw()
288obj->tcpwm.base = _CYHAL_TCPWM_DATA[_CYHAL_TCPWM_ADJUST_BLOCK_INDEX(obj->tcpwm.resource.block_num)… in _cyhal_quaddec_init_hw()
289 _cyhal_tcpwm_init_data(&obj->tcpwm); in _cyhal_quaddec_init_hw()
291 cy_rslt_t rslt = Cy_TCPWM_QuadDec_Init(obj->tcpwm.base, _CYHAL_CNT_NUM, config); in _cyhal_quaddec_init_hw()
297 …_CYHAL_TCPWM_ADJUST_BLOCK_INDEX(obj->tcpwm.resource.block_num)].clock_dst + obj->tcpwm.resource.ch… in _cyhal_quaddec_init_hw()
307 obj->tcpwm.clock = *clk; in _cyhal_quaddec_init_hw()
309 … if (_cyhal_utils_peri_pclk_assign_divider(pclk, &(obj->tcpwm.clock)) != CY_SYSCLK_SUCCESS) in _cyhal_quaddec_init_hw()
317 rslt = _cyhal_quaddec_configure_clock(&obj->tcpwm, pclk, frequency); in _cyhal_quaddec_init_hw()
322 obj->tcpwm.clock_hz = cyhal_clock_get_frequency(&obj->tcpwm.clock); in _cyhal_quaddec_init_hw()
328 cy_rslt_t cyhal_quaddec_init(cyhal_quaddec_t *obj, cyhal_gpio_t phi_a, cyhal_gpio_t phi_b, in cyhal_quaddec_init() argument
332 CY_ASSERT(obj != NULL); in cyhal_quaddec_init()
337 memset(obj, 0, sizeof(cyhal_quaddec_t)); in cyhal_quaddec_init()
338 obj->phi_a = NC; in cyhal_quaddec_init()
339 obj->phi_b = NC; in cyhal_quaddec_init()
340 obj->index = NC; in cyhal_quaddec_init()
341 obj->tcpwm.resource.type = CYHAL_RSC_INVALID; in cyhal_quaddec_init()
357 obj->phi_a = phi_a; in cyhal_quaddec_init()
375 NULL, NULL, _cyhal_quaddec_get_phy_a_input_dest, &obj->tcpwm.resource); in cyhal_quaddec_init()
381 rslt = cyhal_hwmgr_allocate(CYHAL_RSC_TCPWM, &obj->tcpwm.resource); in cyhal_quaddec_init()
403 rslt = _cyhal_quaddec_init_hw(obj, &config, clk, frequency); in cyhal_quaddec_init()
412 obj->tcpwm.inputs[phy_a_idx] = phy_a_src;; in cyhal_quaddec_init()
413 …rslt = cyhal_quaddec_connect_digital(obj, obj->tcpwm.inputs[phy_a_idx], CYHAL_QUADDEC_INPUT_PHI_A); in cyhal_quaddec_init()
415 …rslt = _cyhal_quaddec_pin_init(obj, phi_a, &(obj->phi_a), CYHAL_SIGNAL_TYPE_LEVEL, CYHAL_QUADDEC_I… in cyhal_quaddec_init()
420 …rslt = _cyhal_quaddec_pin_init(obj, phi_b, &(obj->phi_b), CYHAL_SIGNAL_TYPE_LEVEL, CYHAL_QUADDEC_I… in cyhal_quaddec_init()
427 …rslt = _cyhal_quaddec_pin_init(obj, index, &(obj->index), CYHAL_SIGNAL_TYPE_EDGE, CYHAL_QUADDEC_IN… in cyhal_quaddec_init()
436 obj->tcpwm.inputs[idx] = CYHAL_TRIGGER_CPUSS_ZERO; in cyhal_quaddec_init()
444 Cy_TCPWM_QuadDec_Enable(obj->tcpwm.base, _CYHAL_CNT_NUM); in cyhal_quaddec_init()
448 cyhal_quaddec_free(obj); in cyhal_quaddec_init()
454 cy_rslt_t cyhal_quaddec_init_cfg(cyhal_quaddec_t *obj, const cyhal_quaddec_configurator_t *cfg) in cyhal_quaddec_init_cfg() argument
456 memset(obj, 0, sizeof(cyhal_quaddec_t)); in cyhal_quaddec_init_cfg()
458 obj->phi_a = NC; in cyhal_quaddec_init_cfg()
459 obj->phi_b = NC; in cyhal_quaddec_init_cfg()
460 obj->index = NC; in cyhal_quaddec_init_cfg()
461 obj->tcpwm.resource = *cfg->resource; in cyhal_quaddec_init_cfg()
462 obj->tcpwm.owned_by_configurator = true; in cyhal_quaddec_init_cfg()
463 …cy_rslt_t result = _cyhal_quaddec_init_hw(obj, cfg->config, cfg->clock, 0u /* Ignored because conf… in cyhal_quaddec_init_cfg()
470 Cy_TCPWM_QuadDec_Enable(obj->tcpwm.base, _CYHAL_CNT_NUM); in cyhal_quaddec_init_cfg()
474 cyhal_quaddec_free(obj); in cyhal_quaddec_init_cfg()
479 void cyhal_quaddec_free(cyhal_quaddec_t *obj) in cyhal_quaddec_free() argument
481 CY_ASSERT(obj != NULL); in cyhal_quaddec_free()
485 if ((obj->phi_a != NC) && (obj->tcpwm.inputs[idx_phi_a] != CYHAL_TRIGGER_CPUSS_ZERO)) in cyhal_quaddec_free()
487 … cyhal_quaddec_disconnect_digital(obj, obj->tcpwm.inputs[idx_phi_a], CYHAL_QUADDEC_INPUT_PHI_A); in cyhal_quaddec_free()
490 if ((obj->phi_b != NC) && (obj->tcpwm.inputs[idx_phi_b] != CYHAL_TRIGGER_CPUSS_ZERO)) in cyhal_quaddec_free()
492 … cyhal_quaddec_disconnect_digital(obj, obj->tcpwm.inputs[idx_phi_b], CYHAL_QUADDEC_INPUT_PHI_B); in cyhal_quaddec_free()
495 if ((obj->index != NC) && (obj->tcpwm.inputs[idx_index] != CYHAL_TRIGGER_CPUSS_ZERO)) in cyhal_quaddec_free()
497 … cyhal_quaddec_disconnect_digital(obj, obj->tcpwm.inputs[idx_index], CYHAL_QUADDEC_INPUT_INDEX); in cyhal_quaddec_free()
500 _cyhal_utils_release_if_used(&obj->phi_a); in cyhal_quaddec_free()
501 _cyhal_utils_release_if_used(&obj->phi_b); in cyhal_quaddec_free()
502 _cyhal_utils_release_if_used(&obj->index); in cyhal_quaddec_free()
503 if (obj->tcpwm.resource.type != CYHAL_RSC_INVALID) in cyhal_quaddec_free()
505 _cyhal_tcpwm_free(&obj->tcpwm); in cyhal_quaddec_free()
509 cy_rslt_t cyhal_quaddec_start(cyhal_quaddec_t *obj) in cyhal_quaddec_start() argument
511 CY_ASSERT(obj != NULL); in cyhal_quaddec_start()
516 Cy_TCPWM_QuadDec_Enable(obj->tcpwm.base, _CYHAL_CNT_NUM); in cyhal_quaddec_start()
522 Cy_TCPWM_TriggerReloadOrIndex_Single(obj->tcpwm.base, _CYHAL_CNT_NUM); in cyhal_quaddec_start()
524 Cy_TCPWM_TriggerReloadOrIndex(obj->tcpwm.base, 1 << _CYHAL_CNT_NUM); in cyhal_quaddec_start()
527obj->last_counter_value = 1 << (_CYHAL_TCPWM_DATA[_CYHAL_TCPWM_ADJUST_BLOCK_INDEX(obj->tcpwm.resou… in cyhal_quaddec_start()
532 cy_rslt_t cyhal_quaddec_stop(cyhal_quaddec_t *obj) in cyhal_quaddec_stop() argument
534 CY_ASSERT(obj != NULL); in cyhal_quaddec_stop()
535 Cy_TCPWM_QuadDec_Disable(obj->tcpwm.base, _CYHAL_CNT_NUM); in cyhal_quaddec_stop()
539 int32_t cyhal_quaddec_get_delta(cyhal_quaddec_t *obj) in cyhal_quaddec_get_delta() argument
541 CY_ASSERT(obj != NULL); in cyhal_quaddec_get_delta()
543 …uint32_t midpoint = 1 << (_CYHAL_TCPWM_DATA[_CYHAL_TCPWM_ADJUST_BLOCK_INDEX(obj->tcpwm.resource.bl… in cyhal_quaddec_get_delta()
546 uint32_t current_counter_value = Cy_TCPWM_QuadDec_GetCounter(obj->tcpwm.base, _CYHAL_CNT_NUM); in cyhal_quaddec_get_delta()
547 int32_t delta = current_counter_value - obj->last_counter_value; in cyhal_quaddec_get_delta()
552 delta = max_counter_value - obj->last_counter_value; in cyhal_quaddec_get_delta()
558 delta = (int32_t)(-obj->last_counter_value); in cyhal_quaddec_get_delta()
562 obj->last_counter_value = current_counter_value; in cyhal_quaddec_get_delta()
567 uint32_t cyhal_quaddec_read_counter(const cyhal_quaddec_t *obj) in cyhal_quaddec_read_counter() argument
569 CY_ASSERT(obj != NULL); in cyhal_quaddec_read_counter()
570 return Cy_TCPWM_QuadDec_GetCounter(obj->tcpwm.base, _CYHAL_CNT_NUM); in cyhal_quaddec_read_counter()
573 uint32_t cyhal_quaddec_read_capture(const cyhal_quaddec_t *obj) in cyhal_quaddec_read_capture() argument
575 CY_ASSERT(obj != NULL); in cyhal_quaddec_read_capture()
577 return Cy_TCPWM_QuadDec_GetCapture0Val(obj->tcpwm.base, _CYHAL_CNT_NUM); in cyhal_quaddec_read_capture()
579 return Cy_TCPWM_QuadDec_GetCapture(obj->tcpwm.base, _CYHAL_CNT_NUM); in cyhal_quaddec_read_capture()
604 cy_rslt_t cyhal_quaddec_connect_digital2(cyhal_quaddec_t *obj, cyhal_source_t source, cyhal_quaddec… in cyhal_quaddec_connect_digital2() argument
607 return _cyhal_tcpwm_connect_digital(&(obj->tcpwm), source, tcpwm_signal, edge_type); in cyhal_quaddec_connect_digital2()
610 cy_rslt_t cyhal_quaddec_connect_digital(cyhal_quaddec_t *obj, cyhal_source_t source, cyhal_quaddec_… in cyhal_quaddec_connect_digital() argument
617 return cyhal_quaddec_connect_digital2(obj, source, signal, edge_type); in cyhal_quaddec_connect_digital()
619 CY_UNUSED_PARAMETER(obj); in cyhal_quaddec_connect_digital()
626 cy_rslt_t cyhal_quaddec_disconnect_digital(cyhal_quaddec_t *obj, cyhal_source_t source, cyhal_quadd… in cyhal_quaddec_disconnect_digital() argument
628 return _cyhal_tcpwm_disconnect_digital(&(obj->tcpwm), source, in cyhal_quaddec_disconnect_digital()
634 cy_rslt_t cyhal_quaddec_connect_digital(cyhal_quaddec_t *obj, cyhal_source_t source, cyhal_quaddec_… in cyhal_quaddec_connect_digital() argument
636 CY_UNUSED_PARAMETER(obj); in cyhal_quaddec_connect_digital()
642 cy_rslt_t cyhal_quaddec_disconnect_digital(cyhal_quaddec_t *obj, cyhal_source_t source, cyhal_quadd… in cyhal_quaddec_disconnect_digital() argument
644 CY_UNUSED_PARAMETER(obj); in cyhal_quaddec_disconnect_digital()
664 cy_rslt_t cyhal_quaddec_enable_output(cyhal_quaddec_t *obj, cyhal_quaddec_output_t signal, cyhal_so… in cyhal_quaddec_enable_output() argument
671 …return _cyhal_tcpwm_enable_output(&(obj->tcpwm), _cyhal_quaddec_translate_output_signal(signal), s… in cyhal_quaddec_enable_output()
674 cy_rslt_t cyhal_quaddec_disable_output(cyhal_quaddec_t *obj, cyhal_quaddec_output_t signal) in cyhal_quaddec_disable_output() argument
679 … return _cyhal_tcpwm_disable_output(&(obj->tcpwm), _cyhal_quaddec_translate_output_signal(signal)); in cyhal_quaddec_disable_output()