mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
mfd: bcm590xx: Add support for multiple device types + BCM59054 compatible
The BCM59054 is another chip from the BCM590xx line of PMUs, commonly used on devices with the BCM21664/BCM23550 chipsets. Prepare the BCM590xx driver for supporting other devices by adding the PMUID register values for supported chip types and store them in the MFD data struct as "pmu_id". (These will be checked against the actual PMUID register values in a later commit.) Then, add a DT compatible for the BCM59054, and provide the PMU ID as OF match data. Signed-off-by: Artur Weber <aweber.kernel@gmail.com> Reviewed-by: Stanislav Jakubek <stano.jakubek@gmail.com> Link: https://lore.kernel.org/r/20250515-bcm59054-v9-3-14ba0ea2ea5b@gmail.com Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
parent
13980ebf8e
commit
6adf48a3aa
2 changed files with 18 additions and 1 deletions
|
@ -50,6 +50,8 @@ static int bcm590xx_i2c_probe(struct i2c_client *i2c_pri)
|
|||
bcm590xx->dev = &i2c_pri->dev;
|
||||
bcm590xx->i2c_pri = i2c_pri;
|
||||
|
||||
bcm590xx->pmu_id = (uintptr_t) of_device_get_match_data(bcm590xx->dev);
|
||||
|
||||
bcm590xx->regmap_pri = devm_regmap_init_i2c(i2c_pri,
|
||||
&bcm590xx_regmap_config_pri);
|
||||
if (IS_ERR(bcm590xx->regmap_pri)) {
|
||||
|
@ -91,12 +93,20 @@ err:
|
|||
}
|
||||
|
||||
static const struct of_device_id bcm590xx_of_match[] = {
|
||||
{ .compatible = "brcm,bcm59056" },
|
||||
{
|
||||
.compatible = "brcm,bcm59054",
|
||||
.data = (void *)BCM590XX_PMUID_BCM59054,
|
||||
},
|
||||
{
|
||||
.compatible = "brcm,bcm59056",
|
||||
.data = (void *)BCM590XX_PMUID_BCM59056,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, bcm590xx_of_match);
|
||||
|
||||
static const struct i2c_device_id bcm590xx_i2c_id[] = {
|
||||
{ "bcm59054" },
|
||||
{ "bcm59056" },
|
||||
{ }
|
||||
};
|
||||
|
|
|
@ -13,6 +13,10 @@
|
|||
#include <linux/i2c.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
/* PMU ID register values; also used as device type */
|
||||
#define BCM590XX_PMUID_BCM59054 0x54
|
||||
#define BCM590XX_PMUID_BCM59056 0x56
|
||||
|
||||
/* max register address */
|
||||
#define BCM590XX_MAX_REGISTER_PRI 0xe7
|
||||
#define BCM590XX_MAX_REGISTER_SEC 0xf0
|
||||
|
@ -24,6 +28,9 @@ struct bcm590xx {
|
|||
struct regmap *regmap_pri;
|
||||
struct regmap *regmap_sec;
|
||||
unsigned int id;
|
||||
|
||||
/* PMU ID value; also used as device type */
|
||||
u8 pmu_id;
|
||||
};
|
||||
|
||||
#endif /* __LINUX_MFD_BCM590XX_H */
|
||||
|
|
Loading…
Add table
Reference in a new issue