1
0
mirror of git://projects.qi-hardware.com/ben-wpan.git synced 2024-11-22 14:40:17 +02:00
Commit Graph

300 Commits

Author SHA1 Message Date
Stefan Schmidt
dce8462939 atusb: fw: leave the FCS check to the kernel stack
This check is more harm than good. For example in promiscuous mode we might want
to get frames with invalid CRC. The kernel subsystem is in a way better
situation to understand what the user want thus we deliver all packets and leave
the decision to him.
2016-04-22 22:25:10 +02:00
Stefan Schmidt
c6e776e714 atusb: fw: make the ifdefs in mac handling transceiver specific and not board specific
There could be different combinations here. E.g. there is a rzusb like board
with the transceiver replaced with an at86rf233.
2016-04-03 11:39:21 +02:00
Stefan Schmidt
968721c335 atusb: fw: re-factor SPI, USB and board_app code for board specifics
Move board specific code form spi, usb and board_app into the new board specific
files to avoid to many ifdefs.
2016-03-30 22:24:17 +02:00
Stefan Schmidt
65912c2acb atusb: fw: first round of re-factor after the integration of rzusb as a board
Move board specific parts in board_$NAME.c/h for a little abstraction and less
ifdef handling in common code.
2016-03-30 22:23:33 +02:00
Stefan Schmidt
9d043dcfd4 atusb: fw: make sure we return correctly for both atusb as well as rzusb
This was changed by the rzusb support patch. We should use the new generic
define here which maps it correctly on both devices.
2016-03-18 22:25:24 +01:00
Alexander Aring
5129029d3b atusb: fw: add support for rzusbstick
This patch adds support for the rzusbstick for the atusb firmware.
More detailed information about this usb stick:

http://www.atmel.com/tools/rzusbstick.aspx

Original I have the rzraven kit:

http://www.atmel.com/tools/rzraven.aspx

Which comes with a special cable and avr dragon programmer. You need
some programmer and wires to the programmers pins. To lookup how to
connect the programmer to the rzusbstick pinout, see:

http://www.atmel.com/Images/doc8117.pdf

page 22 (schematics of the rzusbstick).

Difference between atusb and rzusbstick(rzusb) is mainly the at86rf231
vs at86rf230 one. The rzusb contains the at86rf230 which is a little bit
hard to deal with it (and has a huge errata inside the datasheet).
Nevertheless with small schanges the atusb firmware can run now on the
rzusb. The rzusb contains also a bigger mcu, so we can maybe cache more
pdus for receive handling.

To compile the rzusb firmware call:
make NAME=rzusb

this will generate the rzusb.bin

then call the programmer (in my case avrdude):
avrdude -P usb -c dragon_jtag -p usb1287 -U flash:w:rzusb.bin

NOTE: currently there is no chance (I suppose) to ensure that the atusb
receive the correct firmware, so don't try to flash the atusb with the
rzusb firmware! Also the vendor and product id is the same.

This currently a RFC, it's a quick hack and I think we should update
more the documentation to support the rzusb.

Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Cc: Stefan Schmidt <stefan@osg.samsung.com>
Cc: Werner Almesberger <werner@almesberger.net>
2016-03-18 20:45:40 +01:00
Stefan Schmidt
fde38d59e3 atusb/fw: Bump version to 0.3 after adding EUI64 read/write handling 2016-03-17 22:30:00 +01:00
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