From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michal Simek Date: Fri, 10 Aug 2012 08:39:05 +0200 Subject: [U-Boot] [PATCH] block: systemace: Simplify base and width initialization In-Reply-To: <1344239531-12557-1-git-send-email-monstr@monstr.eu> References: <1344239531-12557-1-git-send-email-monstr@monstr.eu> Message-ID: <5024AC89.3030009@monstr.eu> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 08/06/2012 09:52 AM, Michal Simek wrote: > Use CONFIG parameters only at one location to simplify > the code. Also create ace_readw/writew functions. > > Signed-off-by: Michal Simek > --- > drivers/block/systemace.c | 38 +++++++++++++++++++++++++------------- > 1 files changed, 25 insertions(+), 13 deletions(-) > > diff --git a/drivers/block/systemace.c b/drivers/block/systemace.c > index 58402b9..247cf06 100644 > --- a/drivers/block/systemace.c > +++ b/drivers/block/systemace.c > @@ -51,24 +51,36 @@ > * to be the base address for the chip, usually in the local > * peripheral bus. > */ > -#if (CONFIG_SYS_SYSTEMACE_WIDTH == 8) > + > +static u32 base = CONFIG_SYS_SYSTEMACE_BASE; > +static u32 width = CONFIG_SYS_SYSTEMACE_WIDTH; > + > +static void ace_writew(u16 val, unsigned off) > +{ > + if (width == 8) { > #if !defined(__BIG_ENDIAN) > -#define ace_readw(off) ((readb(CONFIG_SYS_SYSTEMACE_BASE+off)<<8) | \ > - (readb(CONFIG_SYS_SYSTEMACE_BASE+off+1))) > -#define ace_writew(val, off) {writeb(val>>8, CONFIG_SYS_SYSTEMACE_BASE+off); \ > - writeb(val, CONFIG_SYS_SYSTEMACE_BASE+off+1);} > + writeb(val >> 8, base + off); > + writeb(val, base + off + 1); > #else > -#define ace_readw(off) ((readb(CONFIG_SYS_SYSTEMACE_BASE+off)) | \ > - (readb(CONFIG_SYS_SYSTEMACE_BASE+off+1)<<8)) > -#define ace_writew(val, off) {writeb(val, CONFIG_SYS_SYSTEMACE_BASE+off); \ > - writeb(val>>8, CONFIG_SYS_SYSTEMACE_BASE+off+1);} > + writeb(val, base + off); > + writeb(val >> 8, base + off + 1); > #endif > + } > + out16(base + off, val); > +} > + > +static u16 ace_readw(unsigned off) > +{ > + if (width == 8) { > +#if !defined(__BIG_ENDIAN) > + return (readb(base + off) << 8) | readb(base + off + 1); > #else > -#define ace_readw(off) (in16(CONFIG_SYS_SYSTEMACE_BASE+off)) > -#define ace_writew(val, off) (out16(CONFIG_SYS_SYSTEMACE_BASE+off,val)) > + return readb(base + off) | (readb(base + off + 1) << 8); > #endif > + } > > -/* */ > + return in16(base + off); > +} > > static unsigned long systemace_read(int dev, unsigned long start, > unsigned long blkcnt, void *buffer); > @@ -121,7 +133,7 @@ block_dev_desc_t *systemace_get_dev(int dev) > /* > * Ensure the correct bus mode (8/16 bits) gets enabled > */ > - ace_writew(CONFIG_SYS_SYSTEMACE_WIDTH == 8 ? 0 : 0x0001, 0); > + ace_writew(width == 8 ? 0 : 0x0001, 0); > > init_part(&systemace_dev); > > Applied to microblaze custodian tree. Michal -- Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian