Lines Matching refs:chip

36 	struct gpio_chip chip;  member
48 static void sprd_gpio_update(struct gpio_chip *chip, unsigned int offset, in sprd_gpio_update() argument
51 struct sprd_gpio *sprd_gpio = gpiochip_get_data(chip); in sprd_gpio_update()
69 static int sprd_gpio_read(struct gpio_chip *chip, unsigned int offset, u16 reg) in sprd_gpio_read() argument
71 struct sprd_gpio *sprd_gpio = gpiochip_get_data(chip); in sprd_gpio_read()
78 static int sprd_gpio_request(struct gpio_chip *chip, unsigned int offset) in sprd_gpio_request() argument
80 sprd_gpio_update(chip, offset, SPRD_GPIO_DMSK, 1); in sprd_gpio_request()
84 static void sprd_gpio_free(struct gpio_chip *chip, unsigned int offset) in sprd_gpio_free() argument
86 sprd_gpio_update(chip, offset, SPRD_GPIO_DMSK, 0); in sprd_gpio_free()
89 static int sprd_gpio_direction_input(struct gpio_chip *chip, in sprd_gpio_direction_input() argument
92 sprd_gpio_update(chip, offset, SPRD_GPIO_DIR, 0); in sprd_gpio_direction_input()
93 sprd_gpio_update(chip, offset, SPRD_GPIO_INEN, 1); in sprd_gpio_direction_input()
97 static int sprd_gpio_direction_output(struct gpio_chip *chip, in sprd_gpio_direction_output() argument
100 sprd_gpio_update(chip, offset, SPRD_GPIO_DIR, 1); in sprd_gpio_direction_output()
101 sprd_gpio_update(chip, offset, SPRD_GPIO_INEN, 0); in sprd_gpio_direction_output()
102 sprd_gpio_update(chip, offset, SPRD_GPIO_DATA, value); in sprd_gpio_direction_output()
106 static int sprd_gpio_get(struct gpio_chip *chip, unsigned int offset) in sprd_gpio_get() argument
108 return sprd_gpio_read(chip, offset, SPRD_GPIO_DATA); in sprd_gpio_get()
111 static void sprd_gpio_set(struct gpio_chip *chip, unsigned int offset, in sprd_gpio_set() argument
114 sprd_gpio_update(chip, offset, SPRD_GPIO_DATA, value); in sprd_gpio_set()
119 struct gpio_chip *chip = irq_data_get_irq_chip_data(data); in sprd_gpio_irq_mask() local
122 sprd_gpio_update(chip, offset, SPRD_GPIO_IE, 0); in sprd_gpio_irq_mask()
123 gpiochip_disable_irq(chip, offset); in sprd_gpio_irq_mask()
128 struct gpio_chip *chip = irq_data_get_irq_chip_data(data); in sprd_gpio_irq_ack() local
131 sprd_gpio_update(chip, offset, SPRD_GPIO_IC, 1); in sprd_gpio_irq_ack()
136 struct gpio_chip *chip = irq_data_get_irq_chip_data(data); in sprd_gpio_irq_unmask() local
139 sprd_gpio_update(chip, offset, SPRD_GPIO_IE, 1); in sprd_gpio_irq_unmask()
140 gpiochip_enable_irq(chip, offset); in sprd_gpio_irq_unmask()
146 struct gpio_chip *chip = irq_data_get_irq_chip_data(data); in sprd_gpio_irq_set_type() local
151 sprd_gpio_update(chip, offset, SPRD_GPIO_IS, 0); in sprd_gpio_irq_set_type()
152 sprd_gpio_update(chip, offset, SPRD_GPIO_IBE, 0); in sprd_gpio_irq_set_type()
153 sprd_gpio_update(chip, offset, SPRD_GPIO_IEV, 1); in sprd_gpio_irq_set_type()
154 sprd_gpio_update(chip, offset, SPRD_GPIO_IC, 1); in sprd_gpio_irq_set_type()
158 sprd_gpio_update(chip, offset, SPRD_GPIO_IS, 0); in sprd_gpio_irq_set_type()
159 sprd_gpio_update(chip, offset, SPRD_GPIO_IBE, 0); in sprd_gpio_irq_set_type()
160 sprd_gpio_update(chip, offset, SPRD_GPIO_IEV, 0); in sprd_gpio_irq_set_type()
161 sprd_gpio_update(chip, offset, SPRD_GPIO_IC, 1); in sprd_gpio_irq_set_type()
165 sprd_gpio_update(chip, offset, SPRD_GPIO_IS, 0); in sprd_gpio_irq_set_type()
166 sprd_gpio_update(chip, offset, SPRD_GPIO_IBE, 1); in sprd_gpio_irq_set_type()
167 sprd_gpio_update(chip, offset, SPRD_GPIO_IC, 1); in sprd_gpio_irq_set_type()
171 sprd_gpio_update(chip, offset, SPRD_GPIO_IS, 1); in sprd_gpio_irq_set_type()
172 sprd_gpio_update(chip, offset, SPRD_GPIO_IBE, 0); in sprd_gpio_irq_set_type()
173 sprd_gpio_update(chip, offset, SPRD_GPIO_IEV, 1); in sprd_gpio_irq_set_type()
177 sprd_gpio_update(chip, offset, SPRD_GPIO_IS, 1); in sprd_gpio_irq_set_type()
178 sprd_gpio_update(chip, offset, SPRD_GPIO_IBE, 0); in sprd_gpio_irq_set_type()
179 sprd_gpio_update(chip, offset, SPRD_GPIO_IEV, 0); in sprd_gpio_irq_set_type()
191 struct gpio_chip *chip = irq_desc_get_handler_data(desc); in sprd_gpio_irq_handler() local
193 struct sprd_gpio *sprd_gpio = gpiochip_get_data(chip); in sprd_gpio_irq_handler()
198 for (bank = 0; bank * SPRD_GPIO_BANK_NR < chip->ngpio; bank++) { in sprd_gpio_irq_handler()
204 generic_handle_domain_irq(chip->irq.domain, in sprd_gpio_irq_handler()
239 sprd_gpio->chip.label = dev_name(&pdev->dev); in sprd_gpio_probe()
240 sprd_gpio->chip.ngpio = SPRD_GPIO_NR; in sprd_gpio_probe()
241 sprd_gpio->chip.base = -1; in sprd_gpio_probe()
242 sprd_gpio->chip.parent = &pdev->dev; in sprd_gpio_probe()
243 sprd_gpio->chip.request = sprd_gpio_request; in sprd_gpio_probe()
244 sprd_gpio->chip.free = sprd_gpio_free; in sprd_gpio_probe()
245 sprd_gpio->chip.get = sprd_gpio_get; in sprd_gpio_probe()
246 sprd_gpio->chip.set = sprd_gpio_set; in sprd_gpio_probe()
247 sprd_gpio->chip.direction_input = sprd_gpio_direction_input; in sprd_gpio_probe()
248 sprd_gpio->chip.direction_output = sprd_gpio_direction_output; in sprd_gpio_probe()
250 irq = &sprd_gpio->chip.irq; in sprd_gpio_probe()
259 return devm_gpiochip_add_data(&pdev->dev, &sprd_gpio->chip, sprd_gpio); in sprd_gpio_probe()