Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0833428e authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/bios: parsing for various tables required for power management



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent aa4d7a4d
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -28,7 +28,9 @@ nouveau-y += core/subdev/bar/nv50.o
nouveau-y += core/subdev/bar/nvc0.o
nouveau-y += core/subdev/bios/base.o
nouveau-y += core/subdev/bios/bit.o
nouveau-y += core/subdev/bios/boost.o
nouveau-y += core/subdev/bios/conn.o
nouveau-y += core/subdev/bios/cstep.o
nouveau-y += core/subdev/bios/dcb.o
nouveau-y += core/subdev/bios/disp.o
nouveau-y += core/subdev/bios/dp.o
@@ -39,7 +41,11 @@ nouveau-y += core/subdev/bios/init.o
nouveau-y += core/subdev/bios/mxm.o
nouveau-y += core/subdev/bios/perf.o
nouveau-y += core/subdev/bios/pll.o
nouveau-y += core/subdev/bios/rammap.o
nouveau-y += core/subdev/bios/timing.o
nouveau-y += core/subdev/bios/therm.o
nouveau-y += core/subdev/bios/vmap.o
nouveau-y += core/subdev/bios/volt.o
nouveau-y += core/subdev/bios/xpio.o
nouveau-y += core/subdev/bus/nv04.o
nouveau-y += core/subdev/bus/nv31.o
+29 −0
Original line number Diff line number Diff line
#ifndef __NVBIOS_BOOST_H__
#define __NVBIOS_BOOST_H__

u16 nvbios_boostTe(struct nouveau_bios *, u8 *, u8 *, u8 *, u8 *, u8 *, u8 *);

struct nvbios_boostE {
	u8  pstate;
	u32 min;
	u32 max;
};

u16 nvbios_boostEe(struct nouveau_bios *, int idx, u8 *, u8 *, u8 *, u8 *);
u16 nvbios_boostEp(struct nouveau_bios *, int idx, u8 *, u8 *, u8 *, u8 *,
		   struct nvbios_boostE *);
u16 nvbios_boostEm(struct nouveau_bios *, u8, u8 *, u8 *, u8 *, u8 *,
		   struct nvbios_boostE *);

struct nvbios_boostS {
	u8  domain;
	u8  percent;
	u32 min;
	u32 max;
};

u16 nvbios_boostSe(struct nouveau_bios *, int, u16, u8 *, u8 *, u8, u8);
u16 nvbios_boostSp(struct nouveau_bios *, int, u16, u8 *, u8 *, u8, u8,
		   struct nvbios_boostS *);

#endif
+28 −0
Original line number Diff line number Diff line
#ifndef __NVBIOS_CSTEP_H__
#define __NVBIOS_CSTEP_H__

u16 nvbios_cstepTe(struct nouveau_bios *,
		   u8 *ver, u8 *hdr, u8 *cnt, u8 *len, u8 *xnr, u8 *xsz);

struct nvbios_cstepE {
	u8  pstate;
	u8  index;
};

u16 nvbios_cstepEe(struct nouveau_bios *, int idx, u8 *ver, u8 *hdr);
u16 nvbios_cstepEp(struct nouveau_bios *, int idx, u8 *ver, u8 *hdr,
		   struct nvbios_cstepE *);
u16 nvbios_cstepEm(struct nouveau_bios *, u8 pstate, u8 *ver, u8 *hdr,
		   struct nvbios_cstepE *);

struct nvbios_cstepX {
	u32 freq;
	u8  unkn[2];
	u8  voltage;
};

u16 nvbios_cstepXe(struct nouveau_bios *, int idx, u8 *ver, u8 *hdr);
u16 nvbios_cstepXp(struct nouveau_bios *, int idx, u8 *ver, u8 *hdr,
		   struct nvbios_cstepX *);

#endif
+9 −1
Original line number Diff line number Diff line
@@ -7,7 +7,15 @@ enum dcb_gpio_func_name {
	DCB_GPIO_TVDAC1 = 0x2d,
	DCB_GPIO_FAN = 0x09,
	DCB_GPIO_FAN_SENSE = 0x3d,
	DCB_GPIO_UNUSED = 0xff
	DCB_GPIO_UNUSED = 0xff,
	DCB_GPIO_VID0 = 0x04,
	DCB_GPIO_VID1 = 0x05,
	DCB_GPIO_VID2 = 0x06,
	DCB_GPIO_VID3 = 0x1a,
	DCB_GPIO_VID4 = 0x73,
	DCB_GPIO_VID5 = 0x74,
	DCB_GPIO_VID6 = 0x75,
	DCB_GPIO_VID7 = 0x76,
};

#define DCB_GPIO_LOG_DIR     0x02
+33 −0
Original line number Diff line number Diff line
@@ -3,6 +3,39 @@

struct nouveau_bios;

u16 nvbios_perf_table(struct nouveau_bios *, u8 *ver, u8 *hdr,
		      u8 *cnt, u8 *len, u8 *snr, u8 *ssz);

struct nvbios_perfE {
	u8  pstate;
	u8  fanspeed;
	u8  voltage;
	u32 core;
	u32 shader;
	u32 memory;
	u32 vdec;
	u32 disp;
	u32 script;
};

u16 nvbios_perf_entry(struct nouveau_bios *, int idx,
		      u8 *ver, u8 *hdr, u8 *cnt, u8 *len);
u16 nvbios_perfEp(struct nouveau_bios *, int idx,
		  u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_perfE *);

struct nvbios_perfS {
	union {
		struct {
			u32 freq;
		} v40;
	};
};

u32 nvbios_perfSe(struct nouveau_bios *, u32 data, int idx,
		  u8 *ver, u8 *hdr, u8 cnt, u8 len);
u32 nvbios_perfSp(struct nouveau_bios *, u32 data, int idx,
		  u8 *ver, u8 *hdr, u8 cnt, u8 len, struct nvbios_perfS *);

struct nvbios_perf_fan {
	u32 pwm_divisor;
};
Loading