[SCSI] bfa: sg addr big endian fix

sg address in IO request is not set up correctly for big endian platform.
add new macros to properly swap the address.

Signed-off-by: Jing Huang <huangj@brocade.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
diff --git a/drivers/scsi/bfa/bfa_ioim.c b/drivers/scsi/bfa/bfa_ioim.c
index 8a1be20..687f3d6 100644
--- a/drivers/scsi/bfa/bfa_ioim.c
+++ b/drivers/scsi/bfa/bfa_ioim.c
@@ -758,7 +758,7 @@
 	sge = &m->sges[0];
 	if (ioim->nsges) {
 		sg = (struct scatterlist *)scsi_sglist(cmnd);
-		addr = (u64) sg_dma_address(sg);
+		addr = bfa_os_sgaddr(sg_dma_address(sg));
 		sge->sga = *(union bfi_addr_u *) &addr;
 		pgdlen = sg_dma_len(sg);
 		sge->sg_len = pgdlen;
@@ -891,7 +891,7 @@
 
 		pgcumsz = 0;
 		for (i = 0; i < nsges; i++, sge++, sgeid++, sg = sg_next(sg)) {
-			addr = (u64) sg_dma_address(sg);
+			addr = bfa_os_sgaddr(sg_dma_address(sg));
 			sge->sga = *(union bfi_addr_u *) &addr;
 			sge->sg_len = sg_dma_len(sg);
 			pgcumsz += sge->sg_len;