^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) w1_ds2406 kernel driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) Supported chips:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Maxim DS2406 (and other family 0x12) addressable switches
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) Author: Scott Alfter <scott@alfter.us>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) The w1_ds2406 driver allows connected devices to be switched on and off.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) These chips also provide 128 bytes of OTP EPROM, but reading/writing it is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) not supported. In TSOC-6 form, the DS2406 provides two switch outputs and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) can be provided with power on a dedicated input. In TO-92 form, it provides
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) one output and uses parasitic power only.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) The driver provides two sysfs files. state is readable; it gives the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) current state of each switch, with PIO A in bit 0 and PIO B in bit 1. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) driver ORs this state with 0x30, so shell scripts get an ASCII 0/1/2/3 to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) work with. output is writable; bits 0 and 1 control PIO A and B,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) respectively. Bits 2-7 are ignored, so it's safe to write ASCII data.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) CRCs are checked on read and write. Failed checks cause an I/O error to be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) returned. On a failed write, the switch status is not changed.