linux-src/driver/mtd/nand/falinux_logic_nand.c 에서

 

static void falinux_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
{
 struct nand_chip *chip = mtd->priv;

 if ( cmd != NAND_CMD_NONE )
 {
#if  defined(CONFIG_MACH_EZ_X5) || defined(CONFIG_MACH_ESP_NS) || defined(CONFIG_MACH_ESP_CX) || defined(CONFIG_MACH_EZ_PXA270) || defined(CONFIG_MACH_EZ_EP9312)

  if      ( ctrl & NAND_CLE ) { writeb( cmd, chip->IO_ADDR_W + 0x100   );  }
  else if ( ctrl & NAND_ALE ) { writeb( cmd, chip->IO_ADDR_W + 0x200   );  }

#elif defined(CONFIG_MACH_ESP_MMI)

  if      ( ctrl & NAND_CLE ) { writeb( cmd, chip->IO_ADDR_W + 0x10000 );  }
  else if ( ctrl & NAND_ALE ) { writeb( cmd, chip->IO_ADDR_W + 0x20000 );  }

#else

  if      ( ctrl & NAND_CLE ) { writeb( cmd, chip->IO_ADDR_W + 0x100   );  }
  else if ( ctrl & NAND_ALE ) { writeb( cmd, chip->IO_ADDR_W + 0x200   );  }

#endif
 }
}

 

위소스에서 + 0x100 과 0x200을 각각 해주는데 무슨 의미인지를 잘 모르겠습니다.

어디를 찾아봐야 할지도 막막하고 ㅠㅠ 도와주세요~

 

static void falinux_nand_select_chip(struct mtd_info *mtd, int chipnr)
{
 struct nand_chip *chip = mtd->priv;

#if  defined(CONFIG_MACH_EZ_X5) || defined(CONFIG_MACH_ESP_NS) || defined(CONFIG_MACH_EZ_EP9312)

 switch (chipnr)
 {
 case 0:
  writeb( 0  , chip->IO_ADDR_W + 0x300 );
  writeb( 0  , chip->IO_ADDR_W + 0x000 );
  break;
 default :
  writeb( 0  , chip->IO_ADDR_W + 0x300 );
  break;
 }

 

비슷한 부분이 같은 소스에 있네요ㅠㅠ