From 6a08616a30213fd40a17c38c63de4b9c9503a537 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Wed, 19 Jan 2022 17:22:57 +0000 Subject: [PATCH] mfd: simple-mfd-i2c: Add configuration for RPi POE HAT The Raspbery Pi PoE+ HAT exposes a fan controller and power supply status reporting via a single I2C address. Create an MFD device that allows loading of the relevant sub-drivers, with a shared I2C regmap. Signed-off-by: Dave Stevenson --- drivers/mfd/Kconfig | 10 ++++++++++ drivers/mfd/simple-mfd-i2c.c | 10 ++++++++++ 2 files changed, 20 insertions(+) --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -1094,6 +1094,16 @@ config MFD_SPMI_PMIC Say M here if you want to include support for the SPMI PMIC series as a module. The module will be called "qcom-spmi-pmic". +config MFD_RASPBERRYPI_POE_HAT + tristate "Raspberry Pi PoE HAT MFD" + depends on I2C + select MFD_SIMPLE_MFD_I2C + help + This module supports the PWM fan controller found on the Raspberry Pi + POE and POE+ HAT boards, and the power supply driver on the POE+ HAT. + (Functionally it relies on MFD_SIMPLE_MFD_I2C to provide the framework + that loads the child drivers). + config MFD_RDC321X tristate "RDC R-321x southbridge" select MFD_CORE --- a/drivers/mfd/simple-mfd-i2c.c +++ b/drivers/mfd/simple-mfd-i2c.c @@ -29,6 +29,15 @@ static const struct regmap_config regmap .val_bits = 8, }; +static const struct regmap_config regmap_config_16r_8v = { + .reg_bits = 16, + .val_bits = 8, +}; + +static const struct simple_mfd_data rpi_poe_core = { + .regmap_config = ®map_config_16r_8v, +}; + static int simple_mfd_i2c_probe(struct i2c_client *i2c) { const struct simple_mfd_data *simple_mfd_data; @@ -64,6 +73,7 @@ static int simple_mfd_i2c_probe(struct i static const struct of_device_id simple_mfd_i2c_of_match[] = { { .compatible = "kontron,sl28cpld" }, + { .compatible = "raspberrypi,poe-core", &rpi_poe_core }, {} }; MODULE_DEVICE_TABLE(of, simple_mfd_i2c_of_match);