DS28E17IIC(4)

πŸ“¦ version 11.0, in nixpkgs unstable

πŸ’… DS28E17IIC β€” the Maxim DS28E17 1-Wire to I2C bridge driver, bestie edition

okay so picture this: it's a ds28e17iic driver page from the Kernel Interfaces Manual (section 4, the device drivers girlies ✨), and it's literally about a tiny chip that bridges 1-Wire to I2C. ngl it's kind of iconic. let's get into it 🫢


🌈 SYNOPSIS

ds28e17iic* at onewire?

that's the whole config line, periodt. it attaches at onewire? and that's it πŸ’…


✨ DESCRIPTION ✨

so the ds28e17iic driver gives you a 1-Wire to I2C bridge β€” with a iic(4) bus sitting at the far end of it β€” using the DS28E17 bridge chip. it's giving translator, it's giving middleman with main character energy 🧚

and the DS28E17? it will automatically detect and deal with a device at the other end of the bus that uses I2C clock stretching. no cap, it just handles it. slay. πŸ’–


πŸŽ€ SYSCTL VARIABLES πŸŽ€

the following sysctl(3) variables are provided, bestie:

  • hw.ds28e17iic0.readycount β€” the how-many-times knob (see readydelay right below, they're a duo πŸ‘―)
  • hw.ds28e17iic0.readydelay β€” okay so when the driver sends a transaction down the 1-Wire bus, readycount and readydelay together control how long to delay before reading the status on whether or not the conversion is done, and the number of times to perform this read back. in general these values should be as short as possible 😌 but if they're too short, a EAGAIN timeout will occur when the end device is just taking a longer than expected amount of time to respond 😭 this may be particularly noticed if the end device is doing clock stretching. ask me how I know πŸ™ˆ
  • hw.ds28e17iic0.reportreadnostop β€” if set to 1, report that an attempt to do a Read without a Stop occurred. the chip does not support that operation, bestie, it simply does not πŸ’€ so Read without Stop will be treated as a Read with a Stop, with the hope that the end device will be able to deal with that. fingers crossed fr fr 🀞
  • hw.ds28e17iic0.reportzerolen β€” if set to 1, report that an attempt to perform a zero length read or zero length write occurred. the chip does not support zero length reads or writes. that's it. that's the rule. 🚫
  • hw.ds28e17iic0.debug β€” if the driver is compiled with DS28E17IIC_DEBUG, this node will appear and can be used to set the debugging level. debugging mode: activated πŸ”₯

πŸ‘€ SEE ALSO πŸ‘€

onewire(4), iic(4), sysctl(8) β€” go read those too, iykyk πŸ“š


πŸ¦‹ HISTORY πŸ¦‹

the ds28e17iic driver first appeared in NetBSD 11.0. a legend was born βœ¨πŸ‘‘


πŸ’œ AUTHORS πŸ’œ

the ds28e17iic driver was written by Brad Spencer <brad@anduin.eldar.org>. thank you brad, you ate πŸ«ΆπŸ“


πŸ’€ BUGS πŸ’€

  • while this may not be considered a bug (okay but it's weird tho), the DS28E17 chip will detach itself from the onewire(4) bus if there is not a device connected to its SDA and SCL pins. it's giving abandonment issues 😭 plug something in, bestie!!
  • the i2cscan(8) command will not function entirely correctly when run against a DS28E17 chip. the default mode of doing a I2C Write with Stop that is zero length is not supported by the DS28E17 chip. when the i2cscan(8) command is used with its one byte read mode it will find devices as long as the device does not NACK on a I2C read. so like… it kinda works? it's giving "works on my machine" πŸ’€πŸŒˆ just know the vibes are limited here.

that's the whole page, bestie!! πŸ’– this lil rewrite came to you from the Debian edition, dated January 12, 2025 β€” mwah, stay hydrated, and don't forget to terminate your buses πŸŽ€βœ¨πŸ’…

πŸ“¦ where this page comes from