Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754828AbdGUWXV (ORCPT ); Fri, 21 Jul 2017 18:23:21 -0400 Received: from mout.kundenserver.de ([217.72.192.74]:61963 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753502AbdGUWXT (ORCPT ); Fri, 21 Jul 2017 18:23:19 -0400 From: Arnd Bergmann To: Cyrille Pitchen , Marek Vasut , David Woodhouse , Brian Norris , Boris Brezillon , Richard Weinberger Cc: Arnd Bergmann , Joel Stanley , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Ludovic Barre , Mika Westerberg , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] [RFC] mtd: atmel-quadspi: fix build issues Date: Sat, 22 Jul 2017 00:21:54 +0200 Message-Id: <20170721222204.3402340-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:1o2m7oKYs+GM4WfFfWqKMe5PuMauLJvbKcX25EX1VTKPVfYEwh2 r9f9hiuCyPTdrjoQA2pff0ilO8jok3179Ygj+dJ+KZZZe8QV/WvOq7TDctozXPWtmsuV627 ClfnbPvwgnPfRiAwEANQJ/KvBckmNv8Kt25Y0W+0QyAlIijU5qjfsAsucvkgAKFnXHmxp0K zSLDz8mo5CQtPwYS/wI3Q== X-UI-Out-Filterresults: notjunk:1;V01:K0:TxvmlWyi6CM=:jZSYdlcbA+yZfGYC2dw9f/ ABlJtjFWDR9FD9JoO4y43ECIocJymbH6VcDsCwRlkBwh5txv7m3v/ufYfbkCrUPBb2xdVmE93 xtX1U8Z4UXatcgUbVJtlM0wOznG3jcqQs5c2AmPfVgfjCvlN6D7+pEFW7RwF3K840vCi4GzPv Ump9bjaMS0iphWlYJm53UsLmVPv04aL6AMR4x4VWHNsTJqfu3hhOOF8lvoCidjO26ENSsRZRS dB5QcSuKro4BjuEGf73yEUlEYUdXAI067FhIp4IBwC3B/WvaTb863f1+AtgNH3QVEu2eAS0rc Sp0mOs9lUWOKyQaf+G2lpCK5f+y+LXnJFkxKdsvwoAC4r28d+2GAJnl37c67vFz8V9w7RLKdQ jZUTh24/CcU+EYchqlnA9rks8AeDz9dV2zqpZCgEkzo1ThyyXtlQGH0QMAPyPPEmPb9ljV794 WkG8rK4a7iJmvAc1mfRtU9JttEeQQOUixY5cBjioaRFM1mPKXE3ZBCTYl6gjzqNH3DUb7TFOV dzwSxSkGT7ZPDB+7KtIB64gTtqfPFfhrDtuMJUxj7tjMrWo9A3rBu6TFbJ0mL8phlquEBdlv+ tYjL0XejGuivA5KMXJPGC+gSK0gvgqgfd0UUZRCCLamQdRH2DwhMPBlwR5+YvKml0AKhrTOOk jXRr8MyMQxtdlHntnzAuhHzGplqsBmkIAeSLrGNZaOflK85oVptyxr2W1jmoMwu+0+9al6rLA 1gZ7CAs2o5zz9hctvgRl2VNLlkhzn3P9CJK3vQ== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2355 Lines: 60 I ran into a link-time error with the atmel-quadspi driver on the EBSA110 platform: drivers/mtd/built-in.o: In function `atmel_qspi_run_command': :(.text+0x1ee3c): undefined reference to `_memcpy_toio' :(.text+0x1ee48): undefined reference to `_memcpy_fromio' The problem is that _memcpy_toio/_memcpy_fromio are not available on that platform, and we have to prevent building the driver there. A related problem is that the functions are not portable APIs and should not be called directly from a device driver. On little-endian machines, the regular memcpy_toio/memcpy_fromio functions are defined as optimized versions using multi-byte transfers that are much faster. Cyrille mentioned that initially using memcpy_toio/memcpy_fromio did not work, but I suspect that this was the result of a bug that has since been fixed. With that change, we can also compile-test on other architectures. Link: http://lists.infradead.org/pipermail/linux-mtd/2016-July/068583.html Fixes: 161aaab8a067 ("mtd: atmel-quadspi: add driver for Atmel QSPI controller") Signed-off-by: Arnd Bergmann --- drivers/mtd/spi-nor/Kconfig | 2 +- drivers/mtd/spi-nor/atmel-quadspi.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig index 293c8a4d1e49..22e5fc4080f8 100644 --- a/drivers/mtd/spi-nor/Kconfig +++ b/drivers/mtd/spi-nor/Kconfig @@ -41,7 +41,7 @@ config SPI_ASPEED_SMC config SPI_ATMEL_QUADSPI tristate "Atmel Quad SPI Controller" - depends on ARCH_AT91 || (ARM && COMPILE_TEST) + depends on ARCH_AT91 || (COMPILE_TEST && !ARCH_EBSA110) depends on OF && HAS_IOMEM help This enables support for the Quad SPI controller in master mode. diff --git a/drivers/mtd/spi-nor/atmel-quadspi.c b/drivers/mtd/spi-nor/atmel-quadspi.c index ba76fa8f2031..ff3849106e77 100644 --- a/drivers/mtd/spi-nor/atmel-quadspi.c +++ b/drivers/mtd/spi-nor/atmel-quadspi.c @@ -208,9 +208,9 @@ static int atmel_qspi_run_transfer(struct atmel_qspi *aq, if (cmd->enable.bits.address) ahb_mem += cmd->address; if (cmd->tx_buf) - _memcpy_toio(ahb_mem, cmd->tx_buf, cmd->buf_len); + memcpy_toio(ahb_mem, cmd->tx_buf, cmd->buf_len); else - _memcpy_fromio(cmd->rx_buf, ahb_mem, cmd->buf_len); + memcpy_fromio(cmd->rx_buf, ahb_mem, cmd->buf_len); return 0; } -- 2.9.0