@@ -13,6 +13,7 @@
#include <linux/mfd/mp2629.h>
#include <linux/module.h>
#include <linux/platform_device.h>
+#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/slab.h>
@@ -43,6 +44,7 @@ static int mp2629_probe(struct i2c_client *client)
return -ENOMEM;
ddata->dev = &client->dev;
+ ddata->chip_id = (uintptr_t)device_get_match_data(&client->dev);
i2c_set_clientdata(client, ddata);
ddata->regmap = devm_regmap_init_i2c(client, &mp2629_regmap_config);
@@ -60,7 +62,8 @@ static int mp2629_probe(struct i2c_client *client)
}
static const struct of_device_id mp2629_of_match[] = {
- { .compatible = "mps,mp2629"},
+ { .compatible = "mps,mp2629", .data = (void *)CHIP_ID_MP2629 },
+ { .compatible = "mps,mp2733", .data = (void *)CHIP_ID_MP2733 },
{ }
};
MODULE_DEVICE_TABLE(of, mp2629_of_match);
@@ -9,9 +9,15 @@
#include <linux/device.h>
#include <linux/regmap.h>
+enum mp2xx_chip_id {
+ CHIP_ID_MP2629,
+ CHIP_ID_MP2733,
+};
+
struct mp2629_data {
struct device *dev;
struct regmap *regmap;
+ enum mp2xx_chip_id chip_id;
};
enum mp2629_adc_chan {