Age Message
11 years 11 months ieee802154/at86rf230: Add Automatic retransmit form the extended mode

This will handle CSMA/CA for us as well as re-sending frames when no ack comes
in timely.

Signed-off-by: Stefan Schmidt <>
11 years 11 months ieee802154/at86rf230.c: Prepare driver for auto ACK support

Implement the filter function to update short address, pan id and ieee
address on change. Allowing for hardware address filtering needed for
auto ACK. Switch state machine to use auto ACK states for rx.

Currently wrapped in ugly ifdef's until automatic re-transmit is also in place.
Testing for auto ACK showed no problems so far.

Signed-off-by: Stefan Schmidt <>
11 years 11 months ieee802154/at86rf230.h: Fix register names for RX_AACK_ON and TX_ARET_ON

The register names have been wrong since the beginning but it only showed up now
as they are actualy used for the upcoming auto ACK support.

Signed-off-by: Stefan Schmidt <>
12 years 2 months atusb: use MODULE_AUTHOR according to include/linux/module.h; added myself

include/linux/module.h decrees:
* Author(s), use "Name <email>" or just "Name", for multiple
* authors use multiple MODULE_AUTHOR() statements/lines.

Make it so.
Commit 846338826bb4971daa49c454d6c34f366d0f66fe, by Werner Almesberger
12 years 2 months atusb: changed interrupt synchronization from fixed delay to SPI_WRITE2_SYNC

The fixed 10 ms delay was an unnecessary waste of time. The new
mechanism synchronized interrupts by matching the interrupt's
serial number (sent on EP 1) with the serial returned by the new

If we don't have a match, a 50 ms timeout will kick in. This will
save us in situations where EP 1 has a problem or also in case a
new interrupt arrives before the ATUSB_SPI_WRITE2_SYNC response.

Signed-off-by: Werner Almesberger <>
Commit b2d71a931b84b937520b79a4d422cb3de5e1ec87, by Werner Almesberger
12 years 2 months at86rf230: we may be in BUSY_RX after commanding RX_ON

Checking arrival in RX_ON races with incoming traffic. If frame
reception begins before we have a chance to see that we've arrived
in RX_ON, at86rf230_state complains about unexpectedly finding the
transceiver in BUSY_RX.

This isn't the prettiest solution (and it doesn't check if we're
in BUSY_RX before even commanding the change, although I think
this shouldn't happen), but it makes the problem go away.

Signed-off-by: Werner Almesberger <>
Commit e21c6ed8f48f10726f75d5f02f57f2a3c510e15a, by Werner Almesberger
12 years 2 months atusb: adjusted dev_* severity levels

The driver should now be quiet after initialization unless there's
some problem.

Signed-off-by: Werner Almesberger <>
Commit b003725a33d5181611edf5d00e80e40563d277ab, by Werner Almesberger
12 years 2 months atusb: updated to do list and added missing \n to dev_info
Commit 1b9d72f56fae0d149c5307a3f9f38f3b3d410b87, by Werner Almesberger
12 years 2 months atusb: implement interrupt synchronization via a 10 ms delay timer

Writes to TRX_STATE may have to act as interrupt barriers. Since we
currently have no direct means for ensuring that host and atusb are
synchronized, we simply wait 10 ms, which should be sufficient to
receive any pending bulk data.

Moved the TRX_STATE change detection logic from atusb_transfer to
atusb_write and implemented the delay via a timer.

Signed-off-by: Werner Almesberger <>
Commit eb1a51efda953658df691c467a6b1249e54c5dd8, by Werner Almesberger
12 years 2 months atusb: correctly print the build date

The code assumed the string send by atusb was NUL-terminated, which
it isn't. We therefore can only accept one byte less in the buffer
and must terminate the string ourselves.

Signed-off-by: Werner Almesberger <>
Commit c35f50f5d1d804ff4d8523d8b20f36012bb066a2, by Werner Almesberger
12 years 2 months atusb: initially disable the interrupt delivery tasklet

This prevents is from firing the interrupt before the driver is ready
to handle it. We therefore don't need the work-around in at86rf230.c

Signed-off-by: Werner Almesberger <>
Commit 206feca691aa938d6f659ac9041d4c4ef8001b0a, by Werner Almesberger
12 years 2 months atusb: moved firmware version info before AT86RF230 driver bringup

This makes the sequence of messages a bit more logical and also makes
sure atusb_probe succeeds on successful spi_new_device.

