def init(self, scl, sda, frequency):
         self.deinit()
-        if detector.board.any_linux:
+        if detector.board.any_embedded_linux:
             from adafruit_blinka.microcontroller.generic_linux.i2c import I2C as _I2C
         else:
             from machine import I2C as _I2C
 class SPI(Lockable):
     def __init__(self, clock, MOSI=None, MISO=None):
         self.deinit()
-        if detector.board.any_linux:
+        if detector.board.any_embedded_linux:
             from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
         else:
             from machine import SPI as _SPI
         elif board_id == ap_board.ORANGE_PI_PC:
             from adafruit_blinka.microcontroller.allwinner_h3.pin import Pin
             from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
+        elif board_id == ap_board.GIANT_BOARD:
+            from adafruit_blinka.microcontroller.sama5.pin import Pin
+            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
         else:
             from machine import SPI as _SPI
             from machine import Pin
                  timeout=1000,
                  receiver_buffer_size=64,
                  flow=None):
-        from machine import UART as _UART
+        if detector.board.any_embedded_linux:
+            raise RuntimeError('busio.UART not supported on this platform. Please use pyserial instead.')
+        else:
+            from machine import UART as _UART
         from microcontroller.pin import uartPorts
 
         self.baudrate = baudrate