1
0
mirror of git://projects.qi-hardware.com/ben-wpan.git synced 2024-07-17 08:36:37 +03:00
Commit Graph

20 Commits

Author SHA1 Message Date
Werner Almesberger
42483d67b4 atusb/fw/: added improved support for interrupt synchronization
At an interrupt barrier, the host must be able to ensure that no
interrupt generated before reaching the barrier is still pending and
will be delivered after crossing the barrier.

For this, we introduce the following concept:

- interrupts have a serial number. This number is sent to the host
  on EP 1 (currently bulk) to signal the interrupt, instead of the
  zero byte we used previously.

- the new request ATUSB_SPI_WRITE2_SYNC returns the interrupt
  serial number from after the register write (the register write
  itself is the interrupt barrier).

- the host can now check if the serial indicated from bulk and the
  serial from ATUSB_SPI_WRITE2_SYNC are the same. If yes, interrupts
  are synchronized. If not, it has to wait for the interrupt to be
  signaled on EP 1.

We should also consider the case that the interrupt serial has gotten
ahead of ATUSB_SPI_WRITE2_SYNC. But that seems to happen rarely. In
any case, it's something for the host driver to worry about, not for
the firmware.

- board.h (irq_serial), board_app.c (irq_serial, INT0_vect): count
  the interrupt serial number and return it when signaling the
  interrupt
- include/atusb/ep0.h (ATUSB_SPI_WRITE2_SYNC), ep0.c (my_setup):
  new request ATUSB_SPI_WRITE2_SYNC that does a register write, then
  returns the interrupt serial
2011-07-07 15:51:07 -03:00
Werner Almesberger
ead7ade51e Revert "atusb/fw/: added optional debug log with request ATUSB_READ_LOG"
This reverts commit 39e3d4e61a.

The log isn't so useful in its present state because we may have to
unplug/replug to get out of a troublesome condition.
2011-07-05 19:39:25 -03:00
Werner Almesberger
39e3d4e61a atusb/fw/: added optional debug log with request ATUSB_READ_LOG 2011-07-05 18:52:56 -03:00
Werner Almesberger
f7b9a18917 atusb/fw/: new request ATUSB_GPIO_CLEANUP to re-enable INT0
- board.h (gpio_cleanup), board_app.c (gpio_cleanup): restore INT0
  when done manipulating GPIOs
- board.c (gpio): updated comment explaining how to restore INT0
- include/atusb/ep0.h (enum atspi_requests), ep0.c
  (ATUSB_GPIO_CLEANUP): new request to return to normal operation
  after ATUSB_GPIO
2011-06-20 23:11:09 -03:00
Werner Almesberger
9a0184cacb atusb/fw/: new mechanism for SPI commands (more general than reg/buf requests)
- ep0.c (setup_request): store combined request code in "req", for
  later reuse
- include/ep0.h (ATUSB_SPI_WRITE, ATUSB_SPI_READ1, ATUSB_SPI_READ2),
  ep0.c (setup_request): new requests that translate easily into
  general SPI operations
2011-06-19 15:50:49 -03:00
Werner Almesberger
e42203b723 atusb/fw/: new request ATUSB_SLP_TR to pulse SLP_TR
- include/atusb/ep0.h (enum atspi_requests): added ATUSB_SLP_TR
- ep0.c (my_setup): call slp_tr on ATUSB_SLP_TR
- board.h (slp_tr), board.c: pulse SLP_TR high
2011-06-05 22:34:49 -03:00
Werner Almesberger
370cd320ef atusb/fw: new request ATUSB_GPIO for direct GPIO access
reset_rf now resets all GPIOs to their default state. This way, we
can easily recover from an incomplete or incorrect use of ATUSB_GPIO.

- atusb.c (main), board.c (reset_rf): moved call to spi_init into
  reset_rf
- board.c (reset_rf, board_init): moved GPIO setup to reset_rf
- board.c (reset_rf): set GPIOs to reset defaults
- board.h (gpio), board.c: read/modify/write all settings of GPIO
  ports
- include/atusb/ep0.h (enum atspi_requests): added new request
  ATUSB_GPIO
