FreeCalypso > hg > fc-magnetite
view src/g23m-fad/udp/udp.h @ 629:3231dd9b38c1
armio.c: make GPIOs 8 & 13 outputs driving 1 on all "classic" targets
Calypso GPIOs 8 & 13 are pinmuxed with MCUEN1 & MCUEN2, respectively,
and on powerup these pins are MCUEN, i.e., outputs driving 1. TI's code
for C-Sample and earlier turns them into GPIOs configured as outputs also
driving 1 - so far, so good - but TI's code for BOARD 41 (which covers
D-Sample, Leonardo and all real world Calypso devices derived from the
latter) switches them from MCUEN to GPIOs, but then leaves them as inputs.
Given that the hardware powerup state of these two pins is outputs driving 1,
every Calypso board design MUST be compatible with such driving; typically
these GPIO signals will be either unused and unconnected or connected as
outputs driving some peripheral. Turning these pins into GPIO inputs will
result in floating inputs on every reasonably-wired board, thus I am
convinced that this configuration is nothing but a bug on the part of
whoever wrote this code at TI.
This floating input bug had already been fixed earlier for GTA modem and
FCDEV3B targets; the present change makes the fix unconditional for all
"classic" targets. The newly affected targets are D-Sample, Leonardo,
Tango and GTM900.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 02 Jan 2020 05:38:26 +0000 |
parents | 90eb61ecd093 |
children |
line wrap: on
line source
/* +---------------------------------------------------------------------------- | Project: GSM-WAP (8444) | Modul: UDP +---------------------------------------------------------------------------- | Copyright 2002 Texas Instruments Berlin, AG | All rights reserved. | | This file is confidential and a trade secret of Texas | Instruments Berlin, AG | The receipt of or possession of this file does not convey | any rights to reproduce or disclose its contents or to | manufacture, use, or sell anything it may describe, in | whole, or in part, without the specific written consent of | Texas Instruments Berlin, AG. +---------------------------------------------------------------------------- | Purpose: Definitions for the Protocol Stack Entity | Internet Protocol +---------------------------------------------------------------------------- */ #ifndef UDP_H #define UDP_H /*-------------------------------------------------------------------------*/ #define UDP_SINGLE_LAYER 0 /* Information for DTI library */ #define UDP_DTI_DEF_INSTANCE UDP_SINGLE_LAYER #define UDP_DTI_LL_INTERFACE 0 /* Lower layer interface */ #define UDP_DTI_HL_INTERFACE 1 /* Higher layer interface */ #define UDP_DTI_DEF_CHANNEL 0 #define UDP_DTI_INIT_QUEUE_SIZE 0 #include "ip_udp.h" /*---- Types --------------------------------------------------------------*/ /* Instance management */ #ifdef OPTION_MULTI_INSTANCE #define GET_INSTANCE(p) (udp_data_base + p->custom.route.inst_no) #define UDP_INSTANCES MAX_INSTANCES #else #define GET_INSTANCE(p) (udp_data_base + UDP_SINGLE_LAYER) #define UDP_INSTANCES 1 #endif /*---- Constants ----------------------------------------------------------*/ /* Constants for the UDP packet */ #define MIN_HEADER_LEN 5 /* Min IP header length in 32 bit words */ /* Errors */ #define NO_ERROR 0 /* No errors found */ #define LEN_PSEUDO_HEADER_B 12 /* Length of pseudo header in bytes */ /* States of higher layer port */ #define PORT_DOWN 0 #define PORT_BOUND 1 #define PORT_ACTIVE 2 /* States for error downlink */ #define STATE_DL_NO_ERROR 0 /* No errors */ #define STATE_DL_ERROR 1 /* We have one or more errors */ /* State index for the entity process/services */ #define KER ker. #define HILA hila. #define LOLA lola. /* States of the entity process kernel */ #define DEACTIVATED 0 /* */ #define ACTIVE_NC 1 /* Not configured */ #define CONNECTED 2 /* */ /* States for send and receive packet services */ #define DOWN 0 /* State not active */ #define CONNECTING 1 /* State is connecting */ #define IDLE 2 /* State no incoming signals */ #define SEND 3 /* State sending packet */ #define WAIT 4 /* State waiting for packet */ #ifndef NTRACE /* For trace purposes */ #define SERVICE_NAME_KER "KER" #define SERVICE_NAME_HILA "HILA" #define SERVICE_NAME_LOLA "LOLA" #endif /*---- TYPES --------------------------------------------------------------*/ /* Later on included between WAP and UDP - To do */ typedef struct { UBYTE src_ip[4]; UBYTE des_ip[4]; UBYTE src_port[2]; UBYTE des_port[2]; } T_SRC_DES; typedef struct { UBYTE state; #ifndef NTRACE char * name; char * state_name; #endif UBYTE dti_state; ULONG link_id; BOOL drop_packet; /* TRUE: not sending packet to lower layer */ char entity_name [UDPA_ENTITY_NAME_LEN]; T_DTI2_DATA_REQ * dti_data_req; /* Data primitive to lower layer */ } T_HILA; typedef struct { UBYTE state; #ifndef NTRACE char * name; char * state_name; #endif UBYTE dti_state; ULONG link_id; BOOL drop_packet; /* TRUE: not sending packet to higher layer */ char entity_name [UDPA_ENTITY_NAME_LEN]; UBYTE state_err; /* State variable for errors */ ULONG src_addr; /* Source address for DL datagram */ ULONG dst_addr; /* Destination address for DL datagram */ USHORT dst_port; /* Destination port for DL datagram */ USHORT src_port; /* Source port for DL datagram */ T_DTI2_DATA_IND * dti_data_ind; /* We are sending data to higher layer */ } T_LOLA; typedef struct { UBYTE state; #ifndef NTRACE char * name; char * state_name; #endif BOOL send_icmp; /* We send an ICMP message */ UBYTE port_state; /* State of the source port */ USHORT src_port; /* Source port */ USHORT dst_port; /* Destination port */ ULONG src_addr; /* Source address in the IP packet */ ULONG dst_addr; /* Destination IP address */ T_DTI2_DATA_REQ * dti_data_req_icmp; /* For ICMP messages */ } T_KER; /* Entity data for each UDP instance */ typedef struct { T_HILA hila; /* Data for each higher layer */ T_LOLA lola; /* Data for each lower layer */ T_KER ker; } T_UDP_DATA; /*---- EXPORT -------------------------------------------------------------*/ /* Instance data base */ extern T_UDP_DATA udp_data_base [], * udp_data; /* The DTI data base is allocated in function dti_init() */ extern DTI_HANDLE udp_hDTI; #define ENTITY_DATA udp_data /*---- Prototypes ---------------------------------------------------------*/ /* Prototypes * * UDP KERNEL * * KERNEL primitive processing */ #ifdef OPTION_MULTITHREAD #define ker_udp_shutdown_res _ENTITY_PREFIXED (ker_udp_shutdown_res) #define ker_udp_bind_req _ENTITY_PREFIXED (ker_udp_bind_req) #define ker_udp_closeport_req _ENTITY_PREFIXED (ker_udp_closeport_req) #define ker_udp_error_res _ENTITY_PREFIXED (ker_udp_error_res) #define ker_udpa_dti_req _ENTITY_PREFIXED (ker_udpa_dti_req) #define ker_udpa_config_req _ENTITY_PREFIXED (ker_udpa_config_req) #define sig_dti_ker_connection_opened_ll_ind \ _ENTITY_PREFIXED (sig_dti_ker_connection_opened_ll_ind) #define sig_dti_ker_connection_opened_hl_ind \ _ENTITY_PREFIXED (sig_dti_ker_connection_opened_hl_ind) #define sig_dti_ker_connection_closed_ll_ind \ _ENTITY_PREFIXED (sig_dti_ker_connection_closed_ll_ind) #define sig_dti_ker_connection_closed_hl_ind \ _ENTITY_PREFIXED (sig_dti_ker_connection_closed_hl_ind) #define sig_dti_ker_data_received_ll_ind \ _ENTITY_PREFIXED (sig_dti_ker_data_received_ll_ind) #define sig_dti_ker_tx_buffer_ready_hl_ind \ _ENTITY_PREFIXED (sig_dti_ker_tx_buffer_ready_hl_ind) #define sig_dti_ker_tx_buffer_full_hl_ind \ _ENTITY_PREFIXED (sig_dti_ker_tx_buffer_full_hl_ind) #define sig_dti_ker_data_received_hl_ind \ _ENTITY_PREFIXED (sig_dti_ker_data_received_hl_ind) #define sig_dti_ker_tx_buffer_ready_ll_ind \ _ENTITY_PREFIXED (sig_dti_ker_tx_buffer_ready_ll_ind) #define sig_dti_ker_tx_buffer_full_ll_ind \ _ENTITY_PREFIXED (sig_dti_ker_tx_buffer_full_ll_ind) #define ker_ip_addr_cnf _ENTITY_PREFIXED (ker_ip_addr_cnf) #define udp_build_packet _ENTITY_PREFIXED (udp_build_packet) #define init_udp _ENTITY_PREFIXED (init_udp) #define deinit_udp _ENTITY_PREFIXED (deinit_udp) #define pei_dti_dti_connect_req \ _ENTITY_PREFIXED (pei_dti_dti_connect_req) #define pei_dti_dti_connect_cnf \ _ENTITY_PREFIXED (pei_dti_dti_connect_cnf) #define pei_dti_dti_connect_ind \ _ENTITY_PREFIXED (pei_dti_dti_connect_ind) #define pei_dti_dti_connect_res \ _ENTITY_PREFIXED (pei_dti_dti_connect_res) #define pei_dti_dti_disconnect_req \ _ENTITY_PREFIXED (pei_dti_dti_disconnect_req) #define pei_dti_dti_disconnect_ind \ _ENTITY_PREFIXED (pei_dti_dti_disconnect_ind) #define pei_dti_dti_ready_ind \ _ENTITY_PREFIXED (pei_dti_dti_ready_ind) #define pei_dti_dti_data_req \ _ENTITY_PREFIXED (pei_dti_dti_data_req) #define pei_dti_dti_data_ind \ _ENTITY_PREFIXED (pei_dti_dti_data_ind) #define pei_dti_dti_getdata_req \ _ENTITY_PREFIXED (pei_dti_dti_getdata_req) #define pei_sig_callback \ _ENTITY_PREFIXED (pei_sig_callback) #ifdef _SIMULATION_ #define pei_dti_dti_data_test_req \ _ENTITY_PREFIXED (pei_dti_dti_data_test_req) #define pei_dti_dti_data_test_ind \ _ENTITY_PREFIXED (pei_dti_dti_data_test_ind) #endif #endif USHORT inet_checksum (UBYTE * block, USHORT len); USHORT desc_checksum ( T_desc_list2 * dlist, USHORT start_offset, ULONG start_value ); ULONG partial_checksum (UBYTE * block, USHORT len); /* UDP SAP */ void ker_udp_shutdown_res (T_UDP_SHUTDOWN_RES * udp_shutdown_res); void ker_udp_bind_req (T_UDP_BIND_REQ * udp_bind_req); void ker_udp_closeport_req (T_UDP_CLOSEPORT_REQ * udp_closeport_req); void ker_udp_error_res (T_UDP_ERROR_RES * udp_error_res); /* UDPA SAP */ void ker_udpa_dti_req (T_UDPA_DTI_REQ * udpa_dti_req); void ker_udpa_config_req (T_UDPA_CONFIG_REQ * udpa_config_req); /* Wrapping functions for dtilib primitives */ void pei_dti_dti_connect_req (T_DTI2_CONNECT_REQ * dti_connect_req); void pei_dti_dti_connect_cnf (T_DTI2_CONNECT_CNF * dti_connect_cnf); void pei_dti_dti_connect_ind (T_DTI2_CONNECT_IND * dti_connect_ind); void pei_dti_dti_connect_res (T_DTI2_CONNECT_RES * dti_connect_res); void pei_dti_dti_disconnect_req (T_DTI2_DISCONNECT_REQ * dti_disconnect_req); void pei_dti_dti_disconnect_ind (T_DTI2_DISCONNECT_IND * dti_disconnect_ind); void pei_dti_dti_data_req (T_DTI2_DATA_REQ * dti_data_req); void pei_dti_dti_getdata_req (T_DTI2_GETDATA_REQ * dti_getdata_req); void pei_dti_dti_data_ind (T_DTI2_DATA_IND * dti_data_ind); void pei_dti_dti_ready_ind (T_DTI2_READY_IND * dti_ready_ind); #ifdef _SIMULATION_ void pei_dti_dti_data_test_req (T_DTI2_DATA_TEST_REQ * dti_data_test_req); void pei_dti_dti_data_test_ind (T_DTI2_DATA_TEST_IND * dti_data_test_ind); #endif /* UP DTI */ void sig_dti_ker_connection_opened_hl_ind (); void sig_dti_ker_connection_closed_hl_ind (); void sig_dti_ker_tx_buffer_ready_hl_ind (); void sig_dti_ker_tx_buffer_full_hl_ind (); void sig_dti_ker_data_received_hl_ind (T_DTI2_DATA_REQ * dti_data_req); /* DN DTI */ void sig_dti_ker_connection_opened_ll_ind (); void sig_dti_ker_connection_closed_ll_ind (); void sig_dti_ker_tx_buffer_ready_ll_ind (); void sig_dti_ker_tx_buffer_full_ll_ind (); void sig_dti_ker_data_received_ll_ind (T_DTI2_DATA_IND * dti_data_ind); /* UL IP SAP */ void ker_ip_addr_cnf (T_IP_ADDR_CNF * ip_addr_cnf); /* DTILIB callback function */ void pei_sig_callback ( U8 instance, U8 interfac, U8 channel, U8 reason, T_DTI2_DATA_IND * dti_data_ind ); /* Functions in udp_kerf.c */ void udp_build_packet (BOOL hila, UBYTE to_do); void init_udp (void); void deinit_udp (void); /* Communication handles */ #ifdef OPTION_MULTITHREAD #define hCommACI _ENTITY_PREFIXED (hCommACI) #define hCommLL _ENTITY_PREFIXED (hCommLL) #define hCommHL _ENTITY_PREFIXED (hCommHL) #endif extern T_HANDLE hCommACI; /* ACI communication */ extern T_HANDLE hCommLL; /* LL communication */ extern T_HANDLE hCommHL; /* HL communication */ extern T_HANDLE udp_handle; #ifndef NCONFIG #ifdef OPTION_MULTITHREAD #define partab _ENTITY_PREFIXED (partab) #endif extern KW_DATA partab []; #endif /*-------------------------------------------------------------------------*/ #endif /* UDP_H */ /*-------------------------------------------------------------------------*/