Commit 4e7659fc authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/gpio: namespace + nvidia gpu names (no binary change)

The namespace of NVKM is being changed to nvkm_ instead of nouveau_,
which will be used for the DRM part of the driver.  This is being
done in order to make it very clear as to what part of the driver a
given symbol belongs to, and as a minor step towards splitting the
DRM driver out to be able to stand on its own (for virt).

Because there's already a large amount of churn here anyway, this is
as good a time as any to also switch to NVIDIA's device and chipset
naming to ease collaboration with them.

A comparison of objdump disassemblies proves no code changes.
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 630ec6c0
#ifndef __NOUVEAU_GPIO_H__ #ifndef __NVKM_GPIO_H__
#define __NOUVEAU_GPIO_H__ #define __NVKM_GPIO_H__
#include <core/subdev.h> #include <core/subdev.h>
#include <core/device.h>
#include <core/event.h> #include <core/event.h>
#include <subdev/bios.h> #include <subdev/bios.h>
...@@ -20,28 +18,27 @@ struct nvkm_gpio_ntfy_rep { ...@@ -20,28 +18,27 @@ struct nvkm_gpio_ntfy_rep {
u8 mask; u8 mask;
}; };
struct nouveau_gpio { struct nvkm_gpio {
struct nouveau_subdev base; struct nvkm_subdev base;
struct nvkm_event event; struct nvkm_event event;
void (*reset)(struct nouveau_gpio *, u8 func); void (*reset)(struct nvkm_gpio *, u8 func);
int (*find)(struct nouveau_gpio *, int idx, u8 tag, u8 line, int (*find)(struct nvkm_gpio *, int idx, u8 tag, u8 line,
struct dcb_gpio_func *); struct dcb_gpio_func *);
int (*set)(struct nouveau_gpio *, int idx, u8 tag, u8 line, int state); int (*set)(struct nvkm_gpio *, int idx, u8 tag, u8 line, int state);
int (*get)(struct nouveau_gpio *, int idx, u8 tag, u8 line); int (*get)(struct nvkm_gpio *, int idx, u8 tag, u8 line);
}; };
static inline struct nouveau_gpio * static inline struct nvkm_gpio *
nouveau_gpio(void *obj) nvkm_gpio(void *obj)
{ {
return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_GPIO); return (void *)nvkm_subdev(obj, NVDEV_SUBDEV_GPIO);
} }
extern struct nouveau_oclass *nv10_gpio_oclass; extern struct nvkm_oclass *nv10_gpio_oclass;
extern struct nouveau_oclass *nv50_gpio_oclass; extern struct nvkm_oclass *nv50_gpio_oclass;
extern struct nouveau_oclass *nv94_gpio_oclass; extern struct nvkm_oclass *g94_gpio_oclass;
extern struct nouveau_oclass *nvd0_gpio_oclass; extern struct nvkm_oclass *gf110_gpio_oclass;
extern struct nouveau_oclass *nve0_gpio_oclass; extern struct nvkm_oclass *gk104_gpio_oclass;
#endif #endif
...@@ -62,7 +62,7 @@ gm100_identify(struct nouveau_device *device) ...@@ -62,7 +62,7 @@ gm100_identify(struct nouveau_device *device)
case 0x117: case 0x117:
device->cname = "GM107"; device->cname = "GM107";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nve0_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nvd0_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nvd0_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gm107_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gm107_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass;
...@@ -102,7 +102,7 @@ gm100_identify(struct nouveau_device *device) ...@@ -102,7 +102,7 @@ gm100_identify(struct nouveau_device *device)
case 0x124: case 0x124:
device->cname = "GM204"; device->cname = "GM204";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nve0_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = gm204_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = gm204_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gm107_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gm107_fuse_oclass;
#if 0 #if 0
......
...@@ -177,7 +177,7 @@ nv50_identify(struct nouveau_device *device) ...@@ -177,7 +177,7 @@ nv50_identify(struct nouveau_device *device)
case 0x94: case 0x94:
device->cname = "G94"; device->cname = "G94";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = g84_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = g84_clk_oclass;
...@@ -206,7 +206,7 @@ nv50_identify(struct nouveau_device *device) ...@@ -206,7 +206,7 @@ nv50_identify(struct nouveau_device *device)
case 0x96: case 0x96:
device->cname = "G96"; device->cname = "G96";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = g84_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = g84_clk_oclass;
...@@ -235,7 +235,7 @@ nv50_identify(struct nouveau_device *device) ...@@ -235,7 +235,7 @@ nv50_identify(struct nouveau_device *device)
case 0x98: case 0x98:
device->cname = "G98"; device->cname = "G98";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = g84_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = g84_clk_oclass;
...@@ -264,7 +264,7 @@ nv50_identify(struct nouveau_device *device) ...@@ -264,7 +264,7 @@ nv50_identify(struct nouveau_device *device)
case 0xa0: case 0xa0:
device->cname = "G200"; device->cname = "G200";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv50_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv50_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = g84_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = g84_clk_oclass;
...@@ -293,7 +293,7 @@ nv50_identify(struct nouveau_device *device) ...@@ -293,7 +293,7 @@ nv50_identify(struct nouveau_device *device)
case 0xaa: case 0xaa:
device->cname = "MCP77/MCP78"; device->cname = "MCP77/MCP78";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = mcp77_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = mcp77_clk_oclass;
...@@ -322,7 +322,7 @@ nv50_identify(struct nouveau_device *device) ...@@ -322,7 +322,7 @@ nv50_identify(struct nouveau_device *device)
case 0xac: case 0xac:
device->cname = "MCP79/MCP7A"; device->cname = "MCP79/MCP7A";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = mcp77_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = mcp77_clk_oclass;
...@@ -351,7 +351,7 @@ nv50_identify(struct nouveau_device *device) ...@@ -351,7 +351,7 @@ nv50_identify(struct nouveau_device *device)
case 0xa3: case 0xa3:
device->cname = "GT215"; device->cname = "GT215";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gt215_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gt215_clk_oclass;
...@@ -382,7 +382,7 @@ nv50_identify(struct nouveau_device *device) ...@@ -382,7 +382,7 @@ nv50_identify(struct nouveau_device *device)
case 0xa5: case 0xa5:
device->cname = "GT216"; device->cname = "GT216";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gt215_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gt215_clk_oclass;
...@@ -412,7 +412,7 @@ nv50_identify(struct nouveau_device *device) ...@@ -412,7 +412,7 @@ nv50_identify(struct nouveau_device *device)
case 0xa8: case 0xa8:
device->cname = "GT218"; device->cname = "GT218";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gt215_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gt215_clk_oclass;
...@@ -442,7 +442,7 @@ nv50_identify(struct nouveau_device *device) ...@@ -442,7 +442,7 @@ nv50_identify(struct nouveau_device *device)
case 0xaf: case 0xaf:
device->cname = "MCP89"; device->cname = "MCP89";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &nv50_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gt215_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gt215_clk_oclass;
......
...@@ -62,7 +62,7 @@ nvc0_identify(struct nouveau_device *device) ...@@ -62,7 +62,7 @@ nvc0_identify(struct nouveau_device *device)
case 0xc0: case 0xc0:
device->cname = "GF100"; device->cname = "GF100";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass;
...@@ -95,7 +95,7 @@ nvc0_identify(struct nouveau_device *device) ...@@ -95,7 +95,7 @@ nvc0_identify(struct nouveau_device *device)
case 0xc4: case 0xc4:
device->cname = "GF104"; device->cname = "GF104";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass;
...@@ -128,7 +128,7 @@ nvc0_identify(struct nouveau_device *device) ...@@ -128,7 +128,7 @@ nvc0_identify(struct nouveau_device *device)
case 0xc3: case 0xc3:
device->cname = "GF106"; device->cname = "GF106";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass;
...@@ -160,7 +160,7 @@ nvc0_identify(struct nouveau_device *device) ...@@ -160,7 +160,7 @@ nvc0_identify(struct nouveau_device *device)
case 0xce: case 0xce:
device->cname = "GF114"; device->cname = "GF114";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass;
...@@ -193,7 +193,7 @@ nvc0_identify(struct nouveau_device *device) ...@@ -193,7 +193,7 @@ nvc0_identify(struct nouveau_device *device)
case 0xcf: case 0xcf:
device->cname = "GF116"; device->cname = "GF116";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass;
...@@ -225,7 +225,7 @@ nvc0_identify(struct nouveau_device *device) ...@@ -225,7 +225,7 @@ nvc0_identify(struct nouveau_device *device)
case 0xc1: case 0xc1:
device->cname = "GF108"; device->cname = "GF108";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass;
...@@ -257,7 +257,7 @@ nvc0_identify(struct nouveau_device *device) ...@@ -257,7 +257,7 @@ nvc0_identify(struct nouveau_device *device)
case 0xc8: case 0xc8:
device->cname = "GF110"; device->cname = "GF110";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nv94_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = g94_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nv94_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass;
...@@ -290,7 +290,7 @@ nvc0_identify(struct nouveau_device *device) ...@@ -290,7 +290,7 @@ nvc0_identify(struct nouveau_device *device)
case 0xd9: case 0xd9:
device->cname = "GF119"; device->cname = "GF119";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nvd0_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = gf110_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nvd0_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nvd0_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass;
...@@ -322,7 +322,7 @@ nvc0_identify(struct nouveau_device *device) ...@@ -322,7 +322,7 @@ nvc0_identify(struct nouveau_device *device)
case 0xd7: case 0xd7:
device->cname = "GF117"; device->cname = "GF117";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nvd0_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = gf110_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = gf117_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = gf117_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gf100_clk_oclass;
......
...@@ -62,7 +62,7 @@ nve0_identify(struct nouveau_device *device) ...@@ -62,7 +62,7 @@ nve0_identify(struct nouveau_device *device)
case 0xe4: case 0xe4:
device->cname = "GK104"; device->cname = "GK104";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nve0_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nve0_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nve0_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass;
...@@ -96,7 +96,7 @@ nve0_identify(struct nouveau_device *device) ...@@ -96,7 +96,7 @@ nve0_identify(struct nouveau_device *device)
case 0xe7: case 0xe7:
device->cname = "GK107"; device->cname = "GK107";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nve0_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nve0_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nve0_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass;
...@@ -130,7 +130,7 @@ nve0_identify(struct nouveau_device *device) ...@@ -130,7 +130,7 @@ nve0_identify(struct nouveau_device *device)
case 0xe6: case 0xe6:
device->cname = "GK106"; device->cname = "GK106";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nve0_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nve0_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nve0_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass;
...@@ -186,7 +186,7 @@ nve0_identify(struct nouveau_device *device) ...@@ -186,7 +186,7 @@ nve0_identify(struct nouveau_device *device)
case 0xf0: case 0xf0:
device->cname = "GK110"; device->cname = "GK110";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nve0_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nve0_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nve0_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass;
...@@ -220,7 +220,7 @@ nve0_identify(struct nouveau_device *device) ...@@ -220,7 +220,7 @@ nve0_identify(struct nouveau_device *device)
case 0xf1: case 0xf1:
device->cname = "GK110B"; device->cname = "GK110B";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nve0_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nvd0_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nvd0_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass;
...@@ -254,7 +254,7 @@ nve0_identify(struct nouveau_device *device) ...@@ -254,7 +254,7 @@ nve0_identify(struct nouveau_device *device)
case 0x106: case 0x106:
device->cname = "GK208B"; device->cname = "GK208B";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nve0_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nve0_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nve0_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass;
...@@ -287,7 +287,7 @@ nve0_identify(struct nouveau_device *device) ...@@ -287,7 +287,7 @@ nve0_identify(struct nouveau_device *device)
case 0x108: case 0x108:
device->cname = "GK208"; device->cname = "GK208";
device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass; device->oclass[NVDEV_SUBDEV_VBIOS ] = &nouveau_bios_oclass;
device->oclass[NVDEV_SUBDEV_GPIO ] = nve0_gpio_oclass; device->oclass[NVDEV_SUBDEV_GPIO ] = gk104_gpio_oclass;
device->oclass[NVDEV_SUBDEV_I2C ] = nve0_i2c_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nve0_i2c_oclass;
device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass; device->oclass[NVDEV_SUBDEV_FUSE ] = &gf100_fuse_oclass;
device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass; device->oclass[NVDEV_SUBDEV_CLK ] = &gk104_clk_oclass;
......
nvkm-y += nvkm/subdev/gpio/base.o nvkm-y += nvkm/subdev/gpio/base.o
nvkm-y += nvkm/subdev/gpio/nv10.o nvkm-y += nvkm/subdev/gpio/nv10.o
nvkm-y += nvkm/subdev/gpio/nv50.o nvkm-y += nvkm/subdev/gpio/nv50.o
nvkm-y += nvkm/subdev/gpio/nv94.o nvkm-y += nvkm/subdev/gpio/g94.o
nvkm-y += nvkm/subdev/gpio/nvd0.o nvkm-y += nvkm/subdev/gpio/gf110.o
nvkm-y += nvkm/subdev/gpio/nve0.o nvkm-y += nvkm/subdev/gpio/gk104.o
...@@ -21,33 +21,30 @@ ...@@ -21,33 +21,30 @@
* *
* Authors: Ben Skeggs * Authors: Ben Skeggs
*/ */
#include "priv.h"
#include <core/device.h>
#include <core/notify.h> #include <core/notify.h>
#include <subdev/bios.h>
#include <subdev/bios/gpio.h>
#include "priv.h"
static int static int
nouveau_gpio_drive(struct nouveau_gpio *gpio, nvkm_gpio_drive(struct nvkm_gpio *gpio, int idx, int line, int dir, int out)
int idx, int line, int dir, int out)
{ {
const struct nouveau_gpio_impl *impl = (void *)nv_object(gpio)->oclass; const struct nvkm_gpio_impl *impl = (void *)nv_object(gpio)->oclass;
return impl->drive ? impl->drive(gpio, line, dir, out) : -ENODEV; return impl->drive ? impl->drive(gpio, line, dir, out) : -ENODEV;
} }
static int static int
nouveau_gpio_sense(struct nouveau_gpio *gpio, int idx, int line) nvkm_gpio_sense(struct nvkm_gpio *gpio, int idx, int line)
{ {
const struct nouveau_gpio_impl *impl = (void *)nv_object(gpio)->oclass; const struct nvkm_gpio_impl *impl = (void *)nv_object(gpio)->oclass;
return impl->sense ? impl->sense(gpio, line) : -ENODEV; return impl->sense ? impl->sense(gpio, line) : -ENODEV;
} }
static int static int
nouveau_gpio_find(struct nouveau_gpio *gpio, int idx, u8 tag, u8 line, nvkm_gpio_find(struct nvkm_gpio *gpio, int idx, u8 tag, u8 line,
struct dcb_gpio_func *func) struct dcb_gpio_func *func)
{ {
struct nouveau_bios *bios = nouveau_bios(gpio); struct nvkm_bios *bios = nvkm_bios(gpio);
u8 ver, len; u8 ver, len;
u16 data; u16 data;
...@@ -75,30 +72,30 @@ nouveau_gpio_find(struct nouveau_gpio *gpio, int idx, u8 tag, u8 line, ...@@ -75,30 +72,30 @@ nouveau_gpio_find(struct nouveau_gpio *gpio, int idx, u8 tag, u8 line,
} }
static int static int
nouveau_gpio_set(struct nouveau_gpio *gpio, int idx, u8 tag, u8 line, int state) nvkm_gpio_set(struct nvkm_gpio *gpio, int idx, u8 tag, u8 line, int state)
{ {
struct dcb_gpio_func func; struct dcb_gpio_func func;
int ret; int ret;
ret = nouveau_gpio_find(gpio, idx, tag, line, &func); ret = nvkm_gpio_find(gpio, idx, tag, line, &func);
if (ret == 0) { if (ret == 0) {
int dir = !!(func.log[state] & 0x02); int dir = !!(func.log[state] & 0x02);
int out = !!(func.log[state] & 0x01); int out = !!(func.log[state] & 0x01);
ret = nouveau_gpio_drive(gpio, idx, func.line, dir, out); ret = nvkm_gpio_drive(gpio, idx, func.line, dir, out);
} }
return ret; return ret;
} }
static int static int
nouveau_gpio_get(struct nouveau_gpio *gpio, int idx, u8 tag, u8 line) nvkm_gpio_get(struct nvkm_gpio *gpio, int idx, u8 tag, u8 line)
{ {
struct dcb_gpio_func func; struct dcb_gpio_func func;
int ret; int ret;
ret = nouveau_gpio_find(gpio, idx, tag, line, &func); ret = nvkm_gpio_find(gpio, idx, tag, line, &func);
if (ret == 0) { if (ret == 0) {
ret = nouveau_gpio_sense(gpio, idx, func.line); ret = nvkm_gpio_sense(gpio, idx, func.line);
if (ret >= 0) if (ret >= 0)
ret = (ret == (func.log[1] & 1)); ret = (ret == (func.log[1] & 1));
} }
...@@ -107,24 +104,24 @@ nouveau_gpio_get(struct nouveau_gpio *gpio, int idx, u8 tag, u8 line) ...@@ -107,24 +104,24 @@ nouveau_gpio_get(struct nouveau_gpio *gpio, int idx, u8 tag, u8 line)
} }
static void static void
nouveau_gpio_intr_fini(struct nvkm_event *event, int type, int index) nvkm_gpio_intr_fini(struct nvkm_event *event, int type, int index)
{ {
struct nouveau_gpio *gpio = container_of(event, typeof(*gpio), event); struct nvkm_gpio *gpio = container_of(event, typeof(*gpio), event);
const struct nouveau_gpio_impl *impl = (void *)nv_object(gpio)->oclass; const struct nvkm_gpio_impl *impl = (void *)nv_object(gpio)->oclass;
impl->intr_mask(gpio, type, 1 << index, 0); impl->intr_mask(gpio, type, 1 << index, 0);
} }
static void static void
nouveau_gpio_intr_init(struct nvkm_event *event, int type, int index) nvkm_gpio_intr_init(struct nvkm_event *event, int type, int index)
{ {
struct nouveau_gpio *gpio = container_of(event, typeof(*gpio), event); struct nvkm_gpio *gpio = container_of(event, typeof(*gpio), event);
const struct nouveau_gpio_impl *impl = (void *)nv_object(gpio)->oclass; const struct nvkm_gpio_impl *impl = (void *)nv_object(gpio)->oclass;
impl->intr_mask(gpio, type, 1 << index, 1 << index); impl->intr_mask(gpio, type, 1 << index, 1 << index);
} }
static int static int
nouveau_gpio_intr_ctor(struct nouveau_object *object, void *data, u32 size, nvkm_gpio_intr_ctor(struct nvkm_object *object, void *data, u32 size,
struct nvkm_notify *notify) struct nvkm_notify *notify)
{ {
struct nvkm_gpio_ntfy_req *req = data; struct nvkm_gpio_ntfy_req *req = data;
if (!WARN_ON(size != sizeof(*req))) { if (!WARN_ON(size != sizeof(*req))) {
...@@ -137,10 +134,10 @@ nouveau_gpio_intr_ctor(struct nouveau_object *object, void *data, u32 size, ...@@ -137,10 +134,10 @@ nouveau_gpio_intr_ctor(struct nouveau_object *object, void *data, u32 size,
} }
static void static void
nouveau_gpio_intr(struct nouveau_subdev *subdev) nvkm_gpio_intr(struct nvkm_subdev *subdev)
{ {
struct nouveau_gpio *gpio = nouveau_gpio(subdev); struct nvkm_gpio *gpio = nvkm_gpio(subdev);
const struct nouveau_gpio_impl *impl = (void *)nv_object(gpio)->oclass; const struct nvkm_gpio_impl *impl = (void *)nv_object(gpio)->oclass;
u32 hi, lo, i; u32 hi, lo, i;
impl->intr_stat(gpio, &hi, &lo); impl->intr_stat(gpio, &hi, &lo);
...@@ -155,23 +152,23 @@ nouveau_gpio_intr(struct nouveau_subdev *subdev) ...@@ -155,23 +152,23 @@ nouveau_gpio_intr(struct nouveau_subdev *subdev)
} }
static const struct nvkm_event_func static const struct nvkm_event_func
nouveau_gpio_intr_func = { nvkm_gpio_intr_func = {
.ctor = nouveau_gpio_intr_ctor, .ctor = nvkm_gpio_intr_ctor,
.init = nouveau_gpio_intr_init, .init = nvkm_gpio_intr_init,
.fini = nouveau_gpio_intr_fini, .fini = nvkm_gpio_intr_fini,
}; };
int int
_nouveau_gpio_fini(struct nouveau_object *object, bool suspend) _nvkm_gpio_fini(struct nvkm_object *object, bool suspend)
{ {
const struct nouveau_gpio_impl *impl = (void *)object->oclass; const struct nvkm_gpio_impl *impl = (void *)object->oclass;
struct nouveau_gpio *gpio = nouveau_gpio(object); struct nvkm_gpio *gpio = nvkm_gpio(object);
u32 mask = (1 << impl->lines) - 1; u32 mask = (1 << impl->lines) - 1;
impl->intr_mask(gpio, NVKM_GPIO_TOGGLED, mask, 0); impl->intr_mask(gpio, NVKM_GPIO_TOGGLED, mask, 0);
impl->intr_stat(gpio, &mask, &mask); impl->intr_stat(gpio, &mask, &mask);
return nouveau_subdev_fini(&gpio->base, suspend); return nvkm_subdev_fini(&gpio->base, suspend);
} }
static struct dmi_system_id gpio_reset_ids[] = { static struct dmi_system_id gpio_reset_ids[] = {
...@@ -186,12 +183,12 @@ static struct dmi_system_id gpio_reset_ids[] = { ...@@ -186,12 +183,12 @@ static struct dmi_system_id gpio_reset_ids[] = {
}; };
int int
_nouveau_gpio_init(struct nouveau_object *object) _nvkm_gpio_init(struct nvkm_object *object)
{ {
struct nouveau_gpio *gpio = nouveau_gpio(object); struct nvkm_gpio *gpio = nvkm_gpio(object);
int ret; int ret;
ret = nouveau_subdev_init(&gpio->base); ret = nvkm_subdev_init(&gpio->base);
if (ret) if (ret)
return ret; return ret;
...@@ -202,52 +199,50 @@ _nouveau_gpio_init(struct nouveau_object *object) ...@@ -202,52 +199,50 @@ _nouveau_gpio_init(struct nouveau_object *object)
} }
void void
_nouveau_gpio_dtor(struct nouveau_object *object) _nvkm_gpio_dtor(struct nvkm_object *object)
{ {
struct nouveau_gpio *gpio = (void *)object; struct nvkm_gpio *gpio = (void *)object;
nvkm_event_fini(&gpio->event); nvkm_event_fini(&gpio->event);
nouveau_subdev_destroy(&gpio->base); nvkm_subdev_destroy(&gpio->base);
} }
int int
nouveau_gpio_create_(struct nouveau_object *parent, nvkm_gpio_create_(struct nvkm_object *parent, struct nvkm_object *engine,
struct nouveau_object *engine, struct nvkm_oclass *oclass, int length, void **pobject)
struct nouveau_oclass *oclass,
int length, void **pobject)
{ {
const struct nouveau_gpio_impl *impl = (void *)oclass; const struct nvkm_gpio_impl *impl = (void *)oclass;
struct nouveau_gpio *gpio; struct nvkm_gpio *gpio;
int ret; int ret;
ret = nouveau_subdev_create_(parent, engine, oclass, 0, "GPIO", "gpio", ret = nvkm_subdev_create_(parent, engine, oclass, 0, "GPIO",
length, pobject); "gpio", length, pobject);
gpio = *pobject; gpio = *pobject;
if (ret) if (ret)
return ret; return ret;
gpio->find = nouveau_gpio_find; gpio->find = nvkm_gpio_find;
gpio->set = nouveau_gpio_set; gpio->set = nvkm_gpio_set;
gpio->get = nouveau_gpio_get; gpio->get = nvkm_gpio_get;
gpio->reset = impl->reset; gpio->reset = impl->reset;
ret = nvkm_event_init(&nouveau_gpio_intr_func, 2, impl->lines, ret = nvkm_event_init(&nvkm_gpio_intr_func, 2, impl->lines,
&gpio->event); &gpio->event);
if (ret) if (ret)
return ret; return ret;
nv_subdev(gpio)->intr = nouveau_gpio_intr; nv_subdev(gpio)->intr = nvkm_gpio_intr;
return 0; return 0;
} }
int int
_nouveau_gpio_ctor(struct nouveau_object *parent, struct nouveau_object *engine, _nvkm_gpio_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
struct nouveau_oclass *oclass, void *data, u32 size, struct nvkm_oclass *oclass, void *data, u32 size,
struct nouveau_object **pobject) struct nvkm_object **pobject)
{ {
struct nouveau_gpio *gpio; struct nvkm_gpio *gpio;
int ret; int ret;
ret = nouveau_gpio_create(parent, engine, oclass, &gpio); ret = nvkm_gpio_create(parent, engine, oclass, &gpio);
*pobject = nv_object(gpio); *pobject = nv_object(gpio);
if (ret) if (ret)
return ret; return ret;
......
...@@ -21,11 +21,10 @@ ...@@ -21,11 +21,10 @@
* *
* Authors: Ben Skeggs * Authors: Ben Skeggs
*/ */
#include "priv.h" #include "priv.h"
void void
nv94_gpio_intr_stat(struct nouveau_gpio *gpio, u32 *hi, u32 *lo) g94_gpio_intr_stat(struct nvkm_gpio *gpio, u32 *hi, u32 *lo)
{ {
u32 intr0 = nv_rd32(gpio, 0x00e054); u32 intr0 = nv_rd32(gpio, 0x00e054);
u32 intr1 = nv_rd32(gpio, 0x00e074); u32 intr1 = nv_rd32(gpio, 0x00e074);
...@@ -38,7 +37,7 @@ nv94_gpio_intr_stat(struct nouveau_gpio *gpio, u32 *hi, u32 *lo) ...@@ -38,7 +37,7 @@ nv94_gpio_intr_stat(struct nouveau_gpio *gpio, u32 *hi, u32 *lo)
} }
void void
nv94_gpio_intr_mask(struct nouveau_gpio *gpio, u32 type, u32 mask, u32 data) g94_gpio_intr_mask(struct nvkm_gpio *gpio, u32 type, u32 mask, u32 data)
{ {
u32 inte0 = nv_rd32(gpio, 0x00e050); u32 inte0 = nv_rd32(gpio, 0x00e050);
u32 inte1 = nv_rd32(gpio, 0x00e070); u32 inte1 = nv_rd32(gpio, 0x00e070);
...@@ -56,18 +55,18 @@ nv94_gpio_intr_mask(struct nouveau_gpio *gpio, u32 type, u32 mask, u32 data) ...@@ -56,18 +55,18 @@ nv94_gpio_intr_mask(struct nouveau_gpio *gpio, u32 type, u32 mask, u32 data)
nv_wr32(gpio, 0x00e070, inte1); nv_wr32(gpio, 0x00e070, inte1);
} }
struct nouveau_oclass * struct nvkm_oclass *
nv94_gpio_oclass = &(struct nouveau_gpio_impl) { g94_gpio_oclass = &(struct nvkm_gpio_impl) {
.base.handle = NV_SUBDEV(GPIO, 0x94), .base.handle = NV_SUBDEV(GPIO, 0x94),
.base.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nvkm_ofuncs) {
.ctor = _nouveau_gpio_ctor, .ctor = _nvkm_gpio_ctor,
.dtor = _nouveau_gpio_dtor, .dtor = _nvkm_gpio_dtor,
.init = _nouveau_gpio_init, .init = _nvkm_gpio_init,
.fini = _nouveau_gpio_fini, .fini = _nvkm_gpio_fini,
}, },
.lines = 32, .lines = 32,
.intr_stat = nv94_gpio_intr_stat, .intr_stat = g94_gpio_intr_stat,
.intr_mask = nv94_gpio_intr_mask, .intr_mask = g94_gpio_intr_mask,
.drive = nv50_gpio_drive, .drive = nv50_gpio_drive,
.sense = nv50_gpio_sense, .sense = nv50_gpio_sense,
.reset = nv50_gpio_reset, .reset = nv50_gpio_reset,
......
...@@ -21,13 +21,12 @@ ...@@ -21,13 +21,12 @@
* *
* Authors: Ben Skeggs * Authors: Ben Skeggs
*/ */
#include "priv.h" #include "priv.h"
void void
nvd0_gpio_reset(struct nouveau_gpio *gpio, u8 match) gf110_gpio_reset(struct nvkm_gpio *gpio, u8 match)
{ {
struct nouveau_bios *bios = nouveau_bios(gpio); struct nvkm_bios *bios = nvkm_bios(gpio);
u8 ver, len; u8 ver, len;
u16 entry; u16 entry;
int ent = -1; int ent = -1;
...@@ -53,7 +52,7 @@ nvd0_gpio_reset(struct nouveau_gpio *gpio, u8 match) ...@@ -53,7 +52,7 @@ nvd0_gpio_reset(struct nouveau_gpio *gpio, u8 match)
} }
int int
nvd0_gpio_drive(struct nouveau_gpio *gpio, int line, int dir, int out) gf110_gpio_drive(struct nvkm_gpio *gpio, int line, int dir, int out)
{ {
u32 data = ((dir ^ 1) << 13) | (out << 12); u32 data = ((dir ^ 1) << 13) | (out << 12);
nv_mask(gpio, 0x00d610 + (line * 4), 0x00003000, data); nv_mask(gpio, 0x00d610 + (line * 4), 0x00003000, data);
...@@ -62,24 +61,24 @@ nvd0_gpio_drive(struct nouveau_gpio *gpio, int line, int dir, int out) ...@@ -62,24 +61,24 @@ nvd0_gpio_drive(struct nouveau_gpio *gpio, int line, int dir, int out)
} }
int int
nvd0_gpio_sense(struct nouveau_gpio *gpio, int line) gf110_gpio_sense(struct nvkm_gpio *gpio, int line)
{ {
return !!(nv_rd32(gpio, 0x00d610 + (line * 4)) & 0x00004000); return !!(nv_rd32(gpio, 0x00d610 + (line * 4)) & 0x00004000);
} }
struct nouveau_oclass * struct nvkm_oclass *
nvd0_gpio_oclass = &(struct nouveau_gpio_impl) { gf110_gpio_oclass = &(struct nvkm_gpio_impl) {
.base.handle = NV_SUBDEV(GPIO, 0xd0), .base.handle = NV_SUBDEV(GPIO, 0xd0),
.base.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nvkm_ofuncs) {
.ctor = _nouveau_gpio_ctor, .ctor = _nvkm_gpio_ctor,
.dtor = _nouveau_gpio_dtor, .dtor = _nvkm_gpio_dtor,
.init = _nouveau_gpio_init, .init = _nvkm_gpio_init,
.fini = _nouveau_gpio_fini, .fini = _nvkm_gpio_fini,
}, },
.lines = 32, .lines = 32,
.intr_stat = nv94_gpio_intr_stat, .intr_stat = g94_gpio_intr_stat,
.intr_mask = nv94_gpio_intr_mask, .intr_mask = g94_gpio_intr_mask,
.drive = nvd0_gpio_drive, .drive = gf110_gpio_drive,
.sense = nvd0_gpio_sense, .sense = gf110_gpio_sense,
.reset = nvd0_gpio_reset, .reset = gf110_gpio_reset,
}.base; }.base;
...@@ -21,11 +21,10 @@ ...@@ -21,11 +21,10 @@
* *
* Authors: Ben Skeggs * Authors: Ben Skeggs
*/ */
#include "priv.h" #include "priv.h"
static void static void
nve0_gpio_intr_stat(struct nouveau_gpio *gpio, u32 *hi, u32 *lo) gk104_gpio_intr_stat(struct nvkm_gpio *gpio, u32 *hi, u32 *lo)
{ {
u32 intr0 = nv_rd32(gpio, 0x00dc00); u32 intr0 = nv_rd32(gpio, 0x00dc00);
u32 intr1 = nv_rd32(gpio, 0x00dc80); u32 intr1 = nv_rd32(gpio, 0x00dc80);
...@@ -38,7 +37,7 @@ nve0_gpio_intr_stat(struct nouveau_gpio *gpio, u32 *hi, u32 *lo) ...@@ -38,7 +37,7 @@ nve0_gpio_intr_stat(struct nouveau_gpio *gpio, u32 *hi, u32 *lo)
} }
void void
nve0_gpio_intr_mask(struct nouveau_gpio *gpio, u32 type, u32 mask, u32 data) gk104_gpio_intr_mask(struct nvkm_gpio *gpio, u32 type, u32 mask, u32 data)
{ {
u32 inte0 = nv_rd32(gpio, 0x00dc08); u32 inte0 = nv_rd32(gpio, 0x00dc08);
u32 inte1 = nv_rd32(gpio, 0x00dc88); u32 inte1 = nv_rd32(gpio, 0x00dc88);
...@@ -56,19 +55,19 @@ nve0_gpio_intr_mask(struct nouveau_gpio *gpio, u32 type, u32 mask, u32 data) ...@@ -56,19 +55,19 @@ nve0_gpio_intr_mask(struct nouveau_gpio *gpio, u32 type, u32 mask, u32 data)
nv_wr32(gpio, 0x00dc88, inte1); nv_wr32(gpio, 0x00dc88, inte1);
} }
struct nouveau_oclass * struct nvkm_oclass *
nve0_gpio_oclass = &(struct nouveau_gpio_impl) { gk104_gpio_oclass = &(struct nvkm_gpio_impl) {
.base.handle = NV_SUBDEV(GPIO, 0xe0), .base.handle = NV_SUBDEV(GPIO, 0xe0),
.base.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nvkm_ofuncs) {
.ctor = _nouveau_gpio_ctor, .ctor = _nvkm_gpio_ctor,
.dtor = _nouveau_gpio_dtor, .dtor = _nvkm_gpio_dtor,
.init = _nouveau_gpio_init, .init = _nvkm_gpio_init,
.fini = _nouveau_gpio_fini, .fini = _nvkm_gpio_fini,
}, },
.lines = 32, .lines = 32,
.intr_stat = nve0_gpio_intr_stat, .intr_stat = gk104_gpio_intr_stat,
.intr_mask = nve0_gpio_intr_mask, .intr_mask = gk104_gpio_intr_mask,
.drive = nvd0_gpio_drive, .drive = gf110_gpio_drive,
.sense = nvd0_gpio_sense, .sense = gf110_gpio_sense,
.reset = nvd0_gpio_reset, .reset = gf110_gpio_reset,
}.base; }.base;
...@@ -23,11 +23,10 @@ ...@@ -23,11 +23,10 @@
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* *
*/ */
#include "priv.h" #include "priv.h"
static int static int
nv10_gpio_sense(struct nouveau_gpio *gpio, int line) nv10_gpio_sense(struct nvkm_gpio *gpio, int line)
{ {
if (line < 2) { if (line < 2) {
line = line * 16; line = line * 16;
...@@ -49,7 +48,7 @@ nv10_gpio_sense(struct nouveau_gpio *gpio, int line) ...@@ -49,7 +48,7 @@ nv10_gpio_sense(struct nouveau_gpio *gpio, int line)
} }
static int static int
nv10_gpio_drive(struct nouveau_gpio *gpio, int line, int dir, int out) nv10_gpio_drive(struct nvkm_gpio *gpio, int line, int dir, int out)
{ {
u32 reg, mask, data; u32 reg, mask, data;
...@@ -79,7 +78,7 @@ nv10_gpio_drive(struct nouveau_gpio *gpio, int line, int dir, int out) ...@@ -79,7 +78,7 @@ nv10_gpio_drive(struct nouveau_gpio *gpio, int line, int dir, int out)
} }
static void static void
nv10_gpio_intr_stat(struct nouveau_gpio *gpio, u32 *hi, u32 *lo) nv10_gpio_intr_stat(struct nvkm_gpio *gpio, u32 *hi, u32 *lo)
{ {
u32 intr = nv_rd32(gpio, 0x001104); u32 intr = nv_rd32(gpio, 0x001104);
u32 stat = nv_rd32(gpio, 0x001144) & intr; u32 stat = nv_rd32(gpio, 0x001144) & intr;
...@@ -89,7 +88,7 @@ nv10_gpio_intr_stat(struct nouveau_gpio *gpio, u32 *hi, u32 *lo) ...@@ -89,7 +88,7 @@ nv10_gpio_intr_stat(struct nouveau_gpio *gpio, u32 *hi, u32 *lo)
} }
static void static void
nv10_gpio_intr_mask(struct nouveau_gpio *gpio, u32 type, u32 mask, u32 data) nv10_gpio_intr_mask(struct nvkm_gpio *gpio, u32 type, u32 mask, u32 data)
{ {
u32 inte = nv_rd32(gpio, 0x001144); u32 inte = nv_rd32(gpio, 0x001144);
if (type & NVKM_GPIO_LO) if (type & NVKM_GPIO_LO)
...@@ -99,14 +98,14 @@ nv10_gpio_intr_mask(struct nouveau_gpio *gpio, u32 type, u32 mask, u32 data) ...@@ -99,14 +98,14 @@ nv10_gpio_intr_mask(struct nouveau_gpio *gpio, u32 type, u32 mask, u32 data)
nv_wr32(gpio, 0x001144, inte); nv_wr32(gpio, 0x001144, inte);
} }
struct nouveau_oclass * struct nvkm_oclass *
nv10_gpio_oclass = &(struct nouveau_gpio_impl) { nv10_gpio_oclass = &(struct nvkm_gpio_impl) {
.base.handle = NV_SUBDEV(GPIO, 0x10), .base.handle = NV_SUBDEV(GPIO, 0x10),
.base.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nvkm_ofuncs) {
.ctor = _nouveau_gpio_ctor, .ctor = _nvkm_gpio_ctor,
.dtor = _nouveau_gpio_dtor, .dtor = _nvkm_gpio_dtor,
.init = _nouveau_gpio_init, .init = _nvkm_gpio_init,
.fini = _nouveau_gpio_fini, .fini = _nvkm_gpio_fini,
}, },
.lines = 16, .lines = 16,
.intr_stat = nv10_gpio_intr_stat, .intr_stat = nv10_gpio_intr_stat,
......
...@@ -21,13 +21,12 @@ ...@@ -21,13 +21,12 @@
* *
* Authors: Ben Skeggs * Authors: Ben Skeggs
*/ */
#include "priv.h" #include "priv.h"
void void
nv50_gpio_reset(struct nouveau_gpio *gpio, u8 match) nv50_gpio_reset(struct nvkm_gpio *gpio, u8 match)
{ {
struct nouveau_bios *bios = nouveau_bios(gpio); struct nvkm_bios *bios = nvkm_bios(gpio);
u8 ver, len; u8 ver, len;
u16 entry; u16 entry;
int ent = -1; int ent = -1;
...@@ -68,7 +67,7 @@ nv50_gpio_location(int line, u32 *reg, u32 *shift) ...@@ -68,7 +67,7 @@ nv50_gpio_location(int line, u32 *reg, u32 *shift)
} }
int int
nv50_gpio_drive(struct nouveau_gpio *gpio, int line, int dir, int out) nv50_gpio_drive(struct nvkm_gpio *gpio, int line, int dir, int out)
{ {
u32 reg, shift; u32 reg, shift;
...@@ -80,7 +79,7 @@ nv50_gpio_drive(struct nouveau_gpio *gpio, int line, int dir, int out) ...@@ -80,7 +79,7 @@ nv50_gpio_drive(struct nouveau_gpio *gpio, int line, int dir, int out)
} }
int int
nv50_gpio_sense(struct nouveau_gpio *gpio, int line) nv50_gpio_sense(struct nvkm_gpio *gpio, int line)
{ {
u32 reg, shift; u32 reg, shift;
...@@ -91,7 +90,7 @@ nv50_gpio_sense(struct nouveau_gpio *gpio, int line) ...@@ -91,7 +90,7 @@ nv50_gpio_sense(struct nouveau_gpio *gpio, int line)
} }
static void static void
nv50_gpio_intr_stat(struct nouveau_gpio *gpio, u32 *hi, u32 *lo) nv50_gpio_intr_stat(struct nvkm_gpio *gpio, u32 *hi, u32 *lo)
{ {
u32 intr = nv_rd32(gpio, 0x00e054); u32 intr = nv_rd32(gpio, 0x00e054);
u32 stat = nv_rd32(gpio, 0x00e050) & intr; u32 stat = nv_rd32(gpio, 0x00e050) & intr;
...@@ -101,7 +100,7 @@ nv50_gpio_intr_stat(struct nouveau_gpio *gpio, u32 *hi, u32 *lo) ...@@ -101,7 +100,7 @@ nv50_gpio_intr_stat(struct nouveau_gpio *gpio, u32 *hi, u32 *lo)
} }
static void static void
nv50_gpio_intr_mask(struct nouveau_gpio *gpio, u32 type, u32 mask, u32 data) nv50_gpio_intr_mask(struct nvkm_gpio *gpio, u32 type, u32 mask, u32 data)
{ {
u32 inte = nv_rd32(gpio, 0x00e050); u32 inte = nv_rd32(gpio, 0x00e050);
if (type & NVKM_GPIO_LO) if (type & NVKM_GPIO_LO)
...@@ -111,14 +110,14 @@ nv50_gpio_intr_mask(struct nouveau_gpio *gpio, u32 type, u32 mask, u32 data) ...@@ -111,14 +110,14 @@ nv50_gpio_intr_mask(struct nouveau_gpio *gpio, u32 type, u32 mask, u32 data)
nv_wr32(gpio, 0x00e050, inte); nv_wr32(gpio, 0x00e050, inte);
} }
struct nouveau_oclass * struct nvkm_oclass *
nv50_gpio_oclass = &(struct nouveau_gpio_impl) { nv50_gpio_oclass = &(struct nvkm_gpio_impl) {
.base.handle = NV_SUBDEV(GPIO, 0x50), .base.handle = NV_SUBDEV(GPIO, 0x50),
.base.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nvkm_ofuncs) {
.ctor = _nouveau_gpio_ctor, .ctor = _nvkm_gpio_ctor,
.dtor = _nouveau_gpio_dtor, .dtor = _nvkm_gpio_dtor,
.init = _nouveau_gpio_init, .init = _nvkm_gpio_init,
.fini = _nouveau_gpio_fini, .fini = _nvkm_gpio_fini,
}, },
.lines = 16, .lines = 16,
.intr_stat = nv50_gpio_intr_stat, .intr_stat = nv50_gpio_intr_stat,
......
#ifndef __NVKM_GPIO_H__ #ifndef __NVKM_GPIO_PRIV_H__
#define __NVKM_GPIO_H__ #define __NVKM_GPIO_PRIV_H__
#include <subdev/gpio.h> #include <subdev/gpio.h>
#define nouveau_gpio_create(p,e,o,d) \ #define nvkm_gpio_create(p,e,o,d) \
nouveau_gpio_create_((p), (e), (o), sizeof(**d), (void **)d) nvkm_gpio_create_((p), (e), (o), sizeof(**d), (void **)d)
#define nouveau_gpio_destroy(p) ({ \ #define nvkm_gpio_destroy(p) ({ \
struct nouveau_gpio *gpio = (p); \ struct nvkm_gpio *gpio = (p); \
_nouveau_gpio_dtor(nv_object(gpio)); \ _nvkm_gpio_dtor(nv_object(gpio)); \
}) })
#define nouveau_gpio_init(p) ({ \ #define nvkm_gpio_init(p) ({ \
struct nouveau_gpio *gpio = (p); \ struct nvkm_gpio *gpio = (p); \
_nouveau_gpio_init(nv_object(gpio)); \ _nvkm_gpio_init(nv_object(gpio)); \
}) })
#define nouveau_gpio_fini(p,s) ({ \ #define nvkm_gpio_fini(p,s) ({ \
struct nouveau_gpio *gpio = (p); \ struct nvkm_gpio *gpio = (p); \
_nouveau_gpio_fini(nv_object(gpio), (s)); \ _nvkm_gpio_fini(nv_object(gpio), (s)); \
}) })
int nouveau_gpio_create_(struct nouveau_object *, struct nouveau_object *, int nvkm_gpio_create_(struct nvkm_object *, struct nvkm_object *,
struct nouveau_oclass *, int, void **); struct nvkm_oclass *, int, void **);
int _nouveau_gpio_ctor(struct nouveau_object *, struct nouveau_object *, int _nvkm_gpio_ctor(struct nvkm_object *, struct nvkm_object *,
struct nouveau_oclass *, void *, u32, struct nvkm_oclass *, void *, u32,
struct nouveau_object **); struct nvkm_object **);
void _nouveau_gpio_dtor(struct nouveau_object *); void _nvkm_gpio_dtor(struct nvkm_object *);
int _nouveau_gpio_init(struct nouveau_object *); int _nvkm_gpio_init(struct nvkm_object *);
int _nouveau_gpio_fini(struct nouveau_object *, bool); int _nvkm_gpio_fini(struct nvkm_object *, bool);
struct nouveau_gpio_impl { struct nvkm_gpio_impl {
struct nouveau_oclass base; struct nvkm_oclass base;
int lines; int lines;
/* read and ack pending interrupts, returning only data /* read and ack pending interrupts, returning only data
* for lines that have not been masked off, while still * for lines that have not been masked off, while still
* performing the ack for anything that was pending. * performing the ack for anything that was pending.
*/ */
void (*intr_stat)(struct nouveau_gpio *, u32 *, u32 *); void (*intr_stat)(struct nvkm_gpio *, u32 *, u32 *);
/* mask on/off interrupts for hi/lo transitions on a /* mask on/off interrupts for hi/lo transitions on a
* given set of gpio lines * given set of gpio lines
*/ */
void (*intr_mask)(struct nouveau_gpio *, u32, u32, u32); void (*intr_mask)(struct nvkm_gpio *, u32, u32, u32);
/* configure gpio direction and output value */ /* configure gpio direction and output value */
int (*drive)(struct nouveau_gpio *, int line, int dir, int out); int (*drive)(struct nvkm_gpio *, int line, int dir, int out);
/* sense current state of given gpio line */ /* sense current state of given gpio line */
int (*sense)(struct nouveau_gpio *, int line); int (*sense)(struct nvkm_gpio *, int line);
/*XXX*/ /*XXX*/
void (*reset)(struct nouveau_gpio *, u8); void (*reset)(struct nvkm_gpio *, u8);
}; };
void nv50_gpio_reset(struct nouveau_gpio *, u8); void nv50_gpio_reset(struct nvkm_gpio *, u8);
int nv50_gpio_drive(struct nouveau_gpio *, int, int, int); int nv50_gpio_drive(struct nvkm_gpio *, int, int, int);
int nv50_gpio_sense(struct nouveau_gpio *, int); int nv50_gpio_sense(struct nvkm_gpio *, int);
void nv94_gpio_intr_stat(struct nouveau_gpio *, u32 *, u32 *);
void nv94_gpio_intr_mask(struct nouveau_gpio *, u32, u32, u32);
void nvd0_gpio_reset(struct nouveau_gpio *, u8);
int nvd0_gpio_drive(struct nouveau_gpio *, int, int, int);
int nvd0_gpio_sense(struct nouveau_gpio *, int);
void g94_gpio_intr_stat(struct nvkm_gpio *, u32 *, u32 *);
void g94_gpio_intr_mask(struct nvkm_gpio *, u32, u32, u32);
void gf110_gpio_reset(struct nvkm_gpio *, u8);
int gf110_gpio_drive(struct nvkm_gpio *, int, int, int);
int gf110_gpio_sense(struct nvkm_gpio *, int);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment