rem: static s32 __card_start(u32 chn,cardcallback tx_cb,cardcallback exi_cb)
add: static s32 __card_start(s32 chn,cardcallback tx_cb,cardcallback exi_cb)
context: static s32 __card_start(u32 chn,cardcallback tx_cb,cardcallback exi_cb){	u32 level;	card_block *card = NULL;#ifdef _CARD_DEBUG	printf("__card_start(%d,%p,%p)\n",chn,tx_cb,exi_cb);#endif	if(chn<EXI_CHANNEL_0 || chn>=EXI_CHANNEL_2) return CARD_ERROR_NOCARD;	card = &cardmap[chn];	_CPU_ISR_Disable(level);	if(tx_cb) card->card_tx_cb = tx_cb;	if(exi_cb) card->card_exi_cb = exi_cb;	card->card_unlock_cb = __unlocked_callback;	if(EXI_Lock(chn,EXI_DEVICE_0,__card_unlockedhandler)==0) {		_CPU_ISR_Restore(level);#ifdef _CARD_DEBUG		printf("__card_start(done CARD_ERROR_BUSY)\n");#endif		return CARD_ERROR_BUSY;	}	card->card_unlock_cb = NULL;	if(EXI_Select(chn,EXI_DEVICE_0,EXI_SPEED16MHZ)==0) {		EXI_Unlock(chn);		_CPU_ISR_Restore(level);#ifdef _CARD_DEBUG		printf("__card_start(done CARD_ERROR_NOCARD)\n");#endif		return CARD_ERROR_NOCARD;	}	__setuptimeout(card);	_CPU_ISR_Restore(level);#ifdef _CARD_DEBUG		printf("__card_start(done CARD_ERROR_READY)\n");#endif	return CARD_ERROR_READY;}