Char Driver for Silicon Labs Si446x Transceivers

From: Sunip Mukherjee
Date: Mon Jul 05 2021 - 18:09:47 EST


Hi,

I am very new to the kernel community; this is my first message in the
LKML so my apologies if I am doing things wrong.

I have been using an Si4463 transceiver for UHF communication with a
cubesat I developed. I could not find any code to control the
transceiver on Linux. The closest thing I could find was an AVR
implementation by Zak Kemble
(https://blog.zakkemble.net/si4463-radio-library-avr-arduino/).
I followed the API docs and rewrote the whole thing at first for
userland only (can be found here:
https://github.com/SPACE-HAUC/si446x_linux/releases/tag/v3.1), and
then I decided it would be a great learning opportunity for me to port
it to the kernel.

The kernel port has gone mostly smoothly. The transceiver communicates
with the host MCU over SPI, and requires a pin for RESET, and another
pin for IRQ.
I have implemented the driver to provide a char device (/dev/si446x#)
to the userland for open, read, write, poll and ioctl.
I had initially set up a pull request for the driver and the device
tree overlay to the Raspberry Pi kernel community. They have agreed to
accept the device tree overlay for the device, however the driver
needs to be included by the Linux Kernel community. I want to use this
opportunity to find some people who have access to a Si446x
transceiver and a Raspberry Pi, so that the code I have can be tested,
and if deemed worthy, included in the kernel tree.

My code is hosted here: https://github.com/sunipkmukherjee/silabs.git

Any suggestions/criticisms are welcome.

Thanks,

Sunip Mukherjee,
PhD Candidate,
University of Massachusetts, Lowell

Email: sunip_mukherjee@xxxxxxxxxxxxxxx | sunipkmukherjee@xxxxxxxxx