Delta TN48M switches have a Lattice CPLD that serves
multiple purposes including being a GPIO expander.
So, lets use the simple I2C MFD driver to provide the MFD core.
Also add a virtual symbol which pulls in the simple-mfd-i2c driver and
provide a common symbol on which the subdevice drivers can depend on.
Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Link: https://lore.kernel.org/r/20220131133049.77780-2-robert.marko@sartura.hr
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
          This driver supports the ASIC3 multifunction chip found on many
          PDAs (mainly iPAQ and HTC based ones)
 
+config MFD_TN48M_CPLD
+       tristate "Delta Networks TN48M switch CPLD driver"
+       depends on I2C
+       depends on ARCH_MVEBU || COMPILE_TEST
+       select MFD_SIMPLE_MFD_I2C
+       help
+         Select this option to enable support for Delta Networks TN48M switch
+         CPLD. It consists of reset and GPIO drivers. CPLD provides GPIOS-s
+         for the SFP slots as well as power supply related information.
+         SFP support depends on the GPIO driver being selected.
+
 config PMIC_DA903X
        bool "Dialog Semiconductor DA9030/DA9034 PMIC Support"
        depends on I2C=y
 
 
 static const struct of_device_id simple_mfd_i2c_of_match[] = {
        { .compatible = "kontron,sl28cpld" },
+       { .compatible = "delta,tn48m-cpld" },
        {}
 };
 MODULE_DEVICE_TABLE(of, simple_mfd_i2c_of_match);