18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * ecard.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright 2007 Russell King 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci/* Definitions internal to ecard.c - for it's use only!! 98c2ecf20Sopenharmony_ci * 108c2ecf20Sopenharmony_ci * External expansion card header as read from the card 118c2ecf20Sopenharmony_ci */ 128c2ecf20Sopenharmony_cistruct ex_ecid { 138c2ecf20Sopenharmony_ci unsigned char r_irq:1; 148c2ecf20Sopenharmony_ci unsigned char r_zero:1; 158c2ecf20Sopenharmony_ci unsigned char r_fiq:1; 168c2ecf20Sopenharmony_ci unsigned char r_id:4; 178c2ecf20Sopenharmony_ci unsigned char r_a:1; 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci unsigned char r_cd:1; 208c2ecf20Sopenharmony_ci unsigned char r_is:1; 218c2ecf20Sopenharmony_ci unsigned char r_w:2; 228c2ecf20Sopenharmony_ci unsigned char r_r1:4; 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci unsigned char r_r2:8; 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci unsigned char r_prod[2]; 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci unsigned char r_manu[2]; 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci unsigned char r_country; 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci unsigned char r_fiqmask; 338c2ecf20Sopenharmony_ci unsigned char r_fiqoff[3]; 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci unsigned char r_irqmask; 368c2ecf20Sopenharmony_ci unsigned char r_irqoff[3]; 378c2ecf20Sopenharmony_ci}; 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci/* 408c2ecf20Sopenharmony_ci * Chunk directory entry as read from the card 418c2ecf20Sopenharmony_ci */ 428c2ecf20Sopenharmony_cistruct ex_chunk_dir { 438c2ecf20Sopenharmony_ci unsigned char r_id; 448c2ecf20Sopenharmony_ci unsigned char r_len[3]; 458c2ecf20Sopenharmony_ci unsigned long r_start; 468c2ecf20Sopenharmony_ci union { 478c2ecf20Sopenharmony_ci char string[256]; 488c2ecf20Sopenharmony_ci char data[1]; 498c2ecf20Sopenharmony_ci } d; 508c2ecf20Sopenharmony_ci#define c_id(x) ((x)->r_id) 518c2ecf20Sopenharmony_ci#define c_len(x) ((x)->r_len[0]|((x)->r_len[1]<<8)|((x)->r_len[2]<<16)) 528c2ecf20Sopenharmony_ci#define c_start(x) ((x)->r_start) 538c2ecf20Sopenharmony_ci}; 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_citypedef enum ecard_type { /* Cards address space */ 568c2ecf20Sopenharmony_ci ECARD_IOC, 578c2ecf20Sopenharmony_ci ECARD_MEMC, 588c2ecf20Sopenharmony_ci ECARD_EASI 598c2ecf20Sopenharmony_ci} card_type_t; 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_citypedef enum { /* Speed for ECARD_IOC space */ 628c2ecf20Sopenharmony_ci ECARD_SLOW = 0, 638c2ecf20Sopenharmony_ci ECARD_MEDIUM = 1, 648c2ecf20Sopenharmony_ci ECARD_FAST = 2, 658c2ecf20Sopenharmony_ci ECARD_SYNC = 3 668c2ecf20Sopenharmony_ci} card_speed_t; 67