summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2015-08-20 14:54:15 +1000
committerBen Skeggs <bskeggs@redhat.com>2015-08-28 12:37:36 +1000
commit27ea56048a610fff746afd278e0ed5c016ff56db (patch)
tree31bedb45f12b6d06f815454ef544294f632c92f4 /bin
parent7a8569d230f3b6f8a280a8e3fb605c824eae7232 (diff)
downloadnouveau-27ea56048a610fff746afd278e0ed5c016ff56db.tar.gz
i2c: transition pad/ports away from being based on nvkm_object
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'bin')
-rw-r--r--bin/nv_aux.c21
-rw-r--r--bin/nv_i2c.c50
2 files changed, 45 insertions, 26 deletions
diff --git a/bin/nv_aux.c b/bin/nv_aux.c
index f8b7c8022..743160c3e 100644
--- a/bin/nv_aux.c
+++ b/bin/nv_aux.c
@@ -7,9 +7,9 @@
#include <nvif/class.h>
static void
-print_chan(struct nvkm_i2c_port *chan)
+print_aux(struct nvkm_i2c_aux *aux)
{
- printf("chan 0x%02x: type %04x\n", chan->index, nv_mclass(chan));
+ printf("aux %04x\n", aux->id);
}
int
@@ -21,7 +21,7 @@ main(int argc, char **argv)
u64 dev = ~0ULL;
struct nvif_client *client;
struct nvif_device *device;
- struct nvkm_i2c_port *chan;
+ struct nvkm_i2c_aux *aux;
struct nvkm_i2c *i2c;
int action = -1, index = -1;
int addr = -1, val = -1;
@@ -84,23 +84,22 @@ main(int argc, char **argv)
i2c = nvxx_i2c(device);
if (action < 0) {
- list_for_each_entry(chan, &i2c->ports, head) {
- if ((nv_mclass(chan) & 0x00ff) == 0x06)
- print_chan(chan);
+ list_for_each_entry(aux, &i2c->aux, head) {
+ print_aux(aux);
}
} else {
- chan = i2c->find(i2c, index);
- if (!chan || (nv_mclass(chan) & 0x00ff) != 0x06) {
+ aux = nvkm_i2c_aux_find(i2c, index);
+ if (!aux) {
ret = -ENOENT;
goto done;
}
- print_chan(chan);
+ print_aux(aux);
}
switch (action) {
case 0:
- ret = nv_rdaux(chan, addr, &data, 1);
+ ret = nvkm_rdaux(aux, addr, &data, 1);
printf("%05x: ", addr);
if (ret < 0)
printf("%s\n", strerror(ret));
@@ -109,7 +108,7 @@ main(int argc, char **argv)
break;
case 1:
printf("%05x: %02x", addr, data);
- ret = nv_wraux(chan, addr, &data, 1);
+ ret = nvkm_wraux(aux, addr, &data, 1);
if (ret < 0)
printf(" - %s", strerror(ret));
printf("\n");
diff --git a/bin/nv_i2c.c b/bin/nv_i2c.c
index ee469f0a0..ec0ce4a6d 100644
--- a/bin/nv_i2c.c
+++ b/bin/nv_i2c.c
@@ -7,9 +7,32 @@
#include <nvif/class.h>
static void
-print_port(struct nvkm_i2c_port *port)
+show_adapter(struct i2c_adapter *adap, int adapter)
{
- printf("port 0x%02x: type %04x\n", port->index, nv_mclass(port));
+ printf("i2c %d: %s\n", adapter, adap->name);
+}
+
+static struct i2c_adapter *
+find_adapter(struct nvif_device *device, int adapter)
+{
+ struct nvkm_i2c *i2c = nvxx_device(device)->i2c;
+ struct nvkm_i2c_bus *bus;
+ struct nvkm_i2c_aux *aux;
+ int i = 0;
+
+ if (i2c) {
+ list_for_each_entry(bus, &i2c->bus, head) {
+ if (i++ == adapter)
+ return &bus->i2c;
+ }
+
+ list_for_each_entry(aux, &i2c->aux, head) {
+ if (i++ == adapter)
+ return &aux->i2c;
+ }
+ }
+
+ return NULL;
}
int
@@ -21,8 +44,7 @@ main(int argc, char **argv)
u64 dev = ~0ULL;
struct nvif_client *client;
struct nvif_device *device;
- struct nvkm_i2c_port *port;
- struct nvkm_i2c *i2c;
+ struct i2c_adapter *adap;
int addr = -1, reg = -1, val = -1;
int action = -1, index = -1;
int ret, c;
@@ -87,20 +109,18 @@ main(int argc, char **argv)
if (ret)
return ret;
- i2c = nvxx_i2c(device);
-
if (action < 0) {
- list_for_each_entry(port, &i2c->ports, head) {
- print_port(port);
+ for (index = 0; (adap = find_adapter(device, index)); index++) {
+ show_adapter(adap, index);
}
} else {
- port = i2c->find(i2c, index);
- if (!port) {
+ adap = find_adapter(device, index);
+ if (!adap) {
ret = -ENOENT;
goto done;
}
- print_port(port);
+ show_adapter(adap, index);
}
switch (action) {
@@ -109,7 +129,7 @@ main(int argc, char **argv)
for (addr = 0; addr < 128; addr++) {
if ((addr & 0x0f) == 0x00)
printf("%02x:", addr);
- if ((val = nv_rdi2cr(port, addr, 0x00)) >= 0)
+ if ((val = nvkm_rdi2cr(adap, addr, 0x00)) >= 0)
printf(" %02x", addr);
else
printf(" --");
@@ -122,7 +142,7 @@ main(int argc, char **argv)
for (reg = 0; reg < 256; reg++) {
if ((reg & 0x0f) == 0x00)
printf("%02x:", reg);
- if ((val = nv_rdi2cr(port, addr, reg)) >= 0)
+ if ((val = nvkm_rdi2cr(adap, addr, reg)) >= 0)
printf(" %02x", val);
else
printf(" --");
@@ -133,7 +153,7 @@ main(int argc, char **argv)
}
break;
case 2:
- val = nv_rdi2cr(port, addr, reg);
+ val = nvkm_rdi2cr(adap, addr, reg);
printf("%02x[%02x]: ", addr, reg);
if (val < 0)
printf("%s\n", strerror(val));
@@ -142,7 +162,7 @@ main(int argc, char **argv)
break;
case 3:
printf("%02x[%02x]: %02x", addr, reg, val);
- ret = nv_wri2cr(port, addr, reg, val);
+ ret = nvkm_wri2cr(adap, addr, reg, val);
if (ret < 0)
printf("%s", strerror(ret));
printf("\n");