/* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
 * Copyright (C) Fraunhofer-Institut for Photonic Microsystems (IPMS)
 * Maria-Reiche-Str. 2
 * 01109 Dresden
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2. This program is licensed "as is" without any
 * warranty of any kind, whether express or implied.
 *
 * \file
 * \author  This file was automatically generated by the HAL_gen.py script
 * \date   14/03/2024
 * \brief  Holds function prototypes for a unified read and write access to ip core registers.
 *
 */

#ifndef CAN_LINUX_HAL_H
#define CAN_LINUX_HAL_H

#include "can_linux_registers.h"
#include "hal_porting.h"

void can_linux_configure_logging(hal_log_t f);

void can_linux_version_read(volatile CAN_CTRL_t *can_linux, uint16_t *VERSION);
void can_linux_nodecfg_read(volatile CAN_CTRL_t *can_linux,
			    CAN_CTRL_NODECFG_t *NODECFG);
void can_linux_nodecfg_write(volatile CAN_CTRL_t *can_linux,
			     const CAN_CTRL_NODECFG_t *NODECFG);
void can_linux_tscfg_read(volatile CAN_CTRL_t *can_linux,
			  CAN_CTRL_TSCFG_t *TSCFG);
void can_linux_tscfg_write(volatile CAN_CTRL_t *can_linux,
			   const CAN_CTRL_TSCFG_t *TSCFG);
void can_linux_ac_time_read(volatile CAN_CTRL_t *can_linux,
			    CAN_CTRL_AC_TIME_t *AC_TIME);
void can_linux_ac_time_write(volatile CAN_CTRL_t *can_linux,
			     const CAN_CTRL_AC_TIME_t *AC_TIME);
void can_linux_fd_time_read(volatile CAN_CTRL_t *can_linux,
			    CAN_CTRL_FD_TIME_t *FD_TIME);
void can_linux_fd_time_write(volatile CAN_CTRL_t *can_linux,
			     const CAN_CTRL_FD_TIME_t *FD_TIME);
void can_linux_xl_time_read(volatile CAN_CTRL_t *can_linux,
			    CAN_CTRL_XL_TIME_t *XL_TIME);
void can_linux_xl_time_write(volatile CAN_CTRL_t *can_linux,
			     const CAN_CTRL_XL_TIME_t *XL_TIME);
void can_linux_presc_read(volatile CAN_CTRL_t *can_linux,
			  CAN_CTRL_PRESC_t *PRESC);
void can_linux_presc_write(volatile CAN_CTRL_t *can_linux,
			   const CAN_CTRL_PRESC_t *PRESC);
void can_linux_fd_tdc_read(volatile CAN_CTRL_t *can_linux, uint8_t *FD_TDC);
void can_linux_fd_tdc_write(volatile CAN_CTRL_t *can_linux,
			    const uint8_t *FD_TDC);
void can_linux_xl_tdc_read(volatile CAN_CTRL_t *can_linux, uint8_t *XL_TDC);
void can_linux_xl_tdc_write(volatile CAN_CTRL_t *can_linux,
			    const uint8_t *XL_TDC);
void can_linux_relim_read(volatile CAN_CTRL_t *can_linux,
			  CAN_CTRL_RELIM_t *RELIM);
void can_linux_relim_write(volatile CAN_CTRL_t *can_linux,
			   const CAN_CTRL_RELIM_t *RELIM);
void can_linux_intf_read(volatile CAN_CTRL_t *can_linux, CAN_CTRL_INTF_t *INTF);
void can_linux_intf_write(volatile CAN_CTRL_t *can_linux,
			  const CAN_CTRL_INTF_t *INTF);
void can_linux_inte_read(volatile CAN_CTRL_t *can_linux, CAN_CTRL_INTE_t *INTE);
void can_linux_inte_write(volatile CAN_CTRL_t *can_linux,
			  const CAN_CTRL_INTE_t *INTE);
