gpio: pca953x: Clean up pcal6534_check_register()
The pcal6534_check_register() is a bit too verbose. Clean up it, by deduplicating some operations and switching to the modulo operation as on some architectures / and % can become a single assembly instruction. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
parent
b1453d1eb9
commit
a87f901b59
@ -306,6 +306,7 @@ static bool pca953x_check_register(struct pca953x_chip *chip, unsigned int reg,
|
|||||||
static bool pcal6534_check_register(struct pca953x_chip *chip, unsigned int reg,
|
static bool pcal6534_check_register(struct pca953x_chip *chip, unsigned int reg,
|
||||||
u32 checkbank)
|
u32 checkbank)
|
||||||
{
|
{
|
||||||
|
int bank_shift;
|
||||||
int bank;
|
int bank;
|
||||||
int offset;
|
int offset;
|
||||||
|
|
||||||
@ -314,26 +315,22 @@ static bool pcal6534_check_register(struct pca953x_chip *chip, unsigned int reg,
|
|||||||
* Handle lack of reserved registers after output port
|
* Handle lack of reserved registers after output port
|
||||||
* configuration register to form a bank.
|
* configuration register to form a bank.
|
||||||
*/
|
*/
|
||||||
int temp = reg - 0x54;
|
reg -= 0x54;
|
||||||
|
bank_shift = 16;
|
||||||
bank = temp / NBANK(chip);
|
|
||||||
offset = temp - (bank * NBANK(chip));
|
|
||||||
bank += 16;
|
|
||||||
} else if (reg >= 0x30) {
|
} else if (reg >= 0x30) {
|
||||||
/*
|
/*
|
||||||
* Reserved block between 14h and 2Fh does not align on
|
* Reserved block between 14h and 2Fh does not align on
|
||||||
* expected bank boundaries like other devices.
|
* expected bank boundaries like other devices.
|
||||||
*/
|
*/
|
||||||
int temp = reg - 0x30;
|
reg -= 0x30;
|
||||||
|
bank_shift = 8;
|
||||||
bank = temp / NBANK(chip);
|
|
||||||
offset = temp - (bank * NBANK(chip));
|
|
||||||
bank += 8;
|
|
||||||
} else {
|
} else {
|
||||||
bank = reg / NBANK(chip);
|
bank_shift = 0;
|
||||||
offset = reg - (bank * NBANK(chip));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bank = bank_shift + reg / NBANK(chip);
|
||||||
|
offset = reg % NBANK(chip);
|
||||||
|
|
||||||
/* Register is not in the matching bank. */
|
/* Register is not in the matching bank. */
|
||||||
if (!(BIT(bank) & checkbank))
|
if (!(BIT(bank) & checkbank))
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user