Browse Source

zynqmp: firmware: Add Xilinx ZynqMP firmware driver

Add simple ZynqMP firmware drive to populate child nodes under
zynqmp_firmware DT node.

Signed-off-by: Rajan Vaja <rajan.vaja@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Rajan Vaja 5 years ago
parent
commit
14723ed544
5 changed files with 28 additions and 0 deletions
  1. 1 0
      MAINTAINERS
  2. 1 0
      drivers/clk/Kconfig
  3. 10 0
      drivers/firmware/Kconfig
  4. 1 0
      drivers/firmware/Makefile
  5. 15 0
      drivers/firmware/firmware-zynqmp.c

+ 1 - 0
MAINTAINERS

@@ -443,6 +443,7 @@ S:	Maintained
 T:	git https://gitlab.denx.de/u-boot/custodians/u-boot-microblaze.git
 F:	arch/arm/mach-zynqmp/
 F:	drivers/clk/clk_zynqmp.c
+F:	driver/firmware/firmware-zynqmp.c
 F:	drivers/fpga/zynqpl.c
 F:	drivers/gpio/zynq_gpio.c
 F:	drivers/i2c/i2c-cdns.c

+ 1 - 0
drivers/clk/Kconfig

@@ -113,6 +113,7 @@ config CLK_ZYNQ
 config CLK_ZYNQMP
 	bool "Enable clock driver support for ZynqMP"
 	depends on ARCH_ZYNQMP
+	select ZYNQMP_FIRMWARE
 	help
 	  This clock driver adds support for clock realted settings for
 	  ZynqMP platform.

+ 10 - 0
drivers/firmware/Kconfig

@@ -26,3 +26,13 @@ config TI_SCI_PROTOCOL
 
 	  This protocol library is used by client drivers to use the features
 	  provided by the system controller.
+
+config ZYNQMP_FIRMWARE
+	bool "ZynqMP Firmware interface"
+	select FIRMWARE
+	help
+	  Firmware interface driver is used by different
+	  drivers to communicate with the firmware for
+	  various platform management services.
+	  Say yes to enable ZynqMP firmware interface driver.
+	  If in doubt, say N.

+ 1 - 0
drivers/firmware/Makefile

@@ -2,3 +2,4 @@ obj-$(CONFIG_FIRMWARE)		+= firmware-uclass.o
 obj-$(CONFIG_$(SPL_)ARM_PSCI_FW)	+= psci.o
 obj-$(CONFIG_TI_SCI_PROTOCOL)	+= ti_sci.o
 obj-$(CONFIG_SANDBOX)		+= firmware-sandbox.o
+obj-$(CONFIG_ZYNQMP_FIRMWARE)	+= firmware-zynqmp.o

+ 15 - 0
drivers/firmware/firmware-zynqmp.c

@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include <dm.h>
+
+static const struct udevice_id zynqmp_firmware_ids[] = {
+	{ .compatible = "xlnx,zynqmp-firmware" },
+	{ }
+};
+
+U_BOOT_DRIVER(zynqmp_firmware) = {
+	.id = UCLASS_FIRMWARE,
+	.name = "zynqmp-firmware",
+	.probe = dm_scan_fdt_dev,
+	.of_match = zynqmp_firmware_ids,
+};