Stefan Schmidt
583a7b72ee
atusb/fw: add EUI64 read and write fw interface to permanently set an EUI64
...
The kernel driver will now ask for ATUSB_EUI64_READ during init and sets this
extended address if available. Use the atusb-eui64 utility from the tools folder
to read or set the permanent address.
After a new address is set the device will reset to make sure we are in a sane
state after the change.
2016-03-17 22:30:00 +01:00
Stefan Schmidt
15b15b9524
flashi/spi: Use tabs instead of spaces.
...
Purely cosmetic. No idea when this sneaked in here.
2015-06-09 22:43:32 +02:00
Werner Almesberger
37a4f00e41
atusb/fw/flash.c (flash_ops): fix placement of "const"
2015-05-29 09:43:02 -03:00
Werner Almesberger
9e9f65992c
Merge branch 'master' of projects.qi-hardware.com:ben-wpan
2015-05-22 04:52:35 -03:00
Stefan Schmidt
809a0935d8
atusb/fw: Bump minor version to mark first public release.
...
With version 0.2 we made the first public release in binary form of the
firmware. This comes together with the merge of the ATUSB driver to the
mainline linux kernel.
2015-05-21 14:58:05 +02:00
Stefan Schmidt
3ebd17f9e6
atusb/fw: Add build system support for adding a DFU suffix to the fw file
...
DFU files need to have a valid DFU suffix which provides information about the
USB vendor and product ID it should be used for as well as same basic CRC file
integrity checking. The dfu-suffix tool can add this and got added to dfu-utils
in 0.7.
With the Makefile changes we take the original atusb-bin file, make a copy and
add the DFU suffix it before flashing.
2015-05-21 14:58:05 +02:00
Stefan Schmidt
fc7551e532
atusb/fw: Use RX_AACK_ON instead of RX_ON in the firmware.
...
This allows to run the device in ARET networks as we handle the needed
automated ACK in hardware.
2015-05-20 15:02:19 +02:00
Stefan Schmidt
464ab40e39
Revert "atusb/fw/usb/: enable MCU reset on USB bus reset after config selection"
...
This reverts commit 9b2696b848
.
With this patch ATUSB resets constantly when I use it in QEMU with USB
poassthrough.
2015-05-19 16:27:49 +02:00
Werner Almesberger
f89ce523e8
atusb/fw/usb/usb.c (handle_setup): skip non-interface descriptors when processing SET_INTERFACE
2015-04-25 23:54:02 -03:00
Werner Almesberger
428390047f
fw/atusb/ (dfu_flash_ops): make const
2015-04-21 08:11:50 -03:00
Werner Almesberger
4b6f390830
atusb/fw/usb/usb.c (handle_setup): also pass interface-level GET_DESCRIPTOR to get_descriptor
2015-04-12 04:16:23 -03:00
Werner Almesberger
f7e684bbde
atusb/fw/usb/usb.h: add endpoint types
2015-04-12 04:15:04 -03:00
Werner Almesberger
a6c639bbb3
atusb/fw/usb/usb.h: add a few common class codes
2015-04-11 14:53:52 -03:00
Werner Almesberger
88e2bde7d6
atusb/fw/usb/: fix incorrect code point for USB_CLASS_PER_INTERFACE
...
The code of USB_CLASS_PER_INTERFACE is 0 and not 0xfe.
USB_CLASS_APP_SPEC is 0xfe. Also corrected the use in dfu.c
2015-04-11 14:49:41 -03:00
Werner Almesberger
b51d442c31
atusb/fw/usb/dfu.c (config_descriptor): correct alt settings off-by-one error
2014-10-23 02:06:55 -03:00
Werner Almesberger
f1e689eaa6
atusb/fw/: support alternative interface names with DFU
2014-03-25 20:54:09 -03:00
Werner Almesberger
8f2f13c30a
atusb/fw/: DFU: support multiple sets of flash operations; support multiple alt settings
2014-03-24 17:18:02 -03:00
Werner Almesberger
8b0859486e
atusb/fw/usb/: change a few more uses of ../board.h to board.h
2014-02-24 17:59:49 -03:00
Werner Almesberger
a80ba86476
atusb/fw/usb/usb.h: define PID types (LS/FS)
2013-11-17 02:37:28 -03:00
Werner Almesberger
c5f9cc1259
atusb/fw/: let include path find board.h instead of using ../board.h
2013-10-28 11:17:48 -03:00
Werner Almesberger
bf067b3e73
atusb/fw/mac.c (RX_BUFS): increase buffer size from 2 to 3 frames
2013-07-30 20:38:13 -03:00
Werner Almesberger
7fd9044d94
atusb/fw/: add SPI block reception
...
This decreases the retrieval time for a frame of 102 bytes from
660 us to 384 us, corresponding to a speed change from about
1.26 Mbps to 2.17 Mbps (102 bytes plus 2 bytes overhead).
2013-07-30 19:52:54 -03:00
Werner Almesberger
0706773e38
atusb/fw/Makefile: improve size reporting (show segment sizes)
2013-07-24 17:19:55 -03:00
Werner Almesberger
998ac7e5c6
atusb/fw/mac.c (next_buf): dedicated function for incrementing buffer indices
2013-07-24 16:21:38 -03:00
Werner Almesberger
b73d5fc1af
atusb/fw/mac.c: remove queued_rx; buffer frames in the MCU instead
...
queued_rx held a frame in the transceiver's receive buffer until we could
transfer it. This may cause frame loss if a new reception begins.
We now retrieve frames from the transceiver immediately and buffer them
in the MCU.
2013-07-24 07:57:35 -03:00
Werner Almesberger
6416fa8d0b
atusb/fw/mac.c: add section titles
2013-07-23 12:50:42 -03:00
Werner Almesberger
367c1abb0e
atusb/fw/: echo back TX ACK sequence number; don't panic if driver times out TX
2013-04-01 22:04:05 -03:00
Werner Almesberger
9b2696b848
atusb/fw/usb/: enable MCU reset on USB bus reset after config selection
...
This way the host can reset the MCU if it's hung (for example, in the
panic loop) and we don't need to unplug-replug.
2013-04-01 15:54:44 -03:00
Werner Almesberger
65722d417a
atusb/fw/mac.c: queue frame reception if USB is busy
...
This way we we make sure we retrieve the frame and thus release dynamic
buffer protection (if enabled).
2013-04-01 15:17:37 -03:00
Werner Almesberger
ad70d7c129
include/atusb/atusb.h: salvage cute explanation of 0x1540 from usb-ids.h
2013-04-01 14:43:36 -03:00
Werner Almesberger
dab0d183a2
atusb/fw/include/atusb/usb-ids.h: remove (and adapt former users)
2013-04-01 14:40:14 -03:00
Werner Almesberger
d76bdf6a82
atusb/fw/mac.c (handle_irq): move frame reception to separate function
2013-04-01 14:29:57 -03:00
Werner Almesberger
60ee82ba93
atusb/fw/mac.c (handle_irq): only handle TRX_END; never fall back to seq ints
2013-04-01 12:48:30 -03:00
Werner Almesberger
3e749c3140
fw/include/atusb/ep0.h: protect also USB_DIR_IN and USB_DIR_OUT
...
They're currently not defined by libusb, but since the kernel has them,
they may eventually also end up in user space.
2013-04-01 11:23:48 -03:00
Werner Almesberger
16dd767857
fw/include/atusb/ep0.h (USB_TYPE_VENDOR): avoid conflict with /usr/include/usb.h
2013-04-01 05:59:18 -03:00
Werner Almesberger
2d43876e4a
atusb/fw/board.h: de-duplicate USB ID definitions (now originate from atusb.h)
2013-04-01 05:54:58 -03:00
Werner Almesberger
12d3401f64
fw/include/atusb/: move shared protocol definitions from ep0.h to atusb.h
2013-04-01 05:47:53 -03:00
Werner Almesberger
647f3c0375
atusb/fw/: get rid of some more "int"s
...
No size change this time.
2013-03-29 19:19:49 -03:00
Werner Almesberger
a8db238cbb
atusb/fw/: convert functions returning "int" to "bool"
...
Firmware size is down from 5612 to 3590 bytes. Wow !
2013-03-29 19:14:11 -03:00
Werner Almesberger
c9ab070ffd
atusb/fw/mac.c (do_tx): add timeout for transition to TRX_STATUS_RX_[AACK_]ON
2013-03-29 18:50:54 -03:00
Werner Almesberger
211280356d
atusb/fw/mac.c: check CRC and auto-discard bad frames
2013-03-29 17:02:24 -03:00
Werner Almesberger
5fc9575e4e
atusb/fw/mac.c (do_tx): pulse SLP_TR instead of sending TRX_CMD_TX_START
2013-03-29 15:03:03 -03:00
Werner Almesberger
88c7e64e38
atusb/fw/mac.c (txing, queued_tx_ack): change from "int" to "bool"
2013-02-20 18:48:53 -03:00
Werner Almesberger
de8bcc1925
atusb/fw/mac.c: always wait for stability before changing transceiver state
2013-02-20 13:05:33 -03:00
Werner Almesberger
852aaf1b66
atusb/fw/: reset MAC state on ATUSB_RF_RESET
2013-02-13 09:30:21 -03:00
Werner Almesberger
911eb4d4b5
fw/mac.c (handle_irq): read REG_IRQ_STATUS also if we ignore the value
...
Else, we won't get any further interrupts.
2013-02-13 01:35:23 -03:00
Werner Almesberger
eeeb5599f8
atusb/fw/mac.c: reserved code 0 and added notification of TX completion
...
- mac.c (queued_tx_ack, rx_done, handle_irq): on TX completion, send a
a zero byte on EP 1
- mac.c (handle_irq): don't receive zero-sized frames (they're
malformed anyway), so that size zero can be used to signal TX
completion
2011-07-13 14:22:49 -03:00
Werner Almesberger
da7803a746
atusb/fw/: some small "HardMAC" fixes
2011-07-12 17:48:17 -03:00
Werner Almesberger
862b554e2d
libatrf: added HardMAC functions
...
This function set isn't really usable for real communication. Its main
purpose is to help with testing the firmware.
- tools/lib/driver.h (struct atrf_driver): added driver functions for
HardMAC access
- tools/include/atrf.h (atrf_rx_mode, atrf_rx, atrf_tx),
tools/lib/atrf.c: functions to enable/disable HardMAC mode and to
send/receive frames
2011-07-12 17:45:59 -03:00
Werner Almesberger
c1071309d8
atusb/fw/: added "HardMAC" support (not yet using the TRX's MAC)
...
- include/atusb/ep0.h (enum atspi_requests), ep0.c (my_setup): added
new "HardMAC" requests ATUSB_RX_MODE and ATUSB_TX
- mac.h, mac.c: basic "HardMAC" procedure
- board_app.c (INT0_vect): call MAC-specific interrupt handler if
provided
- Makefile (OBJS): added mac.o
2011-07-12 12:26:07 -03:00