[PATCH 15/15] sas_ata: Make this a module separate from libsas

Darrick J. Wong
2006-11-17T21:02:05Z

Break out sas_ata as a free-standing module that provides a SATA
Translation Layer (SATL) for libsas. This patch requires the libsas
SATL registration patch; the changes to sas_ata itself are rather
minor.

Signed-off-by: Darrick J. Wong <djwong@us.ibm.com>
---

drivers/scsi/libsas/Makefile | 5 +++--
drivers/scsi/libsas/sas_ata.c | 34 ++++++++++++++++++++++++++++++++--
2 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/libsas/Makefile b/drivers/scsi/libsas/Makefile
index 6383eb5..5e95902 100644
--- a/drivers/scsi/libsas/Makefile
+++ b/drivers/scsi/libsas/Makefile
@@ -33,5 +33,6 @@ libsas-y += sas_init.o \
sas_dump.o \
sas_discover.o \
sas_expander.o \
- sas_scsi_host.o \
- sas_ata.o
+ sas_scsi_host.o
+
+obj-$(CONFIG_SCSI_SAS_SATL) += sas_ata.o
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
index 7338775..bfaee88 100644
--- a/drivers/scsi/libsas/sas_ata.c
+++ b/drivers/scsi/libsas/sas_ata.c
@@ -398,8 +398,8 @@ static struct ata_port_info sata_port_in
.port_ops = &sas_sata_ops
};

-int sas_ata_init_host_and_port(struct domain_device *found_dev,
- struct scsi_target *starget)
+static int sas_ata_init_host_and_port(struct domain_device *found_dev,
+ struct scsi_target *starget)
{
struct Scsi_Host *shost = dev_to_shost(&starget->dev);
struct sas_ha_struct *ha = SHOST_TO_SAS_HA(shost);
@@ -424,3 +424,33 @@ int sas_ata_init_host_and_port(struct do

return 0;
}
+
+/* Module initialization */
+static struct satl_operations sas_ata_ops = {
+ .owner = THIS_MODULE,
+ .init_target = sas_ata_init_host_and_port,
+ .queuecommand = ata_sas_queuecmd,
+ .ioctl = ata_scsi_ioctl,
+ .configure_port = ata_sas_slave_configure,
+ .deactivate_port = ata_port_disable,
+ .destroy_port = ata_sas_port_destroy,
+ .init_port = ata_sas_port_init
+};
+
+static int __init sas_ata_init(void)
+{
+ return sas_register_satl(&sas_ata_ops);
+}
+
+static void __exit sas_ata_exit(void)
+{
+ sas_unregister_satl(&sas_ata_ops);
+}
+
+module_init(sas_ata_init);
+module_exit(sas_ata_exit);
+
+MODULE_AUTHOR("Darrick Wong <djwong@us.ibm.com>");
+MODULE_DESCRIPTION("libata SATL for SAS");
+MODULE_LICENSE("GPL v2");
+MODULE_VERSION("1.0");