Lines Matching +full:chip +full:- +full:relative
6 * Copyright 2012, Hauke Mehrtens <hauke@hauke-m.de>
20 static int bcma_gpio_get_value(struct gpio_chip *chip, unsigned gpio) in bcma_gpio_get_value() argument
22 struct bcma_drv_cc *cc = gpiochip_get_data(chip); in bcma_gpio_get_value()
27 static void bcma_gpio_set_value(struct gpio_chip *chip, unsigned gpio, in bcma_gpio_set_value() argument
30 struct bcma_drv_cc *cc = gpiochip_get_data(chip); in bcma_gpio_set_value()
35 static int bcma_gpio_direction_input(struct gpio_chip *chip, unsigned gpio) in bcma_gpio_direction_input() argument
37 struct bcma_drv_cc *cc = gpiochip_get_data(chip); in bcma_gpio_direction_input()
43 static int bcma_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, in bcma_gpio_direction_output() argument
46 struct bcma_drv_cc *cc = gpiochip_get_data(chip); in bcma_gpio_direction_output()
53 static int bcma_gpio_request(struct gpio_chip *chip, unsigned gpio) in bcma_gpio_request() argument
55 struct bcma_drv_cc *cc = gpiochip_get_data(chip); in bcma_gpio_request()
66 static void bcma_gpio_free(struct gpio_chip *chip, unsigned gpio) in bcma_gpio_free() argument
68 struct bcma_drv_cc *cc = gpiochip_get_data(chip); in bcma_gpio_free()
97 .name = "BCMA-GPIO",
105 struct gpio_chip *gc = &cc->gpio; in bcma_gpio_irq_handler()
115 for_each_set_bit(gpio, &irqs, gc->ngpio) in bcma_gpio_irq_handler()
116 generic_handle_irq(irq_find_mapping(gc->irq.domain, gpio)); in bcma_gpio_irq_handler()
124 struct gpio_chip *chip = &cc->gpio; in bcma_gpio_irq_init() local
125 struct gpio_irq_chip *girq = &chip->irq; in bcma_gpio_irq_init()
128 if (cc->core->bus->hosttype != BCMA_HOSTTYPE_SOC) in bcma_gpio_irq_init()
131 hwirq = bcma_core_irq(cc->core, 0); in bcma_gpio_irq_init()
140 girq->chip = &bcma_gpio_irq_chip; in bcma_gpio_irq_init()
142 girq->parent_handler = NULL; in bcma_gpio_irq_init()
143 girq->num_parents = 0; in bcma_gpio_irq_init()
144 girq->parents = NULL; in bcma_gpio_irq_init()
145 girq->default_type = IRQ_TYPE_NONE; in bcma_gpio_irq_init()
146 girq->handler = handle_simple_irq; in bcma_gpio_irq_init()
153 if (cc->core->bus->hosttype != BCMA_HOSTTYPE_SOC) in bcma_gpio_irq_exit()
157 free_irq(bcma_core_irq(cc->core, 0), cc); in bcma_gpio_irq_exit()
172 struct bcma_bus *bus = cc->core->bus; in bcma_gpio_init()
173 struct gpio_chip *chip = &cc->gpio; in bcma_gpio_init() local
176 chip->label = "bcma_gpio"; in bcma_gpio_init()
177 chip->owner = THIS_MODULE; in bcma_gpio_init()
178 chip->request = bcma_gpio_request; in bcma_gpio_init()
179 chip->free = bcma_gpio_free; in bcma_gpio_init()
180 chip->get = bcma_gpio_get_value; in bcma_gpio_init()
181 chip->set = bcma_gpio_set_value; in bcma_gpio_init()
182 chip->direction_input = bcma_gpio_direction_input; in bcma_gpio_init()
183 chip->direction_output = bcma_gpio_direction_output; in bcma_gpio_init()
184 chip->owner = THIS_MODULE; in bcma_gpio_init()
185 chip->parent = bus->dev; in bcma_gpio_init()
187 chip->of_node = cc->core->dev.of_node; in bcma_gpio_init()
189 switch (bus->chipinfo.id) { in bcma_gpio_init()
195 chip->ngpio = 32; in bcma_gpio_init()
198 chip->ngpio = 16; in bcma_gpio_init()
203 * On MIPS, we don't have Device Tree and we can't use relative (per chip) in bcma_gpio_init()
209 cc->core->bus->hosttype == BCMA_HOSTTYPE_SOC) in bcma_gpio_init()
210 chip->base = bus->num * BCMA_GPIO_MAX_PINS; in bcma_gpio_init()
212 chip->base = -1; in bcma_gpio_init()
218 err = gpiochip_add_data(chip, cc); in bcma_gpio_init()
230 gpiochip_remove(&cc->gpio); in bcma_gpio_unregister()