void can_linux_tstat_1_read(volatile CAN_CTRL_t *can_linux,
			    CAN_CTRL_TSTAT_1_t *TSTAT_1);
void can_linux_tstat_2_read(volatile CAN_CTRL_t *can_linux,
			    CAN_CTRL_TSTAT_2_t *TSTAT_2);
void can_linux_tts_read(volatile CAN_CTRL_t *can_linux, uint32_t idx,
			uint32_t *TTS);
void can_linux_cfg_stat_read(volatile CAN_CTRL_t *can_linux,
			     CAN_CTRL_CFG_STAT_t *CFG_STAT);
void can_linux_cfg_stat_write(volatile CAN_CTRL_t *can_linux,
			      const CAN_CTRL_CFG_STAT_t *CFG_STAT);
void can_linux_tcmd_read(volatile CAN_CTRL_t *can_linux, CAN_CTRL_TCMD_t *TCMD);
void can_linux_tcmd_write(volatile CAN_CTRL_t *can_linux,
			  const CAN_CTRL_TCMD_t *TCMD);
void can_linux_tctrl_read(volatile CAN_CTRL_t *can_linux,
			  CAN_CTRL_TCTRL_t *TCTRL);
void can_linux_tctrl_write(volatile CAN_CTRL_t *can_linux,
			   const CAN_CTRL_TCTRL_t *TCTRL);
void can_linux_rctrl_read(volatile CAN_CTRL_t *can_linux,
			  CAN_CTRL_RCTRL_t *RCTRL);
void can_linux_rctrl_write(volatile CAN_CTRL_t *can_linux,
			   const CAN_CTRL_RCTRL_t *RCTRL);
void can_linux_limit_read(volatile CAN_CTRL_t *can_linux,
			  CAN_CTRL_LIMIT_t *LIMIT);
void can_linux_limit_write(volatile CAN_CTRL_t *can_linux,
			   const CAN_CTRL_LIMIT_t *LIMIT);
void can_linux_ealcap_read(volatile CAN_CTRL_t *can_linux,
			   CAN_CTRL_EALCAP_t *EALCAP);
void can_linux_recnt_read(volatile CAN_CTRL_t *can_linux, uint8_t *RECNT);
void can_linux_tecnt_read(volatile CAN_CTRL_t *can_linux, uint8_t *TECNT);
void can_linux_ref_msg_read(volatile CAN_CTRL_t *can_linux,
			    CAN_CTRL_REF_MSG_t *REF_MSG);
void can_linux_ref_msg_write(volatile CAN_CTRL_t *can_linux,
			     const CAN_CTRL_REF_MSG_t *REF_MSG);
void can_linux_trigcfg_0_read(volatile CAN_CTRL_t *can_linux,
			      CAN_CTRL_TRIGCFG_0_t *TRIGCFG_0);
void can_linux_trigcfg_0_write(volatile CAN_CTRL_t *can_linux,
			       const CAN_CTRL_TRIGCFG_0_t *TRIGCFG_0);
void can_linux_trigcfg_1_read(volatile CAN_CTRL_t *can_linux,
			      CAN_CTRL_TRIGCFG_1_t *TRIGCFG_1);
void can_linux_trigcfg_1_write(volatile CAN_CTRL_t *can_linux,
			       const CAN_CTRL_TRIGCFG_1_t *TRIGCFG_1);
void can_linux_tbslot_read(volatile CAN_CTRL_t *can_linux,
			   CAN_CTRL_TBSLOT_t *TBSLOT);
void can_linux_tbslot_write(volatile CAN_CTRL_t *can_linux,
			    const CAN_CTRL_TBSLOT_t *TBSLOT);
void can_linux_ttcfg_read(volatile CAN_CTRL_t *can_linux,
			  CAN_CTRL_TTCFG_t *TTCFG);
void can_linux_ttcfg_write(volatile CAN_CTRL_t *can_linux,
			   const CAN_CTRL_TTCFG_t *TTCFG);
