@@ -372,7 +372,8 @@ static bool pinctrl_ready_for_gpio_range(unsigned gpio) { return true; }
372
372
373
373
/**
374
374
* pinctrl_get_device_gpio_range() - find device for GPIO range
375
- * @gpio: the pin to locate the pin controller for
375
+ * @gc: GPIO chip structure from the GPIO subsystem
376
+ * @offset: hardware offset of the GPIO relative to the controller
376
377
* @outdev: the pin control device if found
377
378
* @outrange: the GPIO range if found
378
379
*
@@ -381,7 +382,8 @@ static bool pinctrl_ready_for_gpio_range(unsigned gpio) { return true; }
381
382
* -EPROBE_DEFER if the GPIO range could not be found in any device since it
382
383
* may still have not been registered.
383
384
*/
384
- static int pinctrl_get_device_gpio_range (unsigned gpio ,
385
+ static int pinctrl_get_device_gpio_range (struct gpio_chip * gc ,
386
+ unsigned int offset ,
385
387
struct pinctrl_dev * * outdev ,
386
388
struct pinctrl_gpio_range * * outrange )
387
389
{
@@ -393,7 +395,7 @@ static int pinctrl_get_device_gpio_range(unsigned gpio,
393
395
list_for_each_entry (pctldev , & pinctrldev_list , node ) {
394
396
struct pinctrl_gpio_range * range ;
395
397
396
- range = pinctrl_match_gpio_range (pctldev , gpio );
398
+ range = pinctrl_match_gpio_range (pctldev , gc -> base + offset );
397
399
if (range ) {
398
400
* outdev = pctldev ;
399
401
* outrange = range ;
@@ -767,7 +769,7 @@ bool pinctrl_gpio_can_use_line(struct gpio_chip *gc, unsigned int offset)
767
769
* we're probably dealing with GPIO driver
768
770
* without a backing pin controller - bail out.
769
771
*/
770
- if (pinctrl_get_device_gpio_range (gc -> base + offset , & pctldev , & range ))
772
+ if (pinctrl_get_device_gpio_range (gc , offset , & pctldev , & range ))
771
773
return true;
772
774
773
775
mutex_lock (& pctldev -> mutex );
@@ -798,8 +800,7 @@ int pinctrl_gpio_request(struct gpio_chip *gc, unsigned int offset)
798
800
struct pinctrl_dev * pctldev ;
799
801
int ret , pin ;
800
802
801
- ret = pinctrl_get_device_gpio_range (gc -> base + offset , & pctldev ,
802
- & range );
803
+ ret = pinctrl_get_device_gpio_range (gc , offset , & pctldev , & range );
803
804
if (ret ) {
804
805
if (pinctrl_ready_for_gpio_range (gc -> base + offset ))
805
806
ret = 0 ;
@@ -834,8 +835,7 @@ void pinctrl_gpio_free(struct gpio_chip *gc, unsigned int offset)
834
835
struct pinctrl_dev * pctldev ;
835
836
int ret , pin ;
836
837
837
- ret = pinctrl_get_device_gpio_range (gc -> base + offset , & pctldev ,
838
- & range );
838
+ ret = pinctrl_get_device_gpio_range (gc , offset , & pctldev , & range );
839
839
if (ret )
840
840
return ;
841
841
@@ -858,8 +858,7 @@ static int pinctrl_gpio_direction(struct gpio_chip *gc, unsigned int offset,
858
858
int ret ;
859
859
int pin ;
860
860
861
- ret = pinctrl_get_device_gpio_range (gc -> base + offset , & pctldev ,
862
- & range );
861
+ ret = pinctrl_get_device_gpio_range (gc , offset , & pctldev , & range );
863
862
if (ret ) {
864
863
return ret ;
865
864
}
@@ -923,8 +922,7 @@ int pinctrl_gpio_set_config(struct gpio_chip *gc, unsigned int offset,
923
922
struct pinctrl_dev * pctldev ;
924
923
int ret , pin ;
925
924
926
- ret = pinctrl_get_device_gpio_range (gc -> base + offset , & pctldev ,
927
- & range );
925
+ ret = pinctrl_get_device_gpio_range (gc , offset , & pctldev , & range );
928
926
if (ret )
929
927
return ret ;
930
928
0 commit comments