aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2017-10-05firmware: Makefiles: enable changing toolchainHEADmasterDenis 'GNUtoo' Carikli2-12/+14
Without that the user was expected to either patch the Makefiles or to get a toolchain with the arm-elf- prefix. Change-Id: I0c362cde7afd6de025e8fe2c1e9abe3d3a1e04a6 Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
2017-03-17add README.mdHarald Welte1-0/+58
Change-Id: Ib2c4fc8b20812f698c75041f75cd0076f5354af2
2017-03-17convert from u_int*_t to uint*_tHarald Welte71-613/+614
Change-Id: I33f6383535c5860b833f7ccb9bea122d38f28e3f
2014-11-11Merge branch 'minxu-fixes'Harald Welte13-214/+509
2014-11-11improve handling of spurious IRQsMin Xu1-6/+21
rather than printing directly from the interrupt handler, just increment the number and print it from the main loop function instead.
2014-11-11Allow some USB interrupts to be handled during dbgu_appendMin Xu1-1/+3
2014-11-11Retrieve + print previous PC from stack to debug wdog/spurious IRQMin Xu2-3/+31
Retrive previous PC from the stack before entering specific interrupt handler routines. Allow user to trace where interrupt occured: e.g. WatchDog and Spurious interrupt Prior to this change, spurious interrupt would occur so much (observed via gdb/remote debug) so it appears that the board stalled. Once a custom spurious interrupt installed, the code continues after the interrupt instead of re-entering the interrupt.
2014-11-11Don't split req_ctx with ATR payloadMin Xu1-1/+4
The codnition for flushing a req_ctx on UART idle is fixed to flush only if 1) There has been no new data since last check, and 2) There are no req_ctx currently pending to be transmitted to USB, and 3) We did NOT just got a reset and waiting for ATR I saw an ATR split in two different req_ctx prior, presumably flush decided to send req_ctx after ATR but got a new character just before sent). If we did get a RESET, let original logic decide to send the req_ctx -- presumably when ATR data is fully received.
2014-11-11iso_uart: Print more errors, not just overrunsMin Xu3-4/+10
2014-11-11change number + qty of small/large req_ctxMin Xu2-12/+7
2014-11-11pcd_enumerate: More complete USB endpoint resettingMin Xu1-9/+7
2014-11-11req_ctx: Keep statistic about number of req_ctx in given stateMin Xu3-4/+19
... and print this from a debug statement.
2014-11-11Ensure to transmit current req_ctx on RESET/VCC eventsMin Xu4-2/+31
When any of the following events occur: * VCC_PHONE off * nRST * RST we tranmsit the current req_ctx, if there is data pending. This ensures that for any successive data, the ATR flag in the next req_ctx containing the data, not in the previous req_ctx. It also ensures that the ATR is aligned at 0 offset in the new req_ctx, which is an assumption the host software makes but the previous code didn't ensure. Furthermore, we introduce a periodic flushing of any pending but incomplete req_ctx.
2014-11-11iso7816_uart.h: add missing #ifdef/endif to avoid multiple inclusionMin Xu1-0/+4
2014-11-11usbcmd_generic: Add missing \r to DEBUGP()Min Xu1-1/+1
2014-11-11watchdog: print watchdog expiration even in non-debug buildsMin Xu1-2/+2
2014-11-11pcd_enumerate: Avoid disabling interrupt during endpoint refillMin Xu1-25/+28
The old implementation has a big local_irq_save() / restore() around the endpoint re-fill routine. This disables interrupts for a long time, psossibly causing lost interrupts. The new implementation works around this by disabling the USB (UDP) interrupt only, rather than disabling all interrupts on the system.
2014-11-11simtrace: Add heartbeat message to debug consoleMin Xu3-0/+20
2014-11-11dbgu: make debug routines re-entrantMin Xu3-120/+193
2014-11-11req_ctx: Change number of small / large req_ctxMin Xu1-1/+5
2014-11-11req_ctx: avoid loop iterations by introducing per-state queuesMin Xu2-23/+120
In order to speed up the lookup of req_ctx, we keep per-state queues rather than iterating over all the request contexts that exist again and again.
2014-11-11change req_ctx sizes large 2048->1000; small 128->270Min Xu1-2/+2
2014-11-11req_ctx: Use consistent numeric range for REQ_CTX_STATEMin Xu2-21/+24
... which will allow us to check for invalid states by a simple 'greater than' check later on.
2014-11-11update main_factory to write version 1,4,0 instead of 1,3,0 to OTPHarald Welte1-1/+1
2013-11-17simtrace: main_factory: Program OTP area with simtrace versionHarald Welte2-4/+23
2013-11-17simtrace: Add OTP data containing production dataHarald Welte2-0/+112
2013-11-17spi_flash: add code for OTP read/writeHarald Welte2-18/+251
2012-05-18iso7816_uart: Make sure ATR is separated from normal APDU in all casesHarald Welte1-7/+12
Prior to this patch, the ATR was not send in a separate USB message for cards that are T=0 only.
2012-05-187816_uart: add comment about f/d calculationHarald Welte1-0/+2
2012-04-08eabi: Remove EABI functions to fix building with EABI toolchainsHolger Freyther1-99/+0
These symbols are not referenced on an arm-elf gcc 4.7, they are used when building with an arm-eabi gcc 4.7 and then cause linking issues. The linking to libgcc can not be omitted as the irq code is using ffs. Remove the EABI symbols. The alternative would be to declare the EABI as weak inside the lib1funcs. Link error: multiple definition of `__udivsi3' multiple definition of `__aeabi_uidiv' Exported symbols: nm lib/lib1funcs.o 00000000 t Ldiv0 00000010 T __div0
2012-03-23simtrace: introduce statisticsv0.5Harald Welte4-2/+70
the statistics count various events like overruns, parity errors, missing rctx and can dump those stats via USB as well as on the serial console.
2012-03-22wdt: make sure WDT doesn't fire inadvertentlyHarald Welte1-6/+13
We have to set WDD and WDV to the same value to avoid watchdog errors
2012-03-22simtrace: implement SIM power switching APIHarald Welte2-18/+48
there is now a high-level command by which we can swithc the VCC supply of the SIM cards. For some reason, the _PASS variant (passing through the voltage from the phone) doesn't seem to work reliably. It might be that we are draining reverse current throught the LDO once we supply SIM power that way.
2012-03-22make VCC / card detect more reliableHarald Welte1-2/+2
2012-03-22disable logging of PIO status in PIO interrupt routineHarald Welte1-1/+1
2012-02-12simtrace: Inform host of Fi/Di values (and flag change due to PPS)Harald Welte2-0/+6
2012-01-26simtrace: 7816 UART: Add missing entry in Di tableSylvain Munaut1-1/+1
Add missing entry in Fi_table. It's apparently used as '64' in some reader and 'unsupported' in some other. For simtrace I guess we should consider it 64.
2011-12-18Make sure we don't forward power _and_ supply SIM power at the same timeKevin Redon2-1/+20
The FPF2005 has no reverse voltage blocker, this is why the 3.3V from the LDO flows back into VCC_PHONE. It even damages the chip (so says the datasheet) I corrected the double power source problem by disabling the LDO (see patch), but still 1.8V does not work and 3.0-3.3V is used. I have to look for other reasons.
2011-12-14usb: Do not send ZLP when we have filled the windowv0.4Holger Hans Peter Freyther3-49/+53
Only send the ZLP if we send less data than was required/asked for by the host and it is a multiple of the bMaxPacketSize0 (which is hardcoded to 8 right now). This is completing the change done in fe88b83e80df8be0351ff38ee6 to fix SIMtrace attached to OSX and not regress on windows. Introduce another parameter to udp_ep0_send_data to specify the window size (wLength) or if not available the default from USB 2.0 specification.
2011-11-10dfu: Remove unused variable, mark method as not retuningHolger Hans Peter Freyther2-3/+2
2011-11-10dfu: Use {} for possible empty if statement (in case debug is off)Holger Hans Peter Freyther1-1/+3
src/dfu/dfu.c:853:23: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
2011-11-10dfu: Mark unsued variables as __unused for nowHolger Hans Peter Freyther2-4/+6
2011-11-10dfu: udp_ep0_recv_clean is static and is not called anywhereHolger Hans Peter Freyther1-14/+0
2011-11-10dfu: The i variable to disable interrupts shadows the outer indexHolger Hans Peter Freyther1-3/+3
In case ram_app_entry() returns do not reset i to 32, otherwise we will never reset the watchdog. src/dfu/dfu.c:1077:7: warning: declaration of ‘i’ shadows a previous local [-Wshadow] src/dfu/dfu.c:1068:6: warning: shadowed declaration is here [-Wshadow]
2011-10-21fix linking issue with latest binutils versionsv0.3Bjoern Kerler1-1/+1
2011-10-21Fix fi/di calculation for certain mobiles like GT-S770 or HTC RaphaelBjoern Kerler1-3/+3
There were some mistakes while copying the tables from ISO 7816-3, and also a quite old version of 7816-3 was used.
2011-08-16Update TODO fileHarald Welte1-5/+0
2011-08-16SIMTRACE: ISO7816: Deal with ATR that don't have historical bytesv0.2Harald Welte1-11/+21
In case there are no historical bytes, we immediately transition from the last TD byte into the WAIT_TCK or WAIT_APDU state.
2011-08-16ISO7816: Properly handle T=0 only cards without TCK in ATRHarald Welte1-1/+13
2011-08-15SIMTRACE UART: Reset error status on error related IRQHarald Welte1-0/+9
This prevents an IRQ-flood after a parity or overrun error, which in turn would cause a watchdog reset.