Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  *  ecard.h
0004  *
0005  *  Copyright 2007 Russell King
0006  */
0007 
0008 /* Definitions internal to ecard.c - for it's use only!!
0009  *
0010  * External expansion card header as read from the card
0011  */
0012 struct ex_ecid {
0013     unsigned char   r_irq:1;
0014     unsigned char   r_zero:1;
0015     unsigned char   r_fiq:1;
0016     unsigned char   r_id:4;
0017     unsigned char   r_a:1;
0018 
0019     unsigned char   r_cd:1;
0020     unsigned char   r_is:1;
0021     unsigned char   r_w:2;
0022     unsigned char   r_r1:4;
0023 
0024     unsigned char   r_r2:8;
0025 
0026     unsigned char   r_prod[2];
0027 
0028     unsigned char   r_manu[2];
0029 
0030     unsigned char   r_country;
0031 
0032     unsigned char   r_fiqmask;
0033     unsigned char   r_fiqoff[3];
0034 
0035     unsigned char   r_irqmask;
0036     unsigned char   r_irqoff[3];
0037 };
0038 
0039 /*
0040  * Chunk directory entry as read from the card
0041  */
0042 struct ex_chunk_dir {
0043     unsigned char r_id;
0044     unsigned char r_len[3];
0045     unsigned long r_start;
0046     union {
0047         char string[256];
0048         char data[1];
0049     } d;
0050 #define c_id(x)     ((x)->r_id)
0051 #define c_len(x)    ((x)->r_len[0]|((x)->r_len[1]<<8)|((x)->r_len[2]<<16))
0052 #define c_start(x)  ((x)->r_start)
0053 };
0054 
0055 typedef enum ecard_type {       /* Cards address space      */
0056     ECARD_IOC,
0057     ECARD_MEMC,
0058     ECARD_EASI
0059 } card_type_t;
0060 
0061 typedef enum {              /* Speed for ECARD_IOC space    */
0062     ECARD_SLOW   = 0,
0063     ECARD_MEDIUM     = 1,
0064     ECARD_FAST   = 2,
0065     ECARD_SYNC   = 3
0066 } card_speed_t;