| .. SPDX-License-Identifier: GPL-2.0-or-later |
| |
| ===================== |
| Kernel driver w1-uart |
| ===================== |
| |
| Author: Christoph Winklhofer <cj.winklhofer@gmail.com> |
| |
| |
| Description |
| ----------- |
| |
| UART 1-Wire bus driver. The driver utilizes the UART interface via the |
| Serial Device Bus to create the 1-Wire timing patterns as described in |
| the document `"Using a UART to Implement a 1-Wire Bus Master"`_. |
| |
| .. _"Using a UART to Implement a 1-Wire Bus Master": https://www.analog.com/en/technical-articles/using-a-uart-to-implement-a-1wire-bus-master.html |
| |
| In short, the UART peripheral must support full-duplex and operate in |
| open-drain mode. The timing patterns are generated by a specific |
| combination of baud-rate and transmitted byte, which corresponds to a |
| 1-Wire read bit, write bit or reset pulse. |
| |
| For instance the timing pattern for a 1-Wire reset and presence detect uses |
| the baud-rate 9600, i.e. 104.2 us per bit. The transmitted byte 0xf0 over |
| UART (least significant bit first, start-bit low) sets the reset low time |
| for 1-Wire to 521 us. A present 1-Wire device changes the received byte by |
| pulling the line low, which is used by the driver to evaluate the result of |
| the 1-Wire operation. |
| |
| Similar for a 1-Wire read bit or write bit, which uses the baud-rate |
| 115200, i.e. 8.7 us per bit. The transmitted byte 0x80 is used for a |
| Write-0 operation (low time 69.6us) and the byte 0xff for Read-0, Read-1 |
| and Write-1 (low time 8.7us). |
| |
| The default baud-rate for reset and presence detection is 9600 and for |
| a 1-Wire read or write operation 115200. In case the actual baud-rate |
| is different from the requested one, the transmitted byte is adapted |
| to generate the 1-Wire timing patterns. |
| |
| |
| Usage |
| ----- |
| |
| Specify the UART 1-wire bus in the device tree by adding the single child |
| onewire to the serial node (e.g. uart0). For example: |
| :: |
| |
| @uart0 { |
| ... |
| onewire { |
| compatible = "w1-uart"; |
| }; |
| }; |