Skip to content

Commit e5544d9

Browse files
committed
pinctrl: intel: Move debounce validation out of the lock
There is no need to validate debounce value under the lock. Move it outside. It also results in a smaller binary: add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-11 (-11) Total: Before=15374, After=15363, chg -0.07% Acked-by: Mika Westerberg <[email protected]> Signed-off-by: Andy Shevchenko <[email protected]>
1 parent 8400291 commit e5544d9

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

drivers/pinctrl/intel/pinctrl-intel.c

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -758,6 +758,15 @@ static int intel_config_set_debounce(struct intel_pinctrl *pctrl,
758758
{
759759
void __iomem *padcfg0, *padcfg2;
760760
u32 value0, value2;
761+
unsigned long v;
762+
763+
if (debounce) {
764+
v = order_base_2(debounce * NSEC_PER_USEC / DEBOUNCE_PERIOD_NSEC);
765+
if (v < 3 || v > 15)
766+
return -EINVAL;
767+
} else {
768+
v = 0;
769+
}
761770

762771
padcfg2 = intel_get_padcfg(pctrl, pin, PADCFG2);
763772
if (!padcfg2)
@@ -770,21 +779,15 @@ static int intel_config_set_debounce(struct intel_pinctrl *pctrl,
770779
value0 = readl(padcfg0);
771780
value2 = readl(padcfg2);
772781

773-
/* Disable glitch filter and debouncer */
774-
value0 &= ~PADCFG0_PREGFRXSEL;
775-
value2 &= ~(PADCFG2_DEBEN | PADCFG2_DEBOUNCE_MASK);
776-
777-
if (debounce) {
778-
unsigned long v;
779-
780-
v = order_base_2(debounce * NSEC_PER_USEC / DEBOUNCE_PERIOD_NSEC);
781-
if (v < 3 || v > 15)
782-
return -EINVAL;
783-
782+
value2 = (value2 & ~PADCFG2_DEBOUNCE_MASK) | (v << PADCFG2_DEBOUNCE_SHIFT);
783+
if (v) {
784784
/* Enable glitch filter and debouncer */
785785
value0 |= PADCFG0_PREGFRXSEL;
786-
value2 |= v << PADCFG2_DEBOUNCE_SHIFT;
787786
value2 |= PADCFG2_DEBEN;
787+
} else {
788+
/* Disable glitch filter and debouncer */
789+
value0 &= ~PADCFG0_PREGFRXSEL;
790+
value2 &= ~PADCFG2_DEBEN;
788791
}
789792

790793
writel(value0, padcfg0);

0 commit comments

Comments
 (0)