Lines Matching refs:pin

109 	uint32_t	pin;  member
158 bool (*get_deglitch)(void __iomem *pio, unsigned pin);
160 bool (*get_debounce)(void __iomem *pio, unsigned pin, u32 *div);
162 bool (*get_pulldown)(void __iomem *pio, unsigned pin);
164 bool (*get_schmitt_trig)(void __iomem *pio, unsigned pin);
166 unsigned (*get_drivestrength)(void __iomem *pio, unsigned pin);
167 void (*set_drivestrength)(void __iomem *pio, unsigned pin,
329 static inline int pin_to_bank(unsigned pin) in pin_to_bank() argument
331 return pin /= MAX_NB_GPIO_PER_BANK; in pin_to_bank()
334 static unsigned pin_to_mask(unsigned int pin) in pin_to_mask() argument
336 return 1 << pin; in pin_to_mask()
339 static unsigned two_bit_pin_value_shift_amount(unsigned int pin) in two_bit_pin_value_shift_amount() argument
343 return 2*((pin >= MAX_NB_GPIO_PER_BANK/2) in two_bit_pin_value_shift_amount()
344 ? pin - MAX_NB_GPIO_PER_BANK/2 : pin); in two_bit_pin_value_shift_amount()
347 static unsigned sama5d3_get_drive_register(unsigned int pin) in sama5d3_get_drive_register() argument
351 return (pin >= MAX_NB_GPIO_PER_BANK/2) in sama5d3_get_drive_register()
355 static unsigned at91sam9x5_get_drive_register(unsigned int pin) in at91sam9x5_get_drive_register() argument
359 return (pin >= MAX_NB_GPIO_PER_BANK/2) in at91sam9x5_get_drive_register()
368 static unsigned at91_mux_get_pullup(void __iomem *pio, unsigned pin) in at91_mux_get_pullup() argument
370 return !((readl_relaxed(pio + PIO_PUSR) >> pin) & 0x1); in at91_mux_get_pullup()
381 static unsigned at91_mux_get_multidrive(void __iomem *pio, unsigned pin) in at91_mux_get_multidrive() argument
383 return (readl_relaxed(pio + PIO_MDSR) >> pin) & 0x1; in at91_mux_get_multidrive()
455 static bool at91_mux_get_deglitch(void __iomem *pio, unsigned pin) in at91_mux_get_deglitch() argument
457 return (readl_relaxed(pio + PIO_IFSR) >> pin) & 0x1; in at91_mux_get_deglitch()
465 static bool at91_mux_pio3_get_deglitch(void __iomem *pio, unsigned pin) in at91_mux_pio3_get_deglitch() argument
467 if ((readl_relaxed(pio + PIO_IFSR) >> pin) & 0x1) in at91_mux_pio3_get_deglitch()
468 return !((readl_relaxed(pio + PIO_IFSCSR) >> pin) & 0x1); in at91_mux_pio3_get_deglitch()
480 static bool at91_mux_pio3_get_debounce(void __iomem *pio, unsigned pin, u32 *div) in at91_mux_pio3_get_debounce() argument
484 return ((readl_relaxed(pio + PIO_IFSR) >> pin) & 0x1) && in at91_mux_pio3_get_debounce()
485 ((readl_relaxed(pio + PIO_IFSCSR) >> pin) & 0x1); in at91_mux_pio3_get_debounce()
499 static bool at91_mux_pio3_get_pulldown(void __iomem *pio, unsigned pin) in at91_mux_pio3_get_pulldown() argument
501 return !((readl_relaxed(pio + PIO_PPDSR) >> pin) & 0x1); in at91_mux_pio3_get_pulldown()
517 static bool at91_mux_pio3_get_schmitt_trig(void __iomem *pio, unsigned pin) in at91_mux_pio3_get_schmitt_trig() argument
519 return (readl_relaxed(pio + PIO_SCHMITT) >> pin) & 0x1; in at91_mux_pio3_get_schmitt_trig()
522 static inline u32 read_drive_strength(void __iomem *reg, unsigned pin) in read_drive_strength() argument
526 tmp = tmp >> two_bit_pin_value_shift_amount(pin); in read_drive_strength()
532 unsigned pin) in at91_mux_sama5d3_get_drivestrength() argument
535 sama5d3_get_drive_register(pin), pin); in at91_mux_sama5d3_get_drivestrength()
546 unsigned pin) in at91_mux_sam9x5_get_drivestrength() argument
549 at91sam9x5_get_drive_register(pin), pin); in at91_mux_sam9x5_get_drivestrength()
558 static void set_drive_strength(void __iomem *reg, unsigned pin, u32 strength) in set_drive_strength() argument
561 unsigned shift = two_bit_pin_value_shift_amount(pin); in set_drive_strength()
569 static void at91_mux_sama5d3_set_drivestrength(void __iomem *pio, unsigned pin, in at91_mux_sama5d3_set_drivestrength() argument
577 set_drive_strength(pio + sama5d3_get_drive_register(pin), pin, setting); in at91_mux_sama5d3_set_drivestrength()
580 static void at91_mux_sam9x5_set_drivestrength(void __iomem *pio, unsigned pin, in at91_mux_sam9x5_set_drivestrength() argument
591 set_drive_strength(pio + at91sam9x5_get_drive_register(pin), pin, in at91_mux_sam9x5_set_drivestrength()
642 static void at91_pin_dbg(const struct device *dev, const struct at91_pmx_pin *pin) in at91_pin_dbg() argument
644 if (pin->mux) { in at91_pin_dbg()
646 pin->bank + 'A', pin->pin, pin->mux - 1 + 'A', pin->conf); in at91_pin_dbg()
649 pin->bank + 'A', pin->pin, pin->conf); in at91_pin_dbg()
654 int index, const struct at91_pmx_pin *pin) in pin_check_config() argument
659 if (pin->bank >= gpio_banks) { in pin_check_config()
661 name, index, pin->bank, gpio_banks); in pin_check_config()
665 if (!gpio_chips[pin->bank]) { in pin_check_config()
667 name, index, pin->bank); in pin_check_config()
671 if (pin->pin >= MAX_NB_GPIO_PER_BANK) { in pin_check_config()
673 name, index, pin->pin, MAX_NB_GPIO_PER_BANK); in pin_check_config()
677 if (!pin->mux) in pin_check_config()
680 mux = pin->mux - 1; in pin_check_config()
688 if (!(info->mux_mask[pin->bank * info->nmux + mux] & 1 << pin->pin)) { in pin_check_config()
690 name, index, mux, pin->bank + 'A', pin->pin); in pin_check_config()
713 const struct at91_pmx_pin *pin; in at91_pmx_set() local
725 pin = &pins_conf[i]; in at91_pmx_set()
726 ret = pin_check_config(info, info->groups[group].name, i, pin); in at91_pmx_set()
732 pin = &pins_conf[i]; in at91_pmx_set()
733 at91_pin_dbg(info->dev, pin); in at91_pmx_set()
734 pio = pin_to_controller(info, pin->bank); in at91_pmx_set()
739 mask = pin_to_mask(pin->pin); in at91_pmx_set()
741 switch (pin->mux) { in at91_pmx_set()
762 if (pin->mux) in at91_pmx_set()
852 unsigned pin; in at91_pinconf_get() local
862 pin = pin_id % MAX_NB_GPIO_PER_BANK; in at91_pinconf_get()
864 if (at91_mux_get_multidrive(pio, pin)) in at91_pinconf_get()
867 if (at91_mux_get_pullup(pio, pin)) in at91_pinconf_get()
870 if (info->ops->get_deglitch && info->ops->get_deglitch(pio, pin)) in at91_pinconf_get()
872 if (info->ops->get_debounce && info->ops->get_debounce(pio, pin, &div)) in at91_pinconf_get()
874 if (info->ops->get_pulldown && info->ops->get_pulldown(pio, pin)) in at91_pinconf_get()
876 if (info->ops->get_schmitt_trig && info->ops->get_schmitt_trig(pio, pin)) in at91_pinconf_get()
879 *config |= (info->ops->get_drivestrength(pio, pin) in at91_pinconf_get()
894 unsigned pin; in at91_pinconf_set() local
907 pin = pin_id % MAX_NB_GPIO_PER_BANK; in at91_pinconf_set()
908 mask = pin_to_mask(pin); in at91_pinconf_set()
925 info->ops->set_drivestrength(pio, pin, in at91_pinconf_set()
1051 struct at91_pmx_pin *pin; in at91_pinctrl_parse_groups() local
1074 pin = grp->pins_conf = devm_kzalloc(info->dev, grp->npins * sizeof(struct at91_pmx_pin), in at91_pinctrl_parse_groups()
1082 pin->bank = be32_to_cpu(*list++); in at91_pinctrl_parse_groups()
1083 pin->pin = be32_to_cpu(*list++); in at91_pinctrl_parse_groups()
1084 grp->pins[j] = pin->bank * MAX_NB_GPIO_PER_BANK + pin->pin; in at91_pinctrl_parse_groups()
1085 pin->mux = be32_to_cpu(*list++); in at91_pinctrl_parse_groups()
1086 pin->conf = be32_to_cpu(*list++); in at91_pinctrl_parse_groups()
1088 at91_pin_dbg(info->dev, pin); in at91_pinctrl_parse_groups()
1089 pin++; in at91_pinctrl_parse_groups()