Mauro Carvalho Chehab | e9bb627 | 2019-07-31 17:08:53 -0300 | [diff] [blame] | 1 | ======================== |
Jan Kandziora | ebc4768 | 2017-09-20 23:52:46 +0200 | [diff] [blame] | 2 | Kernel driver w1_ds28e17 |
| 3 | ======================== |
| 4 | |
| 5 | Supported chips: |
Mauro Carvalho Chehab | e9bb627 | 2019-07-31 17:08:53 -0300 | [diff] [blame] | 6 | |
Jan Kandziora | ebc4768 | 2017-09-20 23:52:46 +0200 | [diff] [blame] | 7 | * Maxim DS28E17 1-Wire-to-I2C Master Bridge |
| 8 | |
| 9 | supported family codes: |
Mauro Carvalho Chehab | e9bb627 | 2019-07-31 17:08:53 -0300 | [diff] [blame] | 10 | |
| 11 | ================= ==== |
Jan Kandziora | ebc4768 | 2017-09-20 23:52:46 +0200 | [diff] [blame] | 12 | W1_FAMILY_DS28E17 0x19 |
Mauro Carvalho Chehab | e9bb627 | 2019-07-31 17:08:53 -0300 | [diff] [blame] | 13 | ================= ==== |
Jan Kandziora | ebc4768 | 2017-09-20 23:52:46 +0200 | [diff] [blame] | 14 | |
| 15 | Author: Jan Kandziora <jjj@gmx.de> |
| 16 | |
| 17 | |
| 18 | Description |
| 19 | ----------- |
| 20 | The DS28E17 is a Onewire slave device which acts as an I2C bus master. |
| 21 | |
| 22 | This driver creates a new I2C bus for any DS28E17 device detected. I2C buses |
| 23 | come and go as the DS28E17 devices come and go. I2C slave devices connected to |
| 24 | a DS28E17 can be accessed by the kernel or userspace tools as if they were |
| 25 | connected to a "native" I2C bus master. |
| 26 | |
| 27 | |
Mauro Carvalho Chehab | e9bb627 | 2019-07-31 17:08:53 -0300 | [diff] [blame] | 28 | An udev rule like the following:: |
| 29 | |
| 30 | SUBSYSTEM=="i2c-dev", KERNEL=="i2c-[0-9]*", ATTRS{name}=="w1-19-*", \ |
| 31 | SYMLINK+="i2c-$attr{name}" |
| 32 | |
Jan Kandziora | ebc4768 | 2017-09-20 23:52:46 +0200 | [diff] [blame] | 33 | may be used to create stable /dev/i2c- entries based on the unique id of the |
| 34 | DS28E17 chip. |
| 35 | |
| 36 | |
| 37 | Driver parameters are: |
| 38 | |
| 39 | speed: |
| 40 | This sets up the default I2C speed a DS28E17 get configured for as soon |
| 41 | it is connected. The power-on default of the DS28E17 is 400kBaud, but |
| 42 | chips may come and go on the Onewire bus without being de-powered and |
| 43 | as soon the "w1_ds28e17" driver notices a freshly connected, or |
| 44 | reconnected DS28E17 device on the Onewire bus, it will re-apply this |
| 45 | setting. |
| 46 | |
| 47 | Valid values are 100, 400, 900 [kBaud]. Any other value means to leave |
| 48 | alone the current DS28E17 setting on detect. The default value is 100. |
| 49 | |
| 50 | stretch: |
| 51 | This sets up the default stretch value used for freshly connected |
| 52 | DS28E17 devices. It is a multiplier used on the calculation of the busy |
| 53 | wait time for an I2C transfer. This is to account for I2C slave devices |
| 54 | which make heavy use of the I2C clock stretching feature and thus, the |
| 55 | needed timeout cannot be pre-calculated correctly. As the w1_ds28e17 |
| 56 | driver checks the DS28E17's busy flag in a loop after the precalculated |
| 57 | wait time, it should be hardly needed to tweak this setting. |
| 58 | |
| 59 | Leave it at 1 unless you get ETIMEDOUT errors and a "w1_slave_driver |
| 60 | 19-00000002dbd8: busy timeout" in the kernel log. |
| 61 | |
| 62 | Valid values are 1 to 9. The default is 1. |
| 63 | |
| 64 | |
| 65 | The driver creates sysfs files /sys/bus/w1/devices/19-<id>/speed and |
| 66 | /sys/bus/w1/devices/19-<id>/stretch for each device, preloaded with the default |
| 67 | settings from the driver parameters. They may be changed anytime. In addition a |
| 68 | directory /sys/bus/w1/devices/19-<id>/i2c-<nnn> for the I2C bus master sysfs |
| 69 | structure is created. |
| 70 | |
| 71 | |
| 72 | See https://github.com/ianka/w1_ds28e17 for even more information. |