Lines Matching refs:offset

89 #define LINE_USED(line, offset) (line & (BIT(offset)))  argument
117 static void omap_set_gpio_dataout_reg(struct gpio_bank *bank, unsigned offset, in omap_set_gpio_dataout_reg() argument
121 u32 l = BIT(offset); in omap_set_gpio_dataout_reg()
135 static void omap_set_gpio_dataout_mask(struct gpio_bank *bank, unsigned offset, in omap_set_gpio_dataout_mask() argument
139 u32 gpio_bit = BIT(offset); in omap_set_gpio_dataout_mask()
151 static int omap_get_gpio_datain(struct gpio_bank *bank, int offset) in omap_get_gpio_datain() argument
155 return (readl_relaxed(reg) & (BIT(offset))) != 0; in omap_get_gpio_datain()
158 static int omap_get_gpio_dataout(struct gpio_bank *bank, int offset) in omap_get_gpio_dataout() argument
162 return (readl_relaxed(reg) & (BIT(offset))) != 0; in omap_get_gpio_dataout()
213 static void omap2_set_gpio_debounce(struct gpio_bank *bank, unsigned offset, in omap2_set_gpio_debounce() argument
229 l = BIT(offset); in omap2_set_gpio_debounce()
271 static void omap_clear_gpio_debounce(struct gpio_bank *bank, unsigned offset) in omap_clear_gpio_debounce() argument
273 u32 gpio_bit = BIT(offset); in omap_clear_gpio_debounce()
424 static void omap_enable_gpio_module(struct gpio_bank *bank, unsigned offset) in omap_enable_gpio_module() argument
430 writel_relaxed(readl_relaxed(reg) | (BIT(offset)), reg); in omap_enable_gpio_module()
445 static void omap_disable_gpio_module(struct gpio_bank *bank, unsigned offset) in omap_disable_gpio_module() argument
450 !LINE_USED(bank->mod_usage, offset) && in omap_disable_gpio_module()
451 !LINE_USED(bank->irq_usage, offset)) { in omap_disable_gpio_module()
453 omap_gpio_rmw(base, bank->regs->wkup_en, BIT(offset), 0); in omap_disable_gpio_module()
470 static int omap_gpio_is_input(struct gpio_bank *bank, unsigned offset) in omap_gpio_is_input() argument
474 return readl_relaxed(reg) & BIT(offset); in omap_gpio_is_input()
477 static void omap_gpio_init_irq(struct gpio_bank *bank, unsigned offset) in omap_gpio_init_irq() argument
479 if (!LINE_USED(bank->mod_usage, offset)) { in omap_gpio_init_irq()
480 omap_enable_gpio_module(bank, offset); in omap_gpio_init_irq()
481 omap_set_gpio_direction(bank, offset, 1); in omap_gpio_init_irq()
483 bank->irq_usage |= BIT(offset); in omap_gpio_init_irq()
491 unsigned offset = d->hwirq; in omap_gpio_irq_type() local
501 retval = omap_set_gpio_triggering(bank, offset, type); in omap_gpio_irq_type()
506 omap_gpio_init_irq(bank, offset); in omap_gpio_irq_type()
507 if (!omap_gpio_is_input(bank, offset)) { in omap_gpio_irq_type()
543 unsigned offset) in omap_clear_gpio_irqstatus() argument
545 omap_clear_gpio_irqbank(bank, BIT(offset)); in omap_clear_gpio_irqstatus()
607 unsigned offset, int enable) in omap_set_gpio_irqenable() argument
610 omap_enable_gpio_irqbank(bank, BIT(offset)); in omap_set_gpio_irqenable()
612 omap_disable_gpio_irqbank(bank, BIT(offset)); in omap_set_gpio_irqenable()
623 static int omap_set_gpio_wakeup(struct gpio_bank *bank, unsigned offset, in omap_set_gpio_wakeup() argument
626 u32 gpio_bit = BIT(offset); in omap_set_gpio_wakeup()
632 offset); in omap_set_gpio_wakeup()
652 unsigned offset = d->hwirq; in omap_gpio_wake_enable() local
655 ret = omap_set_gpio_wakeup(bank, offset, enable); in omap_gpio_wake_enable()
662 static int omap_gpio_request(struct gpio_chip *chip, unsigned offset) in omap_gpio_request() argument
675 omap_enable_gpio_module(bank, offset); in omap_gpio_request()
676 bank->mod_usage |= BIT(offset); in omap_gpio_request()
682 static void omap_gpio_free(struct gpio_chip *chip, unsigned offset) in omap_gpio_free() argument
688 bank->mod_usage &= ~(BIT(offset)); in omap_gpio_free()
689 if (!LINE_USED(bank->irq_usage, offset)) { in omap_gpio_free()
690 omap_set_gpio_direction(bank, offset, 1); in omap_gpio_free()
691 omap_clear_gpio_debounce(bank, offset); in omap_gpio_free()
693 omap_disable_gpio_module(bank, offset); in omap_gpio_free()
787 unsigned offset = d->hwirq; in omap_gpio_irq_startup() local
791 if (!LINE_USED(bank->mod_usage, offset)) in omap_gpio_irq_startup()
792 omap_set_gpio_direction(bank, offset, 1); in omap_gpio_irq_startup()
793 else if (!omap_gpio_is_input(bank, offset)) in omap_gpio_irq_startup()
795 omap_enable_gpio_module(bank, offset); in omap_gpio_irq_startup()
796 bank->irq_usage |= BIT(offset); in omap_gpio_irq_startup()
811 unsigned offset = d->hwirq; in omap_gpio_irq_shutdown() local
814 bank->irq_usage &= ~(BIT(offset)); in omap_gpio_irq_shutdown()
815 omap_set_gpio_irqenable(bank, offset, 0); in omap_gpio_irq_shutdown()
816 omap_clear_gpio_irqstatus(bank, offset); in omap_gpio_irq_shutdown()
817 omap_set_gpio_triggering(bank, offset, IRQ_TYPE_NONE); in omap_gpio_irq_shutdown()
818 if (!LINE_USED(bank->mod_usage, offset)) in omap_gpio_irq_shutdown()
819 omap_clear_gpio_debounce(bank, offset); in omap_gpio_irq_shutdown()
820 omap_disable_gpio_module(bank, offset); in omap_gpio_irq_shutdown()
847 unsigned offset = d->hwirq; in omap_gpio_ack_irq() local
849 omap_clear_gpio_irqstatus(bank, offset); in omap_gpio_ack_irq()
855 unsigned offset = d->hwirq; in omap_gpio_mask_irq() local
859 omap_set_gpio_irqenable(bank, offset, 0); in omap_gpio_mask_irq()
860 omap_set_gpio_triggering(bank, offset, IRQ_TYPE_NONE); in omap_gpio_mask_irq()
867 unsigned offset = d->hwirq; in omap_gpio_unmask_irq() local
873 omap_set_gpio_triggering(bank, offset, trigger); in omap_gpio_unmask_irq()
877 if (bank->level_mask & BIT(offset)) { in omap_gpio_unmask_irq()
878 omap_set_gpio_irqenable(bank, offset, 0); in omap_gpio_unmask_irq()
879 omap_clear_gpio_irqstatus(bank, offset); in omap_gpio_unmask_irq()
882 omap_set_gpio_irqenable(bank, offset, 1); in omap_gpio_unmask_irq()
950 static int omap_gpio_get_direction(struct gpio_chip *chip, unsigned offset) in omap_gpio_get_direction() argument
960 dir = !!(readl_relaxed(reg) & BIT(offset)); in omap_gpio_get_direction()
965 static int omap_gpio_input(struct gpio_chip *chip, unsigned offset) in omap_gpio_input() argument
972 omap_set_gpio_direction(bank, offset, 1); in omap_gpio_input()
977 static int omap_gpio_get(struct gpio_chip *chip, unsigned offset) in omap_gpio_get() argument
983 if (omap_gpio_is_input(bank, offset)) in omap_gpio_get()
984 return omap_get_gpio_datain(bank, offset); in omap_gpio_get()
986 return omap_get_gpio_dataout(bank, offset); in omap_gpio_get()
989 static int omap_gpio_output(struct gpio_chip *chip, unsigned offset, int value) in omap_gpio_output() argument
996 bank->set_dataout(bank, offset, value); in omap_gpio_output()
997 omap_set_gpio_direction(bank, offset, 0); in omap_gpio_output()
1002 static int omap_gpio_debounce(struct gpio_chip *chip, unsigned offset, in omap_gpio_debounce() argument
1011 omap2_set_gpio_debounce(bank, offset, debounce); in omap_gpio_debounce()
1017 static void omap_gpio_set(struct gpio_chip *chip, unsigned offset, int value) in omap_gpio_set() argument
1024 bank->set_dataout(bank, offset, value); in omap_gpio_set()