Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  *  cb710/cb710-mmc.h
  3  *
  4  *  Copyright by Michał Mirosław, 2008-2009
  5  *
  6  * This program is free software; you can redistribute it and/or modify
  7  * it under the terms of the GNU General Public License version 2 as
  8  * published by the Free Software Foundation.
  9  */
 10 #ifndef LINUX_CB710_MMC_H
 11 #define LINUX_CB710_MMC_H
 12 
 13 #include <linux/cb710.h>
 14 
 15 /* per-MMC-reader structure */
 16 struct cb710_mmc_reader {
 17         struct tasklet_struct finish_req_tasklet;
 18         struct mmc_request *mrq;
 19         spinlock_t irq_lock;
 20         unsigned char last_power_mode;
 21 };
 22 
 23 /* some device struct walking */
 24 
 25 static inline struct mmc_host *cb710_slot_to_mmc(struct cb710_slot *slot)
 26 {
 27         return dev_get_drvdata(&slot->pdev.dev);
 28 }
 29 
 30 static inline struct cb710_slot *cb710_mmc_to_slot(struct mmc_host *mmc)
 31 {
 32         struct platform_device *pdev = container_of(mmc_dev(mmc),
 33                 struct platform_device, dev);
 34         return cb710_pdev_to_slot(pdev);
 35 }
 36 
 37 /* registers (this might be all wrong ;) */
 38 
 39 #define CB710_MMC_DATA_PORT             0x00
 40 
 41 #define CB710_MMC_CONFIG_PORT           0x04
 42 #define CB710_MMC_CONFIG0_PORT          0x04
 43 #define CB710_MMC_CONFIG1_PORT          0x05
 44 #define   CB710_MMC_C1_4BIT_DATA_BUS            0x40
 45 #define CB710_MMC_CONFIG2_PORT          0x06
 46 #define   CB710_MMC_C2_READ_PIO_SIZE_MASK       0x0F    /* N-1 */
 47 #define CB710_MMC_CONFIG3_PORT          0x07
 48 
 49 #define CB710_MMC_CONFIGB_PORT          0x08
 50 
 51 #define CB710_MMC_IRQ_ENABLE_PORT       0x0C
 52 #define   CB710_MMC_IE_TEST_MASK                0x00BF
 53 #define   CB710_MMC_IE_CARD_INSERTION_STATUS    0x1000
 54 #define   CB710_MMC_IE_IRQ_ENABLE               0x8000
 55 #define   CB710_MMC_IE_CISTATUS_MASK            \
 56                 (CB710_MMC_IE_CARD_INSERTION_STATUS|CB710_MMC_IE_IRQ_ENABLE)
 57 
 58 #define CB710_MMC_STATUS_PORT           0x10
 59 #define   CB710_MMC_STATUS_ERROR_EVENTS         0x60FF
 60 #define CB710_MMC_STATUS0_PORT          0x10
 61 #define   CB710_MMC_S0_FIFO_UNDERFLOW           0x40
 62 #define CB710_MMC_STATUS1_PORT          0x11
 63 #define   CB710_MMC_S1_COMMAND_SENT             0x01
 64 #define   CB710_MMC_S1_DATA_TRANSFER_DONE       0x02
 65 #define   CB710_MMC_S1_PIO_TRANSFER_DONE        0x04
 66 #define   CB710_MMC_S1_CARD_CHANGED             0x10
 67 #define   CB710_MMC_S1_RESET                    0x20
 68 #define CB710_MMC_STATUS2_PORT          0x12
 69 #define   CB710_MMC_S2_FIFO_READY               0x01
 70 #define   CB710_MMC_S2_FIFO_EMPTY               0x02
 71 #define   CB710_MMC_S2_BUSY_10                  0x10
 72 #define   CB710_MMC_S2_BUSY_20                  0x20
 73 #define CB710_MMC_STATUS3_PORT          0x13
 74 #define   CB710_MMC_S3_CARD_DETECTED            0x02
 75 #define   CB710_MMC_S3_WRITE_PROTECTED          0x04
 76 
 77 #define CB710_MMC_CMD_TYPE_PORT         0x14
 78 #define   CB710_MMC_RSP_TYPE_MASK               0x0007
 79 #define     CB710_MMC_RSP_R1                    (0)
 80 #define     CB710_MMC_RSP_136                   (5)
 81 #define     CB710_MMC_RSP_NO_CRC                (2)
 82 #define   CB710_MMC_RSP_PRESENT_MASK            0x0018
 83 #define     CB710_MMC_RSP_NONE                  (0 << 3)
 84 #define     CB710_MMC_RSP_PRESENT               (1 << 3)
 85 #define     CB710_MMC_RSP_PRESENT_X             (2 << 3)
 86 #define   CB710_MMC_CMD_TYPE_MASK               0x0060
 87 #define     CB710_MMC_CMD_BC                    (0 << 5)
 88 #define     CB710_MMC_CMD_BCR                   (1 << 5)
 89 #define     CB710_MMC_CMD_AC                    (2 << 5)
 90 #define     CB710_MMC_CMD_ADTC                  (3 << 5)
 91 #define   CB710_MMC_DATA_READ                   0x0080
 92 #define   CB710_MMC_CMD_CODE_MASK               0x3F00
 93 #define   CB710_MMC_CMD_CODE_SHIFT              8
 94 #define   CB710_MMC_IS_APP_CMD                  0x4000
 95 #define   CB710_MMC_RSP_BUSY                    0x8000
 96 
 97 #define CB710_MMC_CMD_PARAM_PORT        0x18
 98 #define CB710_MMC_TRANSFER_SIZE_PORT    0x1C
 99 #define CB710_MMC_RESPONSE0_PORT        0x20
100 #define CB710_MMC_RESPONSE1_PORT        0x24
101 #define CB710_MMC_RESPONSE2_PORT        0x28
102 #define CB710_MMC_RESPONSE3_PORT        0x2C
103 
104 #endif /* LINUX_CB710_MMC_H */
105 
  This page was automatically generated by the LXR engine.