Lines Matching refs:gpios
39 void mctrl_gpio_set(struct mctrl_gpios *gpios, unsigned int mctrl) in mctrl_gpio_set() argument
46 if (gpios == NULL) in mctrl_gpio_set()
50 if (gpios->gpio[i] && mctrl_gpios_desc[i].dir_out) { in mctrl_gpio_set()
51 desc_array[count] = gpios->gpio[i]; in mctrl_gpio_set()
59 struct gpio_desc *mctrl_gpio_to_gpiod(struct mctrl_gpios *gpios, in mctrl_gpio_to_gpiod() argument
62 return gpios->gpio[gidx]; in mctrl_gpio_to_gpiod()
66 unsigned int mctrl_gpio_get(struct mctrl_gpios *gpios, unsigned int *mctrl) in mctrl_gpio_get() argument
70 if (gpios == NULL) in mctrl_gpio_get()
74 if (gpios->gpio[i] && !mctrl_gpios_desc[i].dir_out) { in mctrl_gpio_get()
75 if (gpiod_get_value(gpios->gpio[i])) in mctrl_gpio_get()
87 mctrl_gpio_get_outputs(struct mctrl_gpios *gpios, unsigned int *mctrl) in mctrl_gpio_get_outputs() argument
91 if (gpios == NULL) in mctrl_gpio_get_outputs()
95 if (gpios->gpio[i] && mctrl_gpios_desc[i].dir_out) { in mctrl_gpio_get_outputs()
96 if (gpiod_get_value(gpios->gpio[i])) in mctrl_gpio_get_outputs()
109 struct mctrl_gpios *gpios; in mctrl_gpio_init_noauto() local
112 gpios = devm_kzalloc(dev, sizeof(*gpios), GFP_KERNEL); in mctrl_gpio_init_noauto()
113 if (!gpios) in mctrl_gpio_init_noauto()
124 gpios->gpio[i] = in mctrl_gpio_init_noauto()
129 if (IS_ERR(gpios->gpio[i])) in mctrl_gpio_init_noauto()
130 return ERR_CAST(gpios->gpio[i]); in mctrl_gpio_init_noauto()
133 return gpios; in mctrl_gpio_init_noauto()
140 struct mctrl_gpios *gpios = context; in mctrl_gpio_irq_handle() local
141 struct uart_port *port = gpios->port; in mctrl_gpio_irq_handle()
142 u32 mctrl = gpios->mctrl_prev; in mctrl_gpio_irq_handle()
146 mctrl_gpio_get(gpios, &mctrl); in mctrl_gpio_irq_handle()
150 mctrl_diff = mctrl ^ gpios->mctrl_prev; in mctrl_gpio_irq_handle()
151 gpios->mctrl_prev = mctrl; in mctrl_gpio_irq_handle()
176 struct mctrl_gpios *gpios; in mctrl_gpio_init() local
179 gpios = mctrl_gpio_init_noauto(port->dev, idx); in mctrl_gpio_init()
180 if (IS_ERR(gpios)) in mctrl_gpio_init()
181 return gpios; in mctrl_gpio_init()
183 gpios->port = port; in mctrl_gpio_init()
188 if (!gpios->gpio[i] || mctrl_gpios_desc[i].dir_out) in mctrl_gpio_init()
191 ret = gpiod_to_irq(gpios->gpio[i]); in mctrl_gpio_init()
198 gpios->irq[i] = ret; in mctrl_gpio_init()
201 irq_set_status_flags(gpios->irq[i], IRQ_NOAUTOEN); in mctrl_gpio_init()
203 ret = devm_request_irq(port->dev, gpios->irq[i], in mctrl_gpio_init()
206 gpios); in mctrl_gpio_init()
216 return gpios; in mctrl_gpio_init()
220 void mctrl_gpio_free(struct device *dev, struct mctrl_gpios *gpios) in mctrl_gpio_free() argument
224 if (gpios == NULL) in mctrl_gpio_free()
228 if (gpios->irq[i]) in mctrl_gpio_free()
229 devm_free_irq(gpios->port->dev, gpios->irq[i], gpios); in mctrl_gpio_free()
231 if (gpios->gpio[i]) in mctrl_gpio_free()
232 devm_gpiod_put(dev, gpios->gpio[i]); in mctrl_gpio_free()
234 devm_kfree(dev, gpios); in mctrl_gpio_free()
238 void mctrl_gpio_enable_ms(struct mctrl_gpios *gpios) in mctrl_gpio_enable_ms() argument
242 if (gpios == NULL) in mctrl_gpio_enable_ms()
246 if (gpios->mctrl_on) in mctrl_gpio_enable_ms()
249 gpios->mctrl_on = true; in mctrl_gpio_enable_ms()
252 mctrl_gpio_get(gpios, &gpios->mctrl_prev); in mctrl_gpio_enable_ms()
255 if (!gpios->irq[i]) in mctrl_gpio_enable_ms()
258 enable_irq(gpios->irq[i]); in mctrl_gpio_enable_ms()
263 void mctrl_gpio_disable_ms(struct mctrl_gpios *gpios) in mctrl_gpio_disable_ms() argument
267 if (gpios == NULL) in mctrl_gpio_disable_ms()
270 if (!gpios->mctrl_on) in mctrl_gpio_disable_ms()
273 gpios->mctrl_on = false; in mctrl_gpio_disable_ms()
276 if (!gpios->irq[i]) in mctrl_gpio_disable_ms()
279 disable_irq(gpios->irq[i]); in mctrl_gpio_disable_ms()