Lines Matching +full:off +full:- +full:chip

1 // SPDX-License-Identifier: GPL-2.0
3 // Copyright (c) 2009-2011 Samsung Electronics Co., Ltd.
11 // Samsung - GPIOlib support
31 #include "regs-gpio.h"
32 #include "gpio-samsung.h"
35 #include "gpio-core.h"
36 #include "gpio-cfg.h"
37 #include "gpio-cfg-helpers.h"
40 int samsung_gpio_setpull_updown(struct samsung_gpio_chip *chip, in samsung_gpio_setpull_updown() argument
41 unsigned int off, samsung_gpio_pull_t pull) in samsung_gpio_setpull_updown() argument
43 void __iomem *reg = chip->base + 0x08; in samsung_gpio_setpull_updown()
44 int shift = off * 2; in samsung_gpio_setpull_updown()
55 samsung_gpio_pull_t samsung_gpio_getpull_updown(struct samsung_gpio_chip *chip, in samsung_gpio_getpull_updown() argument
56 unsigned int off) in samsung_gpio_getpull_updown() argument
58 void __iomem *reg = chip->base + 0x08; in samsung_gpio_getpull_updown()
59 int shift = off * 2; in samsung_gpio_getpull_updown()
68 int s3c2443_gpio_setpull(struct samsung_gpio_chip *chip, in s3c2443_gpio_setpull() argument
69 unsigned int off, samsung_gpio_pull_t pull) in s3c2443_gpio_setpull() argument
82 return samsung_gpio_setpull_updown(chip, off, pull); in s3c2443_gpio_setpull()
85 samsung_gpio_pull_t s3c2443_gpio_getpull(struct samsung_gpio_chip *chip, in s3c2443_gpio_getpull() argument
86 unsigned int off) in s3c2443_gpio_getpull() argument
90 pull = samsung_gpio_getpull_updown(chip, off); in s3c2443_gpio_getpull()
108 static int s3c24xx_gpio_setpull_1(struct samsung_gpio_chip *chip, in s3c24xx_gpio_setpull_1() argument
109 unsigned int off, samsung_gpio_pull_t pull, in s3c24xx_gpio_setpull_1() argument
112 void __iomem *reg = chip->base + 0x08; in s3c24xx_gpio_setpull_1()
116 pup &= ~(1 << off); in s3c24xx_gpio_setpull_1()
118 pup |= (1 << off); in s3c24xx_gpio_setpull_1()
120 return -EINVAL; in s3c24xx_gpio_setpull_1()
126 static samsung_gpio_pull_t s3c24xx_gpio_getpull_1(struct samsung_gpio_chip *chip, in s3c24xx_gpio_getpull_1() argument
127 unsigned int off, in s3c24xx_gpio_getpull_1() argument
130 void __iomem *reg = chip->base + 0x08; in s3c24xx_gpio_getpull_1()
133 pup &= (1 << off); in s3c24xx_gpio_getpull_1()
137 samsung_gpio_pull_t s3c24xx_gpio_getpull_1up(struct samsung_gpio_chip *chip, in s3c24xx_gpio_getpull_1up() argument
138 unsigned int off) in s3c24xx_gpio_getpull_1up() argument
140 return s3c24xx_gpio_getpull_1(chip, off, S3C_GPIO_PULL_UP); in s3c24xx_gpio_getpull_1up()
143 int s3c24xx_gpio_setpull_1up(struct samsung_gpio_chip *chip, in s3c24xx_gpio_setpull_1up() argument
144 unsigned int off, samsung_gpio_pull_t pull) in s3c24xx_gpio_setpull_1up() argument
146 return s3c24xx_gpio_setpull_1(chip, off, pull, S3C_GPIO_PULL_UP); in s3c24xx_gpio_setpull_1up()
149 samsung_gpio_pull_t s3c24xx_gpio_getpull_1down(struct samsung_gpio_chip *chip, in s3c24xx_gpio_getpull_1down() argument
150 unsigned int off) in s3c24xx_gpio_getpull_1down() argument
152 return s3c24xx_gpio_getpull_1(chip, off, S3C_GPIO_PULL_DOWN); in s3c24xx_gpio_getpull_1down()
155 int s3c24xx_gpio_setpull_1down(struct samsung_gpio_chip *chip, in s3c24xx_gpio_setpull_1down() argument
156 unsigned int off, samsung_gpio_pull_t pull) in s3c24xx_gpio_setpull_1down() argument
158 return s3c24xx_gpio_setpull_1(chip, off, pull, S3C_GPIO_PULL_DOWN); in s3c24xx_gpio_setpull_1down()
162 * samsung_gpio_setcfg_2bit - Samsung 2bit style GPIO configuration.
163 * @chip: The gpio chip that is being configured.
164 * @off: The offset for the GPIO being configured.
175 static int samsung_gpio_setcfg_2bit(struct samsung_gpio_chip *chip, in samsung_gpio_setcfg_2bit() argument
176 unsigned int off, unsigned int cfg) in samsung_gpio_setcfg_2bit() argument
178 void __iomem *reg = chip->base; in samsung_gpio_setcfg_2bit()
179 unsigned int shift = off * 2; in samsung_gpio_setcfg_2bit()
185 return -EINVAL; in samsung_gpio_setcfg_2bit()
199 * samsung_gpio_getcfg_2bit - Samsung 2bit style GPIO configuration read.
200 * @chip: The gpio chip that is being configured.
201 * @off: The offset for the GPIO being configured.
208 static unsigned int samsung_gpio_getcfg_2bit(struct samsung_gpio_chip *chip, in samsung_gpio_getcfg_2bit() argument
209 unsigned int off) in samsung_gpio_getcfg_2bit() argument
213 con = __raw_readl(chip->base); in samsung_gpio_getcfg_2bit()
214 con >>= off * 2; in samsung_gpio_getcfg_2bit()
222 * samsung_gpio_setcfg_4bit - Samsung 4bit single register GPIO config.
223 * @chip: The gpio chip that is being configured.
224 * @off: The offset for the GPIO being configured.
238 static int samsung_gpio_setcfg_4bit(struct samsung_gpio_chip *chip, in samsung_gpio_setcfg_4bit() argument
239 unsigned int off, unsigned int cfg) in samsung_gpio_setcfg_4bit() argument
241 void __iomem *reg = chip->base; in samsung_gpio_setcfg_4bit()
242 unsigned int shift = (off & 7) * 4; in samsung_gpio_setcfg_4bit()
245 if (off < 8 && chip->chip.ngpio > 8) in samsung_gpio_setcfg_4bit()
246 reg -= 4; in samsung_gpio_setcfg_4bit()
262 * samsung_gpio_getcfg_4bit - Samsung 4bit single register GPIO config read.
263 * @chip: The gpio chip that is being configured.
264 * @off: The offset for the GPIO being configured.
273 static unsigned samsung_gpio_getcfg_4bit(struct samsung_gpio_chip *chip, in samsung_gpio_getcfg_4bit() argument
274 unsigned int off) in samsung_gpio_getcfg_4bit() argument
276 void __iomem *reg = chip->base; in samsung_gpio_getcfg_4bit()
277 unsigned int shift = (off & 7) * 4; in samsung_gpio_getcfg_4bit()
280 if (off < 8 && chip->chip.ngpio > 8) in samsung_gpio_getcfg_4bit()
281 reg -= 4; in samsung_gpio_getcfg_4bit()
293 * s3c24xx_gpio_setcfg_abank - S3C24XX style GPIO configuration (Bank A)
294 * @chip: The gpio chip that is being configured.
295 * @off: The offset for the GPIO being configured.
303 static int s3c24xx_gpio_setcfg_abank(struct samsung_gpio_chip *chip, in s3c24xx_gpio_setcfg_abank() argument
304 unsigned int off, unsigned int cfg) in s3c24xx_gpio_setcfg_abank() argument
306 void __iomem *reg = chip->base; in s3c24xx_gpio_setcfg_abank()
307 unsigned int shift = off; in s3c24xx_gpio_setcfg_abank()
314 cfg -= 1; in s3c24xx_gpio_setcfg_abank()
316 return -EINVAL; in s3c24xx_gpio_setcfg_abank()
330 * s3c24xx_gpio_getcfg_abank - S3C24XX style GPIO configuration read (Bank A)
331 * @chip: The gpio chip that is being configured.
332 * @off: The offset for the GPIO being configured.
341 static unsigned s3c24xx_gpio_getcfg_abank(struct samsung_gpio_chip *chip, in s3c24xx_gpio_getcfg_abank() argument
342 unsigned int off) in s3c24xx_gpio_getcfg_abank() argument
346 con = __raw_readl(chip->base); in s3c24xx_gpio_getcfg_abank()
347 con >>= off; in s3c24xx_gpio_getcfg_abank()
358 for (; nr_chips > 0; nr_chips--, chipcfg++) { in samsung_gpiolib_set_cfg()
359 if (!chipcfg->set_config) in samsung_gpiolib_set_cfg()
360 chipcfg->set_config = samsung_gpio_setcfg_4bit; in samsung_gpiolib_set_cfg()
361 if (!chipcfg->get_config) in samsung_gpiolib_set_cfg()
362 chipcfg->get_config = samsung_gpio_getcfg_4bit; in samsung_gpiolib_set_cfg()
363 if (!chipcfg->set_pull) in samsung_gpiolib_set_cfg()
364 chipcfg->set_pull = samsung_gpio_setpull_updown; in samsung_gpiolib_set_cfg()
365 if (!chipcfg->get_pull) in samsung_gpiolib_set_cfg()
366 chipcfg->get_pull = samsung_gpio_getpull_updown; in samsung_gpiolib_set_cfg()
419 * chip is as following:
423 * 00 = input, 01 = output, others mean special-function
428 static int samsung_gpiolib_2bit_input(struct gpio_chip *chip, unsigned offset) in samsung_gpiolib_2bit_input() argument
430 struct samsung_gpio_chip *ourchip = to_samsung_gpio(chip); in samsung_gpiolib_2bit_input()
431 void __iomem *base = ourchip->base; in samsung_gpiolib_2bit_input()
446 static int samsung_gpiolib_2bit_output(struct gpio_chip *chip, in samsung_gpiolib_2bit_output() argument
449 struct samsung_gpio_chip *ourchip = to_samsung_gpio(chip); in samsung_gpiolib_2bit_output()
450 void __iomem *base = ourchip->base; in samsung_gpiolib_2bit_output()
481 * 0000 = input, 0001 = output, others mean special-function
490 static int samsung_gpiolib_4bit_input(struct gpio_chip *chip, in samsung_gpiolib_4bit_input() argument
493 struct samsung_gpio_chip *ourchip = to_samsung_gpio(chip); in samsung_gpiolib_4bit_input()
494 void __iomem *base = ourchip->base; in samsung_gpiolib_4bit_input()
498 if (ourchip->bitmap_gpio_int & BIT(offset)) in samsung_gpiolib_4bit_input()
509 static int samsung_gpiolib_4bit_output(struct gpio_chip *chip, in samsung_gpiolib_4bit_output() argument
512 struct samsung_gpio_chip *ourchip = to_samsung_gpio(chip); in samsung_gpiolib_4bit_output()
513 void __iomem *base = ourchip->base; in samsung_gpiolib_4bit_output()
547 * 0000 = input, 0001 = output, others mean special-function
550 * 0000 = input, 0001 = output, others mean special-function
556 * the data register at ourchip->base + 0x04.
559 static int samsung_gpiolib_4bit2_input(struct gpio_chip *chip, in samsung_gpiolib_4bit2_input() argument
562 struct samsung_gpio_chip *ourchip = to_samsung_gpio(chip); in samsung_gpiolib_4bit2_input()
563 void __iomem *base = ourchip->base; in samsung_gpiolib_4bit2_input()
568 offset -= 8; in samsung_gpiolib_4bit2_input()
570 regcon -= 4; in samsung_gpiolib_4bit2_input()
581 static int samsung_gpiolib_4bit2_output(struct gpio_chip *chip, in samsung_gpiolib_4bit2_output() argument
584 struct samsung_gpio_chip *ourchip = to_samsung_gpio(chip); in samsung_gpiolib_4bit2_output()
585 void __iomem *base = ourchip->base; in samsung_gpiolib_4bit2_output()
592 con_offset -= 8; in samsung_gpiolib_4bit2_output()
594 regcon -= 4; in samsung_gpiolib_4bit2_output()
619 static int s3c24xx_gpiolib_banka_input(struct gpio_chip *chip, unsigned offset) in s3c24xx_gpiolib_banka_input() argument
621 return -EINVAL; in s3c24xx_gpiolib_banka_input()
624 static int s3c24xx_gpiolib_banka_output(struct gpio_chip *chip, in s3c24xx_gpiolib_banka_output() argument
627 struct samsung_gpio_chip *ourchip = to_samsung_gpio(chip); in s3c24xx_gpiolib_banka_output()
628 void __iomem *base = ourchip->base; in s3c24xx_gpiolib_banka_output()
654 static void samsung_gpiolib_set(struct gpio_chip *chip, in samsung_gpiolib_set() argument
657 struct samsung_gpio_chip *ourchip = to_samsung_gpio(chip); in samsung_gpiolib_set()
658 void __iomem *base = ourchip->base; in samsung_gpiolib_set()
673 static int samsung_gpiolib_get(struct gpio_chip *chip, unsigned offset) in samsung_gpiolib_get() argument
675 struct samsung_gpio_chip *ourchip = to_samsung_gpio(chip); in samsung_gpiolib_get()
678 val = __raw_readl(ourchip->base + 0x04); in samsung_gpiolib_get()
700 static __init void s3c_gpiolib_track(struct samsung_gpio_chip *chip) in s3c_gpiolib_track() argument
705 gpn = chip->chip.base; in s3c_gpiolib_track()
706 for (i = 0; i < chip->chip.ngpio; i++, gpn++) { in s3c_gpiolib_track()
708 s3c_gpios[gpn] = chip; in s3c_gpiolib_track()
714 * samsung_gpiolib_add() - add the Samsung gpio_chip.
715 * @chip: The chip to register
717 * This is a wrapper to gpiochip_add() that takes our specific gpio chip
723 static void __init samsung_gpiolib_add(struct samsung_gpio_chip *chip) in samsung_gpiolib_add() argument
725 struct gpio_chip *gc = &chip->chip; in samsung_gpiolib_add()
728 BUG_ON(!chip->base); in samsung_gpiolib_add()
729 BUG_ON(!gc->label); in samsung_gpiolib_add()
730 BUG_ON(!gc->ngpio); in samsung_gpiolib_add()
732 spin_lock_init(&chip->lock); in samsung_gpiolib_add()
734 if (!gc->direction_input) in samsung_gpiolib_add()
735 gc->direction_input = samsung_gpiolib_2bit_input; in samsung_gpiolib_add()
736 if (!gc->direction_output) in samsung_gpiolib_add()
737 gc->direction_output = samsung_gpiolib_2bit_output; in samsung_gpiolib_add()
738 if (!gc->set) in samsung_gpiolib_add()
739 gc->set = samsung_gpiolib_set; in samsung_gpiolib_add()
740 if (!gc->get) in samsung_gpiolib_add()
741 gc->get = samsung_gpiolib_get; in samsung_gpiolib_add()
744 if (chip->pm != NULL) { in samsung_gpiolib_add()
745 if (!chip->pm->save || !chip->pm->resume) in samsung_gpiolib_add()
747 gc->label); in samsung_gpiolib_add()
749 pr_err("gpio: %s has no PM function\n", gc->label); in samsung_gpiolib_add()
753 ret = gpiochip_add_data(gc, chip); in samsung_gpiolib_add()
755 s3c_gpiolib_track(chip); in samsung_gpiolib_add()
758 static void __init s3c24xx_gpiolib_add_chips(struct samsung_gpio_chip *chip, in s3c24xx_gpiolib_add_chips() argument
762 struct gpio_chip *gc = &chip->chip; in s3c24xx_gpiolib_add_chips()
764 for (i = 0 ; i < nr_chips; i++, chip++) { in s3c24xx_gpiolib_add_chips()
766 if (chip->chip.base >= S3C_GPIO_END) in s3c24xx_gpiolib_add_chips()
769 if (!chip->config) in s3c24xx_gpiolib_add_chips()
770 chip->config = &s3c24xx_gpiocfg_default; in s3c24xx_gpiolib_add_chips()
771 if (!chip->pm) in s3c24xx_gpiolib_add_chips()
772 chip->pm = __gpio_pm(&samsung_gpio_pm_2bit); in s3c24xx_gpiolib_add_chips()
773 if ((base != NULL) && (chip->base == NULL)) in s3c24xx_gpiolib_add_chips()
774 chip->base = base + ((i) * 0x10); in s3c24xx_gpiolib_add_chips()
776 if (!gc->direction_input) in s3c24xx_gpiolib_add_chips()
777 gc->direction_input = samsung_gpiolib_2bit_input; in s3c24xx_gpiolib_add_chips()
778 if (!gc->direction_output) in s3c24xx_gpiolib_add_chips()
779 gc->direction_output = samsung_gpiolib_2bit_output; in s3c24xx_gpiolib_add_chips()
781 samsung_gpiolib_add(chip); in s3c24xx_gpiolib_add_chips()
785 static void __init samsung_gpiolib_add_2bit_chips(struct samsung_gpio_chip *chip, in samsung_gpiolib_add_2bit_chips() argument
791 for (i = 0 ; i < nr_chips; i++, chip++) { in samsung_gpiolib_add_2bit_chips()
792 chip->chip.direction_input = samsung_gpiolib_2bit_input; in samsung_gpiolib_add_2bit_chips()
793 chip->chip.direction_output = samsung_gpiolib_2bit_output; in samsung_gpiolib_add_2bit_chips()
795 if (!chip->config) in samsung_gpiolib_add_2bit_chips()
796 chip->config = &samsung_gpio_cfgs[7]; in samsung_gpiolib_add_2bit_chips()
797 if (!chip->pm) in samsung_gpiolib_add_2bit_chips()
798 chip->pm = __gpio_pm(&samsung_gpio_pm_2bit); in samsung_gpiolib_add_2bit_chips()
799 if ((base != NULL) && (chip->base == NULL)) in samsung_gpiolib_add_2bit_chips()
800 chip->base = base + ((i) * offset); in samsung_gpiolib_add_2bit_chips()
802 samsung_gpiolib_add(chip); in samsung_gpiolib_add_2bit_chips()
807 * samsung_gpiolib_add_4bit_chips - 4bit single register GPIO config.
808 * @chip: The gpio chip that is being configured.
822 static void __init samsung_gpiolib_add_4bit_chips(struct samsung_gpio_chip *chip, in samsung_gpiolib_add_4bit_chips() argument
827 for (i = 0 ; i < nr_chips; i++, chip++) { in samsung_gpiolib_add_4bit_chips()
828 chip->chip.direction_input = samsung_gpiolib_4bit_input; in samsung_gpiolib_add_4bit_chips()
829 chip->chip.direction_output = samsung_gpiolib_4bit_output; in samsung_gpiolib_add_4bit_chips()
831 if (!chip->config) in samsung_gpiolib_add_4bit_chips()
832 chip->config = &samsung_gpio_cfgs[2]; in samsung_gpiolib_add_4bit_chips()
833 if (!chip->pm) in samsung_gpiolib_add_4bit_chips()
834 chip->pm = __gpio_pm(&samsung_gpio_pm_4bit); in samsung_gpiolib_add_4bit_chips()
835 if ((base != NULL) && (chip->base == NULL)) in samsung_gpiolib_add_4bit_chips()
836 chip->base = base + ((i) * 0x20); in samsung_gpiolib_add_4bit_chips()
838 chip->bitmap_gpio_int = 0; in samsung_gpiolib_add_4bit_chips()
840 samsung_gpiolib_add(chip); in samsung_gpiolib_add_4bit_chips()
844 static void __init samsung_gpiolib_add_4bit2_chips(struct samsung_gpio_chip *chip, in samsung_gpiolib_add_4bit2_chips() argument
847 for (; nr_chips > 0; nr_chips--, chip++) { in samsung_gpiolib_add_4bit2_chips()
848 chip->chip.direction_input = samsung_gpiolib_4bit2_input; in samsung_gpiolib_add_4bit2_chips()
849 chip->chip.direction_output = samsung_gpiolib_4bit2_output; in samsung_gpiolib_add_4bit2_chips()
851 if (!chip->config) in samsung_gpiolib_add_4bit2_chips()
852 chip->config = &samsung_gpio_cfgs[2]; in samsung_gpiolib_add_4bit2_chips()
853 if (!chip->pm) in samsung_gpiolib_add_4bit2_chips()
854 chip->pm = __gpio_pm(&samsung_gpio_pm_4bit); in samsung_gpiolib_add_4bit2_chips()
856 samsung_gpiolib_add(chip); in samsung_gpiolib_add_4bit2_chips()
860 int samsung_gpiolib_to_irq(struct gpio_chip *chip, unsigned int offset) in samsung_gpiolib_to_irq() argument
862 struct samsung_gpio_chip *samsung_chip = gpiochip_get_data(chip); in samsung_gpiolib_to_irq()
864 return samsung_chip->irq_base + offset; in samsung_gpiolib_to_irq()
868 static int s3c24xx_gpiolib_fbank_to_irq(struct gpio_chip *chip, unsigned offset) in s3c24xx_gpiolib_fbank_to_irq() argument
878 return IRQ_EINT4 + offset - 4; in s3c24xx_gpiolib_fbank_to_irq()
880 return -EINVAL; in s3c24xx_gpiolib_fbank_to_irq()
885 static int s3c64xx_gpiolib_mbank_to_irq(struct gpio_chip *chip, unsigned pin) in s3c64xx_gpiolib_mbank_to_irq() argument
887 return pin < 5 ? IRQ_EINT(23) + pin : -ENXIO; in s3c64xx_gpiolib_mbank_to_irq()
890 static int s3c64xx_gpiolib_lbank_to_irq(struct gpio_chip *chip, unsigned pin) in s3c64xx_gpiolib_lbank_to_irq() argument
892 return pin >= 8 ? IRQ_EINT(16) + pin - 8 : -ENXIO; in s3c64xx_gpiolib_lbank_to_irq()
900 .chip = {
909 .chip = {
916 .chip = {
923 .chip = {
930 .chip = {
937 .chip = {
946 .chip = {
954 .chip = {
964 .chip = {
972 .chip = {
980 .chip = {
988 .chip = {
1027 .chip = {
1033 .chip = {
1039 .chip = {
1045 .chip = {
1052 .chip = {
1059 .chip = {
1067 .chip = {
1081 .chip = {
1089 .chip = {
1097 .chip = {
1112 .chip = {
1119 .chip = {
1126 .chip = {
1133 .chip = {
1140 .chip = {
1147 .chip = {
1156 .chip = {
1172 * pinctrl-samsung driver is used, providing both GPIO and pin control in samsung_gpiolib_init()
1173 * interfaces. For legacy (non-DT) platforms this driver is used. in samsung_gpiolib_init()
1202 struct samsung_gpio_chip *chip = samsung_gpiolib_getchip(pin); in s3c_gpio_cfgpin() local
1207 if (!chip) in s3c_gpio_cfgpin()
1208 return -EINVAL; in s3c_gpio_cfgpin()
1210 offset = pin - chip->chip.base; in s3c_gpio_cfgpin()
1212 samsung_gpio_lock(chip, flags); in s3c_gpio_cfgpin()
1213 ret = samsung_gpio_do_setcfg(chip, offset, config); in s3c_gpio_cfgpin()
1214 samsung_gpio_unlock(chip, flags); in s3c_gpio_cfgpin()
1225 for (; nr > 0; nr--, start++) { in s3c_gpio_cfgpin_range()
1240 for (; nr > 0; nr--, start++) { in s3c_gpio_cfgall_range()
1253 struct samsung_gpio_chip *chip = samsung_gpiolib_getchip(pin); in s3c_gpio_getcfg() local
1258 if (chip) { in s3c_gpio_getcfg()
1259 offset = pin - chip->chip.base; in s3c_gpio_getcfg()
1261 samsung_gpio_lock(chip, flags); in s3c_gpio_getcfg()
1262 ret = samsung_gpio_do_getcfg(chip, offset); in s3c_gpio_getcfg()
1263 samsung_gpio_unlock(chip, flags); in s3c_gpio_getcfg()
1272 struct samsung_gpio_chip *chip = samsung_gpiolib_getchip(pin); in s3c_gpio_setpull() local
1276 if (!chip) in s3c_gpio_setpull()
1277 return -EINVAL; in s3c_gpio_setpull()
1279 offset = pin - chip->chip.base; in s3c_gpio_setpull()
1281 samsung_gpio_lock(chip, flags); in s3c_gpio_setpull()
1282 ret = samsung_gpio_do_setpull(chip, offset, pull); in s3c_gpio_setpull()
1283 samsung_gpio_unlock(chip, flags); in s3c_gpio_setpull()
1291 struct samsung_gpio_chip *chip = samsung_gpiolib_getchip(pin); in s3c_gpio_getpull() local
1296 if (chip) { in s3c_gpio_getpull()
1297 offset = pin - chip->chip.base; in s3c_gpio_getpull()
1299 samsung_gpio_lock(chip, flags); in s3c_gpio_getpull()
1300 pup = samsung_gpio_do_getpull(chip, offset); in s3c_gpio_getpull()
1301 samsung_gpio_unlock(chip, flags); in s3c_gpio_getpull()