The controller looks like a plain old SPI + I2C adapter and GPIO button card than anything else to me. The SPI port is used to communicate to all the chips in a chained SPI bus, and the I2C bus is used to communicate to the temp chips.
From what it would seem there is more going on than just that, the bitmain_spi.ko kernel module appears to be built from the following source files. It looks like there is a FPGA of sorts as well that it interfaces with which would explain the fpga source files being a part of the bitmain_spi.ko kernel module.
bitmain-asic-drv.c
bitmain-asic.h
fpga.c
fpga.h
sha2.c
sha2.h
spi.c
spi.h
Makefile