}
  
  
- static void pcmcia_delayed_add_pseudo_device(struct work_struct *work)
 -static void pcmcia_delayed_add_device(void *data)
++static void pcmcia_delayed_add_device(struct work_struct *work)
  {
 -      struct pcmcia_socket *s = data;
 +      struct pcmcia_socket *s =
 +              container_of(work, struct pcmcia_socket, device_add);
-       pcmcia_device_add(s, 0);
+       ds_dbg(1, "adding additional device to %d\n", s->sock);
+       pcmcia_device_add(s, s->pcmcia_state.mfc_pfc);
        s->pcmcia_state.device_add_pending = 0;
+       s->pcmcia_state.mfc_pfc = 0;
  }
  
  static int pcmcia_requery(struct device *dev, void * _data)
        init_waitqueue_head(&socket->queue);
  #endif
        INIT_LIST_HEAD(&socket->devices_list);
-       INIT_WORK(&socket->device_add, pcmcia_delayed_add_pseudo_device);
 -      INIT_WORK(&socket->device_add, pcmcia_delayed_add_device, socket);
++      INIT_WORK(&socket->device_add, pcmcia_delayed_add_device);
        memset(&socket->pcmcia_state, 0, sizeof(u8));
        socket->device_count = 0;
  
 
   * the mid-level tries to sleep when it reaches the driver threshold
   * "host->can_queue". This can cause a panic if we were in our interrupt code.
   **/
 -static void qla4xxx_do_dpc(void *data)
 +static void qla4xxx_do_dpc(struct work_struct *work)
  {
 -      struct scsi_qla_host *ha = (struct scsi_qla_host *) data;
 +      struct scsi_qla_host *ha =
 +              container_of(work, struct scsi_qla_host, dpc_work);
        struct ddb_entry *ddb_entry, *dtemp;
  
-       DEBUG2(printk("scsi%ld: %s: DPC handler waking up.\n",
-                     ha->host_no, __func__));
- 
-       DEBUG2(printk("scsi%ld: %s: ha->flags = 0x%08lx\n",
-                     ha->host_no, __func__, ha->flags));
-       DEBUG2(printk("scsi%ld: %s: ha->dpc_flags = 0x%08lx\n",
-                     ha->host_no, __func__, ha->dpc_flags));
+       DEBUG2(printk("scsi%ld: %s: DPC handler waking up."
+               "flags = 0x%08lx, dpc_flags = 0x%08lx\n",
+               ha->host_no, __func__, ha->flags, ha->dpc_flags));
  
        /* Initialization not yet finished. Don't do anything yet. */
        if (!test_bit(AF_INIT_DONE, &ha->flags))