aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorjack wang <jack_wang@usish.com>2009-12-07 04:22:47 -0500
committerJames Bottomley <James.Bottomley@suse.de>2009-12-10 11:02:22 -0500
commitafc5ca9ddc6c223dbea8a2f8816a88b21a0883b5 (patch)
tree776fa8c54e07ed3ad5b5c23b92f14db4e3822101 /drivers
parent1cc943ae5003e4612a73119cb6fb637a45c2714d (diff)
[SCSI] pm8001: fix endian issues with SAS address
Signed-off-by: Jack Wang <jack_wang@usish.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/pm8001/pm8001_hwi.c7
-rw-r--r--drivers/scsi/pm8001/pm8001_hwi.h3
2 files changed, 5 insertions, 5 deletions
diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c
index 3a121fbd4fc5..b4426b5b50bc 100644
--- a/drivers/scsi/pm8001/pm8001_hwi.c
+++ b/drivers/scsi/pm8001/pm8001_hwi.c
@@ -3823,7 +3823,8 @@ static int pm8001_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha,
3823 u32 opc = OPC_INB_SSPINIIOSTART; 3823 u32 opc = OPC_INB_SSPINIIOSTART;
3824 memset(&ssp_cmd, 0, sizeof(ssp_cmd)); 3824 memset(&ssp_cmd, 0, sizeof(ssp_cmd));
3825 memcpy(ssp_cmd.ssp_iu.lun, task->ssp_task.LUN, 8); 3825 memcpy(ssp_cmd.ssp_iu.lun, task->ssp_task.LUN, 8);
3826 ssp_cmd.dir_m_tlr = data_dir_flags[task->data_dir] << 8 | 0x0;/*0 for 3826 ssp_cmd.dir_m_tlr =
3827 cpu_to_le32(data_dir_flags[task->data_dir] << 8 | 0x0);/*0 for
3827 SAS 1.1 compatible TLR*/ 3828 SAS 1.1 compatible TLR*/
3828 ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len); 3829 ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len);
3829 ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id); 3830 ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id);
@@ -3894,7 +3895,7 @@ static int pm8001_chip_sata_req(struct pm8001_hba_info *pm8001_ha,
3894 } 3895 }
3895 } 3896 }
3896 if (task->ata_task.use_ncq && pm8001_get_ncq_tag(task, &hdr_tag)) 3897 if (task->ata_task.use_ncq && pm8001_get_ncq_tag(task, &hdr_tag))
3897 ncg_tag = cpu_to_le32(hdr_tag); 3898 ncg_tag = hdr_tag;
3898 dir = data_dir_flags[task->data_dir] << 8; 3899 dir = data_dir_flags[task->data_dir] << 8;
3899 sata_cmd.tag = cpu_to_le32(tag); 3900 sata_cmd.tag = cpu_to_le32(tag);
3900 sata_cmd.device_id = cpu_to_le32(pm8001_ha_dev->device_id); 3901 sata_cmd.device_id = cpu_to_le32(pm8001_ha_dev->device_id);
@@ -4039,7 +4040,7 @@ static int pm8001_chip_reg_dev_req(struct pm8001_hba_info *pm8001_ha,
4039 ((stp_sspsmp_sata & 0x03) * 0x10000000)); 4040 ((stp_sspsmp_sata & 0x03) * 0x10000000));
4040 payload.firstburstsize_ITNexustimeout = 4041 payload.firstburstsize_ITNexustimeout =
4041 cpu_to_le32(ITNT | (firstBurstSize * 0x10000)); 4042 cpu_to_le32(ITNT | (firstBurstSize * 0x10000));
4042 memcpy(&payload.sas_addr_hi, pm8001_dev->sas_device->sas_addr, 4043 memcpy(payload.sas_addr, pm8001_dev->sas_device->sas_addr,
4043 SAS_ADDR_SIZE); 4044 SAS_ADDR_SIZE);
4044 rc = mpi_build_cmd(pm8001_ha, circularQ, opc, &payload); 4045 rc = mpi_build_cmd(pm8001_ha, circularQ, opc, &payload);
4045 return rc; 4046 return rc;
diff --git a/drivers/scsi/pm8001/pm8001_hwi.h b/drivers/scsi/pm8001/pm8001_hwi.h
index 96e4daa68b8f..833a5201eda4 100644
--- a/drivers/scsi/pm8001/pm8001_hwi.h
+++ b/drivers/scsi/pm8001/pm8001_hwi.h
@@ -242,8 +242,7 @@ struct reg_dev_req {
242 __le32 phyid_portid; 242 __le32 phyid_portid;
243 __le32 dtype_dlr_retry; 243 __le32 dtype_dlr_retry;
244 __le32 firstburstsize_ITNexustimeout; 244 __le32 firstburstsize_ITNexustimeout;
245 u32 sas_addr_hi; 245 u8 sas_addr[SAS_ADDR_SIZE];
246 u32 sas_addr_low;
247 __le32 upper_device_id; 246 __le32 upper_device_id;
248 u32 reserved[8]; 247 u32 reserved[8];
249} __attribute__((packed, aligned(4))); 248} __attribute__((packed, aligned(4)));