linux/include/linux/mmc/sd.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3 *  include/linux/mmc/sd.h
   4 *
   5 *  Copyright (C) 2005-2007 Pierre Ossman, All Rights Reserved.
   6 */
   7
   8#ifndef LINUX_MMC_SD_H
   9#define LINUX_MMC_SD_H
  10
  11/* SD commands                           type  argument     response */
  12  /* class 0 */
  13/* This is basically the same command as for MMC with some quirks. */
  14#define SD_SEND_RELATIVE_ADDR     3   /* bcr                     R6  */
  15#define SD_SEND_IF_COND           8   /* bcr  [11:0] See below   R7  */
  16#define SD_SWITCH_VOLTAGE         11  /* ac                      R1  */
  17
  18  /* class 10 */
  19#define SD_SWITCH                 6   /* adtc [31:0] See below   R1  */
  20
  21  /* class 5 */
  22#define SD_ERASE_WR_BLK_START    32   /* ac   [31:0] data addr   R1  */
  23#define SD_ERASE_WR_BLK_END      33   /* ac   [31:0] data addr   R1  */
  24
  25  /* Application commands */
  26#define SD_APP_SET_BUS_WIDTH      6   /* ac   [1:0] bus width    R1  */
  27#define SD_APP_SD_STATUS         13   /* adtc                    R1  */
  28#define SD_APP_SEND_NUM_WR_BLKS  22   /* adtc                    R1  */
  29#define SD_APP_OP_COND           41   /* bcr  [31:0] OCR         R3  */
  30#define SD_APP_SEND_SCR          51   /* adtc                    R1  */
  31
  32  /* class 11 */
  33#define SD_READ_EXTR_SINGLE      48   /* adtc [31:0]             R1  */
  34#define SD_WRITE_EXTR_SINGLE     49   /* adtc [31:0]             R1  */
  35
  36/* OCR bit definitions */
  37#define SD_OCR_S18R             (1 << 24)    /* 1.8V switching request */
  38#define SD_ROCR_S18A            SD_OCR_S18R  /* 1.8V switching accepted by card */
  39#define SD_OCR_XPC              (1 << 28)    /* SDXC power control */
  40#define SD_OCR_CCS              (1 << 30)    /* Card Capacity Status */
  41
  42/*
  43 * SD_SWITCH argument format:
  44 *
  45 *      [31] Check (0) or switch (1)
  46 *      [30:24] Reserved (0)
  47 *      [23:20] Function group 6
  48 *      [19:16] Function group 5
  49 *      [15:12] Function group 4
  50 *      [11:8] Function group 3
  51 *      [7:4] Function group 2
  52 *      [3:0] Function group 1
  53 */
  54
  55/*
  56 * SD_SEND_IF_COND argument format:
  57 *
  58 *      [31:12] Reserved (0)
  59 *      [11:8] Host Voltage Supply Flags
  60 *      [7:0] Check Pattern (0xAA)
  61 */
  62
  63/*
  64 * SCR field definitions
  65 */
  66
  67#define SCR_SPEC_VER_0          0       /* Implements system specification 1.0 - 1.01 */
  68#define SCR_SPEC_VER_1          1       /* Implements system specification 1.10 */
  69#define SCR_SPEC_VER_2          2       /* Implements system specification 2.00-3.0X */
  70
  71/*
  72 * SD bus widths
  73 */
  74#define SD_BUS_WIDTH_1          0
  75#define SD_BUS_WIDTH_4          2
  76
  77/*
  78 * SD_SWITCH mode
  79 */
  80#define SD_SWITCH_CHECK         0
  81#define SD_SWITCH_SET           1
  82
  83/*
  84 * SD_SWITCH function groups
  85 */
  86#define SD_SWITCH_GRP_ACCESS    0
  87
  88/*
  89 * SD_SWITCH access modes
  90 */
  91#define SD_SWITCH_ACCESS_DEF    0
  92#define SD_SWITCH_ACCESS_HS     1
  93
  94/*
  95 * Erase/discard
  96 */
  97#define SD_ERASE_ARG                    0x00000000
  98#define SD_DISCARD_ARG                  0x00000001
  99
 100#endif /* LINUX_MMC_SD_H */
 101