Commit Graph

167 Commits

Author SHA1 Message Date
Harald Welte
6732248f71 Add support for board version reading via ADC 2017-02-10 19:19:48 +01:00
Harald Welte
9c78cff10b Extend WWAN modem PERST to 300ms
It seems like a lot of modems have rather long (100ms!) minimum reset
durations.  Makes me wonder if it's an actual reset line or rather juts
some GPIO that they poll/sample every so often.  Then there are other
modems that state the reset *must not* be longer than 1s.  So let's
choose 300ms as a value in-between.
2017-02-04 14:58:49 +01:00
Harald Welte
987f59aa02 Import libosmocore timer infrastructure and use it for PERST
The PERST is thus no longer busy-waiting but starting a timer to release
the PERST after 1ms.
2017-02-04 14:58:45 +01:00
Harald Welte
b41598b602 Introudce an include_libosmocore directory and move (updated) linuxlist there 2017-02-04 12:15:58 +01:00
Harald Welte
7e5c7d5b82 Add debug commands '1' and '2' to generate 1ms reset pulses to modems 2017-02-03 22:59:04 +01:00
Harald Welte
31f817c3ac Add support for controlling PERST of WWAN modems (on qmod) 2017-02-03 22:22:20 +01:00
Harald Welte
2819e9c131 wwan_led: Read + report status changes of WWAN LED inputs 2017-02-03 07:49:28 +01:00
Harald Welte
af6147997d qmod: Remove 'U' debug command and directly initialize USB
The hack to manually delay the USB initialization is no longer needed as
finally the USB enumerates.
2017-01-12 18:59:41 +01:00
Harald Welte
84ad98585c usb: Cofnigure PLLB according to board.h BOARD_MAINOSC
Actually we don't even need to use PLLB for USB and could simply use
PLLA, but then we don't c are about the extra 2.5mA
2017-01-12 18:06:57 +01:00
Harald Welte
b871363be7 qmod: cosmetic changes to EEPROM hex array
* move it out of the function so it actually is present in .rodata,
  rather than having a long sequence of stores into a stack buffer
* use 16 bytes per line so it is easier to find + change bits in there
2017-01-11 23:08:35 +01:00
Harald Welte
b30783c83e qmod EEPROM: Dont't mark any ports as non-removable
.. and don't disable any ports during bus-powered operation (which we
don't support anyway).
2017-01-11 23:02:26 +01:00
Harald Welte
ae8a465f36 qmod: Commit missing changes to EEPROM
The firmware we used for testing contained some local changes which were
not committed.  They primarily relate to the port re-ordering feature as
well as the amount of power (0x32 = 100mA) is now used consequently.
2017-01-11 22:59:09 +01:00
Harald Welte
6dfcf70f63 qmod: Start with _HUB_RESET=0 -> HUB_RESET=1 (not in reset)
Booting with the hub reset active would in turn cut our own power
supply as the hub disables all downstream port power in that case.
2017-01-11 22:23:13 +01:00
Harald Welte
f9a182d24d qmod: breal the command loop when 'U' is pressed and proceed to USB init 2017-01-11 22:22:16 +01:00
Harald Welte
afbb747170 qmod: do not automatically clear _HUB_RESET after EEPROM write
we'd rather have explicit control over that
2017-01-11 22:21:28 +01:00
Harald Welte
e07aed6543 qmod: debug menu: Add 'U' command to proceed to USB 2016-12-22 22:32:15 +01:00
Harald Welte
396354cbdb qmod: debug menu: make sure to always print something 2016-12-22 22:29:57 +01:00
Harald Welte
006b16ddc2 quad-modem: Add debug console commands for debugging 2016-12-22 21:29:41 +01:00
Harald Welte
e974fbb9e5 Issue ST12_PRTPWR_OVERRIDE before putting hub in reset
When we reset the hub, the hub will actively drvie the PRTPWR signal of
the SITMRACE12 low, resulting in the SAM3 being shut off.  If we want to
"survive" this, we need to set the OVERRIDE before we go into reset.

