view src/g23m-fad/tcpip/include/rvm_gen.h @ 635:baa0a02bc676

niq32.c DTR handling restored for targets that have it TI's original TCS211 fw treated GPIO 3 as the DTR input (wired so on C-Sample and D-Sample boards, also compatible with Leonardo and FCDEV3B which have a fixed pull-down resistor on this GPIO line), and the code in niq32.c called UAF_DTRInterruptHandler() (implemented in uartfax.c) from the IQ_KeypadGPIOHandler() function. But on Openmoko's GTA02 with their official fw this GPIO is a floating input, all of the DTR handling code in uartfax.c including the interrupt logic is still there, but the hobbled TCS211-20070608 semi-src delivery which OM got from TI contained a change in niq32.c (which had been kept in FC until now) that removed the call to UAF_DTRInterruptHandler() as part of those not-quite-understood "CC test" hacks. The present change fixes this bug at a long last: if we are building fw for a target that has TI's "classic" DTR & DCD GPIO arrangement (dsample, fcmodem and gtm900), we bring back all of TI's original code in both uartfax.c and niq32.c, whereas if we are building fw for a target that does not use this classic GPIO arrangement, the code in niq32.c goes back to what we got from OM and all DTR & DCD code in uartfax.c is conditioned out. This change also removes the very last remaining bit of "CC test" bogosity from our FreeCalypso code base.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 19 Jan 2020 01:41:35 +0000
parents 90eb61ecd093
children
line wrap: on
line source

/**
 * @file  rvm_gen.h
 *
 * Defines the generic types used by the Riviera Environment
 * and the exported function of the RVM block.
 *
 * @author  David Lamy-Charrier (d-lamy@ti.com)
 * @version  0.1
 */

/*
 * Revision History:
 *
 *  Date         Author          Modification
 *  -------------------------------------------------------------------
 *  19/01/2000  David Lamy-Charrier    Create.
 *  11/20/2001  Vincent Oberle      Added BUILD_VERSION_NUMBER.
 *                    Documentation cleaning
 *
 * (C) Copyright 2000 by Texas Instruments Incorporated, All Rights Reserved
 */

#ifndef __RVM_GEN_H_
#define __RVM_GEN_H_

#ifndef _SIMULATION_
  #include "rv.cfg"
#endif

#include "rvf_api.h" /* for memory bank related definitions & GD*/
#include "rvm_api.h"

#ifdef __cplusplus
extern "C" {
#endif

/* RVM global definitions */
#define T_RVM_STRING char *
#define T_RVM_ERROR_TYPE UINT32

#define RVM_MAX_NB_MEM_BK (3)

#if (defined BLUETOOTH) || (defined TEST)
  #define RVM_MAX_NB_LINKED_SWE (5)
#else
  #define RVM_MAX_NB_LINKED_SWE (3)
#endif

#define RVM_USED_MAILBOX RVF_TASK_MBOX_0

/* define the 4 SWE types */
typedef enum
{
  RVM_SWE_TYPE_1,
  RVM_SWE_TYPE_2,
  RVM_SWE_TYPE_3,
  RVM_SWE_TYPE_4
} T_RVM_SWE_TYPE;

/* Memory bank parameters */
typedef struct
{
  T_RVF_MB_NAME bank_name;
  T_RVF_MB_PARAM initial_params;
} T_RVM_BK_INFO;

/* RVM callback function pointer type */
typedef T_RVM_RETURN (*T_RVM_CB_FUNC)(T_RVM_NAME swe_name,
                  T_RVM_RETURN error_cause,
                  T_RVM_ERROR_TYPE error_type,
                  T_RVM_STRING error_msg);

/*
 * Macro used to build the version number from the
 * - major version number (8 bits)
 * - minor version number (8 bits)
 * - build number (16 bits). A 0 indicates this number is not used.
 */
#define BUILD_VERSION_NUMBER(major, minor, build) ( ((major & 0xFF) << 24) | \
                          ((minor & 0xFF) << 16) | \
                           (build & 0xFFFF) )

/* SWE core function prototype */
typedef T_RVM_RETURN (*T_RVM_SWE_CORE_FUNC)(void);

/* Type1 SWE info */
typedef struct
{
  T_RVM_NAME swe_name;
  T_RVM_USE_ID swe_use_id;
  UINT32 version;
  UINT8 nb_mem_bank;
  T_RVM_BK_INFO mem_bank[RVM_MAX_NB_MEM_BK];
  UINT8 nb_linked_swe;
  T_RVM_USE_ID linked_swe_id[RVM_MAX_NB_LINKED_SWE];
  T_RV_RETURN_PATH return_path;
  T_RVM_RETURN (* set_info) (T_RVF_ADDR_ID addr_id,
                T_RV_RETURN_PATH return_path[],
                T_RVF_MB_ID bk_id_table[],
                T_RVM_CB_FUNC call_back_error_ft);
  T_RVM_RETURN (* init) (void);
  T_RVM_RETURN (* start) (void);
  T_RVM_RETURN (* stop) (/*T_RV_HDR* hdr*/void); //???
  T_RVM_RETURN (* kill) (void);
} T_RVM_SWE_PASSIVE_INFO;

