aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2008-01-31 15:33:44 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-02-07 19:02:38 -0500
commit948882f6b72a95dd76c6c567a45dfe91b7d04c15 (patch)
tree4b959ae191d6a94a99169d446f3f4a392b3b23df
parent4c851879312702456c7fbd594f19a7a9d991c252 (diff)
[SCSI] qla2xxx: Correct resource_size_t usages.
Hmm, it looks like the conversion to resource_size_t usage (3776541d8a46347a4924353a192c6ce4a3d04e2e) requires some additional fixups to cleanup the structure-pointer castings used during IO mapped accesses to the chip. There's only a small number of locations, where the driver uses IO mapped accesses to the hardware, the patch below should take care of it without introducing to many structural changes to code flow. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
-rw-r--r--drivers/scsi/qla2xxx/qla_sup.c36
1 files changed, 15 insertions, 21 deletions
diff --git a/drivers/scsi/qla2xxx/qla_sup.c b/drivers/scsi/qla2xxx/qla_sup.c
index b68fb73613ed..26822c8807ee 100644
--- a/drivers/scsi/qla2xxx/qla_sup.c
+++ b/drivers/scsi/qla2xxx/qla_sup.c
@@ -893,6 +893,8 @@ qla2x00_flip_colors(scsi_qla_host_t *ha, uint16_t *pflags)
893 } 893 }
894} 894}
895 895
896#define PIO_REG(h, r) ((h)->pio_address + offsetof(struct device_reg_2xxx, r))
897
896void 898void
897qla2x00_beacon_blink(struct scsi_qla_host *ha) 899qla2x00_beacon_blink(struct scsi_qla_host *ha)
898{ 900{
@@ -902,15 +904,12 @@ qla2x00_beacon_blink(struct scsi_qla_host *ha)
902 unsigned long flags; 904 unsigned long flags;
903 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; 905 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
904 906
905 if (ha->pio_address)
906 reg = (struct device_reg_2xxx __iomem *)ha->pio_address;
907
908 spin_lock_irqsave(&ha->hardware_lock, flags); 907 spin_lock_irqsave(&ha->hardware_lock, flags);
909 908
910 /* Save the Original GPIOE. */ 909 /* Save the Original GPIOE. */
911 if (ha->pio_address) { 910 if (ha->pio_address) {
912 gpio_enable = RD_REG_WORD_PIO(&reg->gpioe); 911 gpio_enable = RD_REG_WORD_PIO(PIO_REG(ha, gpioe));
913 gpio_data = RD_REG_WORD_PIO(&reg->gpiod); 912 gpio_data = RD_REG_WORD_PIO(PIO_REG(ha, gpiod));
914 } else { 913 } else {
915 gpio_enable = RD_REG_WORD(&reg->gpioe); 914 gpio_enable = RD_REG_WORD(&reg->gpioe);
916 gpio_data = RD_REG_WORD(&reg->gpiod); 915 gpio_data = RD_REG_WORD(&reg->gpiod);
@@ -920,7 +919,7 @@ qla2x00_beacon_blink(struct scsi_qla_host *ha)
920 gpio_enable |= GPIO_LED_MASK; 919 gpio_enable |= GPIO_LED_MASK;
921 920
922 if (ha->pio_address) { 921 if (ha->pio_address) {
923 WRT_REG_WORD_PIO(&reg->gpioe, gpio_enable); 922 WRT_REG_WORD_PIO(PIO_REG(ha, gpioe), gpio_enable);
924 } else { 923 } else {
925 WRT_REG_WORD(&reg->gpioe, gpio_enable); 924 WRT_REG_WORD(&reg->gpioe, gpio_enable);
926 RD_REG_WORD(&reg->gpioe); 925 RD_REG_WORD(&reg->gpioe);
@@ -936,7 +935,7 @@ qla2x00_beacon_blink(struct scsi_qla_host *ha)
936 935
937 /* Set the modified gpio_data values */ 936 /* Set the modified gpio_data values */
938 if (ha->pio_address) { 937 if (ha->pio_address) {
939 WRT_REG_WORD_PIO(&reg->gpiod, gpio_data); 938 WRT_REG_WORD_PIO(PIO_REG(ha, gpiod), gpio_data);
940 } else { 939 } else {
941 WRT_REG_WORD(&reg->gpiod, gpio_data); 940 WRT_REG_WORD(&reg->gpiod, gpio_data);
942 RD_REG_WORD(&reg->gpiod); 941 RD_REG_WORD(&reg->gpiod);
@@ -962,14 +961,11 @@ qla2x00_beacon_on(struct scsi_qla_host *ha)
962 return QLA_FUNCTION_FAILED; 961 return QLA_FUNCTION_FAILED;
963 } 962 }
964 963
965 if (ha->pio_address)
966 reg = (struct device_reg_2xxx __iomem *)ha->pio_address;
967
968 /* Turn off LEDs. */ 964 /* Turn off LEDs. */
969 spin_lock_irqsave(&ha->hardware_lock, flags); 965 spin_lock_irqsave(&ha->hardware_lock, flags);
970 if (ha->pio_address) { 966 if (ha->pio_address) {
971 gpio_enable = RD_REG_WORD_PIO(&reg->gpioe); 967 gpio_enable = RD_REG_WORD_PIO(PIO_REG(ha, gpioe));
972 gpio_data = RD_REG_WORD_PIO(&reg->gpiod); 968 gpio_data = RD_REG_WORD_PIO(PIO_REG(ha, gpiod));
973 } else { 969 } else {
974 gpio_enable = RD_REG_WORD(&reg->gpioe); 970 gpio_enable = RD_REG_WORD(&reg->gpioe);
975 gpio_data = RD_REG_WORD(&reg->gpiod); 971 gpio_data = RD_REG_WORD(&reg->gpiod);
@@ -978,7 +974,7 @@ qla2x00_beacon_on(struct scsi_qla_host *ha)
978 974
979 /* Set the modified gpio_enable values. */ 975 /* Set the modified gpio_enable values. */
980 if (ha->pio_address) { 976 if (ha->pio_address) {
981 WRT_REG_WORD_PIO(&reg->gpioe, gpio_enable); 977 WRT_REG_WORD_PIO(PIO_REG(ha, gpioe), gpio_enable);
982 } else { 978 } else {
983 WRT_REG_WORD(&reg->gpioe, gpio_enable); 979 WRT_REG_WORD(&reg->gpioe, gpio_enable);
984 RD_REG_WORD(&reg->gpioe); 980 RD_REG_WORD(&reg->gpioe);
@@ -987,7 +983,7 @@ qla2x00_beacon_on(struct scsi_qla_host *ha)
987 /* Clear out previously set LED colour. */ 983 /* Clear out previously set LED colour. */
988 gpio_data &= ~GPIO_LED_MASK; 984 gpio_data &= ~GPIO_LED_MASK;
989 if (ha->pio_address) { 985 if (ha->pio_address) {
990 WRT_REG_WORD_PIO(&reg->gpiod, gpio_data); 986 WRT_REG_WORD_PIO(PIO_REG(ha, gpiod), gpio_data);
991 } else { 987 } else {
992 WRT_REG_WORD(&reg->gpiod, gpio_data); 988 WRT_REG_WORD(&reg->gpiod, gpio_data);
993 RD_REG_WORD(&reg->gpiod); 989 RD_REG_WORD(&reg->gpiod);
@@ -1244,13 +1240,12 @@ qla2x00_read_flash_byte(scsi_qla_host_t *ha, uint32_t addr)
1244 if (ha->pio_address) { 1240 if (ha->pio_address) {
1245 uint16_t data2; 1241 uint16_t data2;
1246 1242
1247 reg = (struct device_reg_2xxx __iomem *)ha->pio_address; 1243 WRT_REG_WORD_PIO(PIO_REG(ha, flash_address), (uint16_t)addr);
1248 WRT_REG_WORD_PIO(&reg->flash_address, (uint16_t)addr);
1249 do { 1244 do {
1250 data = RD_REG_WORD_PIO(&reg->flash_data); 1245 data = RD_REG_WORD_PIO(PIO_REG(ha, flash_data));
1251 barrier(); 1246 barrier();
1252 cpu_relax(); 1247 cpu_relax();
1253 data2 = RD_REG_WORD_PIO(&reg->flash_data); 1248 data2 = RD_REG_WORD_PIO(PIO_REG(ha, flash_data));
1254 } while (data != data2); 1249 } while (data != data2);
1255 } else { 1250 } else {
1256 WRT_REG_WORD(&reg->flash_address, (uint16_t)addr); 1251 WRT_REG_WORD(&reg->flash_address, (uint16_t)addr);
@@ -1304,9 +1299,8 @@ qla2x00_write_flash_byte(scsi_qla_host_t *ha, uint32_t addr, uint8_t data)
1304 1299
1305 /* Always perform IO mapped accesses to the FLASH registers. */ 1300 /* Always perform IO mapped accesses to the FLASH registers. */
1306 if (ha->pio_address) { 1301 if (ha->pio_address) {
1307 reg = (struct device_reg_2xxx __iomem *)ha->pio_address; 1302 WRT_REG_WORD_PIO(PIO_REG(ha, flash_address), (uint16_t)addr);
1308 WRT_REG_WORD_PIO(&reg->flash_address, (uint16_t)addr); 1303 WRT_REG_WORD_PIO(PIO_REG(ha, flash_data), (uint16_t)data);
1309 WRT_REG_WORD_PIO(&reg->flash_data, (uint16_t)data);
1310 } else { 1304 } else {
1311 WRT_REG_WORD(&reg->flash_address, (uint16_t)addr); 1305 WRT_REG_WORD(&reg->flash_address, (uint16_t)addr);
1312 RD_REG_WORD(&reg->ctrl_status); /* PCI Posting. */ 1306 RD_REG_WORD(&reg->ctrl_status); /* PCI Posting. */