mirror of https://gitee.com/openkylin/linux.git
[SCSI] qla2xxx: Correct resource_size_t usages.
Hmm, it looks like the conversion to resource_size_t usage
(3776541d8a
) 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>
This commit is contained in:
parent
4c85187931
commit
948882f6b7
|
@ -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(®->gpioe);
|
||||
gpio_data = RD_REG_WORD_PIO(®->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(®->gpioe);
|
||||
gpio_data = RD_REG_WORD(®->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(®->gpioe, gpio_enable);
|
||||
WRT_REG_WORD_PIO(PIO_REG(ha, gpioe), gpio_enable);
|
||||
} else {
|
||||
WRT_REG_WORD(®->gpioe, gpio_enable);
|
||||
RD_REG_WORD(®->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(®->gpiod, gpio_data);
|
||||
WRT_REG_WORD_PIO(PIO_REG(ha, gpiod), gpio_data);
|
||||
} else {
|
||||
WRT_REG_WORD(®->gpiod, gpio_data);
|
||||
RD_REG_WORD(®->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(®->gpioe);
|
||||
gpio_data = RD_REG_WORD_PIO(®->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(®->gpioe);
|
||||
gpio_data = RD_REG_WORD(®->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(®->gpioe, gpio_enable);
|
||||
WRT_REG_WORD_PIO(PIO_REG(ha, gpioe), gpio_enable);
|
||||
} else {
|
||||
WRT_REG_WORD(®->gpioe, gpio_enable);
|
||||
RD_REG_WORD(®->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(®->gpiod, gpio_data);
|
||||
WRT_REG_WORD_PIO(PIO_REG(ha, gpiod), gpio_data);
|
||||
} else {
|
||||
WRT_REG_WORD(®->gpiod, gpio_data);
|
||||
RD_REG_WORD(®->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(®->flash_address, (uint16_t)addr);
|
||||
WRT_REG_WORD_PIO(PIO_REG(ha, flash_address), (uint16_t)addr);
|
||||
do {
|
||||
data = RD_REG_WORD_PIO(®->flash_data);
|
||||
data = RD_REG_WORD_PIO(PIO_REG(ha, flash_data));
|
||||
barrier();
|
||||
cpu_relax();
|
||||
data2 = RD_REG_WORD_PIO(®->flash_data);
|
||||
data2 = RD_REG_WORD_PIO(PIO_REG(ha, flash_data));
|
||||
} while (data != data2);
|
||||
} else {
|
||||
WRT_REG_WORD(®->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(®->flash_address, (uint16_t)addr);
|
||||
WRT_REG_WORD_PIO(®->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(®->flash_address, (uint16_t)addr);
|
||||
RD_REG_WORD(®->ctrl_status); /* PCI Posting. */
|
||||
|
|
Loading…
Reference in New Issue