linux-imx/Documentation/ABI/stable/sysfs-driver-firmware-zynqmp
Ronak Jain de85123395 firmware: zynqmp: Add documentation for runtime feature config
Add documentation for sysfs entries like feature_config_id and
 feature_config_value for runtime feature configuration. The support is
 added for an over temperature and external watchdog features.

Acked-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Ronak Jain <ronak.jain@xilinx.com>
Link: https://lore.kernel.org/r/20220209082709.32378-3-ronak.jain@xilinx.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-02-25 12:13:20 +01:00

9.7 KiB

What: /sys/devices/platform/firmware:zynqmp-firmware/ggs* Date: March 2020 KernelVersion: 5.6 Contact: "Jolly Shah" jollys@xilinx.com Description: Read/Write PMU global general storage register value, GLOBAL_GEN_STORAGE{0:3}. Global general storage register that can be used by system to pass information between masters.

	The register is reset during system or power-on
	resets. Three registers are used by the FSBL and
	other Xilinx software products: GLOBAL_GEN_STORAGE{4:6}.

	Usage::

	    # cat /sys/devices/platform/firmware\:zynqmp-firmware/ggs0
	    # echo <value> > /sys/devices/platform/firmware\:zynqmp-firmware/ggs0

	Example::

	    # cat /sys/devices/platform/firmware\:zynqmp-firmware/ggs0
	    # echo 0x1234ABCD > /sys/devices/platform/firmware\:zynqmp-firmware/ggs0

Users: Xilinx

What: /sys/devices/platform/firmware:zynqmp-firmware/pggs* Date: March 2020 KernelVersion: 5.6 Contact: "Jolly Shah" jollys@xilinx.com Description: Read/Write PMU persistent global general storage register value, PERS_GLOB_GEN_STORAGE{0:3}. Persistent global general storage register that can be used by system to pass information between masters.

	This register is only reset by the power-on reset
	and maintains its value through a system reset.
	Four registers are used by the FSBL and other Xilinx
	software products: PERS_GLOB_GEN_STORAGE{4:7}.
	Register is reset only by a POR reset.

	Usage::

	    # cat /sys/devices/platform/firmware\:zynqmp-firmware/pggs0
	    # echo <value> > /sys/devices/platform/firmware\:zynqmp-firmware/pggs0

	Example::

	    # cat /sys/devices/platform/firmware\:zynqmp-firmware/pggs0
	    # echo 0x1234ABCD > /sys/devices/platform/firmware\:zynqmp-firmware/pggs0

Users: Xilinx

What: /sys/devices/platform/firmware:zynqmp-firmware/shutdown_scope Date: March 2020 KernelVersion: 5.6 Contact: "Jolly Shah" jollys@xilinx.com Description: This sysfs interface allows to set the shutdown scope for the next shutdown request. When the next shutdown is performed, the platform specific portion of PSCI-system_off can use the chosen shutdown scope.

	Following are available shutdown scopes(subtypes):

	subsystem:
			Only the APU along with all of its peripherals
			not used by other processing units will be
			shut down. This may result in the FPD power
			domain being shut down provided that no other
			processing unit uses FPD peripherals or DRAM.
	ps_only:
			The complete PS will be shut down, including the
			RPU, PMU, etc.  Only the PL domain (FPGA)
			remains untouched.
	system:
			The complete system/device is shut down.

	Usage::

	    # cat /sys/devices/platform/firmware\:zynqmp-firmware/shutdown_scope
	    # echo <scope> > /sys/devices/platform/firmware\:zynqmp-firmware/shutdown_scope

	Example::

	    # cat /sys/devices/platform/firmware\:zynqmp-firmware/shutdown_scope
	    # echo "subsystem" > /sys/devices/platform/firmware\:zynqmp-firmware/shutdown_scope

Users: Xilinx

What: /sys/devices/platform/firmware:zynqmp-firmware/health_status Date: March 2020 KernelVersion: 5.6 Contact: "Jolly Shah" jollys@xilinx.com Description: This sysfs interface allows to set the health status. If PMUFW is compiled with CHECK_HEALTHY_BOOT, it will check the healthy bit on FPD WDT expiration. If healthy bit is set by a user application running in Linux, PMUFW will do APU only restart. If healthy bit is not set during FPD WDT expiration, PMUFW will do system restart.

	Usage:

	Set healthy bit::

	    # echo 1 > /sys/devices/platform/firmware\:zynqmp-firmware/health_status

	Unset healthy bit::

	    # echo 0 > /sys/devices/platform/firmware\:zynqmp-firmware/health_status

