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

Commit b413e3fa authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by Guenter Roeck
Browse files

docs: hwmon: fam15h_power: convert to ReST format



Convert fam15h_power to ReST format, in order to allow it to
be parsed by Sphinx.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent a9fc881b
Loading
Loading
Loading
Loading
+57 −28
Original line number Diff line number Diff line
@@ -2,15 +2,20 @@ Kernel driver fam15h_power
==========================

Supported chips:

* AMD Family 15h Processors

* AMD Family 16h Processors

  Prefix: 'fam15h_power'

  Addresses scanned: PCI space

  Datasheets:
  BIOS and Kernel Developer's Guide (BKDG) For AMD Family 15h Processors
  BIOS and Kernel Developer's Guide (BKDG) For AMD Family 16h Processors
  AMD64 Architecture Programmer's Manual Volume 2: System Programming

  - BIOS and Kernel Developer's Guide (BKDG) For AMD Family 15h Processors
  - BIOS and Kernel Developer's Guide (BKDG) For AMD Family 16h Processors
  - AMD64 Architecture Programmer's Manual Volume 2: System Programming

Author: Andreas Herrmann <herrmann.der.user@googlemail.com>

@@ -31,14 +36,19 @@ For AMD Family 15h and 16h processors the following power values can
be calculated using different processor northbridge function
registers:

* BasePwrWatts: Specifies in watts the maximum amount of power
* BasePwrWatts:
    Specifies in watts the maximum amount of power
    consumed by the processor for NB and logic external to the core.
* ProcessorPwrWatts: Specifies in watts the maximum amount of power

* ProcessorPwrWatts:
    Specifies in watts the maximum amount of power
    the processor can support.
* CurrPwrWatts: Specifies in watts the current amount of power being
* CurrPwrWatts:
    Specifies in watts the current amount of power being
    consumed by the processor.

This driver provides ProcessorPwrWatts and CurrPwrWatts:

* power1_crit (ProcessorPwrWatts)
* power1_input (CurrPwrWatts)

@@ -53,35 +63,53 @@ calculate the average power consumed by a processor during a
measurement interval Tm. The feature of accumulated power mechanism is
indicated by CPUID Fn8000_0007_EDX[12].

* Tsample: compute unit power accumulator sample period
* Tref: the PTSC counter period
* PTSC: performance timestamp counter
* N: the ratio of compute unit power accumulator sample period to the
* Tsample:
	compute unit power accumulator sample period

* Tref:
	the PTSC counter period

* PTSC:
	performance timestamp counter

* N:
	the ratio of compute unit power accumulator sample period to the
	PTSC period
* Jmax: max compute unit accumulated power which is indicated by

* Jmax:
	max compute unit accumulated power which is indicated by
	MaxCpuSwPwrAcc MSR C001007b
* Jx/Jy: compute unit accumulated power which is indicated by

* Jx/Jy:
	compute unit accumulated power which is indicated by
	CpuSwPwrAcc MSR C001007a
* Tx/Ty: the value of performance timestamp counter which is indicated
* Tx/Ty:
	the value of performance timestamp counter which is indicated
	by CU_PTSC MSR C0010280
* PwrCPUave: CPU average power

* PwrCPUave:
	CPU average power

i. Determine the ratio of Tsample to Tref by executing CPUID Fn8000_0007.

	N = value of CPUID Fn8000_0007_ECX[CpuPwrSampleTimeRatio[15:0]].

ii. Read the full range of the cumulative energy value from the new
    MSR MaxCpuSwPwrAcc.

	Jmax = value returned.

iii. At time x, SW reads CpuSwPwrAcc MSR and samples the PTSC.
	Jx = value read from CpuSwPwrAcc and Tx = value read from
PTSC.

	Jx = value read from CpuSwPwrAcc and Tx = value read from PTSC.

iv. At time y, SW reads CpuSwPwrAcc MSR and samples the PTSC.
	Jy = value read from CpuSwPwrAcc and Ty = value read from
PTSC.

	Jy = value read from CpuSwPwrAcc and Ty = value read from PTSC.

v. Calculate the average power consumption for a compute unit over
time period (y-x). Unit of result is uWatt.
   time period (y-x). Unit of result is uWatt::

	if (Jy < Jx) // Rollover has occurred
		Jdelta = (Jy + Jmax) - Jx
	else
@@ -90,13 +118,14 @@ time period (y-x). Unit of result is uWatt.

This driver provides PwrCPUave and interval(default is 10 millisecond
and maximum is 1 second):

* power1_average (PwrCPUave)
* power1_average_interval (Interval)

The power1_average_interval can be updated at /etc/sensors3.conf file
as below:

chip "fam15h_power-*"
chip `fam15h_power-*`
	set power1_average_interval 0.01

Then save it with "sensors -s".