From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Wed, 2 Dec 2015 01:20:28 +0100 Subject: [U-Boot] [PATCH] arm: socfpga: fix up a questionable macro for SDMMC In-Reply-To: <565E2E2E.6050407@opensource.altera.com> References: <1449012047-7763-1-git-send-email-dinguyen@opensource.altera.com> <201512020030.32516.marex@denx.de> <565E2E2E.6050407@opensource.altera.com> Message-ID: <201512020120.28850.marex@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Wednesday, December 02, 2015 at 12:33:02 AM, Dinh Nguyen wrote: > On 12/01/2015 05:30 PM, Marek Vasut wrote: > > On Wednesday, December 02, 2015 at 12:20:47 AM, > > dinguyen at opensource.altera.com > > > > wrote: > >> From: Dinh Nguyen > >> > >> Not sure what made this macro questionable, but edit the macro to be > >> similar to what is used in Linux. > > > > It should most likely be dissolved and moved into socfpga_dw_mmc.c , > > since it's used only once in there. What do you think ? > > Hmm...if you move this to socfpga_dw_mmc.c then the #if defined(A10) > would have to follow as the bit for smplsel is at shift 4 instead of 3. > > So if you had this for in system_manager.h, then socfpga_dw_mmc.c > doesn't have to change. > > --- a/arch/arm/mach-socfpga/include/mach/system_manager.h > +++ b/arch/arm/mach-socfpga/include/mach/system_manager.h > @@ -201,8 +201,13 @@ struct socfpga_system_manager { > #define SYSMGR_FPGAINTF_NAND (1 << 4) > #define SYSMGR_FPGAINTF_SDMMC (1 << 5) > > +#if defined(SOCFPGA_GEN5) > #define SYSMGR_SDMMC_CTRL_SET(smplsel, drvsel) \ > ((((smplsel) & 0x7) << 3) | (((drvsel) & 0x7) << 0)) > +#else /* Arria10 */ > +#define SYSMGR_SDMMC_CTRL_SET(smplsel, drvsel) \ > + ((((smplsel) & 0x7) << 4) | (((drvsel) & 0x7) << 0)) > +#endif Then define the offsets in system_manager.h and then just do writel((smplsel << OFFSET1) | (drvsel << offset2), ...); in the MMC driver. That would work without ifdeffery, right ? Best regards, Marek Vasut