/* Type2 SWE info */
typedef struct
{
  T_RVM_NAME swe_name;
  T_RVM_USE_ID swe_use_id;
  UINT16 stack_size;
  UINT8 priority;
  UINT32 version;
  UINT8 nb_mem_bank;
  T_RVM_BK_INFO mem_bank[RVM_MAX_NB_MEM_BK];
  UINT8 nb_linked_swe;
  T_RVM_USE_ID linked_swe_id[RVM_MAX_NB_LINKED_SWE];
  T_RV_RETURN_PATH return_path;
  T_RVF_GD_ID swe_group_directive; /* A-M-E-N-D-E-D! */
  T_RVM_RETURN (* set_info) (T_RVF_ADDR_ID addr_id,
                T_RV_RETURN_PATH return_path[],
                T_RVF_MB_ID bk_id_table[], /* A-M-E-N-E-D-E-D! is table or list??*/
                T_RVM_CB_FUNC call_back_error_ft);
  T_RVM_RETURN (* init) (void);
  T_RVM_RETURN (* start) (void);
  T_RVM_RETURN (* handle_message) (T_RV_HDR * msg);
  T_RVM_RETURN (* handle_timer) (T_RV_HDR * msg);
  T_RVM_RETURN (* stop) (T_RV_HDR* hdr);
  T_RVM_RETURN (* kill) (void);
} T_RVM_SWE_GROUP_MEMBER_INFO;

/* Type3 SWE info */
typedef struct
{
  T_RVM_NAME swe_name;
  T_RVM_USE_ID swe_use_id;
  UINT16 stack_size;
  UINT8 priority;
  UINT32 version;
  UINT8 nb_mem_bank;
  T_RVM_BK_INFO mem_bank[RVM_MAX_NB_MEM_BK];
  UINT8 nb_linked_swe;
  T_RVM_USE_ID linked_swe_id[RVM_MAX_NB_LINKED_SWE];
  T_RV_RETURN_PATH return_path;
  T_RVM_RETURN (* set_info) (T_RVF_ADDR_ID addr_id,
                T_RV_RETURN_PATH return_path[],
                T_RVF_MB_ID bk_id_table[],
                T_RVM_CB_FUNC call_back_error_ft);
  T_RVM_RETURN (* init) (void);
  T_RVM_RETURN (* start) (void);
  T_RVM_RETURN (* handle_message) (T_RV_HDR * msg);
  T_RVM_RETURN (* handle_timer) (T_RV_HDR * msg);
  T_RVM_RETURN (* stop) (T_RV_HDR* hdr);
  T_RVM_RETURN (* kill) (void);
} T_RVM_SWE_SINGLE_INFO;

/* Type4 SWE info */
typedef struct
{
  T_RVM_NAME swe_name;
  T_RVM_USE_ID swe_use_id;
  UINT16 stack_size;
  UINT8 priority;
  UINT32 version;
  UINT8 nb_mem_bank;
  T_RVM_BK_INFO mem_bank[RVM_MAX_NB_MEM_BK];
  UINT8 nb_linked_swe;
  T_RVM_USE_ID linked_swe_id[RVM_MAX_NB_LINKED_SWE];
  T_RV_RETURN_PATH return_path;
  T_RVM_RETURN (* set_info) (T_RVF_ADDR_ID addr_id,
                T_RV_RETURN_PATH return_path[],
                T_RVF_MB_ID bk_id_table[],
                T_RVM_CB_FUNC call_back_error_ft);
  T_RVM_RETURN (* init) (void);
  T_RVM_RETURN (* core) (void);
  T_RVM_RETURN (* stop) (/*T_RV_HDR* hdr*/void); // could be removed completely except for legacy code
  T_RVM_RETURN (* kill) (void);
} T_RVM_SWE_SELF_MADE_INFO;

/* SWE information */
typedef struct
{
  T_RVM_SWE_TYPE swe_type;

  union
  { T_RVM_SWE_PASSIVE_INFO type1;
    T_RVM_SWE_GROUP_MEMBER_INFO type2;
    T_RVM_SWE_SINGLE_INFO type3;
    T_RVM_SWE_SELF_MADE_INFO type4;
  } type_info;
} T_RVM_INFO_SWE;

/* get info function pointer type */
typedef T_RVM_RETURN (*T_RVM_GET_INFO_FUNC) (T_RVM_INFO_SWE * param);

/* type used in the const SWEs array */
typedef struct t_rvm_const_swe_info
{
  T_RVM_USE_ID use_id;
  T_RVM_GET_INFO_FUNC get_info_func;
} T_RVM_CONST_SWE_INFO;

#ifdef __cplusplus
}
#endif

#endif /* __RVM_GEN_H_ */