int nvhost_write_module_regs(struct nvhost_device *ndev, u32 offset, int count, const u32 *values) { void __iomem *p = ndev->aperture + offset; int err; /* verify offset */ err = validate_reg(ndev, offset, count); if (err) return err; nvhost_module_busy(ndev); while (count--) { writel(*(values++), p); p += 4; } wmb(); nvhost_module_idle(ndev); return 0; }
int nvhost_read_module_regs(struct platform_device *ndev, u32 offset, int count, u32 *values) { struct nvhost_device_data *pdata = platform_get_drvdata(ndev); void __iomem *p = pdata->aperture + offset; int err; /* verify offset */ err = validate_reg(ndev, offset, count); if (err) return err; nvhost_module_busy(ndev); while (count--) { *(values++) = readl(p); p += 4; } rmb(); nvhost_module_idle(ndev); return 0; }