void can_linux_tt_trig_read(volatile CAN_CTRL_t *can_linux, uint16_t *TT_TRIG);
void can_linux_tt_trig_write(volatile CAN_CTRL_t *can_linux,
			     const uint16_t *TT_TRIG);
void can_linux_tt_wtrig_read(volatile CAN_CTRL_t *can_linux,
			     uint16_t *TT_WTRIG);
void can_linux_tt_wtrig_write(volatile CAN_CTRL_t *can_linux,
			      const uint16_t *TT_WTRIG);
void can_linux_fscfg_read(volatile CAN_CTRL_t *can_linux,
			  CAN_CTRL_FSCFG_t *FSCFG);
void can_linux_fscfg_write(volatile CAN_CTRL_t *can_linux,
			   const CAN_CTRL_FSCFG_t *FSCFG);
void can_linux_mem_stat_read(volatile CAN_CTRL_t *can_linux,
			     CAN_CTRL_MEM_STAT_t *MEM_STAT);
void can_linux_mem_stat_write(volatile CAN_CTRL_t *can_linux,
			      const CAN_CTRL_MEM_STAT_t *MEM_STAT);
void can_linux_mem_es_0_read(volatile CAN_CTRL_t *can_linux,
			     CAN_CTRL_MEM_ES_0_t *MEM_ES_0);
void can_linux_mem_es_0_write(volatile CAN_CTRL_t *can_linux,
			      const CAN_CTRL_MEM_ES_0_t *MEM_ES_0);
void can_linux_mem_es_1_read(volatile CAN_CTRL_t *can_linux,
			     CAN_CTRL_MEM_ES_1_t *MEM_ES_1);
void can_linux_mem_es_1_write(volatile CAN_CTRL_t *can_linux,
			      const CAN_CTRL_MEM_ES_1_t *MEM_ES_1);
void can_linux_mem_es_2_read(volatile CAN_CTRL_t *can_linux,
			     CAN_CTRL_MEM_ES_2_t *MEM_ES_2);
void can_linux_mem_es_2_write(volatile CAN_CTRL_t *can_linux,
			      const CAN_CTRL_MEM_ES_2_t *MEM_ES_2);
void can_linux_mem_es_3_read(volatile CAN_CTRL_t *can_linux,
			     CAN_CTRL_MEM_ES_3_t *MEM_ES_3);
void can_linux_mem_es_3_write(volatile CAN_CTRL_t *can_linux,
			      const CAN_CTRL_MEM_ES_3_t *MEM_ES_3);
void can_linux_acfctrl_read(volatile CAN_CTRL_t *can_linux,
			    CAN_CTRL_ACFCTRL_t *ACFCTRL);
void can_linux_acfctrl_write(volatile CAN_CTRL_t *can_linux,
			     const CAN_CTRL_ACFCTRL_t *ACFCTRL);
void can_linux_acf_en_0_read(volatile CAN_CTRL_t *can_linux,
			     CAN_CTRL_ACF_EN_0_t *ACF_EN_0);
void can_linux_acf_en_0_write(volatile CAN_CTRL_t *can_linux,
			      const CAN_CTRL_ACF_EN_0_t *ACF_EN_0);
void can_linux_acf_en_1_read(volatile CAN_CTRL_t *can_linux,
			     CAN_CTRL_ACF_EN_1_t *ACF_EN_1);
void can_linux_acf_en_1_write(volatile CAN_CTRL_t *can_linux,
			      const CAN_CTRL_ACF_EN_1_t *ACF_EN_1);
void can_linux_acfc_identifier_read(volatile CAN_CTRL_t *can_linux,
				    CAN_CTRL_ACFC_IDENTIFIER_t *ACFC_IDENTIFIER);
void can_linux_acfc_identifier_write(
	volatile CAN_CTRL_t *can_linux,
	const CAN_CTRL_ACFC_IDENTIFIER_t *ACFC_IDENTIFIER);
