1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Driver for Realtek PCI-Express card reader 4 * 5 * Copyright(c) 2009-2013 Realtek Semiconductor Corp. All rights reserved. 6 * 7 * Author: 8 * Wei WANG (wei_wang@realsil.com.cn) 9 * Micky Ching (micky_ching@realsil.com.cn) 10 */ 11 12 #ifndef __REALTEK_RTSX_SPI_H 13 #define __REALTEK_RTSX_SPI_H 14 15 /* SPI operation error */ 16 #define SPI_NO_ERR 0x00 17 #define SPI_HW_ERR 0x01 18 #define SPI_INVALID_COMMAND 0x02 19 #define SPI_READ_ERR 0x03 20 #define SPI_WRITE_ERR 0x04 21 #define SPI_ERASE_ERR 0x05 22 #define SPI_BUSY_ERR 0x06 23 24 /* Serial flash instruction */ 25 #define SPI_READ 0x03 26 #define SPI_FAST_READ 0x0B 27 #define SPI_WREN 0x06 28 #define SPI_WRDI 0x04 29 #define SPI_RDSR 0x05 30 31 #define SF_PAGE_LEN 256 32 33 #define BYTE_PROGRAM 0 34 #define AAI_PROGRAM 1 35 #define PAGE_PROGRAM 2 36 37 #define PAGE_ERASE 0 38 #define CHIP_ERASE 1 39 40 int spi_erase_eeprom_chip(struct rtsx_chip *chip); 41 int spi_erase_eeprom_byte(struct rtsx_chip *chip, u16 addr); 42 int spi_read_eeprom(struct rtsx_chip *chip, u16 addr, u8 *val); 43 int spi_write_eeprom(struct rtsx_chip *chip, u16 addr, u8 val); 44 int spi_get_status(struct scsi_cmnd *srb, struct rtsx_chip *chip); 45 int spi_set_parameter(struct scsi_cmnd *srb, struct rtsx_chip *chip); 46 int spi_read_flash_id(struct scsi_cmnd *srb, struct rtsx_chip *chip); 47 int spi_read_flash(struct scsi_cmnd *srb, struct rtsx_chip *chip); 48 int spi_write_flash(struct scsi_cmnd *srb, struct rtsx_chip *chip); 49 int spi_erase_flash(struct scsi_cmnd *srb, struct rtsx_chip *chip); 50 int spi_write_flash_status(struct scsi_cmnd *srb, struct rtsx_chip *chip); 51 52 #endif /* __REALTEK_RTSX_SPI_H */ 53