block: systemace: Simplify base and width initialization
PATCH 1/1 block: systemace: Simplify base and width initialization
Use CONFIG parameters only at one location to simplify the code. Also create ace_readw/writew functions.
Signed-off-by Michal Simek <[email protected]>
--- drivers/block/systemace.c | 38 +++++++++++++++++++++++++------------- 1 files changed, 25 insertions(+), 13 deletions(-)
drivers/block/systemace.c +25 -13
@@ -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);
Signature · 1 line
1.7.0.4
Michal Simek
AppliedPATCH 1/1 block: systemace: Simplify base and width initialization
Quoted 63 lines · Michal Simek
Use CONFIG parameters only at one location to simplify the code. Also create ace_readw/writew functions.
Signed-off-by Michal Simek <[email protected]>--- drivers/block/systemace.c | 38 +++++++++++++++++++++++++------------- 1 files changed, 25 insertions(+), 13 deletions(-)drivers/block/systemace.c +24
-12@@ -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);
drivers/block/systemace.c block_dev_desc_t *systemace_get_dev(int dev) · line 139
Quoted 8 lines
drivers/block/systemace.c +1
-1@@ -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
Signature · 4 lines
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