Skip to content

Commit 81ab554

Browse files
committed
pinctrl: intel: Split intel_config_get() to three functions
Split intel_config_get() to three functions, i.e. intel_config_get() and two helpers intel_config_get_pull() and intel_config_get_debounce() to be symmetrical with intel_config_set*(). Signed-off-by: Andy Shevchenko <[email protected]> Acked-by: Mika Westerberg <[email protected]>
1 parent 8fff042 commit 81ab554

File tree

1 file changed

+61
-28
lines changed

1 file changed

+61
-28
lines changed

drivers/pinctrl/intel/pinctrl-intel.c

Lines changed: 61 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -521,20 +521,17 @@ static const struct pinmux_ops intel_pinmux_ops = {
521521
.gpio_set_direction = intel_gpio_set_direction,
522522
};
523523

524-
static int intel_config_get(struct pinctrl_dev *pctldev, unsigned int pin,
525-
unsigned long *config)
524+
static int intel_config_get_pull(struct intel_pinctrl *pctrl, unsigned int pin,
525+
enum pin_config_param param, u32 *arg)
526526
{
527-
struct intel_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev);
528-
enum pin_config_param param = pinconf_to_config_param(*config);
529527
const struct intel_community *community;
528+
void __iomem *padcfg1;
530529
u32 value, term;
531-
u32 arg = 0;
532-
533-
if (!intel_pad_owned_by_host(pctrl, pin))
534-
return -ENOTSUPP;
535530

536531
community = intel_get_community(pctrl, pin);
537-
value = readl(intel_get_padcfg(pctrl, pin, PADCFG1));
532+
padcfg1 = intel_get_padcfg(pctrl, pin, PADCFG1);
533+
value = readl(padcfg1);
534+
538535
term = (value & PADCFG1_TERM_MASK) >> PADCFG1_TERM_SHIFT;
539536

540537
switch (param) {
@@ -549,16 +546,16 @@ static int intel_config_get(struct pinctrl_dev *pctldev, unsigned int pin,
549546

550547
switch (term) {
551548
case PADCFG1_TERM_1K:
552-
arg = 1000;
549+
*arg = 1000;
553550
break;
554551
case PADCFG1_TERM_2K:
555-
arg = 2000;
552+
*arg = 2000;
556553
break;
557554
case PADCFG1_TERM_5K:
558-
arg = 5000;
555+
*arg = 5000;
559556
break;
560557
case PADCFG1_TERM_20K:
561-
arg = 20000;
558+
*arg = 20000;
562559
break;
563560
}
564561

@@ -572,35 +569,71 @@ static int intel_config_get(struct pinctrl_dev *pctldev, unsigned int pin,
572569
case PADCFG1_TERM_1K:
573570
if (!(community->features & PINCTRL_FEATURE_1K_PD))
574571
return -EINVAL;
575-
arg = 1000;
572+
*arg = 1000;
576573
break;
577574
case PADCFG1_TERM_5K:
578-
arg = 5000;
575+
*arg = 5000;
579576
break;
580577
case PADCFG1_TERM_20K:
581-
arg = 20000;
578+
*arg = 20000;
582579
break;
583580
}
584581

585582
break;
586583

587-
case PIN_CONFIG_INPUT_DEBOUNCE: {
588-
void __iomem *padcfg2;
589-
u32 v;
584+
default:
585+
return -EINVAL;
586+
}
587+
588+
return 0;
589+
}
590590

591-
padcfg2 = intel_get_padcfg(pctrl, pin, PADCFG2);
592-
if (!padcfg2)
593-
return -ENOTSUPP;
591+
static int intel_config_get_debounce(struct intel_pinctrl *pctrl, unsigned int pin,
592+
enum pin_config_param param, u32 *arg)
593+
{
594+
void __iomem *padcfg2;
595+
unsigned long v;
596+
u32 value2;
594597

595-
v = readl(padcfg2);
596-
if (!(v & PADCFG2_DEBEN))
597-
return -EINVAL;
598+
padcfg2 = intel_get_padcfg(pctrl, pin, PADCFG2);
599+
if (!padcfg2)
600+
return -ENOTSUPP;
601+
602+
value2 = readl(padcfg2);
603+
if (!(value2 & PADCFG2_DEBEN))
604+
return -EINVAL;
605+
606+
v = (value2 & PADCFG2_DEBOUNCE_MASK) >> PADCFG2_DEBOUNCE_SHIFT;
607+
*arg = BIT(v) * DEBOUNCE_PERIOD_NSEC / NSEC_PER_USEC;
608+
609+
return 0;
610+
}
611+
612+
static int intel_config_get(struct pinctrl_dev *pctldev, unsigned int pin,
613+
unsigned long *config)
614+
{
615+
struct intel_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev);
616+
enum pin_config_param param = pinconf_to_config_param(*config);
617+
u32 arg = 0;
618+
int ret;
598619

599-
v = (v & PADCFG2_DEBOUNCE_MASK) >> PADCFG2_DEBOUNCE_SHIFT;
600-
arg = BIT(v) * DEBOUNCE_PERIOD_NSEC / NSEC_PER_USEC;
620+
if (!intel_pad_owned_by_host(pctrl, pin))
621+
return -ENOTSUPP;
601622

623+
switch (param) {
624+
case PIN_CONFIG_BIAS_DISABLE:
625+
case PIN_CONFIG_BIAS_PULL_UP:
626+
case PIN_CONFIG_BIAS_PULL_DOWN:
627+
ret = intel_config_get_pull(pctrl, pin, param, &arg);
628+
if (ret)
629+
return ret;
630+
break;
631+
632+
case PIN_CONFIG_INPUT_DEBOUNCE:
633+
ret = intel_config_get_debounce(pctrl, pin, param, &arg);
634+
if (ret)
635+
return ret;
602636
break;
603-
}
604637

605638
default:
606639
return -ENOTSUPP;

0 commit comments

Comments
 (0)