Lines Matching refs:offset
87 #define LINE_USED(line, offset) (line & (BIT(offset))) argument
115 static void omap_set_gpio_dataout_reg(struct gpio_bank *bank, unsigned offset, in omap_set_gpio_dataout_reg() argument
119 u32 l = BIT(offset); in omap_set_gpio_dataout_reg()
133 static void omap_set_gpio_dataout_mask(struct gpio_bank *bank, unsigned offset, in omap_set_gpio_dataout_mask() argument
137 u32 gpio_bit = BIT(offset); in omap_set_gpio_dataout_mask()
149 static int omap_get_gpio_datain(struct gpio_bank *bank, int offset) in omap_get_gpio_datain() argument
153 return (readl_relaxed(reg) & (BIT(offset))) != 0; in omap_get_gpio_datain()
156 static int omap_get_gpio_dataout(struct gpio_bank *bank, int offset) in omap_get_gpio_dataout() argument
160 return (readl_relaxed(reg) & (BIT(offset))) != 0; in omap_get_gpio_dataout()
210 static void omap2_set_gpio_debounce(struct gpio_bank *bank, unsigned offset, in omap2_set_gpio_debounce() argument
227 l = BIT(offset); in omap2_set_gpio_debounce()
269 static void omap_clear_gpio_debounce(struct gpio_bank *bank, unsigned offset) in omap_clear_gpio_debounce() argument
271 u32 gpio_bit = BIT(offset); in omap_clear_gpio_debounce()
422 static void omap_enable_gpio_module(struct gpio_bank *bank, unsigned offset) in omap_enable_gpio_module() argument
428 writel_relaxed(readl_relaxed(reg) | (BIT(offset)), reg); in omap_enable_gpio_module()
443 static void omap_disable_gpio_module(struct gpio_bank *bank, unsigned offset) in omap_disable_gpio_module() argument
448 !LINE_USED(bank->mod_usage, offset) && in omap_disable_gpio_module()
449 !LINE_USED(bank->irq_usage, offset)) { in omap_disable_gpio_module()
451 omap_gpio_rmw(base, bank->regs->wkup_en, BIT(offset), 0); in omap_disable_gpio_module()
468 static int omap_gpio_is_input(struct gpio_bank *bank, unsigned offset) in omap_gpio_is_input() argument
472 return readl_relaxed(reg) & BIT(offset); in omap_gpio_is_input()
475 static void omap_gpio_init_irq(struct gpio_bank *bank, unsigned offset) in omap_gpio_init_irq() argument
477 if (!LINE_USED(bank->mod_usage, offset)) { in omap_gpio_init_irq()
478 omap_enable_gpio_module(bank, offset); in omap_gpio_init_irq()
479 omap_set_gpio_direction(bank, offset, 1); in omap_gpio_init_irq()
481 bank->irq_usage |= BIT(offset); in omap_gpio_init_irq()
489 unsigned offset = d->hwirq; in omap_gpio_irq_type() local
502 retval = omap_set_gpio_triggering(bank, offset, type); in omap_gpio_irq_type()
503 omap_gpio_init_irq(bank, offset); in omap_gpio_irq_type()
504 if (!omap_gpio_is_input(bank, offset)) { in omap_gpio_irq_type()
536 unsigned offset) in omap_clear_gpio_irqstatus() argument
538 omap_clear_gpio_irqbank(bank, BIT(offset)); in omap_clear_gpio_irqstatus()
600 unsigned offset, int enable) in omap_set_gpio_irqenable() argument
603 omap_enable_gpio_irqbank(bank, BIT(offset)); in omap_set_gpio_irqenable()
605 omap_disable_gpio_irqbank(bank, BIT(offset)); in omap_set_gpio_irqenable()
616 static int omap_set_gpio_wakeup(struct gpio_bank *bank, unsigned offset, in omap_set_gpio_wakeup() argument
619 u32 gpio_bit = BIT(offset); in omap_set_gpio_wakeup()
625 offset); in omap_set_gpio_wakeup()
641 static void omap_reset_gpio(struct gpio_bank *bank, unsigned offset) in omap_reset_gpio() argument
643 omap_set_gpio_direction(bank, offset, 1); in omap_reset_gpio()
644 omap_set_gpio_irqenable(bank, offset, 0); in omap_reset_gpio()
645 omap_clear_gpio_irqstatus(bank, offset); in omap_reset_gpio()
646 omap_set_gpio_triggering(bank, offset, IRQ_TYPE_NONE); in omap_reset_gpio()
647 omap_clear_gpio_debounce(bank, offset); in omap_reset_gpio()
654 unsigned offset = d->hwirq; in omap_gpio_wake_enable() local
656 return omap_set_gpio_wakeup(bank, offset, enable); in omap_gpio_wake_enable()
659 static int omap_gpio_request(struct gpio_chip *chip, unsigned offset) in omap_gpio_request() argument
676 if (!LINE_USED(bank->irq_usage, offset)) { in omap_gpio_request()
677 omap_set_gpio_triggering(bank, offset, IRQ_TYPE_NONE); in omap_gpio_request()
678 omap_enable_gpio_module(bank, offset); in omap_gpio_request()
680 bank->mod_usage |= BIT(offset); in omap_gpio_request()
686 static void omap_gpio_free(struct gpio_chip *chip, unsigned offset) in omap_gpio_free() argument
692 bank->mod_usage &= ~(BIT(offset)); in omap_gpio_free()
693 omap_disable_gpio_module(bank, offset); in omap_gpio_free()
694 omap_reset_gpio(bank, offset); in omap_gpio_free()
792 unsigned offset = d->hwirq; in omap_gpio_irq_startup() local
798 omap_gpio_init_irq(bank, offset); in omap_gpio_irq_startup()
809 unsigned offset = d->hwirq; in omap_gpio_irq_shutdown() local
812 bank->irq_usage &= ~(BIT(offset)); in omap_gpio_irq_shutdown()
813 omap_disable_gpio_module(bank, offset); in omap_gpio_irq_shutdown()
814 omap_reset_gpio(bank, offset); in omap_gpio_irq_shutdown()
828 unsigned offset = d->hwirq; in omap_gpio_ack_irq() local
830 omap_clear_gpio_irqstatus(bank, offset); in omap_gpio_ack_irq()
836 unsigned offset = d->hwirq; in omap_gpio_mask_irq() local
840 omap_set_gpio_irqenable(bank, offset, 0); in omap_gpio_mask_irq()
841 omap_set_gpio_triggering(bank, offset, IRQ_TYPE_NONE); in omap_gpio_mask_irq()
848 unsigned offset = d->hwirq; in omap_gpio_unmask_irq() local
854 omap_set_gpio_triggering(bank, offset, trigger); in omap_gpio_unmask_irq()
858 if (bank->level_mask & BIT(offset)) { in omap_gpio_unmask_irq()
859 omap_set_gpio_irqenable(bank, offset, 0); in omap_gpio_unmask_irq()
860 omap_clear_gpio_irqstatus(bank, offset); in omap_gpio_unmask_irq()
863 omap_set_gpio_irqenable(bank, offset, 1); in omap_gpio_unmask_irq()
931 static int omap_gpio_get_direction(struct gpio_chip *chip, unsigned offset) in omap_gpio_get_direction() argument
941 dir = !!(readl_relaxed(reg) & BIT(offset)); in omap_gpio_get_direction()
946 static int omap_gpio_input(struct gpio_chip *chip, unsigned offset) in omap_gpio_input() argument
953 omap_set_gpio_direction(bank, offset, 1); in omap_gpio_input()
958 static int omap_gpio_get(struct gpio_chip *chip, unsigned offset) in omap_gpio_get() argument
964 if (omap_gpio_is_input(bank, offset)) in omap_gpio_get()
965 return omap_get_gpio_datain(bank, offset); in omap_gpio_get()
967 return omap_get_gpio_dataout(bank, offset); in omap_gpio_get()
970 static int omap_gpio_output(struct gpio_chip *chip, unsigned offset, int value) in omap_gpio_output() argument
977 bank->set_dataout(bank, offset, value); in omap_gpio_output()
978 omap_set_gpio_direction(bank, offset, 0); in omap_gpio_output()
983 static int omap_gpio_debounce(struct gpio_chip *chip, unsigned offset, in omap_gpio_debounce() argument
992 omap2_set_gpio_debounce(bank, offset, debounce); in omap_gpio_debounce()
998 static void omap_gpio_set(struct gpio_chip *chip, unsigned offset, int value) in omap_gpio_set() argument
1005 bank->set_dataout(bank, offset, value); in omap_gpio_set()