void can_linux_acfc_format_read(volatile CAN_CTRL_t *can_linux,
				CAN_CTRL_ACFC_FORMAT_t *ACFC_FORMAT);
void can_linux_acfc_format_write(volatile CAN_CTRL_t *can_linux,
				 const CAN_CTRL_ACFC_FORMAT_t *ACFC_FORMAT);
void can_linux_acfc_type_read(volatile CAN_CTRL_t *can_linux,
			      CAN_CTRL_ACFC_TYPE_t *ACFC_TYPE);
void can_linux_acfc_type_write(volatile CAN_CTRL_t *can_linux,
			       const CAN_CTRL_ACFC_TYPE_t *ACFC_TYPE);
void can_linux_acfc_acceptance_field_read(volatile CAN_CTRL_t *can_linux,
					  uint32_t *ACFC_ACCEPTANCE_FIELD);
void can_linux_acfc_acceptance_field_write(
	volatile CAN_CTRL_t *can_linux, const uint32_t *ACFC_ACCEPTANCE_FIELD);
void can_linux_acfm_identifier_read(volatile CAN_CTRL_t *can_linux,
				    CAN_CTRL_ACFM_IDENTIFIER_t *ACFM_IDENTIFIER);
void can_linux_acfm_identifier_write(
	volatile CAN_CTRL_t *can_linux,
	const CAN_CTRL_ACFM_IDENTIFIER_t *ACFM_IDENTIFIER);
void can_linux_acfm_format_read(volatile CAN_CTRL_t *can_linux,
				CAN_CTRL_ACFM_FORMAT_t *ACFM_FORMAT);
void can_linux_acfm_format_write(volatile CAN_CTRL_t *can_linux,
				 const CAN_CTRL_ACFM_FORMAT_t *ACFM_FORMAT);
void can_linux_acfm_type_read(volatile CAN_CTRL_t *can_linux,
			      CAN_CTRL_ACFM_TYPE_t *ACFM_TYPE);
void can_linux_acfm_type_write(volatile CAN_CTRL_t *can_linux,
			       const CAN_CTRL_ACFM_TYPE_t *ACFM_TYPE);
void can_linux_acfm_acceptance_field_read(volatile CAN_CTRL_t *can_linux,
					  uint32_t *ACFM_ACCEPTANCE_FIELD);
void can_linux_acfm_acceptance_field_write(
	volatile CAN_CTRL_t *can_linux, const uint32_t *ACFM_ACCEPTANCE_FIELD);
void can_linux_rbuf_identifier_read(volatile CAN_CTRL_t *can_linux,
				    CAN_CTRL_RBUF_IDENTIFIER_t *RBUF_IDENTIFIER);
void can_linux_rbuf_identifier_write(
	volatile CAN_CTRL_t *can_linux,
	const CAN_CTRL_RBUF_IDENTIFIER_t *RBUF_IDENTIFIER);
void can_linux_rbuf_format_read(volatile CAN_CTRL_t *can_linux,
				CAN_CTRL_RBUF_FORMAT_t *RBUF_FORMAT);
void can_linux_rbuf_format_write(volatile CAN_CTRL_t *can_linux,
				 const CAN_CTRL_RBUF_FORMAT_t *RBUF_FORMAT);
void can_linux_rbuf_type_read(volatile CAN_CTRL_t *can_linux,
			      CAN_CTRL_RBUF_TYPE_t *RBUF_TYPE);
void can_linux_rbuf_type_write(volatile CAN_CTRL_t *can_linux,
			       const CAN_CTRL_RBUF_TYPE_t *RBUF_TYPE);
void can_linux_rbuf_acceptance_field_read(volatile CAN_CTRL_t *can_linux,
					  uint32_t *RBUF_ACCEPTANCE_FIELD);
void can_linux_rbuf_acceptance_field_write(
	volatile CAN_CTRL_t *can_linux, const uint32_t *RBUF_ACCEPTANCE_FIELD);
