[PATCH 1/2] drm/nouveau/nvkm: export symbols needed by the drm driver

Ben Skeggs bskeggs at nvidia.com
Thu Jun 13 17:02:10 UTC 2024


The primary interfaces to NVKM are through NVIF, but there are a small
number of functions which are called directly.

Signed-off-by: Ben Skeggs <bskeggs at nvidia.com>
---
 drivers/gpu/drm/nouveau/nvkm/core/driver.c          | 1 +
 drivers/gpu/drm/nouveau/nvkm/core/gpuobj.c          | 2 ++
 drivers/gpu/drm/nouveau/nvkm/core/mm.c              | 4 ++++
 drivers/gpu/drm/nouveau/nvkm/device/acpi.c          | 1 +
 drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c       | 1 +
 drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c     | 1 +
 drivers/gpu/drm/nouveau/nvkm/subdev/bios/pll.c      | 1 +
 drivers/gpu/drm/nouveau/nvkm/subdev/fb/base.c       | 3 +++
 drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c     | 3 +++
 drivers/gpu/drm/nouveau/nvkm/subdev/i2c/base.c      | 2 ++
 drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c       | 1 +
 drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c | 1 +
 drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c    | 1 +
 drivers/gpu/drm/nouveau/nvkm/subdev/therm/fan.c     | 1 +
 drivers/gpu/drm/nouveau/nvkm/subdev/volt/base.c     | 1 +
 15 files changed, 24 insertions(+)

diff --git a/drivers/gpu/drm/nouveau/nvkm/core/driver.c b/drivers/gpu/drm/nouveau/nvkm/core/driver.c
index dcc5dc7f246e..d6e8117a2a74 100644
--- a/drivers/gpu/drm/nouveau/nvkm/core/driver.c
+++ b/drivers/gpu/drm/nouveau/nvkm/core/driver.c
@@ -78,3 +78,4 @@ nvkm_driver_ctor(struct nvkm_device *device, const struct nvif_driver **pdrv,
 	*pdrv = &nvkm_driver;
 	return 0;
 }
+EXPORT_SYMBOL(nvkm_driver_ctor);
diff --git a/drivers/gpu/drm/nouveau/nvkm/core/gpuobj.c b/drivers/gpu/drm/nouveau/nvkm/core/gpuobj.c
index d6de2b3ed2c3..a06ced74fb10 100644
--- a/drivers/gpu/drm/nouveau/nvkm/core/gpuobj.c
+++ b/drivers/gpu/drm/nouveau/nvkm/core/gpuobj.c
@@ -224,6 +224,7 @@ nvkm_gpuobj_del(struct nvkm_gpuobj **pgpuobj)
 		*pgpuobj = NULL;
 	}
 }
