11dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/* Driver for Realtek RTS51xx USB card reader
21dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * Header file
31dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong *
41dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved.
51dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong *
61dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * This program is free software; you can redistribute it and/or modify it
71dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * under the terms of the GNU General Public License as published by the
81dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * Free Software Foundation; either version 2, or (at your option) any
91dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * later version.
101dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong *
111dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * This program is distributed in the hope that it will be useful, but
121dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * WITHOUT ANY WARRANTY; without even the implied warranty of
131dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
141dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * General Public License for more details.
151dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong *
161dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * You should have received a copy of the GNU General Public License along
171dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * with this program; if not, see <http://www.gnu.org/licenses/>.
181dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong *
191dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * Author:
201dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong *   wwang (wei_wang@realsil.com.cn)
211dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong *   No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China
221dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong * Maintainer:
231dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong *   Edwin Rong (edwin_rong@realsil.com.cn)
241dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong *   No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China
251dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong */
261dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
271dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#ifndef __RTS51X_MS_H
281dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define __RTS51X_MS_H
291dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
301dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#include "rts51x_chip.h"
311dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
321dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_MAX_RETRY_COUNT		3
331dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
341dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_EXTRA_SIZE			0x9
351dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
361dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	WRT_PRTCT			0x01
371dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
381dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/* Error Code */
391dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_NO_ERROR				0x00
401dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_CRC16_ERROR				0x80
411dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_TO_ERROR				0x40
421dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_NO_CARD				0x20
431dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_NO_MEMORY				0x10
441dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_CMD_NK				0x08
451dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_FLASH_READ_ERROR			0x04
461dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_FLASH_WRITE_ERROR			0x02
471dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_BREQ_ERROR				0x01
481dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_NOT_FOUND				0x03
491dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
501dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/* Transfer Protocol Command */
511dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define READ_PAGE_DATA				0x02
521dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define READ_REG				0x04
531dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	GET_INT					0x07
541dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define WRITE_PAGE_DATA				0x0D
551dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define WRITE_REG				0x0B
561dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define SET_RW_REG_ADRS				0x08
571dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define SET_CMD					0x0E
581dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
591dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PRO_READ_LONG_DATA			0x02
601dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PRO_READ_SHORT_DATA			0x03
611dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PRO_READ_REG				0x04
621dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PRO_READ_QUAD_DATA			0x05
631dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PRO_GET_INT				0x07
641dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PRO_WRITE_LONG_DATA			0x0D
651dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PRO_WRITE_SHORT_DATA			0x0C
661dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PRO_WRITE_QUAD_DATA			0x0A
671dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PRO_WRITE_REG				0x0B
681dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PRO_SET_RW_REG_ADRS			0x08
691dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PRO_SET_CMD				0x0E
701dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PRO_EX_SET_CMD				0x09
711dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
721dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#ifdef SUPPORT_MAGIC_GATE
731dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MG_GET_ID		0x40
741dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MG_SET_LID		0x41
751dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MG_GET_LEKB		0x42
761dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MG_SET_RD		0x43
771dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MG_MAKE_RMS		0x44
781dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MG_MAKE_KSE		0x45
791dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MG_SET_IBD		0x46
801dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MG_GET_IBD		0x47
811dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#endif
821dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
831dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#ifdef XC_POWERCLASS
841dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define XC_CHG_POWER		0x16
851dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#endif
861dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
871dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/* ++ CMD over Memory Stick */
881dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  Flash CMD */
891dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define BLOCK_READ		0xAA
901dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	BLOCK_WRITE		0x55
911dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define BLOCK_END		0x33
921dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define BLOCK_ERASE		0x99
931dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define FLASH_STOP		0xCC
941dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
951dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  Function CMD */
961dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define SLEEP			0x5A
971dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define CLEAR_BUF		0xC3
981dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MS_RESET		0x3C
991dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/* -- CMD over Memory Stick */
1001dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1011dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/* ++ CMD over Memory Stick Pro */
1021dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  Flash CMD */
1031dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PRO_READ_DATA		0x20
1041dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PRO_WRITE_DATA		0x21
1051dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PRO_READ_ATRB		0x24
1061dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PRO_STOP		0x25
1071dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PRO_ERASE		0x26
1081dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PRO_READ_2K_DATA	0x27
1091dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PRO_WRITE_2K_DATA	0x28
1101dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1111dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  Function CMD */
1121dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PRO_FORMAT		0x10
1131dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PRO_SLEEP		0x11
1141dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/* -- CMD over Memory Stick Pro */
1151dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1161dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  register inside memory stick */
1171dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	IntReg			0x01
1181dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define StatusReg0		0x02
1191dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define StatusReg1		0x03
1201dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1211dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define SystemParm		0x10
1221dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define BlockAdrs		0x11
1231dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define CMDParm			0x14
1241dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define PageAdrs		0x15
1251dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1261dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define OverwriteFlag		0x16
1271dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define ManagemenFlag		0x17
1281dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define LogicalAdrs		0x18
1291dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define ReserveArea		0x1A
1301dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1311dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  register inside memory pro */
1321dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	Pro_IntReg		0x01
1331dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_StatusReg		0x02
1341dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_TypeReg		0x04
1351dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	Pro_IFModeReg		0x05
1361dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_CatagoryReg		0x06
1371dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_ClassReg		0x07
1381dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1391dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_SystemParm		0x10
1401dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_DataCount1		0x11
1411dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_DataCount0		0x12
1421dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_DataAddr3		0x13
1431dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_DataAddr2		0x14
1441dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_DataAddr1		0x15
1451dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_DataAddr0		0x16
1461dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1471dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_TPCParm		0x17
1481dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define Pro_CMDParm		0x18
1491dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1501dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  define for INT Register */
1511dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	INT_REG_CED		0x80
1521dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	INT_REG_ERR		0x40
1531dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	INT_REG_BREQ		0x20
1541dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	INT_REG_CMDNK		0x01
1551dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1561dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  INT signal */
1571dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	INT_CED			0x01
1581dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	INT_ERR			0x02
1591dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	INT_BREQ		0x04
1601dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	INT_CMDNK		0x08
1611dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1621dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  define for OverwriteFlag Register */
1631dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	BLOCK_BOOT		0xC0
1641dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	BLOCK_OK		0x80
1651dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PAGE_OK			0x60
1661dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	DATA_COMPL		0x10
1671dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1681dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  define for ManagemenFlag Register */
1691dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	NOT_BOOT_BLOCK		0x4
1701dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	NOT_TRANSLATION_TABLE	0x8
1711dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1721dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  Header */
1731dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	HEADER_ID0		(PPBUF_BASE2)			/* 0 */
1741dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	HEADER_ID1		(PPBUF_BASE2 + 1)		/* 1 */
1751dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  System Entry */
1761dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	DISABLED_BLOCK0		(PPBUF_BASE2 + 0x170 + 4)	/* 2 */
1771dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	DISABLED_BLOCK1		(PPBUF_BASE2 + 0x170 + 5)	/* 3 */
1781dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	DISABLED_BLOCK2		(PPBUF_BASE2 + 0x170 + 6)	/* 4 */
1791dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	DISABLED_BLOCK3		(PPBUF_BASE2 + 0x170 + 7)	/* 5 */
1801dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  Boot & Attribute Information */
1811dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	BLOCK_SIZE_0		(PPBUF_BASE2 + 0x1a0 + 2)	/* 6 */
1821dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	BLOCK_SIZE_1		(PPBUF_BASE2 + 0x1a0 + 3)	/* 7 */
1831dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	BLOCK_COUNT_0		(PPBUF_BASE2 + 0x1a0 + 4)	/* 8 */
1841dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	BLOCK_COUNT_1		(PPBUF_BASE2 + 0x1a0 + 5)	/* 9 */
1851dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	EBLOCK_COUNT_0		(PPBUF_BASE2 + 0x1a0 + 6)	/* 10 */
1861dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	EBLOCK_COUNT_1		(PPBUF_BASE2 + 0x1a0 + 7)	/* 11 */
1871dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PAGE_SIZE_0		(PPBUF_BASE2 + 0x1a0 + 8)	/* 12 */
1881dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PAGE_SIZE_1		(PPBUF_BASE2 + 0x1a0 + 9)	/* 13 */
1891dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1901dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/* joey 2004-08-07 for MS check Procedure */
1911dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MS_Device_Type	(PPBUF_BASE2 + 0x1D8)	/* 14 */
1921dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/* end */
1931dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1941dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/* joey 2004-05-03 */
1951dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_4bit_Support	(PPBUF_BASE2 + 0x1D3)	/* 15 */
1961dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/* end */
1971dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
1981dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define setPS_NG	1
1991dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define setPS_Error	0
2001dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
2011dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  define for Pro_SystemParm Register */
2021dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PARALLEL_8BIT_IF	0x40
2031dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	PARALLEL_4BIT_IF	0x00
2041dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	SERIAL_IF		0x80
2051dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
2061dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  define for StatusReg0 Register */
2071dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define BUF_FULL	0x10
2081dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define BUF_EMPTY	0x20
2091dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
2101dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong/*  define for StatusReg1 Register */
2111dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MEDIA_BUSY	0x80
2121dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	FLASH_BUSY	0x40
2131dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	DATA_ERROR	0x20
2141dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	STS_UCDT	0x10
2151dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	EXTRA_ERROR	0x08
2161dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	STS_UCEX	0x04
2171dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	FLAG_ERROR	0x02
2181dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	STS_UCFG	0x01
2191dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
2201dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MS_SHORT_DATA_LEN	32
2211dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
2221dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define FORMAT_SUCCESS		0
2231dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define FORMAT_FAIL		1
2241dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define FORMAT_IN_PROGRESS	2
2251dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
2261dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define	MS_SET_BAD_BLOCK_FLG(ms_card)	((ms_card)->multi_flag |= 0x80)
2271dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MS_CLR_BAD_BLOCK_FLG(ms_card)	((ms_card)->multi_flag &= 0x7F)
2281dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define MS_TST_BAD_BLOCK_FLG(ms_card)	((ms_card)->multi_flag & 0x80)
2291dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
2301dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#define CHECK_MS_TRANS_FAIL(chip, retval)	\
2311dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong	(((retval) != STATUS_SUCCESS) || \
2321dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong	(chip->rsp_buf[0] & MS_TRANSFER_ERR))
2331dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
2341dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongvoid mspro_polling_format_status(struct rts51x_chip *chip);
2351dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongvoid mspro_format_sense(struct rts51x_chip *chip, unsigned int lun);
2361dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
2371dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongvoid mspro_stop_seq_mode(struct rts51x_chip *chip);
2381dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongint reset_ms_card(struct rts51x_chip *chip);
2391dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongint ms_rw(struct scsi_cmnd *srb, struct rts51x_chip *chip, u32 start_sector,
2401dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong	  u16 sector_cnt);
2411dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongint mspro_format(struct scsi_cmnd *srb, struct rts51x_chip *chip,
2421dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong		 int short_data_len, int quick_format);
2431dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongvoid ms_free_l2p_tbl(struct rts51x_chip *chip);
2441dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongvoid ms_cleanup_work(struct rts51x_chip *chip);
2451dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongint ms_power_off_card3v3(struct rts51x_chip *chip);
2461dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongint release_ms_card(struct rts51x_chip *chip);
2471dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongint ms_delay_write(struct rts51x_chip *chip);
2481dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
2491dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#ifdef SUPPORT_MAGIC_GATE
2501dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
2511dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongint ms_switch_clock(struct rts51x_chip *chip);
252aa2f92ae6b986934ff220eda6b5c91f4ee294b35Márton Némethint ms_write_bytes(struct rts51x_chip *chip, u8 tpc, u8 cnt, u8 cfg, u8 *data,
2531dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong		   int data_len);
254aa2f92ae6b986934ff220eda6b5c91f4ee294b35Márton Némethint ms_read_bytes(struct rts51x_chip *chip, u8 tpc, u8 cnt, u8 cfg, u8 *data,
2551dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong		  int data_len);
2561dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongint ms_set_rw_reg_addr(struct rts51x_chip *chip, u8 read_start, u8 read_cnt,
2571dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong		       u8 write_start, u8 write_cnt);
2581dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rongint ms_transfer_data(struct rts51x_chip *chip, u8 trans_mode, u8 tpc,
2591dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong		     u16 sec_cnt, u8 cfg, int mode_2k, int use_sg, void *buf,
2601dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong		     int buf_len);
2611dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#endif
2621dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong
2631dac4186bcc663cb8c2bcc59481aea8fe9124a6cedwin_rong#endif /* __RTS51X_MS_H */
264