From patchwork Thu Mar 26 11:45:49 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Dooks X-Patchwork-Id: 6098101 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 35989BF90F for ; Thu, 26 Mar 2015 11:52:45 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4BCB0203EC for ; Thu, 26 Mar 2015 11:52:44 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C6933203B7 for ; Thu, 26 Mar 2015 11:52:42 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1Yb6Hv-0008Gm-73; Thu, 26 Mar 2015 11:49:27 +0000 Received: from ducie-dc1.codethink.co.uk ([185.25.241.215]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1Yb6FG-0006og-7I for linux-arm-kernel@lists.infradead.org; Thu, 26 Mar 2015 11:46:43 +0000 Received: from localhost (localhost [127.0.0.1]) by ducie-dc1.codethink.co.uk (Postfix) with ESMTP id C9520460B9A; Thu, 26 Mar 2015 11:46:06 +0000 (GMT) X-Virus-Scanned: Debian amavisd-new at ducie-dc1.codethink.co.uk Received: from ducie-dc1.codethink.co.uk ([127.0.0.1]) by localhost (ducie-dc1.codethink.co.uk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zpJWn+9j5qkh; Thu, 26 Mar 2015 11:46:04 +0000 (GMT) Received: from rainbowdash.ducie.codethink.co.uk (rainbowdash.dyn.ducie.codethink.co.uk [10.24.2.193]) by ducie-dc1.codethink.co.uk (Postfix) with ESMTPS id E3D9646070A; Thu, 26 Mar 2015 11:45:58 +0000 (GMT) Received: from ben by rainbowdash.ducie.codethink.co.uk with local (Exim 4.84) (envelope-from ) id 1Yb6EY-0005XS-Mp; Thu, 26 Mar 2015 11:45:58 +0000 From: Ben Dooks To: linux-kernel@lists.codethink.co.uk Subject: [RFC 1/6] atmel: add atmel_io.h Date: Thu, 26 Mar 2015 11:45:49 +0000 Message-Id: <1427370354-21247-2-git-send-email-ben.dooks@codethink.co.uk> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1427370354-21247-1-git-send-email-ben.dooks@codethink.co.uk> References: <1427370354-21247-1-git-send-email-ben.dooks@codethink.co.uk> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20150326_044642_480869_B01A4607 X-CRM114-Status: GOOD ( 11.33 ) X-Spam-Score: -0.0 (/) Cc: nicolas.ferre@atmel.com, Ben Dooks , hskinnemoen@gmail.com, linux@maxim.org.za, linux-arm-kernel@lists.infradead.org, egtvedt@samfundet.no X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The AVR32 and ARM (AT91) architectures share a number of drivers which need to access the on chip peripherals. The current drivers work with the default endian configuration, however it is possilbe to run some of the ATMEL ARM architectures in big endian mode. If we change the drivers from __raw to _relaxed IO accesors then the ARM side works but the AVR32 will not. The _relaxed assume the bus is little endian and the __raw are native. The AVR32 is native big endian so these are not the right functions. To sort this out, and avoid a number of drivers having #ifdef for the AVR32 case we add to provide some AT91/AVR32 independant IO accessor functions. Signed-off-by: Ben Dooks Acked-by: Hans-Christian Egtvedt --- CC: Haavard Skinnemoen CC: Hans-Christian Egtvedt CC: Andrew Victor CC: Nicolas Ferre CC: linux-arm-kernel@lists.infradead.org --- include/linux/atmel_io.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 include/linux/atmel_io.h diff --git a/include/linux/atmel_io.h b/include/linux/atmel_io.h new file mode 100644 index 0000000..1234e88 --- /dev/null +++ b/include/linux/atmel_io.h @@ -0,0 +1,25 @@ +/* Atmel AT91/AVR32 independant IO + * + * Copyright 2015 Codethink Ltd. + * Ben Dooks + * + * Provide architecture indendant, endian-safe IO accessor functions + */ + +#ifdef CONFIG_AVR32 +/* For AVR32 the readl and writel relaxed will do an extra byte reverse + * as the peripherals are already in the same endian-ness as the CPU and + * readl/writel assume little endian where the CPU is big endian + */ +#define atmel_oc_readl __raw_readl +#define atmel_oc_writel __raw_writel + +#define atmel_oc_readw __raw_readw +#define atmel_oc_writew __raw_writew +#else +#define atmel_oc_readl readl_relaxed +#define atmel_oc_writel writel_relaxed + +#define atmel_oc_readw readw_relaxed +#define atmel_oc_writew writew_relaxed +#endif