Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754156AbcCWLvJ (ORCPT ); Wed, 23 Mar 2016 07:51:09 -0400 Received: from webbox1416.server-home.net ([77.236.96.61]:60144 "EHLO webbox1416.server-home.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751765AbcCWLu7 (ORCPT ); Wed, 23 Mar 2016 07:50:59 -0400 From: Alexander Stein To: Mark Brown Cc: linux-kernel@vger.kernel.org Subject: Re: regmap: mmio: regression in pre-v4.6-rc1 Date: Wed, 23 Mar 2016 12:50:53 +0100 Message-ID: <2546687.zGbvS8bYIW@ws-stein> User-Agent: KMail/4.14.10 (Linux/4.1.15-gentoo-r1; KDE/4.14.16; x86_64; ; ) In-Reply-To: <20160323113939.GI2566@sirena.org.uk> References: <1981840.HVGTg07J9M@ws-stein> <4116114.XWfjkrStv7@ws-stein> <20160323113939.GI2566@sirena.org.uk> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1540 Lines: 32 On Wednesday 23 March 2016 11:39:39, Mark Brown wrote: > On Wed, Mar 23, 2016 at 12:16:13PM +0100, Alexander Stein wrote: > > On Wednesday 23 March 2016 10:34:15, Mark Brown wrote: > > > > Are you *sure* that this is actually big endian? Are you basing this on > > > documentation or on what happened to work for you in the past. > > > Please refer to QorIQ LS1021A Reference Manual (REV 0) table 2.2 (CCSR block > > base address map) which states that this peripheral (among _most_ but not all) > > requires byte swapping. Same for DSPI. > > Yeah, it sounds strange. > > I don't have that document. Nothing wrong with that, I just wanted to state where it is actually documented. > > > Have you tried tracing through the code to see what ends up happening to > > > the I/O? It should come out using your architecture's big endian > > > accessors. > > > In regmap_mmio_gen_context ctx->reg_read is set to regmap_mmio_read32le and > > ctx->reg_write to regmap_mmio_write32le respectively. > > So how does that happen then? We set these values if the bus is > default, little or native endian but if it's big endian we go into a > completely different case... Well, in regmap_mmio_gen_context config->reg_format_endian is still set to REGMAP_ENDIAN_DEFAULT. of_syscon_register sets config.val_format_endian (notice val_ instead of reg_) depending on "big-endian" (or "little-endian") property. I'm kinda confused regarding reg_format_endian and val_format_endian. Dunno what should be set in which way. Best regards, Alexander