Signed-off-by: Werner Almesberger <>
Commit 4c977e4dfb6e95caec9cdebe1cac7b87b1e3d40b, by Werner Almesberger
12 years 2 months atusb: added interrupt URB removal on cleanup

This adds the cleanup but leaves some races open.

Signed-off-by: Werner Almesberger <>
Commit 64e0322abad52f9ca6566603e5df0f8e49c6a27d, by Werner Almesberger
12 years 2 months atusb: converted interrupt delivery to use tasklets

Tasklets are a lot cleaner than the atomic operations and weird logic
we had before. And the result should also be more correct ;-)

Signed-off-by: Werner Almesberger <>
Commit edb55e1d9917f35ce2ec30afa47ede66fb06273b, by Werner Almesberger
12 years 2 months atusb: added tentative interrupt support

Added the USB-to-interrupt logic. The approach is basically to have a
bulk URB that waits for an incoming interrupt notification and that
gets resubmitted whenever the interrupt is acknowledged.

We map enable/disable to an atomic count of the masking depth.

To do:
- convert printks to dev_dbg or remove them
- remove bulk URB on driver unload
- implement interrupt synchronization (via an 10 ms timer)
- don't make atusb_irq_enable call atusb_do_irq directly but start
a tasklet instead. Otherwise, we recurse on a spin lock held
somewhere in the interrupt handling infrastructure.

We send our first interrupt before at86rf230.c is ready to handle
it. This causes all further interrupts to be lost. As a work-around,
just clear IRQ_STATUS at the end of at86rf230_probe.

Signed-off-by: Werner Almesberger <>
Commit 7fa3bd331029facef4464626aee9f351b386e45d, by Werner Almesberger
12 years 2 months Revert "ieee802154/at86rf230: Be more verbose and disable irq handling for now"

This reverts commit 88bf9af396b0ad297328394c29d6ab5ea04e5aac.

We now support interrupts. Revert the driver to its formers self.
Commit 7a7da98f755be058951bea165fcf6c83a5b2537e, by Werner Almesberger
12 years 2 months atusb: merged error checking and request completion for control transfers

Most of the processing in atusb_ctrl_cb and atusb_read_fb_cb was
identical. Merged it.

Also changed bare printk to dev_dbg or dev_info.

Signed-off-by: Werner Almesberger <>
Commit 247b48a72cfd14d1c5b1ae2f9e9addea14ceb310, by Werner Almesberger
12 years 2 months atusb: honor thine card-punching ancestors

Wrapped lines > 80 characters. Also corrected whitespace excursion

Signed-off-by: Werner Almesberger <>
Commit 3000508494166738dfa12ba5a61ec8eab76bce51, by Werner Almesberger
12 years 2 months atusb: added section titles and moved code in a more logical order

Signed-off-by: Werner Almesberger <>
Commit 0d9f58be0e881b0f32f5a1b3b40f8babb26ee811, by Werner Almesberger
12 years 2 months atusb: remove more unused items (usb_irq, urb_completion)

We don't have a proper interrupt for USB but use a completion callback.
Also, since we're now proudly asynchronous, there's no need for

Signed-off-by: Werner Almesberger <>
Commit 2723787ddc5789c3268deafbfcd3db80a63a182c, by Werner Almesberger
12 years 2 months atusb: renamed atusb_read1_cb to atusb_ctrl_cb

Since we use it for read and write, better give it a more generic name.

Signed-off-by: Werner Almesberger <>
Commit 7b40185715c221c5592732066510c42760743e65, by Werner Almesberger
12 years 2 months atusb: remove atusb_read2

It was just a stub producing a warning and we don't need the
functionality now anyway (it would be necessary for SRAM reads, but
it's still not clear if we'll ever need these).

Signed-off-by: Werner Almesberger <>
Commit 67a52a6f298b883172cee3e596e2f3f8dbcc4d0c, by Werner Almesberger
12 years 2 months atusb: renamed ctrl_urb to just "urb"

Signed-off-by: Werner Almesberger <>
Commit 0d21f45f7a0daba3e2d83b9e9083ea558a9b1b54, by Werner Almesberger
12 years 2 months atusb: removed atusb_build from struct atusb_local and streamlined "static info"

We don't need to keep all this information around after initializing.
Also, it's nicer to keep everything in small functions than to spread
it out over several of them.

Note: it compiles but is otherwise untested.
Commit 6dfb2e55f8f1373e9c87f6952f5d8d7d1b347f7a, by Werner Almesberger
12 years 2 months drivers/spi/atusb: Remove ctrl_urb from local struct.

Its only needed in submit_control_urb()

Signed-off-by: Stefan Schmidt <>