#define ZYNQ_GPIO_MAX_BANK     4
 #define ZYNQMP_GPIO_MAX_BANK   6
 #define VERSAL_GPIO_MAX_BANK   4
+#define PMC_GPIO_MAX_BANK      5
 #define VERSAL_UNUSED_BANKS    2
 
 #define ZYNQ_GPIO_BANK0_NGPIO  32
        .bank_max[3] = 57, /* Bank 3 is connected to FMIOs (32 pins) */
 };
 
+static const struct zynq_platform_data pmc_gpio_def = {
+       .label = "pmc_gpio",
+       .ngpio = 116,
+       .max_bank = PMC_GPIO_MAX_BANK,
+       .bank_min[0] = 0,
+       .bank_max[0] = 25, /* 0 to 25 are connected to MIOs (26 pins) */
+       .bank_min[1] = 26,
+       .bank_max[1] = 51, /* Bank 1 are connected to MIOs (26 pins) */
+       .bank_min[3] = 52,
+       .bank_max[3] = 83, /* Bank 3 is connected to EMIOs (32 pins) */
+       .bank_min[4] = 84,
+       .bank_max[4] = 115, /* Bank 4 is connected to EMIOs (32 pins) */
+};
+
 static const struct zynq_platform_data zynqmp_gpio_def = {
        .label = "zynqmp_gpio",
        .quirks = GPIO_QUIRK_DATA_RO_BUG,
        { .compatible = "xlnx,zynq-gpio-1.0", .data = &zynq_gpio_def },
        { .compatible = "xlnx,zynqmp-gpio-1.0", .data = &zynqmp_gpio_def },
        { .compatible = "xlnx,versal-gpio-1.0", .data = &versal_gpio_def },
+       { .compatible = "xlnx,pmc-gpio-1.0", .data = &pmc_gpio_def },
        { /* end of table */ }
 };
 MODULE_DEVICE_TABLE(of, zynq_gpio_of_match);