Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b845ba9 authored by Mark Brown's avatar Mark Brown Committed by Samuel Ortiz
Browse files

mfd: sec: Add register cache for interrupt mask registers



The performance of regmap-irq is improved if the interrupt mask registers
can be cached since it does read/modify/update cycles so start using the
register cache infrastructure for those registers. We should use this more
widely but I don't have a datasheet and this is a nice, conservative
starting point.

Signed-off-by: default avatarMark Brown <broonie@linaro.org>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 1d057b85
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -106,6 +106,31 @@ int sec_reg_update(struct sec_pmic_dev *sec_pmic, u8 reg, u8 val, u8 mask)
}
EXPORT_SYMBOL_GPL(sec_reg_update);

static bool s2mps11_volatile(struct device *dev, unsigned int reg)
{
	switch (reg) {
	case S2MPS11_REG_INT1M:
	case S2MPS11_REG_INT2M:
	case S2MPS11_REG_INT3M:
		return false;
	default:
		return true;
	}
}

static bool s5m8763_volatile(struct device *dev, unsigned int reg)
{
	switch (reg) {
	case S5M8763_REG_IRQM1:
	case S5M8763_REG_IRQM2:
	case S5M8763_REG_IRQM3:
	case S5M8763_REG_IRQM4:
		return false;
	default:
		return true;
	}
}

static struct regmap_config sec_regmap_config = {
	.reg_bits = 8,
	.val_bits = 8,
@@ -116,6 +141,8 @@ static struct regmap_config s2mps11_regmap_config = {
	.val_bits = 8,

	.max_register = S2MPS11_REG_L38CTRL,
	.volatile_reg = s2mps11_volatile,
	.cache_type = REGCACHE_FLAT,
};

static struct regmap_config s5m8763_regmap_config = {
@@ -123,6 +150,8 @@ static struct regmap_config s5m8763_regmap_config = {
	.val_bits = 8,

	.max_register = S5M8763_REG_LBCNFG2,
	.volatile_reg = s5m8763_volatile,
	.cache_type = REGCACHE_FLAT,
};

static struct regmap_config s5m8767_regmap_config = {
@@ -130,6 +159,8 @@ static struct regmap_config s5m8767_regmap_config = {
	.val_bits = 8,

	.max_register = S5M8767_REG_LDO28CTRL,
	.volatile_reg = s2mps11_volatile,
	.cache_type = REGCACHE_FLAT,
};

#ifdef CONFIG_OF