
U-Boot MARUBUN MR-SHPC-01 PCMCIA controller driver
	Last update 21/11/2007 by Nobuhiro Iwamatsu

========================================================================================

0. What's this?
    This driver supports MARUBUN MR-SHPC-01.
	url: http://www.marubun.co.jp/product/semicon/devices/qgc18e0000002n2z.html
	(Sorry Japanese only.)

    This chip is used with SuperH well, and adopted by the
    reference board.
	ex. * MS7750SE01
		* MS7722SE01
		* other

    This chip doesn't support CardBus.

1. base source code
    The code is based on sources from the Linux kernel
	( arch/sh/kernel/cf-enabler.c ).

2. How to use
    The options you have to specify in the config file are (with the
    value for my board as an example):

    * CONFIG_MARUBUN_PCCARD
	If you want to use this device driver, should define CONFIG_MARUBUN_PCCARD.
	ex.	#define CONFIG_MARUBUN_PCCARD

    * CONFIG_PCMCIA_SLOT_A
	Most devices have only one slot. You should define CONFIG_PCMCIA_SLOT_A .
	ex.	#define CONFIG_PCMCIA_SLOT_A    1

    * CONFIG_SYS_MARUBUN_MRSHPC
	This is MR-SHPC-01 PCMCIA controler base address.
	You should do the setting matched to your environment.
	ex.  #define CONFIG_SYS_MARUBUN_MRSHPC 0xb03fffe0
	     ( for MS7722SE01 environment )

    * CONFIG_SYS_MARUBUN_MW1
	This is MR-SHPC-01 memory window base address.
	You should do the setting matched to your environment.
	ex. #define CONFIG_SYS_MARUBUN_MW1 0xb0400000
	     ( for MS7722SE01 environment )

    * CONFIG_SYS_MARUBUN_MW1
	This is MR-SHPC-01 attribute window base address.
	You should do the setting matched to your environment.
	ex. #define CONFIG_SYS_MARUBUN_MW2 0xb0500000
	     ( for MS7722SE01 environment )

    * CONFIG_SYS_MARUBUN_MW1
	This is MR-SHPC-01 I/O window base address.
	You should do the setting matched to your environment.
	ex. #define CONFIG_SYS_MARUBUN_IO  0xb0600000
	     ( for MS7722SE01 environment )

3. Other
    * Check Compact Flash only.
    * Maybe, NE2000 compatible NIC is sure to move.

Copyright (c) 2007
	Nobuhiro Iwamatsu <iwamatsu@nigaur.org>
