why are we initializing spi inside a driver? the user code should do this