162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci *  ecard.h
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci *  Copyright 2007 Russell King
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci/* Definitions internal to ecard.c - for it's use only!!
962306a36Sopenharmony_ci *
1062306a36Sopenharmony_ci * External expansion card header as read from the card
1162306a36Sopenharmony_ci */
1262306a36Sopenharmony_cistruct ex_ecid {
1362306a36Sopenharmony_ci	unsigned char	r_irq:1;
1462306a36Sopenharmony_ci	unsigned char	r_zero:1;
1562306a36Sopenharmony_ci	unsigned char	r_fiq:1;
1662306a36Sopenharmony_ci	unsigned char	r_id:4;
1762306a36Sopenharmony_ci	unsigned char	r_a:1;
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	unsigned char	r_cd:1;
2062306a36Sopenharmony_ci	unsigned char	r_is:1;
2162306a36Sopenharmony_ci	unsigned char	r_w:2;
2262306a36Sopenharmony_ci	unsigned char	r_r1:4;
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	unsigned char	r_r2:8;
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	unsigned char	r_prod[2];
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	unsigned char	r_manu[2];
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci	unsigned char	r_country;
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci	unsigned char	r_fiqmask;
3362306a36Sopenharmony_ci	unsigned char	r_fiqoff[3];
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci	unsigned char	r_irqmask;
3662306a36Sopenharmony_ci	unsigned char	r_irqoff[3];
3762306a36Sopenharmony_ci};
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci/*
4062306a36Sopenharmony_ci * Chunk directory entry as read from the card
4162306a36Sopenharmony_ci */
4262306a36Sopenharmony_cistruct ex_chunk_dir {
4362306a36Sopenharmony_ci	unsigned char r_id;
4462306a36Sopenharmony_ci	unsigned char r_len[3];
4562306a36Sopenharmony_ci	unsigned long r_start;
4662306a36Sopenharmony_ci	union {
4762306a36Sopenharmony_ci		char string[256];
4862306a36Sopenharmony_ci		char data[1];
4962306a36Sopenharmony_ci	} d;
5062306a36Sopenharmony_ci#define c_id(x)		((x)->r_id)
5162306a36Sopenharmony_ci#define c_len(x)	((x)->r_len[0]|((x)->r_len[1]<<8)|((x)->r_len[2]<<16))
5262306a36Sopenharmony_ci#define c_start(x)	((x)->r_start)
5362306a36Sopenharmony_ci};
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_citypedef enum ecard_type {		/* Cards address space		*/
5662306a36Sopenharmony_ci	ECARD_IOC,
5762306a36Sopenharmony_ci	ECARD_MEMC,
5862306a36Sopenharmony_ci	ECARD_EASI
5962306a36Sopenharmony_ci} card_type_t;
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_citypedef enum {				/* Speed for ECARD_IOC space	*/
6262306a36Sopenharmony_ci	ECARD_SLOW	 = 0,
6362306a36Sopenharmony_ci	ECARD_MEDIUM	 = 1,
6462306a36Sopenharmony_ci	ECARD_FAST	 = 2,
6562306a36Sopenharmony_ci	ECARD_SYNC	 = 3
6662306a36Sopenharmony_ci} card_speed_t;
67