From: Dominik Brodowski make pcmcia_bus_socket->state a bitfield, and rename it pcmcia_state to prepare for struct pcmcia_bus_socket integration into struct pcmcia_socket. Signed-off-by: Dominik Brodowski Signed-off-by: Andrew Morton --- 25-akpm/drivers/pcmcia/ds.c | 12 ++++++------ 25-akpm/drivers/pcmcia/ds_internal.h | 14 ++++++++------ 25-akpm/drivers/pcmcia/pcmcia_ioctl.c | 12 ++++++------ 3 files changed, 20 insertions(+), 18 deletions(-) diff -puN drivers/pcmcia/ds.c~pcmcia-make-pcmcia-status-a-bitfield drivers/pcmcia/ds.c --- 25/drivers/pcmcia/ds.c~pcmcia-make-pcmcia-status-a-bitfield 2005-03-20 15:59:36.000000000 -0800 +++ 25-akpm/drivers/pcmcia/ds.c 2005-03-20 15:59:36.000000000 -0800 @@ -622,14 +622,14 @@ static void pcmcia_delayed_add_pseudo_de { struct pcmcia_bus_socket *s = data; pcmcia_device_add(s, 0); - s->device_add_pending = 0; + s->pcmcia_state.device_add_pending = 0; } static inline void pcmcia_add_pseudo_device(struct pcmcia_bus_socket *s) { - if (!s->device_add_pending) { + if (!s->pcmcia_state.device_add_pending) { schedule_work(&s->device_add); - s->device_add_pending = 1; + s->pcmcia_state.device_add_pending = 1; } return; } @@ -980,14 +980,14 @@ static int ds_event(struct pcmcia_socket switch (event) { case CS_EVENT_CARD_REMOVAL: - s->state &= ~DS_SOCKET_PRESENT; + s->pcmcia_state.present = 0; send_event(skt, event, priority); unbind_request(s); handle_event(s, event); break; case CS_EVENT_CARD_INSERTION: - s->state |= DS_SOCKET_PRESENT; + s->pcmcia_state.present = 1; pcmcia_card_add(skt); handle_event(s, event); break; @@ -1228,7 +1228,7 @@ static void pcmcia_bus_remove_socket(str pccard_register_pcmcia(socket, NULL); - socket->pcmcia->state |= DS_SOCKET_DEAD; + socket->pcmcia->pcmcia_state.dead = 1; pcmcia_put_bus_socket(socket->pcmcia); socket->pcmcia = NULL; diff -puN drivers/pcmcia/ds_internal.h~pcmcia-make-pcmcia-status-a-bitfield drivers/pcmcia/ds_internal.h --- 25/drivers/pcmcia/ds_internal.h~pcmcia-make-pcmcia-status-a-bitfield 2005-03-20 15:59:36.000000000 -0800 +++ 25-akpm/drivers/pcmcia/ds_internal.h 2005-03-20 15:59:36.000000000 -0800 @@ -5,7 +5,6 @@ struct user_info_t; /* Socket state information */ struct pcmcia_bus_socket { struct kref refcount; - int state; struct pcmcia_socket *parent; /* the PCMCIA devices connected to this socket (normally one, more @@ -15,7 +14,14 @@ struct pcmcia_bus_socket { * only internally and subject * to incorrectness and change */ - u8 device_add_pending; + struct { + u8 present:1, + busy:1, + dead:1, + device_add_pending:1, + reserved:4; + } pcmcia_state; + struct work_struct device_add; @@ -29,10 +35,6 @@ extern spinlock_t pcmcia_dev_list_lock; extern struct bus_type pcmcia_bus_type; -#define DS_SOCKET_PRESENT 0x01 -#define DS_SOCKET_BUSY 0x02 -#define DS_SOCKET_DEAD 0x80 - extern struct pcmcia_device * pcmcia_get_dev(struct pcmcia_device *p_dev); extern void pcmcia_put_dev(struct pcmcia_device *p_dev); diff -puN drivers/pcmcia/pcmcia_ioctl.c~pcmcia-make-pcmcia-status-a-bitfield drivers/pcmcia/pcmcia_ioctl.c --- 25/drivers/pcmcia/pcmcia_ioctl.c~pcmcia-make-pcmcia-status-a-bitfield 2005-03-20 15:59:36.000000000 -0800 +++ 25-akpm/drivers/pcmcia/pcmcia_ioctl.c 2005-03-20 15:59:36.000000000 -0800 @@ -404,12 +404,12 @@ static int ds_open(struct inode *inode, return -ENODEV; if ((file->f_flags & O_ACCMODE) != O_RDONLY) { - if (s->state & DS_SOCKET_BUSY) { + if (s->pcmcia_state.busy) { pcmcia_put_bus_socket(s); return -EBUSY; } else - s->state |= DS_SOCKET_BUSY; + s->pcmcia_state.busy = 1; } user = kmalloc(sizeof(user_info_t), GFP_KERNEL); @@ -424,7 +424,7 @@ static int ds_open(struct inode *inode, s->user = user; file->private_data = user; - if (s->state & DS_SOCKET_PRESENT) + if (s->pcmcia_state.present) queue_event(user, CS_EVENT_CARD_INSERTION); return 0; } /* ds_open */ @@ -446,7 +446,7 @@ static int ds_release(struct inode *inod /* Unlink user data structure */ if ((file->f_flags & O_ACCMODE) != O_RDONLY) { - s->state &= ~DS_SOCKET_BUSY; + s->pcmcia_state.busy = 0; } file->private_data = NULL; for (link = &s->user; *link; link = &(*link)->next) @@ -480,7 +480,7 @@ static ssize_t ds_read(struct file *file return -EIO; s = user->socket; - if (s->state & DS_SOCKET_DEAD) + if (s->pcmcia_state.dead) return -EIO; ret = wait_event_interruptible(s->queue, !queue_empty(user)); @@ -550,7 +550,7 @@ static int ds_ioctl(struct inode * inode return -EIO; s = user->socket; - if (s->state & DS_SOCKET_DEAD) + if (s->pcmcia_state.dead) return -EIO; size = (cmd & IOCSIZE_MASK) >> IOCSIZE_SHIFT; _