]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
drm/nouveau/gpio: pass number of on-die gpio lines to base
authorBen Skeggs <bskeggs@redhat.com>
Sun, 3 Feb 2013 21:08:20 +0000 (07:08 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 20 Feb 2013 06:00:49 +0000 (16:00 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/include/subdev/gpio.h
drivers/gpu/drm/nouveau/core/subdev/gpio/base.c
drivers/gpu/drm/nouveau/core/subdev/gpio/nv10.c
drivers/gpu/drm/nouveau/core/subdev/gpio/nv50.c
drivers/gpu/drm/nouveau/core/subdev/gpio/nvd0.c

index b75e8f18e52c8432a2506e4eb9924f31afc56989..43cd20521a9480d73f360242ffb41c83176af750 100644 (file)
@@ -40,15 +40,15 @@ nouveau_gpio(void *obj)
        return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_GPIO];
 }
 
-#define nouveau_gpio_create(p,e,o,d)                                           \
-       nouveau_gpio_create_((p), (e), (o), sizeof(**d), (void **)d)
+#define nouveau_gpio_create(p,e,o,l,d)                                         \
+       nouveau_gpio_create_((p), (e), (o), (l), sizeof(**d), (void **)d)
 #define nouveau_gpio_destroy(p)                                                \
        nouveau_subdev_destroy(&(p)->base)
 #define nouveau_gpio_fini(p,s)                                                 \
        nouveau_subdev_fini(&(p)->base, (s))
 
 int nouveau_gpio_create_(struct nouveau_object *, struct nouveau_object *,
-                        struct nouveau_oclass *, int, void **);
+                        struct nouveau_oclass *, int, int, void **);
 int nouveau_gpio_init(struct nouveau_gpio *);
 
 extern struct nouveau_oclass nv10_gpio_oclass;
index 9fb0f9b92d49efacf84ae5826b61b4662d59699c..6f574fdc27c11518c43c566f5832de13be82b9c5 100644 (file)
@@ -230,7 +230,8 @@ nouveau_gpio_isr_del(struct nouveau_gpio *gpio, int idx, u8 tag, u8 line,
 int
 nouveau_gpio_create_(struct nouveau_object *parent,
                     struct nouveau_object *engine,
-                    struct nouveau_oclass *oclass, int length, void **pobject)
+                    struct nouveau_oclass *oclass, int lines,
+                    int length, void **pobject)
 {
        struct nouveau_gpio *gpio;
        int ret;
index 3bed67aac3067f1338306ecab8fcbad43768ffc2..cf38d2a1d7f126d658713787b63ff354f553d2de 100644 (file)
@@ -112,7 +112,7 @@ nv10_gpio_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
        struct nv10_gpio_priv *priv;
        int ret;
 
-       ret = nouveau_gpio_create(parent, engine, oclass, &priv);
+       ret = nouveau_gpio_create(parent, engine, oclass, 16, &priv);
        *pobject = nv_object(priv);
        if (ret)
                return ret;
index bf13a1200f26188935d22dd8183855129a51e187..dd022a5787b6fdc99a45b2b5918c96776f9aaa72 100644 (file)
@@ -132,7 +132,9 @@ nv50_gpio_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
        struct nv50_gpio_priv *priv;
        int ret;
 
-       ret = nouveau_gpio_create(parent, engine, oclass, &priv);
+       ret = nouveau_gpio_create(parent, engine, oclass,
+                                 nv_device(parent)->chipset >= 0x90 ? 32 : 16,
+                                 &priv);
        *pobject = nv_object(priv);
        if (ret)
                return ret;
index 83e8b8f16e6ad1f3ad4a3ba5e8676ff078107c69..bc74199259a2017286481e9a84c67168f32dda17 100644 (file)
@@ -80,7 +80,7 @@ nvd0_gpio_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
        struct nvd0_gpio_priv *priv;
        int ret;
 
-       ret = nouveau_gpio_create(parent, engine, oclass, &priv);
+       ret = nouveau_gpio_create(parent, engine, oclass, 32, &priv);
        *pobject = nv_object(priv);
        if (ret)
                return ret;