Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f13fd57 authored by Andrew Vasquez's avatar Andrew Vasquez Committed by James Bottomley
Browse files

[SCSI] qla2xxx: Wait for FLASH write-protection to complete after a write.



Some flash parts have a slow enable write-protection (WP)
operation whereby subsequent FLASH accesses would fail if the WP
operation had not completed.  Software now polls the SPI's
status-register for WP completion.

Signed-off-by: default avatarAndrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent 3776541d
Loading
Loading
Loading
Loading
+8 −2
Original line number Original line Diff line number Diff line
@@ -550,7 +550,7 @@ qla24xx_write_flash_data(scsi_qla_host_t *ha, uint32_t *dwptr, uint32_t faddr,
	int ret;
	int ret;
	uint32_t liter, miter;
	uint32_t liter, miter;
	uint32_t sec_mask, rest_addr, conf_addr;
	uint32_t sec_mask, rest_addr, conf_addr;
	uint32_t fdata, findex ;
	uint32_t fdata, findex, cnt;
	uint8_t	man_id, flash_id;
	uint8_t	man_id, flash_id;
	struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
	struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
	dma_addr_t optrom_dma;
	dma_addr_t optrom_dma;
@@ -690,8 +690,14 @@ qla24xx_write_flash_data(scsi_qla_host_t *ha, uint32_t *dwptr, uint32_t faddr,
			    0xff0000) | ((fdata >> 16) & 0xff));
			    0xff0000) | ((fdata >> 16) & 0xff));
	}
	}


	/* Enable flash write-protection. */
	/* Enable flash write-protection and wait for completion. */
	qla24xx_write_flash_dword(ha, flash_conf_to_access_addr(0x101), 0x9c);
	qla24xx_write_flash_dword(ha, flash_conf_to_access_addr(0x101), 0x9c);
	for (cnt = 300; cnt &&
	    qla24xx_read_flash_dword(ha,
		    flash_conf_to_access_addr(0x005)) & BIT_0;
	    cnt--) {
		udelay(10);
	}


	/* Disable flash write. */
	/* Disable flash write. */
	WRT_REG_DWORD(&reg->ctrl_status,
	WRT_REG_DWORD(&reg->ctrl_status,