@@ -320,6 +320,9 @@ static const struct pinctrl_ops at91_pctrl_ops = {
320
320
static void __iomem * pin_to_controller (struct at91_pinctrl * info ,
321
321
unsigned int bank )
322
322
{
323
+ if (!gpio_chips [bank ])
324
+ return NULL ;
325
+
323
326
return gpio_chips [bank ]-> regbase ;
324
327
}
325
328
@@ -729,6 +732,10 @@ static int at91_pmx_set(struct pinctrl_dev *pctldev, unsigned selector,
729
732
pin = & pins_conf [i ];
730
733
at91_pin_dbg (info -> dev , pin );
731
734
pio = pin_to_controller (info , pin -> bank );
735
+
736
+ if (!pio )
737
+ continue ;
738
+
732
739
mask = pin_to_mask (pin -> pin );
733
740
at91_mux_disable_interrupt (pio , mask );
734
741
switch (pin -> mux ) {
@@ -848,6 +855,10 @@ static int at91_pinconf_get(struct pinctrl_dev *pctldev,
848
855
* config = 0 ;
849
856
dev_dbg (info -> dev , "%s:%d, pin_id=%d" , __func__ , __LINE__ , pin_id );
850
857
pio = pin_to_controller (info , pin_to_bank (pin_id ));
858
+
859
+ if (!pio )
860
+ return - EINVAL ;
861
+
851
862
pin = pin_id % MAX_NB_GPIO_PER_BANK ;
852
863
853
864
if (at91_mux_get_multidrive (pio , pin ))
@@ -889,6 +900,10 @@ static int at91_pinconf_set(struct pinctrl_dev *pctldev,
889
900
"%s:%d, pin_id=%d, config=0x%lx" ,
890
901
__func__ , __LINE__ , pin_id , config );
891
902
pio = pin_to_controller (info , pin_to_bank (pin_id ));
903
+
904
+ if (!pio )
905
+ return - EINVAL ;
906
+
892
907
pin = pin_id % MAX_NB_GPIO_PER_BANK ;
893
908
mask = pin_to_mask (pin );
894
909
0 commit comments