mmu 를 지원하는 linux 에서는 실제 물리적인 주소를 직접 엑세스 할수
없습니다. 이유는 모두 가상주소를 사용하기 때문입니다.
중요한 것은 특정 IO 를 엑세스하기 위해서는 그곳의 물리적인 주소가
맵핑되어있는 가상주소를 엑세스 하여야 하는 겁니다.
ezboard 에서는 linux/arch/arm/mach-sa1100/ezboard.c 에 가상주소를
맵핑하고 있습니다.

static struct map_desc ezboard_io_desc[] __initdata = {
// virtual physical length domain r w c b
{ 0xe8000000, 0x00000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, // Flash bank 0
{ 0xf0000000, 0x10000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, // Crystal Chip
{ 0xf0100000, 0x18000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, // nCS3
LAST_DESC
};

nCS3 의 영역 0x1800 0000 에서 1M 가의 영역을 가상주소 0xf010 0000 으로
맵핑하고 있습니다. 님의 커널이 이렇게 되있지 않아 0xf010 0000 을 엑세스
하여 에러가 나는 것입니다. 이부분을 추가하여 컴파일 한후 이 커널이미지를
이용하시면 됩니다.
위의 내용은 io.h 파일에도 나와있으니 참고하세요..