To read pid/cid registers, the probed device need to be properly turned on. When it is inside a power domain, the bus code should ensure that the given power domain is enabled before trying to access device's registers. Signed-off-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> --- drivers/amba/bus.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c index 72ebf9b..4fc1976 100644 --- a/drivers/amba/bus.c +++ b/drivers/amba/bus.c @@ -364,6 +364,10 @@ static int read_periphid(struct amba_device *d, unsigned int *periphid) if (!tmp) return -ENOMEM; + ret = dev_pm_domain_attach(&d->dev, true); + if (ret == -EPROBE_DEFER) + goto err_unmap; + ret = amba_get_enable_pclk(d); if (ret == 0) { u32 pid, cid; @@ -388,6 +392,8 @@ static int read_periphid(struct amba_device *d, unsigned int *periphid) ret = -ENODEV; } + dev_pm_domain_detach(&d->dev, true); +err_unmap: iounmap(tmp); return ret; -- 1.9.2 -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html