static int esp_queuecommand(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
 {
        struct scsi_device *dev = cmd->device;
-       struct esp *esp = host_to_esp(dev->host);
+       struct esp *esp = shost_priv(dev->host);
        struct esp_cmd_priv *spriv;
        struct esp_cmd_entry *ent;
 
 
 static int esp_slave_alloc(struct scsi_device *dev)
 {
-       struct esp *esp = host_to_esp(dev->host);
+       struct esp *esp = shost_priv(dev->host);
        struct esp_target_data *tp = &esp->target[dev->id];
        struct esp_lun_data *lp;
 
 
 static int esp_slave_configure(struct scsi_device *dev)
 {
-       struct esp *esp = host_to_esp(dev->host);
+       struct esp *esp = shost_priv(dev->host);
        struct esp_target_data *tp = &esp->target[dev->id];
        int goal_tags, queue_depth;
 
 
 static int esp_eh_abort_handler(struct scsi_cmnd *cmd)
 {
-       struct esp *esp = host_to_esp(cmd->device->host);
+       struct esp *esp = shost_priv(cmd->device->host);
        struct esp_cmd_entry *ent, *tmp;
        struct completion eh_done;
        unsigned long flags;
 
 static int esp_eh_bus_reset_handler(struct scsi_cmnd *cmd)
 {
-       struct esp *esp = host_to_esp(cmd->device->host);
+       struct esp *esp = shost_priv(cmd->device->host);
        struct completion eh_reset;
        unsigned long flags;
 
 /* All bets are off, reset the entire device.  */
 static int esp_eh_host_reset_handler(struct scsi_cmnd *cmd)
 {
-       struct esp *esp = host_to_esp(cmd->device->host);
+       struct esp *esp = shost_priv(cmd->device->host);
        unsigned long flags;
 
        spin_lock_irqsave(esp->host->host_lock, flags);
 
 static void esp_get_signalling(struct Scsi_Host *host)
 {
-       struct esp *esp = host_to_esp(host);
+       struct esp *esp = shost_priv(host);
        enum spi_signal_type type;
 
        if (esp->flags & ESP_FLAG_DIFFERENTIAL)
 static void esp_set_offset(struct scsi_target *target, int offset)
 {
        struct Scsi_Host *host = dev_to_shost(target->dev.parent);
-       struct esp *esp = host_to_esp(host);
+       struct esp *esp = shost_priv(host);
        struct esp_target_data *tp = &esp->target[target->id];
 
        tp->nego_goal_offset = offset;
 static void esp_set_period(struct scsi_target *target, int period)
 {
        struct Scsi_Host *host = dev_to_shost(target->dev.parent);
-       struct esp *esp = host_to_esp(host);
+       struct esp *esp = shost_priv(host);
        struct esp_target_data *tp = &esp->target[target->id];
 
        tp->nego_goal_period = period;
 static void esp_set_width(struct scsi_target *target, int width)
 {
        struct Scsi_Host *host = dev_to_shost(target->dev.parent);
-       struct esp *esp = host_to_esp(host);
+       struct esp *esp = shost_priv(host);
        struct esp_target_data *tp = &esp->target[target->id];
 
        tp->nego_goal_width = (width ? 1 : 0);