提交 4d2b165e 编写于 作者: J Jason Uhlenkott 提交者: Linus Torvalds

drivers-edac: i3000 replace macros with functions

Replace function-like macros with functions.
Signed-off-by: NJason Uhlenkott <juhlenko@akamai.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk
Signed-off-by: NDoug Thompson <dougthompson@xmission.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 ce783d70
...@@ -42,11 +42,23 @@ ...@@ -42,11 +42,23 @@
* 0 Error channel 0/1 * 0 Error channel 0/1
*/ */
#define I3000_DEAP_GRAIN (1 << 7) #define I3000_DEAP_GRAIN (1 << 7)
#define I3000_DEAP_PFN(edeap, deap) ((((edeap) & 1) << (32 - PAGE_SHIFT)) \
| ((deap) >> PAGE_SHIFT)) static inline unsigned long deap_pfn(u8 edeap, u32 deap)
#define I3000_DEAP_OFFSET(deap) ((deap) & ~(I3000_DEAP_GRAIN-1) & \ {
~PAGE_MASK) deap >>= PAGE_SHIFT;
#define I3000_DEAP_CHANNEL(deap) ((deap) & 1) deap |= (edeap & 1) << (32 - PAGE_SHIFT);
return deap;
}
static inline unsigned long deap_offset(u32 deap)
{
return deap & ~(I3000_DEAP_GRAIN - 1) & ~PAGE_MASK;
}
static inline int deap_channel(u32 deap)
{
return deap & 1;
}
#define I3000_DERRSYN 0x5c /* DRAM Error Syndrome (8b) #define I3000_DERRSYN 0x5c /* DRAM Error Syndrome (8b)
* *
...@@ -116,8 +128,16 @@ ...@@ -116,8 +128,16 @@
* Others: reserved * Others: reserved
*/ */
#define I3000_C1DRA 0x188 /* Channel 1 DRAM Rank Attribute (8b x 2) */ #define I3000_C1DRA 0x188 /* Channel 1 DRAM Rank Attribute (8b x 2) */
#define ODD_RANK_ATTRIB(dra) (((dra) & 0x70) >> 4)
#define EVEN_RANK_ATTRIB(dra) ((dra) & 0x07) static inline unsigned char odd_rank_attrib(unsigned char dra)
{
return (dra & 0x70) >> 4;
}
static inline unsigned char even_rank_attrib(unsigned char dra)
{
return dra & 0x07;
}
#define I3000_C0DRC0 0x120 /* DRAM Controller Mode 0 (32b) #define I3000_C0DRC0 0x120 /* DRAM Controller Mode 0 (32b)
* *
...@@ -206,8 +226,8 @@ static int i3000_process_error_info(struct mem_ctl_info *mci, ...@@ -206,8 +226,8 @@ static int i3000_process_error_info(struct mem_ctl_info *mci,
struct i3000_error_info *info, struct i3000_error_info *info,
int handle_errors) int handle_errors)
{ {
int row, multi_chan; int row, multi_chan, channel;
int pfn, offset, channel; unsigned long pfn, offset;
multi_chan = mci->csrows[0].nr_channels - 1; multi_chan = mci->csrows[0].nr_channels - 1;
...@@ -222,9 +242,9 @@ static int i3000_process_error_info(struct mem_ctl_info *mci, ...@@ -222,9 +242,9 @@ static int i3000_process_error_info(struct mem_ctl_info *mci,
info->errsts = info->errsts2; info->errsts = info->errsts2;
} }
pfn = I3000_DEAP_PFN(info->edeap, info->deap); pfn = deap_pfn(info->edeap, info->deap);
offset = I3000_DEAP_OFFSET(info->deap); offset = deap_offset(info->deap);
channel = I3000_DEAP_CHANNEL(info->deap); channel = deap_channel(info->deap);
row = edac_mc_find_csrow_by_page(mci, pfn); row = edac_mc_find_csrow_by_page(mci, pfn);
...@@ -258,9 +278,9 @@ static int i3000_is_interleaved(const unsigned char *c0dra, ...@@ -258,9 +278,9 @@ static int i3000_is_interleaved(const unsigned char *c0dra,
* we're not interleaved. * we're not interleaved.
*/ */
for (i = 0; i < I3000_RANKS_PER_CHANNEL / 2; i++) for (i = 0; i < I3000_RANKS_PER_CHANNEL / 2; i++)
if (ODD_RANK_ATTRIB(c0dra[i]) != ODD_RANK_ATTRIB(c1dra[i]) || if (odd_rank_attrib(c0dra[i]) != odd_rank_attrib(c1dra[i]) ||
EVEN_RANK_ATTRIB(c0dra[i]) != even_rank_attrib(c0dra[i]) !=
EVEN_RANK_ATTRIB(c1dra[i])) even_rank_attrib(c1dra[i]))
return 0; return 0;
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册