mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-16 01:54:00 +00:00
mfd: tps6594-i2c: Add TI TPS65224 PMIC I2C
Add support for TPS65224 PMIC in TPS6594's I2C driver which has significant functional overlap. Signed-off-by: Bhargav Raviprakash <bhargav.r@ltts.com> Acked-by: Julien Panis <jpanis@baylibre.com> Link: https://lore.kernel.org/r/0109018f2fdaecea-12513236-1059-4227-9078-7b3e0d447cc0-000000@ap-south-1.amazonses.com Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
parent
91fbd80064
commit
f8e5fc60e6
@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* I2C access driver for TI TPS6594/TPS6593/LP8764 PMICs
|
* I2C access driver for TI TPS65224/TPS6594/TPS6593/LP8764 PMICs
|
||||||
*
|
*
|
||||||
* Copyright (C) 2023 BayLibre Incorporated - https://www.baylibre.com/
|
* Copyright (C) 2023 BayLibre Incorporated - https://www.baylibre.com/
|
||||||
*/
|
*/
|
||||||
@ -183,7 +183,7 @@ static int tps6594_i2c_write(void *context, const void *data, size_t count)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct regmap_config tps6594_i2c_regmap_config = {
|
static struct regmap_config tps6594_i2c_regmap_config = {
|
||||||
.reg_bits = 16,
|
.reg_bits = 16,
|
||||||
.val_bits = 8,
|
.val_bits = 8,
|
||||||
.max_register = TPS6594_REG_DWD_FAIL_CNT_REG,
|
.max_register = TPS6594_REG_DWD_FAIL_CNT_REG,
|
||||||
@ -196,6 +196,7 @@ static const struct of_device_id tps6594_i2c_of_match_table[] = {
|
|||||||
{ .compatible = "ti,tps6594-q1", .data = (void *)TPS6594, },
|
{ .compatible = "ti,tps6594-q1", .data = (void *)TPS6594, },
|
||||||
{ .compatible = "ti,tps6593-q1", .data = (void *)TPS6593, },
|
{ .compatible = "ti,tps6593-q1", .data = (void *)TPS6593, },
|
||||||
{ .compatible = "ti,lp8764-q1", .data = (void *)LP8764, },
|
{ .compatible = "ti,lp8764-q1", .data = (void *)LP8764, },
|
||||||
|
{ .compatible = "ti,tps65224-q1", .data = (void *)TPS65224, },
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, tps6594_i2c_of_match_table);
|
MODULE_DEVICE_TABLE(of, tps6594_i2c_of_match_table);
|
||||||
@ -216,15 +217,18 @@ static int tps6594_i2c_probe(struct i2c_client *client)
|
|||||||
tps->reg = client->addr;
|
tps->reg = client->addr;
|
||||||
tps->irq = client->irq;
|
tps->irq = client->irq;
|
||||||
|
|
||||||
tps->regmap = devm_regmap_init(dev, NULL, client, &tps6594_i2c_regmap_config);
|
|
||||||
if (IS_ERR(tps->regmap))
|
|
||||||
return dev_err_probe(dev, PTR_ERR(tps->regmap), "Failed to init regmap\n");
|
|
||||||
|
|
||||||
match = of_match_device(tps6594_i2c_of_match_table, dev);
|
match = of_match_device(tps6594_i2c_of_match_table, dev);
|
||||||
if (!match)
|
if (!match)
|
||||||
return dev_err_probe(dev, -EINVAL, "Failed to find matching chip ID\n");
|
return dev_err_probe(dev, -EINVAL, "Failed to find matching chip ID\n");
|
||||||
tps->chip_id = (unsigned long)match->data;
|
tps->chip_id = (unsigned long)match->data;
|
||||||
|
|
||||||
|
if (tps->chip_id == TPS65224)
|
||||||
|
tps6594_i2c_regmap_config.volatile_table = &tps65224_volatile_table;
|
||||||
|
|
||||||
|
tps->regmap = devm_regmap_init(dev, NULL, client, &tps6594_i2c_regmap_config);
|
||||||
|
if (IS_ERR(tps->regmap))
|
||||||
|
return dev_err_probe(dev, PTR_ERR(tps->regmap), "Failed to init regmap\n");
|
||||||
|
|
||||||
crc8_populate_msb(tps6594_i2c_crc_table, TPS6594_CRC8_POLYNOMIAL);
|
crc8_populate_msb(tps6594_i2c_crc_table, TPS6594_CRC8_POLYNOMIAL);
|
||||||
|
|
||||||
return tps6594_device_init(tps, enable_crc);
|
return tps6594_device_init(tps, enable_crc);
|
||||||
@ -240,5 +244,5 @@ static struct i2c_driver tps6594_i2c_driver = {
|
|||||||
module_i2c_driver(tps6594_i2c_driver);
|
module_i2c_driver(tps6594_i2c_driver);
|
||||||
|
|
||||||
MODULE_AUTHOR("Julien Panis <jpanis@baylibre.com>");
|
MODULE_AUTHOR("Julien Panis <jpanis@baylibre.com>");
|
||||||
MODULE_DESCRIPTION("TPS6594 I2C Interface Driver");
|
MODULE_DESCRIPTION("I2C Interface Driver for TPS65224, TPS6594/3, and LP8764");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user