I've never written a kernel driver, but wouldn't it be easier to start with the 32-bit driver, update the kernel APIs, and move (most?) integer types to fixed-width?
https://www.canon-europe.com/support/consumer_products/produ...
(not sure if the kernel USB API is the same, that might be a tricky part)