<?xml version="1.0"?>

<!--
use "man thermal-conf.xml" for details
-->

<!-- BEGIN -->
<ThermalConfiguration>
<Platform>
	<Name>Generic X86 Laptop Device</Name>
	<ProductName>*</ProductName>
	<Preference>QUIET</Preference>
	<ThermalSensors>
		<ThermalSensor>
			<Type>TSKN</Type>
			<AsyncCapable>1</AsyncCapable>
		</ThermalSensor>
	</ThermalSensors>
	<ThermalZones>
		<ThermalZone>
			<Type>SKIN</Type>
			<TripPoints>
				<TripPoint>
					<SensorType>TSKN</SensorType>
					<Temperature>55000</Temperature>
					<type>passive</type>
					<ControlType>SEQUENTIAL</ControlType>
					<CoolingDevice>
						<index>1</index>
						<type>rapl_controller</type>
						<influence> 100 </influence>
						<SamplingPeriod> 16 </SamplingPeriod>
					</CoolingDevice>
					<CoolingDevice>
						<index>2</index>
						<type>intel_powerclamp</type>
						<influence> 100 </influence>
						<SamplingPeriod> 12 </SamplingPeriod>
					</CoolingDevice>
				</TripPoint>
			</TripPoints>
		</ThermalZone>
	</ThermalZones>
</Platform>

<!-- Thermal configuration example only -->
<Platform>
	<Name>Example Platform Name</Name>
	<!--UUID is optional, if present this will be matched -->
	<!-- Both product name and UUID can contain
		wild card "*", which matches any platform
	 -->
	<UUID>Example UUID</UUID>
	<ProductName>Example Product Name</ProductName>
	<Preference>QUIET</Preference>
	<ThermalSensors>
		<ThermalSensor>
			<!-- New Sensor with a type and path -->
			<Type>example_sensor_1</Type>
			<Path>/some_path</Path>
			<AsyncCapable>0</AsyncCapable>
		</ThermalSensor>
		<ThermalSensor>
			<!-- Already present in thermal sysfs,
				enable this or add/change config
				For example, here we are indicating that
				sensor can do async events to avoid polling
			-->
			<Type>example_thermal_sysfs_sensor</Type>
			<!-- If async capable, then we don't need to poll -->
			<AsyncCapable>1</AsyncCapable>
		</ThermalSensor>
		<ThermalSensor>
			<!-- Examle of a virtual sensor. This sensor
				depends on other real sensor or
				virtual sensor.
				E.g. here the temp will be
				 temp of example_sensor_1 * 0.5 + 10
			-->
			<Type>example_virtual_sensor</Type>
			<Virtual>1</Virtual>
			<SensorLink>
				<SensorType>example_sensor_1</SensorType>
				<Multiplier> 0.5 </Multiplier>
				<Offset> 10 </Offset>
			</SensorLink>
		</ThermalSensor>

	</ThermalSensors>
	<ThermalZones>
		<ThermalZone>
			<Type>Example Zone type</Type>
			<TripPoints>
				<TripPoint>
					<SensorType>example_sensor_1</SensorType>
					<!-- Temperature at which to take action -->
					<Temperature> 75000 </Temperature>
					<!-- max/passive/active
						If a MAX type is specified, then
						daemon will use PID control
						to aggresively throttle to avoid
						reaching this temp.
					 -->
					<type>max</type>
					<!-- SEQUENTIAL | PARALLEL
					When a trip point temp is violated, then
					number of cooling device can be activated.
					If control type is SEQUENTIAL then
					It will exhaust first cooling device before trying
					next.
					-->
					<ControlType>SEQUENTIAL</ControlType>
					<CoolingDevice>
						<index>1</index>
						<type>example_cooling_device</type>
						<!-- Influence will be used order cooling devices.
							First cooling device will be used, which has
							highest influence.
						-->
						<influence> 100 </influence>
						<!-- Delay in using this cdev, this takes some time
						too actually cool a zone
						-->
						<SamplingPeriod> 12 </SamplingPeriod>
					</CoolingDevice>
				</TripPoint>

			</TripPoints>
		</ThermalZone>
	</ThermalZones>
	<CoolingDevices>
		<CoolingDevice>
			<!--
				Cooling device can be specified
				by a type and optionally a sysfs path
				If the type already present in thermal sysfs
				no need of a path.
				Compensation can use min/max and step size
				to increasing cool the system.
				Debounce period can be used to force
				a waiting period for action
			-->
			<Type>example_cooling_device</Type>
			<MinState>0</MinState>
			<IncDecStep>10</IncDecStep>
			<ReadBack> 0 </ReadBack>
			<MaxState>50</MaxState>
			<DebouncePeriod>5000</DebouncePeriod>
			<!--
				If there are no PID parameter
				compensation increase step wise and exponentaially
				if single step is not able to change trend.
				Alternatively a PID parameters can be specified
				then next step will use PID calculation using
				provided PID constants.
			-->>
			<PidControl>
				<kp>0.001</kp>
				<kd>0.0001</kd>
				<ki>0.0001</ki>
			</PidControl>
		</CoolingDevice>
	</CoolingDevices>
</Platform>
</ThermalConfiguration>
<!-- END -->

