diff options
author | Mark Brown <broonie@kernel.org> | 2022-12-12 11:50:58 +0000 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2022-12-12 11:50:58 +0000 |
commit | 22250dbaba99f87574095af894610e9801d74419 (patch) | |
tree | e0e14ffb1659cb3cb72448689e6c0d7601baadbf | |
parent | 69af4bcaa08d06fd4d788a7f7193fb3c40ac6aba (diff) | |
parent | 84498d1fb35de6ab71bdfdb6270a464fb4a0951b (diff) | |
download | lwn-22250dbaba99f87574095af894610e9801d74419.tar.gz lwn-22250dbaba99f87574095af894610e9801d74419.zip |
regmap: Merge fix for where we get the number of registers from
This didn't get sent for 6.1 since we should do a better fix but that
didn't happen in time.
-rw-r--r-- | drivers/base/regmap/regmap-irq.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/base/regmap/regmap-irq.c b/drivers/base/regmap/regmap-irq.c index 968681fa8d09..a8f185430a07 100644 --- a/drivers/base/regmap/regmap-irq.c +++ b/drivers/base/regmap/regmap-irq.c @@ -730,6 +730,7 @@ int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode, int i; int ret = -ENOMEM; int num_type_reg; + int num_regs; u32 reg; if (chip->num_regs <= 0) @@ -804,14 +805,20 @@ int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode, goto err_alloc; } - num_type_reg = chip->type_in_mask ? chip->num_regs : chip->num_type_reg; - if (num_type_reg) { - d->type_buf_def = kcalloc(num_type_reg, + /* + * Use num_config_regs if defined, otherwise fall back to num_type_reg + * to maintain backward compatibility. + */ + num_type_reg = chip->num_config_regs ? chip->num_config_regs + : chip->num_type_reg; + num_regs = chip->type_in_mask ? chip->num_regs : num_type_reg; + if (num_regs) { + d->type_buf_def = kcalloc(num_regs, sizeof(*d->type_buf_def), GFP_KERNEL); if (!d->type_buf_def) goto err_alloc; - d->type_buf = kcalloc(num_type_reg, sizeof(*d->type_buf), + d->type_buf = kcalloc(num_regs, sizeof(*d->type_buf), GFP_KERNEL); if (!d->type_buf) goto err_alloc; |