Lines Matching refs:sh
177 static int fdomain_select(struct Scsi_Host *sh, int target)
181 struct fdomain *fd = shost_priv(sh);
184 outb(BIT(sh->this_id) | BIT(target), fd->base + REG_SCSI_DATA_NOACK);
264 struct Scsi_Host *sh = container_of((void *)fd, struct Scsi_Host,
271 spin_lock_irqsave(sh->host_lock, flags);
375 spin_unlock_irqrestore(sh->host_lock, flags);
397 static int fdomain_queue(struct Scsi_Host *sh, struct scsi_cmnd *cmd)
409 spin_lock_irqsave(sh->host_lock, flags);
424 spin_unlock_irqrestore(sh->host_lock, flags);
431 struct Scsi_Host *sh = cmd->device->host;
432 struct fdomain *fd = shost_priv(sh);
438 spin_lock_irqsave(sh->host_lock, flags);
446 spin_unlock_irqrestore(sh->host_lock, flags);
452 struct Scsi_Host *sh = cmd->device->host;
453 struct fdomain *fd = shost_priv(sh);
456 spin_lock_irqsave(sh->host_lock, flags);
458 spin_unlock_irqrestore(sh->host_lock, flags);
507 struct Scsi_Host *sh;
529 sh = scsi_host_alloc(&fdomain_template, sizeof(struct fdomain));
530 if (!sh)
534 sh->this_id = this_id & 0x07;
536 sh->irq = irq;
537 sh->io_port = base;
538 sh->n_io_port = FDOMAIN_REGION_SIZE;
540 fd = shost_priv(sh);
551 shost_printk(KERN_INFO, sh, "%s chip at 0x%x irq %d SCSI ID %d\n",
553 base, irq, sh->this_id);
555 if (scsi_add_host(sh, dev))
558 scsi_scan_host(sh);
560 return sh;
565 scsi_host_put(sh);
570 int fdomain_destroy(struct Scsi_Host *sh)
572 struct fdomain *fd = shost_priv(sh);
575 scsi_remove_host(sh);
576 if (sh->irq)
577 free_irq(sh->irq, fd);
578 scsi_host_put(sh);