mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6:
pcmcia: avoid buffer overflow in pcmcia_setup_isa_irq
pcmcia: do not request windows if you don't need to
pcmcia: insert PCMCIA device resources into resource tree
pcmcia: export resource information to sysfs
pcmcia: use struct resource for PCMCIA devices, part 2
pcmcia: remove memreq_t
pcmcia: move local definitions out of include/pcmcia/cs.h
pcmcia: do not use io_req_t when calling pcmcia_request_io()
pcmcia: do not use io_req_t after call to pcmcia_request_io()
pcmcia: use struct resource for PCMCIA devices
pcmcia: clean up cs.h
pcmcia: use pcmica_{read,write}_config_byte
pcmcia: remove cs_types.h
pcmcia: remove unused flag, simplify headers
pcmcia: remove obsolete CS_EVENT_ definitions
pcmcia: split up central event handler
pcmcia: simplify event callback
pcmcia: remove obsolete ioctl
Conflicts in:
- drivers/staging/comedi/drivers/*
- drivers/staging/wlags49_h2/wl_cs.c
due to dev_info_t and whitespace changes
This commit is contained in:
commit
1685e633b3
97 changed files with 1197 additions and 3195 deletions
|
|
@ -15,6 +15,8 @@
|
|||
#ifndef _LINUX_CISTPL_H
|
||||
#define _LINUX_CISTPL_H
|
||||
|
||||
typedef unsigned char cisdata_t;
|
||||
|
||||
#define CISTPL_NULL 0x00
|
||||
#define CISTPL_DEVICE 0x01
|
||||
#define CISTPL_LONGLINK_CB 0x02
|
||||
|
|
|
|||
|
|
@ -19,44 +19,6 @@
|
|||
#include <linux/interrupt.h>
|
||||
#endif
|
||||
|
||||
/* 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 */
|
||||
/* Action field */
|
||||
#define REMOVE_MANAGED_RESOURCE 1
|
||||
#define ADD_MANAGED_RESOURCE 2
|
||||
|
||||
|
||||
typedef struct event_callback_args_t {
|
||||
struct pcmcia_device *client_handle;
|
||||
void *client_data;
|
||||
} event_callback_args_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
|
||||
|
||||
/* ModifyConfiguration */
|
||||
typedef struct modconf_t {
|
||||
u_int Attributes;
|
||||
|
|
@ -94,43 +56,6 @@ typedef struct config_req_t {
|
|||
#define INT_CARDBUS 0x04
|
||||
#define INT_ZOOMED_VIDEO 0x08
|
||||
|
||||
/* For RequestIO and ReleaseIO */
|
||||
typedef struct io_req_t {
|
||||
u_int BasePort1;
|
||||
u_int NumPorts1;
|
||||
u_int Attributes1;
|
||||
u_int BasePort2;
|
||||
u_int 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
|
||||
|
||||
/* Bits in IRQInfo1 field */
|
||||
#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 0x80
|
||||
|
||||
typedef 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
|
||||
|
|
@ -143,18 +68,6 @@ typedef struct eventmask_t {
|
|||
#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;
|
||||
|
|
@ -164,61 +77,19 @@ typedef struct win_req_t {
|
|||
} 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
|
||||
#define WIN_MEMORY_TYPE_CM 0x00 /* default */
|
||||
#define WIN_MEMORY_TYPE_AM 0x20 /* MAP_ATTRIB */
|
||||
#define WIN_DATA_WIDTH_8 0x00 /* default */
|
||||
#define WIN_DATA_WIDTH_16 0x02 /* MAP_16BIT */
|
||||
#define WIN_ENABLE 0x01 /* MAP_ACTIVE */
|
||||
#define WIN_USE_WAIT 0x40 /* MAP_USE_WAIT */
|
||||
|
||||
typedef struct error_info_t {
|
||||
int func;
|
||||
int retcode;
|
||||
} error_info_t;
|
||||
|
||||
/* Flag to bind to all functions */
|
||||
#define BIND_FN_ALL 0xff
|
||||
|
||||
/* 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_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
|
||||
#define WIN_FLAGS_MAP 0x63 /* MAP_ATTRIB | MAP_16BIT | MAP_ACTIVE |
|
||||
MAP_USE_WAIT */
|
||||
#define WIN_FLAGS_REQ 0x1c /* mapping to socket->win[i]:
|
||||
0x04 -> 0
|
||||
0x08 -> 1
|
||||
0x0c -> 2
|
||||
0x10 -> 3 */
|
||||
|
||||
#endif /* _LINUX_CS_H */
|
||||
|
|
|
|||
|
|
@ -1,40 +0,0 @@
|
|||
/*
|
||||
* cs_types.h
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* (C) 1999 David A. Hinds
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_CS_TYPES_H
|
||||
#define _LINUX_CS_TYPES_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/types.h>
|
||||
#else
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
typedef u_short socket_t;
|
||||
typedef u_int event_t;
|
||||
typedef u_char cisdata_t;
|
||||
typedef u_short page_t;
|
||||
|
||||
typedef unsigned long window_handle_t;
|
||||
|
||||
struct region_t;
|
||||
typedef struct region_t *memory_handle_t;
|
||||
|
||||
#ifndef DEV_NAME_LEN
|
||||
#define DEV_NAME_LEN 32
|
||||
#endif
|
||||
|
||||
typedef char dev_info_t[DEV_NAME_LEN];
|
||||
|
||||
#endif /* _LINUX_CS_TYPES_H */
|
||||
|
|
@ -20,7 +20,6 @@
|
|||
#include <linux/mod_devicetable.h>
|
||||
#endif
|
||||
|
||||
#include <pcmcia/cs_types.h>
|
||||
#include <pcmcia/device_id.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
|
@ -37,6 +36,8 @@ struct pcmcia_device;
|
|||
struct config_t;
|
||||
struct net_device;
|
||||
|
||||
typedef struct resource *window_handle_t;
|
||||
|
||||
/* dynamic device IDs for PCMCIA device drivers. See
|
||||
* Documentation/pcmcia/driver.txt for details.
|
||||
*/
|
||||
|
|
@ -62,6 +63,17 @@ struct pcmcia_driver {
|
|||
int pcmcia_register_driver(struct pcmcia_driver *driver);
|
||||
void pcmcia_unregister_driver(struct pcmcia_driver *driver);
|
||||
|
||||
/* for struct resource * array embedded in struct pcmcia_device */
|
||||
enum {
|
||||
PCMCIA_IOPORT_0,
|
||||
PCMCIA_IOPORT_1,
|
||||
PCMCIA_IOMEM_0,
|
||||
PCMCIA_IOMEM_1,
|
||||
PCMCIA_IOMEM_2,
|
||||
PCMCIA_IOMEM_3,
|
||||
PCMCIA_NUM_RESOURCES,
|
||||
};
|
||||
|
||||
struct pcmcia_device {
|
||||
/* the socket and the device_no [for multifunction devices]
|
||||
uniquely define a pcmcia_device */
|
||||
|
|
@ -79,13 +91,14 @@ struct pcmcia_device {
|
|||
struct list_head socket_device_list;
|
||||
|
||||
/* deprecated, will be cleaned up soon */
|
||||
u_int open;
|
||||
io_req_t io;
|
||||
config_req_t conf;
|
||||
window_handle_t win;
|
||||
|
||||
/* device setup */
|
||||
unsigned int irq;
|
||||
struct resource *resource[PCMCIA_NUM_RESOURCES];
|
||||
|
||||
unsigned int io_lines; /* number of I/O lines */
|
||||
|
||||
/* Is the device suspended? */
|
||||
u16 suspended:1;
|
||||
|
|
@ -117,13 +130,9 @@ struct pcmcia_device {
|
|||
u64 dma_mask;
|
||||
struct device dev;
|
||||
|
||||
#ifdef CONFIG_PCMCIA_IOCTL
|
||||
/* device driver wanted by cardmgr */
|
||||
struct pcmcia_driver *cardmgr;
|
||||
#endif
|
||||
|
||||
/* data private to drivers */
|
||||
void *priv;
|
||||
unsigned int open;
|
||||
};
|
||||
|
||||
#define to_pcmcia_dev(n) container_of(n, struct pcmcia_device, dev)
|
||||
|
|
@ -178,11 +187,11 @@ struct pcmcia_device *pcmcia_dev_present(struct pcmcia_device *p_dev);
|
|||
int pcmcia_reset_card(struct pcmcia_socket *skt);
|
||||
|
||||
/* CIS config */
|
||||
int pcmcia_access_configuration_register(struct pcmcia_device *p_dev,
|
||||
conf_reg_t *reg);
|
||||
int pcmcia_read_config_byte(struct pcmcia_device *p_dev, off_t where, u8 *val);
|
||||
int pcmcia_write_config_byte(struct pcmcia_device *p_dev, off_t where, u8 val);
|
||||
|
||||
/* device configuration */
|
||||
int pcmcia_request_io(struct pcmcia_device *p_dev, io_req_t *req);
|
||||
int pcmcia_request_io(struct pcmcia_device *p_dev);
|
||||
|
||||
int __must_check
|
||||
__pcmcia_request_exclusive_irq(struct pcmcia_device *p_dev,
|
||||
|
|
@ -204,215 +213,27 @@ int pcmcia_request_window(struct pcmcia_device *p_dev, win_req_t *req,
|
|||
window_handle_t *wh);
|
||||
int pcmcia_release_window(struct pcmcia_device *p_dev, window_handle_t win);
|
||||
int pcmcia_map_mem_page(struct pcmcia_device *p_dev, window_handle_t win,
|
||||
memreq_t *req);
|
||||
unsigned int offset);
|
||||
|
||||
int pcmcia_modify_configuration(struct pcmcia_device *p_dev, modconf_t *mod);
|
||||
void pcmcia_disable_device(struct pcmcia_device *p_dev);
|
||||
|
||||
/* IO ports */
|
||||
#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
|
||||
|
||||
/* convert flag found in cfgtable to data path width parameter */
|
||||
static inline int pcmcia_io_cfg_data_width(unsigned int flags)
|
||||
{
|
||||
if (!(flags & CISTPL_IO_8BIT))
|
||||
return IO_DATA_PATH_WIDTH_16;
|
||||
if (!(flags & CISTPL_IO_16BIT))
|
||||
return IO_DATA_PATH_WIDTH_8;
|
||||
return IO_DATA_PATH_WIDTH_AUTO;
|
||||
}
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
||||
|
||||
/* Below, there are only definitions which are used by
|
||||
* - the PCMCIA ioctl
|
||||
* - deprecated PCMCIA userspace tools only
|
||||
*
|
||||
* here be dragons ... here be dragons ... here be dragons ... here be drag
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_PCMCIA_IOCTL) || !defined(__KERNEL__)
|
||||
|
||||
#if defined(__arm__) || defined(__mips__) || defined(__avr32__) || \
|
||||
defined(__bfin__)
|
||||
/* This (ioaddr_t) is exposed to userspace & hence cannot be changed. */
|
||||
typedef u_int ioaddr_t;
|
||||
#else
|
||||
typedef u_short ioaddr_t;
|
||||
#endif
|
||||
|
||||
/* 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 0x40
|
||||
|
||||
|
||||
typedef struct tuple_parse_t {
|
||||
tuple_t tuple;
|
||||
cisdata_t data[255];
|
||||
cisparse_t parse;
|
||||
} tuple_parse_t;
|
||||
|
||||
typedef struct win_info_t {
|
||||
window_handle_t handle;
|
||||
win_req_t window;
|
||||
memreq_t map;
|
||||
} win_info_t;
|
||||
|
||||
typedef struct bind_info_t {
|
||||
dev_info_t dev_info;
|
||||
u_char function;
|
||||
struct pcmcia_device *instance;
|
||||
char name[DEV_NAME_LEN];
|
||||
u_short major, minor;
|
||||
void *next;
|
||||
} bind_info_t;
|
||||
|
||||
typedef struct mtd_info_t {
|
||||
dev_info_t dev_info;
|
||||
u_int Attributes;
|
||||
u_int CardOffset;
|
||||
} mtd_info_t;
|
||||
|
||||
typedef struct region_info_t {
|
||||
u_int Attributes;
|
||||
u_int CardOffset;
|
||||
u_int RegionSize;
|
||||
u_int AccessSpeed;
|
||||
u_int BlockSize;
|
||||
u_int PartMultiple;
|
||||
u_char JedecMfr, JedecInfo;
|
||||
memory_handle_t next;
|
||||
} region_info_t;
|
||||
|
||||
#define REGION_TYPE 0x0001
|
||||
#define REGION_TYPE_CM 0x0000
|
||||
#define REGION_TYPE_AM 0x0001
|
||||
#define REGION_PREFETCH 0x0008
|
||||
#define REGION_CACHEABLE 0x0010
|
||||
#define REGION_BAR_MASK 0xe000
|
||||
#define REGION_BAR_SHIFT 13
|
||||
|
||||
/* For ReplaceCIS */
|
||||
typedef struct cisdump_t {
|
||||
u_int Length;
|
||||
cisdata_t Data[CISTPL_MAX_CIS_SIZE];
|
||||
} cisdump_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 ValidateCIS */
|
||||
typedef struct cisinfo_t {
|
||||
u_int Chains;
|
||||
} cisinfo_t;
|
||||
|
||||
typedef struct cs_status_t {
|
||||
u_char Function;
|
||||
event_t CardState;
|
||||
event_t SocketState;
|
||||
} cs_status_t;
|
||||
|
||||
typedef union ds_ioctl_arg_t {
|
||||
adjust_t adjust;
|
||||
config_info_t config;
|
||||
tuple_t tuple;
|
||||
tuple_parse_t tuple_parse;
|
||||
client_req_t client_req;
|
||||
cs_status_t status;
|
||||
conf_reg_t conf_reg;
|
||||
cisinfo_t cisinfo;
|
||||
region_info_t region;
|
||||
bind_info_t bind_info;
|
||||
mtd_info_t mtd_info;
|
||||
win_info_t win_info;
|
||||
cisdump_t cisdump;
|
||||
} ds_ioctl_arg_t;
|
||||
|
||||
#define DS_ADJUST_RESOURCE_INFO _IOWR('d', 2, adjust_t)
|
||||
#define DS_GET_CONFIGURATION_INFO _IOWR('d', 3, config_info_t)
|
||||
#define DS_GET_FIRST_TUPLE _IOWR('d', 4, tuple_t)
|
||||
#define DS_GET_NEXT_TUPLE _IOWR('d', 5, tuple_t)
|
||||
#define DS_GET_TUPLE_DATA _IOWR('d', 6, tuple_parse_t)
|
||||
#define DS_PARSE_TUPLE _IOWR('d', 7, tuple_parse_t)
|
||||
#define DS_RESET_CARD _IO ('d', 8)
|
||||
#define DS_GET_STATUS _IOWR('d', 9, cs_status_t)
|
||||
#define DS_ACCESS_CONFIGURATION_REGISTER _IOWR('d', 10, conf_reg_t)
|
||||
#define DS_VALIDATE_CIS _IOR ('d', 11, cisinfo_t)
|
||||
#define DS_SUSPEND_CARD _IO ('d', 12)
|
||||
#define DS_RESUME_CARD _IO ('d', 13)
|
||||
#define DS_EJECT_CARD _IO ('d', 14)
|
||||
#define DS_INSERT_CARD _IO ('d', 15)
|
||||
#define DS_GET_FIRST_REGION _IOWR('d', 16, region_info_t)
|
||||
#define DS_GET_NEXT_REGION _IOWR('d', 17, region_info_t)
|
||||
#define DS_REPLACE_CIS _IOWR('d', 18, cisdump_t)
|
||||
#define DS_GET_FIRST_WINDOW _IOR ('d', 19, win_info_t)
|
||||
#define DS_GET_NEXT_WINDOW _IOWR('d', 20, win_info_t)
|
||||
#define DS_GET_MEM_PAGE _IOWR('d', 21, win_info_t)
|
||||
|
||||
#define DS_BIND_REQUEST _IOWR('d', 60, bind_info_t)
|
||||
#define DS_GET_DEVICE_INFO _IOWR('d', 61, bind_info_t)
|
||||
#define DS_GET_NEXT_DEVICE _IOWR('d', 62, bind_info_t)
|
||||
#define DS_UNBIND_REQUEST _IOW ('d', 63, bind_info_t)
|
||||
#define DS_BIND_MTD _IOWR('d', 64, mtd_info_t)
|
||||
|
||||
|
||||
/* used in userspace only */
|
||||
#define CS_IN_USE 0x1e
|
||||
|
||||
#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 0x20
|
||||
|
||||
|
||||
#endif /* !defined(__KERNEL__) || defined(CONFIG_PCMCIA_IOCTL) */
|
||||
|
||||
#endif /* _LINUX_DS_H */
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@
|
|||
#include <linux/sched.h> /* task_struct, completion */
|
||||
#include <linux/mutex.h>
|
||||
|
||||
#include <pcmcia/cs_types.h>
|
||||
#include <pcmcia/cs.h>
|
||||
#ifdef CONFIG_CARDBUS
|
||||
#include <linux/pci.h>
|
||||
|
|
@ -162,17 +161,10 @@ struct pcmcia_socket {
|
|||
u_int pci_irq;
|
||||
struct pci_dev *cb_dev;
|
||||
|
||||
|
||||
/* socket setup is done so resources should be able to be allocated.
|
||||
* Only if set to 1, calls to find_{io,mem}_region are handled, and
|
||||
* insertio events are actually managed by the PCMCIA layer.*/
|
||||
u8 resource_setup_done:1;
|
||||
|
||||
/* It's old if resource setup is done using adjust_resource_info() */
|
||||
u8 resource_setup_old:1;
|
||||
u8 resource_setup_new:1;
|
||||
|
||||
u8 reserved:5;
|
||||
u8 resource_setup_done;
|
||||
|
||||
/* socket operations */
|
||||
struct pccard_operations *ops;
|
||||
|
|
@ -218,15 +210,8 @@ struct pcmcia_socket {
|
|||
* incorrectness and change */
|
||||
u8 device_count;
|
||||
|
||||
/* 16-bit state: */
|
||||
struct {
|
||||
/* "master" ioctl is used */
|
||||
u8 busy:1;
|
||||
/* the PCMCIA card consists of two pseudo devices */
|
||||
u8 has_pfc:1;
|
||||
|
||||
u8 reserved:6;
|
||||
} pcmcia_state;
|
||||
/* does the PCMCIA card consist of two pseudo devices? */
|
||||
u8 pcmcia_pfc;
|
||||
|
||||
/* non-zero if PCMCIA card is present */
|
||||
atomic_t present;
|
||||
|
|
@ -234,10 +219,6 @@ struct pcmcia_socket {
|
|||
/* IRQ to be used by PCMCIA devices. May not be IRQ 0. */
|
||||
unsigned int pcmcia_irq;
|
||||
|
||||
#ifdef CONFIG_PCMCIA_IOCTL
|
||||
struct user_info_t *user;
|
||||
wait_queue_head_t queue;
|
||||
#endif /* CONFIG_PCMCIA_IOCTL */
|
||||
#endif /* CONFIG_PCMCIA */
|
||||
|
||||
/* socket device */
|
||||
|
|
|
|||
Loading…
Reference in a new issue