mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
[boot] move boot related packages to their own folder
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33781 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
113
package/boot/uboot-xburst/files/cpu/mips/jz_mmc.h
Normal file
113
package/boot/uboot-xburst/files/cpu/mips/jz_mmc.h
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
* linux/drivers/mmc/jz_mmc.h
|
||||
*
|
||||
* Author: Vladimir Shebordaev, Igor Oblakov
|
||||
* Copyright: MontaVista Software Inc.
|
||||
*
|
||||
* $Id: jz_mmc.h,v 1.3 2007-06-15 08:04:20 jlwei Exp $
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#ifndef __MMC_JZMMC_H__
|
||||
#define __MMC_JZMMC_H__
|
||||
|
||||
#include "mmc_protocol.h"
|
||||
|
||||
#define MMC_DEBUG_LEVEL 0 /* Enable Debug: 0 - no debug */
|
||||
|
||||
#define MMC_BLOCK_SIZE 512 /* MMC/SD Block Size */
|
||||
|
||||
#define ID_TO_RCA(x) ((x)+1)
|
||||
|
||||
#define MMC_OCR_ARG 0x00ff8000 /* Argument of OCR */
|
||||
|
||||
enum mmc_result_t {
|
||||
MMC_NO_RESPONSE = -1,
|
||||
MMC_NO_ERROR = 0,
|
||||
MMC_ERROR_OUT_OF_RANGE,
|
||||
MMC_ERROR_ADDRESS,
|
||||
MMC_ERROR_BLOCK_LEN,
|
||||
MMC_ERROR_ERASE_SEQ,
|
||||
MMC_ERROR_ERASE_PARAM,
|
||||
MMC_ERROR_WP_VIOLATION,
|
||||
MMC_ERROR_CARD_IS_LOCKED,
|
||||
MMC_ERROR_LOCK_UNLOCK_FAILED,
|
||||
MMC_ERROR_COM_CRC,
|
||||
MMC_ERROR_ILLEGAL_COMMAND,
|
||||
MMC_ERROR_CARD_ECC_FAILED,
|
||||
MMC_ERROR_CC,
|
||||
MMC_ERROR_GENERAL,
|
||||
MMC_ERROR_UNDERRUN,
|
||||
MMC_ERROR_OVERRUN,
|
||||
MMC_ERROR_CID_CSD_OVERWRITE,
|
||||
MMC_ERROR_STATE_MISMATCH,
|
||||
MMC_ERROR_HEADER_MISMATCH,
|
||||
MMC_ERROR_TIMEOUT,
|
||||
MMC_ERROR_CRC,
|
||||
MMC_ERROR_DRIVER_FAILURE,
|
||||
};
|
||||
|
||||
/* the information structure of MMC/SD Card */
|
||||
typedef struct MMC_INFO
|
||||
{
|
||||
int id; /* Card index */
|
||||
int sd; /* MMC or SD card */
|
||||
int rca; /* RCA */
|
||||
u32 scr; /* SCR 63:32*/
|
||||
int flags; /* Ejected, inserted */
|
||||
enum card_state state; /* empty, ident, ready, whatever */
|
||||
|
||||
/* Card specific information */
|
||||
struct mmc_cid cid;
|
||||
struct mmc_csd csd;
|
||||
u32 block_num;
|
||||
u32 block_len;
|
||||
u32 erase_unit;
|
||||
} mmc_info;
|
||||
|
||||
mmc_info mmcinfo;
|
||||
|
||||
struct mmc_request {
|
||||
int index; /* Slot index - used for CS lines */
|
||||
int cmd; /* Command to send */
|
||||
u32 arg; /* Argument to send */
|
||||
enum mmc_rsp_t rtype; /* Response type expected */
|
||||
|
||||
/* Data transfer (these may be modified at the low level) */
|
||||
u16 nob; /* Number of blocks to transfer*/
|
||||
u16 block_len; /* Block length */
|
||||
u8 *buffer; /* Data buffer */
|
||||
u32 cnt; /* Data length, for PIO */
|
||||
|
||||
/* Results */
|
||||
u8 response[18]; /* Buffer to store response - CRC is optional */
|
||||
enum mmc_result_t result;
|
||||
};
|
||||
|
||||
char * mmc_result_to_string(int);
|
||||
int mmc_unpack_csd(struct mmc_request *request, struct mmc_csd *csd);
|
||||
int mmc_unpack_r1(struct mmc_request *request, struct mmc_response_r1 *r1, enum card_state state);
|
||||
int mmc_unpack_r6(struct mmc_request *request, struct mmc_response_r1 *r1, enum card_state state, int *rca);
|
||||
int mmc_unpack_scr(struct mmc_request *request, struct mmc_response_r1 *r1, enum card_state state, u32 *scr);
|
||||
int mmc_unpack_cid(struct mmc_request *request, struct mmc_cid *cid);
|
||||
int mmc_unpack_r3(struct mmc_request *request, struct mmc_response_r3 *r3);
|
||||
|
||||
void mmc_send_cmd(struct mmc_request *request, int cmd, u32 arg,
|
||||
u16 nob, u16 block_len, enum mmc_rsp_t rtype, u8 *buffer);
|
||||
u32 mmc_tran_speed(u8 ts);
|
||||
void jz_mmc_set_clock(int sd, u32 rate);
|
||||
void jz_mmc_hardware_init(void);
|
||||
|
||||
static inline void mmc_simple_cmd(struct mmc_request *request, int cmd, u32 arg, enum mmc_rsp_t rtype)
|
||||
{
|
||||
mmc_send_cmd( request, cmd, arg, 0, 0, rtype, 0);
|
||||
}
|
||||
|
||||
int mmc_legacy_init(int verbose);
|
||||
int mmc_read(ulong src, uchar *dst, int size);
|
||||
int mmc_write(uchar *src, ulong dst, int size);
|
||||
int mmc2info(ulong addr);
|
||||
|
||||
#endif /* __MMC_JZMMC_H__ */
|
||||
Reference in New Issue
Block a user