Example #1
0
static inline int WriteNandSectors(u32 sector_no, u32 numsectors, u8 *in)
{
    if (emunand_header) {
        if (sector_no == 0) {
            int errorcode = sdmmc_sdcard_writesectors(emunand_header, 1, in);
            if (errorcode) return errorcode;
            sector_no = 1;
            numsectors--;
            in += 0x200;
        }
        return sdmmc_sdcard_writesectors(sector_no + emunand_offset, numsectors, in);
    } else return sdmmc_nand_writesectors(sector_no, numsectors, in);
}
Example #2
0
void emunand_writesectors(uint32_t sector_no, uint32_t numsectors, uint8_t *out, unsigned int partition) {
    PartitionInfo info;
    u8 myCtr[16];
    for (int i = 0; i < 16; i++) {
        myCtr[i] = NANDCTR[i];
    }
    info.ctr = myCtr;
    info.buffer = out;
    info.size = numsectors * 0x200;
    info.keyY = NULL;
    add_ctr(info.ctr, partition / 16);
    switch (partition) {
    case TWLN	  :
        info.keyslot = 0x3;
        break;
    case TWLP	  :
        info.keyslot = 0x3;
        break;
    case AGB_SAVE :
        info.keyslot = 0x7;
        break;
    case FIRM0    :
        info.keyslot = 0x6;
        break;
    case FIRM1    :
        info.keyslot = 0x6;
        break;
    case CTRNAND  :
        info.keyslot = 0x4;
        break;
    }
    add_ctr(info.ctr, sector_no * 0x20);
    DecryptPartition(&info);
    sdmmc_sdcard_writesectors(sector_no + partition / 0x200, numsectors, out);	//Stubbed, i don't wanna risk
}
Example #3
0
DRESULT disk_write (
    BYTE pdrv,          /* Physical drive nmuber (0..) */
    const BYTE *buff,   /* Data to be written */
    DWORD sector,       /* Sector address (LBA) */
    UINT count          /* Number of sectors to write (1..128) */
)
{
    if (sdmmc_sdcard_writesectors(sector,count,buff))
        return RES_PARERR;

    return RES_OK;
}
Example #4
0
File: sdmmc.c Project: bowies/Team3
//---------------------------------------------------------------------------------
void sdmmcMsgHandler(int bytes, void *user_data) {
//---------------------------------------------------------------------------------
	FifoMessage msg;
	int retval;

	fifoGetDatamsg(FIFO_SDMMC, bytes, (u8*)&msg);
	
	switch (msg.type) {

	case SDMMC_SD_READ_SECTORS:
		sdmmc_sdcard_readsectors(msg.sdParams.startsector, msg.sdParams.numsectors, msg.sdParams.buffer);
		break;
	case SDMMC_SD_WRITE_SECTORS:
		sdmmc_sdcard_writesectors(msg.sdParams.startsector, msg.sdParams.numsectors, msg.sdParams.buffer);
		break;
	
	}
}