diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index d73adf3723f7882d6bb29a0fa2da555d6ef50f9d..5de914a2eb4ac10bfdfa7319e109e277a15b9aa1 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -220,6 +220,7 @@ config TARGET_TAURUS
 	select SUPPORT_SPL
 	select DM
 	select DM_SERIAL
+	select DM_SPI
 	select DM_GPIO
 	select DM_ETH
 
diff --git a/board/siemens/taurus/taurus.c b/board/siemens/taurus/taurus.c
index 71541ba3a47b3dcc682d223870c58f7a63989ad6..3534b2a7bf4b37967519fc65d1fb135e8e7d98e2 100644
--- a/board/siemens/taurus/taurus.c
+++ b/board/siemens/taurus/taurus.c
@@ -283,6 +283,8 @@ int board_early_init_f(void)
 	return 0;
 }
 
+/* FIXME gpio code here need to handle through DM_GPIO */
+#ifndef CONFIG_DM_SPI
 int spi_cs_is_valid(unsigned int bus, unsigned int cs)
 {
 	return bus == 0 && cs == 0;
@@ -297,6 +299,7 @@ void spi_cs_deactivate(struct spi_slave *slave)
 {
 	at91_set_gpio_value(TAURUS_SPI_CS_PIN, 1);
 }
+#endif
 
 #ifdef CONFIG_USB_GADGET_AT91
 #include <linux/usb/at91_udc.h>