FreeCalypso > hg > fc-magnetite
view src/cs/layer1/tools/gen_intram.pl @ 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 | 945cf7f506b2 |
| children |
line wrap: on
line source
#!/usr/bin/perl if ($#ARGV == -1) { die "\nSyntax is gen_intram <C file (with extension)>\n\n"; } $#ARGV == 0 or die "Incorrect number of parameters"; $c_input_file = @ARGV[0]; # ------------------------------------------------------------------------------- # Remove .c extension and create the new filename for the processed file @file_name = split /\.c/, $c_input_file; $c_output_file = join ('', @file_name, "_intram.c"); print "Output file: $c_output_file\n"; # ------------------------------------------------------------------------------- # Generates the C file for internal RAM open input_stream, $c_input_file or die "\n\n Input C file $C_input_file cannot be opened: $!\n"; open(output_stream,'>'.$c_output_file) or die "\n\nCan't open output file $C_output_file: $!"; printf output_stream "/* ----- WARNING - File automatically generated - Do not modify it ----- */\n\n\n\n\n"; $d_internal_found = 0; # Search for data while(<input_stream>) { chomp $_; # Search for start comment if ( /#pragma DUPLICATE_FOR_INTERNAL_RAM_START/ ) { # DEBUG #print "Found begin of string\n"; $d_internal_found = 1; # Found begin internal RAM code, then output up to the end string while(<input_stream>) { chomp $_; if ( /#pragma DUPLICATE_FOR_INTERNAL_RAM_END/ ) { # Found end of the internal RAM code, then search for another one # DEBUG #print "Found end of string\n"; last; } else { printf output_stream "%s\n", $_; # DEBUG #print "Copied lines - $_\n"; } } } } close input_stream; close output_stream;