- ep0.c (my_setup): ATUSB_GPIO reads/reconfigures a GPIO port
2011-06-04 10:29:10 -03:00
Werner Almesberger
8c57277953 atusb/fw/: added free-running 48 bit 8 MHz counter for clock measurements
- atusb.c (main): poll the 16 bit timer for overflows
- board.h (timer_poll, timer_read), (board.c (timer_h, timer_poll,
  timer_read, board_init): added support for a free-running 48 bit timer
  (16 bits in hardware, 32 bits in software)
- include/atusb/ep0.h (ATUSB_TIMER), ep0.c (my_setup): new request
  ATUSB_TIMER to retrieve the value of the 8 MHz counter
- include/atusb/ep0.h (enum atspi_requests): describe what the groups
  of requests do
2011-05-29 21:05:28 -03:00
Werner Almesberger
dcfa689936 atusb/fw2/: assigned hardware revision code point; some cleanup
- fw/include/atusb/ep0.h (HW_TYPE_110131): defined hardware type 2 for
  ATmega32U2-based boards
- fw/ep0.c: define HW_TYPE as HW_TYPE_110131, not directly as 2
- fw2/atusb.c: include atusb/ep0.h instead of declaring ep0_init locally
2011-02-10 07:24:37 -03:00
Werner Almesberger
309a5ed6d5 atusb/fw/include/at86rf230.h: make 231-centric
- at86rf230.h (TX_AUTO_CRC_ON): changed to TX_AUTO_CRC_ON_230
- at86rf230.h (TX_AUTO_CRC_ON_231): changed to TX_AUTO_CRC_ON
- tools/atrf-txrx/atrf-txrx.c: updated for above changes
2011-01-07 14:31:27 -03:00
Werner Almesberger
f67a79b04e atusb/fw/include/at86rf230.h: many corrections, some additions
- at86rf230.h (REG_BATMON): address is 0x11, not 0x10
- at86rf230.h (TRX_CMD_MASK): width is 5 bits, not 3
- at86rf230.h (CLKM_CTRL_MASK): width is 3 bits, not 2
- at86rf230.h (PA_EXT_EN, IRQ_2_EXT_EN, TX_AUTO_CRC_ON_231): shifted by one
  bit
- at86rf230.h (RX_BL_CTRL, AACK_DIS_ACK): added missing field
- at86rf230.h: added fields PA_BUF_LT and PA_LT
- at86rf230.h (ANT_DIV): added fields of this register
- at86rf230.h (NATMON_VTH_SHIFT, NATMON_VTH_MASK): corrected typo
2011-01-07 14:29:00 -03:00
Werner Almesberger
4387d844dc atusb/fw/include/at86rf230.h: added remaining AT86RF231 values 2011-01-07 11:52:45 -03:00
Werner Almesberger
bd5b008c44 atusb/fw/include/at86rf230.h: make one section per register, not one per field
Looked too confusing.
2011-01-07 09:16:51 -03:00
Werner Almesberger
337e5d227d atusb/fw/include/at86rf230.h: started updates for AT86RF231 2011-01-07 09:11:29 -03:00
Werner Almesberger
ad2c72fa7f atusb: firmware update for the 2010-12-16 board series
- fw/Makefile: replaced "make" with $(MAKE) (just for style)
- common/Makefile.common: Makefile settings shared within project. For now,
  this contains only the board version, which defaults to 2010-12-16.
- fw/common/Makefile, fw/boot/Makefile, fw/atusb/Makefile: include
  common/Makefile.common
- fw/common/Makefile, fw/boot/Makefile, fw/atusb/Makefile: pass board
  version to cpp and gcc
- fw/atusb/atusb.c (init_io): individually set IRQ_RF to one, LED and TST
  to zero
- fw/atusb/atusb.c (init_io): added macros to set all unused pins to zero
  in a way that doesn't need updating if a signal moves from one pin to
  another
- include/atusb/ep0.h: added hardware type 1 (2010-12-16 design)
- common/config.h: set hardware type depending on board version
- common/io.h: assign pins depending on board version
2010-12-17 23:01:31 -03:00
Werner Almesberger
d1953cd47f The Great ATSPI Renaming, part 10: more title comment fixes
- atusb/fw/boot/Makefile: still referred to the project as ATSPI (not ATRF)
  in title comment
- atusb/fw/include/atusb/usb-ids.h: still had old atspi path in title comment
2010-11-11 10:47:39 -03:00
Werner Almesberger
96b6a50b3a The Great ATSPI Renaming, part 2: rename ATSPI_* identifiers to ATUSB_*
- atusb/fw/include/atusb/ep0.h, atusb/fw/atusb/ep0.c: rename all ATSPI_*
  identifiers (EP0 commands, protocol revision, etc.) to ATUSB_*
- tools/lib/atusb.c, tools/atspi-id/atspi-id.c: track identifier change
2010-11-11 08:41:25 -03:00
Werner Almesberger
7e71f98007 The Great ATSPI Renaming, part 1: rename atusb firmware files from atspi to atusb
- atusb/fw/atspi/atspi.c: renamed to atusb/fw/atspi/atusb.c
- atusb/fw/atspi/Makefile: track above change
- atusb/fw/include/atspi/: renamed to atusb/fw/include/atusb/
- atusb/fw/common/config.h, atusb/fw/atspi/atspi.c, atusb/fw/atspi/descr.c,
  atusb/fw/atspi/ep0.c: track change of include location
- atusb/fw/atspi/: renamed to atusb
- atusb/fw/Makefile: track above change
- tools/atspi-id/atspi-id.c, tools/atspi-trim/atspi-trim.c,
  tools/lib/atusb.c: track change of include location
2010-11-11 08:26:01 -03:00
Werner Almesberger
2337557a8c atusd firmware now supports setting the TST pin.
- common/io.h: TST is connected to P0_7
- include/at86rf230.h: added test mode registers REG_CONT_TX_0 (0x36) and
  REG_CONT_TX_1 (0x3d), with their values
- atspi/atspi.c (set_test_mode): set or reset TST and the LED
- atspi/atspi.c (reset_rf): leave test mode
- atspi/atspi.c (test_mode): enter test mode
- atspi/atspi.c (main): flash the LED when in test mode
- include/atspi/ep0.h (enum atspi_requests), atspi/ep0.c (my_setup): new
  command ATSPI_TEST to enter test mode
- include/atspi/ep0.h (EP0ATSPI_MINOR): bumped protocol to version 0.1
- include/at86rf230.h: corrected comment before TRX_CMD field to indicate
  that the register is called TRX_STATE
2010-11-11 02:25:54 -03:00
Werner Almesberger
b493f09363 Great renaming: atrf/wpan-atrf* becomes atusb/atusb*
- atrf/: rename to atusb/
- atrf/wpan-atrf.pro, atrf/wpan-atrf.sch, atrf/wpan-atrf.brd,
  atrf/wpan-atrf.cmp: rename to atusb.*
- atrf/Makefile: change ben-wpan to atusb
- atrf/atusb.pro (LastNetListRead): update for name change
- tools/Makefile.common (CFLAGS): change fw/ include location from atrf/
  to atusb/
2010-10-25 00:10:00 -03:00