summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2019-05-20 08:32:11 -0700
committerTony Lindgren <tony@atomide.com>2019-05-20 08:32:11 -0700
commitf29f24b5568fd6169e0363c78f1a80db38d0e7e9 (patch)
tree835abaf6e1bb95b9d388f4249f355618e9da1489 /drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c
parent1ba12322e2f0934383f111a5e695702aaf46b812 (diff)
parent34b1b8061de3215208db9accfe60cc3f5b40178f (diff)
downloadtalos-op-linux-f29f24b5568fd6169e0363c78f1a80db38d0e7e9.tar.gz
talos-op-linux-f29f24b5568fd6169e0363c78f1a80db38d0e7e9.zip
Merge branch 'fixes-dra7' into fixes
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c
index 807a2b67bd64..ed50cc3736b9 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c
@@ -110,6 +110,19 @@ nvkm_i2c_bus_init(struct nvkm_i2c_bus *bus)
BUS_TRACE(bus, "init");
if (bus->func->init)
bus->func->init(bus);
+
+ mutex_lock(&bus->mutex);
+ bus->enabled = true;
+ mutex_unlock(&bus->mutex);
+}
+
+void
+nvkm_i2c_bus_fini(struct nvkm_i2c_bus *bus)
+{
+ BUS_TRACE(bus, "fini");
+ mutex_lock(&bus->mutex);
+ bus->enabled = false;
+ mutex_unlock(&bus->mutex);
}
void
@@ -126,9 +139,15 @@ nvkm_i2c_bus_acquire(struct nvkm_i2c_bus *bus)
{
struct nvkm_i2c_pad *pad = bus->pad;
int ret;
+
BUS_TRACE(bus, "acquire");
mutex_lock(&bus->mutex);
- ret = nvkm_i2c_pad_acquire(pad, NVKM_I2C_PAD_I2C);
+
+ if (bus->enabled)
+ ret = nvkm_i2c_pad_acquire(pad, NVKM_I2C_PAD_I2C);
+ else
+ ret = -EIO;
+
if (ret)
mutex_unlock(&bus->mutex);
return ret;
OpenPOWER on IntegriCloud