Date: Tue, 7 Mar 2017 19:38:54 +0100 From: Gergely Czuczy <gergely.czuczy@harmless.hu> To: freebsd-hackers@freebsd.org Subject: SPI communication from userspace Message-ID: <313fdb93-92c6-609f-57c9-3dec0ce84798@harmless.hu>
next in thread | raw e-mail | index | archive | help
Hello, I would like to ask for some help, on how to communicate with an Adafruit MAX31856 breakout board over the SPI bus under freebsd, on an RPi3. As far as I can see, the spibus(4) driver is there, but there's no driver for this chip, and I can't access the SPI calls from userspace either. I could try to write a driver, however I don't have the experience working with the FreeBSD kernel. SPI communication is quite simple, you send a single byte to the device, and if the MSB was 1 it's a write, if it's 0 it's a read operation, remaining 7 bits is the address. Then you either write a byte to the address, or wait for the device to respond by the next cycle. Other difficulty is, the RPi3 provides 2 PINs for CS, and I have 3 devices, so I either have to use generic GPIO PINs, or de/multiplex it, which might require a userspace call for device selection on the bus. So, how should I start? What would be a good way to do the userspace-kernelspace communication? Also, I'm not sure whether I should do a specific driver for this device, or a generic one, and writing the specifics in userspace. Also, if you could point me to some documentation which would explain how to work with the kernel, make a custom module, the possible user/kernelspace communication possibilities, and how to call another kernel module's functions, would be quite appreciated. Also, if someone knows where could I find docs on the spibus driver, would be quite nice since, it's just code so far. Best regards, Gergely
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?313fdb93-92c6-609f-57c9-3dec0ce84798>