Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mfd: tps65219: Implement LOCK register handling for TPS65214

The TPS65214 PMIC variant has a LOCK_REG register that prevents writes to
nearly all registers when locked. Unlock the registers at probe time and
leave them unlocked permanently.

This approach is justified because:
- Register locking is very uncommon in typical system operation
- No code path is expected to lock the registers during runtime
- Adding a custom regmap write function would add overhead to every
register write, including voltage changes triggered by CPU OPP
transitions from the cpufreq governor which could happen quite
frequently

Cc: stable@vger.kernel.org
Fixes: 7947219ab1a2d ("mfd: tps65219: Add support for TI TPS65214 PMIC")
Reviewed-by: Andrew Davis <afd@ti.com>
Signed-off-by: Kory Maincent (TI.com) <kory.maincent@bootlin.com>
Link: https://patch.msgid.link/20251218-fix_tps65219-v5-1-8bb511417f3a@bootlin.com
Signed-off-by: Lee Jones <lee@kernel.org>

authored by

Kory Maincent (TI.com) and committed by
Lee Jones
d3fcf276 05995af0

+11
+9
drivers/mfd/tps65219.c
··· 498 498 return ret; 499 499 } 500 500 501 + if (chip_id == TPS65214) { 502 + ret = i2c_smbus_write_byte_data(client, TPS65214_REG_LOCK, 503 + TPS65214_LOCK_ACCESS_CMD); 504 + if (ret) { 505 + dev_err(tps->dev, "Failed to unlock registers %d\n", ret); 506 + return ret; 507 + } 508 + } 509 + 501 510 ret = devm_regmap_add_irq_chip(tps->dev, tps->regmap, client->irq, 502 511 IRQF_ONESHOT, 0, pmic->irq_chip, 503 512 &tps->irq_data);
+2
include/linux/mfd/tps65219.h
··· 149 149 #define TPS65215_ENABLE_LDO2_EN_MASK BIT(5) 150 150 #define TPS65214_ENABLE_LDO1_EN_MASK BIT(5) 151 151 #define TPS65219_ENABLE_LDO4_EN_MASK BIT(6) 152 + /* Register Unlock */ 153 + #define TPS65214_LOCK_ACCESS_CMD 0x5a 152 154 /* power ON-OFF sequence slot */ 153 155 #define TPS65219_BUCKS_LDOS_SEQUENCE_OFF_SLOT_MASK GENMASK(3, 0) 154 156 #define TPS65219_BUCKS_LDOS_SEQUENCE_ON_SLOT_MASK GENMASK(7, 4)