@@ -372,7 +372,8 @@ static bool pinctrl_ready_for_gpio_range(unsigned gpio) { return true; }
372372
373373/**
374374 * 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
376377 * @outdev: the pin control device if found
377378 * @outrange: the GPIO range if found
378379 *
@@ -381,7 +382,8 @@ static bool pinctrl_ready_for_gpio_range(unsigned gpio) { return true; }
381382 * -EPROBE_DEFER if the GPIO range could not be found in any device since it
382383 * may still have not been registered.
383384 */
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 ,
385387 struct pinctrl_dev * * outdev ,
386388 struct pinctrl_gpio_range * * outrange )
387389{
@@ -393,7 +395,7 @@ static int pinctrl_get_device_gpio_range(unsigned gpio,
393395 list_for_each_entry (pctldev , & pinctrldev_list , node ) {
394396 struct pinctrl_gpio_range * range ;
395397
396- range = pinctrl_match_gpio_range (pctldev , gpio );
398+ range = pinctrl_match_gpio_range (pctldev , gc -> base + offset );
397399 if (range ) {
398400 * outdev = pctldev ;
399401 * outrange = range ;
@@ -767,7 +769,7 @@ bool pinctrl_gpio_can_use_line(struct gpio_chip *gc, unsigned int offset)
767769 * we're probably dealing with GPIO driver
768770 * without a backing pin controller - bail out.
769771 */
770- if (pinctrl_get_device_gpio_range (gc -> base + offset , & pctldev , & range ))
772+ if (pinctrl_get_device_gpio_range (gc , offset , & pctldev , & range ))
771773 return true;
772774
773775 mutex_lock (& pctldev -> mutex );
@@ -798,8 +800,7 @@ int pinctrl_gpio_request(struct gpio_chip *gc, unsigned int offset)
798800 struct pinctrl_dev * pctldev ;
799801 int ret , pin ;
800802
801- ret = pinctrl_get_device_gpio_range (gc -> base + offset , & pctldev ,
802- & range );
803+ ret = pinctrl_get_device_gpio_range (gc , offset , & pctldev , & range );
803804 if (ret ) {
804805 if (pinctrl_ready_for_gpio_range (gc -> base + offset ))
805806 ret = 0 ;
@@ -834,8 +835,7 @@ void pinctrl_gpio_free(struct gpio_chip *gc, unsigned int offset)
834835 struct pinctrl_dev * pctldev ;
835836 int ret , pin ;
836837
837- ret = pinctrl_get_device_gpio_range (gc -> base + offset , & pctldev ,
838- & range );
838+ ret = pinctrl_get_device_gpio_range (gc , offset , & pctldev , & range );
839839 if (ret )
840840 return ;
841841
@@ -858,8 +858,7 @@ static int pinctrl_gpio_direction(struct gpio_chip *gc, unsigned int offset,
858858 int ret ;
859859 int pin ;
860860
861- ret = pinctrl_get_device_gpio_range (gc -> base + offset , & pctldev ,
862- & range );
861+ ret = pinctrl_get_device_gpio_range (gc , offset , & pctldev , & range );
863862 if (ret ) {
864863 return ret ;
865864 }
@@ -923,8 +922,7 @@ int pinctrl_gpio_set_config(struct gpio_chip *gc, unsigned int offset,
923922 struct pinctrl_dev * pctldev ;
924923 int ret , pin ;
925924
926- ret = pinctrl_get_device_gpio_range (gc -> base + offset , & pctldev ,
927- & range );
925+ ret = pinctrl_get_device_gpio_range (gc , offset , & pctldev , & range );
928926 if (ret )
929927 return ret ;
930928
0 commit comments