+EXPORT_SYMBOL(nvkm_gpuobj_del);
 
 int
 nvkm_gpuobj_new(struct nvkm_device *device, u32 size, int align, bool zero,
@@ -240,6 +241,7 @@ nvkm_gpuobj_new(struct nvkm_device *device, u32 size, int align, bool zero,
 		nvkm_gpuobj_del(pgpuobj);
 	return ret;
 }
+EXPORT_SYMBOL(nvkm_gpuobj_new);
 
 /* the below is basically only here to support sharing the paged dma object
  * for PCI(E)GART on <=nv4x chipsets, and should *not* be expected to work
diff --git a/drivers/gpu/drm/nouveau/nvkm/core/mm.c b/drivers/gpu/drm/nouveau/nvkm/core/mm.c
index f78a06a6b2f1..c2a66cfe2a1e 100644
--- a/drivers/gpu/drm/nouveau/nvkm/core/mm.c
+++ b/drivers/gpu/drm/nouveau/nvkm/core/mm.c
@@ -81,6 +81,7 @@ nvkm_mm_free(struct nvkm_mm *mm, struct nvkm_mm_node **pthis)
 
 	*pthis = NULL;
 }
+EXPORT_SYMBOL(nvkm_mm_free);
 
 static struct nvkm_mm_node *
 region_head(struct nvkm_mm *mm, struct nvkm_mm_node *a, u32 size)
@@ -156,6 +157,7 @@ nvkm_mm_head(struct nvkm_mm *mm, u8 heap, u8 type, u32 size_max, u32 size_min,
 
 	return -ENOSPC;
 }
+EXPORT_SYMBOL(nvkm_mm_head);
 
 static struct nvkm_mm_node *
 region_tail(struct nvkm_mm *mm, struct nvkm_mm_node *a, u32 size)
@@ -278,6 +280,7 @@ nvkm_mm_init(struct nvkm_mm *mm, u8 heap, u32 offset, u32 length, u32 block)
 	mm->heap_nodes++;
 	return 0;
 }
+EXPORT_SYMBOL(nvkm_mm_init);
 
 int
 nvkm_mm_fini(struct nvkm_mm *mm)
@@ -305,3 +308,4 @@ nvkm_mm_fini(struct nvkm_mm *mm)
 	mm->heap_nodes = 0;
 	return 0;
 }
+EXPORT_SYMBOL(nvkm_mm_fini);
diff --git a/drivers/gpu/drm/nouveau/nvkm/device/acpi.c b/drivers/gpu/drm/nouveau/nvkm/device/acpi.c
index ff8a3027c1bc..941e7d2a29a8 100644
--- a/drivers/gpu/drm/nouveau/nvkm/device/acpi.c
+++ b/drivers/gpu/drm/nouveau/nvkm/device/acpi.c
@@ -109,6 +109,7 @@ void nvkm_acpi_switcheroo_set_powerdown(void)
 			 NOUVEAU_DSM_OPTIMUS_SET_POWERDOWN, &result);
 
 }
+EXPORT_SYMBOL(nvkm_acpi_switcheroo_set_powerdown);
 
 /*
  * On some platforms, _DSM(nvkm_op_dsm_muid, func0) has special
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c
index f5e68f09df76..151c10558c82 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c
@@ -76,6 +76,7 @@ nvkm_gr_units(struct nvkm_gr *gr)
 		return gr->func->units(gr);
 	return 0;
 }
+EXPORT_SYMBOL(nvkm_gr_units);
 
 int
 nvkm_gr_tlb_flush(struct nvkm_gr *gr)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c
index b54f044c4483..3ac3dbc0c03a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c
@@ -2317,6 +2317,7 @@ nvbios_exec(struct nvbios_init *init)
 	init->nested--;
 	return 0;
 }
+EXPORT_SYMBOL(nvbios_exec);
 
 int
 nvbios_post(struct nvkm_subdev *subdev, bool execute)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/pll.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/pll.c
index 2ec84b8a3b3a..1cd5b1996489 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/pll.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/pll.c
@@ -438,3 +438,4 @@ nvbios_pll_parse(struct nvkm_bios *bios, u32 type, struct nvbios_pll *info)
 
 	return 0;
 }
+EXPORT_SYMBOL(nvbios_pll_parse);
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/base.c
index 8a286a9349ac..b1fab6332ed1 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/base.c
@@ -36,6 +36,7 @@ nvkm_fb_tile_fini(struct nvkm_fb *fb, int region, struct nvkm_fb_tile *tile)
 {
 	fb->func->tile.fini(fb, region, tile);
 }
+EXPORT_SYMBOL(nvkm_fb_tile_fini);
 
 void
 nvkm_fb_tile_init(struct nvkm_fb *fb, int region, u32 addr, u32 size,
@@ -43,6 +44,7 @@ nvkm_fb_tile_init(struct nvkm_fb *fb, int region, u32 addr, u32 size,
 {
 	fb->func->tile.init(fb, region, addr, size, pitch, flags, tile);
 }
+EXPORT_SYMBOL(nvkm_fb_tile_init);
 
 void
 nvkm_fb_tile_prog(struct nvkm_fb *fb, int region, struct nvkm_fb_tile *tile)
@@ -56,6 +58,7 @@ nvkm_fb_tile_prog(struct nvkm_fb *fb, int region, struct nvkm_fb_tile *tile)
 			nvkm_engine_tile(device->mpeg, region);
 	}
 }
+EXPORT_SYMBOL(nvkm_fb_tile_prog);
 
 static void
 nvkm_fb_sysmem_flush_page_init(struct nvkm_device *device)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c
index b196baa376dc..f93ce38afd16 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c
@@ -75,6 +75,7 @@ nvkm_gpio_find(struct nvkm_gpio *gpio, int idx, u8 tag, u8 line,
 
 	return -ENOENT;
 }
+EXPORT_SYMBOL(nvkm_gpio_find);
 
 int
 nvkm_gpio_set(struct nvkm_gpio *gpio, int idx, u8 tag, u8 line, int state)
@@ -91,6 +92,7 @@ nvkm_gpio_set(struct nvkm_gpio *gpio, int idx, u8 tag, u8 line, int state)
 
 	return ret;
 }
+EXPORT_SYMBOL(nvkm_gpio_set);
 
 int
 nvkm_gpio_get(struct nvkm_gpio *gpio, int idx, u8 tag, u8 line)
@@ -107,6 +109,7 @@ nvkm_gpio_get(struct nvkm_gpio *gpio, int idx, u8 tag, u8 line)
 
 	return ret;
 }
+EXPORT_SYMBOL(nvkm_gpio_get);
 
 static void
 nvkm_gpio_intr_fini(struct nvkm_event *event, int type, int index)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/base.c
index 731b2f68d3db..845e7f41076e 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/base.c
@@ -71,6 +71,7 @@ nvkm_i2c_bus_find(struct nvkm_i2c *i2c, int id)
 
 	return NULL;
 }
+EXPORT_SYMBOL(nvkm_i2c_bus_find);
 
 struct nvkm_i2c_aux *
 nvkm_i2c_aux_find(struct nvkm_i2c *i2c, int id)
@@ -84,6 +85,7 @@ nvkm_i2c_aux_find(struct nvkm_i2c *i2c, int id)
 
 	return NULL;
 }
+EXPORT_SYMBOL(nvkm_i2c_aux_find);
 
 static void
 nvkm_i2c_intr_fini(struct nvkm_event *event, int type, int id)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c
index ed50cc3736b9..47fade442d14 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.c
@@ -189,6 +189,7 @@ nvkm_i2c_bus_probe(struct nvkm_i2c_bus *bus, const char *what,
 	BUS_DBG(bus, "no devices found.");
 	return -ENODEV;
 }
+EXPORT_SYMBOL(nvkm_i2c_bus_probe);
 
 void
 nvkm_i2c_bus_del(struct nvkm_i2c_bus **pbus)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c
index 8f0ccd3664eb..6e6d7bc0ea1f 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.c
@@ -126,6 +126,7 @@ nvkm_iccsense_read_all(struct nvkm_iccsense *iccsense)
 	}
 	return result;
 }
+EXPORT_SYMBOL(nvkm_iccsense_read_all);
 
 static void *
 nvkm_iccsense_dtor(struct nvkm_subdev *subdev)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c
index fc5ee118e910..2a32559b38f4 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c
@@ -33,6 +33,7 @@ nvkm_therm_temp_get(struct nvkm_therm *therm)
 		return therm->func->temp_get(therm);
 	return -ENODEV;
 }
+EXPORT_SYMBOL(nvkm_therm_temp_get);
 
 static int
 nvkm_therm_update_trip(struct nvkm_therm *therm)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/fan.c b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/fan.c
index f8fa43c8a7d2..418f441897f1 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/fan.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/fan.c
@@ -164,6 +164,7 @@ nvkm_therm_fan_sense(struct nvkm_therm *therm)
 	} else
 		return 0;
 }
+EXPORT_SYMBOL(nvkm_therm_fan_sense);
 
 int
 nvkm_therm_fan_user_get(struct nvkm_therm *therm)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/volt/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/volt/base.c
index a17a6dd8d3de..07d861440232 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/volt/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/volt/base.c
@@ -46,6 +46,7 @@ nvkm_volt_get(struct nvkm_volt *volt)
 	}
 	return ret;
 }
+EXPORT_SYMBOL(nvkm_volt_get);
 
 static int
 nvkm_volt_set(struct nvkm_volt *volt, u32 uv)
-- 
2.44.0



More information about the Nouveau mailing list