John W. Linville wrote:
On Sat, Aug 12, 2006 at 05:59:46PM +0100, Daniel Drake wrote:

+       /* All of these writes are identical to AL2230 unless otherwise
+        * specified */
+       static const struct zd_ioreq16 ioreqs_1[] = {
+               /* This one is 7230-specific, and happens before the rest */
+               { CR240,  0x57 },
+               { },

I'm just curious about this line...what does it do for you?  A delay
of some sort?

The hardware allows us to write to multiple registers in a single command, which is what happens with those big arrays. If we include an empty element, it splits the request into 2 commands around the empty element.

Up until recently, the vendor driver did not use the multiple-register writes at all, it sent a separate USB command for every single register. Us doing them all in a single command is obviously much nicer but it leaves us uncertain of how safe this is, and as some writes are clearly separated from others in the vendor driver (i.e. by msleep calls, or by pointless/redundant phy locking), we play it safe by adding in the empty splitter elements.

A while ago I went over the ZD1211 AL2230 code in some detail, removing all the redundant parts and the splits which were not required for the device to work. Maybe someone will do the same for the new AL7230B code someday, I don't own one of those devices yet :)

For now, the code you see is almost identical to the vendor driver (which has started using multi-register-write for this RF).

Daniel

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to