Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756576AbcK3HvP (ORCPT ); Wed, 30 Nov 2016 02:51:15 -0500 Received: from mail.free-electrons.com ([62.4.15.54]:46183 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751382AbcK3HvI (ORCPT ); Wed, 30 Nov 2016 02:51:08 -0500 Date: Wed, 30 Nov 2016 08:51:01 +0100 From: Boris Brezillon To: Masahiro Yamada Cc: linux-mtd@lists.infradead.org, Linux Kernel Mailing List , Marek Vasut , Brian Norris , Richard Weinberger , David Woodhouse , Cyrille Pitchen Subject: Re: [PATCH 17/39] mtd: nand: denali: support HW_ECC_FIXUP capability Message-ID: <20161130085101.483520ae@bbrezillon> In-Reply-To: References: <1480183585-592-1-git-send-email-yamada.masahiro@socionext.com> <1480183585-592-18-git-send-email-yamada.masahiro@socionext.com> <20161127170907.002e6ab4@bbrezillon> X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1567 Lines: 48 On Wed, 30 Nov 2016 15:20:10 +0900 Masahiro Yamada wrote: > Hi Boris, > > > 2016-11-28 1:09 GMT+09:00 Boris Brezillon : > &max_bitflips); > > > > Okay, so you currently have two ways of handling ECC errors. What if a > > new revision introduces yet another way to do it? > > > > How about making denali_caps a structure where you have one (or several) > > function pointers to implement operations differently depending on the > > IP revision? > > > > struct denali_caps { > > u32 feature_flags; /* If needed. */ > > bool (*handle_ecc)(...); > > ... > > }; > > > > I think a problem is the difference of function arguments: > > static bool denali_hw_ecc_fixup(struct denali_nand_info *denali, > unsigned int *max_bitflips) > > vs > > static bool denali_sw_ecc_fixup(struct denali_nand_info *denali, u8 *buf, > u32 irq_status, unsigned int *max_bitflips) > > > I do not want to pass redundant arguments, > which are used for one, but not used for the other. > We do that all the time when defining generic interfaces. > > We do not need to think about the situation that may not happen. > If happens, we can refactor the code any time. > Well, as I said in my other reply, I still think it's better to plan for this now, rather than having to change a lot things when we appear to need this. But that's only my POV, and I don't care enough to fight.