diff options
author | Len Brown <len.brown@intel.com> | 2008-10-22 23:57:26 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-10-23 00:11:07 -0400 |
commit | 057316cc6a5b521b332a1d7ccc871cd60c904c74 (patch) | |
tree | 4333e608da237c73ff69b10878025cca96dcb4c8 /Documentation/w1/masters | |
parent | 3e2dab9a1c2deb03c311eb3f83466009147ed4d3 (diff) | |
parent | 2515ddc6db8eb49a79f0fe5e67ff09ac7c81eab4 (diff) |
Merge branch 'linus' into test
Conflicts:
MAINTAINERS
arch/x86/kernel/acpi/boot.c
arch/x86/kernel/acpi/sleep.c
drivers/acpi/Kconfig
drivers/pnp/Makefile
drivers/pnp/quirks.c
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'Documentation/w1/masters')
-rw-r--r-- | Documentation/w1/masters/ds2490 | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/Documentation/w1/masters/ds2490 b/Documentation/w1/masters/ds2490 index 239f9ae01843..28176def3d6f 100644 --- a/Documentation/w1/masters/ds2490 +++ b/Documentation/w1/masters/ds2490 | |||
@@ -16,3 +16,55 @@ which allows to build USB <-> W1 bridges. | |||
16 | DS9490(R) is a USB <-> W1 bus master device | 16 | DS9490(R) is a USB <-> W1 bus master device |
17 | which has 0x81 family ID integrated chip and DS2490 | 17 | which has 0x81 family ID integrated chip and DS2490 |
18 | low-level operational chip. | 18 | low-level operational chip. |
19 | |||
20 | Notes and limitations. | ||
21 | - The weak pullup current is a minimum of 0.9mA and maximum of 6.0mA. | ||
22 | - The 5V strong pullup is supported with a minimum of 5.9mA and a | ||
23 | maximum of 30.4 mA. (From DS2490.pdf) | ||
24 | - While the ds2490 supports a hardware search the code doesn't take | ||
25 | advantage of it (in tested case it only returned first device). | ||
26 | - The hardware will detect when devices are attached to the bus on the | ||
27 | next bus (reset?) operation, however only a message is printed as | ||
28 | the core w1 code doesn't make use of the information. Connecting | ||
29 | one device tends to give multiple new device notifications. | ||
30 | - The number of USB bus transactions could be reduced if w1_reset_send | ||
31 | was added to the API. The name is just a suggestion. It would take | ||
32 | a write buffer and a read buffer (along with sizes) as arguments. | ||
33 | The ds2490 block I/O command supports reset, write buffer, read | ||
34 | buffer, and strong pullup all in one command, instead of the current | ||
35 | 1 reset bus, 2 write the match rom command and slave rom id, 3 block | ||
36 | write and read data. The write buffer needs to have the match rom | ||
37 | command and slave rom id prepended to the front of the requested | ||
38 | write buffer, both of which are known to the driver. | ||
39 | - The hardware supports normal, flexible, and overdrive bus | ||
40 | communication speeds, but only the normal is supported. | ||
41 | - The registered w1_bus_master functions don't define error | ||
42 | conditions. If a bus search is in progress and the ds2490 is | ||
43 | removed it can produce a good amount of error output before the bus | ||
44 | search finishes. | ||
45 | - The hardware supports detecting some error conditions, such as | ||
46 | short, alarming presence on reset, and no presence on reset, but the | ||
47 | driver doesn't query those values. | ||
48 | - The ds2490 specification doesn't cover short bulk in reads in | ||
49 | detail, but my observation is if fewer bytes are requested than are | ||
50 | available, the bulk read will return an error and the hardware will | ||
51 | clear the entire bulk in buffer. It would be possible to read the | ||
52 | maximum buffer size to not run into this error condition, only extra | ||
53 | bytes in the buffer is a logic error in the driver. The code should | ||
54 | should match reads and writes as well as data sizes. Reads and | ||
55 | writes are serialized and the status verifies that the chip is idle | ||
56 | (and data is available) before the read is executed, so it should | ||
57 | not happen. | ||
58 | - Running x86_64 2.6.24 UHCI under qemu 0.9.0 under x86_64 2.6.22-rc6 | ||
59 | with a OHCI controller, ds2490 running in the guest would operate | ||
60 | normally the first time the module was loaded after qemu attached | ||
61 | the ds2490 hardware, but if the module was unloaded, then reloaded | ||
62 | most of the time one of the bulk out or in, and usually the bulk in | ||
63 | would fail. qemu sets a 50ms timeout and the bulk in would timeout | ||
64 | even when the status shows data available. A bulk out write would | ||
65 | show a successful completion, but the ds2490 status register would | ||
66 | show 0 bytes written. Detaching qemu from the ds2490 hardware and | ||
67 | reattaching would clear the problem. usbmon output in the guest and | ||
68 | host did not explain the problem. My guess is a bug in either qemu | ||
69 | or the host OS and more likely the host OS. | ||
70 | -- 03-06-2008 David Fries <David@Fries.net> | ||