Right now, we never release the signal again, keeping ST12 enabled
permanently, which is of course not what we want in general.
2016-10-19 19:36:07 +02:00
Harald Welte
15e026ec34 qmod: Set PIN_PRTPWR_OVERRIDE to output/low 2016-10-11 17:46:09 +02:00
Harald Welte
4e3b9a5140 qmod: attempt to swithc the DN/DP wires of the SAM3 2016-09-05 14:04:43 +02:00
Harald Welte
67415e3385 HACK: Add EEPROM writing at boot of SAM3 on qmod
This is not for production use, but just for hardware verification
2016-09-01 20:57:56 +02:00
Harald Welte
73d697d788 i2c-bitbang: increase speed to ~110kHz 2016-09-01 18:58:41 +02:00
Harald Welte
0aea9fff28 Fix reading SDA in I2C bit-banging code
We need to use pin_sda_in, not pin_sda to read the PIO Input.
2016-09-01 18:39:12 +02:00
Harald Welte
c6ae98c53a i2c_bitbang: Change logic when to use i2c_delay() 2016-09-01 11:57:09 +02:00
Harald Welte
226b40aba4 WIP: bit-banging I2C support for EEPROM access on QMOD
for now, it just continuously reads the EEPROM bytes and dumps them to
the serial console for testing.
2016-08-21 19:33:24 +02:00
Harald Welte
fd9c041ec8 fix TRACE_ENTRY line termination (LF -> CRLF) 2016-03-20 18:20:14 +01:00
Harald Welte
622b6be774 Fix ADC based VCC detection
* we need to actually return the voltage
* we need to use the correct register name for the CIDR
2016-03-20 18:19:18 +01:00
Harald Welte
3bafe43376 dynamically dispatch USART IRQs
The different modes (configurations) will have different interrupt
handlers, so we need to dispatch them via config_func_ptrs
2016-03-20 18:19:12 +01:00
Harald Welte
dde112e71c print instance/channel number in all trace messages
When debugging issues related to two concurrent SIM card emulations,
it is vital to know to which USART a message relates.
2016-03-20 16:42:11 +01:00
Harald Welte
8ee15dbc2a read SAM3S unique serial number at start and print it 2016-03-20 16:00:39 +01:00
Harald Welte
28772ebcdc ADC: Make errata work-arounds depend on run-time detection of chip version 2016-03-20 15:44:52 +01:00
Harald Welte
cf1c19abe0 src_simtrace/main: debug/trace logging improvements 2016-03-20 15:18:18 +01:00
Harald Welte
04e37a8481 firmware/main: Disable the rotor unless TRACE_DEBUG 2016-03-20 15:18:03 +01:00
Harald Welte
53079bbbac debug/tracing updates 2016-03-20 14:58:35 +01:00
Harald Welte
c58bba0833 wait for UART Tx completion before switching baud rate at PTS 2016-03-20 14:57:53 +01:00
Harald Welte
c8beefbf85 wait for transmitter to be done before receiving
At higher speeds, it seems we are turning off the transmitter before we
are enabling the receiver.  Unfortunately the TXEN bit in the uart mode
register is read-only, so we don't really know if the transmitter is
enabled or not.  It seems we can simply keep transmitter + reciver
running at the same time, and use the TXEMPTY bit as reliable means to
determine if we're busy transmtting.
2016-03-20 14:40:47 +01:00
Harald Welte
903d63a1e0 card_emu: Alwasys update state before enabling UART Rx/Tx
The UART Rx/Tx irq might hit us before we actually reach the line that
changes the state.  So always update the state before enabling UART
Rx/Tx.
2016-03-20 13:38:39 +01:00
Harald Welte
52d554657c card_emu: Avoid PTS related race-condition
We should not set the new Fi/Di values before we actually transmitted
the PTSS PCK at the old baud rate first.
2016-03-20 13:38:05 +01:00
Harald Welte
ccb8a22037 card_emu: Avoid PTS related race-condition
We should not set the new Fi/Di values before we actually transmitted
the PTSS PCK at the old baud rate first.
2016-03-20 13:37:11 +01:00
Harald Welte
a929f218d2 card_emu: Differentiate between TRACE_{DEBUG/ERROR/INFO} 2016-03-20 13:36:42 +01:00
Harald Welte
07872b6cdd VCC/ADC: finish implementing VCC detection via ADC
... however, keep it disabled due to ADCVREF not being connected on
OWHWv1/v2.
2016-03-20 11:45:36 +01:00
Harald Welte
6dcacf3efe OWHW: fix operation with second modem/UART
We can now enable CARDEMU_SECOND_UART in owhw/board.h, as it no
longer interferes with operation of the first port (USIM1).  Whether
the second port actuall works still remains to be tested at this point.
2016-03-20 10:06:05 +01:00
Harald Welte
419eb8acf2 WIP: Use ADC to determine VCC voltage 2016-03-20 10:04:03 +01:00
Harald Welte
ff16065047 implement CEMU_USB_MSGT_DT_GET_STATUS
card_emu can now report its current satus upon request.
2016-03-19 21:59:06 +01:00
Harald Welte
2315e6ba07 ensure git version ends up in firmware image 2016-03-19 21:37:55 +01:00
Harald Welte
b26d0038f6 split/segment multiple commands from single USB transfer
UDP end-points are streams, so when we receive data on the OUT
endpoint callback, the buffer might contain several commands.  When
dispatching the messages, split (segment) them again before dispatching
them to their respective handlers.
2016-03-19 13:33:02 +01:00
Harald Welte
d295b92192 ensure usb_msg_hdr contains raw message length
we want to ensure that the length of every (current or future) message
can be determined by looking at cardemu_usb_msg_hdr.msg_len, rather than
having a length that is relative to the respective specific command.
2016-03-18 21:01:36 +01:00
Harald Welte
b8f9450c18 shrink ringbuffer size to 128 bytes
We only use it to implemet a software FIFO between the UART Rx IRQ
and the code that processes it.  1k is way too large for that.
2016-03-18 10:33:31 +01:00
Harald Welte
9f240b6d34 use irq-safe version of llist operations between USB callback and main 2016-03-18 10:32:56 +01:00