Lines Matching refs:sh
182 static int fdomain_select(struct Scsi_Host *sh, int target)
186 struct fdomain *fd = shost_priv(sh);
189 outb(BIT(sh->this_id) | BIT(target), fd->base + REG_SCSI_DATA_NOACK);
268 struct Scsi_Host *sh = container_of((void *)fd, struct Scsi_Host,
276 spin_lock_irqsave(sh->host_lock, flags);
383 spin_unlock_irqrestore(sh->host_lock, flags);
405 static int fdomain_queue(struct Scsi_Host *sh, struct scsi_cmnd *cmd)
418 spin_lock_irqsave(sh->host_lock, flags);
433 spin_unlock_irqrestore(sh->host_lock, flags);
440 struct Scsi_Host *sh = cmd->device->host;
441 struct fdomain *fd = shost_priv(sh);
447 spin_lock_irqsave(sh->host_lock, flags);
455 spin_unlock_irqrestore(sh->host_lock, flags);
461 struct Scsi_Host *sh = cmd->device->host;
462 struct fdomain *fd = shost_priv(sh);
465 spin_lock_irqsave(sh->host_lock, flags);
467 spin_unlock_irqrestore(sh->host_lock, flags);
517 struct Scsi_Host *sh;
539 sh = scsi_host_alloc(&fdomain_template, sizeof(struct fdomain));
540 if (!sh)
544 sh->this_id = this_id & 0x07;
546 sh->irq = irq;
547 sh->io_port = base;
548 sh->n_io_port = FDOMAIN_REGION_SIZE;
550 fd = shost_priv(sh);
561 shost_printk(KERN_INFO, sh, "%s chip at 0x%x irq %d SCSI ID %d\n",
563 base, irq, sh->this_id);
565 if (scsi_add_host(sh, dev))
568 scsi_scan_host(sh);
570 return sh;
575 scsi_host_put(sh);
580 int fdomain_destroy(struct Scsi_Host *sh)
582 struct fdomain *fd = shost_priv(sh);
585 scsi_remove_host(sh);
586 if (sh->irq)
587 free_irq(sh->irq, fd);
588 scsi_host_put(sh);