On Mon, Jun 20, 2022 at 10:08 PM Aidan MacDonald aidanmacdonald.0x0@gmail.com wrote:
This flag is necessary to prepare for fixing the behavior of unmask registers. Existing chips that set mask_base and unmask_base must set broken_mask_unmask=1 to declare that they expect the mask bits
Boolean should take true/false.
will be inverted in both registers, contrary to the usual behavior of mask registers.
diff --git a/include/linux/regmap.h b/include/linux/regmap.h index ee2567a0465c..21a70fd99493 100644 --- a/include/linux/regmap.h +++ b/include/linux/regmap.h @@ -1523,6 +1523,7 @@ struct regmap_irq_chip { bool clear_on_unmask:1; bool not_fixed_stride:1; bool status_invert:1;
bool broken_mask_unmask:1;
Looking at the given context, I would group it with clean_on_unmask above.
The above is weird enough on its own. Can you prepare a precursor patch that either drops the bit fields of booleans or moves them to unsigned int?
Note, bit fields in C are beasts when it goes to concurrent access. It would be nice to ensure these are not the cases of a such.