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