⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cs.h

📁 嵌入式系统设计与实验教材二源码linux内核移植与编译
💻 H
字号:
/* * cs.h 1.74 2001/10/04 03:15:22 * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License * at http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and * limitations under the License.  * * The initial developer of the original code is David A. Hinds * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved. * * Alternatively, the contents of this file may be used under the * terms of the GNU General Public License version 2 (the "GPL"), in * which case the provisions of the GPL are applicable instead of the * above.  If you wish to allow the use of your version of this file * only under the terms of the GPL and not to allow others to use * your version of this file under the MPL, indicate your decision by * deleting the provisions above and replace them with the notice and * other provisions required by the GPL.  If you do not delete the * provisions above, a recipient may use your version of this file * under either the MPL or the GPL. */#ifndef _LINUX_CS_H#define _LINUX_CS_H/* For AccessConfigurationRegister */typedef struct conf_reg_t {    u_char	Function;    u_int	Action;    off_t	Offset;    u_int	Value;} conf_reg_t;/* Actions */#define CS_READ		1#define CS_WRITE	2/* for AdjustResourceInfo */typedef struct adjust_t {    u_int	Action;    u_int	Resource;    u_int	Attributes;    union {	struct memory {	    u_long	Base;	    u_long	Size;	} memory;	struct io {	    ioaddr_t	BasePort;	    ioaddr_t	NumPorts;	    u_int	IOAddrLines;	} io;	struct irq {	    u_int	IRQ;	} irq;    } resource;} adjust_t;/* Action field */#define REMOVE_MANAGED_RESOURCE		1#define ADD_MANAGED_RESOURCE		2#define GET_FIRST_MANAGED_RESOURCE	3#define GET_NEXT_MANAGED_RESOURCE	4/* Resource field */#define RES_MEMORY_RANGE		1#define RES_IO_RANGE			2#define RES_IRQ				3/* Attribute field */#define RES_IRQ_TYPE			0x03#define RES_IRQ_TYPE_EXCLUSIVE		0#define RES_IRQ_TYPE_TIME		1#define RES_IRQ_TYPE_DYNAMIC		2#define RES_IRQ_CSC			0x04#define RES_SHARED			0x08#define RES_RESERVED			0x10#define RES_ALLOCATED			0x20#define RES_REMOVED			0x40typedef struct servinfo_t {    char	Signature[2];    u_int	Count;    u_int	Revision;    u_int	CSLevel;    char	*VendorString;} servinfo_t;typedef struct event_callback_args_t {    client_handle_t client_handle;    void	*info;    void	*mtdrequest;    void	*buffer;    void	*misc;    void	*client_data;    struct bus_operations *bus;} event_callback_args_t;/* for GetConfigurationInfo */typedef struct config_info_t {    u_char	Function;    u_int	Attributes;    u_int	Vcc, Vpp1, Vpp2;    u_int	IntType;    u_int	ConfigBase;    u_char	Status, Pin, Copy, Option, ExtStatus;    u_int	Present;    u_int	CardValues;    u_int	AssignedIRQ;    u_int	IRQAttributes;    ioaddr_t	BasePort1;    ioaddr_t	NumPorts1;    u_int	Attributes1;    ioaddr_t	BasePort2;    ioaddr_t	NumPorts2;    u_int	Attributes2;    u_int	IOAddrLines;} config_info_t;/* For CardValues field */#define CV_OPTION_VALUE		0x01#define CV_STATUS_VALUE		0x02#define CV_PIN_REPLACEMENT	0x04#define CV_COPY_VALUE		0x08#define CV_EXT_STATUS		0x10/* For GetFirst/NextClient */typedef struct client_req_t {    socket_t	Socket;    u_int	Attributes;} client_req_t;#define CLIENT_THIS_SOCKET	0x01/* For RegisterClient */typedef struct client_reg_t {    dev_info_t	*dev_info;    u_int	Attributes;    u_int	EventMask;    int		(*event_handler)(event_t event, int priority,				 event_callback_args_t *);    event_callback_args_t event_callback_args;    u_int	Version;} client_reg_t;/* ModifyConfiguration */typedef struct modconf_t {    u_int	Attributes;    u_int	Vcc, Vpp1, Vpp2;} modconf_t;/* Attributes for ModifyConfiguration */#define CONF_IRQ_CHANGE_VALID	0x100#define CONF_VCC_CHANGE_VALID	0x200#define CONF_VPP1_CHANGE_VALID	0x400#define CONF_VPP2_CHANGE_VALID	0x800/* For RequestConfiguration */typedef struct config_req_t {    u_int	Attributes;    u_int	Vcc, Vpp1, Vpp2;    u_int	IntType;    u_int	ConfigBase;    u_char	Status, Pin, Copy, ExtStatus;    u_char	ConfigIndex;    u_int	Present;} config_req_t;/* Attributes for RequestConfiguration */#define CONF_ENABLE_IRQ		0x01#define CONF_ENABLE_DMA		0x02#define CONF_ENABLE_SPKR	0x04#define CONF_VALID_CLIENT	0x100/* IntType field */#define INT_MEMORY		0x01#define INT_MEMORY_AND_IO	0x02#define INT_CARDBUS		0x04#define INT_ZOOMED_VIDEO	0x08/* For RequestIO and ReleaseIO */typedef struct io_req_t {    ioaddr_t	BasePort1;    ioaddr_t	NumPorts1;    u_int	Attributes1;    ioaddr_t	BasePort2;    ioaddr_t	NumPorts2;    u_int	Attributes2;    u_int	IOAddrLines;} io_req_t;/* Attributes for RequestIO and ReleaseIO */#define IO_SHARED		0x01#define IO_FIRST_SHARED		0x02#define IO_FORCE_ALIAS_ACCESS	0x04#define IO_DATA_PATH_WIDTH	0x18#define IO_DATA_PATH_WIDTH_8	0x00#define IO_DATA_PATH_WIDTH_16	0x08#define IO_DATA_PATH_WIDTH_AUTO	0x10/* For RequestIRQ and ReleaseIRQ */typedef struct irq_req_t {    u_int	Attributes;    u_int	AssignedIRQ;    u_int	IRQInfo1, IRQInfo2;    void	*Handler;    void	*Instance;} irq_req_t;/* Attributes for RequestIRQ and ReleaseIRQ */#define IRQ_TYPE			0x03#define IRQ_TYPE_EXCLUSIVE		0x00#define IRQ_TYPE_TIME			0x01#define IRQ_TYPE_DYNAMIC_SHARING	0x02#define IRQ_FORCED_PULSE		0x04#define IRQ_FIRST_SHARED		0x08#define IRQ_HANDLE_PRESENT		0x10#define IRQ_PULSE_ALLOCATED		0x100/* Bits in IRQInfo1 field */#define IRQ_MASK		0x0f#define IRQ_NMI_ID		0x01#define IRQ_IOCK_ID		0x02#define IRQ_BERR_ID		0x04#define IRQ_VEND_ID		0x08#define IRQ_INFO2_VALID		0x10#define IRQ_LEVEL_ID		0x20#define IRQ_PULSE_ID		0x40#define IRQ_SHARE_ID		0x80typedef struct eventmask_t {    u_int	Attributes;    u_int	EventMask;} eventmask_t;#define CONF_EVENT_MASK_VALID	0x01/* Configuration registers present */#define PRESENT_OPTION		0x001#define PRESENT_STATUS		0x002#define PRESENT_PIN_REPLACE	0x004#define PRESENT_COPY		0x008#define PRESENT_EXT_STATUS	0x010#define PRESENT_IOBASE_0	0x020#define PRESENT_IOBASE_1	0x040#define PRESENT_IOBASE_2	0x080#define PRESENT_IOBASE_3	0x100#define PRESENT_IOSIZE		0x200/* For GetMemPage, MapMemPage */typedef struct memreq_t {    u_int	CardOffset;    page_t	Page;} memreq_t;/* For ModifyWindow */typedef struct modwin_t {    u_int	Attributes;    u_int	AccessSpeed;} modwin_t;/* For RequestWindow */typedef struct win_req_t {    u_int	Attributes;    u_long	Base;    u_int	Size;    u_int	AccessSpeed;} win_req_t;/* Attributes for RequestWindow */#define WIN_ADDR_SPACE		0x0001#define WIN_ADDR_SPACE_MEM	0x0000#define WIN_ADDR_SPACE_IO	0x0001#define WIN_MEMORY_TYPE		0x0002#define WIN_MEMORY_TYPE_CM	0x0000#define WIN_MEMORY_TYPE_AM	0x0002#define WIN_ENABLE		0x0004#define WIN_DATA_WIDTH		0x0018#define WIN_DATA_WIDTH_8	0x0000#define WIN_DATA_WIDTH_16	0x0008#define WIN_DATA_WIDTH_32	0x0010#define WIN_PAGED		0x0020#define WIN_SHARED		0x0040#define WIN_FIRST_SHARED	0x0080#define WIN_USE_WAIT		0x0100#define WIN_STRICT_ALIGN	0x0200#define WIN_MAP_BELOW_1MB	0x0400#define WIN_PREFETCH		0x0800#define WIN_CACHEABLE		0x1000#define WIN_BAR_MASK		0xe000#define WIN_BAR_SHIFT		13/* Attributes for RegisterClient */#define INFO_MASTER_CLIENT	0x01#define INFO_IO_CLIENT		0x02#define INFO_MTD_CLIENT		0x04#define INFO_MEM_CLIENT		0x08#define MAX_NUM_CLIENTS		3#define INFO_CARD_SHARE		0x10#define INFO_CARD_EXCL		0x20typedef struct cs_status_t {    u_char	Function;    event_t 	CardState;    event_t	SocketState;} cs_status_t;typedef struct error_info_t {    int		func;    int		retcode;} error_info_t;/* Special stuff for binding drivers to sockets */typedef struct bind_req_t {    socket_t	Socket;    u_char	Function;    dev_info_t	*dev_info;} bind_req_t;/* Flag to bind to all functions */#define BIND_FN_ALL	0xfftypedef struct mtd_bind_t {    socket_t	Socket;    u_int	Attributes;    u_int	CardOffset;    dev_info_t	*dev_info;} mtd_bind_t;/* Events */#define CS_EVENT_PRI_LOW		0#define CS_EVENT_PRI_HIGH		1#define CS_EVENT_WRITE_PROTECT		0x000001#define CS_EVENT_CARD_LOCK		0x000002#define CS_EVENT_CARD_INSERTION		0x000004#define CS_EVENT_CARD_REMOVAL		0x000008#define CS_EVENT_BATTERY_DEAD		0x000010#define CS_EVENT_BATTERY_LOW		0x000020#define CS_EVENT_READY_CHANGE		0x000040#define CS_EVENT_CARD_DETECT		0x000080#define CS_EVENT_RESET_REQUEST		0x000100#define CS_EVENT_RESET_PHYSICAL		0x000200#define CS_EVENT_CARD_RESET		0x000400#define CS_EVENT_REGISTRATION_COMPLETE	0x000800#define CS_EVENT_RESET_COMPLETE		0x001000#define CS_EVENT_PM_SUSPEND		0x002000#define CS_EVENT_PM_RESUME		0x004000#define CS_EVENT_INSERTION_REQUEST	0x008000#define CS_EVENT_EJECTION_REQUEST	0x010000#define CS_EVENT_MTD_REQUEST		0x020000#define CS_EVENT_ERASE_COMPLETE		0x040000#define CS_EVENT_REQUEST_ATTENTION	0x080000#define CS_EVENT_CB_DETECT		0x100000#define CS_EVENT_3VCARD			0x200000#define CS_EVENT_XVCARD			0x400000/* Return codes */#define CS_SUCCESS		0x00#define CS_BAD_ADAPTER		0x01#define CS_BAD_ATTRIBUTE	0x02#define CS_BAD_BASE		0x03#define CS_BAD_EDC		0x04#define CS_BAD_IRQ		0x06#define CS_BAD_OFFSET		0x07#define CS_BAD_PAGE		0x08#define CS_READ_FAILURE		0x09#define CS_BAD_SIZE		0x0a#define CS_BAD_SOCKET		0x0b#define CS_BAD_TYPE		0x0d#define CS_BAD_VCC		0x0e#define CS_BAD_VPP		0x0f#define CS_BAD_WINDOW		0x11#define CS_WRITE_FAILURE	0x12#define CS_NO_CARD		0x14#define CS_UNSUPPORTED_FUNCTION	0x15#define CS_UNSUPPORTED_MODE	0x16#define CS_BAD_SPEED		0x17#define CS_BUSY			0x18#define CS_GENERAL_FAILURE	0x19#define CS_WRITE_PROTECTED	0x1a#define CS_BAD_ARG_LENGTH	0x1b#define CS_BAD_ARGS		0x1c#define CS_CONFIGURATION_LOCKED	0x1d#define CS_IN_USE		0x1e#define CS_NO_MORE_ITEMS	0x1f#define CS_OUT_OF_RESOURCE	0x20#define CS_BAD_HANDLE		0x21#define CS_BAD_TUPLE		0x40#ifdef __KERNEL__/* *  The main Card Services entry point */enum service {    AccessConfigurationRegister, AddSocketServices,    AdjustResourceInfo, CheckEraseQueue, CloseMemory, CopyMemory,    DeregisterClient, DeregisterEraseQueue, GetCardServicesInfo,    GetClientInfo, GetConfigurationInfo, GetEventMask,    GetFirstClient, GetFirstPartion, GetFirstRegion, GetFirstTuple,    GetNextClient, GetNextPartition, GetNextRegion, GetNextTuple,    GetStatus, GetTupleData, MapLogSocket, MapLogWindow, MapMemPage,    MapPhySocket, MapPhyWindow, ModifyConfiguration, ModifyWindow,    OpenMemory, ParseTuple, ReadMemory, RegisterClient,    RegisterEraseQueue, RegisterMTD, RegisterTimer,    ReleaseConfiguration, ReleaseExclusive, ReleaseIO, ReleaseIRQ,    ReleaseSocketMask, ReleaseWindow, ReplaceSocketServices,    RequestConfiguration, RequestExclusive, RequestIO, RequestIRQ,    RequestSocketMask, RequestWindow, ResetCard, ReturnSSEntry,    SetEventMask, SetRegion, ValidateCIS, VendorSpecific,    WriteMemory, BindDevice, BindMTD, ReportError,    SuspendCard, ResumeCard, EjectCard, InsertCard, ReplaceCIS,    GetFirstWindow, GetNextWindow, GetMemPage};#ifdef IN_CARD_SERVICESextern int CardServices(int func, void *a1, void *a2, void *a3);#elseextern int CardServices(int func, ...);#endifint pcmcia_access_configuration_register(client_handle_t handle, conf_reg_t *reg);int pcmcia_bind_device(bind_req_t *req);int pcmcia_bind_mtd(mtd_bind_t *req);int pcmcia_deregister_client(client_handle_t handle);int pcmcia_get_configuration_info(client_handle_t handle, config_info_t *config);int pcmcia_get_card_services_info(servinfo_t *info);int pcmcia_get_first_client(client_handle_t *handle, client_req_t *req);int pcmcia_get_next_client(client_handle_t *handle, client_req_t *req);int pcmcia_get_window(window_handle_t *handle, int idx, win_req_t *req);int pcmcia_get_first_window(window_handle_t *win, win_req_t *req);int pcmcia_get_next_window(window_handle_t *win, win_req_t *req);int pcmcia_get_status(client_handle_t handle, cs_status_t *status);int pcmcia_get_mem_page(window_handle_t win, memreq_t *req);int pcmcia_map_mem_page(window_handle_t win, memreq_t *req);int pcmcia_modify_configuration(client_handle_t handle, modconf_t *mod);int pcmcia_modify_window(window_handle_t win, modwin_t *req);int pcmcia_register_client(client_handle_t *handle, client_reg_t *req);int pcmcia_release_configuration(client_handle_t handle);int pcmcia_release_io(client_handle_t handle, io_req_t *req);int pcmcia_release_irq(client_handle_t handle, irq_req_t *req);int pcmcia_release_window(window_handle_t win);int pcmcia_request_configuration(client_handle_t handle, config_req_t *req);int pcmcia_request_io(client_handle_t handle, io_req_t *req);int pcmcia_request_irq(client_handle_t handle, irq_req_t *req);int pcmcia_request_window(client_handle_t *handle, win_req_t *req, window_handle_t *wh);int pcmcia_reset_card(client_handle_t handle, client_req_t *req);int pcmcia_suspend_card(client_handle_t handle, client_req_t *req);int pcmcia_resume_card(client_handle_t handle, client_req_t *req);int pcmcia_eject_card(client_handle_t handle, client_req_t *req);int pcmcia_insert_card(client_handle_t handle, client_req_t *req);int pcmcia_set_event_mask(client_handle_t handle, eventmask_t *mask);int pcmcia_report_error(client_handle_t handle, error_info_t *err);struct pci_bus *pcmcia_lookup_bus(client_handle_t handle);/* rsrc_mgr.c */int pcmcia_adjust_resource_info(client_handle_t handle, adjust_t *adj);#endif /* __KERNEL__ */#endif /* _LINUX_CS_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -