/* * ecard.h * * Copyright 2007 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ /* Definitions internal to ecard.c - for it's use only!! * * External expansion card header as read from the card */ struct ex_ecid { unsigned char r_irq:1; unsigned char r_zero:1; unsigned char r_fiq:1; unsigned char r_id:4; unsigned char r_a:1; unsigned char r_cd:1; unsigned char r_is:1; unsigned char r_w:2; unsigned char r_r1:4; unsigned char r_r2:8; unsigned char r_prod[2]; unsigned char r_manu[2]; unsigned char r_country; unsigned char r_fiqmask; unsigned char r_fiqoff[3]; unsigned char r_irqmask; unsigned char r_irqoff[3]; }; /* * Chunk directory entry as read from the card */ struct ex_chunk_dir { unsigned char r_id; unsigned char r_len[3]; unsigned long r_start; union { char string[256]; char data[1]; } d; #define c_id(x) ((x)->r_id) #define c_len(x) ((x)->r_len[0]|((x)->r_len[1]<<8)|((x)->r_len[2]<<16)) #define c_start(x) ((x)->r_start) }; typedef enum ecard_type { /* Cards address space */ ECARD_IOC, ECARD_MEMC, ECARD_EASI } card_type_t; typedef enum { /* Speed for ECARD_IOC space */ ECARD_SLOW = 0, ECARD_MEDIUM = 1, ECARD_FAST = 2, ECARD_SYNC = 3 } card_speed_t;