Ashwin Chaugule wrote:
pcc_doorbell_vaddr = kcalloc(count, sizeof(void *), GFP_KERNEL);
... this is wrong. You're using readl() and writel() on this pointer, but it's not an iomem pointer, it's normal kernel memory. You need to delete your usage of readX, writeX on this pointer.
The acpi_os_ioremap() below should take care of that.
...
if (db_reg->space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY)
pcc_doorbell_vaddr[i] = acpi_os_ioremap(db_reg->address,
db_reg->bit_width/8);
Ah, I see. pcc_doorbell_vaddr[i] still needs to be an __iomem*, and the rest of the code needs to honor that.