From 75bc864cd1645954f0793c081f365f86ea043510 Mon Sep 17 00:00:00 2001 From: Armin Luntzer <armin.luntzer@univie.ac.at> Date: Mon, 15 Jun 2020 12:29:35 +0200 Subject: [PATCH] add FEE HK readout --- FEE/smile_fee_cmd.c | 432 +++++++++++++++++++++++++ FEE/smile_fee_cmd.h | 65 +++- FEE/smile_fee_ctrl.c | 744 +++++++++++++++++++++++++++++++++++++++++++ FEE/smile_fee_ctrl.h | 113 +++++-- 4 files changed, 1320 insertions(+), 34 deletions(-) diff --git a/FEE/smile_fee_cmd.c b/FEE/smile_fee_cmd.c index ef7b742..7e60920 100644 --- a/FEE/smile_fee_cmd.c +++ b/FEE/smile_fee_cmd.c @@ -598,3 +598,435 @@ int fee_write_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd) { return fee_write_cmd_register_internal(trans_id, cmd, FEE_CFG_REG_24); } + + +/** +* @brief create a command to read the FEE HK register 3 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_3(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_3); +} + + +/** +* @brief create a command to read the FEE HK register 4 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_4(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_4); +} + + +/** +* @brief create a command to read the FEE HK register 5 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_5(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_5); +} + + +/** +* @brief create a command to read the FEE HK register 6 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_6(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_6); +} + + +/** +* @brief create a command to read the FEE HK register 7 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_7(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_7); +} + + +/** +* @brief create a command to read the FEE HK register 11 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_11(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_11); +} + + +/** +* @brief create a command to read the FEE HK register 12 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_12(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_12); +} + + +/** +* @brief create a command to read the FEE HK register 13 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_13(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_13); +} + + +/** +* @brief create a command to read the FEE HK register 14 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_14(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_14); +} + + +/** +* @brief create a command to read the FEE HK register 15 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_15(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_15); +} + + +/** +* @brief create a command to read the FEE HK register 16 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_16(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_16); +} + + +/** +* @brief create a command to read the FEE HK register 17 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_17(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_17); +} + + +/** +* @brief create a command to read the FEE HK register 18 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_18(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_18); +} + + +/** +* @brief create a command to read the FEE HK register 19 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_19(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_19); +} + + +/** +* @brief create a command to read the FEE HK register 20 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_20(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_20); +} + + +/** +* @brief create a command to read the FEE HK register 21 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_21(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_21); +} + + +/** +* @brief create a command to read the FEE HK register 22 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_22(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_22); +} + + +/** +* @brief create a command to read the FEE HK register 23 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_23(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_23); +} + + +/** +* @brief create a command to read the FEE HK register 27 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_27(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_27); +} + + +/** +* @brief create a command to read the FEE HK register 28 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_28(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_28); +} + + +/** +* @brief create a command to read the FEE HK register 29 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_29(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_29); +} + + +/** +* @brief create a command to read the FEE HK register 30 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_30(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_30); +} + + +/** +* @brief create a command to read the FEE HK register 31 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_31(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_31); +} + + +/** +* @brief create a command to read the FEE HK register 32 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_32(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_32); +} + + +/** +* @brief create a command to read the FEE HK register 33 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_33(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_33); +} + + +/** +* @brief create a command to read the FEE HK register 34 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_34(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_34); +} + + +/** +* @brief create a command to read the FEE HK register 35 +* +* @param trans_id a transaction identifier +* +* @param cmd the command buffer; if NULL, the function returns the needed size +* +* @returns the size of the command data buffer or 0 on error +*/ + +int fee_read_cmd_hk_reg_35(uint16_t trans_id, uint8_t *cmd) +{ + return fee_read_cmd_register_internal(trans_id, cmd, FEE_HK_REG_35); +} diff --git a/FEE/smile_fee_cmd.h b/FEE/smile_fee_cmd.h index 8485e3d..1defd64 100644 --- a/FEE/smile_fee_cmd.h +++ b/FEE/smile_fee_cmd.h @@ -30,27 +30,40 @@ #define FEE_CFG_REG_3 0x0000000CUL #define FEE_CFG_REG_4 0x00000010UL #define FEE_CFG_REG_5 0x00000014UL +#define FEE_CFG_REG_6 0x00000018UL /* unused */ +#define FEE_CFG_REG_7 0x0000001CUL /* unused */ +#define FEE_CFG_REG_8 0x00000020UL /* unused */ +#define FEE_CFG_REG_9 0x00000024UL /* unused */ +#define FEE_CFG_REG_10 0x00000028UL /* unused */ +#define FEE_CFG_REG_11 0x0000002CUL /* unused */ +#define FEE_CFG_REG_12 0x00000030UL /* unused */ +#define FEE_CFG_REG_13 0x00000034UL /* unused */ +#define FEE_CFG_REG_14 0x00000038UL /* unused */ +#define FEE_CFG_REG_15 0x0000003CUL /* unused */ +#define FEE_CFG_REG_16 0x00000040UL /* unused */ +#define FEE_CFG_REG_17 0x00000044UL /* unused */ #define FEE_CFG_REG_18 0x00000048UL #define FEE_CFG_REG_19 0x0000004CUL #define FEE_CFG_REG_20 0x00000050UL #define FEE_CFG_REG_21 0x00000054UL #define FEE_CFG_REG_22 0x00000058UL +#define FEE_CFG_REG_23 0x0000005CUL /* reserved */ #define FEE_CFG_REG_24 0x00000060UL /* FEE RO registers (SMILE-MSSL-PL-Register_map_v0.10_Draft) */ -#define FEE_HK_REG_0 0x00000700 -#define FEE_HK_REG_1 0x00000704 -#define FEE_HK_REG_2 0x00000708 +#define FEE_HK_REG_0 0x00000700 /* reserved */ +#define FEE_HK_REG_1 0x00000704 /* reserved */ +#define FEE_HK_REG_2 0x00000708 /* reserved */ #define FEE_HK_REG_3 0x0000070C #define FEE_HK_REG_4 0x00000710 #define FEE_HK_REG_5 0x00000714 #define FEE_HK_REG_6 0x00000718 #define FEE_HK_REG_7 0x0000071C -#define FEE_HK_REG_8 0x00000720 -#define FEE_HK_REG_9 0x00000724 -#define FEE_HK_REG_10 0x00000728 +#define FEE_HK_REG_8 0x00000720 /* reserved */ +#define FEE_HK_REG_9 0x00000724 /* reserved */ +#define FEE_HK_REG_10 0x00000728 /* reserved */ #define FEE_HK_REG_11 0x0000072C #define FEE_HK_REG_12 0x00000730 #define FEE_HK_REG_13 0x00000734 @@ -64,9 +77,9 @@ #define FEE_HK_REG_21 0x00000754 #define FEE_HK_REG_22 0x00000758 #define FEE_HK_REG_23 0x0000075C -#define FEE_HK_REG_24 0x00000760 -#define FEE_HK_REG_25 0x00000764 -#define FEE_HK_REG_26 0x00000768 +#define FEE_HK_REG_24 0x00000760 /* reserved */ +#define FEE_HK_REG_25 0x00000764 /* reserved */ +#define FEE_HK_REG_26 0x00000768 /* reserved */ #define FEE_HK_REG_27 0x0000076C #define FEE_HK_REG_28 0x00000770 #define FEE_HK_REG_29 0x00000774 @@ -89,7 +102,7 @@ int fee_read_cmd_data(uint16_t trans_id, uint8_t *cmd, -/* FEE read accessors */ +/* FEE configuration register read accessors */ int fee_read_cmd_cfg_reg_0(uint16_t trans_id, uint8_t *cmd); int fee_read_cmd_cfg_reg_1(uint16_t trans_id, uint8_t *cmd); int fee_read_cmd_cfg_reg_2(uint16_t trans_id, uint8_t *cmd); @@ -104,7 +117,7 @@ int fee_read_cmd_cfg_reg_22(uint16_t trans_id, uint8_t *cmd); int fee_read_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd); -/* FEE write accessors */ +/* FEE configuration register write accessors */ int fee_write_cmd_cfg_reg_0(uint16_t trans_id, uint8_t *cmd); int fee_write_cmd_cfg_reg_1(uint16_t trans_id, uint8_t *cmd); int fee_write_cmd_cfg_reg_2(uint16_t trans_id, uint8_t *cmd); @@ -119,6 +132,36 @@ int fee_write_cmd_cfg_reg_22(uint16_t trans_id, uint8_t *cmd); int fee_write_cmd_cfg_reg_24(uint16_t trans_id, uint8_t *cmd); +/* FEE housekeeping register read accessors */ +int fee_read_cmd_hk_reg_3(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_4(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_5(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_6(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_7(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_11(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_12(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_13(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_14(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_15(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_16(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_17(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_18(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_19(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_20(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_21(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_22(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_23(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_27(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_28(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_29(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_30(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_31(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_32(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_33(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_34(uint16_t trans_id, uint8_t *cmd); +int fee_read_cmd_hk_reg_35(uint16_t trans_id, uint8_t *cmd); + + #endif /* SMILE_FEE_CMD_H */ diff --git a/FEE/smile_fee_ctrl.c b/FEE/smile_fee_ctrl.c index f178415..131111b 100644 --- a/FEE/smile_fee_ctrl.c +++ b/FEE/smile_fee_ctrl.c @@ -1084,6 +1084,708 @@ void smile_fee_set_execute_op(uint32_t mode) } +/** + * @brief get CCD1_TS HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd1_ts(void) +{ + return (uint16_t) (smile_fee->hk_reg_3 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get CCD2_TS HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd2_ts(void) +{ + return (uint16_t) smile_fee->hk_reg_3 & 0xFFFFUL; +} + + +/** + * @brief get CCD3_TS HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd3_ts(void) +{ + return (uint16_t) (smile_fee->hk_reg_4 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get CCD4_TS HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd4_ts(void) +{ + return (uint16_t) smile_fee->hk_reg_4 & 0xFFFFUL; +} + + +/** + * @brief get PRT1_TS HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_prt1(void) +{ + return (uint16_t) (smile_fee->hk_reg_5 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get PRT2_TS HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_prt2(void) +{ + return (uint16_t) smile_fee->hk_reg_5 & 0xFFFFUL; +} + + +/** + * @brief get PRT3_TS HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_prt3(void) +{ + return (uint16_t) (smile_fee->hk_reg_6 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get PRT4_TS HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_prt4(void) +{ + return (uint16_t) smile_fee->hk_reg_6 & 0xFFFFUL; +} + + +/** + * @brief get PRT5_TS HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_prt5(void) +{ + return (uint16_t) (smile_fee->hk_reg_7 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get ZERO_DIFF_AMP HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_zero_diff_amp(void) +{ + return (uint16_t) smile_fee->hk_reg_7 & 0xFFFFUL; +} + + +/** + * @brief get CCD3_VOD_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd3_vod_mon(void) +{ + return (uint16_t) (smile_fee->hk_reg_11 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get CCD3_VOG_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd3_vog_mon(void) +{ + return (uint16_t) smile_fee->hk_reg_11 & 0xFFFFUL; +} + + +/** + * @brief get CCD3_VRD_MON_E HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd3_vrd_mon_e(void) +{ + return (uint16_t) (smile_fee->hk_reg_12 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get CCD4_VOD_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd4_vod_mon(void) +{ + return (uint16_t) smile_fee->hk_reg_12 & 0xFFFFUL; +} + + +/** + * @brief get CCD4_VOG_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd4_vog_mon(void) +{ + return (uint16_t) (smile_fee->hk_reg_13 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get CCD4_VRD_MON_e HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd4_vrd_mon_e(void) +{ + return (uint16_t) smile_fee->hk_reg_13 & 0xFFFFUL; +} + + +/** + * @brief get VCCD HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_vccd(void) +{ + return (uint16_t) (smile_fee->hk_reg_14 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get VRCLK_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_vrclk_mon(void) +{ + return (uint16_t) smile_fee->hk_reg_14 & 0xFFFFUL; +} + + +/** + * @brief get VICLK HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_viclk(void) +{ + return (uint16_t) (smile_fee->hk_reg_15 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get VRCLK_LOW HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_vrclk_low(void) +{ + return (uint16_t) smile_fee->hk_reg_15 & 0xFFFFUL; +} + + +/** + * @brief get 5VB_POS_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_5vb_pos_mon(void) +{ + return (uint16_t) (smile_fee->hk_reg_16 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get 5VB_NEG_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_5vb_neg_mon(void) +{ + return (uint16_t) smile_fee->hk_reg_16 & 0xFFFFUL; +} + + +/** + * @brief get 3V3B_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_3v3b_mon(void) +{ + return (uint16_t) (smile_fee->hk_reg_17 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get 2V5A_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_2v5a_mon(void) +{ + return (uint16_t) smile_fee->hk_reg_17 & 0xFFFFUL; +} + + +/** + * @brief get 3V3D_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_3v3d_mon(void) +{ + return (uint16_t) (smile_fee->hk_reg_18 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get 2V5D_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_2v5d_mon(void) +{ + return (uint16_t) smile_fee->hk_reg_18 & 0xFFFFUL; +} + + +/** + * @brief get 1V5D_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_1v5d_mon(void) +{ + return (uint16_t) smile_fee->hk_reg_19 & 0xFFFFUL; +} + + +/** + * @brief get 5VREF_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_5vref_mon(void) +{ + return (uint16_t) (smile_fee->hk_reg_19 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get VCCD_POS_RAW HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_vccd_pos_raw(void) +{ + return (uint16_t) smile_fee->hk_reg_20 & 0xFFFFUL; +} + + +/** + * @brief get VCLK_POS_RAW HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_vclk_pos_raw(void) +{ + return (uint16_t) (smile_fee->hk_reg_20 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get VAN1_POS_RAW HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_van1_pos_raw(void) +{ + return (uint16_t) smile_fee->hk_reg_21 & 0xFFFFUL; +} + + +/** + * @brief get VAN3_NEG_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_van3_neg_mon(void) +{ + return (uint16_t) (smile_fee->hk_reg_21 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get VAN2_POS_RAW HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_van2_pos_raw(void) +{ + return (uint16_t) smile_fee->hk_reg_22 & 0xFFFFUL; +} + + +/** + * @brief get VDIG_RAW HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_vdig_raw(void) +{ + return (uint16_t) (smile_fee->hk_reg_22 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get VDIG_RAW_2 HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_vdig_raw_2(void) +{ + return (uint16_t) smile_fee->hk_reg_23 & 0xFFFFUL; +} + + +/** + * @brief get VDIG_RAW HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_viclk_low(void) +{ + return (uint16_t) (smile_fee->hk_reg_23 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get CCD3_VRD_MON_F HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd3_vrd_mon_f(void) +{ + return (uint16_t) smile_fee->hk_reg_27 & 0xFFFFUL; +} + + +/** + * @brief get CCD3_VDD_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd3_vdd_mon(void) +{ + return (uint16_t) (smile_fee->hk_reg_27 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get CCD3_VGD_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd3_vgd_mon(void) +{ + return (uint16_t) smile_fee->hk_reg_28 & 0xFFFFUL; +} + + +/** + * @brief get CCD4_VRD_MON_F HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd4_vrd_mon_f(void) +{ + return (uint16_t) (smile_fee->hk_reg_28 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get CCD4_VDD_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd4_vdd_mon(void) +{ + return (uint16_t) smile_fee->hk_reg_29 & 0xFFFFUL; +} + + +/** + * @brief get CCD4_VGD_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ccd4_vgd_mon(void) +{ + return (uint16_t) (smile_fee->hk_reg_29 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get IG_HI_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ig_hi_mon(void) +{ + return (uint16_t) smile_fee->hk_reg_30 & 0xFFFFUL; +} + + +/** + * @brief get IG_LO_MON HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_ig_lo_mon(void) +{ + return (uint16_t) (smile_fee->hk_reg_30 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get TENSE_A HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_tense_a(void) +{ + return (uint16_t) smile_fee->hk_reg_31 & 0xFFFFUL; +} + + +/** + * @brief get TENSE_B HK value + * + * @note no description available in register map document + */ + +uint16_t smile_fee_get_hk_tense_b(void) +{ + return (uint16_t) (smile_fee->hk_reg_30 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get SpW Time Code HK value + */ + +uint8_t smile_fee_get_hk_timecode_from_spw(void) +{ + return (uint8_t) (smile_fee->hk_reg_32 >> 16) & 0xFFUL; +} + + +/** + * @brief get RMAP target status HK value + */ + +uint8_t smile_fee_get_hk_rmap_target_status(void) +{ + return (uint8_t) (smile_fee->hk_reg_32 >> 8) & 0xFFUL; +} + + +/** + * @brief get RMAP target status HK value + * + * @returns 1 if set, 0 otherwise + */ + +uint32_t smile_fee_get_hk_rmap_target_indicate(void) +{ + return (smile_fee->hk_reg_32 >> 5) & 0x1UL; +} + + +/** + * @brief get SpW link escape error HK value + * + * @returns 1 if set, 0 otherwise + */ + +uint32_t smile_fee_get_hk_spw_link_escape_error(void) +{ + return (smile_fee->hk_reg_32 >> 4) & 0x1UL; +} + + +/** + * @brief get SpW link credit error HK value + * + * @returns 1 if set, 0 otherwise + */ + +uint32_t smile_fee_get_hk_spw_link_credit_error(void) +{ + return (smile_fee->hk_reg_32 >> 3) & 0x1UL; +} + + +/** + * @brief get SpW link parity error HK value + * + * @returns 1 if set, 0 otherwise + */ + +uint32_t smile_fee_get_hk_spw_link_parity_error(void) +{ + return (smile_fee->hk_reg_32 >> 2) & 0x1UL; +} + + +/** + * @brief get SpW link disconnect HK value + * + * @returns 1 if set, 0 otherwise + */ + +uint32_t smile_fee_get_hk_spw_link_disconnect(void) +{ + return (smile_fee->hk_reg_32 >> 1) & 0x1UL; +} + + +/** + * @brief get SpW link running HK value + * + * @returns 1 if set, 0 otherwise + */ + +uint32_t smile_fee_get_hk_spw_link_running(void) +{ + return smile_fee->hk_reg_32 & 0x1UL; +} + + +/** + * @brief get frame counter HK value + * + * @note incrementing after each sync25 (description from register map document) + */ + +uint32_t smile_fee_get_hk_frame_counter(void) +{ + return (smile_fee->hk_reg_33 >> 16) & 0xFFFFUL; +} + + +/** + * @brief get FPGA op mode HK value + */ + +uint8_t smile_fee_get_hk_fpga_op_mode(void) +{ + return (uint8_t) smile_fee->hk_reg_33 & 0x7FUL; +} + + +/** + * @brief get error flag SpW link escape error HK value + * + * @returns 1 if set, 0 otherwise + */ + +uint32_t smile_fee_get_hk_error_flag_spw_link_escape_error(void) +{ + return smile_fee->hk_reg_34 & 0x1UL; +} + + +/** + * @brief get error flag SpW link credit error HK value + * + * @returns 1 if set, 0 otherwise + */ + +uint32_t smile_fee_get_hk_error_flag_spw_link_credit_error(void) +{ + return (smile_fee->hk_reg_34 >> 1) & 0x1UL; +} + + +/** + * @brief get error flag SpW link parity error HK value + * + * @returns 1 if set, 0 otherwise + */ + +uint32_t smile_fee_get_hk_error_flag_spw_link_parity_error(void) +{ + return (smile_fee->hk_reg_34 >> 2) & 0x1UL; +} + + /** * @brief sync configuration register 0 * @@ -1858,6 +2560,48 @@ int smile_fee_sync_execute_op(enum sync_direction dir) } +/** + * @brief sync ALL HK registers + * + * @returns 0 on success, otherwise error occured in at least one transaction + * + * @note HK is read only, so this only syncs FEE->DPU + */ + +int smile_fee_sync_hk_regs(void) +{ + int err = 0; + + err |= smile_fee_sync(fee_read_cmd_hk_reg_3, &smile_fee->hk_reg_3, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_4, &smile_fee->hk_reg_4, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_5, &smile_fee->hk_reg_5, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_6, &smile_fee->hk_reg_6, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_7, &smile_fee->hk_reg_7, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_11, &smile_fee->hk_reg_11, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_12, &smile_fee->hk_reg_12, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_13, &smile_fee->hk_reg_13, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_14, &smile_fee->hk_reg_14, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_15, &smile_fee->hk_reg_15, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_16, &smile_fee->hk_reg_16, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_17, &smile_fee->hk_reg_17, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_18, &smile_fee->hk_reg_18, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_19, &smile_fee->hk_reg_19, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_20, &smile_fee->hk_reg_20, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_21, &smile_fee->hk_reg_21, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_22, &smile_fee->hk_reg_22, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_23, &smile_fee->hk_reg_23, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_27, &smile_fee->hk_reg_27, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_28, &smile_fee->hk_reg_28, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_29, &smile_fee->hk_reg_29, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_30, &smile_fee->hk_reg_30, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_31, &smile_fee->hk_reg_31, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_32, &smile_fee->hk_reg_32, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_33, &smile_fee->hk_reg_33, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_34, &smile_fee->hk_reg_34, 0); + err |= smile_fee_sync(fee_read_cmd_hk_reg_35, &smile_fee->hk_reg_35, 0); + + return err; +} diff --git a/FEE/smile_fee_ctrl.h b/FEE/smile_fee_ctrl.h index deca718..4abc544 100644 --- a/FEE/smile_fee_ctrl.h +++ b/FEE/smile_fee_ctrl.h @@ -31,41 +31,41 @@ struct smile_fee_mirror { uint32_t cfg_reg_3; uint32_t cfg_reg_4; uint32_t cfg_reg_5; - uint32_t cfg_reg_6; - uint32_t cfg_reg_7; - uint32_t cfg_reg_8; - uint32_t cfg_reg_9; - uint32_t cfg_reg_10; - uint32_t cfg_reg_11; - uint32_t cfg_reg_12; - uint32_t cfg_reg_13; - uint32_t cfg_reg_14; - uint32_t cfg_reg_15; - uint32_t cfg_reg_16; - uint32_t cfg_reg_17; + uint32_t cfg_reg_6; /* unused */ + uint32_t cfg_reg_7; /* unused */ + uint32_t cfg_reg_8; /* unused */ + uint32_t cfg_reg_9; /* unused */ + uint32_t cfg_reg_10; /* unused */ + uint32_t cfg_reg_11; /* unused */ + uint32_t cfg_reg_12; /* unused */ + uint32_t cfg_reg_13; /* unused */ + uint32_t cfg_reg_14; /* unused */ + uint32_t cfg_reg_15; /* unused */ + uint32_t cfg_reg_16; /* unused */ + uint32_t cfg_reg_17; /* unused */ uint32_t cfg_reg_18; uint32_t cfg_reg_19; uint32_t cfg_reg_20; uint32_t cfg_reg_21; uint32_t cfg_reg_22; - uint32_t cfg_reg_23; + uint32_t cfg_reg_23; /* reserved */ uint32_t cfg_reg_24; /* FEE RO registers (SMILE-MSSL-PL-Register_map_v0.10_Draft) */ - uint32_t unused[1696]; /* TODO */ + uint32_t unused[423]; - uint32_t hk_reg_0; - uint32_t hk_reg_1; - uint32_t hk_reg_2; + uint32_t hk_reg_0; /* reserved */ + uint32_t hk_reg_1; /* reserved */ + uint32_t hk_reg_2; /* reserved */ uint32_t hk_reg_3; uint32_t hk_reg_4; uint32_t hk_reg_5; uint32_t hk_reg_6; uint32_t hk_reg_7; - uint32_t hk_reg_8; - uint32_t hk_reg_9; - uint32_t hk_reg_10; + uint32_t hk_reg_8; /* reserved */ + uint32_t hk_reg_9; /* reserved */ + uint32_t hk_reg_10; /* reserved */ uint32_t hk_reg_11; uint32_t hk_reg_12; uint32_t hk_reg_13; @@ -79,9 +79,9 @@ struct smile_fee_mirror { uint32_t hk_reg_21; uint32_t hk_reg_22; uint32_t hk_reg_23; - uint32_t hk_reg_24; - uint32_t hk_reg_25; - uint32_t hk_reg_26; + uint32_t hk_reg_24; /* reserved */ + uint32_t hk_reg_25; /* reserved */ + uint32_t hk_reg_26; /* reserved */ uint32_t hk_reg_27; uint32_t hk_reg_28; uint32_t hk_reg_29; @@ -118,6 +118,9 @@ int smile_fee_sync_cfg_reg_21(enum sync_direction dir); int smile_fee_sync_cfg_reg_22(enum sync_direction dir); int smile_fee_sync_cfg_reg_24(enum sync_direction dir); +int smile_fee_sync_hk_regs(void); + + /* values contained in registers */ int smile_fee_sync_vstart(enum sync_direction dir); int smile_fee_sync_vend(enum sync_direction dir); @@ -237,6 +240,70 @@ void smile_fee_set_ccd2_single_pixel_treshold(uint16_t threshold); void smile_fee_set_execute_op(uint32_t mode); +/* read SMILE_FEE housekeeping register mirror */ +uint16_t smile_fee_get_hk_ccd1_ts(void); +uint16_t smile_fee_get_hk_ccd2_ts(void); +uint16_t smile_fee_get_hk_ccd3_ts(void); +uint16_t smile_fee_get_hk_ccd4_ts(void); +uint16_t smile_fee_get_hk_prt1(void); +uint16_t smile_fee_get_hk_prt2(void); +uint16_t smile_fee_get_hk_prt3(void); +uint16_t smile_fee_get_hk_prt4(void); +uint16_t smile_fee_get_hk_prt5(void); +uint16_t smile_fee_get_hk_zero_diff_amp(void); +uint16_t smile_fee_get_hk_ccd3_vod_mon(void); +uint16_t smile_fee_get_hk_ccd3_vog_mon(void); +uint16_t smile_fee_get_hk_ccd3_vrd_mon_e(void); +uint16_t smile_fee_get_hk_ccd4_vod_mon(void); +uint16_t smile_fee_get_hk_ccd4_vog_mon(void); +uint16_t smile_fee_get_hk_ccd4_vrd_mon_e(void); +uint16_t smile_fee_get_hk_vccd(void); +uint16_t smile_fee_get_hk_vrclk_mon(void); +uint16_t smile_fee_get_hk_viclk(void); +uint16_t smile_fee_get_hk_vrclk_low(void); +uint16_t smile_fee_get_hk_5vb_pos_mon(void); +uint16_t smile_fee_get_hk_5vb_neg_mon(void); +uint16_t smile_fee_get_hk_3v3b_mon(void); +uint16_t smile_fee_get_hk_2v5a_mon(void); +uint16_t smile_fee_get_hk_3v3d_mon(void); +uint16_t smile_fee_get_hk_2v5d_mon(void); +uint16_t smile_fee_get_hk_1v5d_mon(void); +uint16_t smile_fee_get_hk_5vref_mon(void); +uint16_t smile_fee_get_hk_vccd_pos_raw(void); +uint16_t smile_fee_get_hk_vclk_pos_raw(void); +uint16_t smile_fee_get_hk_van1_pos_raw(void); +uint16_t smile_fee_get_hk_van3_neg_mon(void); +uint16_t smile_fee_get_hk_van2_pos_raw(void); +uint16_t smile_fee_get_hk_vdig_raw(void); +uint16_t smile_fee_get_hk_vdig_raw_2(void); +uint16_t smile_fee_get_hk_viclk_low(void); +uint16_t smile_fee_get_hk_ccd3_vrd_mon_f(void); +uint16_t smile_fee_get_hk_ccd3_vdd_mon(void); +uint16_t smile_fee_get_hk_ccd3_vgd_mon(void); +uint16_t smile_fee_get_hk_ccd4_vrd_mon_f(void); +uint16_t smile_fee_get_hk_ccd4_vdd_mon(void); +uint16_t smile_fee_get_hk_ccd4_vgd_mon(void); +uint16_t smile_fee_get_hk_ig_hi_mon(void); +uint16_t smile_fee_get_hk_ig_lo_mon(void); +uint16_t smile_fee_get_hk_tense_a(void); +uint16_t smile_fee_get_hk_tense_b(void); +uint8_t smile_fee_get_hk_timecode_from_spw(void); +uint8_t smile_fee_get_hk_rmap_target_status(void); +uint32_t smile_fee_get_hk_rmap_target_indicate(void); +uint32_t smile_fee_get_hk_spw_link_escape_error(void); +uint32_t smile_fee_get_hk_spw_link_credit_error(void); +uint32_t smile_fee_get_hk_spw_link_parity_error(void); +uint32_t smile_fee_get_hk_spw_link_disconnect(void); +uint32_t smile_fee_get_hk_spw_link_running(void); +uint32_t smile_fee_get_hk_frame_counter(void); +uint8_t smile_fee_get_hk_fpga_op_mode(void); +uint32_t smile_fee_get_hk_error_flag_spw_link_escape_error(void); +uint32_t smile_fee_get_hk_error_flag_spw_link_credit_error(void); +uint32_t smile_fee_get_hk_error_flag_spw_link_parity_error(void); + + + + /* setup */ void smile_fee_ctrl_init(struct smile_fee_mirror *fee_mirror); -- GitLab