}
 }
 
+static void ata_scsi_sdev_config(struct scsi_device *sdev)
+{
+       sdev->use_10_for_rw = 1;
+       sdev->use_10_for_ms = 1;
+}
+
+static void ata_scsi_dev_config(struct scsi_device *sdev,
+                               struct ata_device *dev)
+{
+       unsigned int max_sectors;
+
+       /* TODO: 2048 is an arbitrary number, not the
+        * hardware maximum.  This should be increased to
+        * 65534 when Jens Axboe's patch for dynamically
+        * determining max_sectors is merged.
+        */
+       max_sectors = ATA_MAX_SECTORS;
+       if (dev->flags & ATA_DFLAG_LBA48)
+               max_sectors = 2048;
+       if (dev->max_sectors)
+               max_sectors = dev->max_sectors;
+
+       blk_queue_max_sectors(sdev->request_queue, max_sectors);
+
+       /*
+        * SATA DMA transfers must be multiples of 4 byte, so
+        * we need to pad ATAPI transfers using an extra sg.
+        * Decrement max hw segments accordingly.
+        */
+       if (dev->class == ATA_DEV_ATAPI) {
+               request_queue_t *q = sdev->request_queue;
+               blk_queue_max_hw_segments(q, q->max_hw_segments - 1);
+       }
+}
+
 /**
  *     ata_scsi_slave_config - Set SCSI device attributes
  *     @sdev: SCSI device to examine
 
 int ata_scsi_slave_config(struct scsi_device *sdev)
 {
-       sdev->use_10_for_rw = 1;
-       sdev->use_10_for_ms = 1;
+       ata_scsi_sdev_config(sdev);
 
        blk_queue_max_phys_segments(sdev->request_queue, LIBATA_MAX_PRD);
 
        if (sdev->id < ATA_MAX_DEVICES) {
                struct ata_port *ap;
                struct ata_device *dev;
-               unsigned int max_sectors;
 
                ap = (struct ata_port *) &sdev->host->hostdata[0];
                dev = &ap->device[sdev->id];
 
-               /* TODO: 2048 is an arbitrary number, not the
-                * hardware maximum.  This should be increased to
-                * 65534 when Jens Axboe's patch for dynamically
-                * determining max_sectors is merged.
-                */
-               max_sectors = ATA_MAX_SECTORS;
-               if (dev->flags & ATA_DFLAG_LBA48)
-                       max_sectors = 2048;
-               if (dev->max_sectors)
-                       max_sectors = dev->max_sectors;
-
-               blk_queue_max_sectors(sdev->request_queue, max_sectors);
-
-               /*
-                * SATA DMA transfers must be multiples of 4 byte, so
-                * we need to pad ATAPI transfers using an extra sg.
-                * Decrement max hw segments accordingly.
-                */
-               if (dev->class == ATA_DEV_ATAPI) {
-                       request_queue_t *q = sdev->request_queue;
-                       blk_queue_max_hw_segments(q, q->max_hw_segments - 1);
-               }
+               ata_scsi_dev_config(sdev, dev);
        }
 
        return 0;       /* scsi layer doesn't check return value, sigh */