added a pcmcia bus raw driver compatible with R5

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15540 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2005-12-14 22:50:05 +00:00
parent 42a631e9fa
commit 4f9f2ee29d
6 changed files with 468 additions and 0 deletions
+24
View File
@@ -436,6 +436,30 @@ extern int CardServices(int func, void *a1, void *a2, void *a3);
extern int CardServices(int func, ...);
#endif
#ifdef __BEOS__
#define SS_MODULE_NAME(s) ("busses/pcmcia/" s "/v1")
#define MTD_MODULE_NAME(s) ("busses/pcmcia/" s "/v1")
#define CS_CLIENT_MODULE_NAME "bus_managers/pcmcia_cs/client/v1"
typedef struct cs_client_module_info {
bus_manager_info binfo;
int (*_CardServices)(int, ...);
int (*_MTDHelperEntry)(int, ...);
// void (*_add_timer)(struct timer_list *);
// void (*_del_timer)(struct timer_list *);
} cs_client_module_info;
#define CS_SOCKET_MODULE_NAME "bus_managers/pcmcia_cs/socket/v1"
typedef struct cs_socket_module_info {
bus_manager_info binfo;
int (*_register_ss_entry)(int, ss_entry_t);
void (*_unregister_ss_entry)(ss_entry_t);
// void (*_add_timer)(struct timer_list *);
// void (*_del_timer)(struct timer_list *);
int (*register_resource)(int, u_long, u_long);
int (*release_resource)(int, u_long, u_long);
int (*check_resource)(int, u_long, u_long);
} cs_socket_module_info;
#endif
#endif /* __KERNEL__ */
#endif /* _LINUX_CS_H */
+9
View File
@@ -68,6 +68,15 @@ typedef struct driver_operations {
int register_driver(struct driver_operations *ops);
void unregister_driver(struct driver_operations *ops);
#ifdef __BEOS__
#define CB_ENABLER_MODULE_NAME "bus_managers/cb_enabler/v1"
typedef struct cb_enabler_module_info {
bus_manager_info binfo;
int (*register_driver)(struct driver_operations *ops);
void (*unregister_driver)(struct driver_operations *ops);
} cb_enabler_module_info;
#endif /* __BEOS__ */
#endif /* __KERNEL__ */
#endif /* _LINUX_DRIVER_OPS_H */
+22
View File
@@ -79,11 +79,19 @@ typedef union ds_ioctl_arg_t {
#ifndef __HAIKU__
#undef _IOC
#undef IOCPARM_LEN
#undef _IOR
#undef _IOW
#undef _IOWR
#undef IOC_IN
#undef IOC_OUT
#undef IOC_INOUT
#define IOC_IN 1
#define IOC_OUT 2
#define IOC_INOUT (IOC_IN|IOC_OUT)
#define _IOC(inout, group, num, len) \
(inout | ((len & IOCPARM_MASK)<<2) | ((group) << 24) | (num<<16))
#define IOCPARM_LEN(x) (((x) >> 2) & IOCPARM_MASK)
#define _IOR(g,n,t) _IOC(2, (g), (n), sizeof(t))
#define _IOW(g,n,t) _IOC(1 , (g), (n), sizeof(t))
#define _IOWR(g,n,t) _IOC(3, (g), (n), sizeof(t))
@@ -122,8 +130,10 @@ typedef union ds_ioctl_arg_t {
typedef struct dev_link_t {
dev_node_t *dev;
u_int state, open;
#ifndef __BEOS__
wait_queue_head_t pending;
struct timer_list release;
#endif
client_handle_t handle;
io_req_t io;
irq_req_t irq;
@@ -155,6 +165,18 @@ int unregister_pccard_driver(dev_info_t *dev_info);
#define register_pcmcia_driver register_pccard_driver
#define unregister_pcmcia_driver unregister_pccard_driver
#ifdef __BEOS__
#define DS_MODULE_NAME "bus_managers/pcmcia_ds/v2"
typedef struct ds_module_info {
bus_manager_info binfo;
int (*_register_pccard_driver)(dev_info_t *,
dev_link_t *(*)(void),
void (*)(dev_link_t *));
int (*_unregister_pccard_driver)(dev_info_t *);
int (*get_handle)(int socket, client_handle_t *handle);
} ds_module_info;
#endif /* __BEOS__ */
#endif /* __KERNEL__ */
#endif /* _LINUX_DS_H */