Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752457AbbKKSDB (ORCPT ); Wed, 11 Nov 2015 13:03:01 -0500 Received: from mail-bl2on0132.outbound.protection.outlook.com ([65.55.169.132]:9536 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752354AbbKKSC7 (ORCPT ); Wed, 11 Nov 2015 13:02:59 -0500 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=freescale.com; Date: Wed, 11 Nov 2015 11:51:13 -0600 From: Han Xu To: Yuan Yao-B46683 CC: Fabio Estevam , David Woodhouse , Brian Norris , Li Yang-Leo-R58472 , Wood Scott-B07421 , "linux-mtd@lists.infradead.org" , linux-kernel Subject: Re: [PATCH] mtd: spi-nor: fsl-quadspi: add big-endian support Message-ID: <20151111175112.GA30612@chopperman.am.freescale.net> References: <1445586797-38383-1-git-send-email-yao.yuan@freescale.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11FD022;1:wP5xnUBbmZR0QRs8DGzW5PUcJs0xLEaWyMtAECqty/phHQmNOxpcE4GAJk+MmG9dmipkDwaewiXBrB+6FusSLuvwmpbJZRnI0gGfO0bnqvPVg6skbH1A3+xavvLApHzFil450j2JdnQbenDObJMIYwy57c7Fzzz29lPyc1zcvIiwHepjnioK5yNW75Kar9iVjPgp6F0sL05ViwNDRGah7FAJwdW7D2wmaKvqgmmdS57Bmd57/cSeQwco8XHw3aSq/uECV0PR7sJvgP1Q1rqnAXfCHsSVBhKkxes8Wm3QJ9tCZf4/PnuTnlKqLKGD00OaNvq5FL+dQJVVjKVRcYlDCi0UcOAk5C4s6FMygLC5HipRCh5heJ4z9VxkEeL8V979I1KdjPVbDUbl+JN0BXs138toT6OmydLAI2ldXtoDqxg= X-Forefront-Antispam-Report: CIP:192.88.158.2;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(377454003)(24454002)(43544003)(97756001)(97736004)(110136002)(46406003)(87936001)(4001450100002)(4001350100001)(106466001)(189998001)(83506001)(5003600100002)(33656002)(23726002)(77096005)(5008740100001)(50466002)(105606002)(69596002)(5007970100001)(104016004)(5001960100002)(85426001)(81156007)(92566002)(86362001)(76176999)(54356999)(50986999)(19580405001)(19580395003)(11100500001)(47776003)(6806005)(2950100001);DIR:OUT;SFP:1102;SCL:1;SRVR:BL2PR03MB132;H:az84smr01.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB132;2:I5iij/ZtyAXek3bXeo8rxDpk4act3PjfyPFTrpxAWLvhRtHkucoPdLuUKtPGPWVxHrT2maZUXjp7jqjQynEjQ1z0Jp0UX0RCeEmx7L5NWt7yMUq7agd3UsuQerAW7999p+9Nw8PXBVccv8/xdsV+d5IgOo8anWFkKgrpGrVPWLk=;3:agLCaK64pWmb6qy6rokLzc/WIZNZ17rwARsyKOgNcm+ISl11K+NZ3cgBFFb3CPDeFF69QwDhWBhpZRqjOZkZrl10tgKvm0Gg3ZwANMOjiHZ8VwMC6dwGyruEGO0jPd/5uIlargw2DWofRdoTFXcwQ3N4xI7lxRQNKMazZGSymDpNtyHwFDX9MHlD9QZW2YkyL4yDo/G8k5ewSYquDOwYEaN5NHiMptPn1Frf4BufeuE=;25:Nx6GpZsKkwzbJ3KHNjaCIhrsZCX4hDaq6OTwbktzsg63iX5+msRFhYEE0DZe9bbH8wR4JPDeBlLSNJg8dq2UjCei2kwqgCCauXoq3pGw9S14x+k2tFbLrKKA6ECyLObFpWmGeQxlvSxBGsudrTJsGW7GKWBSHbkRv9kHkxNa+9K3ifAUrmrltZXDV2t+Ru1xkvoLsmyw3EiKVfebvFaxLMD4puzNBWXVaTMi/FQ/WCicLF7TJr/ZjBtXA/jva7I8qj+mEA4flnY68BCfmJCChQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BL2PR03MB132; X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB132;20:iZnM6eb8XVC1javYdFxlsfkR/pNBvZ07rWNvZog9o+XhzqIDraDPCh4D0qaV10CXPFYdusAD07Sxarn+D1pWy22T/iV2OLMM76RBOsNWIzgPzwA8+8DjsYlhWOo2v982/LqF51KHxROD3obGIGATpby95I63NxNE661obaop/l9KL5bntFEw2YszK1Ue+FKPCk6jhNi4JSItg9B6Ht2RpH7tJTt1wpH9/rRiimh71QQzaYZa3GlbcJxE3EEbhW14rm5BfJMW6YDy7xu5eV2SIUNmIT870Sj6w8DwTSVqH3ujqpgTpJQSpL2OwuBhKjiGi+nGdMkrQTw0kDZfjDHaAe6y8vrikxfYf4TGeYRHBEE=;4:z+hsngBH1O/bJx2nyTtM1ZuDvGfEtYB2GUhRAZXcSKRU8WbFrq1h9UDRS3SllBqYclIGASP6+Qm6yKQ9Omk8bXRQWRp2jm1TFw3Yxb37yzBpjG3L6ZYGEefCCZJ4Lc0rtkEs71Ck6+/tLBrsmldAr6s/toBLL8kzlrzTdlZ6jFgftuqyqAebCeNMg9/NVEpd02QJp1zfweczLyoj6+b6mYW2LWQmLOXtbRY8kM/ij2qKM8vBNQ9S5UsxdPFWEpi5FsrMnhGKS+zpmu4DO3abw5TtudILQr7jFRcNKSo7CMHhhfqNvKnE2KF2VKzF4pL9pSG2/+3gT0uaoQFowGwKtyU4VVx0L4AenNqR+wKZJb7+yDYz/gvtWHolvSM7Mj3s X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(10201501046)(3002001);SRVR:BL2PR03MB132;BCL:0;PCL:0;RULEID:;SRVR:BL2PR03MB132; X-Forefront-PRVS: 0757EEBDCA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR03MB132;23:uquGVMSArvz8JALUE9DJTJcgBRqaLh2sAEizflLCIo?= =?us-ascii?Q?5jcbkAopus922pedmFHcfW/v6MsntrPd8+sOdsDbl84sauL5JT9b/c566lhk?= =?us-ascii?Q?XGzrFDg3kfUO8tt8BALUHYOanvL6HzaCCy8N4v0t6M5zhd8dkd88EG/GUuNQ?= =?us-ascii?Q?uJUNC4FtJXQ7N5iZ07m2DhxJmAH7F7z89Y320CUPMzbfoXR3yRA1RbpJ8Ewe?= =?us-ascii?Q?BFltNtZURU5O3MFUdZWN3+HAlFmVzCScHCY2lAQXiyPObSwUAvTQlZbqw/1c?= =?us-ascii?Q?w1x3TAwxvYrtCoXgBCKyMDarGP9U7r+gi7KyrdM0E8Pzv3epMoM5zrOfKsGH?= =?us-ascii?Q?2WBZUUfuXT4nSLBWrFAGGAg1j9ydKcWNxt0K7bV+BzEj9msVg7O3koUtNp2C?= =?us-ascii?Q?59epZhok0kLt7h/Z7OazTu6wUW8eeS94G1dZyjDHmErc0LG5mLC5SC64+Hwi?= =?us-ascii?Q?tcndvOwMWSAJ6y7/hcfApHukYfMCAH114RYByVra3gP1gmFHLQLFEjyy/DOz?= =?us-ascii?Q?BOXaMFizCtIYZ3Gfg76TgL+Hp02McBzAHskBWREI7g/XC4pspmfdp7wrjhp2?= =?us-ascii?Q?c/dw1ehYgC+Y1F/R3sEqK+mbZJgGiZ0+u47lnyTIxdUbpygr0t4Og8940TKn?= =?us-ascii?Q?oMNvT4y5W6oYz2z+5poRs1PtO7OEzVVckrDwJ23RRC6D658Qq3FN3YLU126F?= =?us-ascii?Q?FR5pxj3DZxHXMW9TOIt6OyAe8sCzhipt4R2Vd7BIjXG2WkuppMSFvmzCz38T?= =?us-ascii?Q?d3AD+klPOeF2lhH6ATRCDRSu9INjQYp+AixT1oopGfCvXzbWgcwTigpy+HvY?= =?us-ascii?Q?l7vrZA/Sn1C/v2SMgwTrjXNJDiOZECBuqzEGjLaJ15o/OAfwajV35Q9M5CoL?= =?us-ascii?Q?m6Pl5xfA5e2cAdcwKPFN33I9yG/cLy68U+SzjhUETVfCBPAHFQb6YA3mm+Ce?= =?us-ascii?Q?L91P0GVACZI4QXg5pTWYYXHBSokZ9EB6w7MkA2MYqUSq1q91b0AJ7kqqTPdC?= =?us-ascii?Q?0cic4F2R1ITwn7c2UAPghEQENoBspSXh7mE3FOVgxYv5P+jYPfesQVcBnJKW?= =?us-ascii?Q?vlo304SJtOlQQ7ZqnjzwKOi4w4KUJfLGJVVktAhROjTshp+ptQGjgPtE6Ld2?= =?us-ascii?Q?EUfZuYLxN16UAvl4Nx+29CrLxqXZJqwIkbxRa3N57VMINnM0+zXgw13BBikS?= =?us-ascii?Q?NkeSAj7J/N9uI=3D?= X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB132;5:iMmQP8NnpCDxOZNFJldmKtrjJngwCVsbyiw1ri+g74qYh89CQett232yWEGsEoYyRl1X3L5j69hM7bH2pscp4Gg9FSbjhb/o+i2jwLo75nspf0Ag3sSFJLVxWnPEWx1iZxbAXv/Axq95O17I4QddZg==;24:mczTPPoNHWK8tRknC09z706Dku3c7A5LllnTPXMtmTP9Z2FCWR7FX4e8/DKHiwzrodttfyuhRsYfm76hOECBZD0UZi0Q4Gm/GoXPGyP9Jc8=;20:M6Dhkt3xQ6FJEF7rZOnrvDeujXvxeuXFjhQ4NWRQtYZ0V2oQ80ELV/notebfQNQnmlGKpPjR1hgTU1XhwGa+UA== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Nov 2015 18:02:56.0174 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR03MB132 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2525 Lines: 61 On Fri, Oct 30, 2015 at 04:49:41AM -0500, Yuan Yao-B46683 wrote: > Hi Fabio Estevam, > > Thanks for your suggestion. > We have an internal discussions for that. > > We think that: > According to the initial commit message of regmap, it is targeting non-memory mapped buses. (regmap: Add generic non-memory mapped register access API) But in the imx2_wdt driver, it is used for memory-mapped register space. So it seems that using such a complex framework just to deal with endian is an over-kill. > > when it is not necessary to enable the clock every time we access the register. > We don't think it is obvious to us how to use it for handling endianness, especially not the way imx2_wdt uses regmap. __regmap_init_mmio_clk() calls regmap_mmio_gen_context() which errors out if reg_format_endian is not REGMAP_ENDIAN_DEFAULT or REGMAP_ENDIAN_NATIVE, and elsewhere regmap-mmio.c It seems only little-endian accessors. > > Although it is possible to add the endianness support in the regmap_mmio driver, we don't see too much value in using it especially > > So we think: > static void qspi_writel(struct fsl_qspi *q, u32 val, void __iomem > *addr) { > if (q->big_endian) > iowrite32be(val, addr); > else > iowrite32(val, addr); > } > This way is an easier, more effective solution to do the endian issue. > > How about your think? I think the implement is fine, but I prefer to use quirk rather than read from dts? Please also rebase the patch to latest l2-mtd code. > > Best Regards, > Yuan Yao > > On Sat, Oct 24, 2015 at 11:47 PM, Fabio Estevam wrote: > > On Fri, Oct 23, 2015 at 5:53 AM, Yuan Yao wrote: > > > > > +static void qspi_writel(struct fsl_qspi *q, u32 val, void __iomem > > > +*addr) { > > > + if (q->big_endian) > > > + iowrite32be(val, addr); > > > + else > > > + iowrite32(val, addr); > > > +} > > > > I suggest you to implement regmap support for this driver instead. > > > > Take a look at drivers/watchdog/imx2_wdt.c for a reference. > > > > Then you only need to pass 'big-endian' as a property for the qspi in the .dtsi > > file and regmap core will take care of endianness. -- Best Regards, Han "Allen" Xu -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/