File: compat_cs.h

package info (click to toggle)
alsa-driver 1.0.13-5etch1
  • links: PTS
  • area: main
  • in suites: etch
  • size: 20,108 kB
  • ctags: 50,477
  • sloc: ansic: 319,881; sh: 32,930; makefile: 2,015; python: 1,527; perl: 1,316; xml: 896; awk: 66
file content (43 lines) | stat: -rw-r--r-- 1,311 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0) && (defined(CONFIG_PCMCIA) || defined(CONFIG_PCMCIA_MODULE))

#include <pcmcia/cs_types.h>
#include <pcmcia/cs.h>
#include <pcmcia/cistpl.h>
#include <pcmcia/ds.h>
#include <pcmcia/version.h>

struct cs_device_driver {
	const char *name;
};

struct pcmcia_driver {
	int                     use_count;
	dev_link_t              *(*attach)(void);
	void                    (*detach)(dev_link_t *);
	struct module           *owner;
	struct cs_device_driver	drv;
};

/* driver registration */
static inline int snd_compat_pcmcia_register_driver(struct pcmcia_driver *driver)
{
	servinfo_t serv;

	CardServices(GetCardServicesInfo, &serv);
	if (serv.Revision != CS_RELEASE_CODE) {
		printk(KERN_WARNING "%s: Card Services release does not match (%x != %x)!\n", driver->drv.name, serv.Revision, CS_RELEASE_CODE);
		return -EIO;
	}
	register_pccard_driver((dev_info_t *)driver->drv.name, driver->attach, driver->detach);
	return 0;
}

static inline void snd_compat_pcmcia_unregister_driver(struct pcmcia_driver *driver)
{
	unregister_pccard_driver((dev_info_t *)driver->drv.name);
}

#define pcmcia_register_driver(driver) snd_compat_pcmcia_register_driver(driver)
#define pcmcia_unregister_driver(driver) snd_compat_pcmcia_unregister_driver(driver)

#endif /* 2.5.0+ */