drivers: soc: xilinx: Add ZynqMP power domain driver
The zynqmp-genpd driver communicates the usage requirements for logical power domains / devices to the platform FW. FW is responsible for choosing appropriate power states, taking Linux' usage information into account. Signed-off-by: Rajan Vaja <rajan.vaja@xilinx.com> Signed-off-by: Jolly Shah <jolly.shah@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
@@ -6,6 +6,7 @@ menu "Zynq MPSoC Firmware Drivers"
|
||||
|
||||
config ZYNQMP_FIRMWARE
|
||||
bool "Enable Xilinx Zynq MPSoC firmware interface"
|
||||
select MFD_CORE
|
||||
help
|
||||
Firmware interface driver is used by different
|
||||
drivers to communicate with the firmware for
|
||||
|
@@ -14,6 +14,7 @@
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/mfd/core.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_platform.h>
|
||||
@@ -23,6 +24,12 @@
|
||||
#include <linux/firmware/xlnx-zynqmp.h>
|
||||
#include "zynqmp-debug.h"
|
||||
|
||||
static const struct mfd_cell firmware_devs[] = {
|
||||
{
|
||||
.name = "zynqmp_power_controller",
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
* zynqmp_pm_ret_code() - Convert PMU-FW error codes to Linux error codes
|
||||
* @ret_status: PMUFW return code
|
||||
@@ -689,11 +696,19 @@ static int zynqmp_firmware_probe(struct platform_device *pdev)
|
||||
|
||||
zynqmp_pm_api_debugfs_init();
|
||||
|
||||
ret = mfd_add_devices(&pdev->dev, PLATFORM_DEVID_NONE, firmware_devs,
|
||||
ARRAY_SIZE(firmware_devs), NULL, 0, NULL);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "failed to add MFD devices %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return of_platform_populate(dev->of_node, NULL, NULL, dev);
|
||||
}
|
||||
|
||||
static int zynqmp_firmware_remove(struct platform_device *pdev)
|
||||
{
|
||||
mfd_remove_devices(&pdev->dev);
|
||||
zynqmp_pm_api_debugfs_exit();
|
||||
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user