Lines Matching refs:chan
125 static esp_err_t etm_chan_register_to_group(esp_etm_channel_t *chan) in etm_chan_register_to_group() argument
137 group->chans[j] = chan; in etm_chan_register_to_group()
146 chan->chan_id = chan_id; in etm_chan_register_to_group()
147 chan->group = group; in etm_chan_register_to_group()
155 static void etm_chan_unregister_from_group(esp_etm_channel_t *chan) in etm_chan_unregister_from_group() argument
157 etm_group_t *group = chan->group; in etm_chan_unregister_from_group()
158 int chan_id = chan->chan_id; in etm_chan_unregister_from_group()
166 static esp_err_t etm_chan_destroy(esp_etm_channel_t *chan) in etm_chan_destroy() argument
168 if (chan->group) { in etm_chan_destroy()
169 etm_chan_unregister_from_group(chan); in etm_chan_destroy()
171 free(chan); in etm_chan_destroy()
181 esp_etm_channel_t *chan = NULL; in esp_etm_new_channel() local
184 chan = heap_caps_calloc(1, sizeof(esp_etm_channel_t), ETM_MEM_ALLOC_CAPS); in esp_etm_new_channel()
185 ESP_GOTO_ON_FALSE(chan, ESP_ERR_NO_MEM, err, TAG, "no mem for channel"); in esp_etm_new_channel()
187 ESP_GOTO_ON_ERROR(etm_chan_register_to_group(chan), err, TAG, "register channel failed"); in esp_etm_new_channel()
188 etm_group_t *group = chan->group; in esp_etm_new_channel()
190 int chan_id = chan->chan_id; in esp_etm_new_channel()
192 chan->fsm = ETM_CHAN_FSM_INIT; in esp_etm_new_channel()
193 ESP_LOGD(TAG, "new etm channel (%d,%d) at %p", group_id, chan_id, chan); in esp_etm_new_channel()
194 *ret_chan = chan; in esp_etm_new_channel()
198 if (chan) { in esp_etm_new_channel()
199 etm_chan_destroy(chan); in esp_etm_new_channel()
204 esp_err_t esp_etm_del_channel(esp_etm_channel_handle_t chan) in esp_etm_del_channel() argument
206 ESP_RETURN_ON_FALSE(chan, ESP_ERR_INVALID_ARG, TAG, "invalid args"); in esp_etm_del_channel()
207 …ESP_RETURN_ON_FALSE(chan->fsm == ETM_CHAN_FSM_INIT, ESP_ERR_INVALID_STATE, TAG, "channel is not in… in esp_etm_del_channel()
208 etm_group_t *group = chan->group; in esp_etm_del_channel()
210 int chan_id = chan->chan_id; in esp_etm_del_channel()
218 ESP_RETURN_ON_ERROR(etm_chan_destroy(chan), TAG, "destroy etm channel failed"); in esp_etm_del_channel()
222 esp_err_t esp_etm_channel_enable(esp_etm_channel_handle_t chan) in esp_etm_channel_enable() argument
224 ESP_RETURN_ON_FALSE(chan, ESP_ERR_INVALID_ARG, TAG, "invalid argument"); in esp_etm_channel_enable()
225 …ESP_RETURN_ON_FALSE(chan->fsm == ETM_CHAN_FSM_INIT, ESP_ERR_INVALID_STATE, TAG, "channel is not in… in esp_etm_channel_enable()
226 etm_group_t *group = chan->group; in esp_etm_channel_enable()
227 etm_ll_enable_channel(group->hal.regs, chan->chan_id); in esp_etm_channel_enable()
228 chan->fsm = ETM_CHAN_FSM_ENABLE; in esp_etm_channel_enable()
232 esp_err_t esp_etm_channel_disable(esp_etm_channel_handle_t chan) in esp_etm_channel_disable() argument
234 ESP_RETURN_ON_FALSE(chan, ESP_ERR_INVALID_ARG, TAG, "invalid argument"); in esp_etm_channel_disable()
235 …ESP_RETURN_ON_FALSE(chan->fsm == ETM_CHAN_FSM_ENABLE, ESP_ERR_INVALID_STATE, TAG, "channel not in … in esp_etm_channel_disable()
236 etm_group_t *group = chan->group; in esp_etm_channel_disable()
237 etm_ll_disable_channel(group->hal.regs, chan->chan_id); in esp_etm_channel_disable()
238 chan->fsm = ETM_CHAN_FSM_INIT; in esp_etm_channel_disable()
242 esp_err_t esp_etm_channel_connect(esp_etm_channel_handle_t chan, esp_etm_event_handle_t event, esp_… in esp_etm_channel_connect() argument
244 ESP_RETURN_ON_FALSE(chan, ESP_ERR_INVALID_ARG, TAG, "invalid argument"); in esp_etm_channel_connect()
245 etm_group_t *group = chan->group; in esp_etm_channel_connect()
256 etm_ll_channel_set_event(group->hal.regs, chan->chan_id, event_id); in esp_etm_channel_connect()
257 etm_ll_channel_set_task(group->hal.regs, chan->chan_id, task_id); in esp_etm_channel_connect()
258 chan->event = event; in esp_etm_channel_connect()
259 chan->task = task; in esp_etm_channel_connect()
260 ESP_LOGD(TAG, "event %"PRIu32" => channel %d", event_id, chan->chan_id); in esp_etm_channel_connect()
261 ESP_LOGD(TAG, "channel %d => task %"PRIu32, chan->chan_id, task_id); in esp_etm_channel_connect()