You can get SocketCan just by using vcan
ip link add type vcan
(see Documentation/networking/can.txt in the linux kernel source)
and then feeding packets into it. So the driver can be written from user-space.
That said, a kernel driver might give better performance. Performance of the current firmware is atrocious, and there is an existing socketcan driver for what is almost the same avr hardware https://github.com/fabiobaltieri/open-usb-can
Yeah, I've been looking into that. Should be relatively straight forward. I'm going to make a firmware version specifically for SocketCAN as it doesn't need the MITM stuff.
I'd love to see a high-performance SocketCAN implementation with CBT. There are a growing number of tools and libraries out there that make this an awesome tool.