Lines Matching refs:chip

61 static inline struct gsta_regs __iomem *__regs(struct gsta_gpio *chip, int nr)  in __regs()  argument
63 return chip->regs[nr / GSTA_GPIO_PER_BLOCK]; in __regs()
77 struct gsta_gpio *chip = container_of(gpio, struct gsta_gpio, gpio); in gsta_gpio_set() local
78 struct gsta_regs __iomem *regs = __regs(chip, nr); in gsta_gpio_set()
89 struct gsta_gpio *chip = container_of(gpio, struct gsta_gpio, gpio); in gsta_gpio_get() local
90 struct gsta_regs __iomem *regs = __regs(chip, nr); in gsta_gpio_get()
99 struct gsta_gpio *chip = container_of(gpio, struct gsta_gpio, gpio); in gsta_gpio_direction_output() local
100 struct gsta_regs __iomem *regs = __regs(chip, nr); in gsta_gpio_direction_output()
114 struct gsta_gpio *chip = container_of(gpio, struct gsta_gpio, gpio); in gsta_gpio_direction_input() local
115 struct gsta_regs __iomem *regs = __regs(chip, nr); in gsta_gpio_direction_input()
124 struct gsta_gpio *chip = container_of(gpio, struct gsta_gpio, gpio); in gsta_gpio_to_irq() local
125 return chip->irq_base + offset; in gsta_gpio_to_irq()
128 static void gsta_gpio_setup(struct gsta_gpio *chip) /* called from probe */ in gsta_gpio_setup() argument
130 struct gpio_chip *gpio = &chip->gpio; in gsta_gpio_setup()
140 gpio->label = dev_name(chip->dev); in gsta_gpio_setup()
166 static void gsta_set_config(struct gsta_gpio *chip, int nr, unsigned cfg) in gsta_set_config() argument
168 struct gsta_regs __iomem *regs = __regs(chip, nr); in gsta_set_config()
174 pr_info("%s: %p %i %i\n", __func__, chip, nr, cfg); in gsta_set_config()
180 spin_lock_irqsave(&chip->lock, flags); in gsta_set_config()
188 spin_unlock_irqrestore(&chip->lock, flags); in gsta_set_config()
222 spin_unlock_irqrestore(&chip->lock, flags); in gsta_set_config()
225 __func__, chip, nr, cfg); in gsta_set_config()
235 struct gsta_gpio *chip = gc->private; in gsta_irq_disable() local
236 int nr = data->irq - chip->irq_base; in gsta_irq_disable()
237 struct gsta_regs __iomem *regs = __regs(chip, nr); in gsta_irq_disable()
242 spin_lock_irqsave(&chip->lock, flags); in gsta_irq_disable()
243 if (chip->irq_type[nr] & IRQ_TYPE_EDGE_RISING) { in gsta_irq_disable()
247 if (chip->irq_type[nr] & IRQ_TYPE_EDGE_FALLING) { in gsta_irq_disable()
251 spin_unlock_irqrestore(&chip->lock, flags); in gsta_irq_disable()
258 struct gsta_gpio *chip = gc->private; in gsta_irq_enable() local
259 int nr = data->irq - chip->irq_base; in gsta_irq_enable()
260 struct gsta_regs __iomem *regs = __regs(chip, nr); in gsta_irq_enable()
266 type = chip->irq_type[nr]; in gsta_irq_enable()
268 spin_lock_irqsave(&chip->lock, flags); in gsta_irq_enable()
279 spin_unlock_irqrestore(&chip->lock, flags); in gsta_irq_enable()
286 struct gsta_gpio *chip = gc->private; in gsta_irq_type() local
287 int nr = d->irq - chip->irq_base; in gsta_irq_type()
295 chip->irq_type[nr] = type; /* used for enable/disable */ in gsta_irq_type()
303 struct gsta_gpio *chip = dev_id; in gsta_gpio_handler() local
310 regs = chip->regs[i]; in gsta_gpio_handler()
311 base = chip->irq_base + i * GSTA_GPIO_PER_BLOCK; in gsta_gpio_handler()
323 static void gsta_alloc_irq_chip(struct gsta_gpio *chip) in gsta_alloc_irq_chip() argument
328 gc = irq_alloc_generic_chip(KBUILD_MODNAME, 1, chip->irq_base, in gsta_alloc_irq_chip()
329 chip->reg_base, handle_simple_irq); in gsta_alloc_irq_chip()
330 gc->private = chip; in gsta_alloc_irq_chip()
333 ct->chip.irq_set_type = gsta_irq_type; in gsta_alloc_irq_chip()
334 ct->chip.irq_disable = gsta_irq_disable; in gsta_alloc_irq_chip()
335 ct->chip.irq_enable = gsta_irq_enable; in gsta_alloc_irq_chip()
346 i = chip->irq_base + j; in gsta_alloc_irq_chip()
347 irq_set_chip_and_handler(i, &ct->chip, ct->handler); in gsta_alloc_irq_chip()
361 struct gsta_gpio *chip; in gsta_probe() local
373 chip = devm_kzalloc(&dev->dev, sizeof(*chip), GFP_KERNEL); in gsta_probe()
374 if (!chip) in gsta_probe()
376 chip->dev = &dev->dev; in gsta_probe()
377 chip->reg_base = devm_ioremap_resource(&dev->dev, res); in gsta_probe()
378 if (IS_ERR(chip->reg_base)) in gsta_probe()
379 return PTR_ERR(chip->reg_base); in gsta_probe()
382 chip->regs[i] = chip->reg_base + i * 4096; in gsta_probe()
384 writel(0, &chip->regs[i]->rimsc); in gsta_probe()
385 writel(0, &chip->regs[i]->fimsc); in gsta_probe()
386 writel(~0, &chip->regs[i]->ic); in gsta_probe()
388 spin_lock_init(&chip->lock); in gsta_probe()
389 gsta_gpio_setup(chip); in gsta_probe()
392 gsta_set_config(chip, i, gpio_pdata->pinconfig[i]); in gsta_probe()
401 chip->irq_base = err; in gsta_probe()
402 gsta_alloc_irq_chip(chip); in gsta_probe()
405 IRQF_SHARED, KBUILD_MODNAME, chip); in gsta_probe()
412 err = gpiochip_add(&chip->gpio); in gsta_probe()
419 platform_set_drvdata(dev, chip); in gsta_probe()
423 free_irq(pdev->irq, chip); in gsta_probe()
425 irq_free_descs(chip->irq_base, GSTA_NR_GPIO); in gsta_probe()