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