[BACK]Return to sdhcreg.h CVS log [TXT][DIR] Up to [local] / sys / dev / sdmmc

Annotation of sys/dev/sdmmc/sdhcreg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: sdhcreg.h,v 1.4 2006/07/30 17:20:40 fgsch Exp $       */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org>
        !             5:  *
        !             6:  * Permission to use, copy, modify, and distribute this software for any
        !             7:  * purpose with or without fee is hereby granted, provided that the above
        !             8:  * copyright notice and this permission notice appear in all copies.
        !             9:  *
        !            10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            11:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            12:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            13:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            14:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            15:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            16:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            17:  */
        !            18:
        !            19: #ifndef _SDHCREG_H_
        !            20: #define _SDHCREG_H_
        !            21:
        !            22: /* PCI base address registers */
        !            23: #define SDHC_PCI_BAR_START             PCI_MAPREG_START
        !            24: #define SDHC_PCI_BAR_END               PCI_MAPREG_END
        !            25:
        !            26: /* PCI interface classes */
        !            27: #define SDHC_PCI_INTERFACE_NO_DMA      0x00
        !            28: #define SDHC_PCI_INTERFACE_DMA         0x01
        !            29: #define SDHC_PCI_INTERFACE_VENDOR      0x02
        !            30:
        !            31: /* Host standard register set */
        !            32: #define SDHC_DMA_ADDR                  0x00
        !            33: #define SDHC_BLOCK_SIZE                        0x04
        !            34: #define SDHC_BLOCK_COUNT               0x06
        !            35: #define  SDHC_BLOCK_COUNT_MAX          512
        !            36: #define SDHC_ARGUMENT                  0x08
        !            37: #define SDHC_TRANSFER_MODE             0x0c
        !            38: #define  SDHC_MULTI_BLOCK_MODE         (1<<5)
        !            39: #define  SDHC_READ_MODE                        (1<<4)
        !            40: #define  SDHC_AUTO_CMD12_ENABLE                (1<<2)
        !            41: #define  SDHC_BLOCK_COUNT_ENABLE       (1<<1)
        !            42: #define  SDHC_DMA_ENABLE               (1<<0)
        !            43: #define SDHC_COMMAND                   0x0e
        !            44: /* 14-15 reserved */
        !            45: #define  SDHC_COMMAND_INDEX_SHIFT      8
        !            46: #define  SDHC_COMMAND_INDEX_MASK       0x3f
        !            47: #define  SDHC_COMMAND_TYPE_ABORT       (3<<6)
        !            48: #define  SDHC_COMMAND_TYPE_RESUME      (2<<6)
        !            49: #define  SDHC_COMMAND_TYPE_SUSPEND     (1<<6)
        !            50: #define  SDHC_COMMAND_TYPE_NORMAL      (0<<6)
        !            51: #define  SDHC_DATA_PRESENT_SELECT      (1<<5)
        !            52: #define  SDHC_INDEX_CHECK_ENABLE       (1<<4)
        !            53: #define  SDHC_CRC_CHECK_ENABLE         (1<<3)
        !            54: /* 2 reserved */
        !            55: #define  SDHC_RESP_LEN_48_CHK_BUSY     (3<<0)
        !            56: #define  SDHC_RESP_LEN_48              (2<<0)
        !            57: #define  SDHC_RESP_LEN_136             (1<<0)
        !            58: #define  SDHC_NO_RESPONSE              (0<<0)
        !            59: #define SDHC_RESPONSE                  0x10    /* - 0x1f */
        !            60: #define SDHC_DATA                      0x20
        !            61: #define SDHC_PRESENT_STATE             0x24
        !            62: /* 25-31 reserved */
        !            63: #define  SDHC_CMD_LINE_SIGNAL_LEVEL    (1<<24)
        !            64: #define  SDHC_DAT3_LINE_LEVEL          (1<<23)
        !            65: #define  SDHC_DAT2_LINE_LEVEL          (1<<22)
        !            66: #define  SDHC_DAT1_LINE_LEVEL          (1<<21)
        !            67: #define  SDHC_DAT0_LINE_LEVEL          (1<<20)
        !            68: #define  SDHC_WRITE_PROTECT_SWITCH     (1<<19)
        !            69: #define  SDHC_CARD_DETECT_PIN_LEVEL    (1<<18)
        !            70: #define  SDHC_CARD_STATE_STABLE                (1<<17)
        !            71: #define  SDHC_CARD_INSERTED            (1<<16)
        !            72: /* 12-15 reserved */
        !            73: #define  SDHC_BUFFER_READ_ENABLE       (1<<11)
        !            74: #define  SDHC_BUFFER_WRITE_ENABLE      (1<<10)
        !            75: #define  SDHC_READ_TRANSFER_ACTIVE     (1<<9)
        !            76: #define  SDHC_WRITE_TRANSFER_ACTIVE    (1<<8)
        !            77: /* 3-7 reserved */
        !            78: #define  SDHC_DAT_ACTIVE               (1<<2)
        !            79: #define  SDHC_CMD_INHIBIT_DAT          (1<<1)
        !            80: #define  SDHC_CMD_INHIBIT_CMD          (1<<0)
        !            81: #define  SDHC_CMD_INHIBIT_MASK         0x0003
        !            82: #define SDHC_HOST_CTL                  0x28
        !            83: #define  SDHC_HIGH_SPEED               (1<<2)
        !            84: #define  SDHC_4BIT_MODE                        (1<<1)
        !            85: #define  SDHC_LED_ON                   (1<<0)
        !            86: #define SDHC_POWER_CTL                 0x29
        !            87: #define  SDHC_VOLTAGE_SHIFT            1
        !            88: #define  SDHC_VOLTAGE_MASK             0x07
        !            89: #define   SDHC_VOLTAGE_3_3V            0x07
        !            90: #define   SDHC_VOLTAGE_3_0V            0x06
        !            91: #define   SDHC_VOLTAGE_1_8V            0x05
        !            92: #define  SDHC_BUS_POWER                        (1<<0)
        !            93: #define SDHC_BLOCK_GAP_CTL             0x2a
        !            94: #define SDHC_WAKEUP_CTL                        0x2b
        !            95: #define SDHC_CLOCK_CTL                 0x2c
        !            96: #define  SDHC_SDCLK_DIV_SHIFT          8
        !            97: #define  SDHC_SDCLK_DIV_MASK           0xff
        !            98: #define  SDHC_SDCLK_ENABLE             (1<<2)
        !            99: #define  SDHC_INTCLK_STABLE            (1<<1)
        !           100: #define  SDHC_INTCLK_ENABLE            (1<<0)
        !           101: #define SDHC_TIMEOUT_CTL               0x2e
        !           102: #define  SDHC_TIMEOUT_MAX              0x0e
        !           103: #define SDHC_SOFTWARE_RESET            0x2f
        !           104: #define  SDHC_RESET_MASK               0x5
        !           105: #define  SDHC_RESET_DAT                        (1<<2)
        !           106: #define  SDHC_RESET_CMD                        (1<<1)
        !           107: #define  SDHC_RESET_ALL                        (1<<0)
        !           108: #define SDHC_NINTR_STATUS              0x30
        !           109: #define  SDHC_ERROR_INTERRUPT          (1<<15)
        !           110: #define  SDHC_CARD_INTERRUPT           (1<<8)
        !           111: #define  SDHC_CARD_REMOVAL             (1<<7)
        !           112: #define  SDHC_CARD_INSERTION           (1<<6)
        !           113: #define  SDHC_BUFFER_READ_READY                (1<<5)
        !           114: #define  SDHC_BUFFER_WRITE_READY       (1<<4)
        !           115: #define  SDHC_DMA_INTERRUPT            (1<<3)
        !           116: #define  SDHC_BLOCK_GAP_EVENT          (1<<2)
        !           117: #define  SDHC_TRANSFER_COMPLETE                (1<<1)
        !           118: #define  SDHC_COMMAND_COMPLETE         (1<<0)
        !           119: #define  SDHC_NINTR_STATUS_MASK                0x81ff
        !           120: #define SDHC_EINTR_STATUS              0x32
        !           121: #define  SDHC_AUTO_CMD12_ERROR         (1<<8)
        !           122: #define  SDHC_CURRENT_LIMIT_ERROR      (1<<7)
        !           123: #define  SDHC_DATA_END_BIT_ERROR       (1<<6)
        !           124: #define  SDHC_DATA_CRC_ERROR           (1<<5)
        !           125: #define  SDHC_DATA_TIMEOUT_ERROR       (1<<4)
        !           126: #define  SDHC_CMD_INDEX_ERROR          (1<<3)
        !           127: #define  SDHC_CMD_END_BIT_ERROR                (1<<2)
        !           128: #define  SDHC_CMD_CRC_ERROR            (1<<1)
        !           129: #define  SDHC_CMD_TIMEOUT_ERROR                (1<<0)
        !           130: #define  SDHC_EINTR_STATUS_MASK                0x01ff  /* excluding vendor signals */
        !           131: #define SDHC_NINTR_STATUS_EN           0x34
        !           132: #define SDHC_EINTR_STATUS_EN           0x36
        !           133: #define SDHC_NINTR_SIGNAL_EN           0x38
        !           134: #define  SDHC_NINTR_SIGNAL_MASK                0x01ff
        !           135: #define SDHC_EINTR_SIGNAL_EN           0x3a
        !           136: #define  SDHC_EINTR_SIGNAL_MASK                0x01ff  /* excluding vendor signals */
        !           137: #define SDHC_CMD12_ERROR_STATUS                0x3c
        !           138: #define SDHC_CAPABILITIES              0x40
        !           139: #define  SDHC_VOLTAGE_SUPP_1_8V                (1<<26)
        !           140: #define  SDHC_VOLTAGE_SUPP_3_0V                (1<<25)
        !           141: #define  SDHC_VOLTAGE_SUPP_3_3V                (1<<24)
        !           142: #define  SDHC_DMA_SUPPORT              (1<<22)
        !           143: #define  SDHC_HIGH_SPEED_SUPP          (1<<21)
        !           144: #define  SDHC_MAX_BLK_LEN_512          0
        !           145: #define  SDHC_MAX_BLK_LEN_1024         1
        !           146: #define  SDHC_MAX_BLK_LEN_2048         2
        !           147: #define  SDHC_MAX_BLK_LEN_SHIFT                16
        !           148: #define  SDHC_MAX_BLK_LEN_MASK         0x3
        !           149: #define  SDHC_BASE_FREQ_SHIFT          8
        !           150: #define  SDHC_BASE_FREQ_MASK           0x3f
        !           151: #define  SDHC_TIMEOUT_FREQ_UNIT                (1<<7)  /* 0=KHz, 1=MHz */
        !           152: #define  SDHC_TIMEOUT_FREQ_SHIFT       0
        !           153: #define  SDHC_TIMEOUT_FREQ_MASK                0x1f
        !           154: #define SDHC_MAX_CAPABILITIES          0x48
        !           155: #define SDHC_SLOT_INTR_STATUS          0xfc
        !           156: #define SDHC_HOST_CTL_VERSION          0xfe
        !           157: #define  SDHC_SPEC_VERS_SHIFT          0
        !           158: #define  SDHC_SPEC_VERS_MASK           0xff
        !           159: #define  SDHC_VENDOR_VERS_SHIFT                8
        !           160: #define  SDHC_VENDOR_VERS_MASK         0xff
        !           161:
        !           162: /* SDHC_CAPABILITIES decoding */
        !           163: #define SDHC_BASE_FREQ_KHZ(cap)                                                \
        !           164:        ((((cap) >> SDHC_BASE_FREQ_SHIFT) & SDHC_BASE_FREQ_MASK) * 1000)
        !           165: #define SDHC_TIMEOUT_FREQ(cap)                                         \
        !           166:        (((cap) >> SDHC_TIMEOUT_FREQ_SHIFT) & SDHC_TIMEOUT_FREQ_MASK)
        !           167: #define SDHC_TIMEOUT_FREQ_KHZ(cap)                                     \
        !           168:        (((cap) & SDHC_TIMEOUT_FREQ_UNIT) ?                             \
        !           169:            SDHC_TIMEOUT_FREQ(cap) * 1000:                              \
        !           170:            SDHC_TIMEOUT_FREQ(cap))
        !           171:
        !           172: /* SDHC_HOST_CTL_VERSION decoding */
        !           173: #define SDHC_SPEC_VERSION(hcv)                                         \
        !           174:        (((hcv) >> SDHC_SPEC_VERS_SHIFT) & SDHC_SPEC_VERS_MASK)
        !           175: #define SDHC_VENDOR_VERSION(hcv)                                       \
        !           176:        (((hcv) >> SDHC_VENDOR_VERS_SHIFT) & SDHC_VENDOR_VERS_MASK)
        !           177:
        !           178: #define SDHC_PRESENT_STATE_BITS                                                \
        !           179:        "\20\31CL\30D3L\27D2L\26D1L\25D0L\24WPS\23CD\22CSS\21CI"        \
        !           180:        "\14BRE\13BWE\12RTA\11WTA\3DLA\2CID\1CIC"
        !           181: #define SDHC_NINTR_STATUS_BITS                                         \
        !           182:        "\20\20ERROR\11CARD\10REMOVAL\7INSERTION\6READ\5WRITE"          \
        !           183:        "\4DMA\3GAP\2XFER\1CMD"
        !           184: #define SDHC_EINTR_STATUS_BITS                                         \
        !           185:        "\20\11ACMD12\10CL\7DEB\6DCRC\5DT\4CI\3CEB\2CCRC\1CT"
        !           186: #define SDHC_CAPABILITIES_BITS                                         \
        !           187:        "\20\33Vdd1.8V\32Vdd3.0V\31Vdd3.3V\30SUSPEND\27DMA\26HIGHSPEED"
        !           188:
        !           189: #endif

CVSweb