FreeCalypso > hg > fc-magnetite
view src/cs/services/dar/dar_msg_ft.c @ 624:012028896cfb
FFS dev.c, Leonardo target: Fujitsu MB84VF5F5F4J2 #if 0'ed out
The FFS code we got from TI/Openmoko had a stanza for "Fujitsu MB84VF5F5F4J2
stacked device", using a fake device ID code that would need to be patched
manually into cfgffs.c (suppressing and overriding autodetection) and using
an FFS base address in the nCS2 bank, indicating that this FFS config was
probably meant for the MCP version of Leonardo which allows for 16 MiB flash
with a second bank on nCS2.
We previously had this FFS config stanza conditionalized under
CONFIG_TARGET_LEONARDO because the base address contained therein is invalid
for other targets, but now that we actually have a Leonardo build target in
FC Magnetite, I realize that the better approach is to #if 0 out this stanza
altogether: it is already non-functional because it uses a fake device ID
code, thus it is does not add support for more Leonardo board variants,
instead it is just noise.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 22 Dec 2019 21:24:29 +0000 |
parents | 945cf7f506b2 |
children |
line wrap: on
line source
/****************************************************************************/ /* */ /* File Name: dar_msg_ft.c */ /* */ /* Purpose: This function is called when the DAR entity receives a new */ /* message in its mailbox and wants to process the message. */ /* */ /* */ /* Version 0.1 */ /* */ /* Date Modification */ /* ------------------------------------ */ /* 17 October 2001 Create */ /* */ /* Author Stephanie Gerthoux */ /* */ /* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved*/ /****************************************************************************/ #include "rv/rv_defined_swe.h" #ifdef RVM_DAR_SWE #ifndef _WINDOWS #include "config/swconfig.cfg" #include "config/sys.cfg" #include "config/chipset.cfg" #endif #include <string.h> #include "rvm/rvm_gen.h" #include "dar/dar_api.h" #include "dar/dar_macro_i.h" #include "dar/dar_messages_i.h" #include "dar/dar_const_i.h" #include "dar/dar_diagnose_i.h" #include "dar/dar_error_hdlr_i.h" #ifndef _WINDOWS #include "timer/timer.h" #endif /**** Global variable ****/ /* index used in the circular buffer*/ UINT16 dar_current_index = 0; /* Write buffer*/ extern char dar_write_buffer[DAR_MAX_BUFFER_SIZE]; /* Get the dar_current status */ extern T_DAR_RECOVERY_STATUS dar_current_status; /* Define a pointer to the Global Environment Control block */ extern T_DAR_ENV_CTRL_BLK *dar_gbl_var_p; /* Define the recovery buffer */ extern UINT8 dar_recovery_buffer[DAR_RECOVERY_DATA_MAX_BUFFER_SIZE]; /**** Extern functions ****/ extern void * dar_read_mbox (UINT8 mbox); extern void exception(void); /********************************************************************************/ /* Function dar_filter_request */ /* */ /* Description This function checks if the use_id group_nb exists: */ /* - if the group_nb exists, it adds the warning and debug */ /* masks in the dar_array_filter */ /* - otherwise, this function add the new group_nb and the */ /* masks in the dar_array_filter */ /* */ /********************************************************************************/ T_RV_RET dar_filter_request (T_DAR_FILTER_START *msg_p) { /* Declare local variables*/ UINT8 index = 0; /* check if the DAR entity is started */ if (dar_gbl_var_p == NULL ) { dar_error_trace(DAR_ENTITY_NOT_START); return(RV_NOT_READY); } /*** check if the group exists ****/ /* If the group exists... */ if(dar_search_group(msg_p->use_msg_parameter.group_nb,&index)== RV_OK) { /* Check the Dar level */ switch(msg_p->use_msg_parameter.level) { case DAR_WARNING: { /* The DAR entity wants to process Warning messages */ /* add the mask_warning in the dar_filter array */ dar_gbl_var_p ->dar_filter_array[index].mask_warning |= msg_p->use_msg_parameter.mask; dar_gbl_var_p ->dar_filter_array[index].mask_debug = 0x00; break; } case DAR_DEBUG: { /* The DAR entity wants to process Debug messages */ /* As the Warning messages are more important than debug messages, */ /* it processes warning message too */ /* add the mask_debug in the dar_filter array */ dar_gbl_var_p ->dar_filter_array[index].mask_debug |= msg_p->use_msg_parameter.mask; /* add the mask_warning in the dar_filter array */ dar_gbl_var_p ->dar_filter_array[index].mask_warning |= msg_p->use_msg_parameter.mask; break; } case DAR_NO_DIAGNOSE: { /* The DAR entity doesn't want to process Diagnose messages */ /* delete the mask_debug in the dar_filter array */ dar_gbl_var_p ->dar_filter_array[index].mask_debug = 0x00; /* delete the mask_warning in the dar_filter array */ dar_gbl_var_p ->dar_filter_array[index].mask_warning = 0x00; break; } default: { /* Unknow level has been received */ DAR_TRACE_WARNING("A DAR unknow level has been received "); break; } } /* switch(msg_p->use_msg_parameter.level) */ } /* if (search_group(msg_p->use_msg_parameter.group_nb,*index_gbl_p)== RV_OK) */ else { /* if the group doesn't exist and if there is enough space in the dar_filter_array */ if ( dar_add_group(&index)== RV_OK) { /* ... add the group in the dar_array_filter */ dar_gbl_var_p ->dar_filter_array[index].group_nb |= msg_p->use_msg_parameter.group_nb; /* Check the Dar level */ switch(msg_p->use_msg_parameter.level) { case DAR_WARNING: { /* The DAR entity wants to process Warning messages */ /* add the mask_warning in the dar_filter array */ dar_gbl_var_p ->dar_filter_array[index].mask_warning |= msg_p->use_msg_parameter.mask; break; } case DAR_DEBUG: { /* The DAR entity wants to process Debug messages */ /* As the Warning messages are more important than debug messages, */ /* it processes warning message too */ /* add the mask_debug in the dar_filter array */ dar_gbl_var_p ->dar_filter_array[index].mask_debug |= msg_p->use_msg_parameter.mask; /* add the mask_warning in the dar_filter array */ dar_gbl_var_p ->dar_filter_array[index].mask_warning |= msg_p->use_msg_parameter.mask; break; } default: { /* Unknow level has been received */ DAR_TRACE_WARNING("A DAR unknow level has been received "); break; }; } /* switch */ }/* if ( add_group(msg_p->use_msg_parameter.group_nb,*index_gbl_p)== RV_OK)) */ else { /* There is not enough space in the dar_array_filter */ DAR_TRACE_WARNING("Not enough space in the dar_array_filter for adding a new group "); } } return(RV_OK); }/* dar_filter_request */ /********************************************************************************/ /* */ /* Function Name: dar_write_data_in_buffer */ /* */ /* Purpose: This function is called to store diagnose data in RAM buffer */ /* */ /* note: In order to separate the different string, the data are */ /* ---- stored as follows: */ /* */ /* Input Parameters: */ /* Pointer to the message to store */ /* Data Format, */ /* Data level, */ /* Data Use Id, */ /* */ /* Output Parameters: */ /* Validation of the diagnose execution. */ /* */ /* */ /* */ /* Revision History: */ /* None. */ /* */ /********************************************************************************/ T_RV_RET dar_write_data_in_buffer( T_DAR_WRITE_START *msg_p) { /* Local variables */ UINT8 i = 0; UINT8 length = 0; /* Diagnose string length */ length = (UINT16) strlen(msg_p->data_write.char_p); /*** Circular buffer to store data ***/ /* Add 0xFF to separate 2 strings */ dar_write_buffer[dar_current_index] = 0xF; DAR_PLUS_PLUS(dar_current_index); /* to detected if it is the end of the buffer */ dar_write_buffer[dar_current_index] = 0xF; DAR_PLUS_PLUS(dar_current_index); /* to detected if it is the end of the buffer */ /* The group_nb is 16 bit length, and the buffer is an UINT8 length */ /* So the group_nb must be stocked by dividing it in 2 parts */ dar_write_buffer[dar_current_index] = (msg_p->data_write.use_id.group_nb)>>8; /*add the 8 first bits of the Use id group*/ DAR_PLUS_PLUS(dar_current_index); dar_write_buffer[dar_current_index] = msg_p->data_write.use_id.group_nb; /*add the 8 last bits of the Use id group*/ DAR_PLUS_PLUS(dar_current_index); /* The mask is 16 bit length, and the buffer is an UINT8 length */ /* So the mask must be stocked by dividing it in 2 parts */ dar_write_buffer[dar_current_index] = (msg_p->data_write.use_id.mask)>>8; /* add the 8 first bits of the Use id mask */ DAR_PLUS_PLUS(dar_current_index); dar_write_buffer[dar_current_index] = msg_p->data_write.use_id.mask; /* add the 8 last bits of the Use id mask */ DAR_PLUS_PLUS(dar_current_index); /* Add the dar_level data */ dar_write_buffer[dar_current_index] = msg_p->data_write.level; DAR_PLUS_PLUS(dar_current_index); /* circular buffer to store diagnose data in RAM buffer */ for (i=0; i < length; i++ ) { /* copy string in the RAM char by char*/ dar_write_buffer[dar_current_index]=msg_p->data_write.char_p[i]; /* detection of the end of the buffer */ /* When current = DAR_MAX_BUFFER_SIZE , current = 0 */ DAR_PLUS_PLUS(dar_current_index); } /* DAR information is redirected to standard trace */ //DAR_SEND_TRACE("circular buffer : ",RV_TRACE_LEVEL_DEBUG_HIGH); //rvf_send_trace(msg_p->data_write.char_p, length, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_HIGH, DAR_USE_ID); return(RV_OK); } /* dar_send_write_data */ /********************************************************************************/ /* Function dar_empty_mb_and_save_data */ /* */ /* Description This function is used to empty the mailbox and save data in */ /* the RAM buffer */ /* */ /* Input Parameters: */ /* Pointer to the message to store */ /* */ /* Output Parameters: */ /* Validation of the function execution. */ /* */ /* Note: */ /* None */ /* */ /********************************************************************************/ T_RV_RET dar_empty_mb_and_save_data( T_DAR_INFO *buffer_p) { /* Declare local variables */ UINT8 i = 0; UINT16 length = 0; T_RV_HDR *msg_p = ( T_RV_HDR*) dar_read_mbox(DAR_MBOX); /**** Empty the mail box ****/ while(msg_p != NULL) { /* If it's a Write message, store it in the Ram */ /* ( it is not interesting to store filter message ) */ if ((msg_p->msg_id) == DAR_WRITE_REQ) { /* store themessage in the RAM*/ dar_write_data_in_buffer((T_DAR_WRITE_START *)msg_p); } /* free the Header of the message */ rvf_free_buf((T_RVF_BUFFER *) msg_p); /* Read the next message */ msg_p = ( T_RV_HDR*) dar_read_mbox(DAR_MBOX); } /* while (msg_p != NULL) */ /**** Store data in RAM buffer ****/ /* Diagnose string length */ length = (UINT16) strlen(buffer_p); /** Circular buffer to store data **/ /* Add 0xFF to separate 2 strings */ dar_write_buffer[dar_current_index] = 0xF; DAR_PLUS_PLUS(dar_current_index); /* to detected if it is the end of the buffer */ dar_write_buffer[dar_current_index] = 0xF; DAR_PLUS_PLUS(dar_current_index); /* to detected if it is the end of the buffer */ /* Add the dar_level data */ dar_write_buffer[dar_current_index] = DAR_EXCEPTION; DAR_PLUS_PLUS(dar_current_index); /* circular buffer to store diagnose data in RAM buffer */ for (i=0; i < length; i++ ) { /* copy string in the RAM char by char*/ dar_write_buffer[dar_current_index]=buffer_p[i]; /* detection of the end of the buffer */ /* When current = DAR_MAX_BUFFER_SIZE , current = 0 */ DAR_PLUS_PLUS(dar_current_index); } return(RV_OK); }/* dar_empty_mb_and_save_data*/ #endif /* #ifdef RVM_DAR_SWE */ /********************************************************************************/ /* */ /* ------------------------------------------------ */ /* | WARNING - IMPORTANT | */ /* ------------------------------------------------ */ /* */ /* */ /* Function Name: dar_lib */ /* */ /* Purpose: This function is only used in order to have a function in the */ /* dar_lib when the DAR is NOT_COMPILED */ /* */ /* Input Parameters: */ /* None */ /* */ /* Output Parameters: */ /* NONE */ /* */ /********************************************************************************/ void dar_lib(void) { }