void can_linux_rbuf_payload_read(volatile CAN_CTRL_t *can_linux, uint32_t *data,
				 uint32_t num_elem, uint32_t ofs_elem);
void can_linux_rbuf_payload_write(volatile CAN_CTRL_t *can_linux,
				  const uint32_t *data, uint32_t num_elem,
				  uint32_t ofs_elem);
void can_linux_rbuf_cia_603_read(volatile CAN_CTRL_t *can_linux, uint32_t *data,
				 uint32_t num_elem, uint32_t ofs_elem);
void can_linux_rbuf_cia_603_write(volatile CAN_CTRL_t *can_linux,
				  const uint32_t *data, uint32_t num_elem,
				  uint32_t ofs_elem);
void can_linux_rbuf_ttcan_read(volatile CAN_CTRL_t *can_linux,
			       CAN_CTRL_RBUF_TTCAN_t *RBUF_TTCAN);
void can_linux_rbuf_ttcan_write(volatile CAN_CTRL_t *can_linux,
				const CAN_CTRL_RBUF_TTCAN_t *RBUF_TTCAN);
void can_linux_tbuf_identifier_read(volatile CAN_CTRL_t *can_linux,
				    CAN_CTRL_TBUF_IDENTIFIER_t *TBUF_IDENTIFIER);
void can_linux_tbuf_identifier_write(
	volatile CAN_CTRL_t *can_linux,
	const CAN_CTRL_TBUF_IDENTIFIER_t *TBUF_IDENTIFIER);
void can_linux_tbuf_format_read(volatile CAN_CTRL_t *can_linux,
				CAN_CTRL_TBUF_FORMAT_t *TBUF_FORMAT);
void can_linux_tbuf_format_write(volatile CAN_CTRL_t *can_linux,
				 const CAN_CTRL_TBUF_FORMAT_t *TBUF_FORMAT);
void can_linux_tbuf_type_read(volatile CAN_CTRL_t *can_linux,
			      CAN_CTRL_TBUF_TYPE_t *TBUF_TYPE);
void can_linux_tbuf_type_write(volatile CAN_CTRL_t *can_linux,
			       const CAN_CTRL_TBUF_TYPE_t *TBUF_TYPE);
void can_linux_tbuf_acceptance_field_read(volatile CAN_CTRL_t *can_linux,
					  uint32_t *TBUF_ACCEPTANCE_FIELD);
void can_linux_tbuf_acceptance_field_write(
	volatile CAN_CTRL_t *can_linux, const uint32_t *TBUF_ACCEPTANCE_FIELD);
void can_linux_tbuf_payload_read(volatile CAN_CTRL_t *can_linux, uint32_t *data,
				 uint32_t num_elem, uint32_t ofs_elem);
void can_linux_tbuf_payload_write(volatile CAN_CTRL_t *can_linux,
				  const uint32_t *data, uint32_t num_elem,
				  uint32_t ofs_elem);
void can_linux_pwm_cfg_read(volatile CAN_CTRL_t *can_linux,
			    CAN_CTRL_PWM_CFG_t *PWM_CFG);
void can_linux_pwm_cfg_write(volatile CAN_CTRL_t *can_linux,
			     const CAN_CTRL_PWM_CFG_t *PWM_CFG);
void can_linux_str_cfg_read(volatile CAN_CTRL_t *can_linux,
			    CAN_CTRL_STR_CFG_t *STR_CFG);
void can_linux_str_cfg_write(volatile CAN_CTRL_t *can_linux,
			     const CAN_CTRL_STR_CFG_t *STR_CFG);
void can_linux_llcformat_read(volatile CAN_CTRL_t *can_linux,
			      uint32_t *LLCFORMAT);
void can_linux_llcformat_write(volatile CAN_CTRL_t *can_linux,
			       const uint32_t *LLCFORMAT);
void can_linux_llcsize_read(volatile CAN_CTRL_t *can_linux,
			    CAN_CTRL_LLCSIZE_t *LLCSIZE);

#endif /*CAN_LINUX_HAL_H */