@@ -521,20 +521,17 @@ static const struct pinmux_ops intel_pinmux_ops = {
521
521
.gpio_set_direction = intel_gpio_set_direction ,
522
522
};
523
523
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 )
526
526
{
527
- struct intel_pinctrl * pctrl = pinctrl_dev_get_drvdata (pctldev );
528
- enum pin_config_param param = pinconf_to_config_param (* config );
529
527
const struct intel_community * community ;
528
+ void __iomem * padcfg1 ;
530
529
u32 value , term ;
531
- u32 arg = 0 ;
532
-
533
- if (!intel_pad_owned_by_host (pctrl , pin ))
534
- return - ENOTSUPP ;
535
530
536
531
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
+
538
535
term = (value & PADCFG1_TERM_MASK ) >> PADCFG1_TERM_SHIFT ;
539
536
540
537
switch (param ) {
@@ -549,16 +546,16 @@ static int intel_config_get(struct pinctrl_dev *pctldev, unsigned int pin,
549
546
550
547
switch (term ) {
551
548
case PADCFG1_TERM_1K :
552
- arg = 1000 ;
549
+ * arg = 1000 ;
553
550
break ;
554
551
case PADCFG1_TERM_2K :
555
- arg = 2000 ;
552
+ * arg = 2000 ;
556
553
break ;
557
554
case PADCFG1_TERM_5K :
558
- arg = 5000 ;
555
+ * arg = 5000 ;
559
556
break ;
560
557
case PADCFG1_TERM_20K :
561
- arg = 20000 ;
558
+ * arg = 20000 ;
562
559
break ;
563
560
}
564
561
@@ -572,35 +569,71 @@ static int intel_config_get(struct pinctrl_dev *pctldev, unsigned int pin,
572
569
case PADCFG1_TERM_1K :
573
570
if (!(community -> features & PINCTRL_FEATURE_1K_PD ))
574
571
return - EINVAL ;
575
- arg = 1000 ;
572
+ * arg = 1000 ;
576
573
break ;
577
574
case PADCFG1_TERM_5K :
578
- arg = 5000 ;
575
+ * arg = 5000 ;
579
576
break ;
580
577
case PADCFG1_TERM_20K :
581
- arg = 20000 ;
578
+ * arg = 20000 ;
582
579
break ;
583
580
}
584
581
585
582
break ;
586
583
587
- case PIN_CONFIG_INPUT_DEBOUNCE : {
588
- void __iomem * padcfg2 ;
589
- u32 v ;
584
+ default :
585
+ return - EINVAL ;
586
+ }
587
+
588
+ return 0 ;
589
+ }
590
590
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 ;
594
597
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 ;
598
619
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 ;
601
622
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 ;
602
636
break ;
603
- }
604
637
605
638
default :
606
639
return - ENOTSUPP ;
0 commit comments