Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=948882f6b72a95dd76c6c567a45dfe91b7d04c15
Commit:     948882f6b72a95dd76c6c567a45dfe91b7d04c15
Parent:     4c851879312702456c7fbd594f19a7a9d991c252
Author:     Andrew Vasquez <[EMAIL PROTECTED]>
AuthorDate: Thu Jan 31 12:33:44 2008 -0800
Committer:  James Bottomley <[EMAIL PROTECTED]>
CommitDate: Thu Feb 7 18:02:38 2008 -0600

    [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 <[EMAIL PROTECTED]>
    Signed-off-by: James Bottomley <[EMAIL PROTECTED]>
---
 drivers/scsi/qla2xxx/qla_sup.c |   36 +++++++++++++++---------------------
 1 files changed, 15 insertions(+), 21 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_sup.c b/drivers/scsi/qla2xxx/qla_sup.c
index b68fb73..26822c8 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)
        }
 }
 
+#define PIO_REG(h, r) ((h)->pio_address + offsetof(struct device_reg_2xxx, r))
+
 void
 qla2x00_beacon_blink(struct scsi_qla_host *ha)
 {
@@ -902,15 +904,12 @@ qla2x00_beacon_blink(struct scsi_qla_host *ha)
        unsigned long flags;
        struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
 
-       if (ha->pio_address)
-               reg = (struct device_reg_2xxx __iomem *)ha->pio_address;
-
        spin_lock_irqsave(&ha->hardware_lock, flags);
 
        /* Save the Original GPIOE. */
        if (ha->pio_address) {
-               gpio_enable = RD_REG_WORD_PIO(&reg->gpioe);
-               gpio_data = RD_REG_WORD_PIO(&reg->gpiod);
+               gpio_enable = RD_REG_WORD_PIO(PIO_REG(ha, gpioe));
+               gpio_data = RD_REG_WORD_PIO(PIO_REG(ha, gpiod));
        } else {
                gpio_enable = RD_REG_WORD(&reg->gpioe);
                gpio_data = RD_REG_WORD(&reg->gpiod);
@@ -920,7 +919,7 @@ qla2x00_beacon_blink(struct scsi_qla_host *ha)
        gpio_enable |= GPIO_LED_MASK;
 
        if (ha->pio_address) {
-               WRT_REG_WORD_PIO(&reg->gpioe, gpio_enable);
+               WRT_REG_WORD_PIO(PIO_REG(ha, gpioe), gpio_enable);
        } else {
                WRT_REG_WORD(&reg->gpioe, gpio_enable);
                RD_REG_WORD(&reg->gpioe);
@@ -936,7 +935,7 @@ qla2x00_beacon_blink(struct scsi_qla_host *ha)
 
        /* Set the modified gpio_data values */
        if (ha->pio_address) {
-               WRT_REG_WORD_PIO(&reg->gpiod, gpio_data);
+               WRT_REG_WORD_PIO(PIO_REG(ha, gpiod), gpio_data);
        } else {
                WRT_REG_WORD(&reg->gpiod, gpio_data);
                RD_REG_WORD(&reg->gpiod);
@@ -962,14 +961,11 @@ qla2x00_beacon_on(struct scsi_qla_host *ha)
                return QLA_FUNCTION_FAILED;
        }
 
-       if (ha->pio_address)
-               reg = (struct device_reg_2xxx __iomem *)ha->pio_address;
-
        /* Turn off LEDs. */
        spin_lock_irqsave(&ha->hardware_lock, flags);
        if (ha->pio_address) {
-               gpio_enable = RD_REG_WORD_PIO(&reg->gpioe);
-               gpio_data = RD_REG_WORD_PIO(&reg->gpiod);
+               gpio_enable = RD_REG_WORD_PIO(PIO_REG(ha, gpioe));
+               gpio_data = RD_REG_WORD_PIO(PIO_REG(ha, gpiod));
        } else {
                gpio_enable = RD_REG_WORD(&reg->gpioe);
                gpio_data = RD_REG_WORD(&reg->gpiod);
@@ -978,7 +974,7 @@ qla2x00_beacon_on(struct scsi_qla_host *ha)
 
        /* Set the modified gpio_enable values. */
        if (ha->pio_address) {
-               WRT_REG_WORD_PIO(&reg->gpioe, gpio_enable);
+               WRT_REG_WORD_PIO(PIO_REG(ha, gpioe), gpio_enable);
        } else {
                WRT_REG_WORD(&reg->gpioe, gpio_enable);
                RD_REG_WORD(&reg->gpioe);
@@ -987,7 +983,7 @@ qla2x00_beacon_on(struct scsi_qla_host *ha)
        /* Clear out previously set LED colour. */
        gpio_data &= ~GPIO_LED_MASK;
        if (ha->pio_address) {
-               WRT_REG_WORD_PIO(&reg->gpiod, gpio_data);
+               WRT_REG_WORD_PIO(PIO_REG(ha, gpiod), gpio_data);
        } else {
                WRT_REG_WORD(&reg->gpiod, gpio_data);
                RD_REG_WORD(&reg->gpiod);
@@ -1244,13 +1240,12 @@ qla2x00_read_flash_byte(scsi_qla_host_t *ha, uint32_t 
addr)
        if (ha->pio_address) {
                uint16_t data2;
 
-               reg = (struct device_reg_2xxx __iomem *)ha->pio_address;
-               WRT_REG_WORD_PIO(&reg->flash_address, (uint16_t)addr);
+               WRT_REG_WORD_PIO(PIO_REG(ha, flash_address), (uint16_t)addr);
                do {
-                       data = RD_REG_WORD_PIO(&reg->flash_data);
+                       data = RD_REG_WORD_PIO(PIO_REG(ha, flash_data));
                        barrier();
                        cpu_relax();
-                       data2 = RD_REG_WORD_PIO(&reg->flash_data);
+                       data2 = RD_REG_WORD_PIO(PIO_REG(ha, flash_data));
                } while (data != data2);
        } else {
                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)
 
        /* Always perform IO mapped accesses to the FLASH registers. */
        if (ha->pio_address) {
-               reg = (struct device_reg_2xxx __iomem *)ha->pio_address;
-               WRT_REG_WORD_PIO(&reg->flash_address, (uint16_t)addr);
-               WRT_REG_WORD_PIO(&reg->flash_data, (uint16_t)data);
+               WRT_REG_WORD_PIO(PIO_REG(ha, flash_address), (uint16_t)addr);
+               WRT_REG_WORD_PIO(PIO_REG(ha, flash_data), (uint16_t)data);
        } else {
                WRT_REG_WORD(&reg->flash_address, (uint16_t)addr);
                RD_REG_WORD(&reg->ctrl_status);         /* PCI Posting. */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to