mear
static void cpc925_mc_get_pfn(struct mem_ctl_info *mci, u32 mear,
bcnt = (mear & MEAR_BCNT_MASK) >> MEAR_BCNT_SHIFT;
rank = (mear & MEAR_RANK_MASK) >> MEAR_RANK_SHIFT;
col = (mear & MEAR_COL_MASK) >> MEAR_COL_SHIFT;
bank = (mear & MEAR_BANK_MASK) >> MEAR_BANK_SHIFT;
row = mear & MEAR_ROW_MASK;
u32 mear;
mear = __raw_readl(pdata->vbase + REG_MEAR_OFFSET);
cpc925_mc_get_pfn(mci, mear, &pfn, &offset, &csrow);
sw32(mear, EEREQ);
if (sr32(mear) & EEGNT) {
sw32(mear, EEDONE);
sw32(mear, EEREQ);
if (sr32(mear) & EEGNT) {
sw32(mear, EEDONE);
#define eeprom_delay() sr32(mear)
sw32(mear, 0);
sw32(mear, EECS);
sw32(mear, dataval);
sw32(mear, dataval | EECLK);
sw32(mear, EECS);
sw32(mear, EECS);
sw32(mear, EECS | EECLK);
retval = (retval << 1) | ((sr32(mear) & EEDO) ? 1 : 0);
sw32(mear, 0);
#define mdio_delay() sr32(mear)
sw32(mear, MDIO | MDDIR);
sw32(mear, MDIO | MDDIR | MDC);
sw32(mear, MDDIR | MDIO);
sw32(mear, MDDIR | MDIO | MDC);
sw32(mear, dataval);
sw32(mear, dataval | MDC);
sw32(mear, 0);
retval = (retval << 1) | ((sr32(mear) & MDIO) ? 1 : 0);
sw32(mear, MDC);
sw32(mear, 0x00);
sw8(mear, dataval);
sw8(mear, dataval | MDC);
sw32(mear, dataval);
sw32(mear, dataval | MDC);
sw8(mear, 0);
sw8(mear, MDC);
sw32(mear, 0x00);