Lines Matching +full:- +full:gpio +full:- +full:bank

2  * ast_gpio.c - GPIO driver for the Aspeed SoC
10 #include <asm/gpio.h>
146 static inline void __iomem *bank_reg(struct aspeed_gpio_priv *gpio, in bank_reg() argument
147 const struct aspeed_gpio_bank *bank, in bank_reg() argument
152 return gpio->regs + bank->val_regs + GPIO_VAL_VALUE; in bank_reg()
154 return gpio->regs + bank->rdata_reg; in bank_reg()
156 return gpio->regs + bank->val_regs + GPIO_VAL_DIR; in bank_reg()
158 return gpio->regs + bank->irq_regs + GPIO_IRQ_ENABLE; in bank_reg()
160 return gpio->regs + bank->irq_regs + GPIO_IRQ_TYPE0; in bank_reg()
162 return gpio->regs + bank->irq_regs + GPIO_IRQ_TYPE1; in bank_reg()
164 return gpio->regs + bank->irq_regs + GPIO_IRQ_TYPE2; in bank_reg()
166 return gpio->regs + bank->irq_regs + GPIO_IRQ_STATUS; in bank_reg()
168 return gpio->regs + bank->debounce_regs + GPIO_DEBOUNCE_SEL1; in bank_reg()
170 return gpio->regs + bank->debounce_regs + GPIO_DEBOUNCE_SEL2; in bank_reg()
172 return gpio->regs + bank->tolerance_regs; in bank_reg()
174 return gpio->regs + bank->cmdsrc_regs + GPIO_CMDSRC_0; in bank_reg()
176 return gpio->regs + bank->cmdsrc_regs + GPIO_CMDSRC_1; in bank_reg()
187 unsigned int bank = GPIO_BANK(offset); in to_bank() local
189 WARN_ON(bank >= ARRAY_SIZE(aspeed_gpio_banks)); in to_bank()
190 return &aspeed_gpio_banks[bank]; in to_bank()
197 const struct aspeed_gpio_bank *bank = to_bank(offset); in aspeed_gpio_direction_input() local
198 u32 dir = readl(bank_reg(priv, bank, reg_dir)); in aspeed_gpio_direction_input()
201 writel(dir, bank_reg(priv, bank, reg_dir)); in aspeed_gpio_direction_input()
211 const struct aspeed_gpio_bank *bank = to_bank(offset); in aspeed_gpio_direction_output() local
212 u32 dir = readl(bank_reg(priv, bank, reg_dir)); in aspeed_gpio_direction_output()
213 u32 output = readl(bank_reg(priv, bank, reg_rdata)); in aspeed_gpio_direction_output()
216 writel(dir, bank_reg(priv, bank, reg_dir)); in aspeed_gpio_direction_output()
223 writel(output, bank_reg(priv, bank, reg_val)); in aspeed_gpio_direction_output()
231 const struct aspeed_gpio_bank *bank = to_bank(offset); in aspeed_gpio_get_value() local
233 return !!(readl(bank_reg(priv, bank, reg_val)) & GPIO_BIT(offset)); in aspeed_gpio_get_value()
241 const struct aspeed_gpio_bank *bank = to_bank(offset); in aspeed_gpio_set_value() local
242 u32 data = readl(bank_reg(priv, bank, reg_rdata)); in aspeed_gpio_set_value()
249 writel(data, bank_reg(priv, bank, reg_val)); in aspeed_gpio_set_value()
257 const struct aspeed_gpio_bank *bank = to_bank(offset); in aspeed_gpio_get_function() local
259 if(readl(bank_reg(priv, bank, reg_dir)) & GPIO_BIT(offset)) in aspeed_gpio_get_function()
278 uc_priv->bank_name = dev->name; in aspeed_gpio_probe()
279 ofnode_read_u32(dev_ofnode(dev), "ngpios", &uc_priv->gpio_count); in aspeed_gpio_probe()
280 priv->regs = devfdt_get_addr_ptr(dev); in aspeed_gpio_probe()
286 { .compatible = "aspeed,ast2400-gpio", },
287 { .compatible = "aspeed,ast2500-gpio", },
288 { .compatible = "aspeed,ast2600-gpio", },