Exemplo n.º 1
0
/*
 * Starting point for SDIO card init.
 */
int mmc_attach_sdio(void *pCard)
{
	SDM_CARD_INFO*   card;
	int err, i, funcs;

	if (pCard == NULL)
		return -EPERM;

	card = (SDM_CARD_INFO*)pCard;

	/*
	 * Detect and init the card.
	 */
	err = mmc_sdio_init_card(pCard);
	if (err)
		goto remove;

	/*
	 * The number of functions on the card is encoded inside
	 * the ocr.
	 */
	funcs = (card->ocr & 0x70000000) >> 28;
	card->sdio_funcs = 0;

	/*
	 * Initialize (but don't add) all present functions.
	 */
	for (i = 0; i < funcs; i++, card->sdio_funcs++) 
	{
		err = sdio_init_func(pCard, i + 1);
		if (err)
			goto remove;
	}
	card->type = SDIO;
	
	return 0;
	
remove:	
	return err;
}
Exemplo n.º 2
0
int sdio_register(struct mmc_host *host)
{
	mmc_sdio_init_card(host);

	return 0;
}