Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87373318 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Driver core: convert pcmcia code to use struct device



Converts from using struct "class_device" to "struct device" making
everything show up properly in /sys/devices/ with symlinks from the
/sys/class directory.

Cc: <linux-pcmcia@lists.infradead.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 31b9025a
Loading
Loading
Loading
Loading
+17 −17
Original line number Original line Diff line number Diff line
@@ -110,7 +110,7 @@ int pcmcia_socket_dev_suspend(struct device *dev, pm_message_t state)


	down_read(&pcmcia_socket_list_rwsem);
	down_read(&pcmcia_socket_list_rwsem);
	list_for_each_entry(socket, &pcmcia_socket_list, socket_list) {
	list_for_each_entry(socket, &pcmcia_socket_list, socket_list) {
		if (socket->dev.dev != dev)
		if (socket->dev.parent != dev)
			continue;
			continue;
		mutex_lock(&socket->skt_mutex);
		mutex_lock(&socket->skt_mutex);
		socket_suspend(socket);
		socket_suspend(socket);
@@ -128,7 +128,7 @@ int pcmcia_socket_dev_resume(struct device *dev)


	down_read(&pcmcia_socket_list_rwsem);
	down_read(&pcmcia_socket_list_rwsem);
	list_for_each_entry(socket, &pcmcia_socket_list, socket_list) {
	list_for_each_entry(socket, &pcmcia_socket_list, socket_list) {
		if (socket->dev.dev != dev)
		if (socket->dev.parent != dev)
			continue;
			continue;
		mutex_lock(&socket->skt_mutex);
		mutex_lock(&socket->skt_mutex);
		socket_resume(socket);
		socket_resume(socket);
@@ -143,12 +143,12 @@ EXPORT_SYMBOL(pcmcia_socket_dev_resume);


struct pcmcia_socket * pcmcia_get_socket(struct pcmcia_socket *skt)
struct pcmcia_socket * pcmcia_get_socket(struct pcmcia_socket *skt)
{
{
	struct class_device *cl_dev = class_device_get(&skt->dev);
	struct device *dev = get_device(&skt->dev);
	if (!cl_dev)
	if (!dev)
		return NULL;
		return NULL;
	skt = class_get_devdata(cl_dev);
	skt = dev_get_drvdata(dev);
	if (!try_module_get(skt->owner)) {
	if (!try_module_get(skt->owner)) {
		class_device_put(&skt->dev);
		put_device(&skt->dev);
		return NULL;
		return NULL;
	}
	}
	return (skt);
	return (skt);
@@ -159,14 +159,14 @@ EXPORT_SYMBOL(pcmcia_get_socket);
void pcmcia_put_socket(struct pcmcia_socket *skt)
void pcmcia_put_socket(struct pcmcia_socket *skt)
{
{
	module_put(skt->owner);
	module_put(skt->owner);
	class_device_put(&skt->dev);
	put_device(&skt->dev);
}
}
EXPORT_SYMBOL(pcmcia_put_socket);
EXPORT_SYMBOL(pcmcia_put_socket);




static void pcmcia_release_socket(struct class_device *class_dev)
static void pcmcia_release_socket(struct device *dev)
{
{
	struct pcmcia_socket *socket = class_get_devdata(class_dev);
	struct pcmcia_socket *socket = dev_get_drvdata(dev);


	complete(&socket->socket_released);
	complete(&socket->socket_released);
}
}
@@ -181,7 +181,7 @@ int pcmcia_register_socket(struct pcmcia_socket *socket)
	struct task_struct *tsk;
	struct task_struct *tsk;
	int ret;
	int ret;


	if (!socket || !socket->ops || !socket->dev.dev || !socket->resource_ops)
	if (!socket || !socket->ops || !socket->dev.parent || !socket->resource_ops)
		return -EINVAL;
		return -EINVAL;


	cs_dbg(socket, 0, "pcmcia_register_socket(0x%p)\n", socket->ops);
	cs_dbg(socket, 0, "pcmcia_register_socket(0x%p)\n", socket->ops);
@@ -226,9 +226,9 @@ int pcmcia_register_socket(struct pcmcia_socket *socket)
#endif
#endif


	/* set proper values in socket->dev */
	/* set proper values in socket->dev */
	socket->dev.class_data = socket;
	dev_set_drvdata(&socket->dev, socket);
	socket->dev.class = &pcmcia_socket_class;
	socket->dev.class = &pcmcia_socket_class;
	snprintf(socket->dev.class_id, BUS_ID_SIZE, "pcmcia_socket%u", socket->sock);
	snprintf(socket->dev.bus_id, BUS_ID_SIZE, "pcmcia_socket%u", socket->sock);


	/* base address = 0, map = 0 */
	/* base address = 0, map = 0 */
	socket->cis_mem.flags = 0;
	socket->cis_mem.flags = 0;
@@ -640,7 +640,7 @@ static int pccardd(void *__skt)
	skt->ops->set_socket(skt, &skt->socket);
	skt->ops->set_socket(skt, &skt->socket);


	/* register with the device core */
	/* register with the device core */
	ret = class_device_register(&skt->dev);
	ret = device_register(&skt->dev);
	if (ret) {
	if (ret) {
		printk(KERN_WARNING "PCMCIA: unable to register socket 0x%p\n",
		printk(KERN_WARNING "PCMCIA: unable to register socket 0x%p\n",
			skt);
			skt);
@@ -689,7 +689,7 @@ static int pccardd(void *__skt)
	remove_wait_queue(&skt->thread_wait, &wait);
	remove_wait_queue(&skt->thread_wait, &wait);


	/* remove from the device core */
	/* remove from the device core */
	class_device_unregister(&skt->dev);
	device_unregister(&skt->dev);


	return 0;
	return 0;
}
}
@@ -904,7 +904,7 @@ int pcmcia_insert_card(struct pcmcia_socket *skt)
EXPORT_SYMBOL(pcmcia_insert_card);
EXPORT_SYMBOL(pcmcia_insert_card);




static int pcmcia_socket_uevent(struct class_device *dev, char **envp,
static int pcmcia_socket_uevent(struct device *dev, char **envp,
			        int num_envp, char *buffer, int buffer_size)
			        int num_envp, char *buffer, int buffer_size)
{
{
	struct pcmcia_socket *s = container_of(dev, struct pcmcia_socket, dev);
	struct pcmcia_socket *s = container_of(dev, struct pcmcia_socket, dev);
@@ -930,8 +930,8 @@ static void pcmcia_release_socket_class(struct class *data)


struct class pcmcia_socket_class = {
struct class pcmcia_socket_class = {
	.name = "pcmcia_socket",
	.name = "pcmcia_socket",
	.uevent = pcmcia_socket_uevent,
	.dev_uevent = pcmcia_socket_uevent,
	.release = pcmcia_release_socket,
	.dev_release = pcmcia_release_socket,
	.class_release = pcmcia_release_socket_class,
	.class_release = pcmcia_release_socket_class,
};
};
EXPORT_SYMBOL(pcmcia_socket_class);
EXPORT_SYMBOL(pcmcia_socket_class);
+2 −2
Original line number Original line Diff line number Diff line
@@ -142,7 +142,7 @@ struct pcmcia_callback{


int pccard_register_pcmcia(struct pcmcia_socket *s, struct pcmcia_callback *c);
int pccard_register_pcmcia(struct pcmcia_socket *s, struct pcmcia_callback *c);


#define cs_socket_name(skt)	((skt)->dev.class_id)
#define cs_socket_name(skt)	((skt)->dev.bus_id)


#ifdef DEBUG
#ifdef DEBUG
extern int cs_debug_level(int);
extern int cs_debug_level(int);
@@ -158,6 +158,6 @@ extern int cs_debug_level(int);
#endif
#endif


#define cs_err(skt, fmt, arg...) \
#define cs_err(skt, fmt, arg...) \
	printk(KERN_ERR "cs: %s: " fmt, (skt)->dev.class_id , ## arg)
	printk(KERN_ERR "cs: %s: " fmt, (skt)->dev.bus_id , ## arg)


#endif /* _LINUX_CS_INTERNAL_H */
#endif /* _LINUX_CS_INTERNAL_H */
+7 −7
Original line number Original line Diff line number Diff line
@@ -572,7 +572,7 @@ struct pcmcia_device * pcmcia_device_add(struct pcmcia_socket *s, unsigned int f
	p_dev->func   = function;
	p_dev->func   = function;


	p_dev->dev.bus = &pcmcia_bus_type;
	p_dev->dev.bus = &pcmcia_bus_type;
	p_dev->dev.parent = s->dev.dev;
	p_dev->dev.parent = s->dev.parent;
	p_dev->dev.release = pcmcia_release_dev;
	p_dev->dev.release = pcmcia_release_dev;
	bus_id_len = sprintf (p_dev->dev.bus_id, "%d.%d", p_dev->socket->sock, p_dev->device_no);
	bus_id_len = sprintf (p_dev->dev.bus_id, "%d.%d", p_dev->socket->sock, p_dev->device_no);


@@ -1328,10 +1328,10 @@ static struct pcmcia_callback pcmcia_bus_callback = {
	.resume = pcmcia_bus_resume,
	.resume = pcmcia_bus_resume,
};
};


static int __devinit pcmcia_bus_add_socket(struct class_device *class_dev,
static int __devinit pcmcia_bus_add_socket(struct device *dev,
					   struct class_interface *class_intf)
					   struct class_interface *class_intf)
{
{
	struct pcmcia_socket *socket = class_get_devdata(class_dev);
	struct pcmcia_socket *socket = dev_get_drvdata(dev);
	int ret;
	int ret;


	socket = pcmcia_get_socket(socket);
	socket = pcmcia_get_socket(socket);
@@ -1364,10 +1364,10 @@ static int __devinit pcmcia_bus_add_socket(struct class_device *class_dev,
	return 0;
	return 0;
}
}


static void pcmcia_bus_remove_socket(struct class_device *class_dev,
static void pcmcia_bus_remove_socket(struct device *dev,
				     struct class_interface *class_intf)
				     struct class_interface *class_intf)
{
{
	struct pcmcia_socket *socket = class_get_devdata(class_dev);
	struct pcmcia_socket *socket = dev_get_drvdata(dev);


	if (!socket)
	if (!socket)
		return;
		return;
@@ -1389,8 +1389,8 @@ static void pcmcia_bus_remove_socket(struct class_device *class_dev,
/* the pcmcia_bus_interface is used to handle pcmcia socket devices */
/* the pcmcia_bus_interface is used to handle pcmcia socket devices */
static struct class_interface pcmcia_bus_interface = {
static struct class_interface pcmcia_bus_interface = {
	.class = &pcmcia_socket_class,
	.class = &pcmcia_socket_class,
	.add = &pcmcia_bus_add_socket,
	.add_dev = &pcmcia_bus_add_socket,
	.remove = &pcmcia_bus_remove_socket,
	.remove_dev = &pcmcia_bus_remove_socket,
};
};




+1 −1
Original line number Original line Diff line number Diff line
@@ -161,7 +161,7 @@ static int __devinit i82092aa_pci_probe(struct pci_dev *dev, const struct pci_de
	pci_set_drvdata(dev, &sockets[i].socket);
	pci_set_drvdata(dev, &sockets[i].socket);


	for (i = 0; i<socket_count; i++) {
	for (i = 0; i<socket_count; i++) {
		sockets[i].socket.dev.dev = &dev->dev;
		sockets[i].socket.dev.parent = &dev->dev;
		sockets[i].socket.ops = &i82092aa_operations;
		sockets[i].socket.ops = &i82092aa_operations;
		sockets[i].socket.resource_ops = &pccard_nonstatic_ops;
		sockets[i].socket.resource_ops = &pccard_nonstatic_ops;
		ret = pcmcia_register_socket(&sockets[i].socket);
		ret = pcmcia_register_socket(&sockets[i].socket);
+1 −1
Original line number Original line Diff line number Diff line
@@ -1298,7 +1298,7 @@ static int __init init_i82365(void)
    
    
    /* register sockets with the pcmcia core */
    /* register sockets with the pcmcia core */
    for (i = 0; i < sockets; i++) {
    for (i = 0; i < sockets; i++) {
	    socket[i].socket.dev.dev = &i82365_device->dev;
	    socket[i].socket.dev.parent = &i82365_device->dev;
	    socket[i].socket.ops = &pcic_operations;
	    socket[i].socket.ops = &pcic_operations;
	    socket[i].socket.resource_ops = &pccard_nonstatic_ops;
	    socket[i].socket.resource_ops = &pccard_nonstatic_ops;
	    socket[i].socket.owner = THIS_MODULE;
	    socket[i].socket.owner = THIS_MODULE;
Loading