Users: Xilinx

What: /sys/devices/platform/firmware:zynqmp-firmware/feature_config_id Date: Feb 2022 KernelVersion: 5.18 Contact: "Ronak Jain" ronak.jain@xilinx.com Description: This sysfs interface allows user to configure features at runtime. The user can enable or disable features running at firmware as well as the user can configure the parameters of the features at runtime. The supported features are over temperature and external watchdog. Here, the external watchdog is completely different than the /dev/watchdog as the external watchdog is running on the firmware and it is used to monitor the health of firmware not APU(Linux). Also, the external watchdog is interfaced outside of the zynqmp soc.

	The supported config ids are for the feature configuration is,
	1. PM_FEATURE_OVERTEMP_STATUS = 1, the user can enable or
	disable the over temperature feature.
	2. PM_FEATURE_OVERTEMP_VALUE = 2, the user can configure the
	over temperature limit in Degree Celsius.
	3. PM_FEATURE_EXTWDT_STATUS = 3, the user can enable or disable
	the external watchdog feature.
	4. PM_FEATURE_EXTWDT_VALUE = 4, the user can configure the
	external watchdog feature.

	Usage:

	Select over temperature config ID to enable/disable feature
	# echo 1 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id

	Check over temperature config ID is selected or not
	# cat /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id
	The expected result is 1.

	Select over temperature config ID to configure OT limit
	# echo 2 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id

	Check over temperature config ID is selected or not
	# cat /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id
	The expected result is 2.

	Select external watchdog config ID to enable/disable feature
	# echo 3 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id

	Check external watchdog config ID is selected or not
	# cat /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id
	The expected result is 3.

	Select external watchdog config ID to configure time interval
	# echo 4 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id

	Check external watchdog config ID is selected or not
	# cat /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id
	The expected result is 4.

Users: Xilinx

What: /sys/devices/platform/firmware:zynqmp-firmware/feature_config_value Date: Feb 2022 KernelVersion: 5.18 Contact: "Ronak Jain" ronak.jain@xilinx.com Description: This sysfs interface allows to configure features at runtime. The user can enable or disable features running at firmware. Also, the user can configure the parameters of the features at runtime. The supported features are over temperature and external watchdog. Here, the external watchdog is completely different than the /dev/watchdog as the external watchdog is running on the firmware and it is used to monitor the health of firmware not APU(Linux). Also, the external watchdog is interfaced outside of the zynqmp soc.

	By default the features are disabled in the firmware. The user
	can enable features by querying appropriate config id of the
	features.

	The default limit for the over temperature is 90 Degree Celsius.
	The default timer interval for the external watchdog is 570ms.

	The supported config ids are for the feature configuration is,
	1. PM_FEATURE_OVERTEMP_STATUS = 1, the user can enable or
	disable the over temperature feature.
	2. PM_FEATURE_OVERTEMP_VALUE = 2, the user can configure the
	over temperature limit in Degree Celsius.
	3. PM_FEATURE_EXTWDT_STATUS = 3, the user can enable or disable
	the external watchdog feature.
	4. PM_FEATURE_EXTWDT_VALUE = 4, the user can configure the
	external watchdog feature.

	Usage:

	Enable over temperature feature
	# echo 1 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id
	# echo 1 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_value

	Check whether the over temperature feature is enabled or not
	# cat /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_value
	The expected result is 1.

	Disable over temperature feature
	# echo 1 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id
	# echo 0 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_value

	Check whether the over temperature feature is disabled or not
	# cat /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_value
	The expected result is 0.

	Configure over temperature limit to 50 Degree Celsius
	# echo 2 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id
	# echo 50 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_value

	Check whether the over temperature limit is configured or not
	# cat /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_value
	The expected result is 50.

	Enable external watchdog feature
	# echo 3 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id
	# echo 1 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_value

	Check whether the external watchdog feature is enabled or not
	# cat /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_value
	The expected result is 1.

	Disable external watchdog feature
	# echo 3 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id
	# echo 0 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_value

	Check whether the external watchdog feature is disabled or not
	# cat /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_value
	The expected result is 0.

	Configure external watchdog timer interval to 500ms
	# echo 4 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_id
	# echo 500 > /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_value

	Check whether the external watchdog timer interval is configured or not
	# cat /sys/devices/platform/firmware\:zynqmp-firmware/feature_config_value
	The expected result is 500.

Users: Xilinx