diff options
author | Farouk Bouabid <farouk.bouabid@cherry.de> | 2024-09-06 18:54:15 +0300 |
---|---|---|
committer | Guenter Roeck <linux@roeck-us.net> | 2024-11-11 01:48:06 +0300 |
commit | 8f38236de689afe1ebba6ff25676f0631818ef37 (patch) | |
tree | cbf47260c0f8af534be4950671560ebef354cb9e /drivers/hwmon | |
parent | 247a80fde14edc84feb8bae707e60a55993ee636 (diff) | |
download | linux-8f38236de689afe1ebba6ff25676f0631818ef37.tar.xz |
hwmon: (amc6821) add support for tsd,mule
Theobroma Systems Mule is an MCU that emulates a set of I2C devices,
among which is an amc6821 and other devices that are reachable through
an I2C-mux.
The devices on the mux can be selected by writing the appropriate device
number to an I2C config register (amc6821: reg 0xff)
Implement "tsd,mule" compatible to instantiate the I2C-mux platform device
when probing the amc6821.
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Farouk Bouabid <farouk.bouabid@cherry.de>
Message-ID: <20240906-dev-mule-i2c-mux-v8-4-dbd28a150e41@cherry.de>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Diffstat (limited to 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/amc6821.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c index e86027f850c9..1e3c6acd8974 100644 --- a/drivers/hwmon/amc6821.c +++ b/drivers/hwmon/amc6821.c @@ -22,6 +22,7 @@ #include <linux/minmax.h> #include <linux/module.h> #include <linux/mutex.h> +#include <linux/of_platform.h> #include <linux/regmap.h> #include <linux/slab.h> @@ -893,7 +894,6 @@ static bool amc6821_volatile_reg(struct device *dev, unsigned int reg) static const struct regmap_config amc6821_regmap_config = { .reg_bits = 8, .val_bits = 8, - .max_register = AMC6821_REG_CONF3, .volatile_reg = amc6821_volatile_reg, .cache_type = REGCACHE_MAPLE, }; @@ -920,6 +920,13 @@ static int amc6821_probe(struct i2c_client *client) if (err) return err; + if (of_device_is_compatible(dev->of_node, "tsd,mule")) { + err = devm_of_platform_populate(dev); + if (err) + return dev_err_probe(dev, err, + "Failed to create sub-devices\n"); + } + hwmon_dev = devm_hwmon_device_register_with_info(dev, client->name, data, &amc6821_chip_info, amc6821_groups); @@ -937,6 +944,9 @@ static const struct of_device_id __maybe_unused amc6821_of_match[] = { { .compatible = "ti,amc6821", }, + { + .compatible = "tsd,mule", + }, { } }; |